termtastic is a feature-rich handmade Meshtastic® console client written in Rust.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
| The project is under active development; things may change completely without notice. |
- Fully handwritten code, no vibe-coding
- Dependency-free single-binary application
- Fully asynchronous (Tokio channel-based)
- Optimized for small screens (down to
70x21) - Respects the user's terminal color scheme (no opinionated TrueColor colors)
- Keyboard-centric UI navigation
- Minimal use of emoji and non-ASCII characters in the UI
- Small memory footprint (
~20KB) - Supports multiple connection protocols (TCP, BLE, serial)
- Can discover devices automatically: paired BLE devices, TCP devices via mDNS, serial devices
- Uses standard system directories for configuration, database and logs
- Chat list (channels and direct messages)
- Multiline message support
- Reply to messages
- Reactions with emoji
- Node list with filtering and sorting
- Node info popup with detailed information
- Traceroute
- Position
- Telemetry
- Settings (all available sections, including module configs)
- Connection manager with auto-discovery (TCP, BLE, serial)
- Dashboard with widgets: node info, uptime, online nodes, clock, hops stat, role stat, HW stat, device metrics stat
- Logs screen
- Indicators (battery, DB, traceroute, RX, online nodes)
- Ignore node feature
- Add node to favorites
- Import configuration from a link
- Set fixed GPS position
- Set time from host
| Feature | Library |
|---|---|
| TUI: Framework | Ratatui |
| TUI: Backend | crossterm |
| TUI: Inputs | ratatui-textarea |
| TUI: Lists | tui-widget-list |
| Interaction with Meshtastic | meshtastic |
| Clipboard functionality | arboard |
| Bluetooth devices discovery | btleplug |
| TCP devices discovery | mdns-sd |
| Logging | tracing |
| Async/Channels | tokio |
| Configuration | confy, etcetera |
| Errors | anyhow, thiserror |
| Datetime | chrono |
| Emoji selector | emojis |
| Local DB | rusqlite, rusqlite_migration |
✅ – tested, 🔬 – untested, ❌ – not working
| Feature | Linux | macOS | Windows |
|---|---|---|---|
| BLE devices discovery | ✅ | ✅ | ✅ |
| Serial devices discovery | ✅ | ✅ | ✅ |
| TCP devices discovery (mDNS) | ✅ | ✅ | ✅ |
| Copy to clipboard | ✅ | ✅ | ✅ |
| Source | Link | Notes |
|---|---|---|
| Manual download | Releases | |
| Debian APT | TBA | |
| Arch Linux AUR | termtastic · termtastic-bin · termtastic-git | Maintained by Ateles |
| macOS Brew | brew install acelot/tap/termtastic |
Updated automatically on release |
| Windows WinGet | TBA |
To run an unsigned application on macOS, you need to dequarantine it using the command below:
xattr -d com.apple.quarantine ./path/to/termtasticTo use Bluetooth on macOS Big Sur (11) or later, you need to enable the Bluetooth permission for your terminal. You can
do it by going to System Preferences → Security & Privacy → Privacy → Bluetooth, clicking the '+'
button, and selecting Terminal (or iTerm or whichever terminal application you use).
If you are using foot terminal try to add these lines into your foot.ini config:
[tweak]
grapheme-width-method=wcswidthThe same named option exists in other terminals too. Check your terminal docs.
Unfortunately, Windows Terminal cannot display some compound emoji such as 1️⃣, 2️⃣, 3️⃣, etc. There is an issue in Github: microsoft/terminal#9708
Meshtastic® is a registered trademark of Meshtastic LLC. termtastic is an independent project and is not affiliated with Meshtastic LLC.

















