erp-sandbox
Build a containerized ERPNext development environment from a single
config.toml. Install the tool once, run erp-sandbox init, edit one file, run
one command, and get a working bench with all source editable from the host.
Linux only, podman or Docker, no root required. The command is erp-sandbox,
or sandbox for short.
Start here
| Setting one up for the first time | docs/setup.md — ~30 min, 11 of it unattended |
| Working in one day to day | docs/using.md |
| Something is broken | docs/troubleshooting.md |
| Running environments on a shared VPS | docs/vps.md |
Working on erp-sandbox itself |
docs/contributing.md |
The short version, if you have done this before:
uv tool install erp-sandbox
erp-sandbox init acme-dev && cd ~/erp-sandboxes/acme-dev
$EDITOR config.toml .erp-sandbox/secrets.env # both inside ~/erp-sandboxes/acme-dev/
erp-sandbox build
Then open http://localhost:<ports.http> and log in as Administrator with
the ADMIN_PASSWORD you set.
Already installed? uv tool upgrade erp-sandbox — one tool serves every
environment on the machine (upgrading).
What you get
Four containers, one HTTP port:
| Service | What it does | Reachable from the host |
|---|---|---|
nginx |
the only entry point — / to web, /socket.io to realtime |
yes, ports.http |
bench |
honcho running the Procfile: web, socketio, scheduler, workers | no |
mariadb |
the site database | yes, ports.mariadb, on 127.0.0.1 |
redis |
cache, queue and socketio as logical DBs 0/1/2 | no |
Everything is bind-mounted from your project directory — bench/apps/ the
cloned source, bench/env/ the virtualenv, data/mariadb/ the database. So:
- Edit a
.pyon the host and the reloader picks it up. git statusworks in every app.- No
docker cp, no rebuild to change a line.
You can run several client environments side by side, each with its own ports.
What you need
Linux, Python 3.11+ on the host, podman (rootless) or Docker Engine with its
compose plugin, git, and ~20 GB free. The container images bring their own
Python, Node and wkhtmltopdf.
The full list, with a command to check each one, is step 1 of setup.md.
Two roots — understand this first
Almost every confusing moment with this tool comes from mixing these up.
| The package | A project | |
|---|---|---|
| What | erp-sandbox itself |
one client's environment |
| Holds | templates, compose file, bench Dockerfile |
config.toml, .erp-sandbox/, bench/, data/ |
| Installed | once per machine, shared | created by you, as many as you like |
| Upgrades | replaced wholesale | never touched |
Every verb except init acts on the environment containing your working
directory, found by walking up for .erp-sandbox/ — the same way bench finds
its bench. So erp-sandbox bench console works anywhere inside a project. Use
--project DIR to act on one from outside.
Documentation
Using the tool
| First run, end to end | docs/setup.md |
| Day-to-day work, editor, debugging, teardown | docs/using.md |
| Symptom → cause → fix | docs/troubleshooting.md |
Working on the tool
| Setup, commands, rules | docs/contributing.md |
| What is decided, and why | docs/decisions.md |
| What the tool does, from the developer's side | docs/functional.md |
Architecture, config.toml schema, credentials, seeding |
docs/technical.md |
| Requirements and non-goals | docs/requirements.md |
| Acceptance checklist and the test suite | docs/testing.md |
| What changed and when | CHANGELOG.md |
License
MIT — see LICENSE. Copyright Datahenge LLC.
erp-sandbox is an independent project, built for ERPNext. It is not affiliated with or endorsed by Frappe Technologies. ERPNext and Frappe are trademarks of Frappe Technologies Pvt. Ltd.
Metadata
Release files for erp-sandbox 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| erp_sandbox-0.5.1.tar.gz | 137.0 kB | Without provenance | Details for erp_sandbox-0.5.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| erp_sandbox-0.5.1-py3-none-any.whl | Python 3 | none | any | Details for erp_sandbox-0.5.1-py3-none-any.whl |
Total release size: 286.8 kB
Release files / erp_sandbox-0.5.1.tar.gz
| Download URL | erp_sandbox-0.5.1.tar.gz |
|---|---|
| Size | 137.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b73417d9ce23737c2092e3f8a2e0b0a7b12fdb24e904b529647c8a8e4bfb2c9
|
|
BLAKE2b-256 checksum How to use checksums |
59423d2617841c171ba0a0b01773de41045e88784396bd1b44ef305c890178b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / erp_sandbox-0.5.1-py3-none-any.whl
| Download URL | erp_sandbox-0.5.1-py3-none-any.whl |
|---|---|
| Size | 149.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a1e5f7efdfca0a4c22084dfebbbd817442e3dd27aa92a33e25a194cbe4f54d7
|
|
BLAKE2b-256 checksum How to use checksums |
47bc0b4caf8e84ff07c852629a05c440f75b7369fbf0679b8051002e8071ed08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for erp-sandbox 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.