Skip to content

Deploying Apps

Every app needs its own git repo with a holden.yml. You register the repo with Holden, and it handles the rest.

Add a holden.yml to your app’s repo:

holden.yml
services:
web:
image: ghcr.io/yourusername/myapp:latest
domain: myapp.example.com
port: 3000
env:
DATABASE_URL: ${needs.postgres.url}
needs:
postgres:
Terminal window
holden app add myapp --repo https://github.com/yourusername/myapp

Holden clones the repo, reads holden.yml, and deploys immediately. When you push changes, Holden picks them up via webhook (or within 5 minutes via polling).

For monorepos, specify the path to holden.yml:

Terminal window
holden app add frontend --repo https://github.com/you/monorepo --path ./apps/frontend
holden app add backend --repo https://github.com/you/monorepo --path ./apps/backend

App IDs must be unique. Valid app IDs: lowercase letters, numbers, and hyphens. Must start with a letter.

  • myapp
  • my-app
  • my-app-2
  • MyApp
  • 2myapp