Vector CLI
CLI for the Vector Pro API
The official CLI for the Vector Pro API. Built in Go for speed and reliability, with automatic JSON output for scripting and human-readable tables for interactive use.
Installation
Homebrew (macOS/Linux)
brew install built-fast/devtools/vector
Pre-built binaries
Download from Releases:
| Platform | Architecture | File |
|---|---|---|
| Linux | x86_64 | vector_VERSION_linux_amd64.tar.gz |
| Linux | ARM64 | vector_VERSION_linux_arm64.tar.gz |
| macOS | x86_64 (Intel) | vector_VERSION_darwin_amd64.tar.gz |
| macOS | ARM64 (Apple Silicon) | vector_VERSION_darwin_arm64.tar.gz |
| Windows | x86_64 | vector_VERSION_windows_amd64.zip |
# Example: Linux x86_64
curl -LO https://github.com/built-fast/vector-cli/releases/latest/download/vector_VERSION_linux_amd64.tar.gz
tar xzf vector_VERSION_linux_amd64.tar.gz
sudo mv vector /usr/local/bin/
From source
Requires Go 1.26+.
go install github.com/built-fast/vector-cli/cmd/vector@latest
Shell completions
# Bash (add to ~/.bashrc)
eval "$(vector completion bash)"
# Zsh (add to ~/.zshrc)
eval "$(vector completion zsh)"
# Fish
vector completion fish | source
# PowerShell (add to $PROFILE)
vector completion powershell | Out-String | Invoke-Expression
Homebrew installs completions automatically.
Quick Start
# Login with your API token
vector auth login
# List all sites
vector site list
# Create a new site
vector site create --customer-id cust-123 --dev-php-version 8.3
# Create a staging environment
vector env create site-id --name staging --php-version 8.3
# Trigger a deployment (by environment ID)
vector deploy trigger env-id
# View deployment history
vector deploy list env-id
API Reference
Global Flags
vector --token YOUR_TOKEN <command> # Use a specific API token for this invocation
vector --json <command> # Force JSON output
vector --no-json <command> # Force table output
vector --jq <expr> <command> # Filter JSON output with a jq expression
vector --version # Print version
Authentication
vector auth login # Interactive login
vector auth login --token YOUR_TOKEN # Login with token
vector auth status # Check auth status
vector auth logout # Clear credentials
Sites
vector site list
vector site show <site_id>
vector site create --customer-id <id> --dev-php-version 8.3 [--production-domain example.com] [--staging-domain staging.example.com] [--tags tag1,tag2] [--wp-admin-email admin@example.com] [--wp-admin-user myadmin] [--wp-site-title "My Blog"]
vector site update <site_id> [--customer-id <id>] [--tags tag1,tag2]
vector site clone <site_id> [--customer-id <id>] [--dev-php-version 8.3]
vector site delete <site_id>
vector site suspend <site_id>
vector site unsuspend <site_id>
vector site reset-sftp-password <site_id>
vector site reset-db-password <site_id>
vector site purge-cache <site_id> [--cache-tag <tag>] [--url <url>]
vector site wp-reconfig <site_id>
vector site logs <site_id> [--start-time <time>] [--end-time <time>] [--limit 100]
Sites - SSH Keys
vector site ssh-key list <site_id>
vector site ssh-key add <site_id> --name "My Key" --public-key "ssh-rsa ..."
vector site ssh-key remove <site_id> <key_id>
Environments
vector env list <site_id>
vector env show <env_id>
vector env create <site_id> --name staging --custom-domain example.com --php-version 8.3 [--is-production]
vector env update <env_id> [--custom-domain <domain>] [--clear-custom-domain] [--tags tag1,tag2]
vector env delete <env_id>
vector env reset-db-password <env_id>
vector env domain-change-status <env_id> <domain_change_id>
Environments - Secrets
vector env secret list <env_id>
vector env secret show <secret_id>
vector env secret create <env_id> --key MY_SECRET --value "secret-value" [--no-secret]
vector env secret update <secret_id> [--key <key>] [--value <value>] [--no-secret]
vector env secret delete <secret_id>
Environments - Database
# Promote dev database to environment
vector env db promote <env_id> [--drop-tables] [--disable-foreign-keys]
vector env db promote-status <env_id> <promote_id>
Deployments
vector deploy list <env_id>
vector deploy show <deploy_id>
vector deploy trigger <env_id> [--include-uploads] [--include-database]
vector deploy rollback <env_id> [--target-deployment-id <id>]
SSL
vector ssl status <env_id>
vector ssl nudge <env_id> [--retry]
Database
# Import session for large files
vector db import-session create <site_id> [--filename <name>] [--content-length <bytes>] [--drop-tables] [--disable-foreign-keys] [--search-replace-from <from>] [--search-replace-to <to>]
vector db import-session run <site_id> <import_id> [--parts '<json>']
vector db import-session status <site_id> <import_id>
# Export
vector db export create <site_id>
vector db export status <site_id> <export_id>
When --content-length exceeds 5GB, the API returns multipart upload details
instead of a single upload URL. Use --json to see all part URLs, then pass the
ETags to the run command after uploading each part:
vector db import-session run <site_id> <import_id> --parts '[{"part_number":1,"etag":"\"abc...\""},...]'
Archives
vector archive import <site_id> <file.tar.gz> [--drop-tables] [--disable-foreign-keys] [--search-replace-from <from>] [--search-replace-to <to>] [--wait] [--poll-interval <seconds>]
Files larger than 5GB are automatically uploaded using S3 multipart upload. The CLI handles splitting the file into parts, uploading each one, and finalizing the upload — no additional flags needed.
Backups
vector backup list [--site-id <id>] [--environment-id <id>] [--type site|environment]
vector backup show <backup_id>
vector backup create [--site-id <id>] [--environment-id <id>] [--scope full|database|files] [--description <desc>]
vector backup download create <backup_id>
vector backup download status <backup_id> <download_id>
Restores
vector restore list [--site-id <id>] [--environment-id <id>] [--type site|environment] [--backup-id <id>]
vector restore show <restore_id>
vector restore create <backup_id> [--scope full|database|files] [--drop-tables] [--disable-foreign-keys] [--search-replace-from <from>] [--search-replace-to <to>]
WAF - Rate Limits
vector waf rate-limit list <site_id>
vector waf rate-limit show <site_id> <rule_id>
vector waf rate-limit create <site_id> --name "Limit" --request-count 100 --timeframe 60 --block-time 300
vector waf rate-limit update <site_id> <rule_id> [--name <name>] [--request-count <n>]
vector waf rate-limit delete <site_id> <rule_id>
WAF - IP & Referrer Blocking
# Blocked IPs
vector waf blocked-ip list <site_id>
vector waf blocked-ip add <site_id> <ip>
vector waf blocked-ip remove <site_id> <ip>
# Blocked referrers
vector waf blocked-referrer list <site_id>
vector waf blocked-referrer add <site_id> <hostname>
vector waf blocked-referrer remove <site_id> <hostname>
# Allowed referrers
vector waf allowed-referrer list <site_id>
vector waf allowed-referrer add <site_id> <hostname>
vector waf allowed-referrer remove <site_id> <hostname>
Account
vector account show
Account - SSH Keys
vector account ssh-key list
vector account ssh-key show <key_id>
vector account ssh-key create --name "My Key" --public-key "ssh-rsa ..."
vector account ssh-key delete <key_id>
Account - API Keys
vector account api-key list
vector account api-key create --name "CI Token" [--abilities read,write] [--expires-at 2025-12-31]
vector account api-key delete <token_id>
Account - Secrets
vector account secret list
vector account secret show <secret_id>
vector account secret create --key MY_SECRET --value "secret-value" [--no-secret]
vector account secret update <secret_id> [--key <key>] [--value <value>] [--no-secret]
vector account secret delete <secret_id>
Webhooks
vector webhook list
vector webhook show <webhook_id>
vector webhook create --name "My Webhook" --url "https://example.com/hook" --events site.created,deployment.completed
vector webhook update <webhook_id> [--name <name>] [--url <url>] [--enabled true]
vector webhook delete <webhook_id>
Events & PHP Versions
vector event list [--from 2024-01-01] [--to 2024-12-31] [--event site.created]
vector php-versions
Output Format
The CLI automatically detects context:
- Interactive (TTY): Human-readable table format
- Piped/scripted: JSON format
Override with flags:
vector site list --json # Force JSON
vector site list --no-json # Force table
vector site list | jq '.data' # Auto JSON when piped
JQ Filtering
The --jq flag filters JSON output using a built-in jq processor (no external
jq binary required). It automatically forces JSON output.
# Extract specific fields
vector site list --jq '.[].id'
vector site show 456 --jq '.dev_domain'
# Filter with select
vector env list --site-id 123 --jq '[.[] | select(.status == "active")]'
# Count items
vector webhook list --jq 'length'
Format strings are supported for converting values — @csv, @tsv, @html,
@uri, and @base64:
# CSV output
vector site list --jq '[.[] | [.id, .name]] | .[] | @csv'
# URL-encode a value
vector site show 456 --jq '.name | @uri'
Configuration
Configuration is stored in ~/.config/vector/ (XDG-compliant):
config.json- Optional settings- The API token is stored in the system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service)
Environment Variables
| Variable | Description |
|---|---|
VECTOR_API_KEY |
API token (overrides keyring) |
VECTOR_API_URL |
API base URL (default: https://api.builtfast.com) |
VECTOR_CONFIG_DIR |
Config directory (default: ~/.config/vector) |
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Authentication error (401, 403) |
| 3 | Validation error (422) |
| 4 | Not found (404) |
| 5 | Network/server error (5xx) |
MCP Integration
Configure Claude Desktop to use Vector CLI as an MCP server:
vector mcp setup