310c0244df
- Resolve the Hermes gateway API lazily via get_adapter_class() so the adapter
always inherits the real gateway.platforms.base.BasePlatformAdapter instead
of the ImportError fallback stub (root cause of the AttributeError:
'set_message_handler' crash at gateway startup).
- Pass Platform('meshtastic') enum to super().__init__ and align
connect(*, is_reconnect=False) -> bool with the gateway contract.
- Split pure formatting utils into formatting.py; remove the stub fallback.
- Add tests/contract (L0-L3): real-base binding, ABC instantiation, gateway
run.py wiring replay, signature and event-shape conformance, run against
hermes-agent pinned to the deployed image source (v2026.8.31).
- Add scripts/contract-test.sh and a contract-test CI job; release publish
now requires contract tests to pass.
- Untrack stray __pycache__ artifacts.
hermes-meshtastic
Meshtastic LoRa mesh gateway platform adapter plugin for Hermes Agent.
Allows bidirectional communication between Hermes AI agent profiles and off-grid Meshtastic nodes (e.g., Heltec V4, T-Beam, LilyGO) over 915 MHz LoRa mesh radio.
Features
- Connects directly to local Meshtastic radio via TCP (e.g.
meshtastic.local:4403). - Subscribes to LoRa text messages on designated channel index (e.g. Channel 1
# privatewith AES-256). - Direct Message (1-on-1) routing between Meshtastic Node IDs and Hermes agent sessions.
- Automatic message chunking and markdown stripping to fit within LoRa RF packet budgets (<180 chars).
- Automatic reconnection with exponential backoff.