Bench Manager
A lightweight web UI for managing multiple Frappe bench instances on a single server.
- Author: hamzahabeeb
- Repository: https://github.com/hamzahabeeb/bench-manager
- GitHub stars: 21
- Forks: 11
- Category: Developer Tools
- Maintenance: Actively Maintained
Install Bench Manager
bench get-app https://github.com/hamzahabeeb/bench-manager
Add the Frappe Gems badge to your README
Maintain Bench Manager? Paste this into your README:
[](https://frappegems.com/gems/apps/hamzahabeeb/bench-manager)
About Bench Manager
# Bench Manager
A lightweight web UI for managing multiple [Frappe](https://frappeframework.com) bench instances on a single server.
## Features
- **Dashboard** — view all benches in one place with live status
- **Start / Stop** benches with one click
- **Live logs** — tail `web`, `worker`, `scheduler`, and `error` logs in real time
- **Site management** — create, drop, migrate, install apps, and back up sites
- **Backup download** — trigger a backup and download the files directly from the browser
- **Create / Delete** benches (runs `bench init` with live output)
- Auto-detects the `bench` executable (searches virtualenv, PATH, `~/.local/bin`, macOS user installs)
## Requirements
- Python 3.10+
- One or more Frappe bench installations
> Node.js is **not required** to run the app — the frontend is pre-built and included.
> Only needed if you want to modify the frontend source.
## Quick start
```bash
git clone https://github.com/hamzahabeeb/bench-manager
cd bench-manager
# edit the config (add the folder under which all your benches are present in line with BENCH_MANAGER_BENCH_ROOT)
nano .env
# Start the server (creates venv and installs deps automatically)
./run.sh
```
Open **http://localhost:8500** in your browser.
## Frontend development
The production build is served directly by the FastAPI server. For live-reload development:
```bash
# Terminal 1 — backend
./run.sh
# Terminal 2 — frontend dev server (hot reload at :8080)
cd frontend
npm install
npm run dev
```
Open **http://localhost:8080** — API calls are proxied to the backend.
To rebuild the frontend for production:
```bash
cd frontend && npm run build
```
## Configuration
All settings are read from environment variables (or a `.env` file in the project root):
| Variable | Default | Description |
|---|---|---|
| `BENCH_MANAGER_BENCH_ROOT` | `$HOME` | Directory scanned for bench instances |
| `BENCH_MANAGER_HOST` | `0.0.0.0` | Host to bind the server to |
| `BENCH_MANAGER_PORT` | `8500` | Port to listen on |
| `BENCH_MANAGER_SECRET_KEY` | `change-me` | Secret key (change in production) |
| `BENCH_MANAGER_BENCH_CMD` | _(auto-detect)_ | Full path to the `bench` executable |
### Bench discovery
A directory is recognised as a Frappe bench if it contains all three of:
- `Procfile`
- `apps/`
- `sites/`
By default every directory under `$HOME` is scanned. Set `BENCH_MANAGER_BENCH_ROOT` to a different path if your benches live elsewhere (e.g. `/home/frappe` on a production server).
### `bench` executable
The app searches for `bench` in this order:
1. `BENCH_MANAGER_BENCH_CMD` env var (explicit override)
2. `/env/bin/bench` (bench virtualenv)
3. `bench` on `$PATH`
4. `~/.local/bin/bench` (pip user install — common on Linux)
5. `/opt/homebrew/bin/bench` (Homebrew — macOS)
6. `~/Library/Python/X.Y/bin/bench` (macOS pip install, tries Python 3.9–3.13)
## How it works
```
Browser → FastAPI (:8500) → Frappe bench processes
↓
frontend/dist/ ← built Vue 3 + Frappe UI SPA
```
- **Backend**: FastAPI + psutil for process management; Server-Sent Events for live log/job streaming
- **Frontend**: Vue 3 + [Frappe UI](https://github.com/frappe/frappe-ui) component library + Tailwind CSS
- **Process manager**: [honcho](https://honcho.readthedocs.io) (auto-installed per bench if missing)
## Tech stack
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, uvicorn, psutil, sse-starlette |
| Frontend | Vue 3, Frappe UI, Tailwind CSS v3, Vite |
| Process management | honcho (Procfile runner) |
## License
MIT
Related Developer Tools apps for Frappe & ERPNext
- Frappe — Low code web framework for real world applications, in Python and Javascript
- Frappe Docker — Docker environment for developing, deploying, and running Frappe applications (ERPNext and custom apps) in production and development
- Builder — Craft beautiful websites effortlessly with an intuitive visual builder and publish them instantly
- Bench — CLI to manage Multi-tenant deployments for Frappe apps
- Frappe Ui — A set of components and utilities for rapid UI development
- Press — Full service cloud hosting for the Frappe stack - powers Frappe Cloud
- Gameplan — Open Source Discussions Platform for Remote Teams
- Doppio — A Frappe app (CLI) to magically setup single page applications and Vue/React powered desk pages on your custom Frappe apps.