hermes-desktop-plugins

Write JavaScript plugins that add UI panes, commands, and routes to the Hermes desktop app.

115|9|Updated Aug 5, 2026
One-click install
npx skills add https://github.com/AtlasOmnia/donna-starter --skill hermes-desktop-plugins-atlasomnia
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hermes-desktop-plugins
Source: https://github.com/AtlasOmnia/donna-starter/tree/main/skills/hermes-desktop-plugins
Command: npx skills add https://github.com/AtlasOmnia/donna-starter --skill hermes-desktop-plugins-atlasomnia

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Extending the Hermes desktop app normally requires modifying its source code and rebuilding it. This Skill lets you add statusbar widgets, layout panes, command-palette commands, keybinds, routes, and themes as single plain-JavaScript ESM files that the app loads and hot-reloads at runtime, with no build step. ## Core Features & Use Cases - UI Contributions Without Rebuilds: Register panes, statusbar chips, palette commands, keybinds, sidebar navigation, and full pages via the @hermes/plugin-sdk API, with automatic hot-reload on save. - Live Data Integration: Query the gateway with host.request, subscribe to events with host.onEvent, and use the app's shared React Query client for caching and invalidation. - Optional Python Backend: Pair a plugin with a Python plugin_api.py backend reachable through ctx.rest and ctx.socket, scoped to /api/plugins/<id>. - Use Case: You want a dashboard pane showing live gateway session data docked below the conversation. Create ~/.hermes/desktop-plugins/session-dash/plugin.js from the template, register a pane with dock: { pane: 'workspace', pos: 'bottom' }, and it appears in the app within seconds. ## Quick Start Create a new Hermes desktop plugin from the template that adds a statusbar chip and a right-side pane, then reload desktop plugins from the command palette.

Frequently Asked Questions about hermes-desktop-plugins

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a plugin for the Hermes desktop app?▼

Create a folder under ~/.hermes/desktop-plugins/ whose name matches your plugin id, and add a plugin.js file based on the provided template. The app watches that directory and hot-reloads the file on every save, with a Reload desktop plugins command as fallback.

How do I add a custom pane or page to a desktop app layout?▼

Register area 'panes' with a placement hint (left, right, bottom, main) and a render function, optionally adding a dock target to land on a specific edge. For full pages, register ROUTES_AREA with a path and add a sidebar nav entry or palette command that navigates to it.

Can Hermes desktop plugins use JSX syntax or npm packages?▼

No. Plugin files load uncompiled, so you must use jsx() calls from react/jsx-runtime instead of JSX syntax. Only @hermes/plugin-sdk, react, and react/jsx-runtime resolve as imports; any other specifier fails.

Can a desktop plugin have a Python backend?▼

Yes. Ship a plugin_api.py under ~/.hermes/plugins/<id>/dashboard/ with a manifest api entry, then reach it via ctx.rest and ctx.socket scoped to /api/plugins/<id>. Note ctx.socket is a no-op on OAuth remotes, so keep a polling fallback.

Why does my Hermes plugin fail to load or render?▼

Common causes are referencing a component you forgot to import, using JSX syntax, importing unsupported modules, or hardcoded colors conflicting with theme variables. The app shows an error toast naming the failure; fix the file and save to reload.