MeshDash Docs
R2.0
/
Home Frontend Guide C2 Terminal

C2 Terminal

Frontend Guide terminal cli console command meshtastic c2 terminal bottom bar version badge
The bottom CLI bar — run Meshtastic commands directly from the browser via the console API.

The C2 Terminal is a persistent bar at the bottom of every page. Click it to expand/collapse a terminal panel where you can run Meshtastic CLI-style commands against the connected radio.

Opening the Terminal

Click anywhere on the C2 COMMAND TERMINAL bar. It slides up to reveal the terminal panel. Click again to close it. The chevron icon in the bar rotates to indicate open/closed state.

Version Badge

The right side of the terminal bar shows the current version and update status as a badge:

Badge stateMeaning
✓ R2.2.xRunning the latest version
↑ UPDATEA newer version is available
β BETARunning a version newer than remote (beta/dev)
⟳ Init...Version check in progress

The version check runs on terminal init and calls GET /api/system/version-status. Clicking an UPDATE badge triggers the update flow.

Running Commands

Commands are sent to POST /api/console with a 30-second timeout. The CLI bridge parses the command string using argparse and dispatches to the appropriate Meshtastic Python SDK call.

The meshtastic prefix is optional — both of these are equivalent:

meshtastic --info
--info

All commands from the API Reference console table are available. Useful examples:

--info                              # Print local node info
--nodes                             # List all nodes with SNR
--set lora.hop_limit 4              # Change a config setting
--set-owner "New Long Name"         # Update node long name
--set-owner-short "SHRT"            # Update short name
--sendtext "Hello!" --dest ^all     # Send to all on ch 0
--sendtext "Hi" --dest !aabbccdd    # Direct message
--traceroute !aabbccdd              # Run traceroute
--ch-index 1 --ch-add "MyChannel"   # Add a new channel
--reboot                            # Reboot the radio

Output

The command output is returned as plain text from the server and displayed in the terminal with monospace styling. Errors (invalid flags, connection failures) are shown in red.

The terminal uses the same backend endpoint as the POST /api/console API endpoint. Any command that works in the API works in the terminal, and vice versa.

Update Flow via Terminal

When the version badge shows ↑ UPDATE, clicking it (or running a manual check) triggers the update flow:

  1. A confirmation modal appears showing current version vs available version
  2. Clicking Install Update calls POST /api/system/start-update
  3. The server downloads the update ZIP, stages it, then restarts the process
  4. On restart, the boot-time updater applies the ZIP (skipping databases and config), then hot-swaps the process
  5. The browser reconnects automatically via SSE auto-reconnect
Back up your databases before updating. Use bash mesh_dash_tools.sh → Option 2 (Database Management) → Backup, or call POST /api/system/restart only after verifying the backup exists.

Full Command Reference

All commands accepted by POST /api/console work in the terminal. The meshtastic prefix is optional:

CommandAction
--infoPrint owner, firmware, node count
--nodesTable of all known nodes with SNR and last heard
--channelsList configured radio channels
--set section.key valueSet a localConfig protobuf field (e.g. --set lora.hop_limit 4)
--get fieldRead a config field value
--set-owner "Name"Change node long name
--set-owner-short "SN"Change node short name (max 4 chars)
--set-canned-message "msg1;msg2"Set canned messages (semicolon-separated)
--get-canned-messageRead current canned messages
--setlat 51.5 --setlon -0.12 --setalt 10Set fixed GPS position and enable fixed mode
--remove-positionDisable fixed position, re-enable GPS
--ch-index 1 --ch-add "Name"Add a secondary channel at next free slot
--ch-index 1 --ch-delDelete/disable channel at index 1
--ch-index 1 --ch-enableRe-enable a disabled channel
--ch-index 1 --ch-set name "MyNet"Set a channel setting
--ch-index 1 --ch-set psk randomGenerate a random PSK for a channel
--ch-index 1 --ch-set psk defaultReset PSK to the default key
--ch-index 1 --ch-set psk noneSet channel to no encryption
--sendtext "msg" --dest !idSend a direct message to a node
--sendtext "msg" --dest ^all --ch-index 0Broadcast on channel 0
--traceroute !idRun a traceroute (raw output, up to 3 hops)
--gpio-wrb 10 1 --dest !idWrite GPIO pin 10 HIGH on remote node
--gpio-rd 0x10 --dest !idRead GPIO mask 0x10 from remote node
--rebootReboot the connected radio
--qrPrint channel QR URL
All terminal commands time out after 30 seconds. Commands that require radio responses (traceroute, GPIO read) will time out if the remote node doesn't respond within that window. The connection manager is not affected — the radio remains connected regardless of terminal command results.