Names
sys and one letter, for each part with an interface of its own. The register below is the one list of them: the bar at the top of every site's pages is drawn from it, and a name is written there before it is used anywhere else.
The rule
A part gets a name when it has an interface of its own that other code is written against, and could in principle be replaced or used elsewhere: a language, an IR, the kernel's interface, a command language, a protocol. Anything else is a directory of a part.
So the file server and the disk driver have no part's name: they are tasks of sysk's system, behind its manifest and its shell. The terminal is a task too, but what it speaks earned a name (2026-10-14): syst, what sysk sends and a host shows, an interface the host on the person's machine is written against, and that postterm could one day speak. The files protocol might earn one, once it is what more than sysk's tasks are written against; three servers speak it already. And drivers stay out of the kernel whatever they are called: each is a user task holding a device capability, and the kernel only routes its interrupts, maps its device's page and fences it in with PMP. A device that reads and writes memory itself is fenced in by proof instead: since sysk 042 every virtio driver lends its buffers through one queue in the kernel's device file, which knows no device's requests.
The network is drawn along that line. sysn is the protocol stack: plain sysp that turns bytes into bytes, with no tasks or channels of its own, so it is proven and tested on its own (since 2026-10-14, its site), against QEMU's user network, live and recorded. sysk runs it in a task and serves it as /net; the network card's driver beneath it is sysk's, like the disk's, and has no part's name: it is sysk/net.
Below a part
Inside a part, names come in three more levels (2026-10-17). A name never says sys again, and a slash, as in branches and in sysk's tree, joins a part to what is in it. The slash makes a name, not a path: sysf/pool is in sysf/fs/pool.sysp.
| Level | Named | Examples |
|---|---|---|
| a part | sys and one letter, in the register below | sysf, sysn, syst |
| a layer of a part | a short noun, three letters where it reads well: its file's name and its public names' prefix; from another part, the part, a slash, the noun | sysf/ptr, sysf/pool, sysf/obj, sysn/eth, sysn/udp; in code pool-fetch, obj-create |
| a task of sysk | servers a noun and d, drivers their device, programs the command typed | sysk/fsd, sysk/netd, sysk/disk, sysk/rng |
| a word | a plain word, rare: for what people handle themselves, across parts or off the machine | pack: a snapshot, or what changed between two, made into one file for a backup disk or another machine, every block checked on arrival (sysf 030, 031; signed when sysc signs) |
Within its part a layer is its noun alone (pool asks the disk for blocks); the slash is for docs and specs that cross parts (sysf/pool asks sysk/disk). Two parts may have layers of one noun, sysf/bytes and sysn/bytes: that is what the part is for. A layer's name moves with its code: sysf/sha becomes sysc/sha. Commits and branches name features, not layers: sysf 003: names on sysf/003-names.
The alphabet so far
The register
| Name | What | Its interface | Status | Where |
|---|
Read from kit/parts.js. Built: in use. Building: under way. Planned: decided, not started. Candidate: a name kept for a part that may earn it.
Not to take
| Name | Why not |
|---|