Skip to content

vs. Meshtastic & MeshCore

Honest positioning, because this document will be read by both communities. Both projects are good at what they aim at; chIRpChat aims somewhere else.

Meshtastic MeshCore chIRpChat
Primary goal off-grid mesh messaging leaner off-grid mesh, clean roles chat network at scale, off-grid capable
Client app custom apps + protobuf API custom apps any IRC client, unmodified
Routing managed flood flood discovery → direct paths registration + directed paths; flood for discovery only
Wide-area transport MQTT broker (central) router federation over peer TCP, no broker
Identity node id (+PKC channels) Ed25519 key Ed25519 key is the identity; multi-device shared keys
Message privacy encrypted channels encrypted plaintext by policy, signed/attested (tiered: tags + checkpoints)
Group chat encrypted flood channels room servers (separate role) router-sequenced channels, federation merge, gap backfill
History/recovery none (best-effort) room server timestamp sync sequence numbers + ranged backfill; join scrollback
Roles ~10 device roles separate firmwares per role 2 binaries (node, router; relay = build flag)
Loss recovery ACK + rebroadcast ACK + retry seq/backfill + ACK; network-as-WAL
Multi-speed RF one preset per mesh one preset lane plans: concurrent presets/frequencies, probing, burst lanes
Bulk transfer no no DCC over burst lanes
Linux native portduino port – (firmware focus) first-class lrcd router/daemon

What chIRpChat consciously gives up:

  • Confidentiality. Meshtastic/MeshCore encrypt; chIRpChat’s charter is public plaintext chat with verifiable origin (IDENTITY.md spells out exactly what the 8-byte tags do and don’t prove). If you need private comms, use those projects — different tool.
  • Serverless purity. chIRpChat has infrastructure (routers). That’s the point: infrastructure is what makes tens of thousands of users converge on one #channel without melting the spectrum.
  • Protocol compatibility. chIRpChat does not interoperate with either mesh on the air. It coexists politely (CAD, duty cycle, distinct version bits) and gratefully reuses their published lessons (pin maps, sleep mechanics, retry constants — credited in the docs where used).