BenchPress and Frappe Pilot.
Pilot looks after a server. BenchPress looks after the people asking it for environments. Both are early, both are open source, and they are not competing for the same job.
What Pilot is
A server manager for Frappe, in the framework's own organisation under AGPL-3.0 and installed with a curl script. It raises an admin UI on port 8002 and manages the whole life of a bench and its sites — create, update, rename, back up, restore and drop — with an app marketplace built in.
One bench.toml is the source of truth for all of it: the apps and their branches, MariaDB, Redis, the worker queues, nginx, gunicorn, Let's Encrypt, S3, the firewall and the WAF. It describes itself as experimental. BenchPress calls itself alpha. Neither is a safe place to put something you cannot afford to lose.
The two, side by side
Read the first four rows as the case for Pilot. It wins them, and it should.
| Frappe Pilot | BenchPress | |
|---|---|---|
| Maintained by | Frappe Technologies, in the framework's own organisation | One author, outside it |
| Production | Yes. nginx, gunicorn, systemd or supervisor, Let's Encrypt, a WAF | No. Development and demo environments only |
| Looking after the server | Backups to S3, a firewall, monitoring, site restore and rename | None of it. BenchPress is not a server manager |
| Installing apps | A marketplace in the admin UI, and `bench.toml` behind it | The app list on a lab template. There is nothing to browse |
| Maturity | Experimental, by its own description | Alpha, by its own README |
| What it manages | One bench and its sites, on one server | Many isolated benches, one per person who asked |
| Whose environment it is | The server's. One `bench.toml` describes it | The requester's. One template, deployed once per person |
| Who has access | One admin password for the admin UI | Roles and ownership: users see their own, admins see everything |
| Reaching a site | A public domain with Let's Encrypt, or the admin port | A WireGuard address per environment, one revocable key per device |
| Editing the code | Not its job. You bring an editor to the server yourself | Browser VS Code inside the container that serves the site, shareable |
| Throwing one away | Dropping a site from a bench you are keeping | Destroying the environment — the container and the databases with it |
| Cost when idle | The bench and its sites stay up, because that is the point | Leases and metering. An unused environment can be reclaimed |
Stay with Pilot if
- You are running one bench with real sites on it, and it has to stay up.
- You want backups, TLS, a firewall and monitoring looked after for you.
- You would rather trust something inside Frappe's own organisation. That is a fair instinct.
- Nobody is asking you for an environment of their own.
BenchPress earns its place when
- Each person needs a bench of their own, not another site on the one you already run.
- Four clients means four app stacks, on four different Frappe versions.
- The environments are disposable — made for a task, destroyed when it is done.
- A beta has to be reachable by the team and by nobody else.
- You want a browser editor you can hand to somebody, not a server you have to trust them on.
A server, or the people on it
Pilot manages a server. It knows about one bench, its sites, its nginx, its certificates and its backups, and bench.toml is the single file that describes all of them. That is the right shape for something you intend to keep.
BenchPress manages requests. Its unit is not a server but a person: somebody needs the client's stack, they get a container of their own with a private address and a VS Code window, and it goes away when the task does. The two barely overlap, and the overlap they do have — creating a bench, installing apps — is the part Pilot does better.
Questions people actually ask
Is BenchPress a replacement for Pilot?
No. Pilot manages a server and the sites you keep on it; BenchPress makes disposable environments for people. If the problem is “this bench must stay up and be backed up”, Pilot is the tool. If it is “four people each need a different client's stack by Monday”, BenchPress is.
Pilot comes from Frappe and BenchPress does not. Why use BenchPress?
Because they answer different questions, and only one of them is about handing an environment to another person. Where the two overlap — creating a bench, installing apps — Pilot is the safer choice, and the table above says so.
Can I run both on one host?
In principle yes: Pilot manages the bench you keep, and BenchPress installs into a Frappe bench and drives Docker beside it. Nobody has tested the combination, so treat it as untried rather than supported.
Does BenchPress do backups, TLS and monitoring?
No. Those belong to an environment you mean to keep, and BenchPress builds environments you mean to throw away. The host itself is yours to look after, and the self-host page lists what that involves.
Both are early. Which is the safer bet?
Pilot, for anything you would be sorry to lose: it is experimental, but it sits in Frappe's own organisation. BenchPress is alpha, and a lab user holds root inside their own bench — which without a user-namespace boundary is root on the host. The install page says so before anything runs.
See what running it takes.
The preconditions, the real commands and the six things that break on a first install are on one page. If what you actually need is one bench kept alive and backed up, Pilot is the better place to spend the afternoon.