Source: joeynyc-hermes-skins-readme-2026-05-22.md — full README.md verbatim, fetched 2026-05-22. Repo: github.com/joeynyc/hermes-skins. Stars: 380. License: MIT. Language: Python. Upstream agent: NousResearch/hermes-agent. Author: joeynyc (community, not affiliated with Nous Research).
Community-curated visual-theme bundle for the Hermes CLI agent. 15 custom skins (Pirate, Vault-Tec, Bubblegum 80s, Skynet, Lain, Neonwave, Sakura, Netrunner, Mythos, Nous, Mother, DOS, Telemate, Empire, Catppuccin) plus reference documentation for the 7 built-in skins shipped with Hermes itself (default, ares, mono, slate, poseidon, sisyphus, charizard). Skins control visual presentation only — banner colors, spinner faces/verbs, response-box labels, branding text, tool-activity prefix, ASCII art banners. “They don’t affect personality or behavior — just how things look.” YAML config under ~/.hermes/skins/<name>.yaml with default-skin inheritance (any unset value cascades from default, so partial skins work fine; unknown skin names silently fall back to default). Activation: /skin <name> (session) or display: skin: <name> in ~/.hermes/config.yaml (permanent). 28 configurable color keys per skin per the project’s SCHEMA.md.
What’s in the bundle
15 custom skins added by joeynyc:
| Skin | One-line | Visual register |
|---|---|---|
| Pirate | Black-and-white pirate flag, Jolly Roger braille art | Mono on black |
| Vault-Tec | Fallout retro-future — green phosphor CRT on black | Green-on-black CRT |
| Bubblegum 80s | 1980s bubblegum — bright pastels + neon accents | Pastel/neon |
| Skynet | Cyberdyne Systems military AI, glowing-eye pyramid | Red-to-white gradient |
| Lain | Serial Experiments Lain NAVI computer, Wired protocol | Pink-to-white |
| Neonwave | Synthwave perspective grid, retro-future | Pink-to-cyan |
| Sakura | Cherry-blossom tree with falling petals | Soft pinks + whites |
| Netrunner | Cyberpunk netrunner, skull + neural connection | Cyan ICE-breaking on black |
| Mythos | AGI meets Greek mythology, Eye of Providence | Greek blue + gold |
| Nous | Nous Research tribute, anime mascot, brand color #DD8E35 | Warm amber + gold |
| Mother | Weyland-Yutani MU-TH-UR 6000 + HAL 9000 lens | Amber CRT phosphor |
| DOS | MS-DOS Norton Commander dual-pane file manager | EGA 16-color cyan/yellow/white |
| Telemate | DOS BBS terminal v4.2x — ATDT dial, CONNECT 57600 | Cyan status bar, modem-era |
| Empire | Death Star firing-control console, targeting grid | Imperial red + ash gray + starfield |
| Catppuccin | Catppuccin Mocha, peeking ASCII cat, kaomoji spinners | Mauve/pink/peach/lavender on dark |
7 built-in skins (already in every Hermes install — README documents them for reference): default (gold + kawaii), ares (crimson + bronze war-god), mono (grayscale monochrome), slate (developer-focused cool blue), poseidon (deep blue + seafoam), sisyphus (austere grayscale with persistence), charizard (burnt orange + ember volcanic).
Each custom skin ships with: a <name>.yaml config file, a screenshots/<name>.png preview, and uses the same 28-color-key schema documented in the repo’s SCHEMA.md.
Install + activate
# 1. Clone (or curl individual skins):
git clone https://github.com/joeynyc/hermes-skins ~/Downloads/hermes-skins
mkdir -p ~/.hermes/skins
cp ~/Downloads/hermes-skins/skins/*.yaml ~/.hermes/skins/
# 2. Activate session-only:
/skin pirate
# 3. Or persist across sessions — add to ~/.hermes/config.yaml:
# display:
# skin: pirateUser skins at ~/.hermes/skins/ take priority over built-ins. The Hermes skin engine merges your skin on top of default, so partial skins work — you only need to define keys you want to change.
Key Takeaways
- Visual-only — strictly cosmetic. The README’s framing makes this an explicit contract: skins do not modify Hermes Agent personality, behavior, memory tier, skill loading, or any agent-loop primitive. Compare against Hermes Skill Bundles (which DO modify behavior via slash-command-driven skill composition). The two extension surfaces are orthogonal: bundles = behavior, skins = appearance.
- 22 skins total, but only 15 are net-new. 7 of the 22 are built-ins already in every Hermes install — the README’s “Built-in” table documents them for completeness so users know which
/skinnames will work out-of-the-box vs require copying a.yamlinto~/.hermes/skins/. The bundle’s net-new contribution is the 15 customs. - Default-skin inheritance is the load-bearing primitive. “Missing values inherit from the default skin, so you only need to define what you want to change.” That decision is what makes the schema (28 color keys + spinner + branding) ergonomic — a 5-line YAML override is enough to ship a working skin. The full schema only matters when building a complete dark theme that needs
status_bar_*andcompletion_menu_*keys defined (README explicitly flags: dark skins that omit those get mismatched colors from the default theme). - Unknown skin names silently fall back — no error. Quoting the README: “Unknown skin names silently fall back to
default.” Operator implication: typo in/skin <name>won’t fail loudly; you’ll just see the default theme. The validation tooling (validate_skins.py) is the right surface for catching typos before runtime. - Brand-aware aesthetic library. Several skins are direct brand homages — Nous mirrors Nous Research’s
#DD8E35brand color and ships an anime-mascot ASCII art, Mythos uses the Eye of Providence + Prometheus Labs branding (referencing the broader OpenClaw/Anthropic AGI vocabulary), Empire uses canon Imperial red#C8102E. The skin library is implicitly a community-curated visual vocabulary for the Hermes ecosystem. - Two complementary install pathways. Session-only
/skin <name>is appropriate for trying themes (“show me the empire one”); the persistentdisplay: skin:in~/.hermes/config.yamlis the operator’s daily-driver. The README’s example uses pirate for both — useful as a smoke test that the install path landed correctly. - Python tooling is small but useful. Two scripts:
validate_skins.py(schema validation against SCHEMA.md) andgenerate_screenshots.py(regenerate previews from updated YAML). The latter is the contribution gate — PRs must include a generated screenshot. Implication: any operator iterating on their own skin can use the generator to produce a sharable preview without screenshotting their terminal manually. - Low star count is structural, not signal-of-quality. 380 stars at fetch — modest by GitHub standards but high signal-to-noise for a hermes-agent-specific surface. The upstream NousResearch/hermes-agent is the gating distribution; skin libraries downstream of any single agent’s CLI naturally cap at a small fraction of that. Compare against Hermes Skill Bundles (a behavior-side primitive that ships with Hermes itself — broader audience by definition).
- Adjacent to the frontend-slides plugin’s preset-bank thesis. Both projects converge on the same operator pattern — a curated bank of visual presets, opinionated about aesthetics, with low-friction switching. Skin discovery is easier (single slash command) than slides-preset discovery; both ship with a “default” the rest are diffed against.
- Community, not Nous Research first-party. Author
joeynycis a community contributor; the project is not Nous Research’s. The upstream Hermes agent is Nous Research’s. If you’re tracking what Nous officially ships, this bundle is downstream — but it’s the canonical community visual-theme registry at ingest time (there isn’t a competing fork with comparable coverage).
Where this fits
| Topic surface | Description | Relationship |
|---|---|---|
| Hermes Agent topic landing | Public landing page, course material, security model, user stories | Skins is a new operator-side surface added here |
| Hermes Skill Bundles | Behavior-side primitive — slash-command-driven skill composition | Orthogonal: bundles = behavior, skins = appearance |
| Hermes Security Model | Defense-in-depth platform security | Unrelated: skins don’t touch credential / sandbox / dangerous-command pathways |
| Hermes Codex App-Server Runtime | Runtime delegation to Codex CLI for openai/* turns | Unrelated runtime concern — skins apply regardless of which runtime is active |
| Nate Herk’s Hermes 1-Hour Course | Operator walkthrough — install, Telegram, crons | Companion surface — install Hermes per the course, then layer skins on top |
| Hermes User Stories | Catalog of real-world Hermes deployments | Operator personalization — skins customize the terminal-side surface that operators see daily |
| Hermes v0.14.0 | Release notes / changelog | Skin engine is in skin_engine.py per the repo’s “How Skins Work” section |
| frontend-slides plugin | Curated visual preset bank for HTML slide decks | Same operator pattern at a different surface — preset bank, opinionated aesthetics, low-friction switching |
Try It
- Smallest install (one Hermes session):
git clone https://github.com/joeynyc/hermes-skins ~/Downloads/hermes-skins && mkdir -p ~/.hermes/skins && cp ~/Downloads/hermes-skins/skins/*.yaml ~/.hermes/skins/then/skin piratefrom inside a Hermes session. Cycle through/skin vault-tec,/skin sakura,/skin nousto compare before picking one to persist. - Persist your daily driver: once you’ve picked a favorite, edit
~/.hermes/config.yamland adddisplay:\n skin: <name>. Restart Hermes — the skin loads on every session now. - Customize an existing skin: copy any
.yamlto~/.hermes/skins/<your-name>.yaml, edit thename:field to match the filename, tweak only the keys you want to change. The unset keys inherit fromdefaultautomatically. - Author your own: start with the README’s 5-line cyberpunk example, layer in a banner ASCII art (braille art is the project’s house style), then run
python3 generate_screenshots.pyfrom a clone to regenerate the preview. If you ship it as a PR, the contribution gate requires defining all 28 color keys (per SCHEMA.md) + the generated screenshot. - For dark themes: explicitly define
status_bar_*andcompletion_menu_*color keys. The README flags this as the most common dark-skin contributor pitfall — omit them and you’ll get mismatched colors from the default (light-ish) theme. - Sanity-check your install: the project ships
validate_skins.py— run it against~/.hermes/skins/before reporting “the skin doesn’t work.” Unknown skin names silently fall back to default, so a validation failure is the only way to catch typos inname:keys vs filenames.
Related
- Hermes Agent — topic landing — public Hermes course material + visual overview infographic
- Hermes Skill Bundles — behavior-side extension primitive (orthogonal to skins)
- Hermes Security Model — defense-in-depth model (security context is unaffected by skin choice)
- Hermes Agent 1-Hour Course (Nate Herk) — install + setup walkthrough (do this first; then layer skins on top)
- Hermes User Stories and Use Cases — operator catalog (where skins live in the operator-personalization layer)
- Hermes Codex App-Server Runtime — runtime configuration (unrelated to skins)
- frontend-slides plugin — same operator pattern (curated visual preset bank) applied to HTML slide decks
- Claude AI topic — for adjacent design-skill and visual-customization patterns
Open Questions
- Did Nous Research bless any of these as the “official” community skin library? The README cross-links to NousResearch/hermes-agent but doesn’t claim official endorsement. Worth checking the Nous discord / hermes-agent README for any community-skin pointers.
- Skin marketplace via Browse.sh? The 2026-05-21 wiki note on the Hermes Browse.sh integration mentions a runtime skill hub for installable browser skills. Is there an equivalent surface emerging for visual themes — a one-command
hermes skins install <name>instead of git-clone-and-copy? Not yet, but the integration model is there. - Schema versioning. If Hermes adds a new color key in a future release, partial skins from this bundle inherit the default for the new key — no breakage. But fully-defined skins (all 28 keys) would need updating to use the new key. No versioning policy is documented; worth tracking on future Hermes releases (e.g., does v0.15.0 break any of these skins?).
- Conflict with default-skin precedence rules. The README says user skins take priority over built-ins. What happens if a user-skin filename collides with a built-in name (e.g., user creates
~/.hermes/skins/default.yaml)? Probably overrides built-indefault— but the consequence is that every unspecified skin then inherits from the user’s override. Not documented; potentially surprising. - The Mythos skin’s Prometheus Labs branding. Mythos uses “Prometheus Labs” branding and Eye of Providence imagery — references the Mythos OpenBSD demo aesthetic family. Coincidence or homage? Worth noting if anyone external misreads the skin as “official Mythos branding.”