Files
start-os/container-runtime/CLAUDE.md
Aiden McClelland 3a63f3b840 feat: add mdns hostname metadata variant and fix vhost routing
- Add HostnameMetadata::Mdns variant to distinguish mDNS from private domains
- Mark mDNS addresses as private (public: false) since mDNS is local-only
- Fall back to null SNI entry when hostname not found in vhost mapping
- Simplify public detection in ProxyTarget filter
- Pass hostname to update_addresses for mDNS domain name generation
2026-02-14 15:34:48 -07:00

1.6 KiB

Container Runtime — Node.js Service Manager

Node.js runtime that manages service containers via JSON-RPC. See RPCSpec.md in this directory for the full RPC protocol.

Architecture

LXC Container (uniform base for all services)
└── systemd
    └── container-runtime.service
        └── Loads /usr/lib/startos/package/index.js (from s9pk javascript.squashfs)
            └── Package JS launches subcontainers (from images in s9pk)

The container runtime communicates with the host via JSON-RPC over Unix socket. Package JavaScript must export functions conforming to the ABI type defined in sdk/base/lib/types.ts.

/media/startos/ Directory (mounted by host into container)

Path Description
volumes/<name>/ Package data volumes (id-mapped, persistent)
assets/ Read-only assets from s9pk assets.squashfs
images/<name>/ Container images (squashfs, used for subcontainers)
images/<name>.env Environment variables for image
images/<name>.json Image metadata
backup/ Backup mount point (mounted during backup operations)
rpc/service.sock RPC socket (container runtime listens here)
rpc/host.sock Host RPC socket (for effects callbacks to host)

S9PK Structure

See ../core/s9pk-structure.md for the S9PK package format.