| name | frappe-bench-cli |
| description | Operate a Frappe bench from the command line — site creation, app install, migrate, build, backup/restore, scheduler, console, set-config, and multi-site management. Use when running or troubleshooting bench commands, deploying changes, or managing sites. Trigger on: "bench command", "bench migrate", "bench new-site", "bench backup", "bench console", "set-config", "bench build", "scheduler", "bench restore".
|
Frappe Bench CLI
bench is the command-line tool that manages Frappe sites and apps. On a multi-site bench, always
pass --site <site>.
Bench init & directory layout
bench init frappe-bench
cd frappe-bench && bench start
Sites & apps
bench new-site mysite.localhost
bench --site mysite.localhost add-to-hosts
bench --site mysite.localhost install-app myapp
bench --site mysite.localhost uninstall-app myapp
bench get-app https://github.com/org/myapp
bench --site mysite.localhost list-apps
bench use mysite.localhost
The everyday loop
bench --site <site> migrate
bench build --app myapp
bench --site <site> clear-cache
bench restart
bench start
Backup & restore
bench --site <site> backup
bench --site <site> backup --with-files
bench --site <site> restore /path/to/db.sql.gz
bench --site <site> --force restore <db> --with-public-files <tar> --with-private-files <tar>
Scheduler
bench --site <site> enable-scheduler
bench --site <site> scheduler status
bench --site <site> trigger-scheduler-event daily
bench --site <site> doctor
Console & config
bench --site <site> console
bench --site <site> execute myapp.tasks.daily.run
bench --site <site> set-config key value
bench --site <site> set-config -g key value
bench --site <site> show-config
bench --site <site> mariadb
Users & maintenance
bench --site <site> set-admin-password <pwd>
bench --site <site> add-system-manager user@x --first-name A
bench --site <site> set-maintenance-mode on
bench update --patch
Rules
- Backup before
migrate, restore, update, or anything destructive in production.
- Always
--site on multi-site benches — a missing flag can hit the wrong site.
- Store secrets via
set-config (→ site_config.json / frappe.conf), never in DocType fields or code.
- After editing
hooks.py, DocType JSON, or patches: bench --site <site> migrate.
- After editing JS/CSS:
bench build (use bench build --app myapp to scope it).
- Don't run
bench update blindly on prod — pin app versions and test on staging first.
Source: https://docs.frappe.io/framework/user/en/tutorial , https://docs.frappe.io/framework/user/en/tutorial/create-a-site