CLI Reference
Complete reference for every ezkeel command, with usage, flags, and examples.
ezkeel up
Deploy any repository to your server in one command. Auto-detects the framework, generates a Dockerfile if needed, builds the image, and deploys with zero-downtime.
| Flag | Default | Description |
|---|---|---|
--server | default server | Target server name (from ezkeel server add) |
--name | auto-detected | Override the app name |
--plain | false | Disable TUI output, print plain text |
--dry-run | false | Show detection results without deploying |
--memory | 512m | Container memory limit (e.g. 512m, 1g) |
--cpus | none | Container CPU limit (e.g. 1.0, 0.5) |
--template | none | Deploy a curated template by slug (e.g. todo-list, url-shortener, static-portfolio). Overrides any positional repo URL. |
Supported frameworks: Next.js, Vite, Express, Hono, Fastify, Remix, Nuxt, Astro, FastAPI, Django, Flask, Go, Rust, Rails, and static HTML. If a Dockerfile is present, it takes priority.
Database detection: Automatically detects PostgreSQL, MySQL, or SQLite via Prisma, Drizzle, package.json deps, Python deps, or .env.example DATABASE_URL.
Examples:
ezkeel server
Manage deployment servers. Add a VPS, list configured servers, or SSH into one.
server add
Register a new server for deployments. The server will be bootstrapped with Docker, Caddy, and the ezkeel agent.
| Flag | Default | Description |
|---|---|---|
--host | required* | Server IP or hostname (*not needed with --hetzner) |
--domain | required | Wildcard domain for apps (e.g. deploy.mysite.com) |
--name | auto from host | Server name (e.g. vps01) |
--user | root | SSH user |
--key | none | Path to SSH private key |
--bootstrap | false | Set up Docker networking on the server |
--ssh-alias | none | SSH config alias (uses your SSH config for proxy/key) |
--hetzner | false | Auto-provision a Hetzner Cloud VPS |
--hetzner-token | or HETZNER_TOKEN env | Hetzner Cloud API token |
--hetzner-type | cpx22 | Server type — current shared-vCPU line: cpx22 (2vCPU/4GB), cpx32 (4vCPU/8GB), cpx42 (8vCPU/16GB) |
--hetzner-location | fsn1 | Datacenter — fsn1, nbg1, hel1, sin (the four with shared cpx22+ in capacity) |
--hetzner-ssh-key | required with --hetzner | Name of SSH key in Hetzner Cloud console |
Example:
server list
List all configured servers:
server ssh
SSH into a configured server:
ezkeel apps
List all deployed apps with their framework, status, and domain.
ezkeel logs
Show recent logs from a deployed app via the ezkeel agent.
| Flag | Default | Description |
|---|---|---|
--lines | 100 | Number of log lines to show |
ezkeel down
Stop and remove a deployed app, including its containers.
ezkeel env
Manage environment variables for deployed apps. Variables are stored in the app manifest and applied on the next ezkeel up.
env set
env list
ezkeel backup
Backup the PostgreSQL database for a deployed app. Runs pg_dump on the server via the ezkeel agent and saves the SQL dump locally.
| Flag | Default | Description |
|---|---|---|
--output | . | Directory to save the backup file |
Example:
ezkeel rollback
Roll back an app to its previous deployment. Before each deploy, the agent automatically tags the running image. Rollback swaps back to that previous image.
ezkeel doctor
Run diagnostic checks on your local machine and remote server. Checks: local Docker, SSH connectivity, remote Docker, agent version, DNS wildcard resolution, and disk space.
ezkeel domain
Manage custom domains for deployed apps. Add your own domain, and Caddy will auto-provision the SSL certificate. You need to point the domain to your server IP with a DNS A record.
ezkeel init
Initialize a new EZKeel project. Scaffolds the directory structure, creates a workspace.yaml, sets up Dev Container and AI persona configuration, and optionally creates a Forgejo repository.
| Flag | Default | Description |
|---|---|---|
--forgejo-url | none | Forgejo instance URL (e.g. https://git.ezkeel.com) |
--forgejo-token | none | Forgejo API token for creating the repository |
--infisical-url | none | Infisical instance URL (e.g. https://secrets.ezkeel.com) |
--infisical-client-id | none | Infisical machine identity client ID |
--infisical-client-secret | none | Infisical machine identity client secret |
--infisical-org | none | Infisical organization ID to create the project in |
Example:
ezkeel clone
Clone an EZKeel project and set it up locally. Clones the Git repo, injects secrets for the specified environment, and scaffolds the AI config.
| Flag | Default | Description |
|---|---|---|
--forgejo-url | none | Forgejo instance base URL (e.g. https://git.ezkeel.com) |
--forgejo-token | none | Forgejo API token (for cloning private repos) |
--env | dev | Environment to inject secrets for |
Example:
ezkeel secrets inject
Export secrets for the given environment as shell export statements. Reads the Infisical project from workspace.yaml and outputs key-value pairs to stdout.
Example:
ezkeel ai
Run an AI tool with automatically injected secrets. Resolves model names from workspace.yaml, injects the required API key from Infisical, and launches the tool with your prompt.
| Flag | Default | Description |
|---|---|---|
--env | dev | Environment to inject secrets for |
The <tool> argument maps to known AI tools:
claude— Claude Code (requiresANTHROPIC_API_KEY)codex— OpenAI Codex (requiresOPENAI_API_KEY)local— resolves to theai.models.localvalue inworkspace.yaml(e.g.ollama/llama3)
Examples:
ezkeel sync push / pull
Synchronize the AI persona configuration (.claude/ directory) between your local machine and a dedicated ezkeel/persona Git branch. This keeps your AI configuration portable across machines.
Push stashes your current work, checks out the ezkeel/persona branch, commits the .claude/ directory, force-pushes, then returns you to your previous branch.
Pull fetches the remote branch and checks out just the .claude/ subtree into your working directory.
ezkeel plan new / diff
Manage project planning documents in the plans/ directory.
plan new
Create a new dated plan document and open it in $EDITOR:
plan diff
Show the diff of plan changes since the last Git tag:
ezkeel platform install
Install the full EZKeel platform (Forgejo, Infisical, PostgreSQL, Redis, Caddy, Runner) on a server using Docker Compose. Generates secrets, writes config files, and starts all services.
| Flag | Default | Description |
|---|---|---|
--dir | /opt/ezkeel | Directory to install the platform into |
--forgejo-domain | git.ezkeel.com | Domain for the Forgejo instance |
--infisical-domain | secrets.ezkeel.com | Domain for the Infisical instance |
See Installation and Platform Setup for detailed deployment instructions.
ezkeel environment
Manage the project's dev container. Build the container image, start it, or execute commands inside it. Aliased as ezkeel env.
environment build
Build the dev container image defined in .devcontainer/devcontainer.json.
environment start
Start the dev container (runs devcontainer up).
environment exec
Execute a command inside the running dev container.
| Flag | Default | Description |
|---|---|---|
--dir | current directory | Project directory containing .devcontainer/ |
Prerequisite: Requires the Dev Containers CLI. Install with npm install -g @devcontainers/cli.
ezkeel platform setup
Print a step-by-step guide for creating admin accounts after ezkeel platform install. Reads credentials from the platform's .env file.
| Flag | Default | Description |
|---|---|---|
--dir | /opt/ezkeel | Platform install directory containing .env |
This guide is also printed automatically at the end of ezkeel platform install.
ezkeel ci status
Show recent CI workflow runs for a repository. Queries the Forgejo Actions API and prints a summary of the latest runs with their status.
| Flag | Default | Description |
|---|---|---|
--forgejo-url | none | Forgejo instance URL (e.g. https://git.ezkeel.com) |
--forgejo-token | none | Forgejo API token |
--owner | none | Repository owner (user or org) |
--repo | none | Repository name |
Example:
ezkeel ci setup
Generate a CI workflow file for automating deploys or mirroring on push to main. Without flags, creates .forgejo/workflows/deploy.yaml for Forgejo Actions. With --github, creates .github/workflows/mirror.yaml for GitHub Actions instead.
| Flag | Default | Description |
|---|---|---|
--github | false | Generate a GitHub Actions mirror workflow (.github/workflows/mirror.yaml) instead of a Forgejo deploy workflow |
ezkeel pages deploy
Deploy a static site to the EZKeel platform. Uses rsync over SSH to copy built files to the server, where Caddy serves them under the configured pages domain.
| Flag | Default | Description |
|---|---|---|
--host | required | SSH host of the platform server (e.g. user@vps.example.com) |
--platform-dir | /opt/ezkeel | Platform installation directory on the server |
Example:
ezkeel deploy
Build a Docker image, push it to the Forgejo container registry, and deploy it to the production server via SSH. Reads the project name and registry URL from workspace.yaml.
| Flag | Default | Description |
|---|---|---|
--host | required | SSH host for the deployment server (e.g. user@vps.example.com) |
--forgejo-url | required | Forgejo instance URL (used as the container registry host) |
--owner | required | Repository owner (used to namespace the Docker image) |
--env | prod | Target environment (used to select secrets and compose file) |
Example:
ezkeel agent
Interact with AI agents. EZKeel includes 3 built-in agents (app-builder, code-reviewer, devops) and supports custom agents.
ezkeel agent list
List all available agents (built-in and custom).
ezkeel agent run <name> <prompt>
Execute a one-shot agent task. The agent runs the prompt and returns the result.
ezkeel agent chat <name>
Start an interactive WebSocket chat session with an agent. Type messages and get streaming responses.