Skip to content
Beta. This surface may change before GA; breaking changes are dated in the changelog.

Keep it good

A shared brain decays the same way a wiki does — unless contributing is easy and accepting is deliberate. That is what review is for.

Everything an agent proposes waits here with the passage behind it. Settle it in app.nicia.ai, which shows the diff and the source side by side, or over the API:

Terminal window
curl "$API/v1/brains/team:acme/changes?status=staged" \
-H "authorization: Bearer $NICIA_KEY"
curl -X POST "$API/v1/brains/team:acme/changes/chg_44a1e0/approve" \
-H "authorization: Bearer $NICIA_KEY" \
-H "content-type: application/json" \
-d '{}'
curl -X POST "$API/v1/brains/team:acme/changes/chg_51c8b2/reject" \
-H "authorization: Bearer $NICIA_KEY" \
-H "content-type: application/json" \
-d '{ "reason": "Shipped to staging, not prod" }'

Both settle calls take a JSON body, so send at least {}. On approve, {} settles the whole change; naming records or fields settles part of it.

You are always approving evidence, not an assertion. If a proposal has no passage behind it, that is itself a reason to reject it. See Review for the full model.

mode sets the policy default, not a per-write override. On an open Brain most writes land immediately; on a reviewed one most agent writes wait, but your own edits and additive schema still land, and destructive changes always wait on both modes. No credential can ask for an exception, because an exception a caller can request is an exception an agent can request. When a service genuinely needs to write straight in while people’s agents are reviewed, give it its own Brain and read across both. See Review.

Nicia’s built-in Brain Agent reads what has landed and proposes maintenance: contradictions between two documents, pages that have gone stale, questions people keep asking that nothing answers.

Terminal window
npx nicia tend team:acme # or POST /v1/brains/team:acme/tend
Proposed 4 changes:
· handbook/oncall.md contradicts notes/2026-07-02-oncall-change.md
on the escalation path
· 3 documents reference "Project Mercury" — no page defines it
· handbook/pricing.md last updated 2026-01-14, cited 41 times since

It always proposes and can never write directly. Run it on a schedule and the queue becomes a to-do list for keeping the brain honest.

For the questions your team asks constantly, keep a maintained answer rather than re-deriving it every time. Install the standing-answers schema pack with POST /v1/brains/{id}/schema-packs and { "packId": "standing-answers" }. That one is a console-plane call, not part of the Brain API: it takes the Brain’s platform id — the id field PUT/GET /v1/brains/{handle} returns — rather than the handle, and an organization key with an explicit x-organization-id header rather than a Brain key. Once it is installed, the console’s Pages rail pins a “Standing answers” group above source material, with pending updates routed to Review like any other change.

Installing the pack gives you the kinds, not the maintenance. The maintenance agents and the rebuild automation are configured separately — the Brain’s maintained-knowledge panel in the console walks through that setup and reports what is still missing. Once it is complete, Nicia keeps the answer current as the underlying documents change and tells you when the sources behind it move, so a stale answer becomes a review item instead of a wrong answer.

Export the whole Brain, any time, in the format you brought it in. One click from the Brain menu in app.nicia.ai (“Export brain”) downloads the .zip directly.

You arrived with a folder. You leave with a model.

You get markdown files with your frontmatter intact and the folder structure preserved, plus index.md cataloguing every page, log.md as a greppable activity log, and an AGENTS.md describing the Brain’s own conventions so any agent can pick the export up and work with it. No proprietary format, no lock-in, no support ticket.

That one-click export carries your documents, not your accepted state. The .zip it downloads includes records.json, evidence.json and history.json, but the first two come out empty and history.json carries a single genesis entry per document rather than its revision chain. Typed records, the evidence behind them, every historical version’s bytes, and the real per-document history are what the bulk export job assembles — the same job the aside above names, which has no console button yet. Ask us to run one until it does.

That is the point of the boundary being ours and the knowledge being yours: what leaves is structurally better than what arrived, and it is legible without us.

  • Review — the API underneath the queue.
  • Receipts — proving what an answer was based on.