Skip to main content
Deploying applications on Unkey is in public beta. To try it, select Projects in the dashboard sidebar and create a project. Deployed resources are free until August 1, 2026. We’re eager for feedback, so let us know what you think on Discord, X, or email support@unkey.com.
The unkey deploy command ships a pre-built Docker image to Unkey infrastructure. Unlike the GitHub integration, the CLI does not build your image, you build it yourself (locally or in CI), push it to a registry Unkey can pull from, and unkey deploy creates the deployment and streams status until it is ready. Use the CLI when you want to own the build step: custom CI pipelines, monorepo build systems, pre-release images from a tag, or deploying without connecting a GitHub repository.

Prerequisites

  • The Unkey CLI installed and authenticated (unkey auth login).
  • A project created in your workspace.
  • A Docker image pushed to a registry Unkey can pull from (for example, a public ghcr.io, docker.io, or quay.io image).
We currently don’t support private registries on the platform, this will come in a future release.

Quick start

That single command:
  1. Creates a deployment for my-project/default using the image you supplied.
  2. Monitors the deployment status in your terminal with a live spinner.
  3. Prints the deployment ID and assigned domains once the deployment is Ready.
Example output:

Usage

The first positional argument is the fully qualified image reference, registry/repository:tag or registry/repository@sha256:…. The image must already exist in the registry before you run the command.

Flags

All flags have matching environment variables so the command works cleanly in CI:

Git auto-detection

If you run unkey deploy inside a Git working tree, the CLI auto-fills --branch and --commit from the current repository. Set the flags explicitly if you want to override what it detects (for example, when deploying from a CI runner with a detached HEAD). Dirty working trees are recorded with a (dirty) marker in the source info but still deploy.

Deploy from GitHub Actions

A typical CI flow builds the image, pushes it to a registry, then calls unkey deploy:
Store your root key as a repository secret (UNKEY_ROOT_KEY) with permission to deploy to the target project.

What happens after you run the command

The deployment follows the same lifecycle as a GitHub-triggered deployment, with one difference: the Building image step is skipped because Unkey uses the image you supplied as-is.
  1. Deployment record created with status Pending.
  2. Image pulled from the registry.
  3. Containers scheduled across your configured regions.
  4. Health checks run (if configured in app settings).
  5. Domains assigned and routes updated.
  6. Status moves to Ready.
The CLI exits with a non-zero status if the deployment fails, so CI jobs fail loudly when something goes wrong.

Troubleshoot

Next steps

CLI vs GitHub integration

When to pick the CLI over the GitHub integration

Deployment lifecycle

How deployments progress from create to serving traffic

App settings

Configure regions, health checks, and variables

CLI overview

Install the CLI and authenticate
Last modified on June 11, 2026