The self-improving AI agent that creates skills from experience, improves them during use, and runs anywhere. Open source. MIT licensed.
Hermes Agent installs in one command on Linux, macOS, WSL2, and Android (Termux). Windows users need WSL2.
hermes-agent package and dependencies, sets up ~/.hermes/ configuration directory, and adds the hermes command to your PATH.| Platform | Requirement | Notes |
|---|---|---|
| Linux | Python 3.11+ | Native support, all features |
| macOS | Python 3.11+ | Native support, all features |
| Windows | WSL2 | Must run inside WSL2, not native Windows |
| Android | Termux | Install via hermes-agent[termux] extra |
hermes to start the setup wizardhermes model — choose your LLM providerhermes setup — enable toolsets and platformshermes drops into interactive TUItelegram, discord, slack, matrix — gateway platform adapters
voice — faster-whisper STT + sounddevice for speech-to-text and TTS
modal, daytona — cloud terminal backends
mcp — Model Context Protocol server support
homeassistant — Home Assistant integration
rl — reinforcement learning training via Tinker-Atropos
Hermes Agent includes automated migration from OpenClaw. The migration preserves:
Full TUI with multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output.
| Command | Description |
|---|---|
| hermes | Launch interactive chat (default mode) |
| hermes model | Select LLM provider and model |
| hermes setup | Run full configuration wizard |
| hermes gateway | Manage messaging platform services |
| hermes doctor | Diagnose and auto-fix installation issues |
| hermes mcp | Manage MCP server connections |
| hermes skills | Browse, install, and manage skills |
| hermes cron | Schedule automated tasks |
Start a fresh conversation session
Clear current session context
Browse past sessions with search
Save current session to disk
Re-run the last agent response
Revert the last message pair
Fork conversation into a new branch
Compress session to save context
Send current task to background
Resume a background task
Switch model mid-session: /model gpt-4o
Toggle voice input/output
Change terminal UI theme
Toggle verbose tool output
Toggle auto-approve mode for tools
Toggle fast inference mode
List all available tools and their status
Enable or disable toolset groups
Manage installed skills
View and manage scheduled jobs
Manage installed plugins
Reconnect to MCP servers
Hermes includes a built-in cron system for automating recurring tasks. Jobs are defined with cron expressions and executed by the gateway service.
hermes gateway install, or run hermes gateway start in the foreground.Sessions are stored in a local SQLite database (~/.hermes/state.db) with FTS5 full-text search. The curses-powered session browser supports live search filtering, title/preview matching, and relative timestamps.
The hermes doctor command runs comprehensive checks across your installation:
Hermes creates reusable skills from successful interactions, stores them locally, and improves them over time. This is the core differentiator.
~/.hermes/skills/{category}/{name}/The Skills Hub is a multi-source registry for discovering and installing community-built skills. It supports four trust levels:
Published by Nous Research. Highest trust, auto-approved installation.
Verified partner skills. Installed with a trust badge indicator.
User-contributed skills. Security scanned before installation.
Your own GitHub repos as skill sources via hermes skills tap add.
Every skill goes through a security pipeline before installation:
skills_guard--force flag. All actions are audit-logged.Alongside skills, Hermes maintains persistent memory across sessions:
~/.hermes/state.db17 built-in toolsets plus unlimited extension via Model Context Protocol servers. The same MCP servers that work with Claude Code work with Hermes.
Search and scrape the web via Firecrawl, Exa, Tavily, or Nous Subscription
Full browser automation via local Chromium, Browserbase, or Firecrawl
Execute commands in local, Docker, SSH, Daytona, Singularity, or Modal
Read, write, search, and manage files in the working directory
Run Python, JavaScript, and shell scripts with output capture
Analyze images, screenshots, and visual content
Create images via Nous Subscription or FAL.ai
Five TTS providers: Edge (free), OpenAI, ElevenLabs, Mistral, Nous
Create, discover, install, and improve reusable skills
Break complex tasks into steps with dependency tracking
Persistent cross-session knowledge and user modeling
FTS5 full-text search across all conversation history
Agent asks for clarification when intent is ambiguous
Spawn isolated subagents for parallel execution
Schedule and manage automated recurring tasks
Reinforcement learning via Tinker-Atropos (research)
Control smart home devices via HA integration
Server configurations persist in ~/.hermes/config.yaml under the mcp_servers key:
${VARIABLE} are resolved at connection time. API keys are stored as env vars (e.g., MCP_SERVERNAME_API_KEY) and referenced in headers. OAuth 2.1 PKCE is also supported.| Category | Providers |
|---|---|
| Text-to-Speech | Nous (managed), Edge (free), OpenAI, ElevenLabs, Mistral |
| Web Search | Nous, Firecrawl, Exa, Parallel, Tavily, Self-hosted |
| Browser | Nous, Local Chromium, Browserbase, Browser Use, Firecrawl, Camofox |
| Image Gen | Nous (managed), FAL.ai |
Hermes works with any model—200+ options via OpenRouter, plus direct API access to major providers. Switch models mid-session without code changes.
200+ models via pay-per-use aggregator. Recommended for flexibility—one API key, every model.
Subscription-based access to Nous-hosted models. Managed infrastructure, predictable pricing.
Direct Claude API access. Supports OAuth, API keys, and Claude Code credential sharing.
GPT-4o, o1, o3, and Codex models. Direct API or via Codex integration.
OAuth and ACP modes for Copilot-authenticated access to multiple backends.
Any OpenAI-compatible API. Self-hosted models, vLLM, TGI, Ollama, etc.
model_normalize.py layer handles API differences between providers transparently. Switch from Claude to GPT to Qwen mid-conversation—tool calling, streaming, and function schemas are automatically adapted.| Provider | Auth Method | Config Key |
|---|---|---|
| OpenRouter | API key | OPENROUTER_API_KEY |
| Nous Portal | Subscription OAuth | Managed via hermes model |
| Anthropic | API key / OAuth | ANTHROPIC_API_KEY |
| OpenAI | API key | OPENAI_API_KEY |
| Copilot | OAuth / ACP | Managed via hermes model |
| Custom | API key + base URL | CUSTOM_API_KEY + CUSTOM_BASE_URL |
Run Hermes as a CLI tool, or deploy it as a persistent agent on Telegram, Discord, Slack, WhatsApp, Signal, and more via the gateway service.
Full TUI with curses interface, multiline editing, autocomplete, and streaming output.
Bot API integration. Rich messages, inline keyboards, voice messages.
Bot integration with slash commands, threads, and skill registration.
App integration with subcommand routing and channel awareness.
Via WhatsApp Business API or bridge services.
Secure messaging via Signal CLI bridge.
Decentralized chat protocol support.
Text message interface via SMS gateway providers.
When Hermes needs to execute commands, it can use multiple terminal backends depending on your security and isolation requirements:
How Hermes Agent is built: the data flow, module structure, memory system, and security model.
| Module | Purpose |
|---|---|
| main.py | CLI entry point, command routing, first-run guards |
| commands.py | Slash command registry, aliases, autocomplete, platform filtering |
| claw.py | Core agent loop—LLM interaction, tool execution, streaming |
| gateway.py | Multi-platform message router and service manager |
| skills_hub.py | Skill discovery, installation, security scanning, trust levels |
| skills_config.py | Skill metadata, SKILL.md parsing, YAML frontmatter |
| mcp_config.py | MCP server lifecycle—add, test, configure, remove |
| tools_config.py | Toolset management, provider selection, API key handling |
| model_normalize.py | Cross-provider API normalization layer |
| model_switch.py | Runtime model switching without session restart |
| memory_setup.py | Memory provider configuration (Honcho, Mem0) |
| doctor.py | Diagnostic checks, auto-fix, health monitoring |
| cron.py | Job scheduler—create, pause, resume, tick |
| config.py | YAML config persistence, env var loading, profile support |
| callbacks.py | Event hooks for tool execution, streaming, and UI updates |
When a user sends a message, here's what happens:
All community skills are statically analyzed before installation. Dangerous patterns are blocked.
By default, tool calls require user approval. /yolo mode auto-approves (use with caution).
Docker and Singularity backends isolate terminal commands from the host system.
API keys stored in .env, referenced via ${VAR} interpolation—never exposed in config files.