> Fetch the index of every Tonbo docs page as Markdown at https://tonbo.dev/llms.txt

# Rules: images and changes

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`](https://tonbo.dev/docs/machines/troubleshooting/manage.md#region_not_offered) (422), “Machines are not offered in any region yet.”

Check these rules when you build an image or change a Machine: each keeps it starting, and running the version you meant.

The examples use the database a Machine opens as [Keep data in its database](https://tonbo.dev/docs/machines/database.md#open) shows, and a `node:http` server.

### Name the smallest shape that fits

With no shape named, the CLI gives a Machine m-8, 8 vCPUs and 16 GiB at up to $0.6888 an awake hour, and every wake reserves ten minutes of it (see [Each shape’s most](https://tonbo.dev/docs/machines/pricing.md#shapes)).

**Do**

```shell
tonbo machine create app --image registry.example.com/you/app:1 --shape s-1 --port 8080
```

**Don’t**

```shell
tonbo machine create app --image registry.example.com/you/app:1 --port 8080 # m-8, 8 vCPUs
```

### Build the image for linux/arm64

Machines run only linux/arm64 images, and a create that names another is refused (see [Build for linux/arm64](https://tonbo.dev/docs/machines/images.md#build)).

**Do**

```shell
docker buildx build --platform linux/arm64 -t registry.example.com/you/app:1 --push .
```

**Don’t**

```shell
docker build -t registry.example.com/you/app:1 . && docker push registry.example.com/you/app:1 # your computer's platform
```

### Use a glibc-based image when the Machine opens its database

The database package is built for Linux arm64 with glibc 2.28 or later, not for musl (see [Requirements](https://tonbo.dev/docs/machines/database.md#requirements)).

**Do**

```text
FROM node:22-bookworm-slim
```

**Don’t**

```text
FROM node:22-alpine
```

### Name the tag again after you push to it

A tag is resolved to its digest when you name it, so a push under the same tag changes nothing until an update names it again (see [A new image under the same tag](https://tonbo.dev/docs/machines/deploy.md#tags)).

**Do**

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

**Don’t**

```shell
docker push registry.example.com/you/app:1 # the Machine keeps the digest it resolved
```

### Put the Machine to sleep to apply a change now

An image, command, env or shape change applies at the next wake, and a Machine that is called often may not sleep for a long time (see [Apply it now](https://tonbo.dev/docs/machines/deploy.md#now)).

**Do**

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

**Don’t**

```shell
tonbo machine update app --image registry.example.com/you/app:2 # the old version runs while requests keep it awake
```
