Recall

Usage

Mostly nothing.

Recall is zero-config by design. Install the cask, open the app, click Install + Start. The daemon detects your coding agents, wires MCP and lifecycle hooks, and from the next session onward injects memory automatically.

01 · Setup

The happy path is one command.

Install the cask, open the app, click Install + Start. The CLI calls below are the same thing the app does for you under the hood — useful only if you want per-project scopes, an uninstall, or to opt out of per-prompt injection.

What you actually do

brew install --cask edihasaj/tap/recall
# open Recall.app → click Install + Start
# (optional) verify
recall doctor

Power-user overrides

recall setup --scope project --yes
recall setup --uninstall-hooks --yes
recall setup --no-prompt-injection --yes

02 · Teach

Capture corrections, review feedback, confirmations.

The agent reports corrections through MCP automatically, but the CLI is there for direct edits and review notes. Phrase corrections as "always X" / "don't Y, use Z".

Corrections & reviews

recall correct -r owner/repo "don't use npm, use pnpm"
recall review  -r owner/repo "review said use error boundaries"
recall confirm <memory-id>
recall reject  <memory-id>

Bootstrap from a repo

recall init
recall scan ~/Projects/some-repo
recall publish ~/Projects/some-repo

03 · Inspect

See what the agent will get.

Memory & quality

recall list    -r owner/repo
recall quality -r owner/repo
recall health  -r owner/repo
recall compile -r owner/repo
recall compile -r owner/repo --query "pytest -q" --include-candidates

Search & history

recall search       -r owner/repo "pnpm"
recall history list -r owner/repo
recall history search -r owner/repo "pnpm"
recall hook stats
recall hook stats --agent codex --json

04 · Daemon

The thing that actually runs.

Recall.app is a status surface. The capture/injection runs through a small daemon and the SessionStart / UserPromptSubmit / SessionEnd hooks of your coding agent.

Lifecycle

recall daemon install
recall daemon status
recall daemon start
recall daemon stop
recall daemon uninstall

Embeddings

recall embeddings setup
recall embeddings info
recall embeddings bootstrap
recall embeddings verify
recall embeddings rebuild-index

05 · Maintenance

Memory rethinking, with or without an API key.

Give Recall a key and the daemon refines/merges/summarizes on a daily schedule. Skip the key and the backlog surfaces in the next agent's SessionStart so the live agent can pick tasks up against its own LLM.

Credentials

recall maintenance credentials set openai     sk-...
recall maintenance credentials set anthropic  sk-ant-...
recall maintenance credentials set azure \
  --endpoint https://x.openai.azure.com \
  --deployment gpt-4o-mini \
  --api-version 2024-10-21 az-...
recall maintenance credentials clear openai

Run & observe

recall maintenance dispatch --dry-run
recall maintenance dispatch --max 3
recall maintenance cleanup --apply
recall maintenance usage --since 2026-04-01
recall maintenance stats
recall maintenance list

06 · Env vars

The knobs you'll actually flip.

Hook env vars are read fresh on each invocation — no daemon restart needed. Daemon-wide vars go into ~/Library/LaunchAgents/com.recall.daemon.plist under EnvironmentVariables, then recall daemon restart.

Hook injection

VariableDefaultEffect
RECALL_HOOK_INJECT_CONTEXT true Set false to disable all hook-driven memory injection. Hooks still fire for telemetry and correction capture.
RECALL_HOOK_INJECT_PROMPT true Per-prompt injection on UserPromptSubmit. false opts out (SessionStart still fires).
RECALL_HOOK_INJECT_STYLE minimal verbose restores the historical Recall memory for this repo: prefix and repo header.
RECALL_SURFACE_PENDING_CONFIRMATIONS false true includes high-risk pending candidate confirmations at SessionStart. Default keeps stale destructive candidates out of unrelated work.
RECALL_CODEX_HOOKS_MIN_VERSION 0.115.0 Min Codex CLI version eligible for the hooks.json install path. Below this, falls back to the legacy notify bridge.

Daemon & storage

VariableDefaultEffect
RECALL_PORT7890HTTP port the daemon listens on.
RECALL_DATA_DIR~/.recallWhere the SQLite DB, models cache, and logs live.
RECALL_MAINTENANCE_ENABLEDtrueStops the non-LLM maintenance loop when false.
RECALL_MAINTENANCE_INTERVAL_SECONDS300Interval for the non-LLM loop.
RECALL_EMBEDDINGS_DISABLEDfalsetrue skips embedding generation; FTS-only ranking still works.

Capture path

Default flow on every prompt: a cheap multi-language pre-screen (en/es/fr/de/it/pt/ru/zh/ja/sq/tr) decides whether the prompt is worth showing the LLM. Pure code-request prompts are skipped. Rule-shaped prompts go through an extract_rules_from_prompt task; the LLM extracts zero or more durable rules and the applier creates candidate memories. The hook also calls POST /dispatch/wake so the dispatcher fires within seconds rather than on its timer. If no LLM provider is configured, the legacy regex extractor takes over (English-only, deterministic).

VariableDefaultEffect
RECALL_LLM_CAPTURE_DISABLEDfalseSet true to force the regex-fallback path even when an LLM key is configured.

LLM dispatcher

VariableDefaultEffect
RECALL_DISPATCHER_ENABLEDtrueDisable the daemon-owned dispatcher (delegated SessionStart path still works).
RECALL_DISPATCHER_INTERVAL_SECONDS86400Seconds between timer-driven ticks. POST /dispatch/wake (called by the capture hook, debounced 3 s) bypasses the timer — captures land within seconds regardless.
RECALL_DISPATCHER_MAX_TASKS_PER_RUN5Max tasks per tick.
OPENAI_API_KEY · ANTHROPIC_API_KEYFallback when Keychain has no entry. Azure uses the four AZURE_OPENAI_* vars together.

07 · More

Deep ends & source of truth.

This page intentionally skips the long tail. The repo has the rest — every env var, every quality knob, every release step.