- Time: about 20 minutes
- Cost: none — no API keys, no server
- You’ll need: a vouch KB with at least one approved claim (the first tutorial gets you there)
Every command in this tutorial was run end-to-end against the current build
before it went into the docs.
1. Export a portable bundle
Bundle the durable KB — claims, pages, sources, config, audit trail — into one.tar.gz:
bundle_id is a content hash of everything inside, so two bundles are
identical iff their ids match. Nothing from proposed/ (local, gitignored)
goes in — only reviewed artifacts travel.
2. Verify the bundle is intact
Before you hand a bundle to anyone, confirm every file matches its recorded hash:3. Preview the import — no writes
On the receiving machine (or a teammate’s clone), see what importing would change before touching anything:import-check diffs the bundle against the destination KB and reports what’s
new, what’s identical, and what conflicts — without writing a byte. This is the
“read the PR before you merge it” step.
4. Apply it — conflict-safe
5. Why the gate is a team property
On a solo KB, the self-approval check feels like a formality. On a shared KB it’s the safety property: it guarantees that every durable claim was seen by a second identity. An agent can’t approve its own output; a teammate can’t merge their own claim unreviewed. The actor breakdown makes the separation visible:metrics
reads purely from the audit log and the artifact files (no new state), and
--json / --prometheus give you a stable shape for a dashboard or a
textfile-collector sidecar.
For the day-to-day queue, stats is the lighter view:
6. Keep shared copies honest
A bundle is a snapshot. To keep two KBs converging:- Re-export after a review session and re-share — the
bundle_idtells recipients instantly whether they already have this exact state. - Commit
.vouch/so the canonical copy lives in git and bundles are only for out-of-band transfer. - Run
vouch doctoron the receiving side after a big import — it verifies source hashes, finds dangling references, and reports drift.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
import-apply skipped claims | Same id, different content — a real conflict. | Inspect both with vouch show / vouch diff, decide, then supersede the loser. |
export-check fails | Bundle truncated or modified in transit. | Re-export and re-transfer; never edit a bundle by hand. |
| Imported claims don’t appear in search | Derived index is stale. | vouch index (or vouch reindex) to rebuild state.db. |
| Teammate can approve their own claim | review.approver_role: trusted-agent is set. | Remove it from config.yaml for shared KBs so the gate enforces two identities. |
Next steps
- Give your coding agent a reviewed memory — point every teammate’s agent at the shared KB.
- Edit your KB as markdown in Obsidian — review and extend the KB outside the terminal.
- The review gate in depth — the full set of policies the gate enforces.