Deploy a change

Last updated 2 November 2026

View .md

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.”

Ship a new image, command, env or shape, and make it apply now rather than at the next wake, whenever you release a new version.

What applies when

  • Ports and the sleep-after time (--sleep-after): at once.
  • The image, the command, env and the shape: at the next wake, which starts fresh.
  • Which Volume the Machine has, and its path: at the next wake.
  • The stop grace (--stop-grace): at the next stop.

Apply it now

A Machine that is called often may not sleep for a long time, and runs the old version until it does. Put it to sleep after the change: the sleep ends open requests, and the next one starts the new version fresh.

tonbo machine update app --image registry.example.com/you/app:2
tonbo machine sleep app

A new image under the same tag

A tag is resolved to its digest when you name it, so a push under the same tag changes nothing until you name the tag again:

docker push registry.example.com/you/app:1
tonbo machine update app --image registry.example.com/you/app:1

While the new image is pulled

Tonbo pulls a new image before a wake can use it, and tonbo machine show says pulling meanwhile. A request that wakes the Machine then is answered image_pulling with Retry-After (5 seconds). If the pull fails, wakes are answered image_failed until an update names an image that pulls; tonbo machine show says why it failed.

Through the API

An update through the Management API sends If-Match with the ETag a read of the Machine answered, so a change made by someone else in between is never lost (see Change a Machine). The CLI does this for you. What a wake starts with is on Sleep, wake and stop.