Connect your radio
Plug in a Meshtastic radio over USB or pair via
Bluetooth. Text and voice both run
voicetastic-core's protocol core in the browser β Codec2 (pure
Rust) for voice, RNNoise for capture-side denoise. Web Serial:
Chrome/Edge or Firefox 151+. Web Bluetooth:
Chromium-only (Chrome / Edge / Opera). Either path needs
localhost or HTTPS; voice also needs mic permission.
Device
Chat
Send and receive text and voice over the mesh. Pick a channel for broadcast or a node for direct messages. Threads are populated as the radio reports channels and node info.
π‘ Nodes (0)
peers the radio currently knows about
Settings
Device configuration β Owner, LoRa, Device, Position, Power, Network,
Display, Bluetooth, plus per-channel settings. Each card mirrors what
the desktop GUI's Settings tab shows: the form is populated from the
live ProtocolState snapshot, and Apply rebuilds a config
message via core's admin_packet and sends it to your
radio. Connect first.
Appearance
π¨ Appearance
client-side theme (saved per browser)
Meshtastic
Audio
π Audio
client-side voice settings
codec::Denoiser.
Off regardless
β the assembler short-circuits broadcast NACK emission.
Device actions
β Device actions
reboot, reset NodeDB, factory reset
β¬ Firmware update
OTA via this client — coming soon
OTA upload from this browser client is not yet implemented. The transport (XModem-over-AdminMessage) is in the Meshtastic protocol but the upload loop, CRC, retry, and progress reporting are deliberately not wired here to avoid bricking radios mid-transfer.
For now, flash via the
Meshtastic web flasher
or meshtastic --update on the CLI.
Map
Mesh map view β known nodes plotted by their last reported position. Tiles from OpenStreetMap. Click a marker for the node's name, last-heard, and battery.
Debug
Structured event log captured from inbound radio events and client actions. Useful for diagnosing radio handshakes, voice assembly, and admin writes. Filters and the entries themselves are local to this browser session.