getting started

Installation

Homebrew (macOS / Linux)

shell
brew install maquina-app/homebrew-tap/recuerd0-cli

Debian / Ubuntu

shell
curl -fsSL https://pkg.recuerd0.ai/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/recuerd0.gpg echo "deb [signed-by=/usr/share/keyrings/recuerd0.gpg] https://pkg.recuerd0.ai/apt stable main" \ | sudo tee /etc/apt/sources.list.d/recuerd0.list sudo apt update && sudo apt install recuerd0-cli

Fedora / RHEL

shell
sudo dnf config-manager --add-repo https://pkg.recuerd0.ai/rpm/recuerd0.repo sudo dnf install recuerd0-cli

Windows (scoop)

powershell
scoop bucket add recuerd0 https://github.com/maquina-app/scoop-bucket scoop install recuerd0-cli

Go install

shell
go install github.com/maquina-app/recuerd0-cli@latest

From source

shell
git clone https://github.com/maquina-app/recuerd0-cli.git cd recuerd0-cli make install
getting started

Quick Start

Four commands to go from install to search.

shell
# 1. Add your account recuerd0 account add personal --api-url https://your-server.com --token YOUR_TOKEN # 2. List workspaces recuerd0 workspace list # 3. Create a memory recuerd0 memory create --workspace 1 --title "Auth patterns" --content "# Auth\nUse Bearer tokens..." # 4. Search across everything recuerd0 search "authentication"
getting started

Configuration

Multi-account setup with local overrides per project.

Global config

Stored at ~/.config/recuerd0/config.yaml. Manages multiple accounts.

~/.config/recuerd0/config.yaml
default_account: personal accounts: personal: api_url: https://recuerd0.example.com token: r0_live_abc123... work: api_url: https://memory.company.io token: r0_live_def456...

Project-local config

Place a .recuerd0.yaml in any project root to set defaults for that directory.

.recuerd0.yaml
account: work workspace: 3

Resolution order

Higher priority wins.

PrioritySourceExample
1 (highest)CLI flags--account work
2Environment variablesRECUERD0_TOKEN=...
3Project-local config.recuerd0.yaml
4 (lowest)Global config~/.config/recuerd0/config.yaml
commands

Commands

account

Manage server connections.

usage
recuerd0 account add <name> --api-url <url> --token <token> recuerd0 account list recuerd0 account remove <name> recuerd0 account default <name>
SubcommandDescription
addRegister a new account with API URL and token
listShow all configured accounts
removeDelete an account from config
defaultSet the default account

workspace

List and manage workspaces.

usage
recuerd0 workspace list recuerd0 workspace show <id> recuerd0 workspace create --name <name> [--description <desc>] recuerd0 workspace update <id> --name <name> recuerd0 workspace archive <id> recuerd0 workspace unarchive <id>
SubcommandDescription
listList all active workspaces
showShow workspace details and memory count
createCreate a new workspace
updateUpdate workspace name or description
archiveArchive a workspace (read-only)
unarchiveRestore an archived workspace

memory

Create, read, update, and delete memories.

usage
recuerd0 memory list --workspace <id> [--category CAT] recuerd0 memory show --workspace <id> <memory_id> recuerd0 memory create --workspace <id> --title <title> --content <body|-> [--category CAT] recuerd0 memory update --workspace <id> <memory_id> [--title <title>] [--content <body|->] [--category CAT] recuerd0 memory delete --workspace <id> <memory_id> recuerd0 memory link list <memory_id> [--workspace <id>] recuerd0 memory link add <memory_id> --to <other_memory_id> [--workspace <id>] recuerd0 memory link remove <memory_id> --to <other_memory_id> [--workspace <id>]
Use --content - to read from stdin. Pipe markdown files directly: cat notes.md | recuerd0 memory create --workspace 1 --title "Notes" --content -
FlagDescription
--workspaceTarget workspace ID (required, or set in .recuerd0.yaml)
--titleMemory title
--contentMarkdown body, or - for stdin
--tagsComma-separated tags: --tags "auth,rails,patterns"
--sourceSource identifier (e.g. cli, claude-code)
--categoryOne of decision, discovery, preference, general (defaults to general). See Categories.

memory read

Read just what you need from large memories — head, tail, an explicit line range, or grep matches with surrounding context. Avoids loading the full body when you only care about a slice.

usage
recuerd0 memory read head <memory_id> --lines 20 [--workspace <id>] recuerd0 memory read tail <memory_id> --lines 20 [--workspace <id>] recuerd0 memory read lines <memory_id> --start 40 --end 55 [--workspace <id>] recuerd0 memory read grep <memory_id> "TODO" --context 2 [--workspace <id>]
SubcommandDescription
headFirst --lines N lines of the memory body
tailLast --lines N lines, computed from total_lines
linesExplicit range from --start to --end (1-based, inclusive)
grepFind a pattern and print each match with --context, --before, or --after lines
Pair memory read grep with memory read lines: grep first to find the line number, then fetch a window of context around it. This is much cheaper than memory show for long transcripts and docs.

Categories

Every memory carries exactly one category from a locked four-value enum. Category defaults to general and is used by --category on create, update, list, search, and version create to filter or assign. Versions inherit the parent memory's category unless overridden.

ValueLabelPurpose
decisionDecisionArchitecture choices, library picks, tradeoffs with stated reasoning
discoveryDiscoveryNon-obvious findings — gotchas, root causes, patterns, library quirks
preferencePreferenceUser-stated rules ("always X", "never Y")
generalGeneralCatch-all and default
examples
recuerd0 memory create --workspace 1 --title "Postgres over SQLite for Orion" \ --content "Concurrent writes + 10GB+ dataset." --category decision recuerd0 memory list --workspace 1 --category decision

version

Create new versions of existing memories.

usage
recuerd0 version create --workspace <id> <memory_id> --content <body|-> [--category CAT] recuerd0 version list --workspace <id> <memory_id> recuerd0 version show --workspace <id> <version_id>
SubcommandDescription
createBranch a new version from a memory. Omitted fields inherit from parent.
listList all versions of a memory
showShow a specific version with content
reference

Output Format

All commands output JSON by default. Use --pretty for formatted output.

search output
{ "query": "authentication", "total_results": 2, "results": [ { "id": 12, "title": "Auth Patterns", "workspace": { "id": 1, "name": "Rails Project" }, "snippet": "Bearer token authentication with..." } ] }

Error output

error
{ "error": { "code": "NOT_FOUND", "message": "Resource not found", "status": 404 } }
reference

Global Flags

Available on all commands.

FlagEnv VariableDescription
--accountRECUERD0_ACCOUNTAccount name to use
--tokenRECUERD0_TOKENAPI token (overrides config)
--api-urlRECUERD0_API_URLServer URL (overrides config)
--workspaceRECUERD0_WORKSPACEDefault workspace ID
--verboseShow HTTP request/response details
--prettyPretty-print JSON output
reference

Exit Codes

CodeMeaning
0Success
1General error
2Invalid arguments or usage
3Configuration error (missing account, bad config file)
4Authentication failed (401)
5Permission denied (403)
6Resource not found (404)
7Validation error (422)
8Rate limited (429)