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:

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

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:

See also