- Shell 89.6%
- Bicep 3.5%
- Python 3.2%
- HCL 2.6%
- Nix 0.6%
- Other 0.5%
Six hours after the rehearsal return one agent's pods could not reach pods on one other node while every node was Ready and every pod Running. The cron controller had also fired the missed backup schedules before the forge was up and burned their retries. primary-fabric-check.sh probes every node pair from inside a pod (--heal restarts an agent once); primary-return.sh step 6 runs it and re-runs any backup lane whose catch-up job failed. docs: return aftercare (ci-bot read-only after the org move, AGit pulls vs branch-cloning workflows, crawler policy). |
||
|---|---|---|
| .claude | ||
| .forgejo/workflows | ||
| bin | ||
| deploy | ||
| docs | ||
| genesis | ||
| recipe | ||
| scripts | ||
| wiki | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| green | ||
| ORIGIN | ||
| README.md | ||
Open Platform — grow your own software platform
Describe the software you want in plain words, and an AI build crew builds it, tests it by clicking through it in a real browser, and puts it live at a web address — on hardware you own. Your ideas go in as sentences; working tools come out as URLs.
This repo is mitosis — the part of Open Platform that hands you the whole thing. Clone it, run one command, and a complete, sovereign platform grows on your machine: your Git server, CI, registry, and build crew, with fresh keys and its own identity. Like buying the CD back in the day: it's yours. And when you're ready, your platform can seed a daughter the same way and hand someone else the same power.
Not technical? Start with the wiki's plain-language track:
The Big Idea ·
A Day With Your Crew ·
Questions People Ask.
Every platform grown from this repo carries its own copy of these pages in its
Wiki tab — the wiki ships in the seed (wiki/) and is the full
guide, from first app to platform internals.
Grow one
git clone https://git.open-platform.sh/open-platform/mitosis
cd mitosis
CLAUDE_CODE_OAUTH_TOKEN=<your-token> nix run .#up
That's the whole install. Go make coffee — the first run builds the platform from source and takes 30–60 minutes, then prints a YOUR PLATFORM card with your domain, your admin logins (Git and Grafana), and exactly how to reach everything.
You need: Nix with flakes (it brings every
other tool along), Docker with ~4 CPUs and 10 GB, host ports 80/443 free (or set
HTTP_PORT/HTTPS_PORT), and one Claude credential — CLAUDE_CODE_OAUTH_TOKEN
(subscription) or ANTHROPIC_API_KEY (API billing). You can add the credential
later; the crew idles until one is set. Linux is the tested path; macOS works on
a best-effort basis. Custom domain: DOMAIN=acme.local nix run .#up.
| First-run stage | Rough time |
|---|---|
| Create the cluster | ~2 min |
| Bootstrap the Git server | ~2 min |
| GitOps reconcile + Postgres cold start | 10–20 min |
| Build the platform's images (CI) | 15–25 min |
If a step fails, it tells you which one; the fix is almost always
k3d cluster delete plat and re-run — setup is one-shot by design.
⚠ Keep your sovereign key safe — forever. The card points at a generated
agekey file. It is the only key to every secret on your platform. Back it up somewhere offline you trust.
Use it
The card prints the exact lines, but the shape is: point your machine at the
cluster (/etc/hosts), trust the platform's CA, open https://git.<domain>,
and click Use this template on open-platform/app-template — the name
and description you type are the spec. Within a minute the crew opens the
first pull request and builds in the open; a validator browser-tests it; it
ships to https://<app>-<org>.<domain> with its own documentation in the repo's
Wiki tab, written by the crew as it built.
From there, everything is the wiki's Experience track:
Build Your First App ·
Building with Issues ·
Orgs and Planning ·
Connect Your Agent
(point Claude Code or any MCP harness at mcp.<domain> and build from your own
chair).
Run it
- Meters and levers:
https://grafana.<domain>ships from birth — fleet allocation, spend burn, and the flow-control forms. Steering the Fleet - People and access: the platform is born with one root-like admin,
plat, and one org it owns,open-platform, that holds everything the platform is made of. People get their own accounts and orgs;platis for changing the platform itself. Users, Teams and Access - When it breaks: a failed setup step → delete the cluster and re-run; agents
idle → seal a Claude credential (the card prints how); logs →
kubectl -n agents logs deploy/agents.
Reproduce it — mitosis
Your platform can have children: PLAT_PAT=<forgejo-pat> nix run .#seed
snapshots it (add PUBLISH=1 to version it into your platform's package
registry — then SEED=latest nix run .#up grows a child with no file to
carry, integrity-checked against the seed's own integration spec); anyone
with a seed and this repo grows their own sovereign platform — fresh
keys, fresh secrets, its own identity, lineage recorded. One
command puts a platform on AWS, Azure, or DigitalOcean — bare VMs, single
or 3-VM HA, one DNS record to finish: deploy/. For any other VPS, a
tunnel edge, or adding machines:
Grow Your Own Platform
and docs/deploy/hetzner-vps.md.
Under the hood
Forgejo is the whole control plane; a gitops repo is the substrate the cluster
converges on; the platform's own org (open-platform) holds the gitops, the
tool server, the crew, the app template and this repo, and the plat admin is
the one identity that can change them; the build crew runs on a
non-privileged, isolated CI pool with no escape path to your machine; every
claim is enforced by a cold-start gate that germinates a complete platform in
CI before any change merges. The honest engineering tour:
Architecture ·
Platform Internals ·
Security Model ·
CI and Builds ·
Reference
Supported by
Open Platform is supported by espodev, who build and run production implementations for teams that want one delivered. The platform itself is yours to run — nothing here requires them.