Most hosting charges you for how busy a machine was. We count the jobs your software actually finished, and put both numbers on every screen so you can see the difference. Nothing is running yet: the direction was ruled on 2026-09-14 and this page says exactly what is built and what is not.
Read the rulingInspect the source
Or open the console — it runs here in your browser, on invented data, and connects to nothing.
Two machines are given the same jobs. The one on the left is kept evenly loaded, which is how hosting is usually run, and it spends most of its day shuffling work between machines. The one on the right leaves work where it can get on with it. Both look busy. Only one of them is getting anything done.
This runs a seeded model in your own browser. The figures are generated, not measured, and no number in it is in the page the server sent you. It is here to show the shape of the argument, not to report on anything.
Jobs your software actually completed, counted one by one. How busy our hardware was is on every screen and on none of the charges, because that is our problem to solve and not yours to fund.
If we move your service to a different machine, it keeps its name and its history. Nothing on your side has to be reconnected and nothing that points at it goes stale.
Something you are not using keeps its data, its settings and its permissions, and stops costing you for work, because it is not doing any. You pay a small amount to keep it, and nothing to run it.
Run on the machines we rent and you pay what we pay for them, listed separately. Bring your own and that cost never appears on our invoice at all.
A working operator console and a client view, on this page, running a seeded fleet in your own browser. It is here because a claim about billing is easier to argue with when you can see the screens it would have to appear on.
It runs a seeded fleet in the visitor's own browser and connects to nothing. No locus exists, no transition has been admitted, no invoice is real, and every figure in it is a placeholder until a kernel counts transitions under load.
Utilization is on every screen of the console and on none of the charges. Charging for it would mean charging you for our own scheduling.
| Line | Unit | Why |
|---|---|---|
| Plan | per month | the shape of the account |
| Residency | per locus per month, dormant or not | a dormant locus is fully live — it holds its state, its grants and its seal, and we hold them for it |
| Admitted transitions | metered | the work the customer's world actually did |
| Carrier | passed through, or nothing on a carrier the customer owns | somebody else's machine, at what it costs |
| Utilization | never billed | it is a fact about our placement, not about their work — a carrier can sit at full utilization and admit nothing |
There is no rate on this page and there will not be one until a kernel counts admitted transitions under load. The measured production floor is a few hundred cycles per transition, so a million of them is a fraction of a second of one core, and a price is not derivable from that yet. Every figure in the console prototype is a placeholder for exactly this reason.
The words belong to a published pattern catalogue, not to this page. A host that invents its own words for what it sells can move them whenever the product moves; these are fixed somewhere this domain does not control.
The thing you deploy and the thing you are billed for. It keeps its data, its permissions and its history across restarts, and it is not the same thing as the machine it happens to be running on today.
The machine underneath — a Cloudflare container, a Hetzner box, or a machine in your own building. Rented or owned, swappable, and never your identity. Change it and what you deployed is unchanged.
Your service's name, worked out from what it is rather than from where it is. That is why moving it cannot change it, and why a link to it does not rot when we move it.
One step your software actually took. It is the unit on your invoice and the unit our own reports are measured in, so the number you are charged on is the number we are judged on.
Cloudflare for everything, with Hetzner as hosted capacity, ruled 2026-08-15 and narrowed since. Naming any other provider needs that ruling revisited, and the publication gate refuses a page or a panel that draws one.
containers, the default
hosted capacity
a machine in their own building is a carrier like any other, and on that arrangement the carrier bill never reaches our invoice
A single status for this domain would be a lie in one direction or the other. One of these is a document written this week, one is an application on this very page running invented data, and the rest is tested code built for a product this site no longer sells.
The ruling record: what a locus is and what a carrier is, the claim the pricing makes, which carriers may be named, what would have to become true before any of it is real, and what this site may and may not say while none of it is.
The operator console and client portal, served as routes on this page rather than as a second site: the fleet, a locus and its seal, a rehome, a refusal, the interventions log, and an invoice that prints utilization as a diagnostic. Its stylesheet is scoped so it cannot reach the served home view.
A Postgres schema with row-level security, RPCs and cron, plus 6 edge functions, built for the agent-deployment direction this domain abandoned. Nothing in the ruling uses it, and whether it is kept, archived or deleted is an open item.
Vite, React and TypeScript against a Supabase client, with agent, deployment, invocation and telemetry views for the same abandoned direction. Its hostname was withdrawn; the code and its tests remain.
12 documents: the ruling, the superseded service-management plan it replaced, and the v1 set written for the abandoned direction — API contracts, the runtime provider interface, the data model, security, observability and billing, the testing plan and the protocol integration.
Each card names what is missing and what would clear it. The word simulated below is the literal string the older deploy function writes into its provider reference, and the line that writes it is in the evidence table.
The unit on the invoice does not exist yet. The enforcement kernel is a specification under review with no admitted implementation, and the measured production floor is a kernellet rather than a hosted service.
Nothing places a locus on a Cloudflare container, a Hetzner box or anything else and returns what happened. The older deploy function inserts a database row and writes a simulated marker into the provider reference, on the line this page cites.
That a locus keeps its identity across carriers is the claim this direction rests on. It is argued on paper and shown in the prototype against invented data. Nothing has moved a live locus and compared the seal either side.
There is no rate on this page and the prototype's figures are placeholders. A price per admitted transition is not derivable until a kernel counts them under load, and quoting one before that would be inventing the number this whole direction exists to make honest.
Locus hosting is bought by someone building on ComputeDriven, and today that is nobody outside this tree. The site therefore asks a visitor to read and to argue, and offers nothing to buy.
Until 2026-08-16 this repository published a page selling a multi-runtime agent deployment platform over a control plane labelled with the name of a database it has never depended on. The claims were removed rather than softened, and they are quoted here so that removing them stays checkable. A new domain name does not retire a retraction.
The 8 strings below were on this page. The publication gate counts each one on the emitted artifact and refuses the build if any occurrence appears outside this paragraph — or inside a comment or an attribute, where a reader cannot see it and a search engine can. That is what makes this a retraction rather than an intention.
multi-runtime AI agent deployment platform— The meta description and the hero subtitle. Neither runtime was wired to anything.
deploy to Cloudflare Workers or AWS Bedrock AgentCore— The hero's second sentence. The deploy function writes a row and stops.
AgentCore for enterprise— Said twice, in the stack diagram and in the plane description.
from ampersand.json to production— Nothing in this repository or its edge functions reads an ampersand.json.
All systems operational— A footer badge with no status source behind it. It was a decoration shaped like an instrument.
Launch Dashboard— Pointed at a dashboard host whose backend project had already stopped resolving.
Open Dashboard— The same target, in the hero.
Launch App— The same target, in the nav.
Two of them are worth naming again. The control-plane box was labelled Convex, and this repository has never depended on Convex — the only trace of it in any manifest is an extraneous lock-file record for a workspace that is not on disk — while the plane it labelled runs on Postgres. And the footer carried a live-looking status badge with no status source behind it at all: a decoration shaped like an instrument, which is the same defect as a number read out of an animation, and this page now carries a rule against both.
What replaced them is smaller and checkable. The claims that remain each cite a file and a line, the build re-opens every one of those files and refuses to emit the page if a cited line has stopped saying what it is quoted as saying, and the rung this surface holds is ? rather than a flattering guess.
File probes, not prose. The build opens each file, checks the cited line still says what it is quoted as saying, and refuses to emit on any disagreement — so if somebody wires a carrier adapter up, this page stops building rather than going quietly out of date.
| What is being claimed | Where it is settled | What is there |
|---|---|---|
| Nothing is shipped to a runtime | ampersand-supabase/functions/webhost-deploy/index.ts:94 | // TODO: Actual Cloudflare Workers API call goes here. |
| The deploy writes a marker instead | ampersand-supabase/functions/webhost-deploy/index.ts:107 | : { simulated: true }), |
| invoke/v1 answers from a model provider | ampersand-supabase/functions/webhost-invoke/index.ts:11 | import { invokeOpenRouter, invokeOpenRouterStream } from "../_shared/openrouter.ts"; |
| AgentCore is an enum member | ampersand-supabase/migrations/020_webhost_schema.sql:16 | create type webhost.runtime_provider as enum ('cloudflare', 'agentcore'); |
| ...and an option in a select element | apps/web/src/components/AgentsPage/AgentsListPanel.tsx:209 | <option value="agentcore">agentcore</option> |
| The workspace declares packages/* and there is none | packages/ | no such directory |
| Nothing reads an ampersand.json | apps/ and the webhost edge functions | 0 source files mention it |
| No AWS or Bedrock package anywhere | 2 package.json files, node_modules excluded | 0 dependencies match /aws|bedrock|agentcore/ |
| No Convex dependency in any manifest | 2 package.json files, node_modules excluded | 0 dependencies match /convex/ |
| webhost edge functions | ampersand-supabase/functions/ | webhost-activate-deployment, webhost-billing-webhook, webhost-delegated-invoke, webhost-deploy, webhost-invoke, webhost-telemetry |
| webhost database migrations | ampersand-supabase/migrations/ | 020_webhost_schema.sql, 021_webhost_rls.sql, 022_webhost_cron.sql, 023_webhost_rpc.sql, 024_webhost_extra_tables.sql, 025_webhost_openrouter.sql |
| specification documents | docs/spec/ | 00_MASTER_SPEC.md, 10_API_CONTRACTS.md, 20_RUNTIME_PROVIDER_INTERFACE.md, 30_DATA_MODEL_SUPABASE.md, 40_SECURITY_SECRETS_COMPLIANCE.md, 50_OBSERVABILITY_BILLING_LIMITS.md, 60_TESTING_ACCEPTANCE.md, 70_AMPERSAND_PROTOCOL_INTEGRATION.md, 80_SERVICE_MANAGEMENT_PILOT.md, 90_LOCUS_HOSTING.md, README.md, REALIGNMENT_PLAN.md |
| tests passing | npm test — vitest, in this repository | 143 tests across 12 files, 0 failures |
Each row was produced by opening the named file during this build and searching it for the string the row is about — the line number is where it was found, and the third column is that line, trimmed. The absence rows are the same mechanism run backwards: every package.json in the repository is parsed and its dependency names searched, and a single match refuses the build. The test row is not quoted from anywhere: the build runs the repository's own test command, parses the summary it prints, and refuses if a single test fails or if the summary cannot be parsed. Frozen in records/evidence.json and compared on every run, so a value that moves has to be looked at by a person before it can be published.
There is no plan to take and no rate to compare, because no rate is derivable yet. At these rungs the honest asks are to read the ruling and argue with it, open the console and disbelieve it, and tell us where a claim above does not hold.
? for the first time. Nobody has written one, on either side of the interface.npm install && npm test. They belong to the dashboard of an abandoned direction; the count on this page is whatever that command printed when the page was last built.Most of this page is a list of things that do not exist yet. A claim that does not hold, a file that no longer says what it is quoted as saying, a wrong count, or a step in the pricing argument that does not follow — that is the most useful thing anyone can send.
It posts to Formspree, which is a third party and the only one this page hands anything to; nothing is sent until you press the button. If you would rather not use it, open an issue instead — both reach the same person.