Layered images
The base is not copied. It is shared.
Three layers, like OCI:
- A read-only base per family:
min(Alpine),node,python. - A read-only layer per service: only what changes.
- Each machine’s own overlay, sparse.
kling mcp add <server> # picks the node/python base by itselfkling mcp add <server> -base min # forces the minimal basekling image ls # BASE column; each base counts onceMeasured
Section titled “Measured”| service | before | after |
|---|---|---|
| context7 | 129 MiB | 39 MiB |
| fetch | 164 MiB | 77 MiB |
| wikipedia-mcp-server | 471 MiB | 54 MiB |
| fleet of 7 | 1300 MiB | 320 MiB + 113 of base |
67 % less disk, same boot and same wake-up.
The OS is what weighs the most
Section titled “The OS is what weighs the most”| Guest | Frozen |
|---|---|
| Ubuntu 24.04 + systemd | 82 MB |
Alpine without systemd (min) |
35 MB |
kling image rm refuses to delete a base used by another layer, a golden or a live machine.
In the repo: docs/three-layers.md · scripts/70-build-minimal-image.sh