hermes-boot-screen
A boot animation plugin for the Hermes desktop client: a six-act cinematic startup sequence that unveils from a black title card all the way to the app UI.
Adapted from dsh-startup-screen (the DeepSeek Harness client boot animation by Honghong Shen, MIT). The logo was replaced with the official Hermes icon, all copy was rebranded for Hermes, and it runs as a Hermes Desktop on-disk plugin.
Six-Act Structure
| Act | Content |
|---|---|
| 1 | Black screen + icon stroke drawing itself in (one stroke, then ink drop) / HERMES · HERMES · HERMES DESKTOP |
| 2 | Overexposed wash-out to a warm-white technical-dossier backdrop (corner ticks, grid, timestamp, segmented progress bar) |
| 3 | Brand lockup lands: HERMES / AGENTIC INTELLIGENCE / DESKTOP APP, footer POWERED BY NOUS RESEARCH |
| 4 | Interactive access-grant in five steps: grant access → confirm identity → open session channel → read permissions → verification passed (recorded voice lines with word-by-word subtitles) |
| 5 | Scatter/crosshair animation for the permission read |
| 6 | WELCOME TO / [HERMES DESKTOP] final curtain, unveiled after a cyan-red chromatic glitch, scroll lock released and control handed to the app |
Sound effects (prompts, confirmations, step ticks) and English narration run throughout. If the recorded assets are missing it falls back to browser TTS automatically, and if TTS is unavailable the animation still plays (it never blocks).
Requirements
- Hermes Desktop v0.21.x or a compatible desktop client (relies on the on-disk plugin mechanism and the
appearance.extra/palettecontribution areas) - No Node, no network: the runtime is a single self-contained file
Installation
Step 1: Get plugin.js
Download plugin.js from Releases, or just copy plugin.js from the repository (the repo root is the final artifact — one file, about 457 KB, with all assets embedded).
Step 2: Drop it into the plugin directory
In the Hermes desktop client, open the Skills & Tools → Plugins tab and click the folder icon in the title bar ("Open plugin directory") — this opens the plugin root that belongs to your machine. The path varies by platform and configuration, so trust whatever this button opens.
In the directory it opens, create a subfolder and put the file inside:
<plugin root>/
└── hermes-boot-screen/
└── plugin.js
Default plugin root locations (when HERMES_HOME is not set):
| Platform | Default path |
|---|---|
| Windows | %LOCALAPPDATA%\hermes\desktop-plugins |
| macOS / Linux | ~/.hermes/desktop-plugins |
If the
HERMES_HOMEenvironment variable is set (orHermesHomeexists in the Windows registry), the plugin root is<HERMES_HOME>/desktop-plugins— again, trust the path opened by the folder button on the plugins page.
Step 3: Load it
Go back to the Skills & Tools → Plugins page and click the refresh button in the title bar (rescan). Or just restart Hermes.
Two signs that it loaded:
- A toast appears in the bottom-right:
🚀 Boot animation plugin loaded · Settings entry: "Boot Animation" in the sidebar - A Boot Animation entry shows up in the plugin list (green toggle, on by default)
Note: modifying an existing
plugin.jsdoes not trigger an automatic reload (the file watcher is only established after the first load). Click refresh on the plugins page after editing the file.
Usage
When it plays
Default session mode: once per app session (it will not interrupt again during the same Hermes run). The other modes are selectable on the settings page:
always— plays on every registration (including hot reloads)session— once per app session (default)daily— once on the first launch of each day
Enable/disable: the Boot Animation toggle on the plugins page. Takes effect after the app restarts.
Skipping
Press Esc or click SKIP in the top-right during the animation to jump straight to the reveal. Advance the access-grant steps with Enter / Space or by clicking the buttons.
Preview it now (without waiting for the next launch)
Two entry points:
- "Boot Animation" in the sidebar (play icon, a standalone page in the same style as "Kanban") → "Play Now" inside the page. This is the main configuration entry: all 33 settings live on this one page.
- Command palette: click the chat input box once to focus it, then press Ctrl+Shift+K — "Boot Animation: Play Now" starts it directly, "Boot Animation: Open Settings" goes to the page above.
Settings (on the "Boot Animation" sidebar page)
- Playback: enable toggle, play trigger, playback speed (0.35–3×), whether interaction is mandatory, whether skipping is allowed
- Visual: theme (warm white / dark), accent colour, chromatic-aberration duo, noise/scanline decoration toggles
- Sound: master SFX volume, SFX source (embedded assets / synthesised tones), narration toggle, speech rate, volume, start delay
- Copy: identity name (the
ID CONFIRMED : XXXshown on the access panel, defaults toOPERATOR, change it to your own name or callsign), the three brand lines, the footer, and 14 text fields in total
Changes are written to plugin storage immediately and take effect on the next playback; "Restore defaults" puts everything back in one click.
Directory Layout (developers)
hermes-boot-screen/
├── plugin.js # Final artifact (single file, this is what you install)
├── build.py # Build script: src + assets + glyph → plugin.js / preview
├── src/
│ ├── shell.js # Plugin shell: register, contribution areas, playback lifecycle, settings UI
│ ├── splash.js # Six-act runtime (from the original project, rebranded for Hermes)
│ ├── splash.css # All animation styles (selectors renamed on inject)
│ ├── glyph.txt # Hermes icon path data
│ └── assets/*.mp3 # Voice-line and SFX assets
├── preview/index.html # Offline preview page (mock UI + replay/skip buttons)
└── test/smoke.mjs # Smoke test: config bounds / playback gating / register structure
Rebuild and verify:
python build.py # each string surgery is asserted; a syntax error writes no artifact
node test/smoke.mjs # requires Node 18+
Preview: just open preview/index.html in a browser (it is generated at build time) and you get the full six acts.
Privacy
- Single self-contained file that makes no network requests: audio, icon and styles are all embedded as data URIs
- Voice narration uses the browser's local
speechSynthesis; the recorded assets are decoded and played locally; nothing is uploaded - Settings are stored in the Hermes desktop client's local storage, never written to the repo or the cloud
Credits
- dsh-startup-screen — the creative concept and implementation basis of the boot animation, plus the audio voice-line assets, © 2026 Honghong Shen, MIT
- Hermes desktop plugin SDK — contribution areas, on-disk plugin loading and development docs
- The Hermes icon is © Nous Research; it is used here solely as the product mark on the boot screen
License
MIT (including the original project's copyright notice)