All plugins

hermes-asgard

Twelve Norse gods carved in runestone and wood: Odin, Thor, Freyja, Loki, Frigg, Baldur, Tyr, Heimdall, Hel, Skadi, Freyr and Bragi, as Hermes Desktop themes. Install once, then switch with /skin <name>. Matching terminal skins ship in cli/skins. Disclosure — theme-only desktop plugin: it registers twelve themes through the plugin SDK, and their stylesheets restyle parts of Desktop's own UI (sidebar art, tabs, composer, wordmark) only while one of its themes is active. It also watches Desktop's active theme: when a terminal skin named asgard-<god> is active, it switches Desktop to that god's theme through the SDK's requestTheme. The terminal skins are plain YAML files the user copies into the Hermes skins folder by hand; the plugin does not install them or write any files. Fonts and art are bundled; no network requests, no agent tools or hooks.

Adolanium1Desktopv0.2.2Updated 11 days ago

About

Twelve Norse gods carved in runestone and wood: Odin, Thor, Freyja, Loki, Frigg, Baldur, Tyr, Heimdall, Hel, Skadi, Freyr and Bragi, as Hermes Desktop themes. Install once, then switch with /skin <name>. Matching terminal skins ship in cli/skins. Disclosure — theme-only desktop plugin: it registers twelve themes through the plugin SDK, and their stylesheets restyle parts of Desktop's own UI (sidebar art, tabs, composer, wordmark) only while one of its themes is active. It also watches Desktop's active theme: when a terminal skin named asgard-<god> is active, it switches Desktop to that god's theme through the SDK's requestTheme. The terminal skins are plain YAML files the user copies into the Hermes skins folder by hand; the plugin does not install them or write any files. Fonts and art are bundled; no network requests, no agent tools or hooks.

Asgard

Twelve Norse gods for your Hermes desktop.

Twelve themes for Hermes Desktop, carved in runestone and wood. Each god fills the carving with their own colour,
brings their own lettering, and sets the HERMES AGENT name on a runic band:
Odin's red runes, Thor's lightning, Loki's green fire, Heimdall's rainbow.

FOR HERMES DESKTOP  ·  COMMUNITY THEMES  ·  VERSION 0.2.2

See all twelve live  ·  Try it in a minute  ·  Meet the twelve  ·  Switch any time

Twelve narrow columns side by side, one per god, each with a carved Norse head at the top, the god's name in its own lettering in the middle, and a knotwork fragment at the bottom, from Odin's granite and red runes to Skadi's snow

Try it in a minute

You need Hermes Desktop 0.22.2 or later. You don't need a terminal.

1. Install. In Hermes Desktop, open Capabilities → Plugins and click Install from Git. Paste this address, click Review repository, then install:

https://github.com/Adolanium/hermes-asgard
hermes plugins install Adolanium/hermes-asgard

If it asks whether to enable the plugin, either answer works. That switch is for the agent side, and Asgard has nothing there.

2. Turn it on. Asgard now appears in Capabilities → Plugins. Flip its Desktop switch on. Desktop plugins installed from a package start turned off, and this is the step people miss.

3. Pick a god. Type this in the message box and press Enter:

/skin odin

The whole app changes on the spot, with no restart. Try /skin loki next, or plain /skin to step through every theme you have.

Meet the twelve

Click a card to see the full window.

| Odin: granite and runic red, the all-father | Thor: dark oak and lightning blue, the thunderer |
|:---:|:---:|
| Freyja: birch, amber and rose, goddess of love and war | Loki: black stone and green fire, the trickster |
| Frigg: mist blue and silver, the queen who knows all fates | Baldur: sunlit straw and gold, the shining god |
| Tyr: rust iron on dark stone, the god of oaths | Heimdall: night blue and rainbow, the watchman |
| Hel: bone pale and shadow, queen of the dead | Skadi: snow and ice blue, the huntress of the mountains |
| Freyr: harvest gold on dark oak, lord of sun and rain | Bragi: violet mead and silver, the god of poetry |

