Skip to main content

hermes-agent-control-room

Control Room template for managing Hermes agents from one VPS agent to specialist teams and orchestrated workflows

Jump to install

Source facts

Repository
reason-machines/hermes-skills
Last source activity
May 17, 2026 at 21:48
Detected SKILL.md language
English
Stars
5
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
hermes-agent-control-room
description
Control Room template for managing Hermes agents from one VPS agent to specialist teams and orchestrated workflows
triggers
["set up a hermes agent control room","create an agent control room for my vps","organize my hermes agents with a control room","bootstrap hermes agent infrastructure","set up orchestrator and specialist agents","create a multi-agent hermes system","manage multiple hermes agents on my server","design an agent control plane"]
# Hermes Agent Control Room > Skill by [ara.so](https://ara.so) — Hermes Skills collection. ## Overview Hermes Agent Control Room is a governance and documentation framework for running Hermes agents as a managed system instead of disconnected bots. It provides: - **Control plane structure** for documenting agents, runbooks, secrets, and backups - **Architecture levels** from one agent → specialists → orchestrator → automated team - **Task bus pattern** for orchestrator-to-specialist delegation - **Bundled skills** for VPS setup, agent management, security audits, and backups - **Templates** for agent inventory, Docker configs, env maps, runbooks, and backup plans The core principle: **set up the Control Room first, then plug agents into it.** ## Architecture Levels ### Level 1: Control Room + One Agent Single Hermes agent with documented setup, runbooks, and secret management. ### Level 2: Direct Specialist Agents Multiple role-specific agents (`hermes-seo`, `hermes-dev`, `hermes-cmo`) that you talk to directly. ### Level 3: Orchestrator + Specialists Add `hermes-orchestrator` as a front door that routes tasks to specialists via the task bus. ### Level 4: Automated Agent Team Recurring workflows, audits, and automated task routing after manual workflows work. ## Installation ### Option A: Clone to Existing VPS ```bash ssh root@YOUR_SERVER git clone https://github.com/shannhk/hermes-agent-control-room.git /root/agent-control-room cd /root/agent-control-room cat docs/starter-guide.md ``` ### Option B: Bootstrap New Hetzner VPS Use the bundled `create-vps` and `setup-control-room` skills: ```bash # Agent workflow: # 1. create-vps → creates Hetzner VPS, SSH key, SSH alias # 2. setup-control-room → installs Node, Claude Code, Codex, Docker, Hermes, clones repo # 3. SSH in and complete auth ``` The `setup-control-room` skill will: - Install base packages (git, curl, build-essential) - Install Node.js via nvm - Install Claude Code, Codex CLI, Hermes Agent - Clone this repo to `/root/agent-control-room` - Link bundled skills to `~/.claude/skills` After bootstrap, complete interactive auth: ```bash ssh <alias> claude /login codex hermes ``` ## Folder Structure ```text agent-control-room/ README.md # This file agents/ # Per-agent folders hermes-life/ inventory.md # Agent metadata docker.md # Container notes env-map.md # Secret map (no raw values) runbook.md # Start/stop/debug procedures backup.md # Backup plan docs/ architecture.md # System design levels.md # Growth stages naming.md # Agent naming conventions security.md # Security model task-bus.md # Task routing spec orchestrator.md # Orchestrator design starter-guide.md # First steps shared/ api-keys-sop.md # Secret management SOP commands.md # Common commands security.md # Security checklist templates/ agent/ # Agent doc templates docker/ # Docker compose templates task-bus/ # Task bus templates skills/ # Bundled agent skills examples/ # Example setups per level ``` ## Registering Your First Agent ```bash cd /root/agent-control-room mkdir -p agents/hermes-life cp templates/agent/*.md agents/hermes-life/ ``` Fill in the templates: **agents/hermes-life/inventory.md** ```markdown # hermes-life Agent Inventory **Agent Name:** hermes-life **Role:** Personal assistant **Port:** 3000 **Status:** Active **Created:** 2026-05-15 **Owner:** Your Name ## Purpose Personal Hermes agent for daily tasks, research, and file management. ## Tools - Terminal - File system - Web research - Email (via API) ## Secrets Required - ANTHROPIC_API_KEY - GMAIL_API_KEY (optional) ``` **agents/hermes-life/env-map.md** ```markdown # hermes-life Environment Map **DO NOT COMMIT RAW SECRETS** ## Required Secrets | Name | Provider | Scope | Location | Rotated | |------|----------|-------|----------|---------| | ANTHROPIC_API_KEY | Anthropic | Full API | /srv/hermes-life/data/.env | 2026-05-10 | | GMAIL_API_KEY | Google | Gmail read/send | /srv/hermes-life/data/.env | Never | ## Storage Location `/srv/hermes-life/data/.env` ## Backup Location Encrypted backup in `/root/backups/hermes-life-env.gpg` ``` **agents/hermes-life/runbook.md** ```markdown # hermes-life Runbook ## Start Agent ```bash cd /srv/hermes-life docker-compose up -d ``` ## Stop Agent ```bash docker-compose down ``` ## View Logs ```bash docker-compose logs -f ``` ## Restart After Config Change ```bash docker-compose restart ``` ## Emergency Recovery 1. Check logs: `docker-compose logs --tail=100` 2. Verify .env exists: `ls -la /srv/hermes-life/data/.env` 3. Restore from backup if needed: `gpg -d /root/backups/hermes-life-env.gpg > /srv/hermes-life/data/.env` 4. Restart: `docker-compose restart` ``` ## Runtime Split Keep control plane separate from runtime state: ```text /root/agent-control-room/ Control plane: docs, templates, runbooks, registry No raw secrets /srv/<agent-name>/data/ Runtime: .env, memory, skills, sessions, crons, logs Raw secrets live here ``` ## Adding Direct Specialist Agents (Level 2) ```bash # Create specialist agent folders cd /root/agent-control-room mkdir -p agents/{hermes-seo,hermes-dev,hermes-cmo,hermes-ops} # Copy templates for agent in hermes-seo hermes-dev hermes-cmo hermes-ops; do cp templates/agent/*.md agents/$agent/ done ``` Document each specialist's: - **Role**: What it does (SEO audits, code changes, marketing, ops) - **Tools**: Specific tool access (Ahrefs API, GitHub, Mailchimp, Docker socket) - **Secrets**: Scoped credentials (not full system access) - **Port**: Unique port per agent (3001, 3002, 3003, etc.) ## Adding an Orchestrator (Level 3) ### Create Orchestrator Agent ```bash mkdir -p agents/hermes-orchestrator cp templates/agent/*.md agents/hermes-orchestrator/ ``` **agents/hermes-orchestrator/inventory.md** ```markdown # hermes-orchestrator Agent Inventory **Agent Name:** hermes-orchestrator **Role:** Front door / task router **Port:** 3100 **Status:** Active ## Purpose Routes user requests to specialist agents via the task bus. Synthesizes results from multiple specialists. ## Tools - File system (task bus access) - No direct access to specialist credentials - Read/write to `/srv/agent-bus/{inbox,working,outbox,archive}` ## Does NOT Have - Database credentials - API keys for specialist services - SSH keys to other systems ## Delegation Model 1. Receives user request 2. Writes task to `/srv/agent-bus/inbox/<specialist>/` 3. Specialist picks up task, works on it, writes result to `/srv/agent-bus/outbox/` 4. Orchestrator reads result, synthesizes, responds to user ``` ### Set Up Task Bus ```bash # Create task bus directories mkdir -p /srv/agent-bus/{inbox,working,outbox,archive} mkdir -p /srv/agent-bus/inbox/{seo,dev,cmo,ops} # Copy task bus config cp agent-control-room/templates/task-bus/agents.yaml /srv/agent-bus/ ``` **Task Bus Workflow** ```text 1. User → Orchestrator: "Audit SEO for example.com" 2. Orchestrator → Task Bus: /srv/agent-bus/inbox/seo/task-001.md --- Task: SEO audit for example.com Requested: 2026-05-17T10:00:00Z Requestor: User via hermes-orchestrator --- 3. hermes-seo → Picks Up Task: Moves task-001.md to /srv/agent-bus/working/seo/ 4. hermes-seo → Works: Runs Ahrefs audit, generates report 5. hermes-seo → Completes: /srv/agent-bus/outbox/seo/result-001.md Moves task to /srv/agent-bus/archive/seo/ 6. Orchestrator → Reads Result: Synthesizes and responds to user ``` ## Task Bus Example **Task Template** (`/srv/agent-bus/inbox/dev/task-002.md`): ```markdown --- task_id: task-002 specialist: dev created: 2026-05-17T14:30:00Z requestor: hermes-orchestrator priority: normal --- # Task: Add Contact Form to Website ## Requirements - Add contact form to /contact page - Fields: name, email, message - POST to /api/contact endpoint - Basic validation ## Context User requested contact form for their business site. ## Expected Deliverables - Updated HTML/CSS - Form validation script - Deployed to staging ``` **Result Template** (`/srv/agent-bus/outbox/dev/result-002.md`): ```markdown --- task_id: task-002 specialist: dev completed: 2026-05-17T15:45:00Z status: success --- # Result: Contact Form Added ## What Was Done - Created /contact.html with form fields - Added client-side validation in contact.js - Configured backend endpoint at /api/contact - Deployed to staging: https://staging.example.com/contact ## Files Changed - /public/contact.html (new) - /public/js/contact.js (new) - /api/contact.js (new) ## Testing - Tested form submission - Verified email delivery - Checked validation for all fields ## Next Steps User can review at staging URL. Ready for production deploy on approval. ``` ## Docker Compose for Orchestrator **templates/docker/docker-compose.orchestrator.yml**: ```yaml version: '3.8' services: hermes-orchestrator: image: hermes-agent:latest container_name: hermes-orchestrator restart: unless-stopped ports: - "3100:3000" volumes: - /srv/hermes-orchestrator/data:/app/data - /srv/agent-bus:/srv/agent-bus environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - AGENT_ROLE=orchestrator - TASK_BUS_PATH=/srv/agent-bus networks: - agent-net networks: agent-net: driver: bridge ``` ## Security Best Practices ### Secret Storage ```bash # Store secrets in per-agent .env files /srv/hermes-life/data/.env /srv/hermes-seo/data/.env /srv/hermes-dev/data/.env # Backup encrypted gpg -c /srv/hermes-life/data/.env -o /root/backups/hermes-life-env.gpg # Never commit to git echo "*.env" >> /root/agent-control-room/.gitignore ``` ### Agent Credential Scope ```text ❌ BAD: Orchestrator has all API keys ✅ GOOD: Each specialist has only its scoped keys hermes-seo: - AHREFS_API_KEY - GOOGLE_SEARCH_CONSOLE_KEY hermes-dev: - GITHUB_TOKEN - DEPLOY_KEY hermes-orchestrator: - ANTHROPIC_API_KEY (for LLM) - NO access to specialist service APIs ``` ### Port Security ```bash # Check exposed ports ss -tulpn | grep LISTEN # Use firewall for non-orchestrator agents ufw allow 3100/tcp # orchestrator only ufw deny 3001/tcp # hermes-seo (internal only) ufw deny 3002/tcp # hermes-dev (internal only) ``` ## Bundled Skills The repo includes agent skills for VPS and control room management: | Skill | Purpose | |-------|---------| | `create-vps` | Create Hetzner VPS, SSH key, SSH alias | | `setup-control-room` | Bootstrap VPS with Node, Docker, Hermes, Control Room | | `agent-control-room` | Manage Control Room docs and agent folders | | `agent-task-router` | Route tasks from orchestrator to specialists | | `agent-registry-manager` | Maintain agent registry | | `agent-backup-manager` | Design and audit per-agent backups | | `agent-security-auditor` | Check ports, dashboards, SSH, Docker, secrets | | `agent-team-cron-planner` | Plan recurring multi-agent workflows | After running `setup-control-room`, skills are linked to `~/.claude/skills/`. ## Common Commands ### Manage Control Room ```bash # Update Control Room repo cd /root/agent-control-room git pull # Register new agent mkdir -p agents/hermes-newagent cp templates/agent/*.md agents/hermes-newagent/ # List all agents ls agents/ # View agent inventory cat agents/hermes-seo/inventory.md ``` ### Manage Agents ```bash # Start agent cd /srv/hermes-seo docker-compose up -d # View logs docker-compose logs -f # Restart agent docker-compose restart # Stop agent docker-compose down ``` ### Task Bus Operations ```bash # Create task for specialist cat > /srv/agent-bus/inbox/seo/task-003.md <<EOF ---
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub