$ local-first memory for AI agents
Memory you can read.Every recall scored. Every correction versioned. Every byte on your machine.
Memoria Viva — a living memory for your agents, on your machine.
npm install -g bellamente && bellanpm · pipx · uvx · direct binaries (Windows x64, Linux x64) · SHA256 checksums
Add to Claude Code
claude mcp add bellamente -- bella mcpMIT licensedcoverage-gated CIR@1 84% / MRR 0.92 on the built-in bench1:1 test-to-source ratio
$ bella bellamente listening on 127.0.0.1:8080 $ curl -s :8080/memories -H 'content-type: application/json' \ -d '{"memories":[{"content":"Jeff prefers dark mode"}]}' | jq -c '.memories[0] | {id,version,action}' {"id":"a7Kd…","version":1,"action":"created"} $ curl -s :8080/search -H 'content-type: application/json' \ -d '{"q":"what theme does Jeff like?"}' | jq -c '{hit:.results[0].memory, similarity:.results[0].similarity, trace:.traceId}' {"hit":"Jeff prefers dark mode","similarity":0.94,"trace":"9fQ2…"}
The trace is the product
Every recall is durably logged: what was searched, what matched, at what score, in how many milliseconds — and what fell below the floor.
Nothing silently overwritten
Edits create new versions with the old ones kept in the chain. Forgetting is reversible and audited. Hard delete is the only eraser, and it says so.
Nothing leaves your machine
Embedded Postgres + pgvector, local embedding models, loopback binding by default. No cloud to trust, no account to make, no telemetry to audit — the database is a file in your app directory and you can open it.
Native MCP server for Claude Code, Cursor, and friends
bella mcp speaks stdio MCP — nine tools over the same embedded store and the same trace log. Your agent remembers across sessions, and you can read exactly what it recalled and why.
9 tools · same store as the HTTP API · every recall traced
claude mcp add bellamente -- bella mcpDrop-in memory for any OpenAI-compatible client
Change one base URL. Bellamente sits between your agent and your local model, injecting relevant memories into the request and writing a trace of exactly what it did. No SDK. No code changes. No network egress. Recall failures degrade to a memory-less answer instead of failing the chat turn.