frid
Frid is the decentralized networking core behind Furumi. It provides reusable Rust libraries for building equal-peer applications with no application server, central peer registry, or privileged node.
The workspace has two layers:
federation-netestablishes authenticated, NAT-traversing P2P connections over iroh, isolates independent networks and message schemas, and optionally discovers peers through the BitTorrent Mainline DHT.music-dhtbuilds a Kademlia-style distributed music directory on top of that transport, including catalog discovery, content-id lookup, direct byte streams, and shared Furumi wire types.
Each participant is a client, router, and storage peer. Automatic rendezvous has no Frid-operated bootstrap service, while self-contained peer tickets remain available for explicit or isolated connections.
Design principles
- Equal peers. No node receives a permanent coordinator or server role.
- Application-owned protocols. The transport moves typed messages and byte streams without owning domain state.
- Bounded inputs. Frames, tickets, routing tables, requests, and record batches have explicit limits.
- Offline-tolerant discovery. Records are replicated, refreshed by their owners, expired by TTL, and removed through revisioned tombstones.
- Protocol isolation. Network IDs, schema IDs, versions, and ALPNs prevent unrelated or incompatible applications from being merged accidentally.
- Local persistence. Identity, routing knowledge, owned records, and replicas survive restarts in application-controlled storage.
See ARCHITECTURE.md for the protocol layers, trust model, failure handling, and compatibility rules.
Workspace
crates/
federation-net/ generic iroh transport and rendezvous
music-dht/ distributed music catalog and content discovery
Using the libraries
Until crates are published to a registry, depend on the repository directly:
[dependencies]
federation-net = { git = "https://gt.hexor.cy/ab/frid.git" }
music-dht = { git = "https://gt.hexor.cy/ab/frid.git" }
Start with the crate documentation:
Development
Frid uses Rust edition 2024 and requires Rust 1.97 or newer.
cargo fmt --all -- --check
cargo check --workspace --all-targets --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace
The integration tests open real local sockets and establish iroh connections. Some rendezvous tests also use public discovery infrastructure, so a restricted sandbox may need explicit network permission.
License
Frid is released under the Do What The Fuck You Want To Public License, Version 2.