v0.1.0-alpha · P2P fabric + Pi mesh + EVRUS plugin · signed receipts & CI gates ship · installers unsigned

Mesh · v0.1.0-alpha

Three nodes: a PC, a Pi on Ethernet, a Pi on Wi-Fi.

PeerWeave's underlay is libp2p QUIC. On a LAN, mDNS finds peers. Across interfaces, bootstrap from the hub multiaddr. Spaces and agent files sync as soon as a connection is established.

The topology

Hub

This PC

LAN gateway

Start the daemon here first. Print listen multiaddrs from ~/.peerweave/status.json and pass them as --bootstrap to the Pis.

pi3

Raspberry Pi 3B

Ethernet · eth0

1 GB RAM — prefer the CLI binary, not the Tauri desktop app. Docker is optional and tight. Keep UDP 4001 open on this interface.

pi4

Raspberry Pi 4B

Wi-Fi · wlan0

More headroom for docker/edge ingest. Same QUIC listen, mDNS on. Do not assume raspberrypi.local is unique.

Listen, discover, gateway

  • QUIC listen /ip4/0.0.0.0/udp/4001/quic-v1. Open 4001/udp on the host firewall.
  • mDNS on for same-LAN discovery. Bootstrap multiaddrs for the Wi-Fi Pi if it cannot see Ethernet mDNS.
  • HTTP gateway http://127.0.0.1:8788 (or NEXT_PUBLIC_PW_GATEWAY_URL). The website cannot run this node in-browser.

SSH install

Same pattern as manticore-net: key auth only, sudo for apt deps, rustup if missing, ~/.peerweave plus a default space. Pass explicit --host IPs. Never print secrets.

# ~/.ssh/config example — use unique HostName / IP per board
Host pw-pi3
  HostName 192.168.1.31
  User lucas
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Host pw-pi4
  HostName 192.168.1.41
  User lucas
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

./deploy/raspberry-pi/remote-install.sh --host pw-pi3 --role pi3 --interface eth0 --bootstrap <hub-multiaddr>
./deploy/raspberry-pi/remote-install.sh --host pw-pi4 --role pi4 --interface wlan0 --bootstrap <hub-multiaddr>
./deploy/mesh/bootstrap.sh

On each node: pw daemon start, then pw p2p peers to confirm the mesh. systemd unit: deploy/raspberry-pi/peerweave-edge.service.

Edge ingest

Local agents write manticore-net-data flow metadata into a PeerWeave space so the mesh syncs telemetry. Packet capture stays in manticore-net. PeerWeave does not sniff the wire.

pw edge watch --space ~/peerweave-space
# reads JSONL / SQLite under MANTICORE_HOME or ~/manticore-net-data

Talk to the mesh from /app

Open the web client Mesh tab. If the gateway is down, start pw daemon start or the docker stack.