vitruvio.toml. First one wins:
--config FILE— that file, verbatim.--project NAME— by name, from anywhere. Registered byproject initorproject register.$VITRUVIO_CONFIGor$VITRUVIO_PROJECT— the same two answers, from the environment.- The nearest
vitruvio.toml, walking up from the working directory.
--brain NAME— a brain the project declares — or--brain PATH.$VITRUVIO_BRAIN— how a container, a CI job, or one agent’s session says it without editing files.[brain].pathin the project file.- The project’s only brain, when it holds exactly one.
- What
vitruvio brain uselast recorded for this project.
--brain names a brain outside the current tree and the walk-up finds nothing, the
walk restarts beside the brain. Without it, the vitruvio.toml that brain init had just written would be ignored
by the very next command.
Selecting a brain by name
./optics directory cannot shadow the project member. Working on the
wrong brain in silence is the failure that ordering exists to prevent.
$VITRUVIO_BRAIN=optics works the same way, which is how a container or a CI job picks a subject without editing a
file. A project holding exactly one brain needs no flag at all.
Selecting the project too, from anywhere
project init registers the project’s name on this machine, so --project reaches it from any directory:
$VITRUVIO_PROJECT=coursework is the same answer from a shell profile or a container, and pairs with
$VITRUVIO_BRAIN=mechanics. Exporting both once is how one agent’s session pins itself to one subject.
Managing the registry:
vitruvio.toml, and everything about a project is
still read from there. Nothing is configured in it, so losing it costs the --project shorthand and nothing else.
There is no “active brain”
vitruvio brain use still exists, and it is now scoped to one project:
coursework reaches no other project. This used to be a single machine-wide pointer, which had two
problems: two terminals could not disagree about which brain they were on, and worse, a pointer left behind in one
project answered for a different project whose brains were all addressed by name — a write into the wrong subject,
in silence, with no undo.
So it is a per-project convenience for a shell, and nothing more. In a script or an agent, pass --project and
--brain: they are the only layers that survive being read by somebody else.
A project that declares brains therefore asks by name instead of guessing: