When the build fails
The failure modes of a source build, what each one actually means, and the one that shows up a command late.
Written By Dustin
Last updated About 3 hours ago
Almost every failed TOVIO build is one of a small number of things. Work down this list before assuming something exotic.
Windows: a wall of linker errors
You are building under the GNU toolchain. The TLS transport (rustls over aws-lc-rs, pulled in through tovio-proto's transport feature) cannot link there, and the errors name symbols that look unrelated to TLS.
Install the Visual Studio Build Tools with the "Desktop development with C++" workload, then make MSVC the active target:
rustup default stable-x86_64-pc-windows-msvcIf you genuinely only want to try local version control with no networking, the GNU toolchain still builds the offline core on a best-effort basis — tovio-core, tovio-cli, tovio-keystore and tovio-proto with default features. It is not the supported configuration, and clone, sync, push, pull and serve are not in it.
Linux: a build script fails compiling C
You are missing a C compiler. The Linux keychain backend vendors libdbus and compiles it from bundled source, so cc has to exist. Install build-essential or your distribution's equivalent.
What you do not need is libdbus-1-dev or libsecret development headers. Vendoring exists precisely so that prerequisite is gone; a guide that tells you to install them predates that change.
Cargo refuses on rust-version
Your compiler is older than the workspace minimum of 1.75. rustup update stable is the fix. The repository pins the stable channel through rust-toolchain.toml, not a specific version, so rustup will not upgrade you on its own.
It builds, but commit fails with TVO-CORE-000
On Windows, a deep repository root can push the object store's nested paths past the classic Windows path limit, and the symptom is characteristic: tovio init succeeds, then tovio commit fails with TVO-CORE-000 and i/o error: The system cannot find the path specified. (os error 3). The failure therefore appears one command after its cause, and the root directory itself can look perfectly reasonable.
Move the repository somewhere short. Do not assume enabling the Windows long-path setting alone will lift it.
TVO-CORE-000 is the generic engine fallback, exit class 1. Reaching it anywhere else is itself worth reporting — it means a specific error code is missing for whatever you hit.
Narrowing an unclear failure
cargo build -p tovio-corecargo build -p tovio-cliBuilding the pure core first separates "the engine does not compile" from "an edge dependency does not compile". tovio-core performs no I/O and pulls in none of the platform integrations, so if it builds and the CLI does not, the problem is in the edge layer — the keychain backend, the TLS transport, or the WASM plugin sandbox.
To rule out the plugin sandbox and the parser trees entirely, build lean:
cargo build -p tovio-cli --no-default-featuresThat drops semantic, secrets and line-ops. It is a diagnostic, not a destination — secrets is the default-on secret scan, so do not ship yourself a binary without it by accident.
Stale artifacts after a toolchain change
If you changed Rust versions or switched target triples mid-stream, clear the tree once:
cargo cleancargo build --release -p tovio-cliThis is genuinely a last resort — a full rebuild of the workspace is slow, and cargo clean fixes far fewer problems than folklore suggests.