Leaving Hetscale
Last updated
To leave Hetscale, take its servers out of your node groups, archive them, delete the token in the
Hetzner Console, cancel the plan and ask us to delete your account. Cancelling, archiving and
deleting your account remove nothing from your Hetzner project. The servers Hetscale created that
still run, the snapshots it took of your seed and its placement groups all stay there with their
hetscale.dev labels. Hetzner bills the servers and snapshots until you delete them. Your traffic
never passed through Hetscale, so your load balancer keeps serving the whole time.
What if I only observed?
A Read token cannot create, change or delete anything, and Hetzner enforces that, so an Observe trial leaves nothing in your project. Hetscale erases its copy of the token on the date the project page shows, or at once with Erase token. Delete the token in the Hetzner Console too (step 4). Write to us if you want your account deleted (step 7).
How do I leave, step by step?
- Take Hetscale’s servers out of each node group. There are two ways:
- While the project’s token works, lower Max in the node group’s Settings to the number of your own servers. Lower Min with it if it is higher. Hetscale’s servers then drain, all of them at once, so lower Max only when your own servers can carry the traffic. In a paused node group the change applies once you resume it. Wait until the node group’s Servers page lists none of Hetscale’s servers. Since its promotion, a seed you promoted counts as one of Hetscale’s servers, so this way can remove it too. To keep it, use the other way.
- Or an admin erases the project’s token: Projects → the project → Overview → More → Erase token. Hetscale stops reading and changing the project at once, and its Live node groups pause. The servers it created keep running and stay targets of your load balancer. You remove them yourself, as described below.
- Delete the snapshots no release needs, if you used the first way. While the token still works, an admin chooses Delete unused snapshots on the node group’s Deployment page and confirms. It deletes the snapshots that no release, server or new server needs. It keeps the current release’s, release v1’s, those of the two newest other releases for a rollback, and that of any release a running server booted from, so do it after Hetscale’s servers have left. You delete the kept ones later yourself (Releases, rollouts and rolling back). Once the token is erased, the action is no longer offered, and you delete every snapshot yourself.
- Archive each node group, then the project. Archive is in the More menu of the node group’s Overview. It stays disabled until no server Hetscale created is left in the node group, or until the project’s token is erased or Hetzner no longer accepts it. It is also disabled while a Rehearsal runs. Its tooltip says why. Its confirmation names the servers Hetscale created that stay in your project. Once every node group is archived, Archive in the project’s More menu archives the project and erases its token at once if one is still stored (Archive and restore).
- Delete the token in the Hetzner Console: your project → Security → API tokens. Erasing or archiving deletes only Hetscale’s copy. The token itself stays in your Hetzner project until you delete it there. If the Read token you created for the trial is still listed, delete it too. Deleting the token stops Hetscale from that moment, though a Hetzner action already accepted may still complete. If you want Hetscale to stop at once, do this first. Its servers then stay targets of your load balancer, as they do after an erase.
- Take Hetscale out of your pipeline. If a deploy workflow calls Hetscale’s API, for the deploy lock, releases, rollouts or the list of servers, remove those steps. Then Revoke the tokens it used on the API tokens page. Every request with a revoked token is refused.
- Cancel the plan, if you have one. The owner opens Billing and chooses Cancel plan in
its More menu. The plan runs to the end of the period you paid for, and scaling and healing
go on for 14 days after it. Nothing is removed from your Hetzner projects. The confirmation lists
what stays: the servers Hetscale created and its snapshots, each with about what they cost a
month at list price, and their
hetscale.devlabels. - Delete your account or the organisation. Write to support@hetscale.com from your account’s address. For an organisation, its owner writes. We delete it within 30 days. An organisation can be deleted only once its plan has ended: after you cancel the plan on the Billing page, the deletion waits until the end of the period you paid for. One that never had a plan can be deleted at once. Its data goes with it, its audit log included; payment records stay, without names. Deleting your account deletes the organisations you own alone, under the same rule. In the others it works as if you left. In an organisation you own with other members, use Make owner first. If you want your organisation’s data before it is deleted, say so in the same mail. The data processing agreement says what we send, and the privacy page says what is kept.
- Remove what stays in your Hetzner project (below). Then check your Hetzner bill for a few days afterwards: a server, snapshot or IPv4 address you missed keeps showing up there.
What stays in my Hetzner project?
| What | How to recognise it | Does Hetzner bill it? |
|---|---|---|
| The servers Hetscale created | Named hetscale-<group prefix>-<number>, labelled hetscale.dev/managed=true, hetscale.dev/group, hetscale.dev/node and hetscale.dev/op. After an erase they still run and are still targets of your load balancer, so they keep receiving requests. This includes a server kept after a failure. |
Yes, by the hour, like any server |
| Their public addresses | The Primary IPs Hetzner gave them: IPv4 and IPv6 if your seed has them. They carry no Hetscale label. | IPv4 yes, assigned or not; IPv6 no |
| The snapshots of your seed | Description Hetscale release v<n> of <node group name>, with the node group’s name at the time. Labelled hetscale.dev/managed=true, hetscale.dev/group and hetscale.dev/op. Each holds the seed’s whole disk, the .env file included. |
Yes, by size, every month |
| Placement groups | Named hetscale-<group prefix>-pg-<n>, with the same three labels as the snapshots |
No; a project holds up to 50 |
| Delete protection | On what you confirmed at the Delete protection step before the first Rehearsal. By default that is your seed, your servers behind the load balancer and the load balancer. Hetscale turns protection on, never off. | No |
| A seed you promoted | Renamed hetscale-<group prefix>-0, with Hetscale’s four labels beside your own. It is still your original server. A server created in its place would be billed at Hetzner’s price for new servers today. |
Yes, as before |
What Hetzner bills is as its own pages state it on 18 October 2026: an IPv4 Primary IP is billed whether a server holds it or not, an IPv6 one is free (Primary IPs, billing FAQ), and placement groups are free, up to 50 in a project (Placement groups).
Hetscale created nothing else: no load balancer, network, firewall, volume, floating IP, SSH key or certificate. Its servers joined your networks and firewalls when they were created.
How do I find what Hetscale created?
These commands use the hcloud CLI with a Read & Write token of your own for the project. Create the
token in Security → API tokens and give it to hcloud context create <name>, which asks for
it. When you are done, delete the token in the Console and the local context with
hcloud context delete <name>.
hcloud server list -l hetscale.dev/managed=true -o columns=id,name,status,ipv4,labels
hcloud image list -t snapshot -l hetscale.dev/managed=true -o columns=id,description,image_size,created,protection
hcloud placement-group list -l hetscale.dev/managed=true -o columns=id,name,servers
The server list includes a seed you promoted. Do not delete it unless you mean to. To list one node
group only, add its group label:
-l hetscale.dev/managed=true,hetscale.dev/group=<group ulid>. Read the value from the labels
column of the server list. It is the same on every server of the node group. The public addresses,
the load balancer’s targets and delete protection carry no Hetscale label:
hcloud primary-ip list -o columns=id,ip,type,assignee,auto_delete
hcloud load-balancer describe <load-balancer>
hcloud server list -o columns=id,name,protection
hcloud load-balancer list -o columns=id,name,protection
How do I remove it?
Start only once Hetscale can no longer change the project, meaning its token is erased or deleted. Remove Hetscale’s servers one at a time, and only as many as your own servers can carry. For each server:
hcloud load-balancer remove-target --server <server> <load-balancer>
hcloud server delete <server>
Between the two commands, wait at least the node group’s drain window, which is 60 seconds unless
you changed it. As of September 2026, according to Hetzner’s support, a load balancer keeps a
removed server’s open connections alive for up to 5 minutes and sends it no new ones. If your
application needs a clean stop, run hcloud server shutdown --wait <server> before the delete.
--wait-timeout raises its default wait of 30 seconds.
A server’s Primary IPs are deleted with it when auto_delete is on for them. A Primary IP that
stays shows no assignee, and Hetzner still bills it if it is IPv4. Delete it with
hcloud primary-ip delete <primary-ip>.
Then delete the snapshots and placement groups you no longer need. Keep any snapshot you want as a
copy of your seed. Delete a placement group once no server you keep is in it (check the servers
column):
hcloud image delete <image>
hcloud placement-group delete <placement-group>
On what you keep, remove Hetscale’s labels by name, so nothing in the project still marks them as
Hetscale’s. --all would remove your own labels too:
hcloud server remove-label <server> hetscale.dev/managed hetscale.dev/group hetscale.dev/node hetscale.dev/op
hcloud image remove-label <image> hetscale.dev/managed hetscale.dev/group hetscale.dev/op
hcloud placement-group remove-label <placement-group> hetscale.dev/managed hetscale.dev/group hetscale.dev/op
Give a promoted seed a name of your choice with hcloud server update --name <name> <server>.
Delete protection costs nothing. On a server it blocks deletion and rebuilds; on a load balancer it blocks deletion. Turn it off only on what you want to delete:
hcloud server disable-protection <server> delete rebuild
hcloud load-balancer disable-protection <load-balancer> delete
What does this not cover?
- What you created yourself. Your seed, your other servers, the load balancer, networks, firewalls and volumes stay as they are, apart from the delete protection above.
- Removing everything Hetscale created in one go. No button does that, and nothing is deleted for you when you cancel or when your account is deleted.