Install the VS Code extension
Build it, install it, and point it at the CLI.
Written By Dustin
Last updated 15 minutes ago
The extension is not on the Marketplace yet. Installing it means building the .vsix yourself, from a clone of the TOVIO repository — the same package CI builds and attests, minus the publisher signature.
Build and install
git clone https://github.com/Tovio-VCS/tovio.gitcd toviopnpm installpnpm --filter tovio-vscode buildcd packages/tovio-vscode-extpnpm dlx @vscode/vsce package --no-dependencies --out tovio-vscode.vsixcode --install-extension tovio-vscode.vsixYou need VS Code 1.85 or newer. The extension version is whatever packages/tovio-vscode-ext/package.json says in the checkout you built from; build the CLI from that same checkout and the two are aligned by construction.
It drives the CLI
The extension contains no version-control logic and no cryptography. Every view and every action is a tovio invocation whose --json output it parses:
Two consequences follow from that:
toviomust be on the PATH VS Code sees, or you must settovio.executablePath. This is the most common setup failure, especially on macOS where a GUI-launched VS Code does not inherit your shell's PATH.- Keep the two versions close. A much older CLI may not produce fields a newer extension expects.
When it activates
The extension declares two activation events: a workspace that contains .tovio/working-copy, and onStartupFinished. It therefore loads either way, but the views only fill once it resolves a repository root — so opening a subdirectory, or a multi-root workspace where the repository is not itself a root, leaves it looking inert.
Checking
Open a terminal inside VS Code and run:
tovio --versionIt prints tovio and the version. Note that this is a flag, not a subcommand — tovio version is not a command and exits 2 with an unrecognised-subcommand error. If the flag fails inside the editor's terminal, the extension will fail the same way.
Protected files
A file covered by a protected-path policy keeps its normal A/M/D/! badge but is tinted with the tovio.sealedResourceForeground colour, and its tooltip says protected (policy). That flag comes straight from the protected[] array in tovio status --json — the extension makes no separate access call to compute it.
Whether you can read a protected file is a separate question, and it is decided in the engine, not in the editor. The extension asks the CLI for content and shows what the CLI returns; no client can present a more permissive view than your clearance allows.
Getting started
The extension ships a five-step walkthrough — install the CLI, open a repository, switch lanes, see the rationale behind a line, send feedback. Find it under Get Started with TOVIO.