Halo v1 is live — read the launch notes.

Deploy from git

Connect a repo once. Every push builds and deploys.

Halo’s git integration watches a branch and ships every commit. Pull requests get isolated preview URLs that survive until the PR closes.

Connect a repository

bash
halo link

The CLI walks you through:

  1. Choose a provider

    GitHub, GitLab, or Bitbucket. OAuth handshake happens in your browser.

  2. Pick a repo

    Halo lists every repo you can read. Selection is scoped per-org.

  3. Confirm the production branch

    Defaults to main. Override with --prod-branch develop.

After linking, every push to the production branch triggers a build. Every push to a non-prod branch creates a preview deployment.

Deployment lifecycle

Build

Halo runs your build command in an isolated container with the Node, Go, or Python runtime your halo.json declares. Build output is uploaded to the edge cache.

Deploy

Each deployment gets a stable URL of the form <project>-<hash>.halo.app. Aliases (production domains) flip atomically.

Rollback

halo rollback reverts the production alias to the previous deployment. Takes effect at the edge in under 5 seconds.

Configuration

Drop a halo.json at the repo root:

halo.json
json
{
  "framework": "next",
  "build": "bun run build",
  "output": ".next",
  "regions": ["iad1", "sfo1", "fra1"],
  "env": {
    "NODE_ENV": "production"
  }
}

Field reference: see halo.json.

Last updated Edit this page
↑↓ navigate open esc close