Mesh services
Traceroute, position, neighbors
Chat proves the mesh works; these tools show you how. All of them ride Meshtastic's request/response machinery — Coop sends a probe with your packet id, then correlates the reply (ignoring the routing ACK that arrives first).
Traceroute
In the node drawer, or POST /api/traceroute {"dest":"!a2ebdaac"}. The mesh
records each relay the request visits and — on modern firmware — the SNR of every link, in
both directions:
towards: RoostOS Dev → !6910bd44 5.5dB → !dc9b6d5f -0.2dB → 4A24 -11.8dB → Lighthouse -7.0dB
back: Lighthouse → !6910bd44 0.0dB → RoostOS Dev 5.8dB
Reading it: each SNR belongs to the link into that hop; routes are often
asymmetric (different relays each way) — that's normal mesh routing, not an error. An
unknown relay entry means a relay identified itself only partially (firmware
reports node 0). If the destination is unreachable you get the routing error
(NO_ROUTE, MAX_RETRANSMIT…) instead of silence.
Position requests
POST /api/request_position {"dest":"!id"} asks a node for a fresh fix. The
reply updates the node and map through the normal pipeline, and returns
{"position":{latitude,longitude,altitude}}. Nodes without GPS (or with
position sharing off) reply "no fix" or not at all — that's their owner's choice.
Neighbor topology
Nodes that broadcast NEIGHBORINFO announce which nodes they hear directly and at what SNR — the actual edges of the mesh graph. Perch shows a node's neighbor list in the drawer as reports arrive; over hours the who-hears-whom picture of your area fills in. Passive, zero airtime cost to you. Many nodes have the broadcast disabled and intervals are long (tens of minutes) — an empty list means "hasn't said," not "hears nothing."
Waypoints
Mesh-shared map markers (name, description, expiry) — a rally point, a hazard, where the
coffee is. Any app on the channel can drop one; Perch draws them on the map live and expires
them on schedule. They arrive in bootstrap and the waypoints SSE
event.
Airtime etiquette
Traceroute and position requests transmit on a shared, duty-cycle-limited band. Probing a route you're curious about is exactly what the tools are for; scripting probes in a loop is how you become the person your mesh talks about. Passive tools (neighbors, capture, MQTT observing) cost the mesh nothing.