loading…
Search for a command to run...
loading…
A local-first memory layer for coding agents to persist and retrieve project decisions, architecture context, and rules across multiple development sessions. It
A local-first memory layer for coding agents to persist and retrieve project decisions, architecture context, and rules across multiple development sessions. It utilizes a three-tier memory model and hybrid retrieval to provide agents with durable, searchable context and a WebUI for human review.
Local-first project memory server for agents and developers
Features • Quick Start • MCP Setup • WebUI • Usage • Tools • Configuration • Reliability • Troubleshooting
Archivist MCP is a memory layer for coding agents. You run it alongside your project, connect your MCP client, and the agent can persist/retrieve decisions, incidents, rules, and architecture context across sessions. WebUI is for human review and controlled write actions when you want visibility before changing memory.
core_memory.md/.json), archival graph/mcp)3.11+python3 scripts/migrate.py --db .archivist/archivist.db
python3 -m archivist_mcp.stdio_server --db .archivist/archivist.db
python3 - <<'PY'
from archivist_mcp.db import connect
conn = connect('.archivist/archivist.db')
conn.execute("INSERT OR IGNORE INTO projects(project_id,name) VALUES('proj-1','Project One')")
conn.execute("INSERT OR IGNORE INTO users(user_id,display_name) VALUES('user-1','User One')")
conn.commit()
conn.close()
PY
In MCP settings (Add MCP Server) use:
archivist-mcppython3-m archivist_mcp.mcp_stdio_server --db .archivist/archivist.db/path/to/your/repo)ARCHIVIST_CONFIG_PATH, etc.)If you need strict team-style user enforcement in stdio mode, add --require-user-id.
If your MCP client expects stdio process launch but you want the HTTP server, launch a bridge command such as:
npx -y mcp-remote http://127.0.0.1:8766/mcp
Start directly:
python3 -m archivist_mcp.mcp_http_server --db .archivist/archivist.db --host 127.0.0.1 --port 8766
python3 -m archivist_mcp.sse_server --db .archivist/archivist.db --host 127.0.0.1 --port 8765
python3 -m archivist_mcp.webui_server --db .archivist/archivist.db --host 127.0.0.1 --port 8090
Open:
http://127.0.0.1:8090Views:
Use case:
tools/list).tools/call) with arguments.create_entity, archive_decision, store_observation, create_edgesearch_graph, read_node, get_project_summary, list_recent_incidentsupdate_entity, deprecate_node, resolve_conflict, invalidate_stale_memoryextract_symbols, rebuild_index_and_embeddingsexport_audit_log, purge_observations, get_metricssearch_graph.core_memory.md and core_memory.jsonCurrent tool set (subject to feature flags):
healthversionget_capabilitiesget_metricscreate_entityread_nodeupdate_entitycreate_edgesearch_graphstore_observationarchive_decisionget_project_summarylist_recent_incidentsdeprecate_nodecompact_core_memoryextract_symbolsrebuild_embeddingsrebuild_index_and_embeddingsexport_audit_logpurge_observationsresolve_conflictpromote_branch_recordinvalidate_stale_memorysearch_graph note:
include_deprecated=false returns active records only.include_deprecated=true allows deprecated/invalidated/superseded records (archived excluded).Config source order:
.archivist/config.toml (or ARCHIVIST_CONFIG_PATH)Common env vars:
ARCHIVIST_CONFIG_PATHARCHIVIST_DISABLE_EMBEDDINGS=true|falseARCHIVIST_CORE_MAX_KBARCHIVIST_RATE_LIMIT_PER_MINUTEARCHIVIST_STRUCTURED_LOGGING=falseARCHIVIST_DB_ENCRYPTION_KEYARCHIVIST_ENCRYPTION_REQUIRED=trueARCHIVIST_SSE_TOKENS (JSON token map for team auth)ARCHIVIST_TLS_ENABLED=trueARCHIVIST_TLS_CERT_FILE, ARCHIVIST_TLS_KEY_FILEExample team token map:
{
"token-a": {
"user_id": "user-1",
"role": "writer",
"projects": ["proj-1"]
},
"token-b": {
"user_id": "maint-1",
"role": "maintainer",
"projects": ["proj-1"]
}
}
Encryption behavior:
ARCHIVIST_DB_ENCRYPTION_KEY is set and SQLCipher is unavailable, startup fails.ARCHIVIST_ENCRYPTION_REQUIRED=true also enforces fail-closed encryption checks.python3 scripts/check_integrity.py --db .archivist/archivist.db
python3 scripts/create_snapshot.py --db .archivist/archivist.db --snapshot-dir .archivist/snapshots
python3 scripts/restore_snapshot.py --snapshot .archivist/snapshots/<snapshot>.db --db .archivist/archivist.db
python3 scripts/rebuild_index_and_embeddings.py --db .archivist/archivist.db --project-id proj-1 --root .
archivist_mcp/
mcp_stdio_server.py # MCP JSON-RPC over stdio
mcp_http_server.py # MCP JSON-RPC over HTTP (/mcp)
sse_server.py # Team mode HTTP+SSE
webui_server.py # Browser UI + controlled write APIs
tooling/server.py # Tool router, validation, envelope/errors
storage/repository.py # Graph persistence + lifecycle + audit
retrieval/ # embeddings + hybrid retrieval
indexing/ # symbol extraction + incremental indexer
memory/materializer.py # core_memory.md + core_memory.json
migrations/sql/ # schema migrations
scripts/
migrate.py
create_snapshot.py
restore_snapshot.py
check_integrity.py
rebuild_index_and_embeddings.py
tests/
test suites for integration, retrieval, security, team mode, and WebUI behavior
docs/
quickstart.md
troubleshooting.md
recovery_runbook.md
AUTHZ_DENIEDToken role/scope does not permit the tool or project. Check ARCHIVIST_SSE_TOKENS role and projects.
CONFLICT_ERROROptimistic version mismatch. Re-read node, use latest version, retry or resolve via conflict workflow.
EMBEDDING_DISABLEDEmbeddings are disabled/unavailable. Retrieval falls back to fts_graph mode.
The UI reads from the DB passed to webui_server --db. Ensure your seeding and servers all point at the same DB path.
Built for durable project memory across agent sessions, with local-first defaults and auditable writes.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"archivist-mcp": {
"command": "npx",
"args": []
}
}
}