- Updated `.cursorrules` to provide a comprehensive overview of the interactive CLI, including its architecture, key components, and command handling. - Expanded `README.md` to introduce the CLI features, quick start instructions, and detailed command descriptions for user guidance. - Added `docs/cli.md` to document CLI usage, configuration, and animated feedback, ensuring clarity for users and developers. - Revised `docs/tools.md` to include support for SSH backend in terminal tools, enhancing the documentation for terminal execution options.
6.3 KiB
CLI
The Hermes Agent CLI provides an interactive terminal interface for working with the agent.
Running the CLI
# Basic usage
./hermes
# With specific model
./hermes --model "anthropic/claude-sonnet-4"
# With specific toolsets
./hermes --toolsets "web,terminal,skills"
# Verbose mode
./hermes --verbose
Architecture
The CLI is implemented in cli.py and uses:
- Rich - Welcome banner with ASCII art and styled panels
- prompt_toolkit - Fixed input area with command history
- KawaiiSpinner - Animated feedback during operations
┌─────────────────────────────────────────────────┐
│ HERMES-AGENT ASCII Logo │
│ ┌─────────────┐ ┌────────────────────────────┐ │
│ │ Caduceus │ │ Model: claude-opus-4.5 │ │
│ │ ASCII Art │ │ Terminal: local │ │
│ │ │ │ Working Dir: /home/user │ │
│ │ │ │ Available Tools: 19 │ │
│ │ │ │ Available Skills: 12 │ │
│ └─────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────┘
│ Conversation output scrolls here... │
│ │
│ User: Hello! │
│ ────────────────────────────────────────────── │
│ (◕‿◕✿) 🧠 pondering... (2.3s) │
│ ✧٩(ˊᗜˋ*)و✧ got it! (2.3s) │
│ │
│ Assistant: Hello! How can I help you today? │
├─────────────────────────────────────────────────┤
│ ❯ [Fixed input area at bottom] │
└─────────────────────────────────────────────────┘
Commands
| Command | Description |
|---|---|
/help |
Show available commands |
/tools |
List available tools grouped by toolset |
/toolsets |
List available toolsets with descriptions |
/model [name] |
Show or change the current model |
/prompt [text] |
View/set/clear custom system prompt |
/personality [name] |
Set a predefined personality |
/clear |
Clear screen and reset conversation |
/reset |
Reset conversation only (keep screen) |
/history |
Show conversation history |
/save |
Save current conversation to file |
/config |
Show current configuration |
/quit |
Exit the CLI (also: /exit, /q) |
Configuration
The CLI is configured via cli-config.yaml. Copy from cli-config.yaml.example:
cp cli-config.yaml.example cli-config.yaml
Model Configuration
model:
default: "anthropic/claude-opus-4.5"
base_url: "https://openrouter.ai/api/v1"
Terminal Configuration
The CLI supports multiple terminal backends:
# Local execution (default)
terminal:
env_type: "local"
cwd: "." # Current directory
# SSH remote execution (sandboxed - agent can't touch its own code)
terminal:
env_type: "ssh"
cwd: "/home/myuser/project"
ssh_host: "my-server.example.com"
ssh_user: "myuser"
ssh_key: "~/.ssh/id_rsa"
# Docker container
terminal:
env_type: "docker"
docker_image: "python:3.11"
# Singularity/Apptainer (HPC)
terminal:
env_type: "singularity"
singularity_image: "docker://python:3.11"
# Modal cloud
terminal:
env_type: "modal"
modal_image: "python:3.11"
Toolsets
Control which tools are available:
# Enable all tools
toolsets:
- all
# Or enable specific toolsets
toolsets:
- web
- terminal
- skills
Available toolsets: web, search, terminal, browser, vision, image_gen, skills, moa, debugging, safe
Personalities
Predefined personalities for the /personality command:
agent:
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!
Built-in personalities:
helpful,concise,technical,creative,teacherkawaii,catgirl,pirate,shakespeare,surfernoir,uwu,philosopher,hype
Animated Feedback
The CLI provides animated feedback during operations:
Thinking Animation
During API calls, shows animated spinner with thinking verbs:
◜ (。•́︿•̀。) pondering... (1.2s)
◠ (⊙_⊙) contemplating... (2.4s)
✧٩(ˊᗜˋ*)و✧ got it! (3.1s)
Tool Execution Animation
Each tool type has unique animations:
⠋ (◕‿◕✿) 🔍 web_search... (0.8s)
▅ (≧◡≦) 💻 terminal... (1.2s)
🌓 (★ω★) 🌐 browser_navigate... (2.1s)
✧ (✿◠‿◠) 🎨 image_generate... (4.5s)
Multi-line Input
For multi-line input, end a line with \ to continue:
❯ Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
Environment Variable Priority
For terminal settings, cli-config.yaml takes precedence over .env:
cli-config.yaml(highest priority in CLI).envfile- System environment variables
- Default values
This allows you to have different terminal configs for CLI vs batch processing.
Session Management
- History: Command history is saved to
~/.hermes_history - Conversations: Use
/saveto export conversations - Reset: Use
/clearfor full reset,/resetto just clear history
Quiet Mode
The CLI runs in "quiet mode" (HERMES_QUIET=1), which:
- Suppresses verbose logging from tools
- Enables kawaii-style animated feedback
- Hides terminal environment warnings
- Keeps output clean and user-friendly
For verbose output (debugging), use:
./hermes --verbose