Skip to content

Facts change. Memory should know when.

Every memory is linked into a graph of entities and relations, and every relation has a validity window. Agents get what is true now, and can still ask what was true then.

One customer, six facts, two years.

Solid bars are true now. Dashed bars were true once and were superseded by newer evidence, which is kept with its source.

Acme Corpentity · customer
Jan 25AprJulOctJan 26AprJulOctNOWplan = Starterbilling webhookplan = Probilling webhookprefers = phonesupport transcriptprefers = emailsupport transcriptblocker = SSO requiredsales callrenews = 2026-11-01contract doc
Query

Ask for now. Get sources.

Graph queries return the fact, where it came from and when it became true, so an agent can cite its memory instead of guessing.

query.ts
// What do we know about Acme right now, and where did it come from?
const facts = await db.graph.query({
  entity: 'Acme Corp',
  asOf: 'now',
  include: ['source', 'validFrom'],
});
// → plan = Pro (billing webhook, 2025-06)
//   prefers = email (support transcript, 2025-09)
//   renews = 2026-11-01 (contract doc)

Built from everything your agents touch.

Dedicated extractors turn each kind of input into entities and relations, all queryable together.

clawdb_remember_code
Store a code snippet as memory and extract its import/class/function structure into the knowledge graph (tree-sitter based: TypeScript, JavaScript, Python).
clawdb_remember_git_history
Store pasted `git log`/`git show`/`git diff` output as memory and extract commit/file/author triples.
clawdb_remember_document
Store a Markdown document (README, ADR, runbook, API guide) as memory and extract its structure (sections/links/env-vars) and semantics (deprecates/requires/supersedes, via LLM) into the knowledge graph.
clawdb_remember_dependencies
Store a dependency manifest (package-lock.json contents, or a requirements.txt) as memory and extract package/version/dependency triples.
clawdb_remember_build_log
Store raw build/test/runtime output as memory and extract failing test / stack trace / error triples, so future failures can be matched against past ones.
clawdb_remember_transcript
Store a chat/meeting/email transcript as memory. An LLM extracts concrete decisions, approvals, complaints, and constraints into the knowledge graph (no formal grammar to parse, unlike the other clawdb_remember_* tools).
clawdb_query_graph
Query the cross-source knowledge graph (code, git history, docs, dependencies, build logs, transcripts) by entity name, relation type, and/or source type.

A graph built for memory, not for charts.

Follow relations, not just similarity

Ask what connects to an entity, at any depth. Vector hits seed the traversal; graph hops finish it.

One node per real thing

“Pallet #4821” and “pallet 4821”, “J. Smith” and “John Smith” resolve to a single entity.

Every fact has a when

Edges carry valid-from and valid-to. Queries return what is true now, with the full history kept.

Conflicts surface, not hide

Reflection jobs flag facts that disagree and let an agent or a person resolve them.
FAQ

Graph questions.

Do I need to design a graph schema first?

No. Entities and relations are created as memories are written. You can constrain relation types later if you want stricter structure.

Does the graph replace vector search?

No, it works with it. Vector and full-text search find candidates; the graph adds structure, provenance and time. Axonio runs them as one hybrid query.

How does time work in the graph?

Each fact has a validity window. When a new fact supersedes an old one (a customer moves from Starter to Pro), the old edge is closed rather than deleted, so you can ask what was true at any point.

What can it extract from?

Plain memories, plus dedicated extractors for source code (TypeScript, JavaScript, Python), git history, Markdown docs, dependency manifests, build logs and chat or meeting transcripts.

Memory that knows what changed.