# Deploy from Git

Koo builds and deploys your app straight from a GitHub repository. Pick a repo and branch, and every deploy runs a [build](/docs/apps/builds) and ships the result as a new immutable [deployment](/docs/apps/deployments-and-rollback) — with logs, metrics, and rollback working exactly as they do for container deploys.

## Connect a repository

1. 
2. 
3.

The source is fixed when the service is created. GitHub is the supported provider today.

## Auto-deploy on push

Auto-deploy is opt-in per service and off by default: turn it on with the service's **Auto-deploy** toggle. Once it's on, a push to the tracked branch arrives as a signature-verified webhook, and Koo queues a build and deploy for you — no console visit needed.

Auto-deploy is gated by plan — see [Billing](/docs/account/billing) for the plan comparison. Leaving the toggle off keeps deploys manual: the service only ships when you deploy it yourself.

## Build in your own CI instead

Prefer to keep the build on your side? Build the image in your CI, push it to a registry, and deploy it as a container. You keep the full deploy pipeline — versioned deployments, rollback, live status — the only part you supply is the build.

1. Build and push the image from your CI pipeline:

   ```bash
   docker build -t registry.example.com/you/app:abc123 .
   docker push registry.example.com/you/app:abc123
   ```
2. Deploy that image to your web service — see [Deploy a container](/docs/apps/deploy-a-container).

To trigger that deploy from the pipeline itself, authenticate your CI with an [API token](/docs/developers/api-tokens) and call the API; or start the deploy from the console after your CI pushes the image.
