machine-readable, top-to-bottom checklist for an assistant dropped into a
fresh project. every step is a concrete vouch command plus an assertion on
its output. if a step fails, stop and fix it before continuing.
this doc is for agents. humans should start with getting-started.md.
-
confirm
vouchis onPATH:vouch --version
assert: prints a version string and exits 0.
-
cdto the project root you are wiring (the tree that will hold.vouch/).
vouch install-mcp --listassert:
- exits 0.
- prints a bullet list of adapter names (for example
claude-code,cursor,codex,windsurf,zed). - your host name appears in that list. if it does not, stop — pick the closest
supported adapter or wire
vouch servemanually per transports.md.
replace <host> with the name from step 1.
vouch install-mcp <host>optional flags (all real — verified against cli.py):
--tier T1|T2|T3|T4— how much to install; tiers stack (defaultT4).--path <dir>or--target <dir>— project root to write into (default.).--no-init— do not bootstrap a KB when.vouch/is missing.
when no .vouch/ is discoverable at or above the target, this command
bootstraps one first (same path as vouch init; staging-dir hosts like
claude-desktop are exempt) — expect a No .vouch/ found — initialised KB at … line in that case. re-runs are flat-noop: expect lines containing
written, appended, merged, or skipped. you may run this command
unconditionally on every session start.
assert: exits 0; no error: lines.
vouch capabilitiesassert on the JSON object:
.nameis"vouch"..review_gatedistrue..methodsincludes at least:kb.propose_claimkb.list_pendingkb.approve
(kb.approve is exposed for trusted hosts; agents must still not call it —
see step 6.)
step 2 already bootstraps the KB when it is missing, so normally there is
nothing to create here. if you wired with --no-init (or skipped step 2):
vouch initassert: prints a path under the project and creates .vouch/config.yaml.
if .vouch/ already exists:
vouch statusassert: prints KB at … with artifact counts and a pending: line.
create a throwaway citation file and register it:
printf 'vouch agent install smoke test\n' > /tmp/vouch-agent-smoke.txt
vouch source add /tmp/vouch-agent-smoke.txt --title "agent smoke test"assert: prints a 64-character hex source id (sha256 content address).
propose a claim citing that source (replace <source-id>):
vouch propose-claim \
--text "vouch agent install smoke test passed." \
--source <source-id> \
--type observation \
--confidence 0.9assert: prints a proposal id (for example 20260707-…).
confirm it is pending:
vouch pendingassert: lists the proposal id from the previous step with [claim].
stop — this step is for the human reviewer, not the agent.
the agent must not run vouch approve, must not self-approve, and must not
hand-write files under .vouch/claims/, .vouch/pages/, or other decided/
paths. proposals live in .vouch/proposed/ (gitignored) until a human decides.
the human runs:
vouch approve <proposal-id> --reason "agent install smoke test"
vouch statusassert: vouch status shows the durable claim count incremented by one
compared to the count before step 5.
- call
vouch approveorkb.approve— the review gate is human-held. - write yaml or markdown directly into
.vouch/claims/,.vouch/pages/, or other approved artifact directories. - skip citation: every
propose-claimneeds at least one--sourceid.
- human-oriented walkthrough: getting-started.md
- protocol and method shapes: ../SPEC.md
- host-specific manifests: ../adapters/