| English | 中文版 |
Status: Draft Version: 0.2 Date: 2026-05-01 Authors: Ori Lynn / INNO LOTUS PTY LTD Depends-On: NPS-1 (NCP v0.7), NPS-2 (NWP v0.13), NPS-3 (NIP v0.9), NPS-4 (NDP v0.8)
Companion to NPS-AaaS Profile. Where AaaS Profile defines what a service must do to expose Agent capabilities, this profile defines what a node host (daemon, embedded SDK, runtime) must do to participate in the NPS network. The two profiles are orthogonal: a deployment may carry both badges, either, or neither.
Two reader groups:
The document answers one question per level: what does my node have to do to claim L{n}?
Three positions on the activation spectrum:
Every agent registered to an L1+ node carries one activation_mode:
| Mode | Meaning | Daemon role |
|---|---|---|
ephemeral |
Agent is not resident; messages instantiate a fresh process via Agent SDK or equivalent runtime; the process exits when done. | Spawn on demand, garbage-collect after completion. |
resident |
Agent runs in a long-lived process subscribed to its inbox; the daemon pushes inbound frames over a long-lived connection. | Relay inbound frames; never spawn. |
hybrid |
Agent is resident but hibernates when idle; inbound frames wake the process. | Wake the process, then push; track the idle timer. |
activation_mode MUST be present in every AnnounceFrame published by an L1+ node and is
the basis on which senders choose between push and pull for outbound traffic. Wire encoding
is normative in NPS-4 §3.1.
| Dimension | L1 Basic | L2 Interactive | L3 Autonomous |
|---|---|---|---|
| Position | Passive frame I/O | Subscribe and react | Spawn on demand |
| NCP encoding | Tier-1 JSON MUST; Tier-2 OPTIONAL | + Tier-2 MsgPack MUST | + Multiplexed long-lived connections MUST |
| NIP | Ed25519 sign / verify MUST | + Trust-chain validation MUST | + Dynamic sub-NID issuance MUST |
| NDP | Announce / Resolve (static) MUST | + GraphFrame subscription MUST | + On-demand register / deregister MUST |
| NWP | ActionFrame pull MUST | + ActionFrame push + Subscribe MUST | + Query fan-out MUST |
| NOP | Not required | + TaskFrame / DelegateFrame MUST | + DAG execution + K-of-N sync barrier MUST |
| Activation modes | ephemeral only (pull-style pseudo-resident) |
resident MUST; others MAY |
All three; default ephemeral |
| Observability | Per-frame local log MUST | + Prometheus-style metrics MUST | + OpenTelemetry traces MUST |
| Conformance | nps-node-l1 self-test passes |
+ nps-node-l2 self-test |
+ nps-node-l3 self-test + third-party audit (NPS Cloud CA, 2027 Q1+) |
The “+” prefix is cumulative: an L2 implementation MUST satisfy every L1 row; an L3 implementation MUST satisfy every L2 row.
| Req ID | Description |
|---|---|
| N1-NCP-01 | MUST decode and encode every Tier-1 JSON frame referenced by L1 (HelloFrame, AnchorFrame, IdentFrame, AnnounceFrame, ResolveFrame, ActionFrame, CapsFrame, ErrorFrame). |
| N1-NCP-02 | MUST complete the Hello + Anchor handshake against any conformant peer. |
| N1-NCP-03 | MUST listen on a configurable address; the default is 127.0.0.1:17433 (loopback). Cross-host listening is OPTIONAL at L1. |
| N1-NCP-04 | MAY implement Tier-2 MsgPack; if implemented, MUST negotiate via HelloFrame. |
| Req ID | Description |
|---|---|
| N1-NIP-01 | MUST generate (on first run) and persist an Ed25519 root keypair with file permission 0600 or platform equivalent. |
| N1-NIP-02 | MUST sign IdentFrames with the root key and verify IdentFrames on every inbound connection. |
| N1-NIP-03 | MUST expose a stable NID of the form urn:nps:node:<authority>:<id>, where <authority> is the operator’s domain or organization identifier and <id> is a stable per-host identifier. |
| N1-NIP-04 | MAY issue session sub-NIDs to hosted agents (REQUIRED at L3). |
| Req ID | Description |
|---|---|
| N1-NDP-01 | MUST emit AnnounceFrames carrying activation_mode = "ephemeral" for every hosted agent (since L1 supports only ephemeral). |
| N1-NDP-02 | MUST sign every AnnounceFrame with the publisher’s IdentFrame private key. |
| N1-NDP-03 | MUST respond to ResolveFrames for any agent listed in the local registry. |
| N1-NDP-04 | MAY subscribe to GraphFrame updates (REQUIRED at L2). |
| Req ID | Description |
|---|---|
| N1-NWP-01 | MUST maintain a per-NID inbox accepting ActionFrame deliveries. |
| N1-NWP-02 | MUST persist undelivered inbox contents across daemon restart. |
| N1-NWP-03 | MUST serve inbox contents via NWP pull (the receiving agent retrieves on demand). |
| N1-NWP-04 | MUST handle at least 100 QPS of pull requests on commodity hardware (baseline; not a stress benchmark). |
| N1-NWP-05 | MAY push frames over a long-lived connection (REQUIRED at L2). |
Not required at L1. An L1 node receiving a TaskFrame MAY return NPS-CLIENT-NOT-IMPLEMENTED.
| Req ID | Description |
|---|---|
| N1-OBS-01 | MUST write a structured log entry for every frame received and sent. |
| N1-OBS-02 | Each entry MUST include: ISO 8601 UTC timestamp, direction (in/out), frame type, source NID, destination NID, frame size in bytes. |
| N1-OBS-03 | Log destination is implementation-defined (file / stdout / journal); local-only storage is acceptable. |
An L1 implementation is certified by passing the nps-node-l1
test suite. A passing implementation MAY include the NPS-NODE-L1-CERTIFIED.md template
(provided in the conformance directory) at its repository root to declare compliance.
L2 = L1 + every “+” row in the L2 column of §2. Headline additions:
seq window.topology.snapshot / topology.stream reserved query types (NPS-2 §12); see NPS-AaaS-Profile L2-08.resident mode MUST be supported; hybrid MAY be supported.Detailed requirement IDs (N2-NCP-* etc.) are TODO; tracked under NPS-Roadmap Phase 2.
L3 = L2 + every “+” row in the L3 column. Headline additions:
ephemeral.traceparent propagation) MUST be emitted for every inter-node hop.L3 introduces the spawn-on-demand requirement. A node MUST be able to instantiate an
ephemeral agent process from a spawn_spec_ref (see NPS-4 §3.1) without a pre-existing
process; the spawned process MUST receive its target frame within an implementation-defined
startup budget (recommended: ≤ 2 s for headless agents). The schema of spawn_spec_ref
content is standardized at L3 in a future companion document (NPS-Daemon-Spec).
Detailed requirement IDs (N3-*) are TODO; tracked under NPS-Roadmap Phase 3.
This profile depends on three additive fields on NPS-4 NDP v0.8 AnnounceFrame (0x30):
| Field | Required | Used by |
|---|---|---|
activation_mode |
REQUIRED for L1+ publishers; OPTIONAL for receivers (default ephemeral if absent, for backward compatibility with NPS v1.0-alpha.2 nodes) |
All levels |
activation_endpoint |
REQUIRED for resident / hybrid publishers |
L2, L3 |
spawn_spec_ref |
OPTIONAL; meaningful for ephemeral and hybrid cold start |
L3 |
The normative field definitions, JSON example, and backward-compatibility rules live in
NPS-4 §3.1 and the corresponding entry in
spec/frame-registry.yaml.
| Level | Document | Reference suite |
|---|---|---|
| L1 | conformance/NPS-Node-L1.md |
.NET 10 / xUnit (this release) |
| L2 | conformance/NPS-Node-L2.md |
TODO (NPS-Roadmap Phase 2) |
| L3 | conformance/NPS-Node-L3.md |
TODO (NPS-Roadmap Phase 3) |
A passing implementation MAY copy the NPS-NODE-L{n}-CERTIFIED.md template from the
conformance directory to its repository root as a public claim of compliance.
Third-party certification is targeted for L3 in 2027 Q1+ via NPS Cloud CA and is not available at this release.
| Profile | Question answered |
|---|---|
| NPS-AaaS | “Is my service a compliant Agent-as-a-Service provider?” |
| NPS-Node | “Is my host a compliant participant in the NPS network?” |
A deployment may carry both badges, either, or neither. An AaaS Anchor Node operator MUST satisfy Node-Profile L1 for the daemon hosting the Anchor (formerly “Gateway Node” prior to NPS-CR-0001). An Anchor that maintains an active member registry and claims AaaS L2-08 MUST also satisfy Node-Profile L2.
| Version | Date | Changes |
|---|---|---|
| 0.2 | 2026-05-01 | M8 cross-profile contract clarification. §4 NWP bullet extended: Anchor Nodes at L2 MUST implement topology.snapshot / topology.stream (NPS-2 §12; AaaS L2-08 reference added). §8 relationship paragraph: SHOULD → MUST for Node-Profile L1 on Anchor hosts; explicit MUST for Node-Profile L2 when claiming AaaS L2-08. Depends-On bumped: NCP v0.7 → v0.6, added NPS-2 (NWP v0.13), NIP v0.9 → v0.6, NDP v0.8 → v0.6. |
| 0.1 | 2026-04-24 | Initial draft: three-level node compliance (L1/L2/L3), activation_mode model, L1 detailed requirement IDs, L1 conformance suite reference, AaaS Profile relationship |
Copyright: LabAcacia / INNO LOTUS PTY LTD · Apache 2.0