One ISO. Two install profiles. Six layers.
The kernel is a hard fork of Linux 6.12 LTS. Five existing subsystems get capability-aware modifications; three new subsystems get added. The userspace replaces systemd with coconutd. The shell is a Wayland compositor in Rust.
Hover any layer. The kernel layer is where the work is.
hover · focus · or tap a row · L0 + L1 are where Coconut OS does its work · L2 already ships
Five subsystems modified · three new · one userspace bridge.
The fork is intentionally narrow. Existing subsystems get capability-aware hooks; the new subsystems carry the agent surface. Everything above the kernel — coconutd, the shell, the brokers — talks to a stable syscall ABI from v1.0.
Eight new syscalls — the full agent API.
full signatures · error code matrices · ABI commitments land with the LLD drop · syscall range is reserved through LKML at Sprint 1
From a libcoconut call to a scheduled AID — six stages, one syscall.
- userspacelibcoconutagent_spawn(manifest, cap_set)thin libc wrapper · serializes manifest + caps to CBOR
- handoffsyscallsyscall tablesys_agent_spawn · #472trap into kernel · arg copy · auditable entry point
- handoffkernel/agentspawn dispatcheragent_spawn_dispatch()validate manifest sig (Ed25519) · allocate AID · build cap_set
- security/coconutLSM presentationlsm_coconut_agent_spawn_hook()caller holds CAP_AGENT_SPAWN? · subset-of-parent caps check
- handoffkernel/audit/coconutaudit appendaudit_chain_append(ev=spawn)BLAKE3(prev_head || event) · per-CPU ring · sealer kthread
- kernel/schedscheduler registersched_register_aid(aid, lane)agent gets a fair-share lane · cgroup populated · READY
Capability presentation lives in the syscall hot path. The LSM hook runs before any privileged operation reaches the relevant subsystem — that's the property userspace daemons and eBPF can't give you.
Eight first-class kernel states. Process abstraction can't carry these.
A process abstraction cannot express "the agent is alive but its capability set just got revoked". Coconut OS makes these states first-class kernel state, visible via agent_audit_query and renderable in Coconut Center.
What /proc is to processes, /agent is to agents.
Every agent gets a directory under /agent/live/<aid>/ with status, the bound caps, attestation chain, a per-agent audit tail, the resource budget, and a child registry. Operators read with cat; auditors verify with coconut audit verify.
Transition guards, allowed predecessors per state, the AID-to-PID mapping rule, the cred-shim approach, agentfs file formats, and the ioctl surface are pinned in the LLD. Public preview shows the shape; full mechanism lands with the LLD drop.