⚡ Hermes Agent Audit

Focused read-only audit — the agent itself, its config, plugins, skills, and processes
READ-ONLY 2026-05-19 v0.14.0 a0c03129

Table of Contents

01. Version & Install 02. Configuration 03. Profiles 04. Skills 05. MCP Servers 06. Plugins & Dashboard 07. Gateway & TUI 08. Storage & Logs 09. Problems & Risks 10. Architecture Diagram

01. Version & Install

0.14.0
Version
8.0G
Install Size
169
Skills (loaded)
6
MCP Servers
4
Profiles
1
Plugins
PropertyValue
Versionv0.14.0 (2026.5.16)
Commita0c031299 feat(web): add xAI Web Search provider plugin
Branchmain
Install Path/usr/local/lib/hermes-agent
Install Size8.0 GB
Python3.11.15
OpenAI SDK2.24.0
Update StatusUp to date
Uncommitted Changes10 files modified (TUI mouse fix, wheelAccel, mcp_tool.py)
✦ ✦ ✦

02. Configuration

Config File Structure

FileSizePurpose
~/.hermes/config.yaml966 bytesRoot config — Telegram token + MCP servers
~/.hermes/profiles/omega/config.yaml13.4 KBActive profile — full agent config (v23)
~/.hermes/profiles/omega/.envredactedAPI keys: DeepSeek, OpenRouter, Gemini, Telegram, Discord, Firecrawl, etc.

Key Config Settings

SettingValueNotes
model.defaultdeepseek-v4-flashPrimary model
model.providerdeepseekPrimary provider
agent.max_turns90Max tool-calling iterations
agent.reasoning_efforthigh
terminal.backendlocalDirect shell execution
terminal.cwd/root
web.search_backendsearxngSelf-hosted private search
web.backendfirecrawlWeb extraction
memory.memory_enabledtruePersistent memory ON
memory.memory_char_limit100,000
memory.user_char_limit50,000
delegation.max_concurrent_children3
delegation.max_spawn_depth1Leaf agents only
delegation.orchestrator_enabledtrue
curator.enabledtrueAuto-skill cleanup weekly
compression.enabledtrueContext compression ON
privacy.redact_piitruePII redaction ON
sessions.retention_days90
sessions.auto_prunefalse⚠️ Manual pruning only
skills.external_dirs/root/Anthropic-Cybersecurity-Skills/skillsExternal skills
security.tirith_enabledtrueCommand security scanning
approvals.modemanual
stt.providerlocalLocal Whisper
tts.provideredgeEdge TTS

Platforms & Services

PlatformStatusBindPortNotes
🔌 API Server (gateway)Active127.0.0.18643Config says 8642 — actual process on 8643
🔗 Webhook PlatformActive0.0.0.08644HMAC auth
📊 DashboardActive127.0.0.19119Hermes Dashboard plugin
🖥️ HCIActive127.0.0.110272Control Interface
📺 TUIBuiltn/an/adist/entry.js 3.0 MB
✦ ✦ ✦

03. Profiles

ProfileModelPurposeSkillsNotes
omega (active)deepseek-v4-flashDefault agent — YOU169 (full set)Persona: Sibylle (AGENTS.md)
reviewerdeepseek-v4-proCode review & delegation vetting19 categories (subset)Disabled toolsets: image_gen, gaming, web, etc.
scribedeepseek-v4-proEmail composition & formatting19 categories (subset)No terminal/code/browser. CWD: /root/scroll-chamber
prompterunknownSwarm prompt generationunknownStandalone profile, no config inspected

Profile Config Drift

🟡 MEDIUM
API Server port mismatch between profiles
Omega profile config has api_server.port: 8643 but scribe config has api_server.port: 8642. This is dead config drift — the stale 8642 port references an old gateway that was already killed. ScribE won't be able to use the API server until this is corrected.
🟢 LOW
Reviewer personality bloat
Reviewer profile still carries 13 unused personalities (catgirl, uwu, pirate, shakespeare, etc.) that were removed from omega. Dead weight in config.
🟢 LOW
Prompter profile incomplete
Has SOUL.md, config.yaml, but no skills directory listed. May not be fully operational.
✦ ✦ ✦

04. Skills

169
Total Skills
29
Categories
~1500
Est. Lines (avg/skill)

Skill Categories Breakdown

