CLI for Coolify API
curl -fsSL https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.sh | bashIt will install the CLI in /usr/local/bin/coolify and the configuration file in ~/.config/coolify/config.json
brew install coollabsio/coolify-cli/coolify-cliirm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iexIt will install the CLI in %ProgramFiles%\Coolify\coolify.exe and the configuration file in %USERPROFILE%\.config\coolify\config.json
For user installation (no admin rights required):
$env:COOLIFY_USER_INSTALL=1; irm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iexFor a specific version:
$env:COOLIFY_VERSION='v1.0.0'; irm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iexgo install github.com/coollabsio/coolify-cli/coolify@latestThis will install the coolify binary in your $GOPATH/bin directory (usually ~/go/bin). Make sure this directory is in your $PATH.
- Get a
<token>from your Coolify dashboard (Cloud or self-hosted) at/security/api-tokens
- Add the token with
coolify context set-token cloud <token>
- Add the token with
coolify context add -d <context_name> <url> <token>
Replace
<context_name>with the name you want to give to the context.Replace
<url>with the fully qualified domain name of your Coolify instance.
Now you can use the CLI with the token you just added.
- Quick instructions:
llms.txt - Full command catalog:
llms-full.txt - Regenerate both files:
go run ./coolify docs llmsYou can change the default context with coolify context use <context_name> or coolify context set-default <context_name>
coolify update- Update the CLI to the latest version
coolify config- Show configuration file location
coolify completion <shell>- Generate shell completion script- Supported shells:
bash,zsh,fish,powershell
- Supported shells:
coolify context list- List all configured contextscoolify context add <context_name> <url> <token>- Add a new context-d, --default- Set as default context-f, --force- Force overwrite if context already exists
coolify context delete <context_name>- Delete a contextcoolify context get <context_name>- Get details of a specific contextcoolify context set-token <context_name> <token>- Update the API token for a contextcoolify context set-default <context_name>- Set a context as the defaultcoolify context update <context_name>- Update a context's properties--name <new_name>- Change the context name--url <new_url>- Change the context URL--token <new_token>- Change the context token
coolify context use <context_name>- Switch to a different context (set as default)coolify context verify- Verify current context connection and authenticationcoolify context version- Get the Coolify API version of the current context
Commands can use server or servers interchangeably.
coolify server list- List all serverscoolify server get <uuid>- Get a server by UUID--resources- Get the resources and their status of a server
coolify server add <name> <ip> <private_key_uuid>- Add a new server-p, --port <port>- SSH port (default: 22)-u, --user <user>- SSH user (default: root)--validate- Validate server immediately after adding
coolify server remove <uuid>- Remove a servercoolify server validate <uuid>- Validate a server connectioncoolify server domains <uuid>- Get server domains by UUID
coolify projects list- List all projectscoolify projects get <uuid>- Get project environments
coolify resources list- List all resources
coolify app list- List all applicationscoolify app get <uuid>- Get application detailscoolify app update <uuid>- Update application configuration--name <name>- Application name--description <description>- Application description--git-branch <branch>- Git branch--git-repository <url>- Git repository URL--domains <domains>- Domains (comma-separated)--build-command <cmd>- Build command--start-command <cmd>- Start command--install-command <cmd>- Install command--base-directory <path>- Base directory--publish-directory <path>- Publish directory--dockerfile <content>- Dockerfile content--docker-image <image>- Docker image name--docker-tag <tag>- Docker image tag--ports-exposes <ports>- Exposed ports--ports-mappings <mappings>- Port mappings--health-check-enabled- Enable health check--health-check-path <path>- Health check path
coolify app delete <uuid>- Delete an application-f, --force- Skip confirmation prompt
coolify app start <uuid>- Start an applicationcoolify app stop <uuid>- Stop an applicationcoolify app restart <uuid>- Restart an applicationcoolify app logs <uuid>- Get application logs
coolify app env list <app_uuid>- List all environment variablescoolify app env get <app_uuid> <env_uuid_or_key>- Get a specific environment variablecoolify app env create <app_uuid>- Create a new environment variable--key <key>- Variable key (required)--value <value>- Variable value (required)--preview- Available in preview deployments--build-time- Available at build time--is-literal- Treat value as literal (don't interpolate variables)--is-multiline- Value is multiline
coolify app env update <app_uuid> <env_uuid_or_key>- Update an environment variable--value <value>- Variable value (required)--key <key>- New variable key (optional, for renaming)--preview- Available in preview deployments--build-time- Available at build time--is-literal- Treat value as literal (don't interpolate variables)--is-multiline- Value is multiline--runtime- Available at runtime
coolify app env delete <app_uuid> <env_uuid>- Delete an environment variablecoolify app env sync <app_uuid>- Sync environment variables from a .env file--file <path>- Path to .env file (required)--build-time- Make all variables available at build time--preview- Make all variables available in preview deployments--is-literal- Treat all values as literal (don't interpolate variables)- Behavior: Updates existing variables, creates missing ones. Does NOT delete variables not in the file.
coolify app deployments list <app-uuid>- List all deployments for an applicationcoolify app deployments logs <app-uuid> [deployment-uuid]- Get deployment logs (formatted as human-readable text)- If only
app-uuidis provided: retrieves logs from the latest/most recent deployment only - If
deployment-uuidis also provided: retrieves logs for that specific deployment -n, --lines <n>- Number of log lines to display (default: 0 = all lines)-f, --follow- Follow log output in real-time (like tail -f)--debuglogs- Show debug logs (includes hidden commands and internal operations)
- If only
coolify database list- List all databasescoolify database get <uuid>- Get database detailscoolify database create <type>- Create a new database- Supported types:
postgresql,mysql,mariadb,mongodb,redis,keydb,clickhouse,dragonfly --server-uuid <uuid>- Server UUID (required)--project-uuid <uuid>- Project UUID (required)--environment-name <name>- Environment name (required unless using --environment-uuid)--environment-uuid <uuid>- Environment UUID (required unless using --environment-name)--destination-uuid <uuid>- Destination UUID if server has multiple destinations--name <name>- Database name--description <description>- Database description--image <image>- Docker image--instant-deploy- Deploy immediately after creation--is-public- Make database publicly accessible--public-port <port>- Public port number--limits-memory <size>- Memory limit (e.g., '512m', '2g')--limits-cpus <cpus>- CPU limit (e.g., '0.5', '2')- Database-specific flags (postgres-user, mysql-root-password, etc.)
- Supported types:
coolify database update <uuid>- Update database configurationcoolify database delete <uuid>- Delete a database--delete-configurations- Delete configurations (default: true)--delete-volumes- Delete volumes (default: true)--docker-cleanup- Run docker cleanup (default: true)--delete-connected-networks- Delete connected networks (default: true)
coolify database start <uuid>- Start a databasecoolify database stop <uuid>- Stop a databasecoolify database restart <uuid>- Restart a database
coolify database backup list <database_uuid>- List all backup configurationscoolify database backup create <database_uuid>- Create a new backup configuration--frequency <cron>- Backup frequency (cron expression)--enabled- Enable backup schedule--save-s3- Save backups to S3--s3-storage-uuid <uuid>- S3 storage UUID--databases-to-backup <list>- Comma-separated list of databases to backup--dump-all- Dump all databases--retention-amount-local <n>- Number of backups to retain locally--retention-days-local <n>- Days to retain backups locally--retention-storage-local <size>- Max storage for local backups (e.g., '1GB', '500MB')--retention-amount-s3 <n>- Number of backups to retain in S3--retention-days-s3 <n>- Days to retain backups in S3--retention-storage-s3 <size>- Max storage for S3 backups (e.g., '1GB', '500MB')--timeout <seconds>- Backup timeout in seconds--disable-local- Disable local backup storage
coolify database backup update <database_uuid> <backup_uuid>- Update a backup configurationcoolify database backup delete <database_uuid> <backup_uuid>- Delete a backup configurationcoolify database backup trigger <database_uuid> <backup_uuid>- Trigger an immediate backupcoolify database backup executions <database_uuid> <backup_uuid>- List backup executionscoolify database backup delete-execution <database_uuid> <backup_uuid> <execution_uuid>- Delete a backup execution
coolify service list- List all servicescoolify service get <uuid>- Get service detailscoolify service start <uuid>- Start a servicecoolify service stop <uuid>- Stop a servicecoolify service restart <uuid>- Restart a servicecoolify service delete <uuid>- Delete a service
coolify service env list <service_uuid>- List all environment variablescoolify service env get <service_uuid> <env_uuid_or_key>- Get a specific environment variablecoolify service env create <service_uuid>- Create a new environment variable- Same flags as application environment variables
coolify service env update <service_uuid> <env_uuid_or_key>- Update an environment variable--value <value>- Variable value (required)--key <key>- New variable key (optional, for renaming)--build-time- Available at build time--is-literal- Treat value as literal (don't interpolate variables)--is-multiline- Value is multiline--runtime- Available at runtime
coolify service env delete <service_uuid> <env_uuid>- Delete an environment variablecoolify service env sync <service_uuid>- Sync environment variables from a .env file--file <path>- Path to .env file (required)--build-time- Make all variables available at build time--preview- Make all variables available in preview deployments--is-literal- Treat all values as literal (don't interpolate variables)- Behavior: Updates existing variables, creates missing ones. Does NOT delete variables not in the file.
coolify deploy uuid <uuid>- Deploy a resource by UUID-f, --force- Force deployment--pull-request-id <id>- Pull request ID for preview deployments--docker-tag <tag>- Docker image tag override for the deployment (requires Coolify4.0.0-beta.471+)
coolify deploy name <name>- Deploy a resource by name-f, --force- Force deployment--pull-request-id <id>- Pull request ID for preview deployments--docker-tag <tag>- Docker image tag override for the deployment (requires Coolify4.0.0-beta.471+)
coolify deploy batch <name1,name2,...>- Deploy multiple resources at once-f, --force- Force all deployments--pull-request-id <id>- Pull request ID for preview deployments--docker-tag <tag>- Docker image tag override for the deployment (requires Coolify4.0.0-beta.471+)
coolify deploy list- List all deploymentscoolify deploy get <uuid>- Get deployment detailscoolify deploy cancel <uuid>- Cancel a deployment-f, --force- Skip confirmation prompt
coolify github list- List all GitHub App integrationscoolify github get <app_uuid>- Get GitHub App detailscoolify github create- Create a new GitHub App integration--name <name>- GitHub App name (required)--api-url <url>- GitHub API URL (required, e.g., https://api.github.com)--html-url <url>- GitHub HTML URL (required, e.g., https://github.com)--app-id <id>- GitHub App ID (required)--installation-id <id>- GitHub Installation ID (required)--client-id <id>- GitHub OAuth Client ID (required)--client-secret <secret>- GitHub OAuth Client Secret (required)--private-key-uuid <uuid>- UUID of existing private key (required)--organization <org>- GitHub organization--custom-user <user>- Custom user for SSH (default: git)--custom-port <port>- Custom port for SSH (default: 22)--webhook-secret <secret>- GitHub Webhook Secret--system-wide- Is this app system-wide (cloud only)
coolify github update <app_uuid>- Update a GitHub Appcoolify github delete <app_uuid>- Delete a GitHub App-f, --force- Skip confirmation prompt
coolify github repos <app_uuid>- List repositories accessible by a GitHub Appcoolify github branches <app_uuid> <owner/repo>- List branches for a repository
coolify team list- List all teamscoolify team get <team_id>- Get team detailscoolify team current- Get current teamcoolify team members list [team_id]- List team members
Commands can use private-key, private-keys, key, or keys interchangeably.
coolify private-key list- List all private keyscoolify private-key add <key_name> <private-key>- Add a new private key- Use
@filenameto read from file:coolify private-key add mykey @~/.ssh/id_rsa
- Use
coolify private-key remove <uuid>- Remove a private key
All commands support these global flags:
--context <name>- Use a specific context instead of default--host <fqdn>- Override the Coolify instance hostname--token <token>- Override the authentication token--format <format>- Output format:table(default),json, orpretty-s, --show-sensitive- Show sensitive information (tokens, IPs, etc.)-f, --force- Force operation (skip confirmations)--debug- Enable debug mode
# Add multiple contexts
coolify context add prod https://prod.coolify.io <prod-token>
coolify context add staging https://staging.coolify.io <staging-token>
coolify context add dev https://dev.coolify.io <dev-token>
# Set default
coolify context use prod
# Use different contexts
coolify --context=staging servers list
coolify --context=prod deploy name api
coolify --context=dev resources list
# Default context (prod in this case)
coolify servers list# List all applications
coolify app list
# Get application details
coolify app get <uuid>
# Manage application lifecycle
coolify app start <uuid>
coolify app stop <uuid>
coolify app restart <uuid>
# View application logs
coolify app logs <uuid>
# Environment variables
coolify app env list <uuid>
coolify app env create <uuid> --key API_KEY --value secret123
# Sync from .env file (updates existing, creates new, keeps others unchanged)
coolify app env sync <uuid> --file .env
coolify app env sync <uuid> --file .env.production --build-time --preview# List databases
coolify database list
# Create a PostgreSQL database
coolify database create postgresql \
--server-uuid <server-uuid> \
--project-uuid <project-uuid> \
--name mydb \
--instant-deploy
# Manage database lifecycle
coolify database start <uuid>
coolify database stop <uuid>
coolify database restart <uuid>
# Backup management
coolify database backup list <database-uuid>
coolify database backup create <database-uuid> \
--frequency "0 2 * * *" \
--enabled \
--save-s3 \
--retention-days-locally 7
coolify database backup trigger <database-uuid> <backup-uuid># List services
coolify service list
# Get service details
coolify service get <uuid>
# Manage services
coolify service start <uuid>
coolify service restart <uuid>
# Environment variables (same as applications)
coolify service env sync <uuid> --file .env# Deploy single app by name (easier than UUID)
coolify deploy name my-application
# Deploy multiple apps at once
coolify deploy batch api,worker,frontend
# Force deploy with specific context
coolify --context=prod deploy batch api,worker --force
# Deploy a preview with an explicit docker tag
coolify deploy uuid u5ualfp30j27qtfpgcen8p03 --pull-request-id 2345 --docker-tag 1.28.3
# Traditional UUID deployment still works
coolify deploy uuid abc123-def456-...
# Monitor deployments
coolify deploy list
coolify deploy get <deployment-uuid>
# Cancel a deployment
coolify deploy cancel <deployment-uuid># List GitHub Apps
coolify github list
# Create a GitHub App integration
coolify github create \
--name "My GitHub App" \
--api-url "https://api.github.com" \
--html-url "https://github.com" \
--app-id 123456 \
--installation-id 789012 \
--client-id "Iv1.abc123" \
--client-secret "secret" \
--private-key-uuid <key-uuid>
# List repositories accessible by the app
coolify github repos <app-uuid>
# List branches for a repository
coolify github branches <app-uuid> owner/repo
# Delete a GitHub App
coolify github delete <app-uuid># List teams
coolify team list
# Get current team
coolify team current
# List team members
coolify team members list# List servers in production
coolify --context=prod server list
# Add a server with validation
coolify server add myserver 192.168.1.100 <key-uuid> --validate
# Get server details with resources
coolify server get <uuid> --resourcesThe CLI supports three output formats:
# Table format (default, human-readable)
coolify server list
# JSON format (for scripts)
coolify server list --format=json
# Pretty JSON (for debugging)
coolify server list --format=prettyThis CLI follows a clean architecture with:
- Service Layer: Business logic and API interactions
- Output Layer: Consistent formatting across all commands
- Config Layer: Multi-context configuration management
- Models Layer: Type-safe data structures
# Build
go build -o coolify ./coolify
# Run tests
go test ./...
# Run with coverage
go test -cover ./...
# Install locally
go install ./coolifyContributions are welcome!
MIT