GET /v1/brain/ops-status shows what is enabled).
Brain is opt-in and disabled by default. Enable it in the AccountKit’s
primitives_config (brain: { enabled: true }) or calls return 403 forbidden with reason subprocessor_consent_required — for an explicit { enabled: false } exactly as for an absent entry, because brain is one of the three opt-in slugs and primitiveAvailability answers not_yet_enabled for both.Two layers: documents and semantic memory
Both live in a company-scoped knowledge base — a brain.
Many brains, one default
A company may hold several brains; exactly one is the default, used by any content call that names noknowledge_base_id. A company that never creates one gets "Default Brain" minted lazily on its first content call.
409 from create --default means the brain was created but the default swap failed — promote it with naive brain default <id from details.knowledge_base_id> rather than re-running the create.
An agent can be connected to a brain as its working default:
naive.config.ts the same shape is brain({...}) for one, brains({ default, declared }) for several; bind an agent with hive.view("support", { can: [...] }).
CLI first
--kb <uuid>, --brain <name|id>, and --agent <id|name> name a brain on any content command; without them you get the default brain.
Credits
Plan-quota metering also applies per tenant for the
brain primitive (HTTP, SDK, and MCP).
Grounded answers with citations
query returns an answer plus citations mapped to your ingested documents. Citations are scoped to the calling company and knowledge base — unmappable citations are dropped, so answers never leak another tenant’s sources.
session_id back to query/think to continue the same conversation thread.
Branch on answer_mode, not on the presence of answer: synthesized is prose written over the sources, grounded is the retrieved passages themselves numbered [1], [2], … alongside the same citations. grounded is a successful 200 — a deployment with no answerer always returns it, and it is also the fallback when a configured answerer fails. Runtime & configuration covers which state a deployment is in and how to read it off GET /v1/brain/status.
Governance and deletion
- Approval-gated destruction. Deleting a knowledge base or document and
forgetreturn202with a pending approval for agent (API-key) callers; session owners execute immediately. - Provable deletion. Deletes are provider-first and return a
DeletionReceiptdistinguishingprovider_confirmedfromverified. Tombstones prevent forgotten data from resurfacing through the async semantic projection. - Memory Gateway. Agent-produced memory can be routed through a proposal → review → promotion pipeline (
shadow/proposal/enforcedmodes). Review proposals in Mission Control.
Beliefs
A belief is one durable claim — the unitremember produces and recall returns. GET /v1/brain/beliefs lists them (keyset-paged); each row states the filters that produced it (status_ok, not_expired, scan_ok). The default list is the recallable set; use include_shadowed=true, status=, key=, or level= (company | team) to filter — the response echoes what it applied under applied_filters.
Beliefs carry temporal validity (valid_from / valid_to) but no retention lifecycle, and there is no agent level.
Proposals and writebacks
When the Memory Gateway is inproposal or review mode, an agent’s write becomes a proposal for a human to accept; the envelope a run submitted is a writeback.
Only
accept is approval-gated (as brain.proposal.accept): agent callers get 202 pending approval; session owners execute immediately. reject, merge, and quarantine apply directly. In IaC, promote and forget are not grantable abilities in view({ can: [...] }).
Attach and consolidate
attach is the read capsule taken before work — what the brain already knows about the goal (--since <iso8601> limits it to changes after a watermark). consolidate is the write debrief taken after — learned, decided, and open items.
naive brain metrics reports process-global counters; use naive brain status (or GET /v1/brain/ops-status) for the company view.
Not served yet
These endpoints answer501 not_configured naming what is absent:
Interfaces
- API —
/v1/brain/*(and per-user/v1/users/:id/brain/*). See the Brain API reference. - SDK —
naive.brain.*for the default brain,naive.brains.*for the collection. See the brain sub-client. - CLI —
naive brain .... See the CLI reference. - MCP — 26
naive_brain_*tools. See MCP brain tools. - IaC —
brain({...})/brains({ default, declared }). See The brain.