Skip to main content

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

SkinDescriptionAgent brandingVisual character
defaultClassic Hermes — gold and kawaiiHermes AgentWarm gold borders, cornsilk text, kawaii faces in spinners. The familiar caduceus banner. Clean and inviting.
aresWar-god theme — crimson and bronzeAres AgentDeep crimson borders with bronze accents. Aggressive spinner verbs ("forging", "marching", "tempering steel"). Custom sword-and-shield ASCII art banner.
monoMonochrome — clean grayscaleHermes AgentAll grays — no color. Borders are #555555, text is #c9d1d9. Ideal for minimal terminal setups or screen recordings.
slateCool blue — developer-focusedHermes AgentRoyal blue borders (#4169e1), soft blue text. Calm and professional. No custom spinner — uses default faces.
poseidonOcean-god theme — deep blue and seafoamPoseidon AgentDeep blue to seafoam gradient. Ocean-themed spinners ("charting currents", "sounding the depth"). Trident ASCII art banner.
sisyphusSisyphean theme — austere grayscale with persistenceSisyphus AgentLight grays with stark contrast. Boulder-themed spinners ("pushing uphill", "resetting the boulder", "enduring the loop"). Boulder-and-hill ASCII art banner.
charizardVolcanic theme — burnt orange and emberCharizard AgentWarm 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.

KeyDescriptionDefault (default skin)
banner_borderPanel border around the startup banner#CD7F32 (bronze)
banner_titleTitle text color in the banner#FFD700 (gold)
banner_accentSection headers in the banner (Available Tools, etc.)#FFBF00 (amber)
banner_dimMuted text in the banner (separators, secondary labels)#B8860B (dark goldenrod)
banner_textBody text in the banner (tool names, skill names)#FFF8DC (cornsilk)
ui_accentGeneral UI accent color (highlights, active elements)#FFBF00
ui_labelUI labels and tags#4dd0e1 (teal)
ui_okSuccess indicators (checkmarks, completion)#4caf50 (green)
ui_errorError indicators (failures, blocked)#ef5350 (red)
ui_warnWarning indicators (caution, approval prompts)#ffa726 (orange)
promptInteractive prompt text color#FFF8DC
input_ruleHorizontal rule above the input area#CD7F32
response_borderBorder around the agent's response box (ANSI escape)#FFD700
session_labelSession label color#DAA520
session_borderSession ID dim border color#8B8682

Spinner (spinner:)

Controls the animated spinner shown while waiting for API responses.

KeyTypeDescriptionExample
waiting_faceslist of stringsFaces cycled while waiting for API response["(⚔)", "(⛨)", "(▲)"]
thinking_faceslist of stringsFaces cycled during model reasoning["(⚔)", "(⌁)", "(<>)"]
thinking_verbslist of stringsVerbs shown in spinner messages["forging", "plotting", "hammering plans"]
wingslist of [left, right] pairsDecorative 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.

KeyDescriptionDefault
agent_nameName shown in banner title and status displayHermes Agent
welcomeWelcome message shown at CLI startupWelcome to Hermes Agent! Type your message or /help for commands.
goodbyeMessage shown on exitGoodbye! ⚕
response_labelLabel on the response box header⚕ Hermes
prompt_symbolSymbol before the user input prompt
help_headerHeader text for the /help command output(^_^)? Available Commands

Other top-level keys

KeyTypeDescriptionDefault
tool_prefixstringCharacter prefixed to tool output lines in the CLI
tool_emojisdictPer-tool emoji overrides for spinners and progress ({tool_name: emoji}){}
banner_logostringRich-markup ASCII art logo (replaces the default HERMES_AGENT banner)""
banner_herostringRich-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.