Documentation · Modes

Modes

Last updated Based on ADR-0012, ADR-0016, ADR-0017, ADR-0021, ADR-0022, ADR-0027

Hetscale runs in one of four modes per node group. The mode decides whether Hetscale may call the Hetzner API; it never changes how a decision is made or explained.

Observe

Read-only. Hetscale uses a Hetzner API token with read permission only, so it cannot create or delete anything even by mistake. It records every decision it would have taken, prefixed “would”. This is the trial mode: 14 days, a day-0 report from your last 30 days of metrics, and polling stops when the trial ends. Per-group Observe is also a permanent feature of every plan: groups drop to Observe on a failed payment or a downgrade, and nodes are never destroyed.

Rehearsal

A supervised dry run before Live: Hetscale creates one node from your template, deploys through your adapter, waits for the load balancer health check, drains it and deletes it while you watch the timeline. Success unlocks Live. Failure produces a report with the failing step and never leaves a node behind. Rehearsal shows the drain window in the timeline, so you see the effect of your setting before Live.

Propose

Each action is proposed with its reason and waits for approval in the dashboard or by email link; unapproved proposals expire.

Live

Hetscale acts inside the minimum and maximum you set. Switching back to a safer mode takes effect immediately. Going Live requires a Read & Write token; Observe’s Read token cannot be upgraded, so you create a second one.

Switching modes

Any mode can be changed at any time. Decisions in every mode use the same inputs: CPU per node and request metrics from the load balancer, read once a minute for groups up to 25 nodes and less often per node for larger ones, inside the Hetzner API budget; load balancer metrics stay at one minute regardless of size.

Example defaults: scale out when CPU is above 75% for 3 minutes; scale in when CPU is below 35% for 10 minutes; a cooldown after every action and a warm-up after a node becomes active. Scale-in is always stricter than scale-out, and it never happens when metrics are missing, stale or rate-limited. A rate-limited response backs off and pauses decisions; it is never read as a missing server.

Every action, in every mode, carries a line in the log with the trigger, the metric values at that moment, the rule that fired, the range it was allowed to act in, and the cost in node-hours.

See what Hetscale would have done with your real data — connect read-only, get your report in minutes.

Connect read-only