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.