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   # 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.3.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.3.0
File Size Uploaded Provenance Actions
erp_sandbox-0.3.0.tar.gz 130.0 kB Without provenance Details for erp_sandbox-0.3.0.tar.gz

Built distribution (wheel)

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

Total release size: 272.8 kB

Release files / erp_sandbox-0.3.0.tar.gz

Download URL erp_sandbox-0.3.0.tar.gz
Size 130.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dc84ef88a8d7e934b4fc56e8db634a409bd1150d39188af295d5ba171dbc74e9
BLAKE2b-256 checksum
How to use checksums
c9017f0f9bcc1225fe345118be90e692b428ed201ab74915896243808211783a
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.3.0-py3-none-any.whl

Download URL erp_sandbox-0.3.0-py3-none-any.whl
Size 142.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b32f384dc6f0be74c4826e38ba606734c5042df314731275a7185a68e2b83020
BLAKE2b-256 checksum
How to use checksums
eb1bd5bb30e686629a3b1461072f70100c8be19581624342a58e5b8a6fe4e558
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.3.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