Wawona ships a bundled zsh plus Weston terminal.c on Apple mobile (and a constrained zsh on watchOS). That is an on-device local shell: a native port path inside the app sandbox. No guest OS required.
It is not a VM or container machine. Those are separate, planned Machine kinds for running guests.
Also bundled where the target allows: coreutils, foot, neovim.
Type help in the shell for the catalog. ls $WAWONA_ROOTFS/usr/bin (or ls ../usr/bin from HOME) lists in-process names.
WASM / WASI
Wasm is not platform-native (tradeoff vs a true in-process port), but it gives a portable Wawona Runtime with full App Store compliance: WASI P1/P2 modules plus wpm. Drop a .wasm into Documents (Files / File Sharing) or install from the catalog at repo.wawona.io/search/?channel=wasm with wpm, then run:
wasm ./tool.wasm hello
./tool.wasm helloThe module is a document. Apple does not sign it. The interpreter (Wasmtime Pulley on iPhone) is inside the reviewed app. Native ports stay first-class. See WASM / WASI, Packages, and wasm-wasi.md.
Jailbreak apt (not the store shell)
The App Store / Play Wawona shell has no Debian apt. Optional long-tail software there is WASM / WASI via wpm only.
On a jailbroken iPhone / iPad (NewTerm + Sileo), add https://repo.wawona.io/ and apt install iOS .deb packages (rootless and rootful). Bookmark /jailbreak/.
On sideloaded Termux (Android), add the same APT URL. That is not jailbreak and not Play. Bookmark /termux/. See Packages.
Linux containers are a separate planned Machines kind.
watchOS
zsh ships with constrained UX. coreutils is excluded. See WATCHOS-SCOPE.
Hub: ios-local-shell.