Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    UnityAppSuite

    bench-commands

    UnityAppSuite/bench-commands
    DevOps
    1
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Frappe Bench CLI command reference for site management, app management, development, and production operations. Use when running bench commands, managing sites, migrations, builds, or deployments.

    SKILL.md

    Bench CLI Commands Reference

    Complete reference for the Frappe Bench command-line interface for managing Frappe/ERPNext installations.

    When to Use This Skill

    • Running bench commands for development
    • Managing Frappe sites
    • Installing and updating apps
    • Running migrations and builds
    • Setting up production environments
    • Troubleshooting common issues

    Bench Directory Structure

    frappe-bench/
    ├── apps/                   # Frappe apps
    │   ├── frappe/            # Core framework
    │   ├── erpnext/           # ERPNext (if installed)
    │   └── my_app/            # Custom apps
    ├── sites/                  # Sites directory
    │   ├── common_site_config.json
    │   ├── apps.txt           # List of installed apps
    │   └── my_site.local/     # Individual site
    │       ├── site_config.json
    │       ├── private/
    │       └── public/
    ├── config/                 # Configuration files
    ├── logs/                   # Log files
    ├── env/                    # Python virtual environment
    └── node_modules/          # Node.js dependencies
    

    Site Management

    Create Site

    # Create new site
    bench new-site mysite.local
    
    # With specific database
    bench new-site mysite.local --db-name mysite_db
    
    # With MariaDB root password
    bench new-site mysite.local --mariadb-root-password mypassword
    
    # With admin password
    bench new-site mysite.local --admin-password admin123
    
    # From SQL file
    bench new-site mysite.local --source_sql /path/to/backup.sql
    
    # Skip creating default user
    bench new-site mysite.local --no-mariadb-socket
    

    Use Site

    # Set default site
    bench use mysite.local
    
    # Run command on specific site
    bench --site mysite.local migrate
    
    # Run on all sites
    bench --site all migrate
    

    Site Operations

    # List all sites
    bench list-sites
    
    # Drop site (delete)
    bench drop-site mysite.local
    
    # Drop with force
    bench drop-site mysite.local --force
    
    # Set site maintenance mode
    bench --site mysite.local set-maintenance-mode on
    bench --site mysite.local set-maintenance-mode off
    
    # Disable scheduler
    bench --site mysite.local disable-scheduler
    bench --site mysite.local enable-scheduler
    

    Backup & Restore

    # Backup site
    bench --site mysite.local backup
    
    # Backup with files
    bench --site mysite.local backup --with-files
    
    # Backup all sites
    bench --site all backup
    
    # Restore from backup
    bench --site mysite.local restore /path/to/backup.sql.gz
    
    # Restore with files
    bench --site mysite.local restore /path/to/backup.sql.gz \
      --with-private-files /path/to/private.tar \
      --with-public-files /path/to/public.tar
    

    App Management

    Get Apps

    # Get app from GitHub
    bench get-app https://github.com/frappe/erpnext
    
    # Get specific branch
    bench get-app https://github.com/frappe/erpnext --branch version-14
    
    # Get specific tag
    bench get-app https://github.com/frappe/erpnext --tag v14.0.0
    
    # Get from local path
    bench get-app /path/to/my_app
    
    # Get and install on all sites
    bench get-app erpnext --install-all
    

    Install/Uninstall Apps

    # Install app on site
    bench --site mysite.local install-app erpnext
    
    # Install app on all sites
    bench --site all install-app my_app
    
    # Uninstall app
    bench --site mysite.local uninstall-app my_app
    
    # Uninstall with force (removes data)
    bench --site mysite.local uninstall-app my_app --yes --force
    

    Create New App

    # Create new app
    bench new-app my_app
    
    # App will be created in apps/ directory with:
    # - my_app/my_app/
    # - hooks.py
    # - modules.txt
    # - patches.txt
    # - requirements.txt
    

    Update Apps

    # Update all apps
    bench update
    
    # Update without migrations
    bench update --no-migrations
    
    # Update specific app
    bench update --apps erpnext
    
    # Update without pulling
    bench update --no-pull
    
    # Update without building assets
    bench update --no-build
    
    # Reset to fresh install
    bench update --reset
    

    Remove App

    # Remove app from bench (not from sites)
    bench remove-app my_app
    
    # Remove from site first
    bench --site mysite.local uninstall-app my_app
    bench remove-app my_app
    

    Development Commands

    Start Development Server

    # Start development server (web + redis + scheduler)
    bench start
    
    # Start with specific workers
    bench start --procfile Procfile.dev
    
    # Start only web server
    bench serve
    
    # Start on specific port
    bench serve --port 8001
    

    Build Assets

    # Build assets (JS/CSS)
    bench build
    
    # Build specific app
    bench build --app my_app
    
    # Build with verbose output
    bench build --verbose
    
    # Build production assets
    bench build --production
    
    # Build and minify
    bench build --make-copy
    
    # Watch for changes
    bench watch
    

    Migrate

    # Run migrations
    bench --site mysite.local migrate
    
    # Migrate all sites
    bench --site all migrate
    
    # Migrate specific app
    bench --site mysite.local migrate --app my_app
    
    # Skip failing patches
    bench --site mysite.local migrate --skip-failing
    

    Clear Cache

    # Clear cache
    bench --site mysite.local clear-cache
    
    # Clear all cache including redis
    bench --site mysite.local clear-website-cache
    
    # Clear redis cache
    bench clear-redis-cache
    

    Console

    # Open Python console
    bench --site mysite.local console
    
    # In console:
    # >>> doc = frappe.get_doc("Customer", "CUST-001")
    # >>> doc.customer_name
    # >>> frappe.db.sql("SELECT * FROM tabCustomer")
    
    # Run Python script
    bench --site mysite.local execute myapp.scripts.my_function
    
    # Execute with arguments
    bench --site mysite.local execute myapp.scripts.my_function --args='["arg1", "arg2"]'
    

    MariaDB Console

    # Open MariaDB console
    bench --site mysite.local mariadb
    
    # Run SQL query
    bench --site mysite.local mariadb -e "SELECT * FROM tabCustomer LIMIT 5"
    

    Run Tests

    # Run all tests
    bench --site mysite.local run-tests
    
    # Run tests for specific app
    bench --site mysite.local run-tests --app my_app
    
    # Run specific test
    bench --site mysite.local run-tests --module my_app.my_module.doctype.my_doctype.test_my_doctype
    
    # Run with coverage
    bench --site mysite.local run-tests --coverage
    
    # Run specific test class
    bench --site mysite.local run-tests --doctype "My DocType"
    
    # Run parallel tests
    bench --site mysite.local run-tests --parallel
    
    # Skip test setup
    bench --site mysite.local run-tests --skip-setup
    

    Translation

    # Update translation files
    bench --site mysite.local update-translations
    
    # Export translations
    bench --site mysite.local export-translations
    
    # Import translations
    bench --site mysite.local import-translations /path/to/translations.csv
    

    Production Setup

    Setup Production

    # Setup for production (systemd, nginx, supervisor)
    sudo bench setup production frappe-user
    
    # Setup supervisor
    bench setup supervisor
    
    # Setup systemd
    bench setup systemd
    
    # Setup nginx
    bench setup nginx
    
    # Setup Redis
    bench setup redis
    
    # Setup fail2ban
    bench setup fail2ban
    

    SSL/Let's Encrypt

    # Setup Let's Encrypt SSL
    sudo bench setup lets-encrypt mysite.local
    
    # Renew certificates
    sudo bench renew-lets-encrypt
    

    Restart Services

    # Restart supervisor
    sudo supervisorctl restart all
    
    # Restart specific
    sudo supervisorctl restart frappe-bench-web:*
    sudo supervisorctl restart frappe-bench-workers:*
    
    # Restart systemd
    sudo systemctl restart frappe-bench-web
    sudo systemctl restart frappe-bench-schedule
    
    # Check status
    sudo supervisorctl status
    

    Scheduler & Workers

    Scheduler

    # Enable scheduler
    bench --site mysite.local enable-scheduler
    
    # Disable scheduler
    bench --site mysite.local disable-scheduler
    
    # Check scheduler status
    bench --site mysite.local show-scheduler-status
    
    # Run specific scheduled job
    bench --site mysite.local execute frappe.tasks.run_daily
    

    Background Jobs

    # Show queued jobs
    bench --site mysite.local show-pending-jobs
    
    # Clear failed jobs
    bench --site mysite.local clear-website-cache
    
    # Run specific queue
    bench worker --queue default
    bench worker --queue short
    bench worker --queue long
    
    # Purge jobs
    bench --site mysite.local purge-jobs
    

    Configuration

    Site Config

    # Show site config
    bench --site mysite.local show-config
    
    # Set config value
    bench --site mysite.local set-config key value
    
    # Set config with JSON value
    bench --site mysite.local set-config limits '{"users": 10}'
    
    # Set common config (all sites)
    bench set-config key value
    
    # Remove config
    bench --site mysite.local remove-config key
    

    Common Configurations

    # site_config.json
    {
        "db_name": "mysite_db",
        "db_password": "password",
        "db_type": "mariadb",
        "encryption_key": "xxxxx",
        "developer_mode": 0,
        "maintenance_mode": 0,
        "pause_scheduler": 0,
        "mail_server": "smtp.gmail.com",
        "mail_port": 587,
        "use_tls": 1,
        "mail_login": "user@gmail.com",
        "mail_password": "password",
        "auto_email_id": "noreply@mysite.com",
        "mute_emails": 0,
        "enable_scheduler": 1,
        "limits": {
            "users": 10,
            "emails": 500,
            "space": 5120
        }
    }
    

    Bench Config

    # Show bench config
    bench config list
    
    # Set bench config
    bench config set serve_port 8001
    bench config set redis_cache_port 13000
    
    # Common bench configs
    bench config set developer_mode 1
    bench config set webserver_port 8000
    bench config set background_workers 1
    

    Troubleshooting Commands

    Logs

    # View logs
    tail -f logs/frappe.log
    tail -f logs/web.error.log
    tail -f logs/worker.error.log
    tail -f logs/scheduler.error.log
    
    # Site-specific logs
    tail -f sites/mysite.local/logs/frappe.log
    

    Debug

    # Check site health
    bench --site mysite.local doctor
    
    # Show database stats
    bench --site mysite.local show-db-size
    
    # Show table sizes
    bench --site mysite.local --db-type mariadb execute \
      "SELECT table_name, data_length FROM information_schema.tables WHERE table_schema = 'mysite_db'"
    
    # Check scheduled jobs
    bench --site mysite.local show-scheduler-status
    
    # Reset password
    bench --site mysite.local set-admin-password newpassword
    
    # Add system manager
    bench --site mysite.local add-system-manager user@example.com
    

    Fix Common Issues

    # Rebuild search index
    bench --site mysite.local build-search-index
    
    # Reset desk customizations
    bench --site mysite.local reset-perms
    
    # Clear all locks
    bench --site mysite.local clear-locks
    
    # Reinstall
    bench --site mysite.local reinstall --yes
    
    # Partial restore
    bench --site mysite.local partial-restore /path/to/backup.sql
    

    Version Management

    # Check versions
    bench version
    
    # Switch branch
    bench switch-to-branch version-14 frappe erpnext
    
    # Switch to develop
    bench switch-to-branch develop --upgrade
    
    # Set version
    bench set-bench-version 5.x
    

    Multi-Tenancy

    # Setup multi-tenancy
    bench config dns_multitenant on
    
    # Add domain to site
    bench --site mysite.local add-domain newdomain.com
    
    # Remove domain
    bench --site mysite.local remove-domain newdomain.com
    
    # Setup wildcard SSL
    sudo certbot certonly --webroot -w /var/www/letsencrypt -d *.mydomain.com
    

    Common Workflows

    Fresh Install

    # Install bench
    pip install frappe-bench
    
    # Initialize bench
    bench init frappe-bench
    cd frappe-bench
    
    # Get ERPNext
    bench get-app erpnext
    
    # Create site
    bench new-site mysite.local
    
    # Install ERPNext
    bench --site mysite.local install-app erpnext
    
    # Start development server
    bench start
    

    Daily Development

    # Pull latest changes
    bench update --no-backup
    
    # Or step by step:
    cd apps/frappe && git pull
    cd apps/erpnext && git pull
    bench update --no-pull
    
    # Clear cache after code changes
    bench --site mysite.local clear-cache
    
    # Build assets
    bench build --app my_app
    

    Deploy Update

    # On production server
    cd /home/frappe/frappe-bench
    
    # Set maintenance mode
    bench --site mysite.local set-maintenance-mode on
    
    # Backup
    bench --site mysite.local backup --with-files
    
    # Update
    bench update
    
    # Migrate
    bench --site mysite.local migrate
    
    # Build assets
    bench build --production
    
    # Clear cache
    bench --site mysite.local clear-cache
    
    # Restart
    sudo supervisorctl restart all
    
    # Disable maintenance mode
    bench --site mysite.local set-maintenance-mode off
    
    Recommended Servers
    Desktop Commander
    Desktop Commander
    Repository
    unityappsuite/frappe-claude
    Files