Join Nostr
2026-03-13 12:04:42 UTC

Arjen on Nostr: GM. Running the first nostr relay on FIPS. If your have your fips node set up already ...

GM.

Running the first nostr relay on FIPS. If your have your fips node set up already you can try it out.

🧬 FIPS address: ws://npub1spxdug4m3y24hpx5crm0el4zhkk0wafs8kp6m0xu0wecygqej2xqq8gyhx.fips

🌐 Clearnet address:
wss://npub1spxdug4m3y24hpx5crm0el4zhkk0wafs8kp6m0xu0wecygqej2xqq8gyhx.fips.network

Get started guide here:

We're happy to announce the first tagged release of FIPS, the Free Internetworking Peering System.

FIPS is a self-organizing mesh network that lets nodes discover each other and route traffic without any central authority. It works natively over local area networks, the internet as an overlay, and is designed for Bluetooth, serial links, and radio. Nodes use Nostr keypairs as their identity — no registration, no servers, just generate a key and join.

This release marks the point where the core protocol works end-to-end and is ready for broader testing. It is alpha software: the wire format is not yet stable and will have breaking changes.

Where to Find Us

Repository: The codebase lives at two official locations:

(The fips-network GitHub organization was flagged by GitHub and is under review. We've restored the original jmcorgan/fips URL in the meantime. So, if you starred or forked the original repository, you'll need to do so again.)

Website: https://fips.network

Nostr: Follow the FIPS project account for updates and discussion.

What's in v0.1.0

This release targets Linux (x86_64, aarch64) and OpenWrt (aarch64, x86_64). Other platforms are not yet supported.

Multi-Transport Mesh

FIPS nodes connect over UDP, TCP, or raw Ethernet/WiFi. Ethernet transport includes automatic peer discovery — plug into a LAN and nodes find each other without configuration. The transport layer is designed to be extended to Bluetooth, Tor, serial, and radio.

Dual-Layer Noise Encryption

All traffic is encrypted twice: hop-by-hop between mesh peers (Noise IK) and independently end-to-end between communicating nodes (Noise XK). Both layers perform periodic rekeying with fresh Diffie-Hellman exchanges for forward secrecy.

IPv6 Adaptation

Each node gets a deterministic fd00::/8 IPv6 address derived from its npub. A TUN interface and built-in DNS resolver let unmodified IP applications reach any mesh node:

ping6 npub1abc...def.fips
ssh   npub1abc...def.fips

Static hostname mappings (/etc/fips/hosts) let you assign friendly names like myserver.fips.

Operator Tooling

fipsctl provides runtime inspection of peers, links, sessions, tree state, routing, and transport statistics. fipstop is an interactive TUI dashboard with live-updating views of the entire node state.

Packaging

Multiple installation paths are ready for testing:

  • Debian/Ubuntu: .deb package via cargo-deb with systemd integration
  • Generic Linux: systemd tarball installer
  • OpenWrt: .ipk packages for aarch64 and x86_64
  • Docker: sidecar deployment for containerized services

Quick Start

# Build from source (Rust 1.85+, Linux)
git clone https://github.com/jmcorgan/fips.git
cd fips
cargo build --release

# Install (Debian/Ubuntu)
cargo install cargo-deb
cargo deb
sudo dpkg -i target/debian/fips_*.deb

# Or use the systemd tarball
./packaging/systemd/build-tarball.sh
tar xzf deploy/fips-*-linux-*.tar.gz
cd fips-*-linux-*/
sudo ./install.sh

Edit /etc/fips/fips.yaml to add a bootstrap peer and start the daemon:

peers:
  - npub: "npub1qmc3cvfz0yu2hx96nq3gp55zdan2qclealn7xshgr448d3nh6lks7zel98"
    alias: "fips-test-node"
    addresses:
      - transport: udp
        addr: "217.77.8.91:2121"
    connect_policy: auto_connect
sudo systemctl start fips
fipsctl show status
fipstop

To run fipsctl and fipstop without sudo, add your user to the fips group: sudo usermod -aG fips $USER (log out and back in to take effect).

Call for Testing

This is an alpha release — we want people to try it, break it, and tell us what happens. Here's how you can help:

  • Join the mesh: Build and run a node. The test node listed above is a good bootstrap peer.
  • Try the installers: We're particularly interested in feedback on the .deb, systemd tarball, and OpenWrt .ipk packages. Do they install cleanly? Does the systemd service start correctly?
  • Report issues: File bugs on GitHub or ngit.
  • Read the design docs: The full protocol specification is at docs/design/ in the repository, starting with fips-intro.md.

Work in Progress

  • Additional transports (native Bluetooth, Tor overlay)
  • Native FIPS API access (no IPv6 shim) via in-process library interface
  • Peer discovery via Nostr relays
  • Security audit of the cryptographic protocols
  • Binary release packages

The full changelog is in the repository at CHANGELOG.md.