Connect
Link this console to your radio over USB serial. The radio speaks the same protobuf phone API as the Android app — everything here interops with it.
Once linked, the disconnect button lives in the header — available from every tab.
Browser Bluetooth (Web Bluetooth) in Chrome or Edge on desktop pairs with the radio’s Meshtastic BLE service — the same link the Android app uses.
Browsers can’t open the radio’s raw TCP API (port 4403), so Wi-Fi connect needs a WebSocket bridge in the Outpost firmware — that bridge is queued.
The radio's own debug output shares the serial wire with the framed data stream. Lines like “Client set channel 1” or “Ignore unauthorized admin payload” appear here — the ground truth for whether a pushed setting actually applied.
Nodes on the Mesh
Live view of every node heard via NodeInfo broadcasts and received packets. Cards show the node's Outpost profile (handle, party, vehicle), rig links, and mesh stats (SNR, distance, altitude, battery, last heard) whenever they're known. Medical info is never shown here. Your own radio is tagged SELF.
Right-click a card for actions (Direct Message, Request Position, Show Full Profile, Friend, Favorite, Hide from List, Ignore, Forget Node, Badge Color). ★ favorites and the friend list are this console's own. Hide is this console only; Ignore is set on the radio and drops that node's traffic entirely. Online means heard within 2 hours — the radio's own rule. The short-name badge is colored by the Badge metric (same scale as the phone app); in CUSTOM mode, right-click a badge to give that node its own color.
Chat and Rooms
Rooms and direct messages on one surface. Room messages show ✓ sent once the radio takes them; direct messages get a real ✓ delivered from the receiver's ACK. Pick a conversation here or in the Conversation dropdown.
Room threads set this automatically. It is the channel a poll posts to when no room thread is selected.
Polls ride the selected chat channel above. Incoming polls appear here with vote buttons; results tally live from VOTE traffic.
Manage Rooms
A room is one secondary mesh channel (1–7) with its own key and a Room Category. The list runs by kind: GENERAL first (the neutral default), then the physical locations — LOCAL, TRAIL, OUTPOST, BASECAMP — then the activities — EVENT, HUNTING/FISHING, EXPEDITION, RESCUE — then the groupings — FLEET, CONVOY, FLOTILLA. Room Category Definitions (under Create Room) says what each one is for. All Outpost traffic on a room channel is relayed by strangers' nodes but unreadable to them. Invite codes are fully interoperable with the Android app — create here, join there, or the reverse.
Channels on This Radio
| # | Name | Role | Key | |
|---|---|---|---|---|
| Connect to read channels. | ||||
Create Room
Join Room
My Rooms (Stored on This PC)
Honest limits: encryption hides content, not presence — your radio still appears in nearby users' node lists. Anyone handed an invite code can read room traffic; rotate by creating a fresh room.
Map
Pick a layer: OSM Dark street tiles (OpenStreetMap data via CARTO,
needs internet), Satellite (Esri imagery), Google (needs internet + your own
Google Maps API key), or Offline plot —
the relative grid that works with no network at all, which is the field fallback.
Nodes in amber, your own radio in green.
Waypoints carry a category marker: ▲ CAMP · ● WATER ·
■ FUEL · ★ VIEW ·
✕ HAZ · ◆ GEN.
On tile layers, drag to pan; click a marker for details.
Waypoints: from a room in Chat hit Waypoints (or choose the room in the bar below) →
+ Add waypoint → set the spot with Pick on map, Use my position, or by typing
coordinates → name it, choose its category marker → Send to room. The waypoint appears on
every Outpost client tuned to that room; the list under the map keeps this console's copy.
Site Planner: estimate a planned node's coverage — a planning guide, not a measurement —
and keep the estimate on the map as a coverage layer, managed in the list under the map.
Site Planner
Estimate the coverage of a planned node. The result is a planning guide, not a measurement.
Receiver
Simulation Options
Estimate only. Free-space loss at 1 km, a log-distance slope for the environment, an allowance for antenna height, and your receiver numbers. Terrain, buildings, and trees change everything — verify on the air.
Test Bench
Fire any OVL1 packet type at the mesh and watch the decoded replies roll in. This is the desk-testing rig for firmware and app behavior.
SOS Beacon
SOS Profile Card
Trail Assist
Waypoint
Breadcrumb
Check-In
Hazard Pin
Overdue Escalation
Uses your saved profile for handle / party / descriptor.
Raw Text Message
Plain text on the selected channel.
Band Scan
The connected radio sweeps every channel in its region plan for the active modem preset, measuring peak RSSI per channel (US LongFast: 104 channels, about 6 seconds). Mesh traffic takes precedence — a busy radio answers BUSY, and a sweep stops early if the mesh needs the radio. Needs Outpost firmware 0.9.10+.
Fleet Setup — Stamp One Setup onto Many Radios
For hosts handing out pre-configured nodes (events, crews, classes): set up ONE radio exactly the way the fleet should run, save it as a Fleet Template, then arm Stamp Mode — each fresh radio you connect is detected, stamped with the template, given the next guest name, and verified by re-reading it before it counts. A template never carries a radio's identity: no node number, no key pair, no owner names, no fixed position — every radio keeps its own.
Fleet Templates
⚠ A template file contains the fleet's room keys and the golden radio's module credentials. Treat it like a room invite code — or set an export passphrase above and the file is encrypted with the same PBKDF2 + AES-GCM discipline as console backups.
Stamp Mode
Packet Log — Decoded Live
Settings
Settings are written to your node over the encrypted local link — nothing here touches anyone else's radio. Every write is a full-section read-modify-write: the console re-reads the section from the radio, changes only the fields you touched, and sends the whole section back, so settings made elsewhere are never zeroed. Most writes reboot the radio to apply. Edits anywhere in Settings collect under the Save button in the header — press it once and every section you changed is written; a changed section is marked ● until it is saved. No LoRa region editing (regulatory) — the region recovery tool lives under Advanced settings, at the bottom of the menu.
Identity and Role
Your operator profile and this radio's identity and role live on this one page. The profile is stored on this PC and shared on the mesh only when you choose. The mesh name, Node Role, and status message are written to the radio with the header Save button.
Profile
Saved to the radio with the header Save button; the mesh learns it on the next NodeInfo broadcast. This is the name other nodes see — set it after a flash wipe.
Node Type represents who or what this node is used for. It is what this node IS on everyone's map and node cards — a person, a vehicle, a fixed station. It is NOT the radio's Node Role: that's the radio's mesh job (Scout / Sentinel / Drifter / Rover / Homestead), set under Node Role just below on this page. A handheld riding in a vehicle is still a Scout; a radio that lives in the vehicle is a Rover — or a Sentinel if it relays; "Vehicle" lives here. Basecamp is an Outpost set up as a temporary camp — it stores as an Outpost with Temporary permanence, so the wire format is unchanged. Station means fixed sensing gear — a weather station or sensor platform, out there unattended.
Your Activity says what you — the person — are out doing. Activity is the per-kind descriptor (rooms call theirs the Room Category): a Person's Activity is this list, a Vehicle's Activity is its vehicle type, a Tracker's is its tracker type. This picker belongs to Person profiles only: when your Node Type is a vehicle, a station, or a tracker, it switches off — the kind's own Activity field above carries the descriptor instead, and a person's Activity stays off the wire.
Node Role
Connect a radio to edit its node role.
Profile Details
Audiences decide who gets your profile when they ask for it: Public — anyone who asks. Friends — nodes on your friend list. Room — members of your in-scope rooms. Request only — nobody automatically; you approve each request. Invisible — never shared. Medical has its own picker because it's the sensitive part — and it is never included in a public broadcast, whatever either picker says.
Save locally commits your editing copy on this PC. Save to radio also stores it — the FULL profile, medical included, plus both audience settings — inside your connected radio, which then answers profile requests itself, enforcing your audiences, even with this PC off. Wait for the "radio confirmed" status: the radio echoes your profile's fingerprint back as the receipt. Radios on stock or pre-0.9.1 firmware — which have no profile storage — will report "did not confirm". The copy on this PC remains your editing draft, and it's what stock-firmware radios (like a T1000-E) rely on, since they can't store profiles themselves. Broadcast profile sends the whole profile from the form to everyone in earshot on the channel above — medical is never included in a broadcast, and a broadcast has no acknowledgment. Announce profile sends only your profile's Fingerprint (PROFH): devices holding your profile compare it with theirs and re-request only if it changed. With "Announce after saving to radio" ticked, a confirmed save whose fingerprint changed announces itself once, automatically.
Request profile asks the target node for ITS profile. Whether it answers is decided by that node's audience setting: public answers anyone, friends/room answer if you qualify, request-only means its owner decides, off means silence — and a radio with no profile stored on it stays silent by design. The answer is filed onto that node's card here.
Privacy: medical is included only when you explicitly allow it here — it is never in public broadcasts. The Android app enforces the same rule.
Status Message
One line the node advertises about itself (a module setting — statusmessage), e.g. where it sits or when it is staffed.
Saving is not a one-time broadcast. The message becomes part of your profile and your radio’s node record — your radio re-broadcasts it on its normal cadence, and other Outpost nodes pull your updated profile when it changes, so a saved status keeps circulating for as long as it is set.
Connect a radio to edit its status message.
Friend Requests
No pending friend requests.
Requests arrive over the mesh, addressed to this radio. Accepting adds the node to this console's friend list, replies FRND:ACC, and pushes the set to the radio (FRNDSET) so its FRIENDS audience answers them. Declining replies FRND:DEL.
Friends
This console's friend list, stored on this PC — the same list the Nodes tab edits (right-click a node card → Friend).
Device and Behavior
Node Role — now under Identity and Role.
Connect a radio to edit its device settings.
Channels
Channels on This Radio (Read-Only)
| # | Name | Role | Key |
|---|---|---|---|
| Connect to read channels. | |||
Channel slots are managed from the Chat + Rooms tab. Key shows PSK length only — never the key itself.
Disable a Secondary Channel
Position and GPS
Connect a radio to edit its position settings.
Connect a radio to edit GPS sensitivity.
Connectivity
Bluetooth
If this radio never appears in phone scans, Bluetooth is off in its config. Changing this writes bluetooth.enabled — the radio reboots to apply; give it ~15 s.
Connect a radio to edit Bluetooth pairing.
Wi-Fi
Wi-Fi on = the radio starts its own access point (or joins a saved network). Changing this writes network.wifi_enabled; RADIO CONFIG on the Connect tab also reports the state. The radio reboots to apply.
Connect a radio to edit its Wi-Fi network.
Joining a network reboots the radio. If this console is linked to the radio over that same Wi-Fi, reconnect after it comes back.
Power and Battery
The Sentinel and Drifter survival kit. Deep-sleep timing and battery calibration live in Advanced settings → Sleep Timing (Advanced).
Connect a radio to edit its power settings.
Display and Units
This Console
Applies to node distances and map readouts in this console only. Temperature follows: °F with miles, °C with kilometers.
The Radio's Display
Connect a radio to edit its screen settings.
LoRa and Broadcast
Connect a radio to edit its LoRa settings.
Custom bandwidth / spread factor / coding rate, frequency overrides and the remaining RF internals live in Advanced settings → LoRa deep RF. Region is never edited here — the read-out and the region recovery tool live in Advanced settings → Region recovery.
Sensors and IoT
Telemetry
How often the radio measures and reports itself and its sensors. This firmware finds environment sensors on its own — there is no sensor-type setting to pick.
Connect a radio to edit its telemetry settings.
Detection Sensor
One GPIO pin the radio watches — a door switch, a motion sensor, a float switch. On a trigger it posts “<name> detected” to the mesh.
Connect a radio to edit its detection sensor.
Paxcounter
Counts the Wi-Fi and Bluetooth devices it can hear — a people-flow sensor for a gate, trailhead or camp entrance. Only radios built with paxcounter support report counts.
Connect a radio to edit its paxcounter.
Alerts and Outputs
External Notification
Drives pins on the radio when traffic arrives — an LED, a buzzer, a vibration motor — so a headless node can still get your attention.
Connect a radio to edit its external notification.
Canned Messages
Pre-written messages the radio itself can send from a rotary encoder or up/down buttons — no phone needed. The message texts live in a separate store on the device; this page sets the module and its input hardware.
Connect a radio to edit its canned messages.
Messages and Storage
Store and Forward
Holds messages for nodes that are temporarily out of range and hands them over when they come back. A fleet usually wants ONE server node — the Sentinel on the hill — not every radio storing mail.
Connect a radio to edit store & forward.
Gateway and MQTT
MQTT Bridge
Gateways mesh traffic to an MQTT broker wherever the radio can reach the internet. Bridged traffic leaves the mesh — think about which channels are marked to send to the broker before enabling it.
Connect a radio to edit its MQTT settings.
LoRa-Side MQTT Flags
These two switches live in the radio's LoRa config, not the MQTT module — they decide how this radio treats MQTT-born traffic.
Connect a radio to edit its advanced LoRa settings.
Neighbors and Mesh
Neighbor Info
Each radio periodically reports the nodes it hears directly (one hop, with signal strength) — together that's the who-hears-whom map of the mesh, the coverage picture you plan relays from. It costs airtime, so the firmware floor is one report every 4 hours.
Connect a radio to edit neighbor info.
Node Actions and Backup
Node Actions
Reboots in ~5 seconds. The serial link will drop — reconnect after it comes back.
Backup and Firmware
Backup exports your rooms, profile and settings as an encrypted file and can re-provision a wiped radio. Firmware flashes Outpost builds over USB.
Danger Zone
Delete node database wipes every node this radio has learned (stock Meshtastic's node-database reset) — owner, channels, and config are kept; the radio reboots and relearns the mesh from scratch. Factory reset wipes everything, like a fresh flash. Both ask twice: first click arms, second click fires.
About
© OFFGRID TACTIX · OUTPOST — offgridtactix.com
Advanced Settings
Deeply technical settings, grouped the way stock Meshtastic groups them. Wrong values here can silently break mesh compatibility or RF legality, strand the radio's own controls, or lock you out of it — which is why they live down here. The usual rules still apply: every group stays locked until the console has read that part of the radio's config this session, and every save is a full-section read-modify-write.
LoRa (Deep RF)
The RF internals behind LoRa & broadcast. The modem preset, hop limit and TX power stay in the basic category — nothing here duplicates them. Custom bandwidth / spread factor / coding rate only take effect while Use a modem preset is OFF over there; with a preset on, the firmware ignores them.
Connect a radio to edit its advanced LoRa settings.
Region Recovery
Region is normally set on the device and is deliberately not offered as a setting. This recovery button exists for one case: a flash that wiped the radio's config, leaving the region UNSET — in that state the radio cannot transmit at all, not even to deliver admin commands to itself. It writes US only, read-modify-write: every other LoRa setting (preset, hop limit, TX power) goes back exactly as the radio reported it.
Security and Keys
Connect a radio to edit its security settings.
Network Infrastructure
Fixed-infrastructure addressing. The Wi-Fi on/off switch, the network it joins and the NTP server live in Connectivity — this page is the rest of the network section.
Connect a radio to edit its network settings.
Device Hardware and Role Override
Role Override (Full Stock List)
This writes the same device.role field as the friendly Node Role picker in Identity and Role — it just offers the full stock list by name and number, for parity with other clients. The deprecated ROUTER_CLIENT is excluded; the two TAK roles belong to the ATAK ecosystem and pair with the TAK module (Modules — wired integrations). Prefer the friendly picker for everyday use.
Connect a radio to edit its device settings.
Hardware Pins
Board-level definitions. A wrong button pin can strand the device's only physical control — check the board's pinout before touching these.
Connect a radio to edit its device settings.
Position Hardware and Flags
GPS wiring overrides and the exact contents of the position packets this node sends. Intervals, smart position and GPS mode live in Position & GPS.
Connect a radio to edit its position settings.
Sleep Timing (Advanced)
The sleep-state machinery behind Power & battery. Bad values here can make a node unreachable for very long stretches — think before stretching the timers on a node you can't physically reach.
Connect a radio to edit its power settings.
Display (Hardware Fit)
Panel-specific fit. Wrong values garble the radio's own screen; the everyday screen settings (timeout, flip, clock) live in Display & units.
Connect a radio to edit its display settings.
Modules — Wired Integrations
Peripheral and developer modules for wired rigs — the module sections the basic categories don't cover. Same disciplines: locked until read, whole-section read-modify-write on save.
Serial
Connect a radio to edit its serial module.
Audio (Codec2 Voice)
Connect a radio to edit its audio module.
Remote Hardware
Lets other nodes read and drive this radio's GPIO pins over the mesh. Only the pins listed here are exposed — leave the list tight.
Connect a radio to edit its remote-hardware module.
Traffic Management
Mesh-traffic shaping on this node. Mis-set, these can starve or flood the mesh — change one thing at a time and watch the packet log.
Connect a radio to edit its traffic management.
TAK (ATAK Ecosystem)
Team and role this node reports to ATAK. Pairs with the TAK / TAK_TRACKER device roles (role override, in Device hardware & role override). Meaningless outside an ATAK deployment.
Connect a radio to edit its TAK module.
Ambient Lighting
The radio's addressable LED output (NeoPixel-class), when the board has one wired.
Connect a radio to edit its ambient lighting.
Range Test
Periodically broadcasts a numbered test packet so a second node can log where coverage ends. Sender interval 0 = listen only.
Connect a radio to edit its range test module.
Firmware — Flash the Radio
Flash Outpost firmware onto a board (ESP32-S3) over USB using the ESP ROM bootloader protocol — the same approach as the stock web flasher. No extra tools, no drivers beyond your board's USB-serial.
Flashing needs the board sitting in its ROM download mode. On most boards the flasher gets there by itself, wiggling the USB-serial control lines (DTR/RTS) to strap BOOT + reset — and the Force download mode button runs that strap on its own with longer holds, then proves it worked by reading back the chip name and MAC. Some boards can't be forced from software at all: the SenseCAP Indicator's USB-serial port rejects the control signals outright, so nothing the console sends can strap it. For those, put the board there by hand: hold the device's button while plugging in the USB cable, and keep holding until the flash starts. If two serial ports appear, pick the one named USB Serial — not the RP2040 one (that's the Indicator's second chip; it can't take this firmware). Boards with BOOT/RESET buttons: hold BOOT, tap RESET, then FLASH.
Most boards reset into the new firmware on their own. If the screen stays dark and the board is silent, it may simply still be sitting in download mode — that's not a brick: unplug/replug or power-cycle it once and it boots normally. Then open the Connect tab and press Connect to link the fresh radio — then Backup → Re-provision pushes your room channels back onto it.
Backup
Backs up everything this console stores: the room list including private keys, your full profile, and console settings. Encrypted in your browser with a passphrase you choose — the passphrase is never stored anywhere. Lose it and the backup is unrecoverable. Pair it with the Firmware tab: back up before flashing, restore and re-provision after.
Export
PBKDF2-SHA256 · 250,000 iterations · 16-byte salt →
AES-GCM-256 · 12-byte IV. Downloads as
outpost-backup-YYYYMMDD-HHMM.json containing only
{version, salt, iv, ciphertext} — no plaintext keys.
Import and Restore
Push the room channels saved on this PC onto the linked radio.
Restore is all-or-nothing: the file is fully validated before anything is written, so a wrong passphrase or corrupt file can never half-apply.