Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Trust and proof

Memory is only useful if an agent can tell whether to believe it. Every recalled item carries what it needs to decide.

Attestation

When the deployment has an attestation key, a recall pack carries attestation: { mac, issuedAt }. The mac covers the text, validity window, trust level and source event hashes of every item, plus the project and memory version. Send the pack back to check it:
const pack = await kaibo.recall("who owns the release?"); const check = await kaibo.verifyPack(pack); // { valid: true, reasons: [] }
It fails if any item was edited after kaibo issued it, if the pack came from another project, or if a source event no longer matches its recorded hash. Use it to show an auditor, or another agent, what the memory said and where it came from.

Freshness

Facts go stale at different speeds. Each item has freshness and reverifyBy, computed from the type's half-life (tasks 7 days, episodes 30, facts 180, decisions and preferences 365, procedures 730):
freshnessmeaning
freshconfirmed within half its half-life
agingpast half, within the full half-life
unverifiedpast its half-life without being confirmed
Check unverified items before acting on them. When you do, confirm them so the clock restarts:
await kaibo.verifyMemory(item.memoryId);

Time travel

recall({ asOf }) returns what was believed true at that instant, including values that were later replaced. diff lists what changed in a window:
const d = await kaibo.diff({ from: "2026-11-01T00:00:00Z", to: "2026-11-08T00:00:00Z" }); // d.added: became true. d.ended: stopped being true, with what replaced each.
Replay a past decision with the memory as it was, and diff two moments to see why the answer changed.

Trust

Text that arrives through tool output or files (source.kind of tool_call or file) can carry injected instructions. kaibo marks memories derived only from such sources trust: "untrusted", and an untrusted update can add knowledge but cannot replace or retire a trusted memory. Ask for trusted memories only when the result will drive an action:
await kaibo.recall({ query: "who is the CEO?", minTrust: "trusted" });

Fast and deep recall

mode: "fast" never calls a model on the read path (about 0.4 s). mode: "deep" always asks one to choose the memories. The default, auto, answers fast when keyword, meaning and concept-graph retrieval agree on a single clear answer, and deepens for questions about change, lists, or anything ambiguous.