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.

Pick a transport above, then approve the device in the browser prompt.
Idle.

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
Connect a radio to load the node list.
Audio & codec settings β†’
Connect a radio to start chatting.

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.

Connect a radio to load settings.

Appearance

🎨 Appearance

client-side theme (saved per browser)

Meshtastic

Audio

πŸŽ™ Audio

client-side voice settings
Capture-side denoise via core's codec::Denoiser.
If the reassembly timer fires before all chunks arrive, play what was received (missing data is filled with silence) instead of dropping the message.
Broadcast traffic is always treated as Off regardless β€” the assembler short-circuits broadcast NACK emission.
βœ“ Codec2  Β·  βœ“ Opus (libopus β†’ emscripten standalone wasm)  Β·  βœ“ AMR-NB (opencore-amr β†’ emscripten standalone wasm)

Device actions

⚠ Device actions

reboot, reset NodeDB, factory reset
Sent as admin messages to the connected radio. Factory reset wipes owner, channels, and module configs; Reset NodeDB only clears learned peer entries and re-pulls the config burst so the local snapshot reflects the wipe.

⬆ Firmware update

OTA via this client — coming soon
Installed: β€”

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.

Connect a radio with peers reporting positions to see pins.

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.

0 entries
No events yet.