|
Download website/docs/user-guide/features/plugin-catalog.md from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 7.28 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/website/docs/user-guide/features/plugin-catalog.md
- Command line
-
hf download hf://SaylorTwift/hermes-agent/website/docs/user-guide/features/plugin-catalog.md
-
curl -L -o plugin-catalog.md https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/website/docs/user-guide/features/plugin-catalog.md
7.28 kB
| sidebar_position: 13 | |
| sidebar_label: "Plugin Catalog" | |
| title: "Plugin Catalog" | |
| description: "Browse and install reviewed, SHA-pinned Hermes plugins from the curated catalog" | |
| # Plugin Catalog | |
| The plugin catalog is a curated, human-reviewed directory of Hermes plugins you | |
| can install by name with a single command: | |
| ```bash | |
| hermes plugins install <name> | |
| ``` | |
| Browse it visually at **[/docs/plugins](/plugins)** β entries are shelved by | |
| category (Memory, Desktop, Platforms, Web & Browser, Tools, Voice, Automation, | |
| Models), with search, tier filters (Official / Community), capability chips, and | |
| copyable install commands for every entry. | |
| The catalog complements β it does not replace β the existing | |
| [plugin system](plugins.md). Anything you can install from the catalog is a | |
| normal plugin under the hood; the catalog just adds discovery and a review | |
| layer on top. | |
| ## What's in an entry | |
| Each catalog entry is a small YAML file in the | |
| [`plugin-catalog/`](https://github.com/NousResearch/hermes-agent/tree/main/plugin-catalog) | |
| directory of the hermes-agent repository, declaring: | |
| | Field | Meaning | | |
| |---|---| | |
| | `name` | The catalog key you pass to `hermes plugins install` | | |
| | `repo` | The plugin's public git repository | | |
| | `sha` | The **exact 40-hex commit** that was reviewed β installs check out this pin, not a branch tip | | |
| | `tier` | `official` (maintained by NousResearch) or `community` | | |
| | `category` | Browse shelf: `desktop` (default), `memory`, `platform`, `web`, `tools`, `voice`, `automation`, `models` or `general` | | |
| | `maintainer` | Who owns the plugin | | |
| | `capabilities` | Declared tools, hooks, middleware, and required env vars | | |
| | `requires_hermes` | Minimum Hermes version, e.g. `>=0.19` (optional) | | |
| | `platforms` | OS restrictions, empty = all (optional) | | |
| | `docs_url` | External documentation link (optional) | | |
| ## Trust model | |
| The catalog is designed so you know exactly what you're installing: | |
| - **Human-merged admission.** Every entry (and every pin update) lands via a | |
| pull request reviewed by a maintainer. Nothing enters the catalog | |
| automatically. | |
| - **Exact SHA pins.** Entries pin a specific commit, not a branch. A plugin | |
| author pushing new code to their repo does **not** change what the catalog | |
| installs β updating the pin requires another reviewed PR. | |
| - **Capability declarations.** Entries state up front which tools, hooks, and | |
| middleware the plugin provides and which environment variables (API keys | |
| etc.) it needs, so you can judge its blast radius before installing. | |
| - **Removed list.** Plugins pulled from the catalog (for example after a | |
| security incident) go on `plugin-catalog/removed.yaml` with a reason and | |
| date. The installer refuses to install anything on the removed list. | |
| - **Installed β enabled.** Installing a catalog plugin puts it on disk; like | |
| any plugin it must still be enabled before it loads. See | |
| [Plugins β Enabling and disabling](plugins.md). | |
| :::warning Catalog review is a point-in-time review | |
| A catalog entry means the pinned commit was looked at by a human, capability | |
| declarations were checked, and the repo met the submission bar. It is not a | |
| security audit, and it says nothing about other commits in the same | |
| repository. Review the code of anything you give credentials to. | |
| ::: | |
| ## Installing from the catalog | |
| ```bash | |
| # Install a reviewed catalog entry by name (checks out the pinned SHA) | |
| hermes plugins install <name> | |
| # Then enable it, as with any plugin | |
| hermes plugins enable <name> | |
| ``` | |
| The install prompt shows the entry's capability summary β declared tools, | |
| hooks, and required env vars β before anything is cloned. | |
| The catalog name and the plugin's own manifest name can differ; `hermes | |
| plugins install` prints the installed name, and `enable` takes that one. For | |
| example the `touchdesigner` entry (a portable Agent Plugins v1 package that | |
| bundles the twozero MCP server with the `touchdesigner-mcp` skill) installs as | |
| `td`, kept short so its generated MCP tool names stay under provider | |
| function-name limits: | |
| ```bash | |
| hermes plugins install touchdesigner | |
| hermes plugins enable td | |
| ``` | |
| Portable packages can also carry a stdio MCP server. The `snyk` entry pins the | |
| Snyk CLI (`npx -y snyk@<version> mcp`) and bundles the `snyk-security-scan` | |
| skill, so one install gives Hermes code, dependency, container and IaC scanning | |
| plus the workflow for using it; the catalog name and manifest name match: | |
| ```bash | |
| hermes plugins install snyk | |
| hermes plugins enable snyk | |
| ``` | |
| ### Updating a catalog install | |
| `hermes plugins update <name>` never runs `git pull` for catalog installs β | |
| it compares your installed pin against the current catalog pin and, when the | |
| catalog moved (via a reviewed PR), force-reinstalls at the new SHA. Your | |
| enabled/disabled state is preserved. `hermes plugins list` shows catalog | |
| installs as `catalog:<tier>@<sha>` so you can see provenance at a glance. | |
| ### Names not in the catalog | |
| A bare name that isn't a catalog entry is an error: there is no second, | |
| unreviewed name index. Install such plugins by `owner/repo` or Git URL instead | |
| (custom source, see below), or submit them to the catalog. | |
| ### Live refresh | |
| The docs build publishes the catalog as one JSON document | |
| (`https://hermes-agent.nousresearch.com/docs/api/plugin-catalog.json`). | |
| `search`/`install`/`update` fetch it at most every six hours and cache it under | |
| `~/.hermes/cache/`, so new entries and removals reach installed clients without | |
| updating Hermes. Offline, the copy shipped with your checkout is used. Removals | |
| from the in-tree list and the live list are always both enforced. | |
| ### Custom git URLs are different | |
| `hermes plugins install <git-url>` still works for any repository, but it | |
| bypasses the catalog entirely: | |
| - **No review** β you get whatever is at the branch tip, not a reviewed pin. | |
| - **A warning banner** is shown to make clear the code is unvetted. | |
| - The removed list is still consulted (a known-bad repo is refused by URL). | |
| Use the git-URL path for your own plugins and repos you already trust; use the | |
| catalog for discovery. | |
| ## Submitting a plugin to the catalog | |
| Submissions are pull requests that add one `plugin-catalog/<name>.yaml` file. | |
| The full checklist lives in the | |
| [plugin-catalog README](https://github.com/NousResearch/hermes-agent/tree/main/plugin-catalog); | |
| in short, an entry must be: | |
| 1. **Owner-submitted** β the PR author owns or maintains the plugin repo. | |
| 2. **A public repository** β the `repo` URL is publicly cloneable. | |
| 3. **Released** β the repo has real releases/tags, not just a default branch. | |
| 4. **Passing validation** β the catalog validation GitHub Action is green on | |
| the PR (schema, SHA format, reachability). | |
| 5. **Not self-updating** β the catalog build must not download and replace | |
| its own files; the pinned SHA is the only update path (a SHA-bump PR plus | |
| `hermes plugins update <name>`). | |
| Pin updates (bumping `sha` to a newer commit) follow the same PR + review | |
| process. | |
| ## See also | |
| - [Plugins](plugins.md) β the plugin system itself: manifest format, enabling, | |
| configuration | |
| - [Built-in Plugins](built-in-plugins.md) β plugins that ship with Hermes | |
| - [Build a Hermes Plugin](/developer-guide/plugins) β write your own | |
| - [Plugin Catalog page](/plugins) β the browsable catalog | |