Hermes Agent is an open-source AI Agent framework developed by Nous Research that runs in terminals, messaging platforms, and IDEs. It can interact with your system through tool calls, supports 20+ LLM providers, and runs on Linux, macOS, Windows, and Docker.
The goal of this article is simple: read just this one piece, and you’ll be able to master Hermes. From installation and deployment to usage tips, it’s all covered.
What is Hermes
Hermes is an autonomous coding and task execution agent, in the same category as Claude Code and OpenAI Codex. However, it has several notable differences:
- Self-evolution through Skills - After solving complex problems, you can save the workflow as a Skill that is automatically loaded in subsequent sessions. Over time, the Agent becomes increasingly strong at your specific tasks
- Persistent memory across sessions - Remembers your preferences, environment details, and lessons learned
- Multi-platform gateway - The same Agent can run on 15+ platforms including Telegram, Discord, Slack, WeChat, Feishu, and more, with full tool access
- Provider agnostic - You can switch models and providers mid-session without changing other configurations
- Profile isolation - Run multiple independent Hermes instances, each with its own configuration, sessions, skills, and memory
- Highly extensible - Supports plugins, MCP servers, custom tools, Webhook triggers, and Cron scheduled tasks
System Requirements
Before installing, make sure your environment meets the following conditions:
| Requirement | Minimum Version | Notes |
|---|---|---|
| Python | 3.11+ | Auto-installed by the install script |
| Node.js | 22+ | Required for browser tools (optional) |
| Git | Any version | Required for cloning the repository |
| Memory | 512MB+ | The Agent itself has a very small footprint |
| Model context | 64K tokens | The model must support at least a 64K context window |
Supported platforms (Tier 1):
- macOS (Apple Silicon)
- Windows 10/11 (x86_64, aarch64)
- Linux / WSL2 (x86_64, aarch64)
- Docker containers (x86_64, aarch64)
Installation Guide
1. Linux / macOS / WSL2
Install with a single command:
1 | curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash |
The installation script will automatically perform the following steps:
- Detect the operating system and package manager
- Install Python 3.11+ and Git (if missing)
- Clone the Hermes repository to
~/.hermes/hermes-agent/ - Create a Python virtual environment and install dependencies
- Install the
hermescommand to~/.local/bin/ - Run the interactive configuration wizard
After installation, reload your shell:
1 | source ~/.bashrc # or source ~/.zshrc |
When installing as root, Hermes uses an FHS layout: code is placed in /usr/local/lib/hermes-agent, the command is symlinked to /usr/local/bin/hermes, and data stays in ~/.hermes/. This is consistent with the behavior of Claude Code / Codex CLI.
Common installation options:
1 | # Skip the configuration wizard (for CI/automation scenarios) |
2. Native Windows
Run in PowerShell:
1 | iex (irm https://hermes-agent.nousresearch.com/install.ps1) |
You can also download the desktop installer: visit https://hermes-agent.nousresearch.com/ to download the Hermes Desktop installer, which installs both the CLI and the desktop app.
Windows notes:
- Alt+Enter is intercepted by Windows Terminal for fullscreen toggling; use Ctrl+Enter for line breaks
- If you encounter HTTP 400 “No models provided” on first run, config.yaml may have been saved in UTF-8 BOM format. Re-save it using
hermes config edit - The execute_code sandbox may encounter WinError 10106 on Windows, usually because the SYSTEMROOT environment variable has been cleared
3. WSL2 (Windows Subsystem for Linux)
WSL2 uses the same installation script as Linux. However, you need to ensure that WSL2 has systemd enabled:
1 | # /etc/wsl.conf |
Without systemd, the Gateway service falls back to nohup mode, which exits when the WSL2 window is closed.
The installation command is the same as Linux:
1 | curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash |
4. Docker Deployment
Docker is the recommended approach for server deployment. The image itself is stateless; all data is persisted through volume mounts.
Initial configuration (interactive):
1 | mkdir -p ~/.hermes |
This enters the configuration wizard, prompting you for API keys and writing them to ~/.hermes/.env. This only needs to be done once.
Gateway mode (background daemon):
1 | docker run -d \ |
Port 8642 exposes the Gateway’s API server and health check endpoint. If you only use chat platforms (Telegram, Discord, etc.), you don’t need to map this port.
Enabling Web Dashboard:
1 | docker run -d \ |
Docker deployment key points:
- The Gateway inside the container is supervised by s6-overlay and automatically restarts after crashes
- Updates are done by pulling a new image, not via
hermes update - Do not run docker commands through a VPS browser console (special character transmission issues); use SSH instead
- If you want to expose the API server, be sure to set
API_SERVER_KEY:
1 | docker run -d \ |
5. Android (Termux)
Run the same installation script as Linux in the Termux terminal. The installation script automatically detects the Termux environment and uses Python’s standard library venv + pip (instead of uv). Some features are unavailable on phones; see the official Termux documentation for details.
Initial Configuration
After installation, run the configuration wizard:
1 | hermes setup |
The configuration wizard offers three modes:
| Mode | Description | Use Case |
|---|---|---|
| Quick Setup (Nous Portal) | OAuth login, zero configuration | Recommended for quick start |
| Full Setup | Step-by-step configuration of all options | When you need fine-grained control |
| Blank Slate | Only keeps the minimum required tools | For minimalist control |
Choosing a Provider
Hermes supports 30+ LLM providers. Use the interactive selector:
1 | hermes model |
Quick reference for common providers:
| Provider | Authentication | Environment Variable |
|---|---|---|
| Nous Portal | OAuth | hermes setup --portal |
| OpenRouter | API Key | OPENROUTER_API_KEY |
| Anthropic | API Key / OAuth | ANTHROPIC_API_KEY |
| OpenAI Codex | OAuth | hermes auth |
| DeepSeek | API Key | DEEPSEEK_API_KEY |
| Google Gemini | API Key | GOOGLE_API_KEY |
| Z.AI (GLM) | API Key | GLM_API_KEY |
| Kimi (Moonshot) | API Key | KIMI_API_KEY |
| MiniMax | API Key / OAuth | MINIMAX_API_KEY |
| Alibaba Tongyi (DashScope) | API Key | DASHSCOPE_API_KEY |
| GitHub Copilot | OAuth / Token | COPILOT_GITHUB_TOKEN |
| Custom endpoint | URL + Key | Configure in config.yaml |
Recommended for users in mainland China: Z.AI (GLM), Kimi, MiniMax China, and Alibaba Tongyi all support direct connections over domestic networks. You can also use a custom endpoint to connect to local model services like vLLM or Ollama.
Custom endpoint configuration (connecting to a local Ollama as an example):
1 | hermes config set model.provider custom |
Configuration File Structure
Hermes separates sensitive information from non-sensitive configuration:
1 | ~/.hermes/ |
View and modify configuration:
1 | hermes config # View current configuration |
Health Check
After installation, run the diagnostic tool to confirm everything is working:
1 | hermes doctor |
This checks the Python version, dependency integrity, configuration files, API keys, and more. Add --fix to automatically fix some issues.
Basic Usage
Starting an Interactive Session
1 | hermes # Classic CLI |
TUI mode provides modal overlays, mouse selection, and non-blocking input. Both interfaces share the same sessions, slash commands, and configuration.
One-off Query
When you don’t need an interactive session, you can ask a question directly:
1 | hermes chat -q "Write a quicksort in Python" |
Preloading Skills
Load specified skills at startup:
1 | hermes -s github-pr-workflow |
Resuming Sessions
1 | hermes --continue # Resume the most recent session |
Worktree Mode
When you need to run multiple Agents editing the same repository in parallel, use worktree mode to avoid git conflicts:
1 | hermes -w |
YOLO Mode
Skip approval for dangerous commands (use with caution):
1 | hermes --yolo |
Or configure it to use smart approval mode:
1 | hermes config set approvals.mode smart # Low-risk auto-approve, high-risk still prompts |
In-Session Slash Commands
Type slash commands in an interactive session to control Agent behavior. Below is a categorized quick reference of common commands.
Session Control
1 | /new Start a new session |
Configuration Adjustments
1 | /model [name] View or switch the model |
Tools and Skills
1 | /tools Manage tools |
Utilities
1 | /branch Fork the current session |
Type /help to see the full command list. New versions may add additional commands.
Core Features In Depth
Tool System (Toolsets)
Hermes’s capabilities are implemented through toolsets. Each toolset is a collection of related tools that can be enabled/disabled independently.
1 | hermes tools # Interactive enable/disable (curses UI) |
Overview of common toolsets:
| Toolset | Description |
|---|---|
web |
Web search and content extraction |
browser |
Browser automation (Browserbase, Camofox, or local Chromium) |
terminal |
Shell command execution and process management |
file |
File read/write, search, patching |
code_execution |
Sandboxed Python execution |
vision |
Image analysis |
image_gen |
AI image generation |
tts |
Text to speech |
memory |
Cross-session persistent memory |
session_search |
Search historical conversations |
delegation |
Sub-agent task delegation |
cronjob |
Scheduled task management |
todo |
In-session task planning and tracking |
skills |
Skill browsing and management |
messaging |
Cross-platform message sending |
Tool changes take effect in new sessions (/reset or restart) and do not apply to the current session in order to preserve the prompt cache.
Skill System (Skills)
Skills are the core mechanism for Hermes’s self-evolution. A skill is a reusable workflow document containing steps, commands, and considerations for a specific task.
Installing skills:
1 | hermes skills list # List installed skills |
Supported skill installation sources:
- Skill marketplace (hub identifier)
- Direct URL (
https://.../SKILL.md) - GitHub repository (
hermes skills tap add owner/repo)
Automatic skill maintenance: Hermes has a built-in Curator system that automatically tracks skill usage. Skills that haven’t been used for a long time are marked as stale and archived (not deleted), with automatic backups before all operations.
Loading skills within a session:
1 | /skill github-pr-workflow |
Or preload at startup:
1 | hermes -s github-pr-workflow,code-review |
Profile Multi-Role System
A Profile is an independent configuration unit that allows you to run multiple Hermes instances with different identities and configurations.
1 | hermes profile list # List all Profiles |
Each Profile has:
- An independent SOUL.md (role identity definition)
- An independent skills/ directory
- Independent memories/ (memory)
- An independent config.yaml and .env
Typical use case: Building an AI development team. Create separate Profiles for the PM, architect, developer, and QA engineer, each with their own identity definition and workflow skills.
Gateway Messaging Platforms
The Gateway lets Hermes run on messaging platforms with full tool access.
1 | hermes gateway setup # Configure platforms |
Supported platforms:
| Platform | Notes |
|---|---|
| Telegram | Fully supported, recommended first choice |
| Discord | Requires enabling Message Content Intent |
| Slack | Requires subscribing to message.channels events |
| Via the Baileys library | |
| Signal | Via signal-cli |
| Matrix | Via python-olm |
| IMAP/SMTP | |
| WeChat (Weixin) | Supported |
| Feishu | Supported |
| WeCom (Enterprise WeChat) | Supported |
| DingTalk | Supported |
| SMS | Via Twilio, etc. |
| Home Assistant | Smart home integration |
| API Server | OpenAI-compatible API |
| Webhooks | Event-driven triggers |
Gateway management commands (used within messaging platforms):
1 | /approve Approve pending commands |
Cron Scheduled Tasks
1 | hermes cron list # List scheduled tasks |
Each Cron task supports:
- Specifying which Skills to load
- Model and provider overrides
- Pre-run scripts (data collection mode)
- Task chaining (injecting upstream task output into downstream tasks)
- Multi-platform delivery
MCP Servers
MCP (Model Context Protocol) lets Hermes connect to external tool servers.
1 | hermes mcp list # List configured servers |
MCP servers support both stdio and HTTP transport methods, automatically discovering tools and registering them with Hermes.
Sub-Agent Delegation
delegate_task allows Hermes to spawn sub-agents to handle subtasks. Sub-agents have their own independent sessions and terminals.
1 | # In a session, Hermes automatically uses the delegate_task tool |
Sub-agent characteristics:
- Isolated conversation context
- Configurable tool subset
- Supports batch parallel execution
- Automatically summarizes results back to the parent agent
Persistent Memory
Hermes maintains memory across sessions, divided into two categories:
- User Profile - User information: name, role, preferences, communication style
- Memory - Environmental notes: project structure, tool characteristics, lessons learned
1 | hermes memory status # View memory status |
Memories are injected into the system prompt of each new session, kept concise and focused.
Tips and Best Practices
1. Model Selection Strategy
Different tasks suit different models:
| Task Type | Recommended Model | Reason |
|---|---|---|
| Code writing | Claude Sonnet/Opus | Strong code comprehension and generation |
| Daily conversation | GPT-4o / Gemini | Fast, good value for money |
| Chinese-language scenarios | GLM / Qwen | More accurate Chinese understanding |
| Long document processing | Claude (200K context) | Large context window |
| Local deployment | Ollama + Qwen2.5 | No API costs |
Switching models takes just one command, with no lock-in:
1 | hermes model # Interactive selection |
2. Prompting Techniques
Hermes understands natural language instructions, but good prompts can significantly improve results:
1 | # Bad prompt |
Key elements:
- Specify exact file paths
- Describe specific symptoms and error messages
- Specify the verification method
- Provide context (logs, environment)
3. Leverage Skills to Accumulate Experience
Whenever you find a reusable workflow, have Hermes save it as a skill:
1 | Save the steps for deploying the Hexo blog just now as a skill |
Hermes will generate a SKILL.md file containing trigger conditions, steps, commands, and considerations. It will be automatically loaded the next time you encounter a similar task.
4. Session Management
- Use
/titleto name sessions for easier future recovery - Use
/compresson long sessions to compress context and avoid token waste - Use
/branchto fork a session and explore different approaches without affecting the main line - Use
hermes sessions browseto browse and search historical sessions
5. Security Configuration
1 | # Enable secret redaction (API keys in tool output will be automatically masked) |
6. Multi-Agent Collaboration
Run multiple interactive Hermes instances via tmux:
1 | # Start the backend Agent |
Use -w (worktree mode) to avoid git conflicts when multiple Agents edit the same repository.
7. Voice Mode
1 | # Configure speech-to-text (local Whisper is free) |
Toggle voice mode within a session:
1 | /voice on # Voice conversation mode |
8. Performance Optimization
1 | # Enable context compression (enabled by default) |
Troubleshooting
Installation Issues
Problem: Install script reports “Git not found”
The install script will attempt to install Git automatically. If that fails, install it manually:
- Ubuntu/Debian:
sudo apt install git - CentOS/RHEL:
sudo yum install git - macOS:
brew install gitor install Xcode Command Line Tools
Problem: HTTP 400 “No models provided” on Windows
config.yaml was saved in UTF-8 BOM format. Run hermes config edit to re-save; the editor will automatically strip the BOM.
Problem: Gateway doesn’t run after exiting on WSL2
Make sure systemd is enabled in /etc/wsl.conf:
1 | [boot] |
Model and Provider Issues
1 | hermes doctor # Check configuration and dependencies |
Copilot 403 error: The token from gh auth login cannot be used for the Copilot API. You must authenticate via the OAuth device code flow through hermes model -> GitHub Copilot.
Insufficient model context: Hermes requires the model to support at least 64K tokens of context. Local models need to be configured as follows:
1 | # Ollama |
Gateway Issues
1 | # View logs |
Gateway exits after SSH disconnects:
1 | sudo loginctl enable-linger $USER |
Gateway crash loop:
1 | systemctl --user reset-failed hermes-gateway |
Discord Bot not responding: In the Discord Developer Portal, go to Bot -> Privileged Gateway Intents and enable Message Content Intent.
Slack Bot only works in DMs: You need to subscribe to the message.channels event, otherwise the Bot ignores messages in public channels.
Tools and Skills Issues
Tools unavailable:
- Run
hermes toolsto check whether the toolset is enabled - Some tools require environment variables (check
.env) - After enabling tools, you need to
/resetto start a new session
Skills not showing:
- Run
hermes skills listto confirm they are installed - Run
hermes skills configto check platform enablement status - Load manually:
/skill nameorhermes -s name
Changes Not Taking Effect
| Change Type | How It Takes Effect |
|---|---|
| Tool/skill changes | /reset to start a new session |
| Configuration changes (Gateway) | /restart |
| Configuration changes (CLI) | Exit and restart |
| Code modifications | Restart the CLI or Gateway process |
Auxiliary Model Not Working
If auxiliary features like vision analysis or context compression silently fail, it means the auto provider cannot find a backend. Set an auxiliary model:
1 | hermes config set auxiliary.vision.provider openrouter |
CLI Command Quick Reference
Global Flags
1 | hermes [flags] [command] |
When no subcommand is given, it defaults to chat.
Common Commands
1 | # Chat |
Conclusion
Hermes Agent is a powerful and highly extensible AI Agent framework. Mastering it requires understanding a few core concepts:
- Installation and deployment - Choose the right installation method for your operating system; Docker is suitable for servers, and the desktop installer is suitable for personal computers
- Provider configuration - Choose the right LLM provider; for users in mainland China, GLM/Kimi/Tongyi or custom endpoints are recommended
- Tool system - Enable toolsets as needed; you don’t need to turn them all on
- Skill accumulation - Every complex problem you solve can be saved as a skill, letting the Agent continuously evolve
- Profile isolation - Use Profiles to separate identities and configurations in multi-role scenarios
- Gateway deployment - Run the Agent on messaging platforms so it’s available anytime
Key design philosophy: All of Hermes’s capabilities are optional. Start with a minimal configuration and add features as needed — that’s the right way to use it.
Official documentation: https://hermes-agent.nousresearch.com/docs/
GitHub repository: https://github.com/NousResearch/hermes-agent