Skip to main content

Hermes bus integration plugin — auto-start, auto-register, message injection, bus tools

Project description

hermes-bus-plugin

English | 中文

Hermes Agent plugin for message bus integration — lifecycle management, external message injection, bus tools.

A thin integration layer between Hermes Agent and the hermes-bus / hermes-notify packages.

Install

# Via Hermes plugin manager
hermes plugins install hermes-bus-plugin

# Or copy to ~/.hermes/hermes-agent/plugins/
cp -r hermes-bus-plugin ~/.hermes/hermes-agent/plugins/
hermes plugins enable hermes-bus-plugin

Session Naming

Each CLI window registers a unique bus endpoint on startup. The default endpoint is hermes-bus (first session), with hermes-bus-2, hermes-bus-3, etc. for additional sessions. To give your session a stable name that survives reconnection:

/title my-agent-name

The plugin uses the title set by /title as the bus endpoint name.

Action When Description
Start bus daemon Plugin load Ensures hermes-bus is running
Register listener Plugin load Opens a bus endpoint for incoming messages
Print notifications On bus message print: true → terminal (only when context is NOT true)
Inject context + push On bus message context: true → inject into LLM context + push to Agent via pending_input (overrides print, token-heavy — use sparingly)
Execute command On bus message command → async subprocess (audio, scripts, etc.) — runs inside Hermes process, no external daemon needed

Provided Tools

bus_send — send a message through the bus to any endpoint:

bus_send(target="notifier", type="progress", text="50% done")

bus_status — check bus health and connected endpoints:

bus_status()

bus_info — show current session's bus connection details:

bus_info()

Route Rules

Messages arriving at the bus are matched against ~/.hermes/bus-rules.yaml rules. Each rule can trigger three independent actions:

Field Behavior Default
print Print to terminal false
print_format Template or script for terminal output {text}
context Inject into LLM context + push to Agent false
context_format Template or script for context/push text {text}
command Execute shell command (audio, script, etc.) none

Priority Logic

context and print are mutually exclusive:

  • context: true → inject context + push to Agent (print is ignored). ⚠️ Token-heavy — each push triggers an Agent turn.
  • print: true → terminal output only (only when context is NOT true)
  • command → always executed if defined, independent of context/print

Format Templates

print_format and context_format support these placeholders:

Placeholder Description
{from} Sender endpoint name
{text} Message body text
{type} Message type
{ts} Unix timestamp (raw)
{ts:%Y-%m-%d %H:%M:%S} strftime formatted
{color:cyan} ANSI foreground color (black/red/green/yellow/blue/magenta/cyan/white)
{color:bold_green} Bold color variant
{bold} Bold text
{reset} Reset all styles

Script Support

If print_format or context_format starts with ~ or / and points to an executable file, the script is run with FROM, TYPE, TEXT as environment variables and its stdout is used as the rendered output (supports ANSI colors).

#!/bin/bash
# format-notify.sh — example format script
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
RESET="\033[0m"

case "$TYPE" in
  task_done)  echo -e "${GREEN}${FROM}${RESET}${TEXT}" ;;
  task_error) echo -e "${YELLOW}${FROM} failed${RESET}\n   ${TEXT}" ;;
  *)          echo -e "${FROM}: ${TEXT}" ;;
esac
# bus-rules.yaml
- match_type: task_done
  print: true
  print_format: "~/scripts/format-notify.sh"

Example Rules

callbacks:
  # Notification only (no context)
  - match_type: ack
    print: true
    print_format: "{color:cyan}📬 {from}{reset}  {text}  [{ts:%H:%M}]"
    context: false

  # Silent context injection
  - match_type: progress
    print: false
    context: true

  # Context + terminal + audio
  - match_type: task_done
    print: true
    print_format: "{color:bold_green}✔ {from}{reset}  {text}  {color:cyan}[{ts:%H:%M:%S}]{reset}"
    context: true
    command: "afplay ~/sounds/done.mp3"

Requirements

  • hermes-bus (pip)
  • hermes-notify (pip)

Both are auto-detected — the plugin degrades gracefully if they're missing.

Architecture

External process ──→ hermes-bus ──→ hermes-bus-plugin ──→ LLM context
                        (socket)        ├─ pre_llm_call hook
                                        └─ async subprocess (command: audio/script)

Hermes session ──→ bus_send tool ──→ hermes-bus ──→ target endpoint

command execution (audio playback, shell scripts) runs inside the Hermes process via subprocess.Popen. No external daemon (bus-notifier) needed — one less process to manage, no point-to-point routing issues, no silent failures.

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_plugin-0.4.2.tar.gz (13.2 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_plugin-0.4.2-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file hermes_bus_plugin-0.4.2.tar.gz.

File metadata

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

File hashes

Hashes for hermes_bus_plugin-0.4.2.tar.gz
Algorithm Hash digest
SHA256 05dff4ddee12ca350769fe1b6fb4bea2f6252099bdc3f7db569a2cf3d5d4e7f0
MD5 44c2fc159977724fcade3cb9056ac5c7
BLAKE2b-256 5d31b66a86c8e25828ab8b4759c4fd5add3f4912fabe8e2db15903a1e914b34f

See more details on using hashes here.

File details

Details for the file hermes_bus_plugin-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for hermes_bus_plugin-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d4c533ac74de6e3cfb4162d7d4d256aaaa4a44be8e2ec4dbc32209e3d4d86b89
MD5 81b8ac06d150fdcc76617887d7726548
BLAKE2b-256 e39a64ac660e6894a3fa57271672f49faaa3eed39f92c749e4484a6f32675c5a

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