Files
hermes-agent/website/docs/user-guide/features/skins.md
Teknium 5b0243e6ad docs: deep quality pass — expand 10 thin pages, fix specific issues (#4134)
Developer guide stubs expanded to full documentation:
- trajectory-format.md: 56→233 lines (JSONL format, ShareGPT example,
  normalization rules, reasoning markup, replay code)
- session-storage.md: 66→388 lines (SQLite schema, migration table,
  FTS5 search syntax, lineage queries, Python API examples)
- context-compression-and-caching.md: 72→321 lines (dual compression
  system, config defaults, 4-phase algorithm, before/after example,
  prompt caching mechanics, cache-aware patterns)
- tools-runtime.md: 65→246 lines (registry API, dispatch flow,
  availability checking, error wrapping, approval flow)
- prompt-assembly.md: 89→246 lines (concrete assembled prompt example,
  SOUL.md injection, context file discovery table)

User-facing pages expanded:
- docker.md: 62→224 lines (volumes, env forwarding, docker-compose,
  resource limits, troubleshooting)
- updating.md: 79→167 lines (update behavior, version checking,
  rollback instructions, Nix users)
- skins.md: 80→206 lines (all color/spinner/branding keys, built-in
  skin descriptions, full custom skin YAML template)

Hub pages improved:
- integrations/index.md: 25→82 lines (web search backends table,
  TTS/browser providers, quick config example)
- features/overview.md: added Integrations section with 6 missing links

Specific fixes:
- configuration.md: removed duplicate Gateway Streaming section
- mcp.md: removed internal "PR work" language
- plugins.md: added inline minimal plugin example (self-contained)

13 files changed, ~1700 lines added. Docusaurus build verified clean.
2026-03-30 20:30:11 -07:00

8.1 KiB
Raw Blame History

sidebar_position, title, description
sidebar_position title description
10 Skins & Themes Customize the Hermes CLI with built-in and user-defined skins

Skins & Themes

Skins control the visual presentation of the Hermes CLI: banner colors, spinner faces and verbs, response-box labels, branding text, and the tool activity prefix.

Conversational style and visual style are separate concepts:

  • Personality changes the agent's tone and wording.
  • Skin changes the CLI's appearance.

Change skins

/skin                # show the current skin and list available skins
/skin ares           # switch to a built-in skin
/skin mytheme        # switch to a custom skin from ~/.hermes/skins/mytheme.yaml

Or set the default skin in ~/.hermes/config.yaml:

display:
  skin: default

Built-in skins

Skin Description Agent branding Visual character
default Classic Hermes — gold and kawaii Hermes Agent Warm gold borders, cornsilk text, kawaii faces in spinners. The familiar caduceus banner. Clean and inviting.
ares War-god theme — crimson and bronze Ares Agent Deep crimson borders with bronze accents. Aggressive spinner verbs ("forging", "marching", "tempering steel"). Custom sword-and-shield ASCII art banner.
mono Monochrome — clean grayscale Hermes Agent All grays — no color. Borders are #555555, text is #c9d1d9. Ideal for minimal terminal setups or screen recordings.
slate Cool blue — developer-focused Hermes Agent Royal blue borders (#4169e1), soft blue text. Calm and professional. No custom spinner — uses default faces.
poseidon Ocean-god theme — deep blue and seafoam Poseidon Agent Deep blue to seafoam gradient. Ocean-themed spinners ("charting currents", "sounding the depth"). Trident ASCII art banner.
sisyphus Sisyphean theme — austere grayscale with persistence Sisyphus Agent Light grays with stark contrast. Boulder-themed spinners ("pushing uphill", "resetting the boulder", "enduring the loop"). Boulder-and-hill ASCII art banner.
charizard Volcanic theme — burnt orange and ember Charizard Agent Warm burnt orange to ember gradient. Fire-themed spinners ("banking into the draft", "measuring burn"). Dragon-silhouette ASCII art banner.

Complete list of configurable keys

Colors (colors:)

Controls all color values throughout the CLI. Values are hex color strings.

Key Description Default (default skin)
banner_border Panel border around the startup banner #CD7F32 (bronze)
banner_title Title text color in the banner #FFD700 (gold)
banner_accent Section headers in the banner (Available Tools, etc.) #FFBF00 (amber)
banner_dim Muted text in the banner (separators, secondary labels) #B8860B (dark goldenrod)
banner_text Body text in the banner (tool names, skill names) #FFF8DC (cornsilk)
ui_accent General UI accent color (highlights, active elements) #FFBF00
ui_label UI labels and tags #4dd0e1 (teal)
ui_ok Success indicators (checkmarks, completion) #4caf50 (green)
ui_error Error indicators (failures, blocked) #ef5350 (red)
ui_warn Warning indicators (caution, approval prompts) #ffa726 (orange)
prompt Interactive prompt text color #FFF8DC
input_rule Horizontal rule above the input area #CD7F32
response_border Border around the agent's response box (ANSI escape) #FFD700
session_label Session label color #DAA520
session_border Session ID dim border color #8B8682

Spinner (spinner:)

Controls the animated spinner shown while waiting for API responses.

Key Type Description Example
waiting_faces list of strings Faces cycled while waiting for API response ["(⚔)", "(⛨)", "(▲)"]
thinking_faces list of strings Faces cycled during model reasoning ["(⚔)", "(⌁)", "(<>)"]
thinking_verbs list of strings Verbs shown in spinner messages ["forging", "plotting", "hammering plans"]
wings list of [left, right] pairs Decorative brackets around the spinner [["⟪⚔", "⚔⟫"], ["⟪▲", "▲⟫"]]

When spinner values are empty (like in default and mono), hardcoded defaults from display.py are used.

Branding (branding:)

Text strings used throughout the CLI interface.

Key Description Default
agent_name Name shown in banner title and status display Hermes Agent
welcome Welcome message shown at CLI startup Welcome to Hermes Agent! Type your message or /help for commands.
goodbye Message shown on exit Goodbye! ⚕
response_label Label on the response box header ⚕ Hermes
prompt_symbol Symbol before the user input prompt
help_header Header text for the /help command output (^_^)? Available Commands

Other top-level keys

Key Type Description Default
tool_prefix string Character prefixed to tool output lines in the CLI
tool_emojis dict Per-tool emoji overrides for spinners and progress ({tool_name: emoji}) {}
banner_logo string Rich-markup ASCII art logo (replaces the default HERMES_AGENT banner) ""
banner_hero string Rich-markup hero art (replaces the default caduceus art) ""

Custom skins

Create YAML files under ~/.hermes/skins/. User skins inherit missing values from the built-in default skin, so you only need to specify the keys you want to change.

Full custom skin YAML template

# ~/.hermes/skins/mytheme.yaml
# Complete skin template — all keys shown. Delete any you don't need;
# missing values automatically inherit from the 'default' skin.

name: mytheme
description: My custom theme

colors:
  banner_border: "#CD7F32"
  banner_title: "#FFD700"
  banner_accent: "#FFBF00"
  banner_dim: "#B8860B"
  banner_text: "#FFF8DC"
  ui_accent: "#FFBF00"
  ui_label: "#4dd0e1"
  ui_ok: "#4caf50"
  ui_error: "#ef5350"
  ui_warn: "#ffa726"
  prompt: "#FFF8DC"
  input_rule: "#CD7F32"
  response_border: "#FFD700"
  session_label: "#DAA520"
  session_border: "#8B8682"

spinner:
  waiting_faces:
    - "(⚔)"
    - "(⛨)"
    - "(▲)"
  thinking_faces:
    - "(⚔)"
    - "(⌁)"
    - "(<>)"
  thinking_verbs:
    - "processing"
    - "analyzing"
    - "computing"
    - "evaluating"
  wings:
    - ["⟪⚡", "⚡⟫"]
    - ["⟪●", "●⟫"]

branding:
  agent_name: "My Agent"
  welcome: "Welcome to My Agent! Type your message or /help for commands."
  goodbye: "See you later! ⚡"
  response_label: " ⚡ My Agent "
  prompt_symbol: "⚡  "
  help_header: "(⚡) Available Commands"

tool_prefix: "┊"

# Per-tool emoji overrides (optional)
tool_emojis:
  terminal: "⚔"
  web_search: "🔮"
  read_file: "📄"

# Custom ASCII art banners (optional, Rich markup supported)
# banner_logo: |
#   [bold #FFD700] MY AGENT [/]
# banner_hero: |
#   [#FFD700]  Custom art here  [/]

Minimal custom skin example

Since everything inherits from default, a minimal skin only needs to change what's different:

name: cyberpunk
description: Neon terminal theme

colors:
  banner_border: "#FF00FF"
  banner_title: "#00FFFF"
  banner_accent: "#FF1493"

spinner:
  thinking_verbs: ["jacking in", "decrypting", "uploading"]
  wings:
    - ["⟨⚡", "⚡⟩"]

branding:
  agent_name: "Cyber Agent"
  response_label: " ⚡ Cyber "

tool_prefix: "▏"

Operational notes

  • Built-in skins load from hermes_cli/skin_engine.py.
  • Unknown skins automatically fall back to default.
  • /skin updates the active CLI theme immediately for the current session.
  • User skins in ~/.hermes/skins/ take precedence over built-in skins with the same name.
  • Skin changes via /skin are session-only. To make a skin your permanent default, set it in config.yaml.
  • The banner_logo and banner_hero fields support Rich console markup (e.g., [bold #FF0000]text[/]) for colored ASCII art.