Tome is a Rust CLI and MCP server that makes Claude Code's plugin ecosystem work across other agentic coding harnesses — Cursor, Codex CLI, Gemini CLI, OpenCode, and friends.
You register catalogs (Git-hosted collections of plugins), enable the plugins you want, and Tome builds a local semantic index of their skills and commands. From there you can search that index from the command line, organise work into named workspaces, and wire the whole thing into up to five coding harnesses — both as rules-file / MCP-config integration and as a live MCP server that exposes search and your plugins' user-invocable prompts over the Model Context Protocol.
- Catalogs → plugins → index.
tome catalog addregisters a Git-hosted catalog;tome plugin enableindexes a plugin's skills and commands into a local SQLite + vector store.tome queryruns semantic (KNN + reranker) search across everything enabled. - Named workspaces. Central storage lives under
<home>/.tome/workspaces/<name>/; a project binds to a workspace with a tiny.tome/config.tomlpointer, so different projects can see different sets of plugins. - Harness integration across five harnesses. Tome writes each harness's rules file and MCP-config entry (Claude Code, Codex CLI, Cursor, Gemini CLI, OpenCode), and propagates per-plugin guardrails, hooks, and agent translations where the harness supports them.
- An MCP server.
tome mcpruns a stdio Model Context Protocol server backed by the resolved workspace's index. It exposessearch_skills,get_skill, andget_skill_infotools, plus your enabled plugins' user-invocable commands as MCP prompts (and, optionally, agent personas). This server shipped in Phase 3 — it is part of the tool today, not a roadmap item.
Linux and macOS, on both x86_64 and aarch64. Windows is untested — it may build, but no support is offered and CI does not cover it.
Tome has no telemetry. It never phones home. The only network access is Git operations against the catalogs you explicitly register and one-time downloads of the pinned inference models (see Models). Everything else — the index, embeddings, and summaries — is computed and stored locally under <home>/.tome/.
The crate is published as tome-mcp; the installed binary is named tome:
cargo install tome-mcpPrebuilt binaries (produced by the cargo-dist release pipeline for Linux and macOS) are distributed through a Homebrew tap. Replace <your-tap> with the tap this project publishes to:
brew install <your-tap>/tomegit clone https://github.com/devrelaicom/tome.git
cd tome
cargo install --path .Building Tome from source (cargo install tome-mcp or --path .) needs:
- Rust ≥ 1.93 (the pinned MSRV; edition 2024) and a system
giton the executable path. - A C/C++ toolchain and CMake. Tome statically links
llama.cpp(viallama-cpp-2) and a vendoredsqlite-vecextension, both compiled from source bybuild.rs. - A network connection at build time: the
ortcrate (ONNX Runtime) downloads the ONNX Runtime shared library during the build.
The prebuilt Homebrew binaries ship with everything baked in, so they have none of the above build-time requirements.
Tome downloads three pinned models on demand into <home>/.tome/models/. Each download is verified against a pinned SHA-256; a mismatch aborts the install.
| Model | Role | Format | Approx. size | Licence |
|---|---|---|---|---|
bge-small-en-v1.5 (Xenova INT8) |
Embedder | ONNX | ~34 MB | MIT |
bge-reranker-base |
Reranker | ONNX | ~279 MB | MIT |
qwen2.5-0.5b-instruct (Q4_K_M) |
Workspace summariser | GGUF | ~491 MB | Apache-2.0 |
- The first
tome plugin enableon a fresh machine prompts to download all three pinned models — embedder + reranker + summariser, ~804 MB total (run with--yesto skip the prompt). The model-presence check is registry-wide: any model missing from<home>/.tome/models/is offered up front, so the summariser is fetched here too, not deferred. - Once the summariser is on disk it is used to generate workspace summaries. If you decline it at enable time, summary generation (e.g. on enable, or via
tome workspace regen-summary) is silently skipped until the model is present; everything else — indexing and search — still works with just the embedder + reranker.
tome models list shows what is installed; add --verify to re-hash each artefact against its pinned SHA-256.
The walkthrough below uses the public Midnight Expert catalog as a concrete example; swap the source for any Git-hosted catalog (an owner/repo shorthand, a full Git URL, or a file:// path to a local clone). On a fresh machine the first tome plugin enable prompts to download all three pinned models (~804 MB total — see Models); that step needs a network connection and a little patience.
# 1. Register a catalog (owner/repo shorthand, a Git URL, or a file:// path).
tome catalog add devrelaicom/midnight-expert-tome
tome catalog list # confirm it registered
# 2. See which plugins the catalog offers.
tome catalog show midnight-expert-tome # lists every plugin in the catalog
# 3. Enable a plugin — indexes its skills/commands (downloads models on first run).
tome plugin enable midnight-expert-tome/compact-expert
tome plugin list # enabled plugins + per-plugin index status
# 4. Search the index semantically.
tome query "how do I write a compact circuit"
tome query "deploy a contract" --top-k 5 --json
# Health + maintenance
tome status # ok / degraded / unhealthy, per subsystem
tome models list # installed models; --verify rehashes vs pinned SHA-256
tome reindex # rebuild the index for every enabled pluginOrganise work into named workspaces and wire Tome into your harnesses:
# Named workspaces — central storage; a project binds via a pointer.
tome workspace init my-project # creates ~/.tome/workspaces/my-project/
tome workspace list # all workspaces + their counts
tome workspace use my-project # bind the current project; writes .tome/config.toml + runs sync
tome --workspace my-project plugin enable midnight-expert-tome/compact-expert
# Harness integration — declarative composition.
tome harness # list the supported harnesses
tome harness use claude-code # add claude-code to the project's settings
tome harness list # effective list with the source chain
tome harness sync # reconcile rules + MCP config + hooks + guardrails + agents
# Run as an MCP server (launched by your harness over stdio).
tome mcp # search_skills + get_skill + get_skill_info + prompts
# diagnostics → ~/.tome/logs/mcp.log (JSON-lines)Every Tome-owned path lives under <home>/.tome/:
<home>/.tome/config.toml— Tome's global config (strict TOML, 0600 on Unix)<home>/.tome/settings.toml— global harness composition settings<home>/.tome/index.db— central SQLite +sqlite-vec(one DB; workspaces and catalog enrolments are junction-table-keyed)<home>/.tome/index.lock— single advisory lockfile<home>/.tome/catalogs/<sha>/— shared catalog clones (reference-counted)<home>/.tome/models/<name>/— embedder, reranker, and summariser weights +manifest.jsonwith the pinned SHA-256<home>/.tome/workspaces/<name>/{settings.toml, RULES.md}— per-workspace state<home>/.tome/logs/mcp.log(+mcp.log.1rotation) — JSON-lines, 10 MiB cap, 0600 on Unix
Per project (bound via tome workspace use):
<project>/.tome/config.toml— a pointer marker (workspace = "<name>"); the central registry is the source of truth.<project>/.tome/RULES.md— propagated from the workspace'sRULES.mdon every sync.
Tome makes mechanical safety guarantees but cannot vet catalog content — only add catalogs you trust. See SECURITY.md for the full trust model and how to report a vulnerability.
- Project principles:
CONSTITUTION.md - Contributor on-ramp:
CONTRIBUTING.md - Security & trust model:
SECURITY.md
Dual-licensed under either of:
- Apache License, Version 2.0 (
LICENSE-APACHE) - MIT license (
LICENSE-MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tome by you, as defined in the Apache-2.0 licence, shall be dual-licensed as above, without any additional terms or conditions.