productbuild & ship

rbs build //...

One command builds anything. The same way, every time.

Go, TypeScript, Python, Java, Kotlin, C, C++ and .NET from one graph, with toolchains the branch fetches and pins itself. A build that passes on your branch passes everywhere.

how you use it

Build system, in order.

01

Day one: push the repo, open a branch, build

Push your repository to the workspace and open a branch. The branch server already has rbs; there is nothing to install. The first build needs no configuration: rbs recognises Go modules, Node and Vite apps, Python packages, Java, Kotlin, C, C++ and .NET projects and generates what it needs. When you like what it made, adopt writes the same files into the repo, byte for byte.

02

Week one: declare the floor, and it holds

A test target carries its coverage floor. Below it, the build fails; nobody reads a report. Only passing results are cached, and a cached test replays its coverage and re-checks the floor. The same file declares images, migrations and infrastructure, so there is one language for the whole repo.

03

The agent’s loop: same targets, same floors

An agent in its branch runs the same test target you would. Below the floor it keeps working, because the failure is a build failure it can read. Its passing results land in the same cache as yours, and a hit is exact: the action key covers the command, the input tree, the environment and the rule.

04

Every day: hermetic by construction

Every action runs in its own content-addressed exec root with only its declared inputs and declared environment. Typed environments are checked before a build, typecheck is a target with a ratchet that only goes down, and scaffolds create new apps and services with the gates already declared.

not built yet: strict write sandboxing enforces on macOS today, not yet on Linux · building for several platforms in one invocation

The full reference lives in the docs.

works with

Boots in seconds. Your team joins with a link.