Imported from samzong/Recall (
AGENTS.md). Install upstream withnpx skills add samzong/Recall. Copyright stays with the author.
Recall
Rust CLI/TUI for indexing and searching local AI coding sessions. Data flow: adapters -> sync -> SQLite -> search -> CLI/TUI.
Read the nested AGENTS.md before changing src/adapters/, src/db/,
src/tui/, crates/rx/, extensions/, or website/.
CLAUDE.md links to this file; edit this file once.
Build and verify
make checkis required before push and is the CI gate: dependency audit, format check, workspace Clippy with--all-targets --features bench, then workspace tests. Install the cargo-audit version pinned in.github/workflows/ci.yml.make buildbuilds core;cargo build -p rxorcargo build -p recall-<name>builds another workspace binary.cargo test <filter>runs focused core tests.- Core integration tests belong in
src/integration/, enabled bysrc/lib.rs;tests/fixtures/holds data. Do not add roottests/*.rstargets. Other workspace crates keep their own test layouts. - Website commands and checks are separate; see
website/AGENTS.md.
Boundaries
- Core owns index writes, sync, import, storage, and migrations. Extensions
consume the stable CLI JSON/JSONL protocol, never
recall.dbor Rust internals. Seedocs/extensions.mdfor the boundary and protocol contract. - Machine-output commands emit only the requested data on stdout; progress and
warnings go to stderr. Published fields cannot be removed, renamed, or change
meaning without a
protocol_versionbump. SQLite schema is not public API. - Keep Rust internals
pub(crate)unless a current in-repo caller needs wider visibility. The normal library entrypoints areinit()andrun().publish = falsestays: workspace packages ship as application binaries. - The optional
benchfeature exposessrc/bench_api.rsfor benchmarks only. Add fixtures there instead of widening internals; use temporary directories and in-memory databases, never the user's index. crates/rx/is an independent native harness launcher, with no Recall crate or database dependency. Read its design and admission rules through its nestedAGENTS.md.skills/recall/is embedded in the core binary and installed byrecall skill install; edits require rebuilding the binary..local/is scratch, not an architecture source.
Releases
- Setup and release commands are in
DEVELOPMENT.mdandMakefile; commit hooks live in.githooks/(git config core.hooksPath .githooks). - Core uses cargo-release. The release owner chooses the version bump;
make release-patchis a dry run, andEXECUTE=1bumps, commits, tags, and pushes. The git-cliff hook prepends the changelog; preserve existing entries. .github/workflows/release.ymlowns tag validation and publication. Release artifacts must come from the same commit that passed the gate.- Extensions release independently; version bumps declare release intent.
See
extensions/AGENTS.md. The generatedwebsite/public/extensions/catalog.jsonmust not be hand-edited.