remember
Store a typed memory (user|feedback|project|reference) with mandatory provenance. Returns a stable memory_id; idempotent for identical content+source.
keyttltagstype必填sourcecontent必填
io.github.ionasrobert由 GitHub 帳號 ionasrobert 發布v0.1.3更新於 Oct 31, 2026
Long-term memory for AI agents: local-first PKM with provenance and hybrid search.
發布方自己的服務:DACIX — The Store for AI Agents
把 Markdown 筆記資料夾變成助手可用的本機知識庫,支援帶來源的記憶、筆記檢索、連結遍歷,以及可稽核、可還原的寫入。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
Long-term memory for your AI agents — local-first, with provenance.
Tacitus is an MCP server that turns any folder of Markdown notes into an agent-native knowledge base. It gives AI agents (Claude Code, Claude Desktop, and any MCP client) three things they actually need:
get_note discloses progressively
(outline → frontmatter → full); the wikilink graph is a queryable API.
Hybrid lexical + semantic search, with an optional neural embedder.Notes stay as plain .md files in your folder. No cloud, no lock-in.
Recorded from a real session — the memory id, changeset id, version id and audit line above are what the binary actually returned (how).
claude_desktop_config.json)Prefer a single, zero-dependency binary? The Rust server ships prebuilt for macOS, Linux, and Windows on every release.
Or grab a .tar.xz / .zip for your platform from the
latest release.
Then point any MCP client at the binary instead of npx:
The native binary is the flagship server (25 tools; the npm server has the
core 16 — see the table below). Both share the same on-disk formats, so a
vault works with either. Set TACITUS_SCOPE=read-only to run the native
server without write permissions.
* Native-Rust-server first (the npm server will catch up):
properties_query — Bases-like structured queries over YAML frontmatter
(filters eq|ne|contains|exists|not_exists|gt|lt|gte|lte, sort, select,
token_budget). Templates — Markdown files in .tacitus/templates/ whose
{{var}} placeholders form a schema; substitution happens before YAML
parsing so numeric vars stay typed, {{date}}/{{time}}/{{datetime}}
auto-fill, and creation is versioned + audited like any agent write.
Tasks — every checklist line (- [ ]) as a typed entity (done, due from
due:YYYY-MM-DD or 📅, #tags), queryable and toggleable; toggling takes
the task text as a concurrency guard so a stale caller gets a CONFLICT
instead of flipping the wrong task. rename_note retargets every wikilink
that resolves to the note (alias/heading kept) in one atomic changeset —
a single revert undoes the whole rename; delete_note is versioned too.
Every tool validates input with a schema and returns structured, actionable
errors ({ code, reason, suggestion }) rather than stack traces.
In Tacitus, a plugin is an MCP client — the tool contract above is the public API, with permission scoping, versioning, and audit built in.
@dashiro/tacitus-sdk: every tool as
a typed method, {code, reason, suggestion} errors thrown as
TacitusToolError:
tacitus-plugins runs
guest wasm under Wasmtime with manifest-declared permissions (tool allowlist
tacitus.call is tools/call.
The native binary embeds the runtime: tacitus-mcp plugin list|run for cron
agents and scripts.
See docs/PLUGINS.md §5TACITUS_EMBEDDER=ollama uses a local Ollama daemon
for embeddings (TACITUS_OLLAMA_EMBED_MODEL, default nomic-embed-text;
needs an Ollama with embedding support). Vectors cached in .tacitus/vectors/;
falls back to the deterministic hashing embedder when unavailable.tacitus-mcp sync init; sync status shows how much of
the relay quota a vault uses).tacitus/ internals, stable ids, note conventions)Left: two devices, plain Markdown. Right: everything the relay stores for that
vault. Those blobs were read out of a real log.jsonl after the recording —
no note title, no path, no plaintext. The vault code is the key and never
leaves your devices; lose it and the relay's copy is undecryptable forever.
The relay is MIT like everything else — self-host it with no limits, or use
the hosted one at sync.tacitus.md: free up to 100 MB per vault, Pro
1 GB for €5/month or €48/year (tacitus.md/#pro).
No account — Pro is bought per vault id.
search defaults to hybrid mode (lexical + a deterministic, offline
embedder that catches morphological variants). For synonym/paraphrase matching,
opt into a neural embedder:
Vectors are cached under .tacitus/vectors/. Falls back to the deterministic
embedder if the optional dependency or model isn't available.
Polyglot monorepo. The reference server (shipped on npm) is TypeScript in
packages/mcp-server. A native Rust server in crates/ provides a
single-binary, zero-runtime-deps build (crates/tacitus-core engine +
crates/tacitus-mcp rmcp server) — a superset of the TS server (25 vs 16
tools). Its stable_id matches the TS engine byte-for-byte, so memory ids are
identical across both engines.
Cross-platform release binaries are built and published to GitHub Releases by
cargo-dist (dist-workspace.toml +
.github/workflows/release.yml) on every v* tag.
MIT — see LICENSE.
來源:README.md,提交 c7ee6c9
Store a typed memory (user|feedback|project|reference) with mandatory provenance. Returns a stable memory_id; idempotent for identical content+source.
keyttltagstype必填sourcecontent必填Recall memories relevant to a query, ranked, within an optional token_budget. Surfaces conflicting memories instead of silently choosing.
typequery必填token_budgetDelete a memory by id. Returns whether a memory was removed.
memory_id必填Search vault notes by relevance; returns ranked snippets within an optional token_budget (never whole notes). mode: hybrid (default) | lexical | semantic. Expand with get_note.
modequery必填top_ktoken_budgetFetch a note progressively: outline (headings) | frontmatter_only | full, with an optional max_tokens ceiling.
formatnote_id必填max_tokensTraverse the wikilink graph: links (outgoing) | backlinks | neighbors (both directions, to depth).
from必填depthrelation必填List all note ids with their titles and paths.
無需輸入參數。
Dry-run a changeset (create/update/delete notes). Returns a change_id and a before/after diff. Nothing is written until commit_changes.
ops必填Atomically apply a previously proposed change_id (all-or-nothing). Returns a version_id usable with revert.
change_id必填Undo a committed change by version_id, restoring the prior note state.
version_id必填Create a note (auto-committed). Fails if it already exists. Returns a version_id.
content必填note_id必填frontmatterUpdate a note body and/or frontmatter (auto-committed). Returns a version_id.
contentnote_id必填frontmatterAppend a [[to]] wikilink to the `from` note (idempotent). Returns a version_id.
to必填from必填Add a tag to a note (deduplicated). Returns a version_id.
tag必填note_id必填Read recent agent actions (commits/reverts), most recent first.
limitList available tools and the current permission scope.
無需輸入參數。
已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
npx -y @dashiro/tacitus-mcp-server /path/to/your/vaultclaude mcp add tacitus -- npx -y @dashiro/tacitus-mcp-server /path/to/your/vault{ "mcpServers": { "tacitus": { "command": "npx", "args": ["-y", "@dashiro/tacitus-mcp-server", "/path/to/your/vault"] } }}# macOS / Linux — installs `tacitus-mcp` into your Cargo bin dircurl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/ionasrobert/tacitus-mcp-server/releases/latest/download/tacitus-mcp-installer.sh | sh# Windows (PowerShell)irm https://github.com/ionasrobert/tacitus-mcp-server/releases/latest/download/tacitus-mcp-installer.ps1 | iexclaude mcp add tacitus -- tacitus-mcp /path/to/your/vaultconst tacitus = await TacitusClient.spawn({ vault: '/path/to/vault' });const hits = await tacitus.search({ query: 'client X', token_budget: 500 });npm i @huggingface/transformersTACITUS_EMBEDDER=transformers npx @dashiro/tacitus-mcp-server /path/to/vaultyour-vault/├── notes... ← your Markdown files (untouched format)└── .tacitus/ ├── memory/*.md ← agent memories (Markdown + YAML frontmatter) ├── vectors/*.json ← cached embeddings ├── history/*.json ← version snapshots (for revert) └── audit.log ← JSONL log of every agent write# TypeScript servernpm cinpm test # vitestnpm run typechecknpm run lintnpm run build # tsup → packages/mcp-server/distnpm run eval # retrieval quality report
# Rust server (native, single binary)cargo testcargo clippy --all-targets -- -D warningscargo fmt --checkcargo run -p tacitus-mcp -- /path/to/vault # runs the MCP server on stdiocargo build --release # → target/release/tacitus-mcp