The box became a service
Entry 01 in the register is the oldest thing in the cluster and, until this week, the least useful to anybody else. It was one machine. The first commit, on 27.07.26, called it phone-driven Claude Code box on Fly + always-on memory Postgres, which is exactly what it was: somewhere to run Claude Code that was not a laptop, reachable over SSH from a phone, with its memory in Postgres so that closing the terminal did not throw the session away.
It worked, and the obvious next question is whether the thing you built for yourself is a thing. That question is cheap to ask and expensive to answer, so it sat for three weeks.
What it is now
cc-on-demand.com went up on 20.08.26. You sign in with Google, request a workspace, and get a dedicated virtual machine with a persistent volume attached. Your home directory lives on the volume, so repositories, credentials and Claude's own state survive restarts and image updates. The terminal is in the browser — ttyd over tmux — which means nothing to install, and a session that is still running when you come back to the tab.
Agent runs are a short wizard: pick a runtime, a model, a task and a repository. The run gets its own tmux window, so you can watch it work in the terminal rather than reading a progress bar, and its exit is recorded in the portal.
Two presets, one sized for a single Claude Code session and one for two in parallel, plus custom on request. Both park themselves when idle and wake on demand, because a box that bills while you sleep is a box you turn off and then stop using.
It is free during the beta, provisioning is behind approval, and there is no card and no checkout. There is also no price on the site. Cost per box has not been measured yet, and a price published before then would be a guess wearing a number's clothes.
The Fly network that is called nothing
Boxes have to be isolated from the control plane, so they live in a separate Fly app on their own private network, reachable one way over flycast. Setting that up means allocating a private address on a named network, and the control plane sits on Fly's default network.
$ fly ips allocate-v6 --private --app ccod-boxes --network default
Error: Could not find Network
The default network's name, in Fly's GraphQL API, is the empty string. Not default,
not absent — empty. The command that works is:
$ fly ips allocate-v6 --private --app ccod-boxes --network ""
Nothing in the error suggests that. It reads like a permissions problem or a typo in the app name, and it is neither.
The consent screen that says the wrong company's name
The control plane is a transplant of Countbean's — the same auth, session, OAuth, mail and provisioner layers, which is most of the reason v1 took days rather than weeks. The temptation was to reuse the Google OAuth client along with the code.
Do not. Google's consent branding is per-project, not per-client-id. Reusing the client would have shown every new user a dialogue reading Countbean wants access to your Google Account while they were signing in to something called cc-on-demand. That is not a cosmetic problem — it is the exact shape of a phishing screen, and a careful user would be right to close the tab. It needed its own Google Cloud project.
The sheet it is printed on
The promo site is not drawn in a new style. It is STU-07 from the plate archive, the Isotype study: Otto Neurath's rule that a larger quantity is shown by more symbols, never by a bigger one. So the page counts. A workspace is exactly three things — a real machine, a terminal in the browser, agents in one click — and the plate shows three pictograms, because there are three.
That study was an open experiment nine days ago. A production site was drawn from it, so the archive now records it as adopted. That is what the statuses in the archive are for, and it is the first time one of them changed because of a product other than this one.