One server per branch

A branch isn’t a pointer.
It’s a machine.

Every branch in ReasonOS boots its own server. Open it and you’re inside — terminal, CI, running processes, a preview URL, your team. Including the agents.

The branch is just the front door. Hosting, review, CI, planning, infrastructure — one system, not integrations, because underneath it is one graph.

Nothing to clone, nothing to install — no “my machine”. Chats, plans and tasks commit with the code.

feat/ledger-rewritenode up 4m 07s
insideVPSC2 people · 1 agent
node 4f22 processeslsp python · starlarkmain +3 −1

One change, end to end

It is one graph. Everything here is a view of it.

Symbols, targets, changes, clusters, plans — one structure, seven altitudes. Scroll: start at a function; finish at a deploy.

← overviewhow does the retry path workfind symbol…query answer · 1,284 symbols · 9 subsystems
retryPolicybackoffExhaustedRetryConfigCEILINGCharge.submitGateway.sendRetryAfterLedger.appendEntryidempotencyKeyClockjitter

retryPolicy is called by Charge.submit and Ledger.append, and calls backoff → Clock. Ceiling comes from RetryConfig.

double-click a node to open its file

rbs atlas query "how does the retry path work"dots sized by degree, coloured by subsystem — built locally, no model, no API key

Seven surfaces, one graph. rbs builds all of it; the control plane serves all of it.

Why now

Your stack assumes a human wrote the change. That just stopped being true.

Agents write orders of magnitude more code, and everything you have was built for human-rate change. The bottleneck isn’t writing code. It’s trusting it.

Verification is physical here

The change is a running machine — walk in, watch the failing test pass, poke it. Approve after you have seen it work.

Verdicts pin to the commit they judged and go stale on the next push. Same reviewers, same coverage floors, same gates — agent or person.

#418 · split the retry path
SCSarah Chenapproved

against a1f4c2e

new push · 3 commits · head is now 9d0b7ha
SCSarah Chenstale

the approval judged a branch that is no longer on offer

Half your day is moving code between machines. Delete the machines.

  • git clone && npm installThe branch is already running. You connect to it.
  • “can you pull my branch?”They can open it. It is one address, and you are both in it.
  • works on my machineThere is no my machine. There is the branch, and it is a server.
  • a stale .env nobody can reproduceEnvironments are declared and typed, and the node reads them.

Every project grows its own tooling. Here that is Starlark you own.

ext.rbsLoad rules somebody else wrote — no registry
rules/Write the rule you need: a file, not a fork
atlas.rbsTeach the graph a new language
rbs scaffoldEncode how you start things

It reaches across projects: rbs atlas query --workspace @acme/webapp asks another codebase a question; rbs propose files a change against it.

Why any of that is possible

None of it works unless the system knows what your change means.

All of it needs one graph holding code, tests, infra and CI. Here it is, answering the question your stack can’t: touch one function — what moves?

reasonos_monorepo_v2this repository’s real graph

You change

NavIconButtonclient/​libs/​ui/​src/​components/​TopNav.tsx

Rebuilds

/​/​client/​libs/​ui:​uidesign system

Apps affected

repositorybuild.binary · prod
editorbuild.binary · prod
settingsbuild.binary · prod
shellbuild.binary · prod
authauth · auth-prod

Suites that gate it

/​/​client/​libs/​ui:​test144 tests · 80% floor
/​/​client/​apps/​repository:​test603 tests · 80% floor
/​/​client/​apps/​settings:​test284 tests · 80% floor
/​/​client/​apps/​shell:​test119 tests · 50% floor
/​/​client/​apps/​auth:​test128 tests · 80% floor

CI runs

ci:​main /​ testTests + coverage gates
ci:​main /​ buildBuild Dev
ci:​main /​ build.prodBuild Prod

Scroll to run it — or hit Replay.

16
targets affected
5
apps rebuilt
5
suites gating it
3
CI jobs, auto-selected
0
config files you maintain

Nobody wrote that list. No paths: globs, no per-app CI files — the pipeline reads the same graph the build does.

Where this goes

One graph holds everything. So everything is the same move.

Once code, infrastructure, data and the work live in one structure, separate products become views of it. Next, not shipped — the point is how short the distance has become.

A registry of deployable modules

A module ships code and infrastructure as one target. “Start from this” is a build, not an afternoon of wiring.

A data workspace

Notebooks whose blocks form a pipeline — code, SQL, models, charts — on the same nodes branches boot.

Any datacenter as a region

Install the fabric and your own datacenter or edge rack becomes a region deploy targets can name.

An SRE that reads the graph

An agent that diagnoses production from the structure that built it — incidents connect to commits by edges, not tribal knowledge.

That is the name. OS: the layer the rest runs on. Reason: a system can only reason about your software — what a change means, what it touches — when one structure holds all of it.

Open a branch.

It boots in seconds, your tests are already running, and your team can be inside it in one click. Throw it away when you’re done.

Built with itself — this page, its control plane and the editor are targets in one graph, shipped by the system they describe.