All notable changes to Conduit are documented here.
- YAML config file at
~/.conduit/config.yamlwith Pydantic strict validation resolve_agent_id()typed cascade (config → env → hostname → None)Connectionclass with honest transport (CONNACK rc=0, PUBACK round-trip)- Persistent
listenwith auto-reconnect and exponential backoff conduit send,conduit poll,conduit listen,conduit statusCLI commandsconduit config init/show/get/set/doctorsubcommands- Outbox state manager with atomic writes, status tracking, idempotency
- Multi-peer support via config
- Retry with exponential backoff (disabled by default)
- Hermes skill at
~/.hermes/skills/conduit/SKILL.md - 71 tests across 5 test files
listen_for_dusk.py— replaced byconduit listenupdate_secret.sh— replaced by config-driven secretrotate_secret.sh— replaced by config-driven secret
- Agent identity is no longer hardcoded — read from config with hostname fallback
- Topic helpers are parameterized on agent_id (no module-level constant)
- CLI entry point is
conduit(notpython3 mqtt_relay.py vader)
- Initial release. Honest cross-agent MQTT bridge.
- CLI:
send,poll,status,listensubcommands. - Public topic API:
topic_for,hermes_topic,inbox_topic,outbox_topic. - Two topic conventions: Hermes (preferred) and short (legacy).
- Optional shared-secret auth via env var or file.
- Honest transport: blocks on CONNACK rc=0 and PUBACK round-trip.
- Background long-listener (
listen_for_dusk.py). - Operator secret-rotation scripts.