VectraOS keeps Plan 9's model whole and changes it only to evolve it. It's written in standard C23, not Plan 9's own C dialect.
bind and mount/proc/srv, /dev/consDropping a Plan 9 property needs an architecture decision record that says why the change is better, not just different.
Address spaces, VMOs, threads, scheduling contexts, handles and rights, ports, channels, rings, and the IRQ, MMIO and DMA-domain objects that let drivers live in user space. It is meant to fit in a weekend of reading.
svcd starts and restarts services. devmgr finds devices and hands each
driver only what its device needs. procfs, nsd, netd and
fsd serve the process table, namespaces, the network and storage.
musl with a VectraOS back end for the POSIX personality, the 9Px client and server framework, and
libvx, the native API straight on the kernel and file servers.
Native C23 programs, Lua scripts, agents, and POSIX ports such as LLVM, Python and Git.
A design that breaks one needs an architecture decision record explaining why.
| # | Rule |
|---|---|
| 01 | The kernel has four jobs: address spaces, threads and scheduling, capabilities, and notification and transfer. Anything that could run as a process does. |
| 02 | Files are for control and discovery; rings are for bulk. A ring is never the only way to reach a service. |
| 03 | The namespace is the authority. A process can name only what it has been given. There is no ambient authority. |
| 04 | One wait. Every event source delivers into a port, and one call waits on all of them. |
| 05 | Time is an absolute deadline with a leeway. No timer-resolution setting, no sleep-in-a-loop. |
| 06 | Threads declare intent, or reserve whole cores; never priorities or affinity masks. |
| 07 | Buffers have one currency: a memory object, a format descriptor and a timeline fence, shared by CPU, GPU, NPU, display, video, network and disk. |
| 08 | Nothing on the frame path waits for a client. |
| 09 | No main thread, no modal loops and no global locks in any protocol. |
| 10 | Data is the interface. State is readable as text in one record format, ndb. |
| 11 | Batch by default. Hot interfaces take arrays with counts. |
| 12 | Local first. Nothing leaves the machine, or the user's own swarm, unless a policy says so. |
| 13 | Start over; don't rebuild the mess. One mechanism per job. No compatibility shims, no portability layers. The POSIX personality is the one exception. |
The design lives in the repository. Everything after the current milestone is provisional: it sets the intended shape, and each part is rewritten against real code when its milestone starts.
| Doc | Contents |
|---|---|
| 00 Overview | Vision, the design rules, the system map, key decisions |
| 01 Kernel and IPC | Kernel objects, capabilities, ring IPC, memory, user-space drivers, scheduling, the POSIX personality |
| 02 Namespaces and swarm | 9Px, namespaces, the canonical file tree, swarm roles, cpu |
| 03 Desktop | Vulkan rendering, the window server, hybrid tiling, theming, AI in the desktop |
| 04 Toolchain | Language policy, build and cross-compilation, the milestones |
| 05 Debugger | dbg: /proc debug files, crash directories, profiling, remote debugging |
| 06 Install and update | Signed reproducible releases, peer-to-peer distribution, trial boots and rollback |
| 07 Native apps | A script-free document viewer for the small web; native chat, mail and feed clients |
| 08 Editor | hx: Acme's plumbing, sam's structural regular expressions, a modern editor's reach |
| 09 Native API | libvx, a sketch |
| 10 After POSIX | A non-binding vision of development after POSIX |
| 11 Storage | The copy-on-write system volume after 9front's gefs, fsd as pager, FAT and ISO 9660 |
| 12 Manual | Plan 9's manual sections, in a modernised AmigaGuide |
| ADRs | Architecture decision records |