Skip to main content
Version: 0.1.10

CLI Reference

Full command reference for the aide binary.

Memory​

aide memory add --category=learning --tags=testing "Prefers vitest"
aide memory search "authentication"
aide memory list --category=learning
aide memory delete <id>
aide memory reindex # Rebuild search index
aide memory export --format=markdown # Export to markdown
CommandDescription
memory addStore a new memory with category and tags
memory searchFull-text search across memories
memory listList memories, optionally by category
memory deleteDelete a memory by ID
memory reindexRebuild the Bleve search index
memory exportExport memories to markdown

Decisions​

aide decision set auth-strategy "JWT with refresh tokens" --rationale="Stateless"
aide decision get auth-strategy
aide decision list
aide decision list --origin=all
aide decision history auth-strategy
aide decision delete auth-strategy
CommandDescription
decision setRecord a decision for a topic (appends to history)
decision getGet the current (latest) decision
decision listList this store's decision topics (--origin to widen)
decision historyShow full history for a topic
decision deleteDelete a decision topic
decision adoptPromote a subscribed peer's decision into this store (see Sync & Subscriptions)

decision list shows this store's own decisions by default. Pass --origin to also list rules that are in force here but stored elsewhere in the estate:

ValueShows additionally
parentAncestors on the anchor chain
peerSubscribed peers
allBoth

These are additive and never shadow local decisions — a topic decided nearer always wins (local > parent > peer), matching what session init injects. An ORIGIN column appears when a non-local row is present. Inherited entries are read-only from here; use decision adopt to copy one into this store.

Tasks​

aide task create "Implement user model" --description="Create User struct"
aide task claim <id> --agent=executor-1
aide task complete <id> --result="Done"
aide task list --status=pending
aide task delete <id>
CommandDescription
task createCreate a new task (starts as pending)
task claimAtomically claim a task for an agent
task completeMark a task as done with a result
task listList tasks, optionally by status
task deleteDelete a task

Messages​

aide message send "User model ready" --from=executor-1
aide message send "Can you review?" --from=executor-2 --to=executor-1
aide message list --agent=executor-1
aide message ack <id> --agent=executor-1
CommandDescription
message sendSend a message (broadcast or directed)
message listList messages for an agent
message ackAcknowledge a message as read

State​

aide state set mode autopilot
aide state set mode eco --agent=worker-1
aide state get mode --agent=worker-1
aide state list
aide state clear --agent=worker-1
CommandDescription
state setSet a state value (global or per-agent)
state getGet a state value
state listList all state entries
state clearClear state for an agent

Code​

aide code index # Index codebase (incremental)
aide code search "getUser" # Search symbols
aide code symbols src/auth.ts # List file symbols
aide code references getUserById # Find call sites
aide code read-check src/auth.ts --json # Check if file is indexed and fresh
aide code stats # Index statistics
aide code clear # Clear index
CommandDescription
code indexIndex the codebase using tree-sitter (incremental)
code searchSearch symbol definitions
code symbolsList all symbols in a specific file
code referencesFind all call sites of a symbol
code read-checkCheck if a file is indexed and unchanged
code statsShow index statistics
code clearClear the code index

Findings​

aide findings run # Run all analysers
aide findings run --analyser=complexity # Run specific analyser
aide findings search "high complexity" # Search findings
aide findings list --severity=critical # List by severity
aide findings list --file=src/auth # List by file
aide findings stats # Health overview
aide findings accept <id1> <id2> # Accept specific findings
aide findings accept --analyzer=clones # Accept all clone findings
aide findings accept --all # Accept all findings
aide findings clear # Clear all findings
CommandDescription
findings runRun analysers (all or specific)
findings searchFull-text search across findings
findings listList findings by severity, file, or analyser
findings statsCodebase health overview
findings acceptAccept (dismiss) findings by ID or filter
findings clearClear all findings
note

Both --analyser= and --analyzer= spellings are accepted on all findings commands.

Survey​

aide survey run # Run all 3 analyzers
aide survey run --analyzer=topology # Run specific analyzer
aide survey search "auth" # Search survey entries
aide survey list --kind=module # List by entry kind
aide survey list --kind=tech_stack # Detected technologies
aide survey list --kind=entrypoint # Entry points
aide survey list --kind=churn # High-change files
aide survey stats # Overview by analyzer and kind
aide survey graph getUserById # Call graph (callers + callees)
aide survey graph --symbol=main \
--direction=callers --max-depth=3 # Callers only, deeper traversal
aide survey clear # Clear all survey data
aide survey clear --analyzer=churn # Clear specific analyzer
CommandDescription
survey runRun analyzers (topology, entrypoints, churn, or all)
survey searchFull-text search across survey entries
survey listList entries by analyzer, kind, or file
survey statsAggregate counts by analyzer and kind
survey graphBuild call graph for a symbol (callers/callees/both)
survey clearClear survey data (all or by analyzer)

Grammar​

aide grammar list # List all grammars (built-in + available + installed)
aide grammar list --installed # Only installed grammars
aide grammar install ruby # Install a specific grammar
aide grammar install --all # Install all available grammars
aide grammar install # Install from lock file
aide grammar remove ruby # Remove a downloaded grammar
aide grammar remove --all # Remove all downloaded grammars
aide grammar scan # Detect languages in current project
aide grammar scan --json # JSON output
CommandDescription
grammar listList grammars (built-in, available, installed)
grammar installDownload and install dynamic grammars
grammar removeRemove downloaded grammars
grammar scanScan project for languages used

Share​

aide share export # Export decisions + memories to .aide/shared/
aide share export --decisions # Decisions only
aide share import # Import from .aide/shared/
aide share import --dry-run # Preview import
CommandDescription
share exportExport decisions and memories to .aide/shared/
share importImport from .aide/shared/

