Hermes Agent Setup
Learn how to configure Hermes Agent, including configuration files, LLM provider settings, tool configuration, and all available configuration options.
* * *
## Configuration File Locations
Hermes Agent uses the following configuration files:
| File | Description |
| --- | --- |
| `~/.hermes/config.yaml` | Main configuration file |
| `~/.hermes/.env` | Environment variables (API keys, etc.) |
| `~/.hermes/state.db` | SQLite session database |
| `~/.hermes/skills/` | Installed skills directory |
| `~/.hermes/sessions/` | Session storage directory |
| `~/.hermes/memories/` | Persistent memory storage |
* * *
## Basic Configuration
### Set API Key
Set the API key via CLI:
hermes config set OPENROUTER_API_KEY sk-or-v1-your-key-here
Or edit the `~/.hermes/.env` file directly:
# LLM Provider OPENROUTER_API_KEY=sk-or-v1-your-key-here # Optional Tools FIRECRAWL_API_KEY=fc-your-key FAL_KEY=your-fal-key
### Choose a Model
hermes model # Interactive selection
Or specify in the configuration file:
# ~/.hermes/config.yaml provider: name: openrouter model: anthropic/claude-sonnet-4-20250514
* * *
## Terminal Configuration
### Terminal Backends
The terminal tool can execute commands in different environments:
| Backend | Description | Use Case |
| --- | --- | --- |
| `local` | Run on local machine (default) | Development, trusted tasks |
| `docker` | Isolated container | Security, reproducibility |
| `ssh` | Remote server | Sandbox, keep agent away from your own code |
| `singularity` | HPC container | Cluster computing, no root |
| `modal` | Cloud execution | Serverless, elastic scaling |
| `daytona` | Cloud sandbox workspace | Persistent remote development environment |
### Configuration Examples
# ~/.hermes/config.yaml terminal: backend: local # or: docker, ssh, singularity, modal, daytona cwd: "." # Working directory timeout: 180 # Command timeout (seconds)
#### Docker Backend
terminal: backend: docker docker_image: python:3.11-slim
#### SSH Backend
terminal: backend: ssh# Set credentials in ~/.hermes/.env TERMINAL_SSH_HOST=my-server.example.com TERMINAL_SSH_USER=myuser TERMINAL_SSH_KEY=~/.ssh/id_rsa
#### Container Resources
terminal: backend: docker container_cpu: 1 # CPU cores (default: 1) container_memory: 5120 # Memory MB (default: 5GB) container_disk: 51200 # Disk MB (default: 50GB) container_persistent: true # Persistent filesystem across sessions
#### Container Security
All container backends run with security hardening:
* Read-only root filesystem (Docker)
* Drop all Linux capabilities
* No privilege escalation
* PID limit (256 processes)
* Full namespace isolation
* * *
## Tool Configuration
### Configure Toolsets
# Use specific toolsets hermes chat --toolsets "web,terminal"# Configure tools per platform (interactive) hermes tools
Common toolsets include: `web`, `terminal`, `file`, `browser`, `vision`, `image_gen`, `skills`, `tts`, `todo`, `memory`, `session_search`, `cronjob`, `code_execution`, `delegation`, `homeassistant`, and `rl`.
### Available Tool Categories
| Category | Examples | Description |
| --- | --- | --- |
| Web | `web_search`, `web_extract` | Search the web and extract page content |
| Terminal & File | `terminal`, `process`, `read_file`, `patch` | Execute commands and manipulate files |
| Browser | `browser_navigate`, `browser_snapshot` | Interactive browser automation |
| Media | `vision_analyze`, `image_generate`, `text_to_speech` | Multimodal analysis and generation |
| Agent Orchestration | `todo`, `clarify`, `execute_code`, `delegate_task` | Planning, clarification, code execution, and sub-agent delegation |
| Memory & Recall | `memory`, `session_search` | Persistent memory and session search |
| Automation & Delivery | `cronjob`, `send_message` | Scheduled tasks and outbound message delivery |
* * *
## Display Settings
# ~/.hermes/config.yaml display: busy_input_mode: "interrupt" # or "queue" tool_preview_length: 0 # 0 = unlimited bell_on_complete: false
* **busy_input_mode**: Behavior when pressing Enter while the agent is working
* **tool_preview_length**: Maximum characters for tool preview lines
* **bell_on_complete**: Whether to ring the bell when a task is completed
* * *
## Quick Commands
Define custom commands to execute shell commands instantly without invoking the LLM:
# ~/.hermes/config.yaml quick_commands: status: type: exec command: systemctl status hermes-agent gpu: type: exec command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader cdh: type: cd path: ~/projects/hermes-agent
Then type `/status` or `/gpu` in any chat.
* * *
## Personality Settings
# ~/.hermes/config.yaml personalities: helpful: "You are a helpful, friendly AI assistant." kawaii: "You are a kawaii assistant! Use cute expressions..." pirate: "Arrr! Ye be talkin' to Captain Hermes..." # Add your own!
Activate using commands like `/personality pirate`.
* * *
## Context Compression
# ~/.hermes/config.yaml compression: enabled: true threshold: 0.50 # Compress at 50% of context limit summary_model: "google/gemini-3-flash-preview"
* * *
## CLI Commands
| Command | Description |
| --- | --- |
| `hermes config set ` | Set configuration value |
| `hermes config get ` | Get configuration value |
| `hermes config list` | List all configurations |
| `hermes config check` | Check configuration integrity |
| `hermes config migrate` | Migrate configuration to new version |
> **Tip:** Run `hermes doctor` to diagnose configuration issues and get fix suggestions.
YouTip