Plugins

Extend Hermes with tools, skills, and UI panels.

Plugins are TypeScript modules. There is no plugin DSL, no proprietary manifest format, no install step beyond putting a file in plugins/.

Plugin shape

import type { Plugin } from "@/lib/hermes/types";

export default {
  name: "github",
  version: "0.1.0",
  tools: [
    {
      name: "github.search",
      description: "Search public GitHub repos.",
      args: { q: { type: "string" } },
      run: async ({ q }) => {
        const r = await fetch(`https://api.github.com/search/repositories?q=${encodeURIComponent(q)}`);
        return r.json();
      },
    },
  ],
} satisfies Plugin;

Capabilities

A plugin can register:

  • Tools — callable by the planner.
  • Skills — composable, typed capabilities.
  • Triggers — workflow inputs.
  • Panels — optional UI surfaces under /projects/:id.

Permissions

When a plugin requires sensitive permissions (wallet.sign, fs.write, terminal.exec), Hermes prompts the user on first use. Approvals are scoped per project.