CLI for Coolify
CLI for Coolify API
Installation
Install script (recommended)
Linux/macOS
curl -fsSL https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.sh | bash
It will install the CLI in /usr/local/bin/coolify and the configuration file in ~/.config/coolify/config.json
Homebrew (macOS/Linux)
brew install coollabsio/coolify-cli/coolify-cli
Windows (PowerShell)
irm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iex
It 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:COOLIFYUSERINSTALL=1; irm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iex
For a specific version:
$env:COOLIFY_VERSION='v1.0.0'; irm https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.ps1 | iex
Using go install
go install github.com/coollabsio/coolify-cli/coolify@latest
This will install the coolify binary in your $GOPATH/bin directory (usually ~/go/bin). Make sure this directory is in your $PATH.
Using the install script
Getting Started
- Get a
<token>from your Coolify dashboard (Cloud or self-hosted) at/security/api-tokens
Cloud
- Add the token with
coolify context set-token cloud <token>
Self-hosted
- 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.
For LLMs / AI agents
- Quick instructions:
llms.txt - Full command catalog:
llms-full.txt - Regenerate both files:
go run ./coolify docs llms
Change default context
You can change the default context withcoolify context use <contextname> or coolify context set-default <contextname>
Currently Supported Commands
Update
coolify update- Update the CLI to the latest version
Configuration
coolify config- Show configuration file location
Shell Completion
coolify completion <shell>- Generate shell completion script
bash, zsh, fish, powershell
Context Management
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
Servers
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> <privatekeyuuid>- 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
Projects
coolify projects list- List all projectscoolify projects get <uuid>- Get project environments
Resources
coolify resources list- List all resources
Applications
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
Application Environment Variables
coolify app env list <app_uuid>- List all environment variablescoolify app env get <appuuid> <envuuidorkey>- 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 <appuuid> <envuuidorkey>- 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 <appuuid> <envuuid>- 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.
Application Deployments
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)
app-uuid is provided: retrieves logs from the latest/most recent deployment only
- If deployment-uuid is 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)
Databases
coolify database list- List all databasescoolify database get <uuid>- Get database detailscoolify database create <type>- Create a new database
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.)
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
Database Backups
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 <databaseuuid> <backupuuid>- Update a backup configurationcoolify database backup delete <databaseuuid> <backupuuid>- Delete a backup configurationcoolify database backup trigger <databaseuuid> <backupuuid>- Trigger an immediate backupcoolify database backup executions <databaseuuid> <backupuuid>- List backup executionscoolify database backup delete-execution <databaseuuid> <backupuuid> <execution_uuid>- Delete a backup execution
Services
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
Service Environment Variables
coolify service env list <service_uuid>- List all environment variablescoolify service env get <serviceuuid> <envuuidorkey>- Get a specific environment variablecoolify service env create <service_uuid>- Create a new environment variable
coolify service env update <serviceuuid> <envuuidorkey>- 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 <serviceuuid> <envuuid>- 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.
Deployments
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 Coolify 4.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 Coolify 4.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 Coolify 4.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
GitHub Apps
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
Teams
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
Private Keys
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
@filename to read from file: coolify private-key add mykey @~/.ssh/id_rsa
coolify private-key remove <uuid>- Remove a private key
Global Flags
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
Examples
Multi-Environment Workflows
# 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
Application Management
# 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
Database Management
# 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>
Service Management
# 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 Workflows
# 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>
GitHub Apps Integration
# 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>
Team Management
# List teams
coolify team list
Get current team
coolify team current
List team members
coolify team members list
Server Management
# 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> --resources
Output Formats
The 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=pretty
Architecture
This 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
Development
# Build
go build -o coolify ./coolify
Run tests
go test ./...
Run with coverage
go test -cover ./...
Install locally
go install ./coolify
Contributing
Contributions are welcome!
License
MIT