본문으로 건너뛰기

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

Stylized preview of the Hermes CLI layout showing the banner, conversation area, and fixed input prompt.

<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
ElementDescription
Model name현재 model. 26자를 넘으면 줄여 표시
Token count사용한 context tokens / 최대 context window
Context barthreshold에 따라 색이 바뀌는 시각적 fill indicator
Cost예상 session cost. 가격을 알 수 없거나 무료 model이면 n/a
Durationsession 경과 시간

status bar는 terminal width에 맞춰 layout을 바꿉니다. 76 columns 이상에서는 전체 layout, 52-75 columns에서는 compact layout, 52 columns 미만에서는 model과 duration만 표시하는 minimal layout을 사용합니다.

Context color coding:

ColorThresholdMeaning
Green< 50%여유가 충분함
Yellow50-80%context가 차는 중
Orange80-95%limit에 가까워짐
Red>= 95%overflow 직전. /compress 고려

/usage를 실행하면 input/output tokens처럼 category별 cost까지 포함한 상세 breakdown을 볼 수 있습니다.

Session resume display

이전 session(hermes -c 또는 hermes --resume &lt;id&gt;)을 재개하면 banner와 input prompt 사이에 "Previous Conversation" panel이 나타납니다. 이 panel은 conversation history를 간결하게 요약합니다. 자세한 내용과 설정은 Sessions - Conversation Recap on Resume을 참고하세요.

Keybindings

KeyAction
Entermessage 전송
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+Vterminal이 지원하는 경우 clipboard image 붙여넣기
Ctrl+Vtext를 붙여넣고, 가능한 경우 clipboard image도 opportunistic attach
Ctrl+Bvoice mode가 켜져 있을 때 음성 녹음 시작/중지(voice.record_key, 기본값 ctrl+b)
Ctrl+G현재 input buffer를 $EDITOR(vim/nvim/nano/VS Code 등)에서 열기. 저장 후 종료하면 편집된 text가 다음 prompt로 전송됩니다. 긴 prompt에 유용합니다.
Ctrl+X Ctrl+Eexternal editor용 Emacs-style alternate binding. Ctrl+G와 같은 동작
Ctrl+Cagent interrupt. 2초 안에 두 번 누르면 강제 종료
Ctrl+D종료
Ctrl+ZHermes를 background로 suspend(Unix 전용). shell에서 fg로 재개
Tabauto-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를 폭넓게 지원합니다.

일반적인 예:

CommandDescription
/helpcommand help 표시
/model현재 model 표시 또는 변경
/tools현재 사용 가능한 tools 목록 표시
/skills browseskills hub와 official optional skills 탐색
/background &lt;prompt&gt;별도 background session에서 prompt 실행
/skinactive CLI skin 표시 또는 전환
/voice onCLI voice mode 활성화. Ctrl+B로 녹음
/voice ttsHermes reply 음성 재생 전환
/reasoning highreasoning 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를 입력하는 방법은 두 가지입니다.

  1. Alt+Enter, Ctrl+J, Shift+Enter - 새 줄 삽입
  2. 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은 기본적으로 EnterShift+Enter에 같은 byte sequence를 보내므로 application이 둘을 구분할 수 없습니다. Hermes는 terminal이 Kitty keyboard protocol 또는 xterm의 modifyOtherKeys mode로 별도 sequence를 보낼 때만 Shift+Enter를 인식합니다.

TerminalStatus
Kitty, foot, WezTerm, Ghosttydistinct Shift+Enter가 기본 활성화
iTerm2(recent), Alacritty, VS Code terminal, Warpsettings에서 Kitty protocol을 켜면 지원
Windows Terminal Preview 1.25+settings에서 Kitty protocol을 켜면 지원
macOS Terminal.app, stock Windows Terminal(stable)미지원. Shift+EnterEnter를 구분할 수 없음

terminal이 구분하지 못하는 경우에도 Alt+EnterCtrl+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를 누르면 어떤 일이 일어나는지 제어합니다.

ModeBehavior
"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
First-touch hint

Hermes가 작업 중일 때 처음으로 Enter를 누르면, Hermes는 /busy knob을 설명하는 한 줄짜리 reminder를 표시합니다. 설치당 한 번만 표시되며, config.yamlonboarding.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 &lt;id&gt; &lt;title&gt;을 사용할 수 있습니다. 과거 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