The curator is your agent
"Curator" is a role, not a program. db.md ships no LLM runtime and
no API keys. Any agent harness you already use, whether Claude Code,
Codex, or your own loop, plays the curator role. It reads the spec,
follows the curator contract, and operates the store through dbmd
subcommands. The toolkit is deterministic file plumbing; the agent
does the reasoning.
Bring your own harness
There is no curator binary to run and no provider to configure. You load the spec into whatever agent you have and point it at the store:
That gives the agent the format, the recognized types, the curator
contract, the session lifecycle, and the validation vocabulary for the
current session. Persistent setup is harness-specific: place the
skills/db-md/SKILL.md file where your agent reads skills, or configure
the harness to include dbmd spec. Per-store overrides come from
DB.md on every operation.
The behavior contract
An agent acting as curator:
- Knows the spec, loaded into the current harness context via
dbmd specor a persistent skill. - Reads the store's
DB.mdon every session: frontmatter for identity, plus the## Agent instructions,## Policies, and## Schemassections for per-store overrides. - Warms up with
dbmd log tailto see what was done recently and avoid duplicate work. - Extracts atomic facts from new sources into
records/asmeta-type: factrecords. An email becomes ameetingrecord and acontactrecord. Every created file gets asummaryin its frontmatter. - Captures ephemeral testimony as a source, source-first. When a
fact arrives only in conversation, with no document behind it, the
agent writes a
notesource undersources/notes/(withtold_by) at the moment of the create or update it drives, so the asserted fact has an evidence record to trace to. An unsaved conversation cannot be reconstructed later; a persistent document always can. - Synthesizes conclusion records (
meta-type: conclusion) —profile,concept,playbook,theme,synthesis,accountrecords that synthesize across records and sources, with dense full-path wiki-links. Conclusion records are single-voice: one curator reconciles them. - Maintains cross-references. A person's
profileconclusion links to the contact record, the company record, and the meeting records. - Flags contradictions when two sources disagree, rather than silently picking a winner.
- Appends to
log.mdon every action and lets the write commands keepindex.mdcurrent. There is no rebuild step in the normal loop.
The agent does not delete files in sources/ (evidence the
operator deletes explicitly), does not edit DB.md (operator-owned),
and does not rewrite past log.md entries (the log is append-only).
Policies are enforced, not just remembered
The frozen pages and ignored types you declare in DB.md ## Policies
are checked by the toolkit. A write command against a frozen path fails
with a policy-refusal error, so the agent doesn't have to hold the list
in its head. It gets told when a write is out of bounds and routes
around it or escalates to the operator.
No reference binary, by design
An earlier draft of db.md shipped a curator binary with a pluggable LLM backend. That is gone. The reasoning:
- Your harness is better than ours would be. A real agent harness already has retries, observability, cost tracking, and a model you trust. A bundled reference would always trail it.
- Zero AI in the toolkit.
dbmdships no provider SDKs, no API keys, and no model calls. Keeping the intelligence in your harness keeps the toolkit deterministic and its supply chain clean. - The contract is what matters. The spec defines the behavior; the runtime is your choice.
Full contract
The complete curator contract and the six-step agent session lifecycle live in the spec: github.com/carloslfu/db.md/blob/main/SPEC.md (§ The curator contract, § The agent session).