Skip to content

Docs

How Tofu works

Describe an app to Tofu’s cloud coding agent, or send the code your own coding agent wrote: either way it is checked, built and put online at its own address. Here is how, and what is deliberately not built.

Start here

You can start in the Tofu builder. Every page covers what the builder, the dashboard and your coding agent do, because all three drive the same work.

One delivery, end to end

The builder, the dashboard and your coding agent drive the same work: check the code, build it, and publish only a build that passed a health check.

  1. Import

    Code arrives from the Tofu builder's Put it online, from your coding agent (ingest), from a chat that writes the files, or from a GitHub import. An update replaces the same app's code and keeps its settings.

  2. Detect

    Deterministic — no model call, no network — returning a preset for you to confirm.

  3. Check

    Deterministic rules over the exact files about to go online: only harm to other people or to Tofu stops a deploy.

  4. Build and publish

    A READY build must answer an anonymous HTTP request before the address moves, and a failure leaves the previous version serving.

tofu · deployexample · excerpt
{
  "status": "ready",
  "managedUrl": "https://franks-kitchen-3f9a1c07b2e4.trytofu.app/",
  "serving": true,
  "publiclyReachable": true,
  "verification": {
    "access": "public",
    "httpStatus": 200
  }
}
publiclyReachable is true only when an anonymous request was served — the answer to “can a visitor open it now?”

Each step, the presets and the result your agent reads back are on Deploy an app.

Limits, and what Tofu does not do

The Free plan and the paid plans are open to everyone. For a contract, invoices or an uptime commitment (an SLA), tell us what you need.

  • What Tofu hosts. Request-driven web apps: a static site, one of the web framework presets, a Python, Go or JavaScript server app, or an app that ships its own container file. Each request is answered and the app scales to zero in between, so a background worker, an always-on scheduler of the app's own, a non-HTTP service or anything that has to outlive a single request has no path here. The way forward is a request-driven equivalent (the work behind one request, or a schedule outside the app calling it; a crons entry in the app's own hosting configuration does not register) or running that process yourself somewhere it can stay up.

  • Quotas are enforced before the work. Free has 1 app online at a time, the pages you publish and the code behind them, with 20 uploads and 20 deployments a day; a Free website can be up to 50 MB and 500 files, and an app that runs on a server can be sent as a project up to 50 MB. Starter publishes up to 5 apps with 50 uploads and 50 deployments a day. The Pro plan publishes unlimited apps with 200 uploads and 200 deployments a day. The Tofu builder's cloud coding agent is 30 minutes a day on Free, 2 hours a day on Starter, and unlimited on the Pro plan with one active session at a time (Sessions and plans). No plan has a token limit, and the fair use rules in the Terms apply. On Free, each request to your app runs for up to 60 seconds; the paid plans allow longer requests.

  • Not built yet. Notifications, the itemized deep-scan report, domain purchase, credential rotation, and analytics export.

  • Not done to your app. Tofu changes your code only when you ask the cloud coding agent to in the builder. It runs your app’s own migrations only where your Database page says so, writes no DNS without an approval you gave on your DNS provider’s own screen, and asks for no hosting-provider credentials.

  • Leaving. Your code and data stay yours: cancel and delete your projects. The uploaded source archive stays in private storage until you ask us to erase it, and a managed database is kept for you, with its transfer arranged on request. An app’s conversation in the Tofu builder is deleted when you delete the app there.

Everything above describes what is switched on today. An area the dashboard marks Soon is planned, and does nothing until it is built.