---
title: "Bench Commands Cheatsheet"
space: "Framework"
url: "https://docs.frappe.io/framework/user/en/bench/resources/bench-commands-cheatsheet"
updated: "2026-02-17"
---

### Printable Bench CLI Cheatsheet

Grab a A4 size printable cheatsheet of the most important Bench CLI commands [here](/files/Bench Cheatsheet v1.1.pdf). Download, print and put it on your desk!

### General Usage

* `bench --version` - Show bench version
* `bench version` - Show version of all apps
* `bench src` - Show bench repo directory
* `bench --help` - Show all commands and help
* `bench [command] --help` - Show help for command
* `bench init [bench-name]` - Create a new bench (Run from home dir)


	+ `--python TEXT` Path to Python Executable.
	+ `--ignore-exist` Ignore if Bench instance exists.
	+ `--apps_path TEXT` path to json files with apps to install after init
	+ `--frappe-path TEXT` path to frappe repo
	+ `--frappe-branch TEXT` Clone a particular branch of frappe
	+ `--clone-from TEXT` copy repos from path
	+ `--clone-without-update` copy repos from path without update
	+ `--no-procfile` Pull changes in all the apps in bench
	+ `--no-backups` Run migrations for all sites in the bench
	+ `--no-auto-update` Build JS and CSS artifacts for the bench
	+ `--skip-redis-config-generation` Skip redis config generation if already specifying the common-site-config file
	+ `--verbose` Verbose output during install
* `bench --site [site-name] COMMAND` - Specify site for command
* `bench update` - Pulls changes for bench-repo and all apps, applies patches, builds JS and CSS, and then migrates.


	+ `--pull` Pull changes in all the apps in bench
	+ `--patch` Run migrations for all sites in the bench
	+ `--build` Build JS and CSS artifacts for the bench
	+ `--bench` Update bench
	+ `--requirements` Update requirements
	+ `--restart-supervisor` restart supervisor processes after update
	+ `--no-backup` Don't take a backup before update
	+ `--reset` Ignore local changes and update
	+ `--dev` Enable developer mode on the new bench and install developer dependencies which are required for running tests.
* `bench restart` Restart all bench services
* `bench backup` Create a backup of the default site.

Backup will be saved to `~/frappe-bench/sites/{your site}/private/backups/`.
* `bench backup-all-sites` Backup all sites


	+ `--with-files` Backup site with files
* `bench restore` Restore


	+ `--with-private-files` Restore site with private files (Path to tar file)
	+ `--with-public-files` Restore site with public files (Path to tar file)
* `bench migrate` Run patches, sync schema and rebuild files/translations


	+ `--rebuild-website TEXT` Rebuild webpages after migration
* `bench migrate-env [python-version]` Will migrate the virtual environment to the desired python version
* `bench --site [sitename] set-admin-password [password]` Will reset the administrator password
* `bench destroy-all-sessions` Destroys all sessions

### Config

* `bench config` - Change bench configuration


	+ `auto_update [on/off]` Enable/Disable auto update for bench
	+ `dns_multitenant [on/off]` Enable/Disable DNS Multitenancy
	+ `http_timeout` Set http timeout
	+ `restart_supervisor_on_update` Enable/Disable auto restart of supervisor
	+ `serve_default_site` Configure nginx to serve the default site on
	+ `update_bench_on_update` Enable/Disable bench updates on running bench...
* `bench setup` - Setup components


	+ `auto-update` Add cronjob for bench auto update
	+ `backups` Add cronjob for bench backups
	+ `config` overwrite or make config.json
	+ `env` Setup virtualenv for bench
	+ `nginx` generate config for nginx
	+ `procfile` Setup Procfile for bench start
	+ `production` setup bench for production
	+ `redis` generate config for redis cache
	+ `socketio` Setup node deps for socketio server
	+ `sudoers` Add commands to sudoers list for execution...
	+ `supervisor` generate config for supervisor
	+ `add-domain` add custom domain for site
	+ `firewall` setup firewall and block all ports except 22, 80 and 443
	+ `ssh-port` change the default ssh connection port
	+ `requirements`Update Python and Node packages
	
	
		- `--node` Update only Node packages
		- `--python` Update only Python packages
		- `--dev` Update only Python development dependencies.
* `bench set-nginx-port [sitename] [port]` - Set site's port in Production

### Development

* `bench new-app [app-name]` Creates a new app
* `bench get-app [repo-link]` - Downloads an app from a git repository and installs it


	+ `--branch [branch-name]` Fetches specific branch of app
* `bench install-app [app-name]` Installs existing app
* `bench remove-from-installed-apps [app-name]` Remove app from the list of apps
* `bench uninstall-app [app-name]` Delete app and everything linked to the app (Bench needs to be running)
* `bench remove-app [app-name]` Remove app from the bench entirely
* `bench --site [sitename] --force reinstall` Reinstall with fresh database (Caution: Will wipe out old database)
* `bench new-site [sitename]` - Creates a new site


	+ `--db-name` Database name
	+ `--db-host` Custom database host URL for remote connection
	+ `--db-port` Custom database listening port (eg. port other than the default 3306)
	+ `--mariadb-root-username` Root username for MariaDB
	+ `--mariadb-root-password` Root password for MariaDB
	+ `--admin-password` Administrator password for new site
	+ `--verbose` Verbose
	+ `--force` Force restore if site/database already exists
	+ `--source_sql` Initiate database with a SQL file
	+ `--install-app` Install app after installation`
* `bench use [site]` Sets a default site
* `bench drop-site` Removes site from disk and database completely


	+ `--root-login`
	+ `--root-password`
* `bench set-config [key] [value]` Adds a key-value pair to site's config file
* `bench console` Opens a IPython console in the bench venv


	+ `--autoreload` Reload changes to code automatically
* `bench execute` Execute a method inside any app.


	+ Eg : `bench execute frappe.utils.scheduler.enqueue_scheduler_events`
* `bench --site [sitename] mariadb` Opens SQL Console
* `bench --site [sitename] export-fixtures [--app TEXT]` Export the [records defined in the app's hooks](/framework/v14/user/en/python-api/hooks#fixtures) as JSON files.
* `bench run-tests` Run tests


	+ `--app` App Name
	+ `--doctype` DocType to run tests for
	+ `--test` Specific Test
	+ `--module` Run a particular module that has tests
	+ `--profile` Runs a Python profiler on the test
* `bench disable-production` Disables production environment
* `bench serve` Start a development web server on `0.0.0.0`


	+ `--port` Start the web server on a different port (default: 8000)
	+ `--profile` Add a profiler middleware that prints exactly which backend methods get called, how often and how long it takes.
	+ `--proxy` The development server may be run behind a proxy, e.g. ngrok / localtunnel
	+ `--noreload` Disable automatic restarting of the server when files change.
	+ `--nothreading` Disable handling of concurrent requests using threads. Can lead to unexpected behavior when multiple threads are required (for example during PDF generation).
	+ `--with-coverage` Measure code coverage and create a report `coverage.xml` in the `sites/` folder. Also activates `--noreload` and `--nothreading`.

### Scheduler

* `bench enable-scheduler` - Enables Scheduler that will run scheduled tasks
* `bench doctor` - Get diagnostic info about background workers
* `bench show-pending-jobs`- Get pending jobs
* `bench purge-jobs` - Destroy all pending jobs

### Data Import

* `bench data-import` - Imports Bulk Data from .csv, .xls or .xlsx


	+ `--file` File Name
	+ `--doctype` The DocType
	+ `--type` Insert/Update
