Your public key is your address.
A datagram-level routing protocol where Ed25519 keys are network addresses. Substrate-agnostic. Encryption-free. Built for any bearer.
sigil1qpzry9x8gf2tvdw0s3jn54khce6mua7lmqqqxwIP, reimagined
Sigil sits where IP sits — but your address is your cryptographic identity, and the transport beneath is whatever you have.
Sigil Stack
Your ProtocolEncryption (Noise, QUIC, TLS...)Sigil Datagram — 71B headerBearer (UDP, BLE, Wi-SUN, Ethernet)Traditional Stack
Your ProtocolTLS / QUICTCP / UDPIP (address ≠ identity)Ethernet / Wi-FiWhy Sigil
Substrate Agnostic
Same identity over UDP, Bluetooth, Wi-SUN, or raw Ethernet. 71-byte binary header. Runs on Cortex-M microcontrollers.
Built-in Privacy
Sphinx onion routing with rotating mixer keys. No external daemon. The anonymity set is the Sigil network itself.
Algorithm Agility
Ed25519 today. Post-quantum SLH-DSA-128s tomorrow. One byte changes. No protocol break.
Start building
Pure state machines. No async runtime required. Feed bytes in, get actions out.
use sigil_core::{PeerState, SigilIdentity, Action};use sigil_wire::SigilAddr;let identity = SigilIdentity { addr, seed };let mut peer = PeerState::new(identity, clock, rng);// Send a datagram to any Sigil addresslet actions = peer.send_datagram(&dst_sigil, payload);// Handle inbound — routing, probing, deliverylet actions = peer.handle_inbound("udp:10.0.0.5:4433", &data);// React to protocol actionsfor action in actions { match action { Action::SendBearer { to, data } => bearer.send(&to, &data), Action::DeliverToApp { from, payload } => app.recv(from, payload), Action::RouteEstablished { dst } => log!("route up: {dst}"), _ => {} }}Modular by design
Five crates, layered from bare metal to full runtime. Use only what you need.
sigil-wire
no_stdBinary codec for all message types. Zero-copy parsing. Zero dependencies beyond core.
DatagramProbeProbeAckEnvelopeSigilAddrsigil-crypto
no_stdCrypto traits and implementations. Test doubles for deterministic simulation.
SignerVerifierMacHasherKeyAgreementsigil-core
no_stdProtocol state machines. Peer, Relay, Registrar, Mixer, and route table logic.
PeerStateRelayStateRegistrarStateRouteTablesigil-sim
stdDeterministic network simulation. Model latency, loss, NAT, and firewalls.
SimNetworkSimLinkSimNatSimFirewallsigil-runtime
stdSystem implementations for real-world deployment. Clock, RNG, storage, transport.
SystemClockOsRngMemoryStoreUdpTransportPayload budget by bearer
71-byte fixed header for Ed25519. Every remaining byte is yours.
What sets Sigil apart
Sigil operates at the network layer — below QUIC, below TLS. It complements tools like iroh rather than competing with them.
| Feature | Sigil | Typical P2P libraries |
|---|---|---|
| no_std embedded | Yes | Not targeted |
| Sphinx onion routing | Yes | External Tor required |
| Federated discovery + access control | Yes | DNS only, no ACL |
| Consent-based discovery (Delegate) | Yes | No equivalent |
| Post-quantum algorithm slots | Yes | Ed25519 only |
| Binary wire format (71B) | Yes | QUIC frames |
| Multi-bearer native | Yes | QUIC adapters |