acme / engineering / what-cloud-codex-is.md3 hereDemonstration · not a screenshotsavedRead the sourceTalk to us

You are reading this as a guest·read only·2 archives in this workspace are not listed for youshared with anyone who has the link

What Cloud Codex is, in our own words.

Archive engineeringLast edited 4 minutes agoHistory 3 revisionsEditors 3Merge CRDT

This is a real note out of our own workspace, opened to the public. It is not a page about the product written by somebody in marketing; it is the page the three of us keep for ourselves, which is why there are unresolved arguments in the margin.

Dylanquestion

Are we sure about opening our own internal note to the public? People will read the arguments.

Kyle: that is the point.
openresolved

Cloud Codex is where a team writes documentation together, in real time, on hardware you own. Two people can type in the same paragraph and neither loses a word. It has GitHub inside it rather than beside it. It is source-available, so the claims on this page can be checked against the code that makes them, which is the only reason we are comfortable making them.

Everybody can be in the same paragraph

Every document is a conflict-free replicated data type. When your edit and somebody else's edit land in the same sentence, the result is defined by the data structure rather than decided by who arrived last. There is no last-write-wins, no locked section, and no dialog asking which version to keep. Those three are what people mean when they say a wiki does not really do real-time.

Kylenote

This is the one paragraph on the page I would not soften. It is the whole product.

resolved

Your keystrokes apply locally first, so typing does not stutter when the connection does. They coalesce into one binary write every 3000 ms, which is why a fast typist and a slow one cost the database the same. The readable copy that search and exports are built from is written when somebody saves. That split isa known tradeoffdeliberate, not a race, and the section further down says what it costs.

Rensuggestion

“a known tradeoff” is hedging. Say what it actually is.

resolved

Figure 01 · one sentence, 3 peoplelive · ws /collab

We deploy on green,Kyle never on a Friday,Dylan and never without a rollback.Ren

Kyle · 4 words
Dylan · 4 words
Ren · 5 words

Three people wrote that line at the same time, in the same paragraph. Nobody was asked to choose a version, and nothing was thrown away to combine them. Every other documentation tool would have made one of them lose.

GitHub is in the room, not on a webhook

Almost every documentation tool means the same thing by “GitHub integration”: a webhook, a queue, a worker, and a mirror of your repository in their database being wrong by a few minutes. We hold no copy. Every call is live and made with your own OAuth token, at the moment you look at something.

Dylanissue

Worth saying out loud that if GitHub is down, this surface is down. No mirror means no fallback either.

Kyle: added to “what it costs”.
resolved

Browse the tree, open a file and edit it here with a real commit, manage branches, open and review pull requests. Embed a block of code into a note and it stays pinned to a revision, so the quote in your document is the quote you meant rather than whatever that file happens to say next year.

Kylenote

The hunk below is the real preflight we added to update.sh after the box shipped a deploy on Node 20. Nothing on this page is invented.

resolved

Figure 02 · the repository, in the roomlive call · your token

That is a real branch and a real hunk out of this website's own deploy script, fetched when you opened this block. We hold no copy of your repository, so there is nothing here that can quietly be four minutes out of date.

Who can read this is one question, asked once

Workspaces own squads, squads own archives, archives own documents. There are 7 ways to be allowed into an archive, and they are not 7 trips to the database.

They are one SQL fragment with 7 branches, evaluated inside the query that was going to fetch the rows anyway, which is why permission checks do not get slower as your workspace fills up. The rows you may not see are never in the result to begin with. That is also why the 2 archives you cannot open are listed as ungranted rather than shown to you greyed out: we cannot list what you are not allowed to know exists.

Rennote

The locked archives in the rail are real. A guest genuinely cannot list them.

resolved

Figure 03 · 7 ways in, one questionroutes/helpers/ownership.js

1round trip. All 7 are branches of a single expression, evaluated inside the query that was going to fetch the rows anyway.

It runs on two things

One Node process holding the API, both WebSocket servers and the built front end, and one MySQL 8 container. That is the entire production compose file. No message broker, no Redis, no search cluster, no background job queue, no telemetry endpoint, and no licence server to phone home to us.

Being precise, because a short parts list is easy to overstate: it is an ordinary Node application with an npm dependency tree, the GitHub surface makes live calls to GitHub when you ask it to, and notification email goes out through an SMTP server you name or not at all. What there is none of is anything reporting back to us.

Dylanquestion

Do we need this paragraph? It weakens the one above it.

Kyle: it is the reason anybody believes the one above it.
resolved

Figure 04 · the whole system, in 5 numbersread from the checkout, 2026-08-08

3000ms

Coalesced write

A burst of typing becomes one write, so a fast typist costs what a slow one does.

7→1

Branches, one query

Seven ways to be allowed in, settled without a single extra round trip.

2

Containers, total

One Node process and one MySQL 8. That is the entire production compose file.

24

Tables

Documents, CRDT state, activity and permissions. Full-text search runs here.

0

Reporting back to us

No telemetry, no analytics, no licence check. Unplug the network and it behaves the same.

What it costs

Live collaboration state lives in memory in that single Node process. That is exactly what lets the whole system be two containers with nothing to operate between them, and it is also the ceiling: you cannot run a second copy behind a load balancer, because each would hold its own divergent copy of the same open document.

There is a second one. Because the debounced write persists the binary state only, a document a team has been editing over the socket for an hour without saving is entirely current for everybody in it and an hour stale to full-text search. Both of these are things we would rather you read here than discover in month four.

Kylequestion

Do we name the scale ceiling this early on the page?

Dylan: earlier, if anything.
resolved

What it will not do

There is no public signup: an administrator issues invite tokens, which is the right default for a company's internal documentation and the wrong one for a public wiki. There is no anonymous read, so every reader is a known account. There is no hosted tier: you run it, we will help you stand it up and build on top of it, but there is no server of ours holding your documents.

About the page you have just read

This is not a picture of Cloud Codex.

It is an ordinary HTML page that behaves like one. We have no screenshots on this website at all, deliberately, and a page that looks like software would otherwise be implying an asset that does not exist, on the one site whose whole argument is that its claims can be checked. So it says so in the bar, at every scroll position and every width, rather than here at the bottom where you would already have finished reading.

What is real

  • Every number above is a constant in the source, read from the checkout on 2026-08-08
  • The hunk is the real preflight in scripts/update.sh, at its own line numbers
  • The locked archives behave the way a real guest account behaves: not greyed out, not listed at all
  • The 7 branches are the 7 in ownership.js, in order
  • Every trade named in “what it costs” is one we would tell you on a call

What is drawn

  • The 3 cursors. They are 3 of us, and they are CSS
  • The comments in the margin. The arguments are real; the timestamps are not
  • The save indicator, which ticks on the product's actual 3000 ms but is not saving anything
  • This workspace. There is no acme, and no deploy runbook behind those archive names