Deploy with the CLI
Repeatable, scriptable deploys from your terminal or CI pipeline.
The CLI drives the same platform as the dashboard, and is the right tool for anything you want to repeat: deploys from CI, environment promotion, scripted setup.
Install and authentication are covered in CLI install and authenticate.
Set your context once
Most commands accept --org and --project, but setting them once is less noisy:
guidal orgs list
guidal projects list
guidal projects switch my-appConfirm what you are pointed at:
guidal context setCreate and deploy
guidal services create api \
--image ghcr.io/your-org/your-app:v1 \
--port 8080Deploy a new image to an existing service:
guidal services deploy api --image ghcr.io/your-org/your-app:v2Inspect what is running:
guidal services get api
guidal services listConfiguration
guidal env set DATABASE_POOL_SIZE=20 --service api
guidal env list --service api
guidal env delete DATABASE_POOL_SIZE --service apiImport a whole file at once:
guidal env import .env.production --service apiSecrets use a parallel set of commands and are never printed back:
guidal secrets set STRIPE_API_KEY --service api
guidal secrets list --service apiScaling and rollback
guidal services scale api --replicas 3
guidal deployments list --service api
guidal deployments rollback --service apiLogs and metrics
guidal logs query --service api
guidal logs deployment --service api
guidal metrics service apiDeploying from CI
CI cannot open a browser, so it authenticates with an API key instead of guidal login. Create one, store it as a secret in your CI provider, and export it as GUIDAL_ACCESS_TOKEN:
guidal api-keys create ci-deployA minimal deploy step then looks like this:
export GUIDAL_ACCESS_TOKEN="$GUIDAL_TOKEN"
guidal services deploy api \
--image ghcr.io/your-org/your-app:"$GIT_SHA" \
--project my-appSee API keys for scoping and rotation.
Exit codes are stable
The CLI returns distinct exit codes for distinct failures — authentication, not-found, quota, and plan restrictions each have their own. Scripts can branch on them instead of parsing output. The full map is in Troubleshooting.
Discovering commands
Every command and subcommand documents itself:
guidal --help
guidal services --helpAll commands lists the full surface.