You'll go from a one-sentence description to a live, signed-in, production app at its own URL — in about ten minutes, without writing code. Here's the whole arc, step by step.
1. Use this template
Open plat/_app-template and click Use this template.
Pick an organization as the owner — apps are org-owned on this platform (the registry delegates package-write through org teams). If you don't have one yet, create a personal org like <you>-apps first.
2. Name and description ARE the spec
There is no spec document. The repo name becomes your app's name, and the description is the entire v1 brief the builder works from. Write a real sentence, not a placeholder — better spec, better v1.
Plain:
a quick poll app: create a question, vote once, see live results
Ambitious:
a reading-group tracker: members propose books, vote each month, log chapter progress, and see a group timeline of finished books with short reviews
Click create. That's your last required action.
3. The first pull request opens within a minute
An agent picks up the fresh repo and opens the first pull request (PR #1) on the prime branch, titled 🏗️ v1: <app>. It builds v1 in public: you watch commits land, and the agent posts a link to a live preview environment — a real deployment with its own database, its own URL, its own sign-in. It also writes your app's documentation as it builds: the repo's Wiki tab gets an overview and whatever pages the app earns (API, data model, runbook), published automatically on merge and kept current by the crew as the app evolves.
While the 🏗️ prefix is on the PR title, comments on the PR steer the agent. "Make the results a bar chart" or "one vote per signed-in user, please" — say it and the agent adjusts mid-build.
4. The validator gives one verdict
When the 🏗️ prefix drops, a validator takes over. It signs into the live preview with a real browser, exercises your core flows, probes security, and posts exactly one verdict comment:
| Verdict | What happens |
|---|---|
✅ Ship it |
Auto-merges and releases v1 |
⚠️ Ship with nits |
Also auto-merges and releases v1 |
❌ Blockers found |
The agent goes back to fix it (bounded retries, then hands to you) |
5. Your app is live
On a ✅ or ⚠️, the PR auto-merges and v1 releases to:
https://<app>-<owner>.espoautos.com
Forgejo OAuth sign-in works out of the box, the app has its own Postgres, and metrics are already flowing. Open the URL and use your software.
What's happening underneath
One aside for the curious: the repo's Actions tab shows the machinery. check runs lint, typecheck, build, and a boot smoke-test on every push — a red check stops anything from shipping. preview builds each PR and provisions its environment at https://pr-<N>-<app>-<org>.espoautos.com (own database, own OAuth app; torn down when the PR closes). release fires on a version tag and ships the image and chart that Flux rolls to production. Everything runs on the platform's isolated, non-privileged CI pool — see CI and Builds when you want the details.
Keep going
v1 is a starting point. From here, issues are your roadmap and agents are your build crew: open an issue describing what you want, add the agent-work label, and an agent builds it on a branch, opens a PR with a live preview, and the same validator gates it.
That loop — writing good issues, steering with comments, wiring dependencies between them — is the next page: Building with Issues. When you're ready to describe a whole product instead of one app, see Orgs and Planning. And for API keys your app needs, see Secrets and Config — never paste credentials into issues.
For everyone
Experience
Operate
Under the hood
Grow
This wiki ships inside plat/mitosis (wiki/) — edit it there, not here. Grown by the platform it describes.