Mission Control // LilyGo T-Deck Plus
MeshCadet
A polished, deliberately-limited MeshCore-interop firmware — a fully compliant citizen on the mesh, with a constrained policy layer on top: allowlist-only contacts, no advertising or discovery, pull-only telemetry, and a curated emoji set.
What it does
Byte-exact MeshCore interop
Talks real MeshCore over LoRa (SX1262) — DMs, channel messages, ACKs, and pull-only location telemetry — on the air alongside any other MeshCore node.
Allowlist-only, no discovery
An admin provisions every contact and channel over USB. The device never auto-adds anyone and never advertises itself on the mesh.
Contacts & Groups touch UI
A Slint touch-screen interface with two tabs: Contacts
(direct-message peers) and Groups — provisioned
channels and room-server connections in one unified, visually
distinguished list — plus a conversation view and a composer
with a curated :shortcode: emoji set.
PIN-gated admin menu
Lightweight on-device runtime toggles behind a PIN, plus a USB host CLI for provisioning, PIN reset, and history export.
Room Server guest client
Join a MeshCore Room Server as a guest: provisioned out-of-band like any other contact, never advertised or discovered. MeshCadet reads and posts as a guest — it never administers a room and is never itself a room server.
See it in action
Get messaging in three steps
No toolchain, no soldering — flash from your browser, provision over USB, and you're on the mesh.
-
1
Flash your T-Deck Plus
One-click firmware install, straight from this page — no cables to configure, no build to run.
Flash firmware -
2
Provision your device
Register contacts, channels, and room servers over USB. The device stays allowlist-only and off the mesh until you say so.
Provision device -
3
Add a contact and start messaging
Scan the on-device QR from a MeshCore companion app, or add a contact straight from the provisioner — then send your first message.
Learn more in the project docs →
Flashing and provisioning run in the browser over Web Serial, which needs a desktop build of Chrome or Microsoft Edge, loaded over HTTPS (this page qualifies).
A deliberately limited device
MeshCadet grew out of wanting a simple, controlled way to stay in touch with my kids over a MeshCore mesh. All of its constrained behavior — allowlist-only contacts, no advertising, pull-only telemetry — lives in a policy and UI layer on top of a byte-exact protocol port, so the device never has to fork or weaken the underlying protocol to apply those limits. These are deliberate design choices for a controlled, minimal comms device, not anything the underlying protocol requires.
Room servers work the same way. A MeshCore Room Server is acquired out-of-band only — an admin provisions it as an allowlisted contact (pubkey, name, and guest password) over USB, via the host CLI or the browser provisioner, or by scanning a room QR/link. There is no advert and no discovery. Once provisioned, the device logs in with the guest password, drains the server's stored backlog into history, and from then on reads and posts to the room live, right alongside true channels in the Groups tab. MeshCadet is a room client only: no remote administration of a room server, no ACL management, and MeshCadet is never itself a room server.
MeshCadet is provided as-is, with no warranty and no guarantee of safety — read the full disclaimer in the project README before you build, flash, or rely on it.