Real nodes 2: a node on Meshtastic firmware as a radio - #7
Merged
Merged
Conversation
radio.driver meshtastic takes a node's serial port or a meshtasticd address. internal/nodes.Attached is the radio and the one identity's mesh.Remote: the node does its own routing, ACKs and encryption, and the host keeps chat, the node DB, the packet log, traceroutes and app clients from what the node delivers. - mesh: remote identities (no private key). Sends go to the node, RemoteReceived takes its deliveries, periodic broadcasts and module replies are skipped, link frames are ignored, SwapRemote replaces a placeholder once the node answers. - Settings both ways: UpdateConfig writes region, preset, slot, power, hop limit, primary channel and role to the node in one edit transaction; MirrorConfig and the config file follow the node. - App ports: a node's identity can have one, and admin messages from the app are forwarded to the node. - Web: setup and probe take the meshtastic driver (probe limited to this machine and the LAN before a password exists); names and channels are written to the node; extra identities, moves and key export are refused on a node radio; switching to or from a node needs a restart. - GUI: radio switch USB modem | HAT or stick | Meshtastic node, a node card and probe in the setup wizard (which restarts by itself), node role wording, a Meshtastic node badge. - mtclient/mtclienttest: a fake node shared by the tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJZ75CWob1eMXeTa8Q2nLc
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJZ75CWob1eMXeTa8Q2nLc
This was referenced Sep 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #5 (phase 2). Merges into
epic/real-nodes.What
Any node running Meshtastic firmware can be a RepeaterTastic radio: a board over USB (Heltec, T-Beam, RAK, T-Echo… on stock firmware) or a meshtasticd on the network.
The node does the radio work (routing, ACKs, encryption, its own key) and is that radio's one identity. RepeaterTastic's chat, node map, packet log, plugins and an app port sit on top.
How
internal/nodes.Attachedis both the radio and the identity'smesh.Remote, built oninternal/mtclient(Real nodes 0+1: Meshtastic client API client and meshtasticd measurements #6).mesh:Host.RemoteReceivedtakes what the node delivers (messages, ACK/NAK results, node DB, traceroutes, packet log, app clients).Host.SwapRemotereplaces a placeholder identity once a node that was away at start first answers; its last state is also cached inattached-node.json.Host.UpdateConfigwrites region, preset, frequency slot, TX power, hop limit, primary channel name and role to the node in one edit transaction. After each handshake the node's settings are mirrored into the host and the config file.POST /setupandPOST /setup/probetakedriver: "meshtastic". Before a password exists, the probe only reaches this machine or the LAN.mtclient/mtclienttest, a fake node shared by the tests.Features affected
tcp://) and its experimental switch.Testing
go test ./...passes;-raceis clean for mesh, nodes, mtclient, phoneapi and web.🤖 Generated with Claude Code
https://claude.ai/code/session_01SJZ75CWob1eMXeTa8Q2nLc