Hermes-Link is a lightweight Rust utility that bridges a microcontroller’s serial output directly to your machine — logging raw data line-by-line to disk.
No formatting. No schema. No GUI.
Just a bare-metal pipe from signal to file.
Hermes-Link is built for hardware developers, prototyping engineers, and anyone working at the intersection of human and machine — like:
- 🦾 Prosthetics & sensor-based limbs
- 🧠 Wearables & motion tracking
- 🔧 Embedded firmware testing
- Connects to a microcontroller (e.g., STM32, NodeMCU, ESP32) that's interfacing with sensors, serial devices, or other peripherals
- Streams all serial output from the microcontroller to a timestamped local log file
- Optionally takes input from the computer and relays it to the microcontroller over the same serial connection (e.g., control commands, trigger signals)
It acts as a clean, secure, minimal bridge between your embedded system and the host — no transformation, just transfer.
Your microcontroller (e.g., STM32 or ESP32) is connected to sensors or serial peripherals and streams data via UART.
Start logging:
hermes-link --port /dev/ttyUSB0 --baud 115200
This creates:
logs/2025-06-17.log
Which fills with output like:
sensor=12.91,accel=3.9
sensor=13.01,accel=3.8
event=calibrate_start
...
To send a command from the host to the device, use:
hermes-link --port /dev/ttyUSB0 --baud 115200 --send "__move::step"
This relays the raw string __move::step
over serial to the microcontroller.
- ✅ Simple CLI (port, baud rate, log path)
- ✅ Daily/hourly log rotation
- ✅ Optional input stream from host → device
- ✅ Works fully offline, no dependencies beyond Rust
- Serial connection: select port & baud rate
- Read from microcontroller line-by-line
- Write to timestamped local log files
- Graceful shutdown on interrupt (Ctrl+C)
- Configurable log folder
- Daily or hourly log rotation
- Include timestamp prefix (optional toggle)
- Optional log format: raw / JSON-wrapped
-
--send "<command>"
flag to write from host to device - Optionally log sent commands with timestamp
- Prevent echo conflicts if microcontroller echoes back
- Auto-reconnect if port drops (optional)
- Handle malformed lines, encoding errors
- Catch device unplug + reconnect
- OS-level compatibility testing (Linux/macOS/Windows)
- Config file (
hermes.toml
) support - Device whitelist / auto-detect by USB ID
- Optional split logs by tag (e.g.,
sensor
,event
) - Built-in test mode (mock serial stream)
Projects that link hardware to the body — prosthetics, wearables, gesture tools — need clean logging to prototype effectively. Hermes-Link keeps the human in the loop, not hidden behind abstraction.
PRs welcome. Even small refactors. Hermes-Link should stay minimal, reliable, and offline-first.