Switch any time

Every Asgard theme is a normal Hermes theme, so all the usual ways to switch work:

| Where | What to do |
| --- | --- |
| Message box | /skin <name>, for example /skin freyja. /skin list shows every theme; /skin alone moves to the next one. |
| Command palette | Press Ctrl K (⌘ K on macOS), choose Change theme, and pick one. |
| Settings | Settings → Appearance → Theme. |

The names are odin, thor, freyja, loki, frigg, baldur, tyr, heimdall, hel, skadi, freyr and bragi. To go back to the stock look, type /skin nous.

Hermes remembers your choice for each profile, so a work profile can keep Odin while a personal one keeps Loki.

In the terminal too

The twelve gods also come as skins for hermes in the terminal, both the classic interface and hermes --tui. Each skin draws the god's bust from the Desktop sidebar as pixel art beside the start panel, letters HERMES AGENT in the god's colours, and repaints the prompt, status bar and menus in the god's palette.

Terminal skins are files, not part of the plugin switch, so copy them once after installing, and again after a plugin update:

mkdir -p ~/.hermes/skins
cp ~/.hermes/plugins/hermes-asgard/cli/skins/*.yaml ~/.hermes/skins/
hermes skin use asgard-odin

On Windows, Hermes keeps its home in %LOCALAPPDATA%\hermes instead of ~/.hermes, so in PowerShell:

New-Item -ItemType Directory -Force "$env:LOCALAPPDATA\hermes\skins" | Out-Null
Copy-Item "$env:LOCALAPPDATA\hermes\plugins\hermes-asgard\cli\skins\*.yaml" "$env:LOCALAPPDATA\hermes\skins\"
hermes skin use asgard-odin

Each skin is the god's name with asgard- in front, so a skin never shadows the plugin theme of the same name and Desktop keeps the themes with their art. Inside a session, /skin asgard-loki switches too: the prompt, status bar and menus change right away, and the art shows on the next start (hermes --tui redraws it at once). Each profile keeps its own skins, so for a profile copy them into ~/.hermes/profiles/<name>/skins/ (on Windows, %LOCALAPPDATA%\hermes\profiles\<name>\skins\) as well. hermes skin use default goes back to the stock look.

  • Each skin also carries banner_art, the whole bust image 80 columns wide (30 to 40 rows) dithered in three tones of the Desktop inks, like the Desktop art. The TUI paints one colour per line, so Hermes uses banner_hero, the 60-column one-colour version, wherever banner_art is not supported or does not fit.
  • While you browse skins with /skin and the arrow keys, the classic interface previews each one live: its colours, and a small version of its bust above the menu (banner_thumb, shown only by a Hermes that supports it, like banner_art). Enter keeps it.
  • The art is tuned for dark terminals; on a light terminal the palette switches to its light variant, but the bust stays light.
  • The bust is 60 columns wide and sits in the panel's left column. In the TUI that column takes up to 40% of the width, so the bust stays whole from about 160 columns; narrower, its right side is cut.
  • Hermes shares the active skin between surfaces, so switching skin in the terminal also switches Desktop. With the plugin on, Desktop follows to the god's full theme, art included: asgard-loki in the terminal gives Loki in Desktop. Desktop also lists the terminal skins as themes; picking one there does the same.

The skins are generated from the same art as the Desktop themes: python3 cli/build_skins.py (needs Pillow) rewrites cli/skins/.

Small decisions, already made

  • One install, twelve themes. All twelve ship in a single plugin. There's nothing to choose at install time and nothing extra to download later.
  • Carved, then coloured. The art is incised runestone, oak and birch in the Viking styles, with the grooves filled in each god's colour: red runes for Odin, lightning for Thor, green fire for Loki, a rainbow for Heimdall.
  • A frame of its own. The HERMES AGENT wordmark sits on a runic band with notched knotwork edges, the active tab becomes a small shield, and the dividers are double cut lines.
  • Your light or dark setting can't break the art. Each theme keeps its own palette in both modes. Four are light (Freyja, Frigg, Baldur and Skadi); the other eight are dark.
  • Nothing leaves your machine. The art and the fonts are packed into plugin.js, so themes switch instantly and work fully offline.
  • The chat stays readable. The art lives in the sidebar and the empty new-session screen. Once a conversation starts, it's text on a calm ground.

Update or remove

hermes plugins update hermes-asgard
hermes plugins remove hermes-asgard

Or use Capabilities → Plugins: switch Asgard off to hide the themes, or remove it from there. If an Asgard theme was active, Hermes goes back to its default theme.

What it touches

  • Theme registration through the Desktop plugin SDK, the same way any theme plugin adds itself to the picker.
  • Style rules that apply only while an Asgard theme is active, and disappear when you switch away.
  • Fonts, bundled inside the plugin under the SIL Open Font License: IBM Plex Sans and IBM Plex Mono for the interface, and one wordmark face per god: Amarante (Odin), Germania One (Thor), Almendra (Freyja), New Rocker (Loki), Cormorant Unicase (Frigg), Spectral SC (Baldur), Grenze (Tyr), Eagle Lake (Heimdall), Pirata One (Hel), Federant (Skadi), MedievalSharp (Freyr), IM Fell DW Pica SC (Bragi).

It makes no network requests, adds no agent tools, hooks, background processes or settings, and reads none of your data.

The runic band, shield tabs and placement of the art style Hermes Desktop's own markup, because the plugin SDK has no slots for decoration yet. If a Desktop update renames that markup, those touches fall back to the plain palette. Nothing else breaks.

Compatibility

| Hermes Desktop | Platform | Status |
| --- | --- | --- |
| 0.22.2 | Windows 11 | Tested |
| 0.22.2 | macOS, Linux | Expected to work; not yet tested |

More gods

Asgard is one of three packs. They install side by side, and none of their theme names overlap, so every god shows up in the same picker.

License

MIT. The bundled fonts are under the SIL Open Font License; see LICENSES.

Community project

Asgard is an independent community theme pack. It is not affiliated with, endorsed by, sponsored by, or officially associated with Nous Research or the Hermes Agent project. Hermes, Hermes Agent, and Nous Research are names and marks belonging to their respective owners.

README from the reviewed commit 5df7060; it updates when the author re-pins.

More by Adolanium

25 plugins by Adolanium in the catalog.

AdolaniumgadgetTalk to your Hermes from small ESP32 devices with a screen, microphone and speaker: hold a button, ask, and hear the answer. Adds a gateway platform where each device is a chat, plus tools to list devices, show a card on a screen and run device actions (LEDs, relays). Disclosure — the gateway listens for devices on a WebSocket port (8765, all interfaces by default; plain ws:// unless tls_cert/tls_key are set). New devices need a Hermes pairing code unless listed in GADGET_ALLOWED_USERS; GADGET_ALLOW_ALL_USERS skips pairing (development only). A paired device answers the agent's command approvals for its own chat (allow once or deny), within Hermes's approval timeout. The first approved device becomes the platform's home channel by default. Session hooks feed a dashboard on paired devices with each agent session's platform, a short id and its state (idle, busy, waiting for approval); a device that can switch profiles also sees the offered profiles' sessions. Optional profile switching (off unless `profiles` is set in the default profile's gadget config) lets a device paired on the default profile talk to the listed profiles; each profile approves the device through its own pairing flow (the device shows the `hermes -p <profile> pairing approve` command), the plugin writes nothing into other profiles, and revoking the device in the default profile sends it back there. A paired gadget that draws faces gets the answering profile's face: its `gadget-face.bin`, or its Hermes avatar (`assets/avatar.*`) converted with Pillow when installed; the plugin only reads these files, and `profile_faces: false` turns this off. `platforms.gadget.extra.stt_language` sets the transcription language of gadget recordings through the `pre_transcription` hook; other platforms' audio is untouched. Spoken replies that are not WAV are converted with the local ffmpeg; Opus reply audio uses the host's libopus when installed (loaded with ctypes, not bundled). `hermes gadget update --latest` downloads firmware from this repository's GitHub releases, checks size and SHA-256 against the release manifest (files carry build provenance attestations) and sends it to the device. A device that advertises `camera.capture` returns stills that are saved as PNGs under `~/.hermes/gadgetpix/` and kept until removed by hand. A Hermes Desktop page (`desktop/plugin.js`, plugin SDK only) runs a gadget in the window that connects to the local gateway as a device of its own: its device key, and the gateway access token when one is required, are kept in the page's plugin storage, it pairs like any device, and it uses the microphone only while its talk button or Space is held. The plugin's dashboard routes, behind the dashboard's login, can approve the pairing code a device is showing and send a card or run an advertised action on a connected, paired device; the requests pass through files under plugin-data/gadget/desk/. Otherwise writes only under plugin-data/gadget/. Uses Hermes's own STT, TTS and image cache; no telemetry. Independent community project, not affiliated with Nous Research.Communityplatform518Adolaniumhermes-resetwatchTrack subscription quotas and reset times in Hermes Desktop. Disclosure — probe.py re-executes itself under the Hermes Python interpreter located via HERMES_PYTHON / VIRTUAL_ENV / the parent process or the Hermes installer's managed venv (HERMES_HOME/installs). Every credential read is read-only and nothing is refreshed or stored: it reads provider API keys from the process environment, the Hermes .env (through Hermes's get_secret helper, else read directly), the Vaultwarden plugin's local secret cache (cache/vaultwarden_cache.json, only when Vaultwarden is the sole enabled secret source, keyed by a hash of BW_SESSION, which is never sent) and Docker s6 container env files; Hermes's saved OAuth logins (the credential pool through Hermes's read_credential_pool helper, else auth.json directly, and HERMES_HOME/.anthropic_oauth.json); and other coding-assistant CLIs' local logins: Claude Code (credentials file, macOS keychain or Windows Credential Manager), Codex, Cursor (macOS keychain and the IDE's state.vscdb, opened read-only), Kimi, Grok, ZCode and Command Code. For GitHub Copilot (on by default) it tries COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN (through Hermes get_secret, else the process environment), then the Copilot editor's apps.json / hosts.json, then runs gh auth token (prompts disabled, 3-second limit), trying each token in turn until GitHub accepts one. For Codex, a 401 or 403 is retried once with another saved login for the same account. It sends each key only to its own vendor's usage endpoint, presenting the vendor client's identity headers where a private endpoint expects them (Claude Code and Codex CLI user agents, the Grok CLI client headers, and for Copilot the VS Code / Copilot Chat editor headers on api.github.com/copilot_internal/user, which GitHub does not document); environment variables such as GROK_CLI_CHAT_PROXY_BASE_URL (honored only for https grok.com / x.ai hosts), CLAUDE_CONFIG_DIR, CODEX_HOME and GROK_HOME change which host or file it uses. Usage results are cached under HERMES_HOME/cache/resetwatch, never tokens. It exposes nothing to the model: it is a Desktop page only.CommunityDesktop app83Adolaniumhermes-rssRead RSS and Atom feeds and discuss articles in Hermes Desktop. Disclosure — feeds and full articles are fetched with curl through the gateway's shell.exec on the connected Hermes host (public-IPv4 SSRF guard); opt-in AI grading sends article excerpts to your configured model and creates HERMES_HOME/skills/rss-importance-grading/SKILL.md if missing; opt-in image loading fetches publisher images directly from Desktop.CommunityDesktop app65Adolaniumhermes-tailscaleBrowse Tailscale devices and connect to remote Hermes instances in Hermes Desktop.CommunityDesktop app60

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section