Hermes AgentMesh Async Bus¶
Install: npx skills add seleman66eeddwegger3-art/hermes-agentmesh --skill hermes-agentmesh-async-bus
A peer-to-peer, 0-SSH, Redis-backed async message bus designed by Bobo (a Hermes agent architect). Replaces synchronous HTTP coordination with Redis mailboxes -- agents communicate by dropping tasks in named inboxes instead of making blocking HTTP calls.
Why Use This¶
| Problem | AgentMesh Solution |
|---|---|
| HTTP timeouts at 5–10 min crash multi-agent tasks | Redis queues -- hours-long tasks OK |
| SSH required to start remote workers | 0 SSH -- workers listen on shared Redis |
| Reports lost or must be scp'd | Reports land naturally on initiator's machine |
| Group chat noise eats context tokens | Named inboxes -- zero noise |
Architecture¶
┌─────────── Mac mini (central hub) ───────────┐
│ Redis :6379 │ Hermes API :8642 │ HTTP :8080 │
└──────────────────┬───────────────────────────┘
│ 0.7ms LAN Redis
┌──────────┼──────────┐
▼ ▼
Worker Node Worker Node
(macOS) (Linux/Pi/WSL)
- Central hub: Redis + Hermes LLM API + HTTP file server on Mac mini
- Worker nodes: Pure Redis clients (any OS), kept alive by LaunchAgents/systemd
- Protocol:
redis.lpush("inbox:<NODE_NAME>", task_json)-- the mailbox IS the protocol
Quick Start (5 minutes)¶
Prerequisites¶
- 1 Mac mini (Redis + Hermes LLM API on :8642 + HTTP file server on :8080)
- 1+ other devices on same LAN
- Redis installed on all nodes
Step 1: Mac mini -- Configure Redis for LAN access¶
sudo sed -i.bak \
-e 's/^bind 127.0.0.1 ::1$/bind 0.0.0.0/' \
-e 's/^protected-mode yes$/protected-mode no/' \
/opt/homebrew/etc/redis.conf
brew services restart redis
nc -z -w 2 127.0.0.1 6379 && echo "✓ Redis cross-LAN OK"
Step 2: Install the skill¶
npx skills add seleman66eeddwegger3-art/hermes-agentmesh --skill hermes-agentmesh-async-bus
Step 3: Deploy workers (0 SSH)¶
# On each worker node:
mkdir -p ~/.hermes/async_bus
curl -s http://<MAC_MINI_IP>:8080/worker_node.py -o ~/.hermes/async_bus/worker_node.py
curl -s http://<MAC_MINI_IP>:8080/orchestrator_async.py -o ~/.hermes/async_bus/orchestrator_async.py
curl -s http://<MAC_MINI_IP>:8080/.env.example -o ~/.hermes/async_bus/.env_common
# Edit .env_common with actual IPs and API keys
Step 4: Send your first task¶
import redis, json
r = redis.Redis(host='<MAC_MINI_IP>', port=6379)
task = {"type": "analysis", "payload": "audit codebase", "from": "orchestrator"}
r.lpush("inbox:worker-1", json.dumps(task))
# Worker picks it up, processes, writes report back to your machine
Verification¶
# Check worker is listening
redis-cli -h <MAC_MINI_IP> PING # Should return PONG
# Monitor inbox activity
redis-cli -h <MAC_MINI_IP> MONITOR | grep "inbox:"
# Check worker health
curl -s http://<MAC_MINI_IP>:8080/health
Key Design Decisions¶
- Redis, not HTTP -- Eliminates timeout anxiety. A 2-hour agent task is just a message sitting in a Redis list.
- 0 SSH deployment -- Workers pull code from the hub's HTTP file server. No remote process management.
- Reports land locally -- The initiator writes the report to its own filesystem, not the worker's. No scp needed.
- Framework-agnostic -- Works with Hermes, OpenClaw, LangGraph, AutoGen, CrewAI. The mailbox format is universal JSON.
Pitfalls¶
- Redis LAN binding requires
bind 0.0.0.0andprotected-mode no. Secure your network accordingly. - API keys in
.env_commonare shared across nodes. Use a dedicated LAN-scoped key, not your primary API key. - Worker node naming must match inbox names exactly. Use consistent, lowercase names.
← Skills Catalog | Agent Infrastructure → Source: seleman66eeddwegger3-art/hermes-agentmesh Powered by CorpusIQ