CLI Interface
anchor alias
anchor alias
CLI Interface
Hermes Agent의 CLI는 web UI가 아니라 terminal에서 동작하는 full terminal user interface입니다. multi-line editing, slash-command autocomplete, conversation history, interrupt-and-redirect, streaming tool output을 지원합니다. terminal을 주 작업 공간으로 쓰는 사용자를 위해 설계되었습니다.
Hermes에는 modal overlay, mouse selection, non-blocking input을 갖춘 modern TUI도 포함되어 있습니다. hermes --tui로 실행할 수 있으며, 자세한 내용은 TUI guide를 참고하세요.
CLI 실행
# Interactive session 시작(기본)
hermes
# Single query mode(non-interactive)
hermes chat -q "Hello"
# 특정 model 사용
hermes chat --model "anthropic/claude-sonnet-4"
# 특정 provider 사용
hermes chat --provider nous # Nous Portal 사용
hermes chat --provider openrouter # OpenRouter 강제
# 특정 toolsets 사용
hermes chat --toolsets "web,terminal,skills"
# 하나 이상의 skill을 미리 load해서 시작
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"
# 이전 session 재개
hermes --continue # 가장 최근 CLI session 재개(-c)
hermes --resume <session_id> # 특정 session ID로 재개(-r)
# Verbose mode(debug output)
hermes chat --verbose
# 격리된 git worktree(여러 agent를 병렬 실행할 때)
hermes -w # worktree에서 interactive mode
hermes -w -q "Fix issue #123" # worktree에서 single query
Interface layout
<p className="docs-figure-caption">Hermes CLI banner, conversation stream, fixed input prompt를 text art 대신 안정적인 문서용 figure로 표현한 이미지입니다.</p>
welcome banner는 model, terminal backend, working directory, available tools, installed skills를 한눈에 보여줍니다.
Status bar
input area 위에는 실시간으로 갱신되는 persistent status bar가 있습니다.
claude-sonnet-4-20250514 12.4K/200K [context 6%] $0.06 15m
| Element | Description |
|---|---|
| Model name | 현재 model. 26자를 넘으면 줄여 표시 |
| Token count | 사용한 context tokens / 최대 context window |
| Context bar | threshold에 따라 색이 바뀌는 시각적 fill indicator |
| Cost | 예상 session cost. 가격을 알 수 없거나 무료 model이면 n/a |
| Duration | session 경과 시간 |
status bar는 terminal width에 맞춰 layout을 바꿉니다. 76 columns 이상에서는 전체 layout, 52-75 columns에서는 compact layout, 52 columns 미만에서는 model과 duration만 표시하는 minimal layout을 사용합니다.
Context color coding:
| Color | Threshold | Meaning |
|---|---|---|
| Green | < 50% | 여유가 충분함 |
| Yellow | 50-80% | context가 차는 중 |
| Orange | 80-95% | limit에 가까워짐 |
| Red | >= 95% | overflow 직전. /compress 고려 |
/usage를 실행하면 input/output tokens처럼 category별 cost까지 포함한 상세 breakdown을 볼 수 있습니다.
Session resume display
이전 session(hermes -c 또는 hermes --resume <id>)을 재개하면 banner와 input prompt 사이에 "Previous Conversation" panel이 나타납니다. 이 panel은 conversation history를 간결하게 요약합니다. 자세한 내용과 설정은 Sessions - Conversation Recap on Resume을 참고하세요.
Keybindings
| Key | Action |
|---|---|
Enter | message 전송 |
Alt+Enter, Ctrl+J, Shift+Enter | 새 줄 삽입(multi-line input). Shift+Enter는 terminal이 Enter와 구분되는 sequence를 보낼 때만 동작합니다. Windows Terminal에서는 Alt+Enter가 fullscreen toggle로 terminal에 잡히므로 Ctrl+Enter 또는 Ctrl+J를 사용하세요. |
Alt+V | terminal이 지원하는 경우 clipboard image 붙여넣기 |
Ctrl+V | text를 붙여넣고, 가능한 경우 clipboard image도 opportunistic attach |
Ctrl+B | voice mode가 켜져 있을 때 음성 녹음 시작/중지(voice.record_key, 기본값 ctrl+b) |
Ctrl+G | 현재 input buffer를 $EDITOR(vim/nvim/nano/VS Code 등)에서 열기. 저장 후 종료하면 편집된 text가 다음 prompt로 전송됩니다. 긴 prompt에 유용합니다. |
Ctrl+X Ctrl+E | external editor용 Emacs-style alternate binding. Ctrl+G와 같은 동작 |
Ctrl+C | agent interrupt. 2초 안에 두 번 누르면 강제 종료 |
Ctrl+D | 종료 |
Ctrl+Z | Hermes를 background로 suspend(Unix 전용). shell에서 fg로 재개 |
Tab | auto-suggestion(ghost text) 수락 또는 slash commands autocomplete |
Multiline paste preview. 여러 줄 block을 붙여넣으면 CLI는 전체 payload를 scrollback에 그대로 쏟아내지 않고 [pasted: 47 lines, 1,842 chars - press Enter to send]처럼 compact single-line preview를 표시합니다. 전송되는 실제 content는 전체 원문입니다.
최종 응답의 Markdown 정리. CLI는 final agent reply에서 지나치게 verbose한 markdown fences와 **bold** / *italic* wrapper를 정리해 terminal prose로 읽기 좋게 표시합니다. Code blocks와 lists는 보존됩니다. gateway platform이나 tool result에는 적용되지 않으며, 해당 surface가 native rendering에 필요한 markdown을 유지합니다.
Slash commands
/를 입력하면 autocomplete dropdown이 열립니다. Hermes는 built-in CLI slash commands, dynamic skill commands, user-defined quick commands를 폭넓게 지원합니다.
일반적인 예:
| Command | Description |
|---|---|
/help | command help 표시 |
/model | 현재 model 표시 또는 변경 |
/tools | 현재 사용 가능한 tools 목록 표시 |
/skills browse | skills hub와 official optional skills 탐색 |
/background <prompt> | 별도 background session에서 prompt 실행 |
/skin | active CLI skin 표시 또는 전환 |
/voice on | CLI voice mode 활성화. Ctrl+B로 녹음 |
/voice tts | Hermes reply 음성 재생 전환 |
/reasoning high | reasoning effort 증가 |
/title My Session | 현재 session 이름 지정 |
전체 built-in CLI 및 messaging command 목록은 Slash Commands Reference를 참고하세요.
setup, providers, silence tuning, messaging/Discord voice usage는 Voice Mode를 참고하세요.
commands는 대소문자를 구분하지 않습니다. /HELP는 /help와 같습니다. 설치된 skills도 자동으로 slash commands가 됩니다.
Quick commands
LLM을 호출하지 않고 즉시 shell command를 실행하는 custom command를 정의할 수 있습니다. CLI와 messaging platforms(Telegram, Discord 등)에서 모두 동작합니다.
# ~/.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
restart:
type: alias
target: /gateway restart
이제 어떤 chat에서든 /status, /gpu, /restart를 입력할 수 있습니다. 더 많은 예시는 Configuration guide를 참고하세요.
실행 시 skills preload
session에서 사용할 skills를 이미 알고 있다면 launch 시점에 전달할 수 있습니다.
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -s github-auth
Hermes는 첫 turn 전에 각 skill을 session prompt에 load합니다. 같은 flag는 interactive mode와 single-query mode 모두에서 동작합니다.
Skill slash commands
~/.hermes/skills/에 설치된 모든 skill은 자동으로 slash command로 등록됩니다. skill name이 command가 됩니다.
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
# skill name만 입력하면 해당 skill을 load하고 agent가 필요한 내용을 묻습니다.
/excalidraw
Personalities
agent tone을 바꾸는 predefined personality를 설정할 수 있습니다.
/personality pirate
/personality kawaii
/personality concise
내장 personalities에는 helpful, concise, technical, creative, teacher, kawaii, catgirl, pirate, shakespeare, surfer, noir, uwu, philosopher, hype가 포함됩니다.
~/.hermes/config.yaml에서 custom personality도 정의할 수 있습니다.
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
multi-line message를 입력하는 방법은 두 가지입니다.
Alt+Enter,Ctrl+J,Shift+Enter- 새 줄 삽입- Backslash continuation - 줄 끝에
\를 붙여 계속 입력
Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
multi-line text 붙여넣기도 지원합니다. 위 newline key를 쓰거나, content를 그대로 붙여넣으면 됩니다.
Shift+Enter compatibility
대부분의 terminal은 기본적으로 Enter와 Shift+Enter에 같은 byte sequence를 보내므로 application이 둘을 구분할 수 없습니다. Hermes는 terminal이 Kitty keyboard protocol 또는 xterm의 modifyOtherKeys mode로 별도 sequence를 보낼 때만 Shift+Enter를 인식합니다.
| Terminal | Status |
|---|---|
| Kitty, foot, WezTerm, Ghostty | distinct Shift+Enter가 기본 활성화 |
| iTerm2(recent), Alacritty, VS Code terminal, Warp | settings에서 Kitty protocol을 켜면 지원 |
| Windows Terminal Preview 1.25+ | settings에서 Kitty protocol을 켜면 지원 |
| macOS Terminal.app, stock Windows Terminal(stable) | 미지원. Shift+Enter와 Enter를 구분할 수 없음 |
terminal이 구분하지 못하는 경우에도 Alt+Enter와 Ctrl+J는 계속 동작합니다. Windows Terminal에서는 Alt+Enter가 terminal의 fullscreen toggle로 잡혀 Hermes까지 전달되지 않습니다. newline에는 Ctrl+Enter(Ctrl+J로 전달됨) 또는 Ctrl+J를 직접 사용하세요.
Agent interrupt
agent는 언제든 중단할 수 있습니다.
- agent가 작업 중일 때 새 message를 입력하고 Enter - 현재 작업을 interrupt하고 새 지시를 처리합니다.
Ctrl+C- 현재 operation을 interrupt합니다. 2초 안에 두 번 누르면 강제 종료합니다.- 진행 중인 terminal command는 즉시 kill됩니다. SIGTERM 후 1초 뒤 SIGKILL을 보냅니다.
- interrupt 중 입력한 여러 message는 하나의 prompt로 결합됩니다.
Busy input mode
display.busy_input_mode config key는 agent가 작업 중일 때 Enter를 누르면 어떤 일이 일어나는지 제어합니다.
| Mode | Behavior |
|---|---|
"interrupt"(기본값) | 사용자의 message가 현재 operation을 interrupt하고 즉시 처리됩니다. |
"queue" | message를 조용히 queue에 넣고, agent가 끝난 뒤 다음 turn으로 보냅니다. |
"steer" | message를 /steer처럼 현재 run에 주입합니다. 다음 tool call 뒤 agent에 도착하며, interrupt도 새 turn도 만들지 않습니다. |
# ~/.hermes/config.yaml
display:
busy_input_mode: "steer" # 또는 "queue" 또는 "interrupt"(기본값)
"queue" mode는 진행 중인 작업을 실수로 취소하지 않고 follow-up message를 준비하고 싶을 때 유용합니다. "steer" mode는 "actually, also check the tests"처럼 작업 중간에 방향을 조정하되 interrupt하고 싶지 않을 때 유용합니다. 알 수 없는 값은 "interrupt"로 fallback됩니다.
"steer"에는 자동 fallback이 두 가지 있습니다. agent가 아직 시작되지 않았거나 image가 첨부된 경우 message는 "queue" 동작으로 fallback되어 손실되지 않습니다.
CLI 안에서도 변경할 수 있습니다.
/busy queue
/busy steer
/busy interrupt
/busy status
Hermes가 작업 중일 때 처음으로 Enter를 누르면, Hermes는 /busy knob을 설명하는 한 줄짜리 reminder를 표시합니다. 설치당 한 번만 표시되며, config.yaml의 onboarding.seen.busy_input_prompt flag가 이를 기억합니다. 다시 보고 싶다면 해당 key를 삭제하세요.
Background로 suspend
Unix system에서는 **Ctrl+Z**를 눌러 다른 terminal process처럼 Hermes를 background로 suspend할 수 있습니다. shell은 다음과 같은 confirmation을 출력합니다.
Hermes Agent has been suspended. Run `fg` to bring Hermes Agent back.
shell에서 fg를 입력하면 session을 정확히 중단했던 지점으로 되돌립니다. Windows에서는 지원되지 않습니다.
Tool progress display
CLI는 agent가 작업하는 동안 animated feedback을 보여줍니다.
Thinking animation(API call 중):
pondering... (1.2s)
contemplating... (2.4s)
got it! (3.1s)
Tool execution feed:
terminal `ls -la` (0.3s)
web_search (1.2s)
web_extract (2.1s)
/verbose로 display mode를 순환할 수 있습니다: off -> new -> all -> verbose. 이 command는 messaging platform에서도 활성화할 수 있습니다. 자세한 내용은 configuration을 참고하세요.
Tool preview length
display.tool_preview_length config key는 tool call preview line에 표시할 최대 character 수를 제어합니다. 예를 들어 file path나 terminal command가 길 때 사용합니다. 기본값은 0이며, 제한이 없다는 뜻입니다. full paths와 commands가 표시됩니다.
# ~/.hermes/config.yaml
display:
tool_preview_length: 80 # tool preview를 80 chars로 자름(0 = no limit)
좁은 terminal을 쓰거나 tool arguments에 매우 긴 file path가 포함될 때 유용합니다.
Session management
Sessions 재개
CLI session을 종료하면 resume command가 출력됩니다.
Resume this session with:
hermes --resume 20260225_143052_a1b2c3
Session: 20260225_143052_a1b2c3
Duration: 12m 34s
Messages: 28 (5 user, 18 tool calls)
Resume options:
hermes --continue # 가장 최근 CLI session 재개
hermes -c # short form
hermes -c "my project" # 이름 있는 session 재개(lineage에서 최신)
hermes --resume 20260225_143052_a1b2c3 # 특정 session ID로 재개
hermes --resume "refactoring auth" # title로 재개
hermes -r 20260225_143052_a1b2c3 # short form
resume은 SQLite에서 전체 conversation history를 복원합니다. agent는 이전 messages, tool calls, responses를 모두 볼 수 있습니다. 마치 떠난 적이 없는 것처럼 이어집니다.
chat 안에서 /title My Session Name을 실행해 현재 session 이름을 지정하거나, command line에서 hermes sessions rename <id> <title>을 사용할 수 있습니다. 과거 session을 둘러보려면 hermes sessions list를 사용하세요.
Session storage
CLI sessions는 Hermes SQLite state database인 ~/.hermes/state.db에 저장됩니다. database에는 다음이 저장됩니다.
- session metadata(ID, title, timestamps, token counters)
- message history
- compressed/resumed sessions 사이의 lineage
session_search가 사용하는 full-text search indexes
일부 messaging adapter는 database 옆에 platform별 transcript files도 유지하지만, CLI 자체는 SQLite session store에서 재개합니다.
Context compression
긴 대화가 context limit에 가까워지면 자동으로 요약됩니다.
# ~/.hermes/config.yaml
compression:
enabled: true
threshold: 0.50 # 기본값: context limit의 50%에서 compression
# Summarization model은 auxiliary 아래에서 설정
auxiliary:
compression:
model: "" # 비워 두면 main chat model 사용(기본). 또는 저렴하고 빠른 model로 고정 가능.
compression이 실행되면 중간 turn들이 요약되고, 첫 3 turn과 마지막 20 turn은 항상 보존됩니다.
Background sessions
다른 작업을 계속하면서 별도 background session에서 prompt를 실행할 수 있습니다.
/background Analyze the logs in /var/log and summarize any errors from today
Hermes는 즉시 task를 확인하고 foreground prompt를 돌려줍니다.
Background task #1 started: "Analyze the logs in /var/log and summarize..."
Task ID: bg_143022_a1b2c3
동작 방식
각 /background prompt는 daemon thread 안에서 완전히 별도의 agent session을 만듭니다.
- Isolated conversation - background agent는 현재 session history를 알지 못합니다. 사용자가 제공한 prompt만 받습니다.
- Same configuration - background agent는 현재 session의 model, provider, toolsets, reasoning settings, fallback model을 상속합니다.
- Non-blocking - foreground session은 계속 interactive 상태입니다. 채팅하거나 command를 실행하거나 background task를 더 시작할 수 있습니다.
- Multiple tasks - 여러 background task를 동시에 실행할 수 있습니다. 각 task는 번호가 붙은 ID를 받습니다.
Results
background task가 끝나면 결과가 terminal panel로 표시됩니다.
Hermes (background #1)
Found 3 errors in syslog from today:
1. OOM killer invoked at 03:22 - killed process nginx
2. Disk I/O error on /dev/sda1 at 07:15
3. Failed SSH login attempts from 192.168.1.50 at 14:30
task가 실패하면 error notification이 표시됩니다. display.bell_on_complete가 설정되어 있으면 task가 끝날 때 terminal bell이 울립니다.
Use cases
- Long-running research - code를 작업하는 동안
/background research the latest developments in quantum error correction - File processing - 대화를 계속하면서
/background analyze all Python files in this repo and list any security issues - Parallel investigations - 서로 다른 관점을 동시에 탐색하도록 background task 여러 개 시작
background sessions는 main conversation history에 나타나지 않습니다. 자체 task ID(예: bg_143022_a1b2c3)를 가진 standalone sessions입니다.
Quiet mode
기본적으로 CLI는 quiet mode로 실행됩니다.
- tools의 verbose logging을 억제합니다.
- animated feedback을 활성화합니다.
- output을 깔끔하고 사용하기 쉽게 유지합니다.
debug output이 필요하면:
hermes chat --verbose