design note · comparison · Free Internetworking Peering System
Comparing network-layer packet routing in FIPS with application-layer relay federation and bilateral accounting in fleetmesh.
Disambiguation
This document discusses the Free Internetworking Peering System (an encrypted IPv6 packet routing mesh). For compliance with the US federal standard for cryptographic modules, see FIPS 140-3 Cryptographic Boundary Analysis.
System Comparison
FIPS functions as an encrypted network layer routing IPv6 traffic between Nostr public keys. Fleetmesh operates at the application layer, managing bilateral accounting, signed bandwidth budgets, and mutual relay federation.
Both protocols share Nostr relays for discovery rendezvous, broadcast endpoint descriptors with NIP-40 expiration, and route encrypted signaling via kind 21059 gift wraps. Event kinds remain non-colliding. A FIPS transport adapter in fleetmesh allows nodes to exchange replication traffic over encrypted FIPS overlay paths without external IP dependencies.
Architecture & Scope
FIPS and fleetmesh operate at distinct architectural layers: FIPS provides encrypted multi-hop IPv6 packet routing, while fleetmesh provides application-layer accounting and rate enforcement between sovereign relays.
FIPS
Self-organizing encrypted overlay routing IPv6 packets between Nostr public keys across multi-hop paths.
fipsd), fipsctl, fipstop, and fips-gatewayfleetmesh
Bilateral federation and accounting protocol for Nostr relays: published budgets, self-metered receipts, and range synchronization.
node/meshnode)meshnode.service and meshwatch.service), macOS, containersdid:nostr DID binding secp256k1 (identity), X25519 (agreement), and Ed25519 (transport)Topology differs across both designs: FIPS constructs multi-hop routing graphs where intermediaries re-encrypt and forward raw datagrams; fleetmesh establishes bilateral peering graphs where relays enforce rate budgets directly, restricting transit paths to three hops for clear accounting attribution.
Same keys, different layers
Side by side
| axis | FIPS | fleetmesh |
|---|---|---|
| purpose | reach any key from any key, over any medium | make relays accountable to the relays they peer with |
| layer | link, network and session; an IPv6 overlay above | application; assumes a carrier and names a ladder of them |
| peer identity | one secp256k1 key: npub, Noise static key, and node_addr = SHA-256(pubkey)[0:16] | a did:nostr DID; three keys, two of them bound only by a signed kind 11801 descriptor |
| what moves | datagrams, best effort; TCP-over-TCP explicitly avoided | nostr events, budgets, receipts, findings; never IPs or user identifiers |
| routing | spanning-tree coordinates, split-horizon bloom filters, greedy next hop, three explicit error signals | none. A delivery envelope carries a signed hop path, capped at three, for charging rather than for reachability |
| encryption | Noise IK on every link and Noise XK end to end, both always, with hitless rekey | DIDComm v2 ECDH-1PU to the agreement key; NIP-44 for grants and gift wraps; transport security is the rung's own |
| transports | UDP, TCP, raw Ethernet, Tor, Nym, BLE — all implemented; radio and serial planned | iroh, libp2p, wss/https and gift wrap as built-ins; tor, i2p, nym, webrtc, ble and lora as adapter rows with nothing behind them |
| discovery | static peers[], mDNS on the LAN, and opt-in nostr adverts (kind 37195) with open discovery under an admission budget | kind 11801 on local node relays, a gossipsub topic, and a peering/1.0 proposal to peers with published descriptors |
| NAT traversal | STUN plus a NIP-59 offer/answer exchange and a coordinated UDP punch, shipped and documented as a generic protocol | delegated: iroh relay-assisted hole punching, libp2p DCUtR, and DIDComm mediation for leaves |
| admission | discretionary peering, peers.allow / peers.deny, handshake rate limits; identity is not authorisation | a grant at probation ceilings, NIP-13 proof of work on the descriptor, AIMD growth through clean windows |
| abuse control | per-npub and global offer caps; acknowledged as defeatable by throwaway npubs | published budgets, signed receipt chains, a severity ladder fixed before the breach, adverse-only reports with evidence |
| reputation | none. The word appears once, describing what gateway clients inherit | bilateral standing per grant; readers weight reports by local tier policy; nobody imports external banlists |
| privacy posture | transit nodes see node_addr pairs; onion routing rejected for the sake of per-hop error feedback | grants are blinded and encrypted so the peering graph is not public; clean windows publish nothing |
| phones | Android embeddable crate today, no packaged app; iOS absent | the leaf class: one WebSocket, a bounded store, no p2p stack, mediated by an anchor. Designed, not built |
| versioning | semver releases; a versioned wire format is on the roadmap; next branch stages breaking changes | a version is a digest over the machine-readable schema, declared per node; there is no release authority |
| governance | a maintainer, a repository, MIT | a namespace, CC0, and a written trigger for revisiting: a second implementation or a third independent anchor |
Signaling and Primitives
Both protocols utilize Nostr relays for connection discovery and session establishment. Each node publishes signed, expiring connection descriptors with NIP-40 expiration. Private handshakes circulate as NIP-44 payloads encased in ephemeral kind 21059 gift wraps, routed using recipient kind 10050 inbox relay lists. All events are signed with the primary node identity key.
| kind | FIPS | fleetmesh | collision? |
|---|---|---|---|
37195 | overlay advert, d = fips-overlay-v1, NIP-40 expiry, endpoints in JSON content | not used | none |
11801–11803 | not used | node descriptor, revocation, compute offer | none |
21801–21802 | not used | heartbeat, telemetry | none |
30801–30811 | not used | grant envelope, report, coverage, ask, job receipt | none |
21059 | traversal offer and answer, gift-wrapped | DIDComm v2 messages, gift-wrapped; default control transport | shared |
1059 | not used | DIDComm store-and-forward; gated by recipient kind 10050 | none |
10050 | published on startup; read to route offers | read to gate kind 1059 replication and route wraps | same NIP, identical usage |
Kind 21059 serves as an open container under NIP-59 for ephemeral messaging. Nodes ignore unrecognized inner rumor payloads silently. A FIPS daemon ignores DIDComm payloads addressed to its key, and a fleetmesh node ignores traversal offers, preventing parse errors.
FIPS publishes network endpoints within JSON payloads under kind 37195, indexed by author npub. Fleetmesh indexes endpoints using structured tags in kind 11801 alongside node class, protocol digests, and subordinate agreement and transport keys, resolving into a standard DID document. FIPS uses npub routing directly, requiring a single key pair where fleetmesh binds three.
Transport Capabilities
FIPS implements unified routing across Tor, Nym, Bluetooth Low Energy (BLE), raw Ethernet, and 802.11s mesh links. Integrating a FIPS transport adapter in fleetmesh provides direct access to these physical and overlay carriers through a single daemon.
meshwatch.py.fipsctl, interactive status monitors, and packaging across eight platforms. Fleetmesh provides the meshnode CLI, declarative manifests, systemd service units, and the meshwatch watcher.Economic Accounting
FIPS authenticates source packet keys without determining resource authorizations. Fleetmesh provides explicit bilateral capacity allocation: nodes establish rate limits under signed grants, verify consumption using chained receipts, and apply deterministic remedies upon breach.
Interconnectivity
A fleetmesh node operates as a standard Nostr relay and can deploy within a FIPS overlay container reachable at ws://<npub>.fips:80. FIPS mesh clients connect using author public keys without DNS dependencies or TLS certificate management, since the underlying FIPS transport provides mutual authentication and encryption.
Adding a fips transport scheme allows fleetmesh nodes to address peers directly via public key:
["endpoint", "fips", "npub1…", "1"] // Peer addressed directly by Nostr identity ["endpoint", "iroh", "<ed25519>", "2"] ["endpoint", "wss", "wss://relay.example.org", "9"]
peers.deny lists, allowing application-layer rate accounting to enforce link-level blocks.Architectural Boundaries
Transport integration provides link reachability. Fleetmesh maintains independent three-hop accounting limits and bilateral rate contracts regardless of underlying packet routing paths.
Project Details
Implementation Plan
fips transport schemeAdd fips as an adapter in schema/constants.json, accepting an npub endpoint value.Design reference for § Transports, § Discovery, and § Two networks. For normative specifications, see § Transport ladder and § Node discovery.