tpt-basestation

Rust

Local-first mission control for ESP32 & embedded IoT development — serial console, flash/OTA, BLE Wi-Fi provisioning, LittleFS browser, Matter/Thread mesh visualization, and energy monitoring. Built with Rust + Tauri + React. No cloud, no accounts.

0 stars0 forks0 watchers
ble-provisioningembedded-systemsesp32firmware-flashingiotmatter-threadota-updatesrustserial-consoletauri

Languages

Rust70.0%TypeScript29.9%HTML0.1%CSS0.0%
README

TPT BaseStation

A local-first desktop "mission control" for wireless IoT and embedded development — starting with the ESP32 ecosystem, built to extend to Nordic/RISC-V and beyond.

TPT BaseStation consolidates the tools an embedded/IoT developer normally juggles separately — a serial monitor, a flasher, a BLE provisioning app, a packet sniffer — into one Tauri desktop app with a modular dashboard of "Cards." Everything runs locally: no cloud accounts, no telemetry, works air-gapped.

See spec.txt for the full design/vision doc and TODO.md for the up-to-date milestone log, including which features are mock-only vs. verified against real hardware.

Features

  • Serial Console — real-time streaming console with sparkline graphing
  • Hardware Discovery (HAL) — capability-based device detection (VID/PID → manifest → firmware handshake → boot-text fingerprint)
  • Wi-Fi Provisioning — send credentials to devices over BLE
  • Flash & OTA Manager — flash firmware over serial, or serve it via a local OTA HTTP server
  • On-Device Filesystem — browse/pull/push a LittleFS partition (read path only — see caveats in TODO.md)
  • Radio Coexistence Visualizer — Wi-Fi/BLE timeslicing graph (mock-only, pending TPT Probe hardware)
  • Matter/Thread Topology Mapper + Mesh Doctor — mesh visualization, weak-link diagnosis, PDF reports (mock-only, pending real Border Router integration)
  • Matter/Thread Commissioning — one-click local commissioning flow (simulated handshake)
  • Local Energy Visualizer — MQTT/Modbus energy flow dashboard

Design principles: local-first (no cloud), hardware-agnostic core, mock-first development (every hardware-facing subsystem ships a mock alongside the real implementation), and no unverified device-mutating writes.

Project layout

Cargo workspace + pnpm workspace:

  • core (tpt-core) — transport-agnostic hardware logic: serial/BLE transports, flashing, OTA server, filesystem/LittleFS, mesh/probe/energy data models
  • hal (tpt-hal) — capability-based device discovery and manifests
  • cli (tpt) — command-line interface over core/hal
  • gui — Tauri v2 + React + TypeScript + Tailwind desktop app

See CLAUDE.md for a deeper architectural walkthrough.

Getting started

Requires Rust (stable) and Node/pnpm.

# Rust workspace
cargo build --workspace
cargo test --workspace

# CLI
cargo run -p tpt-cli -- serial --mock

# GUI
pnpm install
pnpm gui:dev      # launch the Tauri dev app
pnpm gui:build    # production build

Most subsystems have a --mock/mock-source path (CLI flags, or mock data sources in the GUI) so you can exercise the app without real hardware attached.

Status

Pre-1.0, actively developed. Track progress and open items in TODO.md.