CategoryCountNotable Skills
🎨 creative27p5js, ascii-art, excalidraw, manim, pixel-art, songwriting
🧪 mlops21llama-cpp, vllm, huggingface, unsloth, axolotl, dspy, whisper
🔧 devops20docker, webhook-subscriptions, kanban-orchestrator, infrastructure-audit
💻 software-dev19master-coder, tdd, systematic-debugging, writing-plans, spike
🔬 research15site-recon, scrapling, social-media-scraping, blogwatcher
📋 productivity14notion, airtable, google-workspace, shopify, linear, nano-pdf
📈 trading9vibe-trading, options-finder, robinhood-analyst, aether-trading
🎨 frontend8vonder-design-standard, vonder-dashboard, web-app-refactor
🐙 github6pr-workflow, code-review, repo-management, issues, auth
🤖 autonomous-ai6claude-code, codex, opencode, hermes-agent
📺 media5youtube-content, songsee, gif-search, heartmula
🗂️ note-taking2obsidian, what-is-glossary
📧 email2agentmail, himalaya
🐶 dogfood2dogfood (QA), adversarial-ux-test
🧠 agent2hermes-selfie, obsidian-triad
🔌 mcp2native-mcp, mcporter
🔬 data-science1jupyter-live-kernel
🏠 smart-home1openhue
🔒 security3sherlock, security-guardrails, embedded-device-forensics
🔴 red-teaming1godmode
📱 social-media1xurl (Twitter/X)
🕵️ investigation1social-media-monitoring
🌐 infrastructure1email-auto-responder
Empty cats6apple, diagramming, domain, gaming, gifs, inference-sh
🟢 LOW
6 empty skill categories
Categories with 0 skills: apple, diagramming, domain, gaming, gifs, inference-sh. Directory stubs with no content.
✦ ✦ ✦

05. MCP Servers

Active MCP Servers

ServerTransportTargetStatus
📧 agentmailstdio (npx)AgentMail APIConnected
🎨 nanobananastdio (npx)Gemini image genConnected
📝 obsidianstdio (npx)/root/research-vaultConnected
🗄️ sqlitestdio (npx)SQLite DB queriesConnected
📈 vibetradingstdio (python)→ localhost:10290Connected
🤖 aether-consolestdio (python)→ localhost:10282Target may be down
🔗 composioHTTP (url)connect.composio.dev/mcpConnected

MCP Config Duplication

🟡 MEDIUM
MCP server configs duplicated in both root and omega config
All 6 MCP servers are defined in ~/.hermes/config.yaml AND ~/.hermes/profiles/omega/config.yaml. When both are loaded, the profile config overrides root, but the duplication creates a maintenance burden — changes must be made in both places.
✦ ✦ ✦

06. Plugins & Dashboard

PluginStatusSizeNotes
🏆 hermes-achievementsActive1.4 MBscan_checkpoint.json + scan_snapshot.json
🧹 disk-cleanupActivebuilt-inEnabled in plugins list

Dashboard

PropertyValue
StatusRunning
Bind127.0.0.1:9119
Systemdhermes-dashboard.service
Themedefault
Token Analyticsoff
✦ ✦ ✦

07. Gateway & TUI

Gateway

PropertyOmega (active)
ProcessPython — hermes gateway run
API Port8643 (0.0.0.0)
Webhook Port8644 (0.0.0.0)
AuthAPI key (HMAC)
Platform ConnectionsTelegram, Discord, API Server

TUI

PropertyValue
Builddist/entry.js — 3.0 MB
Built2026-05-20
Uncommitted Changes7 files in ui-tui/ (mouse fix, wheelAccel, thinking.tsx, etc.)
Known Bug🐛 MOUSE_ANY (1003) removed — was causing movement to type as text
✦ ✦ ✦

08. Storage & Logs

LocationSizeNotes
sessions/685 MB⚠️ Largest data store. 90-day retention, auto_prune OFF
logs/9.5 MBINFO level, 5 MB max per file
memories/60 KBWell-maintained
checkpoints/unknownMax 50 snapshots, 500 MB cap

Sessions DB Growth Analysis

🟡 MEDIUM
Session database growing unchecked
685 MB with auto_prune disabled and 90-day retention. At current rate, this will hit 1 GB+ within weeks. Each session is stored as SQLite blobs. The vacuum_after_prune option is on, but prune only runs when triggered.
✦ ✦ ✦

09. Problems & Risks

