Knowledge that knows who's asking.
A fully featured knowledge base, built by agents for agents.
Meerkat Recall is a knowledge system written in Rust. It connects source documents, entities, relationships and evidence-backed assertions, with retrieval, provenance and background knowledge maintenance. Recorded claims remain distinct from adjudicated knowledge, and authorization determines which records a caller can use. Agents reach it through the CLI, HTTP API or MCP.
What it is
A complete knowledge base, built by agents for agents: intake, extraction, documents, entities, a timeline, current answers and search, in one Rust binary. Record authorization uses operation scopes, classification and subject attenuation. Persistent SurrealDB and embedded elephant-db modes are available in source.
- Built by agents an LLM agent works in this part, through Meerkat
- For agents the ports agents connect to
Pipeline, where agents build it
Stages
- triage
- render
- extract
- validate
- commit
- truth maintenance
Triage and budgets, agent
- a model picks each source's depth
- skip, metadata, retrieval or graph
- daily budgets can lower the depth
- cost reserved before the work starts
Extraction, agent
- an agent on any model through Meerkat
- reads Meerkat Recall over MCP as it extracts
- checks evidence against the text
- strict structured output
- stages candidates for commit
Staged commit
- a durable work queue with leases
- validate, then commit
- retries with backoff, then dead letters
- idempotency keys on ingest and claims
Truth maintenance, agent
- runs after each commit
- agreeing values merge their evidence
- an LLM adjudicates disagreements
- supersedes by stated validity dates
- proposes semantics for new predicates
Knowledge model, what agents query
For agents
- MCP, /mcp
- MCP agent, /mcp/agent
- HTTP API, /v1
- Event stream, SSE
- Rust crate, library
- tools grouped into MCP profiles
- a read-only agent profile
- the extraction agent reads through it too
- get_runtime_status on every profile
- ingest tools hidden until extraction is ready
Sources and revisions
- nine source types, email to video
- every render an immutable revision
- images and video rendered to text
Documents and layered embeddings
- a tree of nodes with byte-offset spans
- chunk, paragraph and summary vectors
- vector search, lexical fallback
Assertions and evidence spans
- what it was told, kept as evidence
- subject-predicate-object claims
- byte offsets into a document revision
- a quote hash on every span
Entities and identity, agent
- names, aliases, handles, identity keys
- type-guarded identity resolution
- an LLM settles ambiguous matches
- an identity sweep proposes merges
- merges keep lineage and redirects
Relationships and attributes
- entity to entity, or to a typed value
- predicates from a governed registry
- validity windows, confidence, evidence
Truth slots and conflicts
- what it believes, one answer per question
- ranked values with a rationale
- conflict groups keep competing claims
- beliefs never mix security envelopes
Timeline
- events backed by claims and sources
- precision from exact to year, or unknown
- later evidence refines the same event
Security
- policy
- level
- labels
- handling
- designed in from the start
- an envelope on every record
- deny by default, eight access rules
- JWT principals, clearances per policy
- derived records inherit the envelope
- vectors partitioned by policy, level, model
- fields redacted without the scope
Storage, the same code on either backend
SurrealDB
- persistent, the default backend
- document, graph and vector features
- HNSW indexes per vector partition
ElephantDB
- embedded kernel, in the same process
- exact cosine vector search
- snapshot export and import
Pipeline, where agents build it
- Stages: triage, render, extract, validate, commit, truth maintenance.
- Triage and budgets (agent): a model picks each source's depth, skip, metadata, retrieval or graph, daily budgets can lower the depth, cost reserved before the work starts.
- Extraction (agent): an agent on any model through Meerkat, reads Meerkat Recall over MCP as it extracts, checks evidence against the text, strict structured output, stages candidates for commit.
- Staged commit: a durable work queue with leases, validate, then commit, retries with backoff, then dead letters, idempotency keys on ingest and claims.
- Truth maintenance (agent): runs after each commit, agreeing values merge their evidence, an LLM adjudicates disagreements, supersedes by stated validity dates, proposes semantics for new predicates.
Knowledge model, what agents query
- For agents: MCP (/mcp), MCP agent (/mcp/agent), HTTP API (/v1), Event stream (SSE), Rust crate (library); tools grouped into MCP profiles, a read-only agent profile, the extraction agent reads through it too, get_runtime_status on every profile, ingest tools hidden until extraction is ready.
- Sources and revisions: nine source types, email to video, every render an immutable revision, images and video rendered to text.
- Documents and layered embeddings: a tree of nodes with byte-offset spans, chunk, paragraph and summary vectors, vector search, lexical fallback.
- Assertions and evidence spans: what it was told, kept as evidence, subject-predicate-object claims, byte offsets into a document revision, a quote hash on every span.
- Entities and identity (agent): names, aliases, handles, identity keys, type-guarded identity resolution, an LLM settles ambiguous matches, an identity sweep proposes merges, merges keep lineage and redirects.
- Relationships and attributes: entity to entity, or to a typed value, predicates from a governed registry, validity windows, confidence, evidence.
- Truth slots and conflicts: what it believes, one answer per question, ranked values with a rationale, conflict groups keep competing claims, beliefs never mix security envelopes.
- Timeline: events backed by claims and sources, precision from exact to year, or unknown, later evidence refines the same event.
- Security: policy, level, labels, handling; designed in from the start, an envelope on every record, deny by default, eight access rules, JWT principals, clearances per policy, derived records inherit the envelope, vectors partitioned by policy, level, model, fields redacted without the scope.
Storage, the same code on either backend
- SurrealDB: persistent, the default backend, document, graph and vector features, HNSW indexes per vector partition.
- ElephantDB: embedded kernel, in the same process, exact cosine vector search, snapshot export and import.
Pipeline, where agents build it
Stages
- triage
- render
- extract
- validate
- commit
- truth maintenance
Triage and budgets, agent
- a model picks each source's depth
- skip, metadata, retrieval or graph
- daily budgets can lower the depth
- cost reserved before the work starts
Extraction, agent
- an agent on any model through Meerkat
- reads Meerkat Recall over MCP as it extracts
- checks evidence against the text
- strict structured output
- stages candidates for commit
Staged commit
- a durable work queue with leases
- validate, then commit
- retries with backoff, then dead letters
- idempotency keys on ingest and claims
Truth maintenance, agent
- runs after each commit
- agreeing values merge their evidence
- an LLM adjudicates disagreements
- supersedes by stated validity dates
- proposes semantics for new predicates
Knowledge model, what agents query
For agents
- MCP /mcp
- MCP agent /mcp/agent
- HTTP API /v1
- Event stream SSE
- Rust crate library
- tools grouped into MCP profiles
- a read-only agent profile
- the extraction agent reads through it too
- get_runtime_status on every profile
- ingest tools hidden until extraction is ready
Sources and revisions
- nine source types, email to video
- every render an immutable revision
- images and video rendered to text
Documents and layered embeddings
- a tree of nodes with byte-offset spans
- chunk, paragraph and summary vectors
- vector search, lexical fallback
Assertions and evidence spans
- what it was told, kept as evidence
- subject-predicate-object claims
- byte offsets into a document revision
- a quote hash on every span
Entities and identity, agent
- names, aliases, handles, identity keys
- type-guarded identity resolution
- an LLM settles ambiguous matches
- an identity sweep proposes merges
- merges keep lineage and redirects
Relationships and attributes
- entity to entity, or to a typed value
- predicates from a governed registry
- validity windows, confidence, evidence
Truth slots and conflicts
- what it believes, one answer per question
- ranked values with a rationale
- conflict groups keep competing claims
- beliefs never mix security envelopes
Timeline
- events backed by claims and sources
- precision from exact to year, or unknown
- later evidence refines the same event
Security
- policy
- level
- labels
- handling
- designed in from the start
- an envelope on every record
- deny by default, eight access rules
- JWT principals, clearances per policy
- derived records inherit the envelope
- vectors partitioned by policy, level, model
- fields redacted without the scope
Storage, the same code on either backend
SurrealDB
- persistent, the default backend
- document, graph and vector features
- HNSW indexes per vector partition
ElephantDB
- embedded kernel, in the same process
- exact cosine vector search
- snapshot export and import
What it believes depends on who is asking.
Authorization determines which records each caller can use. An explicitly empty subject allowlist stays empty. Ordinary timeline updates cannot replace security fields. Lifecycle and resolution writes reject concurrent authorization changes, and assertion search results and counts use authorized records. Two agents can therefore ask the same question and receive different evidence-backed answers.
Agents build the knowledge base.
Triage decides how deep each source goes, within a daily budget. Sources bound for the graph go to an extraction agent, on any model through Meerkat (Anthropic, OpenAI, Gemini), that looks up the entities and predicates already known over Meerkat Recall's read-only MCP endpoint as it reads. An adjudicator settles claims that disagree, and an identity sweep proposes merges. Under them runs a durable, staged conveyor: leased work items, validation before every commit, dead letters and idempotency keys.
A household's agents share one knowledge base.
A household uses personal and specialist agents running on Meerkat. They file what arrives into one Meerkat Recall knowledge base and ask it what the house already knows.
What the agents know, and where it came from.
Agents and connectors file mail, school apps and portals, calendar changes, shared-drive documents and the owners' corrections. The agents read it through Meerkat Recall's read-only agent endpoint: triage asks whether something is already known before it files it; the calendar, school and person agents look up dates, obligations and what a letter said; an auditor cross-checks what the displays show.
- Dates and obligations from school letters land on the household timeline.
- "What did that letter say?" is answered from the letter itself.
- Calendars and hallway displays are checked against what the letters and messages say.
- Personal and specialist agents share a knowledge-base space
- Read-only lookup through the agent endpoint
- Agents search existing knowledge before answering or filing information
- Agents file incoming documents with their sources
Shared knowledge, across your agents.
Connect applications through HTTP and agents through MCP. Use Recall on its own, or alongside Core and Meta when your agents need a shared body of knowledge they can trace back to its sources.
Recall's own source is dual licensed under MIT or Apache-2.0. Third-party dependencies and bundled material retain their applicable terms.