✓ Verified 💻 Development ✓ Enhanced Data

Frappecli

CLI for Frappe Framework / ERPNext instances.

Rating
4.6 (464 reviews)
Downloads
6,772 downloads
Version
1.0.0

Overview

CLI for Frappe Framework / ERPNext instances.

Complete Documentation

View Source →

frappecli

CLI for managing Frappe Framework instances via REST API.

Installation

bash
brew tap pasogott/tap
brew install frappecli

Or from source:

bash
git clone https://github.com/pasogott/frappecli.git
cd frappecli && uv sync && uv pip install -e .

Configuration

Create ~/.config/frappecli/config.yaml:

yaml
sites:
  production:
    url: https://erp.company.com
    api_key: your_api_key
    api_secret: your_api_secret
  staging:
    url: https://staging.company.com
    api_key: your_staging_key
    api_secret: your_staging_secret

default_site: production

Commands

Site Management

bash
frappecli site doctypes                    # List all doctypes
frappecli site doctypes --module "Core"    # Filter by module
frappecli site info "User"                 # Get doctype details

Document CRUD

bash
# List documents
frappecli doc list Customer
frappecli doc list Customer --filters '{"status":"Active"}' --limit 10

# Get single document
frappecli doc get Customer CUST-001
frappecli doc get Customer CUST-001 --fields name,customer_name,status

# Create document
frappecli doc create Customer --data '{"customer_name":"Acme","customer_type":"Company"}'

# Update document
frappecli doc update Customer CUST-001 --data '{"status":"Inactive"}'

# Delete document
frappecli doc delete Customer CUST-001

File Management

bash
# Upload file (private by default)
frappecli file upload invoice.pdf --doctype "Sales Invoice" --docname "INV-001"

# Upload public file
frappecli file upload logo.png --public

# Download file
frappecli file download /private/files/invoice.pdf -o ./downloads/

# List files for document
frappecli file list --doctype "Sales Invoice" --docname "INV-001"

Reports

bash
# Run report (JSON output)
frappecli report run "General Ledger" --filters '{"company":"My Company"}'

# Export to CSV
frappecli report run "Accounts Receivable" --format csv -o report.csv

RPC Methods

bash
# Call custom method
frappecli rpc frappe.ping

# With arguments
frappecli rpc myapp.api.process_data --args '{"doc_id":"DOC-001"}'

Multi-Site

bash
# Use specific site
frappecli --site staging doc list Customer

# Switch default site
frappecli config set default_site staging

Output Formats

bash
frappecli doc list Customer --format table   # Pretty table (default)
frappecli doc list Customer --format json    # JSON
frappecli doc list Customer --format csv     # CSV

Examples

Bulk Operations

bash
# Export all active customers
frappecli doc list Customer --filters '{"status":"Active"}' --format csv > customers.csv

# Get document with child tables
frappecli doc get "Sales Invoice" INV-001 --fields '*'

Integration with jq

bash
# Get customer names only
frappecli doc list Customer --format json | jq -r '.[].customer_name'

# Count by status
frappecli doc list Customer --format json | jq 'group_by(.status) | map({status: .[0].status, count: length})'

Links

  • Repository: https://github.com/pasogott/frappecli
  • Homebrew: brew install pasogott/tap/frappecli

Installation

Terminal bash

openclaw install frappecli
    
Copied!

💻Code Examples

cd frappecli && uv sync && uv pip install -e .

cd-frappecli--uv-sync--uv-pip-install--e-.txt
## Configuration

Create `~/.config/frappecli/config.yaml`:

default_site: production

defaultsite-production.txt
## Commands

### Site Management

frappecli doc list Customer --format csv # CSV

frappecli-doc-list-customer---format-csv--csv.txt
## Examples

### Bulk Operations
example.yml
sites:
  production:
    url: https://erp.company.com
    api_key: your_api_key
    api_secret: your_api_secret
  staging:
    url: https://staging.company.com
    api_key: your_staging_key
    api_secret: your_staging_secret

default_site: production
example.sh
frappecli site doctypes                    # List all doctypes
frappecli site doctypes --module "Core"    # Filter by module
frappecli site info "User"                 # Get doctype details
example.sh
# List documents
frappecli doc list Customer
frappecli doc list Customer --filters '{"status":"Active"}' --limit 10

# Get single document
frappecli doc get Customer CUST-001
frappecli doc get Customer CUST-001 --fields name,customer_name,status

# Create document
frappecli doc create Customer --data '{"customer_name":"Acme","customer_type":"Company"}'

# Update document
frappecli doc update Customer CUST-001 --data '{"status":"Inactive"}'

# Delete document
frappecli doc delete Customer CUST-001
example.sh
# Upload file (private by default)
frappecli file upload invoice.pdf --doctype "Sales Invoice" --docname "INV-001"

# Upload public file
frappecli file upload logo.png --public

# Download file
frappecli file download /private/files/invoice.pdf -o ./downloads/

# List files for document
frappecli file list --doctype "Sales Invoice" --docname "INV-001"
example.sh
# Run report (JSON output)
frappecli report run "General Ledger" --filters '{"company":"My Company"}'

# Export to CSV
frappecli report run "Accounts Receivable" --format csv -o report.csv
example.sh
# Call custom method
frappecli rpc frappe.ping

# With arguments
frappecli rpc myapp.api.process_data --args '{"doc_id":"DOC-001"}'
example.sh
# Use specific site
frappecli --site staging doc list Customer

# Switch default site
frappecli config set default_site staging

Tags

#self_hosted-and-automation #cli

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author pasogott
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install frappecli