uv tool install, bootstrapping uv and a
Python if the host has neither. vitruvio is nine pure-Python distributions rather than one binary, and they are
published as release assets rather than to PyPI — so uv tool install vitruvio and pipx install vitruvio do
not resolve, and the installer is the supported path. Nothing in it depends on the host’s Python.
Check the installation
~/.local/bin
and printed the line that adds that directory to PATH; run it, or open a new shell.
The installer reads four variables:
Extras
The base install carries no model. That is intentional: the default text embedder ishashing:bow, which needs
nothing, and the extras are opt-in.
Staying current
--json, under --quiet, and when
stderr is not a terminal, so it can never land in output something else is parsing. VITRUVIO_NO_UPDATE_CHECK=1
turns it off for good.
The notice never installs anything and never asks a question: a prompt after an unrelated command would hang
the first script that ran unattended. vitruvio update is where the decision lives, and it confirms before
replacing anything unless you pass --yes.
Updating re-runs the same installer, pinned to the version you were shown, rather than reimplementing it. The
--reinstall inside it is why: only vitruvio is pinned, so an upgrade that did not force it would find the
eight sibling libraries already satisfied and leave a new CLI on old packages — which then reports the old
version, because --version reads the kernel’s.
A source checkout is refused, since the installer would replace the environment the command is served from.
Use git there.
Shell completion
vitruvio would open a brain to answer, and with a vector index registered that means constructing an embedder.
Pressing Tab should not load a model.