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.vsix

You 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:

SurfaceWhat it runs
Status bar, file badges, SCM viewtovio status --json
Historytovio log --limit <n>
Lanestovio lane, tovio switch
Policiestovio policy list
Agentstovio agent list
Audittovio audit verify then tovio audit log
Semantic Difftovio semantic diff
Rationale hover, inline blametovio blame <path> --why
Quick diff, conflict sidestovio cat

Two consequences follow from that:

  • tovio must be on the PATH VS Code sees, or you must set tovio.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 --version

It prints tovio and the version. Note that this is a flag, not a subcommandtovio 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.