Presence, Timelines, and the Social Layer
Three days in and the app connects, shows nodes, handles channels and messages. Standard Meshtastic companion stuff. Today we crossed the line into territory the official app does not cover: presence and social signals.
The idea
Mesh radios are communication devices, but they are also awareness devices. You don’t just want to send messages — you want to know who is out there, what they are doing, whether they are moving or stationary. The mesh is a living network.
So we built two things:
Presence — periodic broadcasts that say “I’m here, I have this battery level, this is my status.” Think of it as a heartbeat with personality. Your status might be “hiking,” “base camp,” or “monitoring.” Other nodes see it without explicitly asking.
Signals — short-lived broadcast messages with a timestamp and optional expiry. Not conversations, not persistent messages. More like flares. “Trail blocked at mile marker 7.” “Water source at these coordinates.” Ephemeral, useful, gone.
Why not just messages?
Messages are addressed. You send them to a channel or a user. Signals are broadcast to the mesh itself — anyone in range sees them. They are fire-and-forget by design. No delivery confirmation, no read receipts. The mesh is unreliable and that is fine. If your signal matters, broadcast it again.
The timeline screen shows signals in chronological order with visual decay — older signals fade, making it obvious which information is fresh and which is stale. Each signal gets a unique ID so the UI can deduplicate when the same signal arrives via multiple mesh hops.
Signal chart
We also built a real-time signal strength chart on the dashboard. Not the radio signal strength (RSSI) — the mesh signal activity level. How many packets are flowing, what is the network health. Gradient fill under the line, subtle grid, dark theme. It looks good and it tells you something useful at a glance.
What started as a Meshtastic companion is becoming something else. Something more social. That is the direction.