Skip to main content

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 .py on the host and the reloader picks it up.
  • git status works 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.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for erp-sandbox 0.5.0
File Size Uploaded Provenance Actions
erp_sandbox-0.5.0.tar.gz 136.7 kB Without provenance Details for erp_sandbox-0.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for erp-sandbox 0.5.0
File Interpreter ABI Platform Actions
erp_sandbox-0.5.0-py3-none-any.whl Python 3 none any Details for erp_sandbox-0.5.0-py3-none-any.whl

Total release size: 286.4 kB

Release files / erp_sandbox-0.5.0.tar.gz

Download URL erp_sandbox-0.5.0.tar.gz
Size 136.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2dae6e52769a443197bb38816a3d67d511f3d6d83721f201ecdffaaa3d2f3459
BLAKE2b-256 checksum
How to use checksums
b2c1adc44bb200ac7cdbba768d2455be94471b68757dca307dcb3634a29d58f3
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.0-py3-none-any.whl

Download URL erp_sandbox-0.5.0-py3-none-any.whl
Size 149.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1690562cb3bf754a6ea6c9b72e312d15b88a0b951d530bc966f0fdfe4de1676
BLAKE2b-256 checksum
How to use checksums
2b82a81805789b6460c65ec53b56504c6b0ec4e16977b2082ff6f2763f81b9af
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.0

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page