_index` smoke test that indexes your real history read-only (`~/.claude`, `~/.codex`, Cursor, `~/.gemini`, `~/.qwen`, Goose, OpenCode, Continue, Cline/Roo/Kilo), plus the embedding-model download (first run, needs network) and a Keychain round-trip.
## Use your history anywhere
Beyond the desktop window, the same local index is reachable from your agents, terminal, and editor — all reading one `index.db`.
**MCP server** — let any agent search its own past work mid-session. The quickest way is `npx` (it downloads the prebuilt binary on first run); it's also listed on the official [MCP registry](https://registry.modelcontextprotocol.io) as `io.github.betabots-llc/callimachus`:
```bash
claude mcp add callimachus -- npx -y callimachus-mcp # or any MCP client
```
Already running the desktop app? `callimachus-mcp` is on your PATH, so `claude mcp add callimachus -- callimachus-mcp` works without npm. Building from a checkout instead? `cargo install --path apps/desktop/src-tauri --bin callimachus-mcp`.
Tools (21) — now read **and** write. Reads (17): `search_threads`, `search_current_project` (auto-scoped to the repo it runs in), `recent_threads`, `get_thread`, `list_tags`, `list_open_todos`, `get_thread_knowledge`, `recall_decisions`, `recall_gotchas`, `find_prior_work` (the "have I done this before?" guard — prior sessions similar to a task), `project_memory` (a project's aggregated decisions / gotchas / open TODOs), `ask_history` (a cited RAG answer over your history), `threads_for_file` (which sessions touched a path), `check_decision` (surface settled decisions before re-litigating a proposal), `linked_commits` (the commits a thread likely produced), `list_snapshots` (a project's session snapshots), and `load_snapshot` (restore a saved checkpoint). Writes (4, into Callimachus's own memory, never your code): `complete_todo` (close an open TODO), `record_decision` (optionally with a `rationale`), `record_gotcha` (persist a fact into a project's memory), and `snapshot_session` (checkpoint a thread for handoff). The bundled `/recall` skill ([.claude/skills/recall](.claude/skills/recall/SKILL.md)) tells agents when to reach for them.
**CLI** — `cal`, pipe-friendly. Ships with the desktop app (on your PATH); or build from a checkout with `cargo install --path apps/desktop/src-tauri --bin cal`.
```bash
cal search "vector index migration" -y # -y = hybrid (semantic + keyword)
cal recent -n 10
cal cat 42 | pbcopy # packed transcript → clipboard
cal stats # index totals + per-source breakdown
cal export 42 --vault ~/Obsidian # write a thread as an Obsidian note
cal ask "how did we set up releases?" # cited RAG answer over your history
cal files embed/mod.rs # threads that touched a file path
cal memory # this repo's distilled memory (decisions/gotchas/TODOs)
cal done 17 # mark an open TODO done (id from `cal todos`)
cal remember decision "use sqlite-vec for KNN" --because "no cloud, KNN in SQL" # record a fact (+ rationale) into the repo's memory
cal check "switch to pgvector" # surface settled decisions before re-litigating one
cal commits # infer the thread→commit timeline for this repo (--json; or pass a path)
cal issues # recurring errors you keep hitting across sessions (last 180 days)
cal cost # estimated $ spend by model + your priciest threads
cal audit-pr . --changed-files a,b --shas s1,s2 # one JSON bundle for an external PR auditor
cal snapshot 42 -l "pre-refactor" # checkpoint a thread for handoff (transcript + project memory)
cal snapshots # list saved session snapshots (optionally for a project)
cal resume 7 -a claude # resume a snapshot in an agent CLI
cal agents # write the repo's memory into AGENTS.md (any agent reads it)
cal hook # print the repo's memory (use as a Claude Code SessionStart hook)
```
`star`, `tag`, `tags`, `todos`, `knowledge`, `distill`, `decisions`, `gotchas`, and `related` also exist — run `cal help` for the full list.
**VS Code / Cursor** — the extension adds a "Callimachus History" sidebar, a status-bar search button, and commands to search / insert / copy threads (it shells out to `cal`). Install from the **[VS Code Marketplace](https://marketplace.visualstudio.com/)** or **[Open VSX](https://open-vsx.org/)** (the registry **Cursor** and VSCodium use), or grab the `.vsix` from [Releases](../../releases). See [apps/vscode/README.md](apps/vscode/README.md).
## Notes / limitations
- Cross-platform (macOS / Windows / Linux). The only macOS-only piece left is the "Open in CLI" / "Resume" launchers (they drive Terminal via AppleScript); on Windows/Linux those actions return a "not supported yet" notice — everything else (index, search, chat, export, keychain) works everywhere.
- Cline / Roo Code / Kilo Code are editor extensions with no CLI, so they are index-only (searchable, but not relaunchable via "Resume").
- Cursor doesn't store a per-thread workspace, so Cursor threads currently have no project path.
- Claude Code subagent transcripts are indexed but hidden behind a "subagents" toggle by default.
- Large first index is a one-time cost (the Claude corpus here was ~90k messages in ~25s); subsequent passes skip unchanged files.
- More sources (Charm Crush, Factory Droid, Copilot CLI) are scoped but not yet integrated — see [the indexer guide](apps/desktop/src-tauri/src/indexer/README.md).
## Contributing
Issues and PRs welcome. [CONTRIBUTING.md](CONTRIBUTING.md) covers local setup, conventions, and the release flow. Adding support for another agent is a [small, documented contract](apps/desktop/src-tauri/src/indexer/README.md) — usually one indexer module + a migration + a few wiring points.
## Security & privacy
Callimachus is local-first by design: your conversation index never leaves your machine, API keys live in the OS keychain (never on disk), and the only outbound traffic is to the LLM provider you explicitly choose. To report a vulnerability, see [SECURITY.md](SECURITY.md).
## License
**Dual-licensed.** Free and open source under **[AGPL-3.0-or-later](LICENSE)** — use,
modify, and share it; if you distribute it or run a modified version as a network
service, you must release your source under the AGPL.
For **closed-source, proprietary, or for-profit/SaaS use** that the AGPL doesn't
permit, a **commercial license** is required — see **[COMMERCIAL.md](COMMERCIAL.md)**
(contact ari@shaller.dev).
© 2026 Ari Shaller. See [NOTICE](NOTICE) for attributions. Contributions are accepted
under the terms in [CONTRIBUTING.md](CONTRIBUTING.md).
## Acknowledgements
Built on [Tauri](https://tauri.app), [fastembed-rs](https://github.com/Anush008/fastembed-rs), [sqlite-vec](https://github.com/asg017/sqlite-vec), and [genai](https://github.com/jeremychone/rust-genai). Named for [Callimachus of Cyrene](https://en.wikipedia.org/wiki/Callimachus), who catalogued the Library of Alexandria.
Social preview: assets/og.png · brand sources in assets/brand/