How it compares to Claude Code
I have been running Hermes Agent (by Nous Research) alongside Claude Code for several months. Here is what I learned about its strengths, trade-offs, and why it became my primary agent for project work.
Claude Code is excellent at raw coding — fast completions, solid reasoning, tight Anthropic model integration. Hermes is built differently: it is designed as a customizable agent platform rather than a coding-first tool.
| Aspect | Claude Code | Hermes Agent |
|---|---|---|
| Focus | Raw coding speed | Customizable agent workflows |
| Models | Anthropic only | Any OpenAI-compatible provider |
| Hook system | Limited | Full lifecycle hooks |
| Skill system | CLAUDE.md (every session) | YAML frontmatter (on-demand) |
| Context efficiency | Loads everything each session | Loads only relevant skills |
| IDE integration | Tight (VS Code, Cursor) | CLI-first |
The hook system in detail
This is where Hermes pulls ahead. Claude Code has limited hook points for customizing agent behavior. Hermes exposes hooks at every stage of the agent lifecycle:
- Update prompts dynamically: A
user_prompt_hookcan inject project-specific context before each user message. - Run scripts on events:
session_start_hook,stop_hook,drift_notice_hook— each fires at a specific lifecycle point. - Compose agent workflows: The
delegate_tasktool lets you spawn subagents with isolated context, each inheriting your hooks and skills.
# Inject project context before each user message
user_prompt_hook:
script: inject-project-context.sh
# Auto-setup on session start
session_start_hook:
script: setup-dev-env.shToken-friendly skill design
Hermes skills follow a specific structure optimized for token efficiency:
- YAML frontmatter with name, description, and trigger conditions — the agent reads this to decide if the skill is relevant before loading the full body.
- Markdown body with numbered steps, exact commands, pitfalls, and verification steps — no verbose prose, no padding.
- Linked files (references, templates, scripts) load on demand, not upfront.
---
name: tdd-workflow
description: Enforce test-driven development cycle
triggers:
- "implement a feature"
- "fix a bug"
---
# TDD Workflow
## RED — Write a failing test
1. Write the smallest failing test
2. Run: `npm test` — confirm it fails
## GREEN — Make it pass
3. Write the minimum code to make it pass
4. Run: `npm test` — confirm it passes
## REFACTOR
5. Clean up without changing behavior
6. Run: `npm test` — confirm it still passesHermes Agent Documentation — the skill authoring guide is worth reading.
Integration with ai-badger
ai-badger and Hermes were developed in tandem. The .ai-badger/config.json structure maps directly to Hermes concepts: persona routing becomes skill dispatch, invariants become always-loaded context, and task orchestration uses delegate_task for parallel subagents.
The result: you write project knowledge once in ai-badger format, and Hermes executes it natively. No translation layer, no config duplication.
When to use which
| Scenario | Best fit | Why |
|---|---|---|
| Fast one-shot coding | Claude Code | Anthropic model quality, tight IDE integration |
| Customizable workflows | Hermes | Hook system, skill composition |
| Multi-provider flexibility | Hermes | Any OpenAI-compatible provider |
| Project knowledge management | Hermes | Skills, invariants, persona routing |
| Architecture decisions | Claude Code | Opus/Fable for complex reasoning |
| Cost optimization | Hermes | Route cheap models for implementation |
I use both — but Hermes handles the complex, multi-step project work where context management and agent customization matter more than raw completion speed.
Pitfalls
- No IDE integration equivalent to Claude Code VS Code extension
- Terminal rendering bugs in some environments
- Requires more initial setup than Claude Code — the payoff comes at scale
- Anthropic model lock-in is a feature if you want the best models
Hermes loads only relevant skills, reducing context overhead by ~60%.