Build a custom machine
Versioning and changelog
SDK 1 is a promise: every call in it keeps working, with the same names, on every Ownbox on SDK 1. A machine says
which it was built on with requires.sdk, and an Ownbox on an older SDK refuses it with sdk_too_new. The manifest
format is machine: 2. The Ownbox version a machine needs is requires.box: an older Ownbox refuses it until its
next update arrives.
What would break a machine never changes within SDK 1: a call's name, an argument's name or meaning, the shape of an
answer, or a refusal's code. A new call, a new optional argument, a new field in an answer, or a new code can
arrive at any time, so read answers by their keys and handle a code you do not know. The names under Not yet are
kept: m.menu and m.activity arrive in SDK 1; m.store, m.query, m.media and m.upload are reserved.
| Date | Change |
|---|---|
| 2026-10-14 | resources.class sets the memory, CPU and processes a machine gets; an Ownbox refuses a class its memory cannot hold. |
| 2026-10-14 | A new version of an installed machine, sent from its files, is that machine's update. |
| 2026-10-14 | After a failed check, your AI sends the fixed files to the same build. |
| 2026-10-14 | The name custom machine, in every word a person reads. This guide's old address forwards here. |
| 2026-10-13 | packages: from the Ownbox's own list, installed from its own copies. |
| 2026-10-13 | A custom machine on a partner's Ownbox installs on Ownbox's yes. |
| 2026-10-13 | A machine's pages are drawn in the Ownbox's own look: screens, cards, settings and Run now. |
| 2026-10-12 | screen.json v1, checked before anyone sees it. |
| 2026-10-12 | Build a machine on the Ownbox: the check and the two dry runs before the owner's yes. |
| 2026-10-12 | m.store, m.query, m.media and m.upload reserved. |
| 2026-10-12 | machine: 2, one manifest for every machine. |