Why teams use this
Not a code assistant and not a prototype generator. You write a sentence — from a laptop or a phone — and what comes back is a working repository: tests that run, migrations with row-level security forced on, CI, and an install script. Three points in that chain stop and wait for a person, because three specific mistakes cannot be caught any other way.
◆ marks a blocking human gate. There are 3 of them across 13 stages, and nothing automated may pass one.
Two front doors, one kernel
Both run the same 13 stages, the same 3 blocking gates and the same 139 capabilities. Neither is a trial version of the other. Pick by where the work has to happen.
| build.rathvan.com the CLI and console |
the builder self-host it today, or use ours | |
|---|---|---|
| Can I use it now? | Yes. Download it and run it. Nothing to sign up for. | Yes — on your own infrastructure. It is one container; the setup steps below are the whole job. Hosted by us at builder.rathvan.com is not open yet — it is being rebuilt on its own infrastructure, and this page will link it when it is. |
| What it is | A static console and a downloadable CLI. You answer the intake, it writes the repository on your machine. | A running service you deploy. Sign in, describe the product, and it generates, reviews and opens the pull request for you. |
| Where your code goes | Your disk. Nothing leaves it. | Your Git remote, on a branch, as a pull request you review. |
| Model calls | None. The scaffolder is deterministic — same answers, same bytes. | Yes — that is what it is for. Bring your own key, or use the operator's. |
| Needs an account | No. No sign-up, no telemetry. | Yes — a token or a Google sign-in. |
| Runs from a phone | No — it writes files, so it needs a machine. | Yes. The console is the whole interface. |
| Who operates it | You. It is a file on your disk. | You. The same image we run — there is no separate "enterprise edition". |
| Use it when | You want the foundation and your team writes the features. Or your code may not leave the building. | You want the product drafted, reviewed and raised as a PR while you read it on a train. |
They compose: the hosted builder scaffolds with the same kernel the CLI ships, so a repository started in one is not a different shape from one started in the other.
Who it is for
Tenancy, row-level security, migrations, audit trails, secret handling, deploy scripts — the work nobody demos and everybody redoes, differently, per team. Here it arrives already made, the same way every time, with 109 migrations that are additive only and row-level security enabled and forced on every table that carries an owner.
And the gates are the point. Scope, production deploys and go-live each stop and wait for a named person, and unattended work has a hard ceiling at staging. That is a property you can show an auditor, not a habit you have to trust.
Auth, tenancy, billing hooks, an admin surface, CI, an install script. The CLI is free, runs offline, needs no account and calls no model — so the scaffold costs you nothing and tells nobody.
Then the same kernel takes you further when you want it: the hosted builder drafts the PRD and the design, and you approve them from your phone.
Against the tools you already know
Lovable, v0, Bolt, Builder.io and the rest are prompt-to-app tools. They optimise for the shortest path from an idea to something running that you can look at — and they are genuinely good at it. If what you need is a working prototype this afternoon, use one. This is not that, and pretending the two compete would waste your time before it wasted ours.
Fewest steps between a sentence and a preview. Starting is frictionless by design, and every part of the product is arranged around that.
Fewest surprises between a sentence and something an auditor, a security reviewer and the engineer who inherits it all accept. Starting is deliberately not frictionless: the intake refuses to begin until it has what it needs, and says what is missing.
Ask these of any tool, including this one. Our answers are on this page; theirs move quickly, so check rather than trust a table — including this table.
| The question | What the prompt-to-app category is built around | Rathvan |
|---|---|---|
| What does "done" mean? | An application that runs and can be shown. | A reviewed change — documents, a diff and a pull request a person approved. |
| How does it reach production? | Shipping is the happy path; that is the point of the product. | There is no production transition. Unattended work has a ceiling at staging, and moving past it is one of the 3 gates that names a human. |
| Can it refuse to start? | Starting fast is the whole proposition. | Yes, and it does — an incomplete intake reports exactly what is missing rather than guessing, and irreversible choices are never pre-selected for you. |
| What comes with the app you did not ask for? | Varies. Ask specifically about tenancy and row-level security. | Tenancy, 109 additive migrations with row-level security enabled and forced, audit trails, CI and an install script — the retrofit-expensive parts. |
| Where does the code live, and can you leave? | Usually theirs first, with export or a Git sync. Ask what stops working after export. | Your Git remote and your infrastructure. The CLI runs offline with no account, and nothing stops working if you never speak to us again. |
| Which model ran, and can you say no to a vendor? | Typically the vendor's choice, and not usually yours to constrain. | Your key at the head of the chain, a per-tenant policy naming vendors your work may ever reach, and a receipt saying which model actually served each step. |
| Can you run the whole thing yourself? | Generally a hosted service. | One container, the same image we run. There is no separate enterprise edition. |
The honest summary: most of what is on this page exists somewhere else. What does not is that the process is the product — the stages, the gates and the refusals are data the platform enforces, rather than a discipline your team is asked to maintain. If your problem is "we can generate plenty; what we cannot do is govern what ships", that is the gap this was built in. If your problem is "we need something running by Friday", it honestly is not.
Smart model routing
Most work in a build is not hard. Naming a file, filling a template, restating a requirement — that is not worth a frontier model, and paying one for it is most of what an AI bill actually is. Rathvan sorts each task onto a rung and starts at the bottom.
Mechanical work with a right answer. If it fails a check, it escalates rather than being accepted.
Real drafting — a design, a build spec, a review that has to hold together.
The large model given room to think. Reached by escalation, not by default.
Those three numbers are ratios, not prices, and that is deliberate. The kernel refuses to state a currency here — prices differ per vendor and change without notice, and the ladder is walked across six of them. A figure in dollars would be precise and wrong. What the ratio answers is the question a budget turns on: did routing down save roughly an order of magnitude, or roughly nothing.
Your key goes to the head of the chain and your work is billed to you. Vendor policy is per tenant: you can name which vendors your work may ever be sent to, and the router will refuse rather than quietly fail over to one you excluded.
A quota-exhausted or retired model is skipped, the next is tried, and the receipt records which model actually served each step and how much of it was a cache read. A build that fell back to a weaker model says so.
What is attached automatically
The intake maps your sentence onto a taxonomy. You review what it selected and change it — nothing irreversible is ever pre-selected for you — and the scaffolder brings each capability's tables, policies and tests with it.
The last one is the kernel's own suite, counted against a committed known-good floor that the build fails if it drops below. It is on this page for the same reason it is on the pitch: a platform that ships your tests should be willing to show its own.
Two measurements rather than an adjective. Both carry the date they were taken, because a number without one is a number that has already drifted.
Not tests you then write — tests that came with it and ran. ./gradlew build SUCCESSFUL on the output, unedited.
121–122 files and 21–22 migrations each, with the scaffolder's own plan beside them — what it copied, rewrote, generated and skipped. Read them; they are the output, not a description of it.
Time and cost
Every "70% faster" on a page like this is someone else's project measured against an unstated baseline. What Rathvan removes is specific and nameable: the foundation work before your first feature, and the review artifacts around it. Put your own figures in and the model shows its working.
What this deliberately does not model: your features. Rathvan does not claim to write your product faster than your team — it removes the part before your product starts, and the part is the same every time. It also does not model the model bill, because that depends on vendor prices this project will not quote.
Setting it up
Steps 1 and 2 need nothing from us and no account. Steps 3 onward are for running the hosted builder inside your own estate.
No account, no key, no model call. Do this before deciding anything — the output is the product.
npx https://build.rathvan.com/rathvan-cli.tgz new ./your-service
The same checks the platform runs on itself. If they do not pass on your hardware, stop here and tell us.
cd your-service && rathvan check
Postgres. Migrations are applied by a job you run, never by the service at boot — so a deploy can never half-migrate a schema underneath a running product.
DATABASE_URL=... MIGRATIONS_DIR=... sh deploy/migrate/apply.sh
DATABASE_URL, BUILDER_TOKEN (your operator credential — generate
it, do not choose it), and a model provider. Add SECRETS_KEY if you want
bring-your-own-key: without it the builder refuses to hold user keys rather than storing
them in the clear.
export BUILDER_TOKEN=$(openssl rand -hex 32)
A GitHub App installation scoped to the repositories you name. The builder opens pull requests; it never pushes to your default branch, and unattended work stops at staging.
Name which model vendors your work may ever reach. The router refuses rather than failing over to one you excluded — so this is worth setting while it is still cheap to think about.
Approve nothing. Read the PRD it drafted, and check it against what you meant. That first gate is the one that decides whether the other six steps were worth it.
Nothing here is sent anywhere. It rewrites the commands above for the deployment you actually have.
Before you decide