Central is the control plane for Frappe Cloud V2. It signs people in, decides what each team member can do, creates servers through Atlas, and bills each team. It is a Frappe app with a Vue console in dashboard/.
Central does not run servers. Atlas runs the virtual machines in each region, Pilot runs the benches and sites on a server, and Cargo builds the server images. See Integrations for the contracts.
Python 3.14, Node.js 24 with Yarn, MariaDB 11.8, Redis 6 or later, and Pilot.
Run these commands from the bench root:
pilot get-app https://github.com/frappe/central.git --branch develop
pilot new-site central.localhost --admin-password admin
pilot install-app central.localhost central
pilot frappe --site central.localhost set-config developer_mode 1
NO_PROXY='*' pilot startOpen the console at http://central.localhost:<http_port>/dashboard and Desk at /app. The port is http_port in bench.toml. On macOS, NO_PROXY='*' stops the system proxy lookup from killing background workers.
Put gateway and integration keys in sites/common_site_config.json. Never commit them.
| Key | Needed for |
|---|---|
stripe_secret_key, stripe_publishable_key |
Stripe charges and top-ups |
razorpay_key_id, razorpay_key_secret |
Razorpay charges and top-ups |
entitlement_private_key |
Signed plan entitlements |
erpnext_url, erpnext_api_key, erpnext_api_secret |
Invoice sync to ERPNext |
To create servers, connect a Region to Atlas. See Region.
The demo seed creates ten teams with plans, subscriptions, and invoices. It deletes all billing data and all server records first. Run it only on a local site.
pilot frappe --site central.localhost execute central.billing.demo.demo_scenarios.seedSee the billing demo for the teams and logins.
Run these commands from apps/central:
cd apps/central
yarn install
yarn devRun the linters from apps/central:
../../env/bin/ruff check central
../../env/bin/ruff format central
python3 scripts/check_patches.py
pre-commit run --all-filesRun tests on a separate site with allow_tests set, because some billing tests commit their data:
pilot frappe --site central-test.localhost set-config allow_tests true
pilot frappe --site central-test.localhost run-tests --app centralSee e2e/README.md for the Playwright suite.
- CLAUDE.md: contributor and agent rules.
- Specification router: every module and cross-cutting specification.
- Billing architecture: the billing code map.