Nothing taken from the host
The snap is strictly confined and bundles its own Python, MariaDB, Redis, Node and Nginx, so there is no library or OpenSSL conflict to resolve between distributions.
Dev Tooling
Frappe v16 as a native package
Vybench packages Frappe v16, ERPNext v16, Python 3.14, Node.js 24, Redis 7, MariaDB, Nginx and wkhtmltopdf into a single artefact you install the way you install anything else on your machine. One command on Ubuntu, Debian, Fedora, Arch, RHEL or macOS — and the services are already running when it finishes.
brew tap vyogotech/tapbrew install vybench # Datastores, then the Frappe application tierbrew services start mariadbbrew services start redisbrew services start vybench vybench bench new-site mysite.localhost --admin-password adminecho "127.0.0.1 mysite.localhost" | sudo tee -a /etc/hostssudo snap install vybench # Call it "bench" like everywhere elsesudo snap alias vybench.bench bench # Run bench without sudosudo usermod -aG snap_daemon $USER && newgrp snap_daemon vybench.bench new-site site1.localhost --admin-password admin# One "stable" suite serves both Debian and Ubuntu, amd64 and arm64echo "deb [trusted=yes] https://apt.vyogo.tech stable main" \ | sudo tee /etc/apt/sources.list.d/vybench.list sudo apt update && sudo apt install -y vybench # Installing does not start anything; setting up is a separate decisionsudo vybench-setup --site mysite.localhost --admin-password admin# Packages are built per distribution releasesudo dnf install ./vybench-16.0.0-1.rockylinux9.el9.x86_64.rpm sudo vybench-setup --site dev.localhost --admin-password admin # Reach itecho "127.0.0.1 dev.localhost" | sudo tee -a /etc/hostssudo snap install vypgbenchsudo snap alias vypgbench.bench bench cd /var/snap/vypgbench/common/benchvypgbench.bench new-site mysite.localhost --admin-password admin # Client tools come wrapped invypgbench.psql -U postgres -h 127.0.0.1The snap is strictly confined and bundles its own Python, MariaDB, Redis, Node and Nginx, so there is no library or OpenSSL conflict to resolve between distributions.
Frappe v16 requires exactly Python 3.14 and no distribution ships it — Ubuntu 24.04 has 3.12, Debian 12 has 3.11, RHEL 9 has 3.9. Vybench brings its own, so the version question never comes up.
Production runs the six services as an unprivileged account with a read-only codebase. Flip to developer mode and apps/ and env/ become real writable directories, so get-app, pip install and bench build all work.
The .deb and .rpm builds integrate with your distribution's own systemd, nginx and MariaDB. vybench-setup is idempotent — re-run it after adding a site or changing the port.
vypgbench is the same stack backed by native PostgreSQL rather than MariaDB, with psql, pg-dump and pg-restore wrapped in, tracking Frappe and ERPNext develop.
No container filesystem layer between the bench and the disk — which is the difference you feel most on a macOS workstation, where Docker I/O is the usual bottleneck.
One artefact that runs anywhere (the snap, bundling everything) and one artefact per distribution release (the .deb and .rpm, using the host's MariaDB, Redis and nginx). Both carry their own Python 3.14, because no distribution ships the version Frappe v16 requires.
On macOS, Homebrew is the only option. On Linux, take the snap if you want one artefact that behaves identically on every distribution; take the .deb or .rpm if you would rather Frappe used your distribution's own MariaDB, Redis and nginx. Each native package is built against one distribution release and is not portable between them.
stable — a single suite serves both Debian and Ubuntu, for amd64 and arm64, rather than one per distribution codename. The line is: deb [trusted=yes] https://apt.vyogo.tech stable main.
Yes — switch it with sudo snap set vybench mode=developer. That disables the managed services and materialises apps/ and env/ as real writable directories, so git pull, pip install, bench get-app, bench new-app and bench build all behave normally. sudo snap set vybench mode=production puts it back.
No. Add yourself to the snap_daemon group once — sudo usermod -aG snap_daemon $USER && newgrp snap_daemon — and vybench.bench runs as your normal user.
The same stack backed by native PostgreSQL instead of MariaDB, tracking Frappe and ERPNext develop rather than the stable v16 branch. Every service and config command mirrors vybench with the prefix swapped, and psql, pg-dump and pg-restore are wrapped in. On macOS, Homebrew currently ships the MariaDB build only.
There is no container filesystem in the way, which mostly matters on developer workstations where Docker I/O is the bottleneck. You also get ordinary systemd management, crash recovery and journald logging rather than a container supervisor. For clusters rather than single machines, use Frappe Operator instead.
The Vybench packaging and orchestration tooling is source-available under a no-derivatives license: you can read and evaluate it, but redistributing modified forks needs written authorisation. Frappe (MIT) and ERPNext (GPL-3.0) are shipped as unmodified upstream source inside the package.
Zero-config Frappe images
Pre-built, single-node Frappe and ERPNext container images that boot with a working site.
ExploreFrappe apps without a bench
Scaffold and mount custom Frappe apps from a container — no local bench install required.
ExploreKubernetes-native Frappe
A production Kubernetes operator that deploys, scales and heals Frappe and ERPNext on any cluster.
ExploreWe build and maintain these tools, and we help teams adopt them. Tell us what you are trying to ship and we will tell you honestly whether this is the right piece.
Talk to the team