Perch is a command center for your Meshtastic radio — the dashboard the hobby deserves. Plug a $40 LoRa radio into your Mac (or Linux, or Windows), open Perch, and your city's mesh appears: every node, every message, every packet. Coop, the engine underneath, even walks you through flashing a new radio, manages its settings, and can carefully bridge a private channel to a friend across town.
macOS: brew install --cask stevenssparks/tap/perch · no account, no telemetry, nothing touches the internet unless you say so.
The big one is a live Perch install watching the St. Louis mesh through a $40 radio + community MQTT. The rest are the same build you can click around in right now (demo chats are fictional — real mesh conversations stay on the mesh).
Perch is what you look at. Coop is what does the work. They install together and find each other automatically — you never configure the pair.
Perch ships a built-in control panel (the same one you see on the Welcome screen). It flashes a fresh board, names it, sets your region, joins your network, and exposes a clean API — no terminal required.

New to Meshtastic? Coop opens the official web flasher, tells you exactly which port and options to pick, then names the radio and sets your region so it starts transmitting.

Coop is the only piece that can transmit, so all radio controls live there — region, channels, MQTT, reboot. It also serves a readable API reference at /api you can toggle on or off.
LoRa is line-of-sight-ish; your radio hears the neighborhood. MQTT is how Meshtastic reaches further, and Perch treats it as a good-citizen tool: observe by default, publish only when you choose, and never flood a public channel.

Pick a community broker (or the public default) and Coop listens — it decodes far-away traffic and folds it into your map and history. It never publishes in observe mode, so you see the whole region without adding a single packet.

Want to actually chat with someone across town? Create an encrypted private channel, share the link/QR with your friend, and each of you flips uplink on. Your wi-fi-less radio reaches the broker through Coop (MQTT Client Proxy) — messages hop the internet, stay end-to-end encrypted, and arrive on each other's radios.
Any Meshtastic-supported LoRa board works. The sweet spot: the Seeed XIAO ESP32-S3 + Wio-SX1262 kit (~$40, case included) or a LILYGO T-Deck. Perch can flash it for you if it didn't ship with firmware.
macOS: brew install --cask stevenssparks/tap/perch, or grab Perch.app from the releases page — Coop ships inside, signed and notarized. Linux/Windows: signed binaries on the same page. No accounts, no telemetry.
Connect the radio over USB and open Perch. Coop finds the serial port, handshakes, and the dashboard fills in. Wi-Fi radios work too — Coop can dial the firmware's TCP API.
Import your community's channel QR/URL right from Perch's channel manager, set your region, and you're part of the neighborhood. (St. Louis? Say hi to MeshSTL.)
Observe a community broker to see the whole region, or make a private channel and bridge it to a friend far away. Both live under Coop's MQTT tab.
The complete manual — from "which radio do I buy" to the raw API. Also worth a look: the troubleshooting guide and FAQ.
Radio → USB → dashboard, step by step with screenshots.
Hardware guideBoards that work great, boards that work, antennas, cases.
Channels & keysJoining community meshes, PSKs, QR import/export, region setup.
The capture databaseWhere your history lives, retention, backups, querying with SQL.
MQTT & long rangeObserving a broker, bridging a private channel to a friend, staying a good citizen.
Coop API referenceREST + SSE endpoints for building your own tools on the engine.
Mesh servicesTraceroute, position requests, neighbor topology — how to read them.
Multi-engine setupsSeveral radios, remote Coops over Tailscale, read-only observers.
ArchitectureHow Perch and Coop fit together; why the capture survives anything.