back to home

jkingsman / Remote-Terminal-for-MeshCore

A remote client for MeshCore radios with packet capture, store-and-decrypt, bots, MQTT, and more!

View on GitHub
121 stars
17 forks
4 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing jkingsman/Remote-Terminal-for-MeshCore in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/jkingsman/Remote-Terminal-for-MeshCore)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

RemoteTerm for MeshCore Backend server + browser interface for MeshCore mesh radio networks. Connect your radio over Serial, TCP, or BLE, and then you can: • Send and receive DMs and channel messages • Cache all received packets, decrypting as you gain keys • Run multiple Python bots that can analyze messages and respond to DMs and channels • Monitor unlimited contacts and channels (radio limits don't apply -- packets are decrypted server-side) • Access your radio remotely over your network or VPN • Search for hashtag room names for channels you don't have keys for yet • Forward packets to MQTT, LetsMesh, MeshRank, SQS, Apprise, etc. • Use the more recent 1.14 firmwares which support multibyte pathing • Visualize the mesh as a map or node set, view repeater stats, and more! **Warning:** This app is for trusted environments only. _Do not put this on an untrusted network, or open it to the public._ You can optionally set and for app-wide HTTP Basic auth, but that is only a coarse gate and must be paired with HTTPS. The bots can execute arbitrary Python code which means anyone who gets access to the app can, too. To completely disable the bot system, start the server with — this prevents all bot execution and blocks bot configuration changes via the API. If you need stronger access control, consider using a reverse proxy like Nginx, or extending FastAPI; full access control and user management are outside the scope of this app. Disclaimer This is developed with very heavy agentic assistance -- there is no warranty of fitness for any purpose. It's been lovingly guided by an engineer with a passion for clean code and good tests, but it's still mostly LLM output, so you may find some bugs. If extending, have your LLM read the three files: , , and . Start Here Most users should choose one of these paths: • Clone and build from source. • Download the prebuilt release zip if you are on a resource-constrained system and do not want to build the frontend locally. • Use Docker if that better matches how you deploy. For advanced setup, troubleshooting, HTTPS, systemd service setup, and remediation environment variables, see README_ADVANCED.md. If you plan to contribute, read CONTRIBUTING.md. Requirements • Python 3.10+ • Node.js LTS or current (20, 22, 24, 25) if you're not using a prebuilt release • UV package manager: • MeshCore radio connected via USB serial, TCP, or BLE If you are on a low-resource system and do not want to build the frontend locally, download the release zip named . That bundle includes , so you can run the app without doing a frontend build from source. Finding your serial port Path 1: Clone And Build **This approach is recommended over Docker due to intermittent serial communications issues I've seen on \*nix systems.** Access the app at http://localhost:8000. Source checkouts expect a normal frontend build in . Path 1.5: Use The Prebuilt Release Zip Release zips can be found as an asset within the releases listed here. This can be beneficial on resource constrained systems that cannot cope with the RAM-hungry frontend build process. If you downloaded the release zip instead of cloning the repo, unpack it and run: The release bundle includes , so it does not require a local frontend build. Path 2: Docker > **Warning:** Docker has had reports intermittent issues with serial event subscriptions. The native method above is more reliable. Edit to set a serial device for passthrough, or uncomment your transport (serial or TCP). Then: The database is stored in (bind-mounted), so the container shares the same database as the native app. To rebuild after pulling updates: To use the prebuilt Docker Hub image instead of building locally, replace: with: Then run: The container runs as root by default for maximum serial passthrough compatibility across host setups. On Linux, if you switch between native and Docker runs, can end up root-owned. If you do not need that serial compatibility behavior, you can enable the optional line in to keep ownership aligned with your host user. To stop: Standard Environment Variables Only one transport may be active at a time. If multiple are set, the server will refuse to start. | Variable | Default | Description | |----------|---------|-------------| | | (auto-detect) | Serial port path | | | 115200 | Serial baud rate | | | | TCP host (mutually exclusive with serial/BLE) | | | 4000 | TCP port | | | | BLE device address (mutually exclusive with serial/TCP) | | | | BLE PIN (required when BLE address is set) | | | INFO | , , , | | | | SQLite database path | | | false | Disable bot system entirely (blocks execution and config; an intermediate security precaution, but not as good as basic auth) | | | | Optional app-wide HTTP Basic auth username; must be set together with | | | | Optional app-wide HTTP Basic auth password; must be set together with | Common launch patterns: On Windows (PowerShell), set environment variables as a separate statement: If you enable Basic Auth, protect the app with HTTPS. HTTP Basic credentials are not safe on plain HTTP. Also note that the app's permissive CORS policy is a deliberate trusted-network tradeoff, so cross-origin browser JavaScript is not a reliable way to use that Basic Auth gate. Where To Go Next • Advanced setup, troubleshooting, HTTPS, systemd, remediation variables, and debug logging: README_ADVANCED.md • Contributing, tests, linting, E2E notes, and important AGENTS files: CONTRIBUTING.md • Live API docs after the backend is running: http://localhost:8000/docs