Choose a cloud provider for the fleet
Money first. Every provider below bills a machine until it is destroyed, whether it does work or not. The fleet's spend limits are checked before every purchase, in one currency: Hetzner prices in euros and AWS in dollars, so set the limits in the currency of the provider you rent from. A fleet whose limits are in another currency refuses every purchase and says why. Start with a limit that admits one small machine.
The fleet rents from two providers today. They were chosen as opposites — one simple, one with everything — so that the fleet works with both and a third is a small step. This page says what each offers, what it asks for, and what it costs. For the workflow, see Rent machines to run the work; for every setting and task, the Fleet reference.
At a glance
| Hetzner Cloud | Amazon EC2 | |
|---|---|---|
| Token in Fleet settings | The project's API token | <access key id>:<secret access key> |
| Region names | fsn1, nbg1, hel1, … |
eu-north-1, us-east-1, … |
| Prices in | EUR | USD |
| Billing | Every started hour | By the second, at least one minute |
| Spot machines | No | Yes, and the provider can take one back |
| arm64 machines | Yes, when the catalog shows them available | Yes (Graviton) |
| Bootstrap payload | Up to 32 KiB | Up to 16 KiB |
| Managed image registry | None: the fleet runs its own | ECR, with a credential that lasts 12 hours |
| A retried purchase | Recognised by the machine's name | Recognised by EC2's client token |
| SSH keys per machine | Several | One |
Hetzner Cloud
The simple end: plain REST, one token, cheap arm64. Make a dedicated project for the fleet and a token with read and write access to it. Hetzner bills the started hour, so a machine destroyed after a minute costs an hour, and the fleet's own count rounds the same way.
Availability moves by the minute. A type can be sold in one location and not another, and the fleet's catalog lists a type only where Hetzner says it is available right now. Read the catalog — Test on the settings screen, or the type list beside Scale up — before you buy.
Hetzner runs no image registry, so the fleet runs one beside the machines.
Amazon EC2
The hard end: every request is signed with AWS Signature Version 4, spot machines can be reclaimed, and the vocabulary differs everywhere.
- The key. Make an IAM user for the fleet with permission for EC2
(
RunInstances,DescribeInstances,TerminateInstances,DescribeInstanceTypes,DescribeInstanceTypeOfferings,DescribeSpotPriceHistory,CreateTags), the price list (pricing:GetProducts) and, for images, ECR (ecr:GetAuthorizationToken). Enter it asaccess key id:secret— the hub seals it to itself like any other token. - The OS image is an AMI id in the chosen region, such as
ami-0123456789abcdef0, not a name. - Spot. A spot machine costs a fraction of the on-demand price and can be taken back at any moment. When EC2 reclaims one, the fleet marks it Reclaimed, and the work it held returns to the queue. Tick on spot beside Scale up only where losing a machine mid-job is acceptable.
- The price list comes from AWS's price list service, and the spot price from the latest spot history, cheapest zone first.
- Images go to ECR. Its password is minted by an API call and lasts 12 hours; the fleet mints a new one before it runs out, and at once if the registry refuses it in the middle of a push.
Not yet: the AWS adapter is built and tested against a stand-in for the AWS API, not against a real account. The first real run is still owed.