Hermes Agent
NousResearch's open-source agent runtime: profile system + auth pool + IM gateway + skill plugin + cron, built for running multi-channel, multi-model automation workflows from one shell.
1. Core Product / Service
Hermes Agent is an open-source agent runtime published by NousResearch (hermes-agent). It can run locally or as a long-lived service on a server.
Core architecture:
- CLI entry:
hermeswrapper, backed byhermes_cli.main(Python venv); can run as a background service for the gateway and scheduled jobs. - Profile system:
hermes profile create/use/aliasmanages multiple independent configurations, supports--clone-allfor credential copying; useful for isolating "OAuth subscription vs cheap provider" setups. - Auth pool: provider credentials are stored centrally as a single source of truth; supports API key / OAuth / PKCE types.
- Model routing tiers (
config.yaml):model:primary conversation model (used byhermes chatand the IM gateway)auxiliary.*small tasks (approval / compression / flush_memories / mcp / session_search / skills_hub / web_extract / vision) each specifying provider+modeldelegation.*subagent invocations routed separatelycompression.*history compression routed separately
- IM Gateway: native Lark/Feishu integration; Telegram and Slack are connected via channel adapters.
- Cron: the scheduled-jobs file supports per-job provider/model/base_url override (the CLI doesn't expose these fields; the JSON must be edited directly).
- Skill plugin: skills are registered as
skills/<category>/<name>/SKILL.md; the scanner doesn't follow symlinks, so real copies are required.
Provider coverage: native support for Anthropic (including OAuth subscription tokens), Moonshot Kimi (kimi-coding / kimi-coding-cn, K2.5/K2.6 already in the built-in model list), DeepSeek direct, openrouter for all remaining models.
2. Target Users & Pain Points
Main users: individual builders and small teams running multiple scheduled jobs, IM channels, and sub-agents who want them wrapped in one runtime.
Pain points / design motivations:
- Terminal coding CLIs such as Claude Code are typically single-session, single-channel, single-model; automation workflows are often multi-channel + multi-cron + multi-model
- Subscription OAuth quota (Anthropic Pro/Max) and pay-per-use need to be burned separately — primary conversation uses the subscription, subagents and compression go to cheap providers
- Multiple IM bots share the same auth pool and skill library, avoiding per-channel reconfiguration
3. Competitive Landscape
| Dimension | Hermes Agent | Claude Code | OpenClaw | Anthropic Claude Agent SDK | Cursor agents | Aider |
|---|---|---|---|---|---|---|
| Positioning | Multi-channel agent runtime | Terminal coding CLI | Multi-user collaborative agent platform | Embedded SDK | In-IDE coding agent | git-aware coding CLI |
| Deployment | Local or server service | Local CLI | Local + server daemon | Embedded lib | IDE | Local CLI |
| Channels | Lark / TG / Slack | Terminal only | Lark / WhatsApp / WeCom | Caller integrates themselves | In-IDE | Terminal only |
| Providers | Multiple + OAuth + auth pool | Anthropic only | Multiple | Anthropic | Anthropic / OpenAI / in-house | Multiple |
| Profile / multi-account | Native | None | Partial | N/A | Single | Single |
| Skill plugin | Native | Skills (recent) | Skill | User implements themselves | Composer | None |
| Cron / scheduling | Built-in | None | Built-in | N/A | None | None |
| Use case | Automation workflows | Writing code | Team IM agents | Integration into products | Coding in IDE | Editing repos |
Key differentiation: multi-IM channel + cron + multi-model routing combined, with fine-grained routing of subscription OAuth quotas. Claude Code and Aider lack this abstraction layer; OpenClaw is more geared toward team multi-user scenarios; the Anthropic Agent SDK is library-level and requires assembly.
4. Unique Observations
- OAuth subscription + auxiliary separation is the key to cost savings: the main model can use Anthropic OAuth (consuming subscription quota) while auxiliary/delegation/compression point to cheap models on openrouter like deepseek / minimax-m2.7. Subagent 8-concurrency × OAuth easily hits rate limits, so routing delegation to cheap providers is a necessary protection.
- Trap of crons defaulting to the main model: if the main model is OAuth, daily crons will burn subscription quota and can trigger Anthropic anomaly detection — provider/model must be explicitly overridden per job (the CLI doesn't expose these fields). This is an implicit risk that is easy to miss.
- PKCE state = code_verifier trick: hermes stuffs the PKCE
code_verifierdirectly into the OAuthstateparameter (agent/anthropic_adapter.py), so thestatepasted back from the authorization callback equals the verifier. If the flow dies mid-way the token endpoint can be called manually to exchange for tokens — a rare but clever implementation. - Skill scanner doesn't follow symlinks: a skill in development must be copied as a real directory into the skills folder to be recognized;
ln -sis silently ignored. - Kimi integration with zero source changes: Moonshot Kimi is natively supported, including automatic base-URL switching (a
sk-kimi-key prefix →api.kimi.com/coding, regularsk-→ configure base_url), and tool schema sanitize runs automatically.hermes auth add kimi-codingis enough to connect K2.5/K2.6. - Local patches get overwritten by updates: any local modifications to the upstream repo are overwritten by
hermes update, so customizations are best maintained as idempotent patch scripts that can be re-run after each update. - Tradeoff vs OpenClaw: OpenClaw is better suited for "team multi-user collaboration" scenarios (dmPolicy / allowFrom / multi-user isolation); Hermes fits single-operator setups that need profile + auth pool + cron — see openclaw-hermes-updates.
- Kimi via Hermes path: direct Moonshot connection is cheaper than going through openrouter (OpenRouter may not pass through prompt-caching discounts), but Kimi on OpenRouter is also cheaper than direct Moonshot (third-party providers compete fiercely) — depends on whether the workload is cache-friendly.
5. Financials
N/A — open-source project; no separate commercial product or funding disclosed for the runtime itself.
6. People & Relationships
- Publisher: NousResearch (open-source hermes-agent repo)
- Models commonly routed:
- Primary conversation: Anthropic Claude (OAuth subscription)
- Auxiliary / subagent: deepseek / minimax / glm etc. via openrouter
- Direct: kimi (Moonshot) for coding / long context
- Ecosystem comparison: tinyfish (alternative if not wanting to self-build web automation)
Sources
- Internal research notes — Hermes config architecture, profile, auth pool, OAuth PKCE, cron override risk
- Internal research notes — Kimi/Moonshot native support, base-URL auto-switching, tool schema sanitize
- Internal research notes — Feishu gateway access control + upstream-update override issue
- Internal research notes — Skill scanner doesn't follow symlinks
- Internal research notes