Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Gaps to host apps — and no containers

Do not say “you can run host apps on ctos.” A host app here means a program you already run on Linux or macOS: a shell, Python, a browser, a Docker/OCI container, a glibc ELF you exec. Today’s guest can run the probed samples only. Closing the gap is Planned in pieces, not a product claim.

./scripts/docker-smoke.sh is a host harness (build the kernel inside a Linux container, then QEMU). It is not a guest container runtime. ctos is not a container host.

Hub: overview.md. Porting: building-or-porting.md. Filesystem: filesystem.md.

Site source of truth: Hosting apps / containers. This page is extra stance. HTTPS at https://ctos.artof.link is Verified (2026-09-11 after #30).

What a host app needs vs what exists

Need (typical host app)On ctos todayStatus
A process you execOne linked kernel ELF. Standing EL0 is a dual-SVC stubPlanned (loader + ABI). Not started.
POSIX / glibc / muslCustom aarch64-ctos.json, os: none, no libcNot easy, not started.
Files (open / a disk)No VFSPlanned memfs → virtio-blk → FAT/xv6-like
Sockets / HTTPNo virtio-net, no stackPlanned at best; not a Now mile
Shell / TTY / PythonOne injected UART byte; no interpreterNo until ABI + FS + line discipline
Isolated userspaceFirst miles + live .text tear; PAN / full teardown missingIsolation Planned
Preemption / SMPCooperative EL1, one vCPUNo on this horizon
Containers (OCI / Docker / k8s as the guest)NothingNo. See below.

The easiest thing you can add today is still an in-tree no_std coop EL1 task — not a host binary.

Containers: no

ctos will not run containers as a guest feature on this horizon.

  • No OCI image pull, no runc, no cgroups, no Linux namespaces, no overlay FS, no containerd/CRI.
  • A Linux Docker/Podman host that builds this kernel is unrelated. That smoke does not make QEMU virt a container host.
  • “Run Alpine on ctos” / “k8s node” is the same class of claim as “POSIX port is easy.” It is not.

Do not write a container roadmap that skips process ABI, a filesystem, and isolation. Those are earlier Planned gaps. Do not mint a new FR ID for containers.

Honesty

ClaimProbeStatus
Guest is not a container hostSource: no OCI/runc/cgroup/namespace code in src/Verified (absence)
Host docker-smoke.sh builds the kernelLedger Docker rows (sponsor / GHA)Separate claim — host harness only
A host app (Linux ELF, shell, Python) runs in the guestNo such serial markerPlanned
Guest is a container hostNo OCI/runc/cgroup codeVerified absence; non-goal (not a later Planned feature)

File presence of this note is not an app runtime. See the honesty ledger.