Releases: mr-tbot/mesh-api
MESH-API v0.7.4.1 Beta - Send Composer Revamp, Previously Seen Nodes & MeshCore Presence Fix
MESH-API v0.7.4.1 Beta — Send Composer Revamp, Previously Seen Nodes & MeshCore Presence Fix
This release focuses on the dashboard Send a Message experience, node-list
presence accuracy across both radios, and a big documentation cleanup.
📤 Send a Message composer, rebuilt
- New Broadcast / Direct mode tabs replace the old single mode toggle.
- Broadcast mode now has a per-network picker with checkboxes so you can
target one or more radios in a single send:- 📡 Meshtastic — pick a Meshtastic channel.
- 🟣 MeshCore — pick a MeshCore channel.
- 🌉 Bridged — fan out to both radios at once. The bridged dropdown
now shows both routed channels for each entry, e.g.
0 → 📡 LongFast + 🟣 Public, so it's clear exactly which Meshtastic and
MeshCore channels a bridged broadcast will reach (instead of a single
ambiguous channel name).
- Direct mode searches the combined node list across both networks and hints
which network the selected destination lives on. - Rows are only shown for the radios you actually have connected (the bridged
row appears only when both Meshtastic and MeshCore are active).
🟢 "Previously Seen" nodes
- The Available Nodes panel now splits into a live list and a collapsible
Previously Seen section for nodes that have gone quiet, controlled by an
adjustable staleness threshold. Favorited nodes stay pinned in the main list.
🐛 MeshCore node presence fix
- MeshCore addressable contacts were incorrectly dropping into Previously Seen
(or out of the list) because their occasional advert age was treated like
a continuous Meshtastic beacon. - Presence for MeshCore nodes is now activity-based — only message activity
marks a MeshCore node as recently heard — while Meshtastic nodes keep using
all presence signals. This matches how MeshCore works: a persistent contact
book with only occasional adverts, rather than continuous beaconing.
📚 Documentation cleanup
- The README was slimmed substantially. Large reference sections moved into their
own files that the README links to:- DEVELOPING_EXTENSIONS.md — full extension developer guide.
- CONFIGURATION.md — complete
config.jsonreference. - INTEGRATIONS.md — Home Assistant, LLM, Email, Discord, and Twilio setup.
- The dashboard footer link now points to mesh-api.dev.
Still a beta — please report anything that breaks on
GitHub Issues.
MESH-API v0.7.4 Beta - Setup Wizard Covers MeshCore
MESH-API v0.7.4 Beta — Setup Wizard Covers MeshCore
A feature release on top of v0.7.3.7 Beta.
🧙 The Setup Wizard now configures MeshCore
The first-start Setup Wizard (also re-runnable any time from the ⚙️ Config editor header via 🧙 Run Setup Wizard) was brought up to date with the v0.7.x multi-radio architecture. Previously it only configured a single Meshtastic radio — so a fresh install had to hand-edit config.json to use MeshCore. Now the wizard walks you through both radios.
- 🟣 New MeshCore Radio step — enable MeshCore, choose the connection type (serial / TCP / BLE) with only the relevant fields shown for each (serial port + baud, TCP host + port, or BLE address), and toggle send adverts and channel bridging (MT⇄MC). Writes the
meshcoreblock ofconfig.json. - 📡 MeshCore-only / standalone toggle — the Meshtastic step gained an Enable Meshtastic radio checkbox. Uncheck it (
meshtastic_enabled=false) to configure a MeshCore-only node with no Meshtastic device, directly from the wizard. - 🔀 Default Send Network selector — the node-identity step now sets
default_send_network(auto/ Meshtastic only / MeshCore only / both). - ♻️ Pre-population — every new field loads from your existing
config.jsonwhen you re-run the wizard, so nothing is lost.
The wizard now flows: Welcome → Meshtastic Radio → MeshCore Radio → AI Provider → Node Identity. No backend or config-schema changes — the wizard simply writes the same keys the Config editor already supports.
📚 Documentation
- All in-app and README version references updated to v0.7.4.
- README Setup Wizard section + CHANGELOG updated with summary and detailed notes.
Beta software. Verify on your own mesh before relying on it for emergencies.
MESH-API v0.7.3.7 Beta - All Extensions Route to MeshCore
MESH-API v0.7.3.7 Beta — All Extensions Route to MeshCore
A bug-fix release on top of v0.7.3.6 Beta.
🟣 Every extension now reaches MeshCore (GitHub #59)
Messages and AI replies that an extension pushes to the mesh — Telegram, Discord, Home Assistant, the alert feeds (NWS, GDACS, Amber, NASA), MQTT, Matrix, Mattermost, n8n, and the rest — now reach every connected radio: Meshtastic and MeshCore, not just Meshtastic.
What was wrong: a user running Meshtastic + MeshCore + Telegram reported that a message sent from Telegram arrived on Meshtastic but never on MeshCore — "like the TG extension is not known for MeshCore." The shared BaseExtension.send_to_mesh() helper (and a couple of extensions that sent directly) only spoke to the Meshtastic interface and ignored MeshCore entirely.
The fix: extension outbound now flows through the core network-agnostic web_send path introduced in v0.7.0. Broadcasts fan out to every active radio and DMs route by the destination's network prefix, honoring default_send_network (auto = whichever radios are connected). Discord's webhook + polling inbound and Home Assistant's reply path were updated to use the same helper. A Meshtastic-only fallback is retained for older cores.
- ✅ No config changes required —
autoalready targets whichever radios are connected. - ✅ Applies to all 30+ bundled extensions at once (single framework-level fix).
- ✅ Slash commands and AI replies were already network-agnostic; this closes the gap for extension-originated traffic.
📚 Documentation
- All in-app and README version references updated to v0.7.3.7.
- CHANGELOG updated with summary + detailed notes.
Beta software. Verify on your own mesh before relying on it for emergencies.
MESH-API v0.7.3.6 Beta - AI-Endpoint Heartbeat Monitoring
MESH-API v0.7.3.6 Beta — AI-Endpoint Heartbeat Monitoring
💓 Token-free AI-endpoint heartbeat
Each named AI endpoint now shows a live connection status dot in the AI Endpoints panel so you can tell at a glance whether an endpoint is actually reachable — without spending any AI tokens.
- 🟢 online — endpoint answered a lightweight
/modelsprobe (HTTP 200) - 🟡 reachable / auth — endpoint responded but needs attention (e.g. 401/403 auth, or another HTTP status)
- 🔴 offline — connection refused or timed out
- ⚪ unconfigured — no URL to probe
The check is a plain GET /models (derived from each endpoint's chat URL) with the endpoint's bearer key and a short timeout — no chat completion is issued, so it never burns tokens. A background thread refreshes status on an interval (default every 60s, configurable via ai_endpoint_heartbeat_sec), and the WebUI panel polls every 30s while open. A Check now button forces an immediate probe per endpoint.
New API endpoint: GET /api/ai_endpoints/health (add ?check=1 to force a refresh).
📚 Documentation
- The full version history has been split out of the README into a dedicated CHANGELOG.md, and the extensions reference now lives in EXTENSIONS.md — keeping the README short and readable on the GitHub landing page.
- All in-app and README version references updated to v0.7.3.6.
Beta software. Verify on your own mesh before relying on it for emergencies.
MESH-API v0.7.3 Beta - Cross-Network Channel Bridge UI
MESH-API v0.7.3 Beta — Cross-Network Channel Bridge UI
A feature release on top of v0.7.2.5 Beta.
🌉 Cross-network channel bridge — now in the WebUI
When you run both a Meshtastic and a MeshCore radio, MESH-API can mirror chat between channels on the two networks. Until now that mapping was buried in config.json; v0.7.3 adds a proper visual editor.
- New 🌉 Bridge toolbar button (appears only when MeshCore is in play) opens a Channel Bridge editor.
- Map channels visually: each row links a Meshtastic channel ⇄ a MeshCore channel. The per-device channel indexes can differ, so you set each side's number explicitly (with the channel name shown for reference).
- Per-link direction: ⇄ Both, → MT to MC, or ← MC to MT.
- Bridge on/off master toggle, plus customizable tags (e.g.
[MT]/[MC]) that prefix bridged messages with the sender's name. - Live status: the editor shows whether both radios are currently connected (bridging only runs when both are up), and changes apply live — no restart.
- Persists to the
meshcoreblock ofconfig.json(preserving every other key/secret). - Slash commands and AI replies are never bridged — only human chat, with an echo-loop guard.
New endpoints: GET /api/channel_bridge and POST /api/channel_bridge.
Note: cross-network DMs are not bridged (the two networks use unrelated identity spaces) — this release is about channels. You can still DM a MeshCore contact directly from the dashboard.
🐳 Docker
Multi-arch images (linux/amd64 + linux/arm64) are published to Docker Hub: mrtbot/mesh-api (latest, 0.7.3-beta, 0.7.3).
Built and maintained by one developer with the help of AI tools. If MESH-API is useful to you, please consider a donation (links in the README) and file issues with your real-world experience. 🙏
MESH-API v0.7.3.2 Beta - Map Node Filter + MeshCore Map Fix
MESH-API v0.7.3.2 Beta — Map Node Filter + MeshCore Map Fix
🗺️ Node Map filter
The Node Map now has a Show: dropdown to filter which nodes are plotted:
- All nodes
- ⭐ Favorites only
- 🔵 Meshtastic only
- 🟣 MeshCore only
Your selection persists across reloads, and a live count shows how many nodes are currently displayed.
🐛 MeshCore nodes now appear on the map
Fixed a bug where MeshCore radios that were reporting GPS never showed up on the map. The map was only reading the node-position snapshot rendered once at page load, so any position discovered after load (which is the normal case for MeshCore contacts, whose location arrives via advert) was ignored. The map now merges live /nodes GPS for both networks on every refresh — so MeshCore nodes appear without a manual reload.
🏷️ Network labels on map
Map tooltips now tag every node with its network — [MT] for Meshtastic and [MC] for MeshCore (previously only MeshCore was labeled).
Beta software. Verify on your own mesh before relying on it for emergencies.
MESH-API v0.7.3.1 Beta - Named AI Endpoints + Live Extension Toggle Fix
MESH-API v0.7.3.1 Beta — Named AI Endpoints + Live Extension Toggle Fix
🔌 Named AI endpoints (name + type + config, per channel)
You can now define multiple named AI endpoints, each with its own name, type, and config (URL, API key, model, timeout), from a new 🔌 Manage AI Endpoints panel inside the 🤖 Channel Agents modal. Then assign a different endpoint to each channel under the new Named Endpoints group in the per-channel provider dropdown.
This solves the case where you want to point two channels at two separate OpenAI-compatible agents without renaming a single shared provider. Supported types: openai_compatible, openai, hermes, grok, openrouter, groq, deepseek, mistral, lmstudio (picking a type fills in its default URL; you can override it).
- New endpoints:
GET/POST /api/ai_endpoints. - API keys are masked in responses; submitting a blank key preserves the stored key.
- Changes persist to the
ai_endpointsblock ofconfig.jsonand apply live.
🐛 Extension Enable/Disable fix
Fixed a bug where the extension Enable/Disable button did nothing for an already-loaded extension (it only flipped the on-disk flag, so the status stayed "Active"). Toggling now live-loads or unloads the extension and updates the command registry — no restart needed.
Beta software. Verify on your own mesh before relying on it for emergencies.
MESH-API v0.7.2.5 Beta - Mouse-Reactive Mesh Background
MESH-API v0.7.2.5 Beta — Mouse-Reactive Mesh Background
A visual release on top of v0.7.2.4 Beta.
🕸️ Mouse-reactive animated mesh background
The dashboard's plain black background is replaced with a dense, living "mesh" grid behind the UI:
- A field of points connected by lines that drift continuously and warp toward your mouse in real time — like a mesh network breathing behind your dashboard.
- The UI boxes are now slightly translucent (~18%) so the grid shows through behind the panels. Inputs, buttons, and controls stay fully opaque and readable.
- Fully controllable from UI Settings → Appearance:
- Mesh Background — toggle on/off
- Mesh Speed — how fast it drifts and reacts
- Mesh Line Thickness — line weight / density feel
- Mesh Color — any color you like
- Settings persist in your browser. Renders on a single GPU-friendly
<canvas>behind the panels (pointer-events: none, so it never interferes with the UI).
🐳 Docker
Multi-arch images (linux/amd64 + linux/arm64) are published to Docker Hub: mrtbot/mesh-api (latest, 0.7.2.5-beta, 0.7.2.5).
Built and maintained by one developer with the help of AI tools. If MESH-API is useful to you, please consider a donation (links in the README) and file issues with your real-world experience. 🙏
MESH-API v0.7.2.4 Beta - MQTT Node Indicators
MESH-API v0.7.2.4 Beta — MQTT Node Indicators
A small release on top of v0.7.2.3 Beta.
☁️ MQTT node indicators
Nodes heard over MQTT (rather than direct RF) are now called out so you can tell at a glance which nodes are coming in via MQTT:
- Available Nodes list: a teal ☁ MQTT badge next to the network badge.
- Node Map: MQTT-heard Meshtastic nodes get a distinct teal circle marker (vs the standard blue pin), a ☁ on the map label, and an "☁ Heard via MQTT" note in the popup.
Detection is driven by a per-node hook that inspects every received packet's MQTT flag, so it reflects how each node was most recently heard.
📊 Smaller traffic graph
The Traffic Monitor graph is now half the height for a more compact dashboard (the box is still full-width, draggable, and has the selectable time window from v0.7.2.3).
🐳 Docker
Multi-arch images (linux/amd64 + linux/arm64) are published to Docker Hub: mrtbot/mesh-api (latest, 0.7.2.4-beta, 0.7.2.4).
Built and maintained by one developer with the help of AI tools. If MESH-API is useful to you, please consider a donation (links in the README) and file issues with your real-world experience. 🙏
MESH-API v0.7.2.1 Beta - All Settings in the WebUI + Channel Panel Fix
MESH-API v0.7.2.1 Beta — All Settings in the WebUI + Channel Panel Fix
A maintenance release on top of v0.7.2 Beta.
🧩 All v0.7.x settings are now in the WebUI Config form
Previously, the new v0.7.x config blocks were only reachable via the Raw JSON tab of the ⚙️ Config editor. The friendly form now has dedicated sections for every one of them:
- 🛰️ Multi-Radio —
meshtastic_enabled,default_send_network,meshtastic_connect_timeout_sec. - 🟣 MeshCore Radio — enable, connection type (serial / TCP / BLE), serial/TCP/BLE connection details, chat bridging, and advert (DM-discovery) settings. (Advanced sub-keys like the bridge channel maps are preserved on save even though they aren't shown.)
- 🔌 MCP Server — enable, require-auth, auth token, emergency-tool gate, rate limit.
- 🔄 Firmware & Updates — auto-check, check interval, allow-flashing, auto-update.
- 🤖 AI Providers — added Hermes (Nous Research) and Home Assistant to the provider dropdown with their own fields.
Saving from the form preserves every other key/secret (it merges, it doesn't overwrite).
🐛 Channel Messages panel hardened
Fixed a case where the Channel Messages panel could appear empty for a user: a single malformed message in the feed could throw mid-render and blank the entire panel. Each channel group and each message now renders in isolation (wrapped in try/catch), so one bad entry can no longer take down the whole panel. Channels also now sort numerically (so channel 2 appears before channel 10).
🐳 Docker
Multi-arch images (linux/amd64 + linux/arm64) are published to Docker Hub: mrtbot/mesh-api (latest, 0.7.2.1-beta, 0.7.2.1).
Built and maintained by one developer with the help of AI tools. If MESH-API is useful to you, please consider a donation (links in the README) and file issues with your real-world experience. 🙏