🟡 HIGH
Gateway API server on 0.0.0.0:8643
Hermes API gateway binds to all interfaces. Config says host: 127.0.0.1 but the process is actually running on 0.0.0.0:8643. This exposes the full Hermes API to the network. Single auth key is the only barrier.
🟡 HIGH
Session DB auto_prune disabled
685 MB and growing with no automatic pruning. Over time this will consume significant disk and slow down session_search queries. Enable auto_prune or add a weekly cron job.
🟡 MEDIUM
MCP server config duplication (root vs omega)
Same MCP servers defined in both configs. Adds maintenance friction and potential drift.
🟡 MEDIUM
aether-console MCP target may be dead
Aether-console MCP points to localhost:10282, which wasn't listening during the infrastructure audit. MCP server starts fine but all tool calls will time out.
🟡 MEDIUM
Profile config drift (port mismatch)
Scribe profile references api_server port 8642 — the active gateway runs on 8643. If scribe ever needs API access, it will fail.
🟡 MEDIUM
10 uncommitted source changes
Patches to TUI (mouse fix, wheelAccel, thinking UI) and mcp_tool.py are local-only. Will be lost on next `git pull` unless committed or stashed.
🟢 LOW
Reviewer profile has personality bloat
13 dead personalities still in reviewer config that were removed from omega.
🟢 LOW
6 empty skill categories
Directory stubs with no actual skills. Not harmful but add clutter.
🟢 LOW
8 GB install size
Large but includes all ML model dependencies (SAM, Whisper, etc.). Worth monitoring.
✦ ✦ ✦

10. Architecture Diagram

┌────────────────────────────────────────────────────────────┐
│                    HERMES AGENT v0.14.0                     │
│              /usr/local/lib/hermes-agent (8.0 GB)           │
└────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
        ▼                     ▼                     ▼
┌───────────────┐   ┌───────────────┐   ┌───────────────┐
│   OMEGA       │   │   REVIEWER    │   │    SCRIBE     │
│   (ACTIVE)    │   │ (deepseek-v4  │   │ (deepseek-v4  │
│ deepseek-v4-  │   │    -pro)      │   │    -pro)      │
│   flash       │   │ Code review   │   │ Email/Scribe  │
│ Sibylle       │   │ & vetting     │   │ No terminal   │
└───────┬───────┘   └───────┬───────┘   └───────┬───────┘
        │                   │                   │
        │     ┌─────────────┘                   │
        │     │     ┌───────────────────────────┘
        │     │     │
        ▼     ▼     ▼
┌────────────────────────────────────────────────────────────┐
│                     CONFIG STACK                            │
│  ~/.hermes/config.yaml  (root — telegram + MCP servers)    │
│  ~/.hermes/profiles/omega/config.yaml  (full config, v23)  │
│  ~/.hermes/profiles/omega/.env  (API keys, redacted)       │
│  ~/.hermes/AGENTS.md  (Sibylle persona)                    │
└────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
        ▼                     ▼                     ▼
┌──────────────┐   ┌──────────────┐   ┌───────────────────┐
│  169 SKILLS  │   │  7 MCP SRV   │   │  GATEWAY :8643    │
│  29 cats     │   │ agentmail    │   │  WEBHOOK :8644    │
│  6 empty     │   │ nanobanana   │   │  DASHBOARD :9119  │
│              │   │ obsidian     │   │  TUI (built)      │
│              │   │ sqlite       │   │  HCI :10272       │
│              │   │ vibetrading  │   │                   │
│              │   │ aether-console│  │                   │
│              │   │ composio     │   │                   │
└──────────────┘   └──────────────┘   └───────────────────┘
                              │
                              ▼
              ┌──────────────────────────┐
              │       STORAGE            │
              │  Sessions: 685 MB ⚠️     │
              │  Logs: 9.5 MB            │
              │  Memories: 60 KB         │
              │  Checkpoints: active     │
              └──────────────────────────┘

┌────────────────────────────────────────────────────────────┐
│                    PROFILES (4 total)                       │
│  omega (active) │ reviewer │ scribe │ prompter             │
│                        │                                    │
│  Reviewer & Scribe each have 19 skill cats (subset) +       │
│  deepseek-v4-pro (vs flash in omega)                       │
└────────────────────────────────────────────────────────────┘

Data Flow (Current Session)

TELEGRAM (you)
    │  POST message
    ▼
GATEWAY :8643
    │  dispatch to profile
    ▼
OMEGA PROFILE (Sibylle)
    │  load AGENTS.md + config + 169 skills + memory
    │
    ├──→ MCP servers (agentmail, obsidian, sqlite, etc.)
    ├──→ Terminal (local shell)
    ├──→ Web search (via SearXNG / Firecrawl)
    ├──→ Delegation (reviewer → scribe)
    └──→ Memory (read/write persistent store)
    │
    ▼
RESPONSE → Telegram (you)