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
prpd
daemon / transport node
Linux x86-64 (static, musl) prpd-x86_64-linux-musl 4.0 MiB ab412296599c3e21654f39252d2bb27659c8b8842ad8a8311abf9ffcf59f37e4
periplus
command-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.