Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By bolnet
Persists deterministic, team-accessible memory across Claude Code sessions with bi-temporal facts, RBAC, and zero-LLM recall. Installs a local MCP server backed by Postgres, Neo4j, and Pinecone, and automatically records file changes, commands, and session summaries.
npx claudepluginhub bolnet/attestor --plugin attestorRecord a comprehensive demo video + voiceover script of the Attestor UI
Install Attestor for Claude Code β one default profile, zero questions
Completely uninstall Attestor from Claude Code β reverse every install surface
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Persistent memory for Claude Code β memories survive across sessions, projects, and machines
Persistent cloud memory for Claude Code. Auto-loads memories on session start, auto-saves on stop, with on-demand store/recall skills.
Persistent agent memory that survives across sessions β auto-compacting 3-tier memory with hybrid search. Your agent remembers what it learned, decided, and built.
Local-first persistent memory for Claude Code β 101 MCP tools, hybrid search (FTS5 + vector + MMR), bitemporal contradictions, GDPR primitives, chatlog auto-capture, multi-agent handoffs.
Captures user prompts and agent responses to Memory Engine for persistent context across sessions
Cloud-backed persistent memory powered by Deeplake β read, write, and share memory across Claude Code sessions and agents
Cut your agent's token burn 21Γ. Two API calls.
Full-context replay re-reads the whole conversation every turn β input tokens that grow O(nΒ²) and a bill that compounds with every session. Attestor retrieves only what's needed: flat ~200 tokens per call, 21Γ fewer input tokens by turn 100, 100% recall β measured across six models, open and closed.
await attestor.add(namespace, content) # when new information arrives
facts = await attestor.recall(namespace, query) # ~200 flat tokens, always
Self-hosted, deterministic retrieval, zero LLM in the critical path. The memory layer for agent teams that need shared, tenant-isolated memory with bi-temporal replay and an auditable supersession chain.
pip install attestor
Using Claude Code?
pipx install attestorthenattestor quickstartβ one command, zero questions: it brings up the local backends (Postgres + Pinecone Local + Neo4j), uses a local Ollama embedder (no cloud key), and wires the MCP server + hooks. Reverse it withattestor teardown. Or drive it from inside Claude Code via the plugin (/plugin install attestorβ/attestor:install-attestor). See Install for Claude Code.pipx install attestor && attestor quickstart
| Version | 4.1.6 (stable; greenfield rebuild β no v3 migration path) |
| PyPI | attestor |
| Import | attestor |
| Live site | https://attestor.dev/ |
| Repo | https://github.com/bolnet/attestor |
| License | MIT |
Designed and built by Surendra Singh β building auditable infrastructure for multi-agent AI, with fifteen years of production-systems discipline brought to the memory layer. Companion projects:
claude-finance(Claude-powered financial analytics) Β·private-equity(PE Γ AI workshop). Reach out if you're hiring senior IC for AI infrastructure.
Attestor is a memory store for agent teams that need a shared, tenant-isolated memory with bi-temporal replay, deterministic retrieval, and an auditable supersession chain. It runs as a Python library, a Starlette REST service, or an MCP server β same API in all three.
The token math: Full-context replay is O(nΒ²) β every turn re-reads the whole history. Attestor replaces that with O(n) targeted retrieval. Per-call context stays flat at ~200 tokens whether the agent is on turn 1 or turn 100. One Claude Opus 4 session at 100 turns: $24.15 β $1.24. Verify it yourself with context-clock.
| Turn | Full-context replay | Attestor | Reduction |
|---|---|---|---|
| t24 | growing | ~200 tok | 5.6Γ |
| t50 | growing | ~200 tok | 11Γ |
| t100 | 8,709 tok/call | ~200 tok | 21.5Γ |
It is built around three claims, each grounded in code:
valid_from / valid_until) and transaction time (t_created / t_expired). Nothing is deleted; everything is queryable forever (attestor/temporal/manager.py:43-73, core.py:888-890).attestor/retrieval/orchestrator.py:1-14).ADD / UPDATE / INVALIDATE / NOOP) resolver per fact. Every supersession carries an evidence_episode_id (attestor/extraction/conflict_resolver.py:98).