Skip to content

The worldview

InferNode inherits a design tradition — Plan 9’s — that is coherent, minimal, and different from what most people arrive knowing. Solutions that are idiomatic elsewhere (a REST endpoint, a JSON config, a policy middleware, a client SDK) are foreign here, and they do not compose: they bypass the namespace, break the tool ecosystem, and turn one security chokepoint into two.

This section is the reasoning. If you are evaluating InferNode, it is the part that tells you whether the security claims are architecture or marketing. If you intend to build on it, it is what stops your first design from needing a rewrite.

Four statements, each meant literally.

Not “many things have file-like wrappers” — everything.

ResourcePath
Networking/net/tcp/0/data
Processes/prog/123/ctl
The screen/dev/draw
A language model/mnt/llm
Payments/n/wallet
The audit trail/mnt/audit/log

Unix had this as a good idea applied inconsistently. Plan 9 took it seriously, and InferNode inherits that seriousness. When you add a capability to this system, you add it as files.

A new service is a 9P file server. Not a library, not an RPC endpoint, not a daemon with a bespoke socket protocol. Any program in any language — and any AI agent — uses it with open, read, write. No SDKs, no protocol buffers, no generated clients.

The directory hierarchy carries the structure that other systems put into JSON objects, schemas, and API documentation.

/n/sensors/station-1/temperature

containing 22.5 needs no parser and no specification. Design the tree and you have designed the interface — which is why, in this system, a twenty-line namespace sketch is the design document.

Data crossing a 9P interface is plain text: one value per file, one record per line, fields space-separated, RFC 3339 timestamps. Every shell tool, every pipeline, and every language model consumes that natively without being taught.

JSON is legitimate exactly at external boundaries — an HTTP API you call, a model wire format you speak — and is kept out of the namespace itself. When an adapter must speak JSON outward, the 9P surface is designed as though the adapter will one day be removed, because it will.

The full internal document behind this section is DESIGN-PRINCIPLES.md.