About
A developer joins on Monday. By 9:15 they are working on the client's actual project.
That sentence is the whole reason BenchPress exists. Not "installing bench is hard" — Frappe already has good tooling for creating a bench and installing apps, and if that were our problem we would have simply used it. Our problem started after the bench existed: every person who joined, and every client they moved between, needed their own working environment, and somebody senior had to build it by hand.
The situation we kept living in
Say you run a 20-person company with four clients — A, B, C and D. Each one is a different world: a different Frappe version, a different set of apps, different customisations, different data. You hire a developer to work on client B. On their first day they need client B's environment — not a generic bench, not a copy of someone's laptop. The right version, the right apps, the right data, running and reachable.
Somebody has to build that. In practice it is your most experienced developer, and it costs them half a day of setup calls, missing branches, port clashes and "works on mine". Multiply that by every joiner, every client switch and every intern who needs a sandbox for two weeks.
Monday, without BenchPress
- 09:00 New joiner arrives. Nobody has an environment for client B ready.
- 09:20 A senior developer stops their own work to set one up.
- 11:30 Wrong Frappe version, a branch that no longer exists, a port already in use.
- 14:00 Something runs locally. It does not match what the client is on.
- Day 2 The joiner is still reading setup notes instead of the client's code.
Monday, with BenchPress
- 09:00 New joiner logs in and sees the labs their team owns.
- 09:01 They click Client B — the template already pins the version, apps and data.
- 09:03 Site is live. Browser VS Code opens on the same container.
- 09:15 They are reading client B's actual code, on an environment that matches production.
- Later Moving them to client D is another click, not another afternoon.
You — the company — host BenchPress once and save a Lab template per client. The new joiner logs in, clicks Client B, and about a minute later they have a running site, a browser VS Code window attached to the container, and an address on the company's private network. Nobody senior was interrupted. Nothing was installed on their laptop.
So what is it, exactly — and what is it not?
The honest one-liner: BenchPress is an environment-handout system for teams. Bench creation is a step inside it, not the point of it.
-
Not a nicer way to run bench commands on your machine.
A place your team keeps ready-made environments, one per client or project.
-
Not something each developer installs and maintains locally.
One install, by you, on one server. Everyone else just clicks.
-
Not a hosting or production platform for client sites.
Development and demo environments — disposable on purpose, removed when the work is done.
-
Not a laptop-dependent setup that drifts per person.
Everyone on a project gets the identical container, so 'works on mine' stops being a sentence.
-
Not open to the internet with ports and proxies to babysit.
Every environment answers on your private WireGuard network, one key per device.
It is open source under AGPL-3.0, because a development tool you cannot read is a development tool you cannot trust. Run it on your own server for free, forever. When you would rather not run a server, we host it — the same code, with billing attached.
- <1 min From a new joiner's click to a working site and IDE
- 1 install On one server, for the whole team — not per laptop
- 0 Credits charged for a build that fails
- AGPL-3.0 Licensed, self-hostable, no telemetry
What we hold to
-
Show the machine
Every bench command, every log line, every elapsed second is visible. A tool that hides the terminal cannot be debugged.
-
Private by default
Environments answer on a WireGuard mesh, not the public internet. Access is a key per device, revocable in a click.
-
Meter honestly
Deploys are free, stopped instances are free, failed builds are free. Everything else lands in a ledger you can read.
-
Stay forkable
The hosted product is this repository with billing attached. If we ever stop being useful, you keep running it yourself.
How it got here
-
2024
An internal script
A shell script that stood up a bench container for whoever joined next. It broke often and only one person could fix it. -
2025
A Frappe app
The script became a control plane with a real object model — Lab templates, Bench Instances, Bench Sites, deploy history. -
2025
WireGuard and browser VS Code
Access stopped meaning SSH keys and open ports. Every environment got a mesh address and code-server on :8443. -
2026
Open sourced, then hosted
Published under AGPL-3.0. The hosted build followed for teams who wanted the tool without the server.
Want the hosted version?
Requests are read by a person, not a queue. Tell us what you plan to run.
Frappe, ERPNext, Frappe HR, Frappe CRM, Helpdesk and Frappe Learning are trademarks of Frappe Technologies Pvt. Ltd., used here only to name the software each template installs. BenchPress is an independent project, not affiliated with, endorsed by or sponsored by Frappe Technologies.