# `gno.land/r/moul/x/plan9/dev/v0` **The chain as a Plan 9 device tree.** Everything a realm normally reaches through an import of `chain/runtime` is published here as a file instead, so it can be read, listed, bound and unioned like anything else. ``` cat /dev/sysname the chain id cat /dev/height the block height cat /dev/session what a delegated key is allowed to touch ``` | device | contents | |---|---| | `caller` | pkgpath of the realm that crossed into this read | | `domain` | the chain domain | | `drivers` | the table itself | | `height` | current block height | | `null` | always empty | | `random` | sha256 of chain id and height, hex; block-deterministic, **not** unpredictable | | `session` | the calling key's session scope, one `AllowPath` per line | | `sysname` | the chain id | | `time` | block time, RFC3339 | | `user` | the origin caller's address | | `zero` | endless NUL bytes; reads exactly what you ask for | A device is code, not storage: reading `/dev/height` runs a function, so it is never stale. ## The cross-realm mount This realm posts its tree to [`r/moul/x/plan9/ns`](../../../../../r/moul/x/plan9/ns/v0)'s `/srv` at deploy time, so any account can bind it into their own namespace and nobody has to import this realm to use it: ``` bind /srv/dev /dev ``` That is the mechanism the whole experiment turns on: an interface value published by one realm, stored by another, and called back later from a read-only `Render`. Gno has no dynamic dispatch by path, so a mount cannot be a client pulling a server by name; `/srv` is not a convenience here, it is the only available mechanism, which is a pleasing accident. The tree is read-only, like every [`synfs`](../../../../../p/moul/x/plan9/synfs/v0) tree: the files have no `Write`, so grafting this into a stranger's namespace cannot be turned into a write against this realm. ## Why `/dev/session` is the interesting one A gno.land account session is a delegated key scoped to a list of path prefixes. That is Plan 9's "the namespace *is* the capability set", rediscovered thirty-four years later, minus the ability to look at it as a tree. This file prints it. Design and analysis: [moul/gno-contracts#136](https://github.com/moul/gno-contracts/issues/136). --- **Not affiliated with Plan 9.** Plan 9 from Bell Labs is the work of the Computing Science Research Center at Bell Labs; the name and the marks are theirs, and the copyright is held by the [Plan 9 Foundation](https://p9f.org). This realm borrows the vocabulary and none of the code: it is an independent homage, asking what that ecosystem's spirit looks like on a chain. Full attribution: [NOTICE](../../../../../NOTICE.md). --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** โ€” moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **Dependency graph:** ![gno.land/r/moul/x/plan9/dev/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/moul/x/plan9/dev/v0/deps.png) > ๐Ÿงช **Highly experimental โ€” potentially vibe-coded.** Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).