Skip to content

Infra states and deploys

This page is part of Deploying from CI/CD.

State What runs What it costs a week (estimate, team-scale.md) Webhooks Jobs and sessions A merge to main How to get back
up System node, hangar, sandbox pools (gVisor at its warm floor, autoscaling) Idle, the warm floor around the clock ~$78; a typical team week on the schedule ~$157 Received Run Builds, waits for your approval, deploys -
down (nightly, 01:00 to 09:50 ET) System node and hangar; sandbox pools at 0 nodes The system node, ~$18 for a whole week down Received and queued Queued jobs wait (waiting: sandboxes power on at 10:00); creates answer 503 with Retry-After; sessions are suspended (checkpointed) and resume on their next message Skips green; deploys on the next power-up The 09:50 power-up, hangar power up, or bash deploy/gke/power.sh up
held (power.sh hold, hangar power hold) Whatever ran when the hold began: the scheduled power-ups and power-downs skip until it ends That state's That state's That state's Skips green while held It ends by itself at its date and the schedule resumes at its next time (nothing powers up early); power.sh release / hangar power release end it now; power.sh up / hangar power up end it and power on
off (power.sh off) Nothing: every pool at 0 nodes, hangar scaled to 0. Kept: the cluster, the hangar-data disk with the SQLite store, the bucket and checkpoints, images, the IP and the load balancer ~$5, plus GKE's management fee when the free tier is spent on another cluster Not received (the load balancer answers 502). GitHub's are redelivered on the next start if at most 3 days old; Jira's and Slack's are lost Nothing runs; queued jobs and suspended sessions wait in the store and carry on after up Skips green; power.sh up deploys main bash deploy/gke/power.sh up; or when the hold off set ends, the next scheduled power-up brings everything back (without the catch-up deploy)

Taking a week off

hangar status                                 # anything running you want to finish first?
bash deploy/gke/power.sh off --until 2026-10-26   # drain, checkpoint and suspend sessions, then everything to 0
                                              # nodes; held until then so the schedule leaves it off
# ... keep developing: merges build images (images.yml) and skip the deploy, green
bash deploy/gke/power.sh status               # cluster: off (everything at 0 nodes); held until Mon 26 Oct 00:00
bash deploy/gke/power.sh up                   # system pool, hangar (ready), sandbox pools, warm floor and prepull;
                                              # ends the hold; starts deploy.yml for main if it's ahead: approve it
hangar doctor                                 # the deploy, the loops, anything stale

While it's off, nothing receives webhooks. On its next start hangar asks GitHub to redeliver the deliveries it missed, but GitHub keeps them for 3 days only ([redelivering webhooks][redeliver]: "You can redeliver webhook deliveries that occurred in the past 3 days"), so a /hangar label or comment from earlier in the week is lost: add it again. Jira retries a failed webhook up to five times, 5 to 15 minutes apart ([Jira webhooks][jirahooks]), and has no redelivery, so a Jira issue moved during the week is lost: move it again. Slack events and slash commands are lost too. A hold from off ends by itself at its date, and the next scheduled power-up then brings everything back; pick a date after your return, or come back with power.sh up.