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 git+https://github.com/Datahenge/erp-sandbox.git
erp-sandbox init acme-dev && cd ~/erp-sandboxes/acme-dev
$EDITOR config.toml .erp-sandbox/secrets.env
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.2.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.2.0
File Size Uploaded Provenance Actions
erp_sandbox-0.2.0.tar.gz 123.5 kB Without provenance Details for erp_sandbox-0.2.0.tar.gz

Built distribution (wheel)

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

Total release size: 259.9 kB

Release files / erp_sandbox-0.2.0.tar.gz

Download URL erp_sandbox-0.2.0.tar.gz
Size 123.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2fff9ebfcec9d63dc1a368169b37af6c640e1f7da0457faf212e85a2ed056e07
BLAKE2b-256 checksum
How to use checksums
107ceb733bcf58b2e10cc7301cd95d11eb457738263272976ac1e0c814a19c40
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.2.0-py3-none-any.whl

Download URL erp_sandbox-0.2.0-py3-none-any.whl
Size 136.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
47a9d9d6007a7704d6ecbb05b76ce3738ebf8abbd8e84957fb434249a0b2c0db
BLAKE2b-256 checksum
How to use checksums
8b41813a2a5a72846136d0d439b90470abd2f3b6972107bc9c1ea8f4c7c84f46
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.2.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