NRP — Namespace Resolution Protocol
neurons.me / suiGn · License: CC0 1.0 Universal — Public Domain
Preamble
The Namespace Resolution Protocol (NRP) specifies how a me:// URI is
resolved from a symbolic address into a concrete value, across a distributed
mesh of surfaces.
It closes the gap between two layers, always composed in this order:
- Semantic resolution — already implemented in
this.me: local, mathematical, derivation-based. The kernel resolves a path entirely offline. - Topological resolution — the NRP’s job: how a requesting surface finds and reaches the surface that holds the target namespace, path, and key material.
me://jabellae.cleaker.me[surface:iphone]/wallet.balance
│ │ │
topological topological semantic
(find the (find which (resolve the
namespace) surface) path locally)
Meaning lives in the namespace. Execution lives in the mesh.
The normative spec lives here. NRP is the contract every module follows —
.me, cleaker, monad.ai, netget, the GUI — so its source of truth sits on
this site, not inside any one implementation. Implementation docs stay with
their code and link back here.
Latest normative spec
NRP v0.3.0 — current. Covers the core resolution grammar, disclosure model, Total Monad Synthesis, and the HTTP + WebSocket transport bindings.
NRP v0.4.0 — draft — in progress, not normative
yet. Binds the address to the Island I = (path, ciphertext, T, A, C):
one path grammar shared with .me, audiences, capabilities; open decisions
are marked.
Historical specs
- v0.2.1 —
archived, implemented mesh draft through
monad.aiPhase 6. Superseded by v0.3.0. - v0.1.2 — first stable working document.
Relationship to cleaker
NRP is not cleaker. Cleaker owns the namespace grammar — parsing and
composing me:// expressions (parseNamespaceExpression, composeNamespace)
— the layer between a raw string and something NRP can act on. NRP itself —
discovery, scoring, forwarding, Total Monad Synthesis, the /nrp WebSocket
binding — is implemented in monad.ai’s kernel, using cleaker purely as a
parsing dependency. If you’re looking for where namespace strings get
parsed, that’s cleaker. If you’re looking for where a namespace gets
resolved to a live surface, that’s NRP, in monad.
Implementation
NRP’s reference implementation is monad.ai: the
monad docs cover the mesh resolver, scoring, the /nrp
WebSocket binding, and the implementation status (what is actually built versus what the spec
describes), separately from the normative document itself.
Apps reaching a monad through netget’s
mesh (rather than talking to monad.ai directly) should read Apps Over Netget in the
netget docs for the addressing contract (/apps/:name)
and the live HTTP+WebSocket pattern built on top of this protocol.
Supplementary docs that live only here (not duplicated in monad’s own docs), and where NRP is implemented: