This page is for end users running an MeshCoreTel-firmware *_repeater_mqtt build with the local web panel enabled.
It covers how to reach the panel, what each section does, and what to expect when using it on desktop or mobile.
The repeater web panel is a local HTTPS configuration page served directly by the repeater over WiFi.
It gives you:
/app/statsget commands for common repeater and MQTT checksOperational guidance:
set web off on MQTT repeaters that need maximum headroomThe screenshots below show the current split between the lighter /app admin page and the dedicated /stats status page.
/app screenshot/stats screenshotYou need:
*_repeater_mqtt firmware buildSome constrained targets disable the web panel to stay within flash limits. If your board does not support it, get web.status will not show it as available.
https://<repeater-ip>/ in a browser.Useful CLI commands:
get wifi.status: shows WiFi state and IP address when connected.get web.status: shows whether the web panel is up and which URL to use.Example:
https://10.33.135.208/This is intended for local admin use on a trusted network, not for open internet exposure.
The panel is designed to load more gently than earlier versions. On login it now fetches sections in sequence instead of requesting one large bootstrap payload up front.
Even with that change, the panel still uses HTTPS and internal heap. On boards running one or two WSS MQTT brokers, opening the panel reduces MQTT headroom while the session is active.
Recommended practice for repeater deployments:
set web off when finished so MQTT has the most headroom availableThe web console now has two main pages:
/app: lighter-weight control and configuration view/stats: current status, trends, neighbours, and recent eventsBoth pages share the same top navigation and utility actions.
/appThe /app page is the main admin and configuration surface.
It includes:
App and StatsAdvertStart OTARebootLogoutUse Start OTA only when you intend to update firmware.
/statsThe /stats page is the home for current status and historical visibility.
It includes:
App and StatsRefreshRebootLogoutThis section runs common read-only commands for:
These are useful for quick checks without typing into the CLI field. The MQTT quick actions include mqtt.status, mqtt.client_version, mqtt.iata, mqtt.owner, and mqtt.email.
This is a small terminal for the repeater CLI.
Enter to run the commandclock is available here if you want to check the repeater's current board timeThis makes it easy to see exactly what the panel sent to the repeater.
This section includes:
Notes:
Latitude and Longitude default to 0.0 as placeholdersThis section shows:
Version: firmware version with build dateClient Version: MQTT client version stringPublic KeyGhost Node Mode is a convenience control on /app for a repeater that should stay on Wi-Fi and MQTT, but should not actively behave like another nearby repeater.
Typical use case:
When enabled, Ghost Node Mode:
repeat offadvert.interval to 0flood.advert.interval to 0When disabled, the panel restores the prior repeat and advert settings if it still knows them from the current browser session. If not, it falls back to:
repeat onadvert.interval 60flood.advert.interval 12This mode is useful when you want the device to observe and publish, not to act as an additional RF repeater. It does not create a separate firmware role; it is just a grouped web-panel shortcut for those existing settings.
This section includes:
mqtt.iata: selected from a curated east-coast/south-east list.mqtt.owner: owner public key.mqtt.email: owner contact email.meshcoretel, letsmesh-eu, and letsmesh-us.UNSET - To be configured is the default for new repeater MQTT installs until a real saved value exists.
Notes:
mqtt.iata is UNSET, the panel shows a banner at the top reminding you to set it under MQTT Settingsmqtt.iata is UNSET, enabled MQTT brokers do not attempt to connect/stats OverviewThe stats page is loaded separately from /app and is intended to keep the main admin page lighter.
The /stats page currently shows:
Services: MQTT, web, archive, neighbour count, and, when mounted, card and archive capacityEnvironment summary card on boards that report GPS or environmental telemetryTrends: battery, heap free, packet activity, signal, noise floor, and, when GPS is enabled, satellitesNeighbours: current neighbour table with ID, SNR, heard age, and advert ageEvents: current boot/session eventsFor boards that expose extra telemetry, the optional Environment summary card can show current values such as GPS fix state, latitude, longitude, GPS altitude, voltage, sensor temperature, humidity, barometer, pressure-derived altitude, and MCU temperature.
Metrics with no current value are hidden rather than showing placeholder rows, so the cards vary by board and by current sensor state.
The Core battery meter prefers a board-reported battery percentage when the target exposes one. On those boards, the meter detail shows the live battery millivolt reading only. Otherwise it scales the displayed percentage from the board's configured battery voltage range and shows that range in the detail text rather than assuming a fixed single-cell 3000-4200 mV pack.
The trend graphs load sequentially rather than as one large payload:
This keeps browser-side and device-side memory use lower than the previous in-page stats view.
If web.stats is enabled and an SD archive is mounted, trends can restore archived summary points after reboot from the latest SD snapshot. Recent live points are still added from in-memory history.
Stats samples are collected once per minute.
Current in-memory history caps are:
| Board class | Sample cap | Event cap | Approx. sampled history |
|---|---|---|---|
| No PSRAM | 24 |
8 |
Live-only recent history |
Less than 4 MB PSRAM |
240 |
96 |
About 4 hours |
4 MB to less than 8 MB PSRAM |
480 |
192 |
About 8 hours |
8 MB PSRAM or more |
720 |
288 |
About 12 hours |
On boards with roughly 2 MB PSRAM or more, stats history starts capturing from boot when web.stats is enabled, even if /stats has not been opened yet.
Archive-backed restore requires web.stats enabled plus a mounted SD card on boards that support the MeshCoreTel-firmware archive path.
The main purpose of the SD card is to let the repeater retain and restore stats history for /stats. The archive keeps fast .latest snapshot files for quick restore and UTC-dated daily .log files for longer-term history. As a secondary option, those files can also be removed and inspected on a computer for deeper manual review.
On no-PSRAM boards, /stats can still show recent graphs while the stats view is active, but the history is smaller and does not provide the same archive-backed behaviour as PSRAM-capable boards.
Useful CLI commands:
set web.stats onset web.stats offget web.stats.statusThe page is responsive and should work cleanly on a phone.
On mobile:
wifi.status in Quick get Commands.mqtt.status in Quick get Commands./stats from the top navigation for the historical stats view.Device Name.Save.MQTT Settings.Save.Start OTA.80 is released so OTA can take over that port.set web.stats on./stats from the top navigation.Services for archive and runtime state.Trends for recent graph history.Refresh to reload the stats page.That is expected. The panel uses a self-signed certificate generated for local use.
Check:
get wifi.statusget web.status reports the panel as upUse the repeater admin password, not the guest password.
The web panel now loads settings section-by-section to reduce startup pressure, but HTTPS still consumes internal heap.
Check:
memory before and after loginset web offFor fixed installations where MQTT uptime matters more than browser access, use the panel briefly and then disable it again.
The repeater now redirects plain http:// requests to the local https:// panel URL. If the browser still shows a connection problem after redirecting, open https://<repeater-ip>/ directly and accept the self-signed certificate warning first.
Try:
Refresh on /statsget wifi.status/stats is unavailableCheck:
get web.statusget web.stats.statusset web.stats on has been appliedIf web.stats is off, /stats will stay disabled and the historical graph requests will not run.