Skip to main content

Generic message bus transport — Unix Socket message routing, session management, heartbeat

Project description

hermes-bus

English | 中文

A generic message bus for Unix Socket IPC — message routing, session management, heartbeat.

Transport-only. Notification logic is injected via configurable hooks — the bus itself knows nothing about audio, display, or LLM context.

Install

pip install hermes-bus

Or from source:

git clone https://github.com/mlinquan/hermes-bus.git
cd hermes-bus && pip install -e .

CLI

# Daemon management
hermes-busd start       # Start the bus daemon
hermes-busd stop        # Stop the daemon
hermes-busd status      # Check daemon + connected endpoints
hermes-busd restart     # Restart the daemon

# Foreground server (for debugging)
hermes-bus-server

Python API

from hermes_bus.client import BusClient, send_message

# Long-lived: register as an endpoint and receive messages
client = BusClient("my-service")
client.connect()
for msg in client.poll():
    print(msg)

# Short-lived: fire-and-forget
send_message("target-service", {"text": "hello", "type": "ack"})

Architecture

client.py ──── Unix Socket ──── server.py
  (BusClient)                    (BusServer)
   - Register endpoint           - Session management
   - Heartbeat (60s)             - Message routing
   - Auto-reconnect              - Hook triggers
   - Thread-safe message queue
   
busd.py — Daemon manager: start / stop / status / restart

Protocol

4-byte big-endian length prefix + JSON body. Max payload: 10 MB.

Long-lived connections register an endpoint name and can send/receive. Short-lived connections send one message and disconnect — no registration, no endpoint_map pollution.

Hooks

After each message is routed, hook scripts are triggered asynchronously. Resolution priority:

  1. HERMES_BUS_HOOKS env var (comma-separated or JSON array of script paths)
  2. hooks.yaml config file
  3. Default: none (routing handled by hermes-bus-plugin)

Each hook receives the full message JSON on stdin. Hook execution is non-blocking — the bus continues routing.

Messages

{
  "type": "message",
  "to": "target-endpoint",
  "from": "sender-endpoint",
  "text": "hello",
  "body": { }
}

Special message types: register (endpoint registration), ping/pong (heartbeat), list_endpoints (admin query).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_bus-0.4.1.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_bus-0.4.1-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file hermes_bus-0.4.1.tar.gz.

File metadata

  • Download URL: hermes_bus-0.4.1.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for hermes_bus-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b3ed0566043aa703b333f49c7c2c90d70cf9f54ca1983f6f0ead44ca94dc5fb6
MD5 5c54a3f4fb256e898d196dfd2445f938
BLAKE2b-256 6293553bc6aefeb3aa1259d89d2639828211fc56192b58b45c43be9cba9339fb

See more details on using hashes here.

File details

Details for the file hermes_bus-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: hermes_bus-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for hermes_bus-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e14b1bda44f0698c8e2d0d5e4da846ab4999b6a2a3ced52e02713a121f45470a
MD5 c786e420384d6425054ea5e806096172
BLAKE2b-256 d981a20a4052bc2c6afabd1795e1ad308e17e02b203d9c1097ed7bed42a91d3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page