plexus
A Rust implementation of Periplus (PRP), a cryptography-based mesh networking protocol for LoRa, packet radio, WiFi, and similar media. Prebuilt static binaries.
About
Periplus (PRP, pronounced “perp”) is an open, cryptography-based networking protocol. It provides self-configuring multi-hop routing, end-to-end encryption, and forward secrecy over high-latency and low-bandwidth links. It runs in userland and is transport-agnostic: LoRa, packet radio, WiFi, serial, TCP/IP tunnels, and so on. The name is from the Greek περίπλους, a coastal-route manuscript — the historical analogue of a routing table.
plexus is the Rust stack that implements Periplus, intended for resource-constrained devices and deployments where a single static binary is preferable to a Python runtime. Periplus began as a fork of Reticulum and is derived from it, but is a standalone protocol and is not wire-compatible with Reticulum or affiliated with the upstream Reticulum project.
The workspace is organized around a single architectural seam:
- gateway — the protocol core: the Periplus wire format, identities, paths, links, and resources, validated against Periplus's own conformance vectors.
- extension — new work layered above the gateway (protocol extensions, transport experiments) that never alters the base wire format unless explicitly negotiated. Breaking changes permitted between minor versions until 1.0.
It ships two binaries:
prpd— the daemon / transport node: owns the gateway, serves interfaces, announces destinations.periplus— command-line utilities (status, path, probe, copy, identity).
Specification
The Periplus wire protocol and the Plexus extension suite are specified in
RFC 0001 — the Periplus protocol:
identities and self-certifying addressing, the packet format, the Token AEAD,
announces, links, transport, and resources — plus the
fd73:: IPv6 plane, enrollment/CA, naming, and the negotiated
extensions. It is implementable from the document alone.
Downloads
Prebuilt, statically linked binaries — no runtime, no shared
libraries, no Python. Build 34aae24 (34aae24d), built 2026-05-29 04:40 UTC.
Verify the SHA-256 digest before running.
| Binary | Platform | Download | Size | SHA-256 |
|---|---|---|---|---|
prpddaemon / transport node |
Linux x86-64 (static, musl) | prpd-x86_64-linux-musl | 4.0 MiB | ab412296599c3e21654f39252d2bb27659c8b8842ad8a8311abf9ffcf59f37e4 |
peripluscommand-line utilities |
Linux x86-64 (static, musl) | periplus-x86_64-linux-musl | 3.0 MiB | 4fed8bbb20f2d10cb512e64f5fd7feba60cde60c1922e654038750dccc09df26 |
All digests are also listed in
SHA256SUMS. Verify after downloading:
sha256sum -c SHA256SUMS.
Running
The binaries are static ELF executables. Download, mark executable, run:
curl -LO https://plexus.beer/dist/prpd-x86_64-linux-musl
chmod +x prpd-x86_64-linux-musl
./prpd-x86_64-linux-musl --help
prpd is the daemon / transport node;
periplus is the command-line companion. The protocol stack
itself lives in library crates — plexus-core,
-crypto, -codec, -gateway,
-iface, -ext — under crates/
in the source tree.
The installation & usage guide
walks through installing the binaries, running a node, identities, inspecting
and reaching the mesh, and bringing up the fd73:: IP plane.
Building from source
Requires a recent stable Rust toolchain. No other build dependencies.
git clone https://git.itys.net/mjh/plexus.git
cd plexus
cargo build --release
Binaries are written to target/release/:
prpd (the daemon) and periplus (the utilities).
Static build (musl)
These downloads are built statically against musl, the same way:
rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl \
-p plexus-prpd -p plexus-cli
License
See the LICENSE file in the source tree.
Contact
Issues and patches: see the README in the source tree.