Give your agent a memory it can cite.
27 MCP tools and a REST API for agents that remember customers. Typed claims, linked to their sources, on a SQLite file you run.
Updated
Where agent memory goes wrong.
01
Notes, not facts
Free-text memory can't be queried, compared or corrected field by field.
02
No source to show
When a user asks why the agent believes something, there's nothing to point to.
03
Silent overwrites
New information replaces old, and the agent never notices the two disagreed.
Scenarios
What your agent can do with it.
How OpenCRM answers
It fetches the observation and returns the email it was taken from.
How OpenCRM answers
The agent supersedes the old observation. Both stay, so the history reads in order.
How OpenCRM answers
The agent records a conflict and asks a person, instead of picking one on its own.
What you get.
- Typed memoryEntities, relationships and claims with schemas, not free text.
- Answers with sourcesEvery claim links to the artifact it came from.
- Disagreements handledConflicts are first-class, so your agent can ask instead of guess.
- Nothing to host but a fileSQLite, Node and Apache 2.0. Run it next to your agent.
Under the hood.
A source for each field
Observations name the field they cover and cite the artifact behind it.
Append-only event log
Entity changes are logged with their diff and never edited.
Agent attribution
Entity writes can carry the agent id, tool call id and prompt hash.
Content hashes
Each artifact is stored with a SHA-256 hash of its text.
Export
Take every record out as JSON, whenever you need it.
Self-hosted
One SQLite file on infrastructure you control.
Questions.
Does it do vector search?
No. It has structured filters and SQLite full-text search. Vector search isn't built.
Which agents can use it?
Any MCP client that can start a stdio server, including Claude Desktop and Claude Code, and anything that speaks HTTP through the REST API.
Can I change the entity types?
Entity types are fixed: contact, company, deal, interaction, task and agent. Each entity's properties are free-form JSON.
Every fact should show its source. Start with the agents you already run.
Run OpenCRM on sample data in minutes, or have Attri deploy it inside your environment with sign-in and connectors.