Hermes Agent Cli
Hermes Agent's CLI is a complete Terminal User Interface (TUI), not a web interface.
Hermes Agent CLI supports multi-line editing, slash command auto-completion, conversation history, interrupt redirection, and streaming tool outputβdesigned specifically for users who prefer working in the terminal.
* * *
## Running the CLI
# Start interactive session (default) hermes # Single query mode (non-interactive) hermes chat -q "Hello"# Specify model hermes chat --model "anthropic/claude-sonnet-4"# Specify provider hermes chat --provider nous # Use Nous Portal hermes chat --provider openrouter # Force use OpenRouter# Specify toolsets hermes chat --toolsets "web,terminal,skills"# Preload one or more skills at startup hermes -s hermes-agent-dev,github-auth hermes chat -s github-pr-workflow -q "open a draft PR"# Resume previous session hermes --continue # Resume most recent CLI session (-c) hermes --resume <session_id> # Resume specific session by ID (-r)# Verbose mode (debug output) hermes chat --verbose # Isolated git worktree (for running multiple agents in parallel) hermes -w # Run interactively in worktree hermes -w -q "Fix issue #123" # Single query in worktree
* * *
## Interface Layout
The welcome banner displays your model, terminal backend, working directory, available tools, and installed skills at a glance.
### Status Bar
The status bar sits above the input area and updates in real-time:
claude-sonnet-4-20250514 β 12.4K/200K β [ββββββββββ] 6% β $0.06 β 15m
| Element | Description |
| --- | --- |
| Model name | Currently used model (truncated if over 26 characters) |
| Token count | Used context tokens / maximum context window |
| Context progress bar | Visual fill indicator with color-coded thresholds |
| Cost | Estimated session cost (displays n/a for unknown or zero-priced models) |
| Duration | Elapsed session time |
The status bar adapts to terminal widthβfull layout at β₯ 76 columns, compact layout at 52β75 columns, and only model and duration below 52 columns.
**Context color coding:**
| Color | Threshold | Meaning |
| --- | --- | --- |
| Green | < 50% | Plenty of space |
| Yellow | 50β80% | Filling up soon |
| Orange | 80β95% | Approaching limit |
| Red | β₯ 95% | About to overflowβsuggest using /compress |
Use the `/usage` command to view detailed cost breakdowns, including categorized costs (input vs output tokens).
### Session Resume Display
When resuming a previous session (`hermes -c` or `hermes --resume `), a "Previous Conversation" panel appears between the banner and input prompt, showing a condensed summary of conversation history.
* * *
## Keyboard Shortcuts
| Key | Action |
| --- | --- |
| Enter | Send message |
| Alt+Enter or Ctrl+J | New line (multi-line input) |
| Alt+V | Paste image from clipboard (requires terminal support) |
| Ctrl+V | Paste text, and append image from clipboard if available |
| Ctrl+B | Start/stop voice recording when voice mode is enabled |
| Ctrl+C | Interrupt agent (double-press within 2 seconds to force quit) |
| Ctrl+D | Exit |
| Ctrl+Z | Suspend Hermes to background (Unix only). Run `fg` in shell to resume. |
| Tab | Accept auto-completion suggestion or slash command auto-completion |
* * *
## Slash Commands
Type `/` to see the auto-completion dropdown menu.
Hermes supports numerous CLI slash commands, dynamic skill commands, and user-defined quick commands.
| Command | Description |
| --- | --- |
| `/help` | Display command help |
| `/model` | Display or change current model |
| `/tools` | List currently available tools |
| `/skills browse` | Browse skill hub and official optional skills |
| `/background ` | Run prompt in independent background session |
| `/skin` | Display or switch active CLI skin |
| `/voice on` | Enable CLI voice mode |
| `/voice tts` | Toggle voice playback for Hermes responses |
| `/reasoning high` | Increase reasoning depth |
| `/title My Session` | Name the current session |
**Tip:** Commands are case-insensitiveβ`/HELP` and `/help` work the same. Installed skills also automatically register as slash commands.
* * *
## Personality Settings
Set predefined personalities to change the agent's tone:
/personality pirate /personality kawaii /personality concise
Built-in personalities include: `helpful`, `concise`, `technical`, `creative`, `teacher`, `kawaii`, `catgirl`, `pirate`, `shakespeare`, `surfer`, `noir`, `uwu`, `philosopher`, `hype`.
You can also define custom personalities in `~/.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!
* * *
## Multi-line Input
There are two ways to enter multi-line messages:
* **Alt+Enter or Ctrl+J** β Insert new line
* **Backslash continuation** β Add `\` at end of line to continue:
β― Write a function that:\ 1. Takes a list of numbers\ 2. Returns the sum
**Tip:** Multi-line text pasting is supportedβuse Alt+Enter or Ctrl+J to insert line breaks, or paste directly.
* * *
## Interrupting the Agent
You can interrupt the agent at any time:
* Type new message + Enter β it will interrupt and process your new instruction
* Ctrl+C β Interrupt current operation (press twice within 2 seconds to force quit)
Ongoing terminal commands are terminated immediately.
### Busy Input Mode
The `display.busy_input_mode` configuration controls what happens when you press Enter while the agent is working:
| Mode | Behavior |
| --- | --- |
| `"interrupt"` (default) | Your message interrupts current operation and is processed immediately |
| `"queue"` | Your message is silently queued and sent as next turn after agent completes |
# ~/.hermes/config.yaml display: busy_input_mode: "queue" # or "interrupt" (default)
### Suspend to Background
On Unix systems, press **Ctrl+Z** to suspend Hermes to background. Type `fg` in shell to resume the session exactly where you left off. This is not supported on Windows.
* * *
## Tool Progress Display
The CLI shows animated feedback while the agent is working:
**Thinking animation** (during API calls):
β (qβ’ΜοΈΏβ’Μq) pondering... (1.2s) β (β_β) contemplating... (2.4s) β§Ω©(ΛαΛ*)Ωβ§ got it! (3.1s)
**Tool execution output:**
β terminal `ls -la` (0.3s) β web_search (1.2s) β web_extract (2.1s)
Use `/verbose` to cycle through display modes: `off β new β all β verbose`.
### Tool Preview Length
The `display.tool_preview_length` configuration controls the maximum number of characters displayed in tool call preview lines. Default is 0, meaning unlimited.
# ~/.hermes/config.yaml display: tool_preview_length: 80 # Truncate tool previews to 80 characters
* * *
## Session Management
### Resuming Sessions
When you exit a CLI session, a resume command is printed:
Resume this session with: hermes --resume 20260225_143052_a1b2c3 Session: 20260225_143052_a1b2c3 Duration: 12m 34sMessages: 28 (5 user, 18 tool calls)
**Resume options:**
hermes --continue # Resume most recent CLI session hermes -c # Short form hermes -c "my project" # Resume named session hermes --resume 20260225_143052_a1b2c3 # Resume by ID hermes --resume "refactoring auth" # Resume by title
Resuming fully restores conversation history from SQLite.
### Session Storage
CLI sessions are stored in Hermes's SQLite state database at `~/.hermes/state.db`. The database retains:
* Session metadata (ID, title, timestamps, token counters)
* Message history
* Compression/resume session lineage
* Full-text search index
### Context Compression
Long conversations are automatically summarized when approaching context limits:
# In ~/.hermes/config.yaml compression: enabled: true threshold: 0.50 # Default compress at 50% of context limit summary_model: "google/gemini-3-flash-preview"
When compression triggers, middle turns are summarized while the first 3 and last 4 turns are always preserved.
* * *
## Background Sessions
Run prompts in independent background sessions while continuing to use the CLI for other work:
/background Analyze the logs in /var/log and summarize any errors from today
Hermes immediately acknowledges the task and returns to the prompt:
Background task #1 started: "Analyze the logs in /var/log and summarize..." Task ID: bg_143022_a1b2c3
### How It Works
Each `/background` prompt spawns a completely independent agent session in a daemon thread:
* **Isolated conversation** β Background agent knows nothing of your current session's history
* **Same configuration** β Background agent inherits current session's configuration
* **Non-blocking** β Your foreground session remains fully interactive
* **Multiple tasks** β You can run multiple background tasks simultaneously
### Use Cases
* **Long-running research** β Background research while you write code
* **File processing** β Analyze files while you continue conversation
* **Parallel investigation** β Launch multiple background tasks to explore different angles simultaneously
**Tip:** Background sessions don't appear in your main conversation history. They are independent tasks with their own task IDs.
* * *
## Quiet Mode
By default, the CLI runs in quiet mode:
* Suppresses verbose tool log output
* Enables kawaii-style animated feedback
* Keeps output concise and user-friendly
To view debug output:
hermes chat --verbose
YouTip