markdown for a .md, text for plain text, pdf-text for a PDF with the [vision] extra), and that view is
the text search reads. --normalize-with none keeps only the bytes. Registering evidence
has the details, and Declared sources is for material that keeps arriving.
Index derives the structures the query planner chooses from. Everything it writes lives under .vitruvio/, is
rebuilt from the blocks on demand, and is never knowledge. Run it again after any write; a stale index looks like an
empty one.
Search returns an evidence bundle: matching blocks, their identities, and the provenance that ties each to
its source. There is no answer field, and there will not be one. You — or the model you hand the bundle to — write
the prose, and every citation has to point at a block id the brain actually returned.
Searching is how to read a bundle without over-claiming.
Look at it
browse is the one command with no --json: it is an interface for a person. brain state is the one to run
first in any new session. inspect doctor reports stale or unbuilt indices, a partial install, a vector index built
with another embedder, tombstoned or missing blocks and an embedder this build cannot run, in one offline pass — and
with --registry, whether the registry answers. Run it after a pull and before a publish; every row says what to do.
Where next
Let a model interpret
The propose, validate, commit loop: a model proposes knowledge, the gate decides.
Material that keeps arriving
Declare where it comes from; pull only what is new.
Publish it
An OCI artifact to any registry, with the warnings that matter read first.
Several brains
One project, one repository per brain, one question across all of them.