snapshot: preserve central wiki state 2026-08-15 (7 modified + 1 new file)

This commit is contained in:
Tony0410
2026-08-15 22:11:30 +08:00
commit 92e8028bb8
71 changed files with 9897 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
---
title: Hermes Agent
type: system
status: active
created: 2026-07-22
updated: 2026-07-25
verified_on: 2026-07-25
confidence: high
tags: [system, hermes, agent, llm]
sources: [raw/configs/hermes-config-sanitized.txt]
---
# Hermes Agent
## Purpose
Primary personal agent for Anthony. Runs automation, research, communication, knowledge management, browser control, and scheduled tasks.
## Current Status
- **Version:** v0.19.0 (2026.7.20), upstream `9ecacd6b`
- **Install method:** git
- **Python:** 3.11.15
- **OpenAI SDK:** 2.24.0
- **Upstream status:** Up to date
- **Install directory:** `/home/hermes/.hermes/hermes-agent`
- **Community resources:** [Hermes Registry](https://babylondreams.de/hermes-registry/) — third-party plugins, skills, and extensions
- **Binary:** `/home/hermes/.local/bin/hermes`
- **Config:** `~/.hermes/config.yaml` (version 33)
- **Profile:** `default` (`~/.hermes/profiles/default/`)
## Location
- **Host:** Local Linux host (no containerized Hermes runtime confirmed)
- **Filesystem root:** `~/.hermes/`
- **Working directory:** `/home/hermes/workspace`
## Providers & Routing
- **Default provider:** `custom:litellm``http://litellm:4000/v1`
- **Fallback provider:** `custom:omniroute``http://omniroute:20128/v1`
- **Default model:** `freellmapi-auto`
- **Provider model count:** ~3430 (omniroute), ~1512 (litellm)
- **free-stack combo (OmniRoute):** Nemotron 3 Ultra 550B configured with `max_tokens: 8192`, `reasoning_effort: medium`, `chat_template_kwargs.force_nonempty_content: true` (see [[omniroute]])
- See [[model-providers]] for full breakdown.
## Memory
- **Backend:** Mnemosyne (local native)
- **Memory enabled:** true
- **Char limit:** 5000
- **User profile enabled:** true
- **User char limit:** 3000
- **Flush every:** 6 turns
- **Auto sleep:** true
- **Default scope:** session
- **Vector type:** int8
- **Shared surface:** `data/shared/mnemosyne.db`
- See [[memory-backend]] for details.
## Browser
- **Cloud provider:** Camoufox
- **Managed persistence:** true
- **Inactivity timeout:** 120 s
- **Allow private URLs:** true
- **cua-driver:** v0.9.0 at `/home/hermes/.cua-driver/packages/releases/0.9.0-x86_64-unknown-linux-gnu/cua-driver`
- **DISPLAY:** `:102` (Xvfb/X11VNC/fluxbox confirmed working per session notes)
- See [[browser-backend]] for details.
## Terminal
- **Backend:** local
- **Working directory:** `/home/hermes/workspace`
- **Timeout:** 180 s
- **Home mode:** auto
- **Container CPU:** 1
- **Persistent shell:** true
- See [[terminal-backend]] for details.
## Skills
- **Total installed:** 66
- Key skills: hermes, hermes-gateway-troubleshooting, hermes-mcp-troubleshooting, hermes-api-vault, omniroute, job-search-automation, weekly-review, fresh-rss-intelligence-filter, etc.
- See [[skills-index]] for categorized list.
## Multi-Profile Multiplexer
The default gateway runs as a **profile multiplexer** (`gateway.multiplex_profiles: true`), serving both the `default` and `ops` profiles through a single gateway process with one Telegram connection.
### Profiles
| Profile | Chat | Purpose |
|---------|------|---------|
| default | `-1004321904721` (Rhino chat) | Main agent |
| ops | `-1003914987043` (Elephant ops), `-1003932503629` (OPS Tember rescue) | Operations/infra agent |
### How It Works
- **One gateway, one Telegram bot token** — shared across profiles
- **`profile_routes`** maps chat_id → profile at the gateway level
- **`allowed_chats` on both profiles** must include ALL chats that either profile should hear, because the default profile's adapter processes all inbound messages before `profile_routes` stamps `source.profile`
- The ops profile does NOT need `platforms.telegram.enabled` — the default adapter handles it
### Critical Rule: allowed_chats Is Pre-Route
The `allowed_chats` gate runs on the **default profile's adapter** before `profile_routes` matching. If a chat_id is only in the ops profile's `allowed_chats` but not the default's, messages from that chat are silently dropped before routing ever fires.
**Fix applied 2026-07-28:** Added both ops group IDs to the default profile's `allowed_chats` and `group_allowed_chats` (comma-separated). See [[multiplexer-setup]].
## Messaging Integrations
- **Telegram:** enabled, `allowed_chats: -1004321904721,-1003914987043,-1003932503629`, rich messages
- **Discord:** enabled, streaming true
- **Slack:** enabled
- **Email:** connected
- **Mattermost:** connected
- **ntfy:** connected
- **Google Chat:** available (`hermes-google_chat`)
- **QQ:** available (`hermes-qqbot`)
- **Yuanbao:** available
- See [[messaging-integrations]] for details.
## Scheduled Tasks
- **Cron jobs:** 25 active jobs
- Delivery targets: Telegram (primary), Discord, origin, local
- Notable: Birthday checker, job radar, newsletter digests, GitHub trending, mnemosyne health/watchdog/backup, AgentMail watcher
- See [[scheduled-tasks]] for full table.
## Dependencies
- LiteLLM proxy at `litellm:4000`
- OmniRoute at `omniroute:20128`
- cua-driver binary at path above
- Xvfb + X11VNC + fluxbox for headed browser
- Telegram bot token, Discord token, etc. (stored outside wiki)
## Known Issues
- Router migration incomplete
- Browser persistence not yet fully verified
- Obsidian Git plugin auto-sync caused conflicts during vault reorganization
## Related
- [[model-providers]]
- [[memory-backend]]
- [[browser-backend]]
- [[terminal-backend]]
- [[skills-index]]
- [[messaging-integrations]]
- [[scheduled-tasks]]
- [[current-state]]