Rules for Machines
Last updated 2 November 2026
Machines are not open yet. These pages describe Machines as they will open; until then, a create answers region_not_offered (422), “Machines are not offered in any region yet.”
Check your Machine against these rules before you rely on it: each keeps its data safe, its requests answered or its bill small.
Each rule links to its page, which shows what to write and what not to.
Keep state
- Keep what must last in its database or on its Volume
- Reconnect, and read the clock again, after a wake
- Await synced() before you answer
- Open the database with the settings the Machine gives you
- Handle SIGTERM: sync and exit within the stop grace
- Finish the work before you answer, or keep the request open while it runs
Requests
- Listen on 0.0.0.0, at a port you declare
- Start listening within seconds
- Keep a port private unless it must be public
- Check your own users’ credentials on a public port only
- Call a private port with a personal key or an exchanged token
- Retry a 503 after its Retry-After
Images and changes
- Name the smallest shape that fits
- Build the image for linux/arm64
- Use a glibc-based image when the Machine opens its database
- Name the tag again after you push to it
- Put the Machine to sleep to apply a change now