the depot

One depot. No repos to name.

Truss blends git's Merkle-DAG semantics with Perforce's single-depot model into a remote-workspace-first SCM. Mount a lazily materialized virtual worktree; author one change with a stable identity; let a layered code graph do the decomposition, review routing, and affected-set.

planned
One global depot — nothing to create, split, or nameEverything is a lazily materialized virtual worktreeThe diff is the object — one change, one stable idA layered graph: Bazel targets, Kythe symbols, a universal IRA Sapling / Mononoke / EdenFS lineage, specified in Lean + TLA+
why it's different

Two lineages, each got half of it right.

git has the model you think in; Perforce has the operational shape. Truss takes the union and discards the friction of both.

git gives a content-addressed Merkle DAG, cheap branches, an explicit commit graph — but it is welded to the working copy and does not scale to a monorepo. Perforce lets you carve a small view out of one enormous depot with thin clients — but it makes you check out, versions per file rather than as a graph, and can't rewrite history. Truss keeps both strengths: one global depot (no repos to name), everything a virtual worktree, the diff as the object, and the graph as the structure that bears the source.

There are no repos to create or name. The single largest source of incidental cognitive load in modern development simply disappears — you mount a view.

truss/DESIGN.md · one global depot

One graph, from source to build.

truss is one of 6 services in the tbzl.dev source & build layer — open at the edges, yours at the core.