Sync & Subscriptions​

aide sync # Fetch all subscribed peer context
aide sync platform-team # Fetch one subscription
aide sync --timeout=2m # Per-subscription deadline (default 60s)
aide decision adopt api-style --from=platform-team # Promote a peer decision locally

A failing subscription is reported and skipped, the rest still sync, and the command exits non-zero if any failed — CI can use it as a red light.

Subscriptions name peer context sources in .aide/config/aide.json:

{ "subscriptions": [
{ "name": "platform-team", "url": "git@host:platform/context.git", "branch": "main" },
{ "name": "proto-repo", "path": "../protos" }
] }

aide sync fetches git subscriptions into .aide/cache/remotes/<name>/ (local path subscriptions are read in place). Peer records form a read-only layer: their decisions appear in session context labeled from peer <name>, at the lowest precedence (local > ancestors > peers), and are never re-exported — you only publish records you authored or explicitly adopted. Only decisions cross project boundaries; memories and state never do. aide decision adopt TOPIC [--from=PEER] is the promotion verb: it copies the peer's current decision into the local store as a new local decision stamped with adoption provenance. Adopt reads only the local cache (never the network), and --from is required when more than one peer publishes the topic. Session init refreshes any subscription cache older than 1 hour, under a single 5-second deadline shared across subscriptions, silently serving the stale cache when offline; session-end publishing gets 10 seconds.

A subscription with "publish": true is two-way: aide sync also writes this project's own decisions into it — fetch, reset to the remote head, apply records, commit, push, retrying on a push race. Write-once record files named by identity make concurrent publishers safe: colliding paths are structurally impossible, so no merge machinery is needed. Publishing respects the share.decisions.export_filter policy and never includes memories. An empty repository works as a starting point — the first publish bootstraps it.

No external scheduler is needed in either direction: the session lifecycle is the clock. Session start refreshes stale subscription caches (reads); session end publishes publish-enabled subscriptions (writes) — decisions are only ever made inside sessions, so the session ending is the publish event. Both are bounded and offline-silent; an unreachable remote never blocks startup or teardown, and unpublished records simply ship at the next session end. aide sync remains the manual lever for forcing either side immediately.

Global Flags​

aide --store parent decision set api-style "REST" # write into the nearest containing project
aide --store top decision set go-version "1.26" # write into the estate root
aide --project-root /path/to/proj memory list # run against any store

--store re-targets the whole invocation onto another member of this project's anchor chain: parent (nearest container), top (outermost ancestor), or an explicit chain-member path. Hard errors, never silent fallback: the estate root has no parent, non-chain paths are rejected (unrelated stores are --project-root's job), and the target must already have a .aide store — a write never bootstraps another project's store.

Decision Cascade​

Sessions in a project with ancestors (see aide anchor) inherit ancestor decisions into their injected context, nearest-wins: a topic decided locally shadows every ancestor version. Inherited entries are labeled inherited from parent <name> with an override hint. Reads go through the ancestor's daemon socket when live, else a short read-only open — never a writable open of another project's store. CLI/MCP decision get remains store-local (placement is physical); the cascade is a context-injection feature. Subscribed peers layer in below ancestors (see Sync & Subscriptions). Disable both with AIDE_CASCADE_DISABLED=1.

Anchor​

aide anchor # Resolved root, provenance, parent scopes
aide anchor --json # Full machine-readable payload
aide anchor --cwd=/path/to/dir # Probe from another directory

A read-only resolution probe: prints the project root aide would use, which marker decided it (.git directory/worktree/submodule, .aide, env override), the project identity, and the anchor chain — the project itself plus VCS-evidenced parent scopes (a submodule's superproject, ancestor repositories that contain it). It never creates .aide/ and exits 0 even when no marker is found, so it is safe to run anywhere — the "what would happen?" command for worktree, submodule, and nested-repo layouts.

The --json payload is the contract consumed by the hook layer (persisted per session under ~/.aide/anchors/ and .aide/state/anchor.json).

Token (Experimental)​

aide token stats # Estimated all-time token statistics
aide token stats --json # JSON output
aide token summary # Recent token events
aide token summary --last=20 # Last 20 events
aide token cleanup # Remove events older than 90 days (cleanup.token_max_age)
aide token cleanup --max-age=168h # Custom retention
CommandDescription
token statsShow estimated token read/saved statistics
token summaryList recent token events
token cleanupRemove old token events (default 90 days)

Token tracking is experimental. All counts are estimates based on calibrated per-language character ratios — useful for relative comparisons, not exact cost accounting.

Status​

aide status # Full dashboard
aide status --json # JSON output

Shows version, server status, file watcher, code index, findings analysers, MCP tools, stores, and environment variables.

The server line (and serverState in --json) has three states:

StateMeaning
runningConnected to the daemon over .aide/aide.sock
not-runningNo daemon socket; store sections are read directly from disk
unreachable-sandboxedA daemon socket exists but this shell's sandbox denies connect() (e.g. Codex sandboxed execs). The daemon is likely running but unverifiable, so direct store reads are skipped — they would stall on the daemon's locks

Other Commands​

aide session init # Initialize session
aide session end --session=ID # End session (teardown + metrics)
aide upgrade # Self-upgrade binary
aide daemon --socket=/path/to/aide.sock # Start gRPC daemon
aide mcp # Start MCP server
aide version # Show version
CommandDescription
session initInitialize a new session
session endEnd a session: broadcast the end message, clear transient state, record metrics (--session=ID [--duration=MS])
upgradeSelf-upgrade the aide binary
daemonStart the gRPC daemon
mcpStart the MCP server (stdio)
versionShow the installed version