Hermes Agent: Plugins
Last updated: 2026-08-31
Plugins are Hermes Agent's extension interface — built-in features not enough? Install a plugin. Need Jira, Notion, or Figma integration? There are ready-made plugins.
💡 Tip: Plugins are a higher-level extension method than custom tools. A plugin can contain multiple tools, skills, and even complete subsystems. The Hermes plugin marketplace has rich community plugins.
📋 Prerequisites: Lesson 8 Tools and Toolsets
1. What You Will Learn
| # | Content |
|---|---|
| ❶ | Plugin system architecture |
| ❷ | Plugin installation and management |
| ❸ | Popular plugins |
| ❹ | Developing custom plugins |
| ❺ | Plugin security and permissions |
2. Story
(1) Pain Point: Built-in Tools Not Enough
Bob needs to connect to Jira for tickets, use Notion for notes, and view Figma designs. Built-in tools don't have these integrations.
(2) Solution: Install Plugins, One-Click Extension
BASH
# Install Jira plugin
hermes plugin install hermes-plugin-jira
# Install Notion plugin
hermes plugin install hermes-plugin-notion
# Now use directly in conversation
me: Check the status of PROJ-123
Agent: [Jira Plugin] PROJ-123: In Progress, Priority High
3. Plugin System Architecture
(1) Plugin Structure
hermes-plugin-jira/
├── manifest.yaml # Plugin manifest
├── tools/ # Tools provided by plugin
│ ├── jira_search.py
│ ├── jira_create.py
│ └── jira_update.py
├── skills/ # Skills provided by plugin
│ └── sprint-review.yaml
├── templates/ # Output templates
└── config.yaml # Plugin configuration
(2) Plugin Manifest
YAML
# manifest.yaml
name: "hermes-plugin-jira"
version: "1.2.0"
description: "Jira integration for Hermes Agent"
author: "community"
license: "MIT"
dependencies:
hermes_version: ">=1.0.0"
python_packages:
- "jira>=3.5.0"
tools:
- name: "jira_search"
description: "Search Jira issues"
category: "communication"
- name: "jira_create"
description: "Create Jira issue"
category: "communication"
- name: "jira_update"
description: "Update Jira issue"
category: "communication"
skills:
- name: "sprint-review"
description: "Generate sprint review report"
permissions:
- network: ["*.atlassian.net"]
- filesystem: []
- env_vars: ["JIRA_URL", "JIRA_TOKEN"]
4. Plugin Installation and Management
(1) Installing Plugins
BASH
# Install from marketplace
hermes plugin install hermes-plugin-jira
# Install from Git repository
hermes plugin install git+https://github.com/user/hermes-plugin-jira
# Install from local path
hermes plugin install ./my-plugin
# Install specific version
hermes plugin install hermes-plugin-jira@1.2.0
(2) Management Commands
BASH
# List installed plugins
hermes plugin list
# Output example:
# ┌─────────────────────┬─────────┬──────────┬─────────┐
# │ Plugin │ Version │ Status │ Tools │
# ├─────────────────────┼─────────┼──────────┼─────────┤
# │ jira │ 1.2.0 │ ✅ Active│ 3 │
# │ notion │ 0.9.1 │ ✅ Active│ 4 │
# │ figma │ 0.5.0 │ ⏸️ Paused│ 2 │
# └─────────────────────┴─────────┴──────────┴─────────┘
# Update plugin
hermes plugin update jira
# Disable plugin (without uninstalling)
hermes plugin pause figma
# Enable plugin
hermes plugin resume figma
# Uninstall plugin
hermes plugin uninstall figma
5. Popular Plugins
| Plugin | Function | Tools |
|---|---|---|
| jira | Jira ticket management | 3 |
| notion | Notion page/database operations | 4 |
| figma | Figma design preview | 2 |
| github | GitHub PR/Issue/Repo operations | 6 |
| gitlab | GitLab CI/CD operations | 5 |
| aws | AWS service operations | 8 |
| docker | Docker container management | 4 |
| kubernetes | K8s cluster operations | 6 |
| google-calendar | Google Calendar | 3 |
| slack-advanced | Slack advanced features | 5 |
| pandas | Data analysis enhancement | 4 |
| database | Multi-database support | 5 |
(1) GitHub Plugin Example
BASH
# Install
hermes plugin install hermes-plugin-github
# Configure
hermes config set plugins.github.token "${GITHUB_TOKEN}"
hermes config set plugins.github.default_repo "myorg/myrepo"
# Use
me: List pending PRs
Agent: [GitHub Plugin] Found 3 PRs pending review:
- #42: Fix auth flow (alice, 2h ago)
- #43: Add rate limiting (bob, 5h ago)
- #44: Update dependencies (carol, 1d ago)
6. Developing Custom Plugins
(1) Minimal Plugin
PYTHON
# my_plugin/tools/hello.py
from hermes import Tool, ToolResult
class HelloTool(Tool):
name = "hello"
description = "Say hello to someone"
category = "custom"
parameters = {
"name": {"type": "str", "required": True}
}
def execute(self, name: str) -> ToolResult:
return ToolResult(
success=True,
data={"message": f"Hello, {name}!"},
summary=f"Greeted {name}"
)
YAML
# my_plugin/manifest.yaml
name: "my-plugin"
version: "0.1.0"
description: "My custom plugin"
author: "me"
tools:
- name: "hello"
description: "Say hello"
category: "custom"
permissions:
- network: []
- filesystem: []
(2) Complete Plugin Development
PYTHON
# stock-plugin/tools/stock_query.py
from hermes import Tool, ToolResult
import httpx
class StockQueryTool(Tool):
name = "stock_query"
description = "Query stock price and metrics"
category = "finance"
parameters = {
"symbol": {
"type": "str",
"required": True,
"description": "Stock symbol (e.g., AAPL)"
},
"metric": {
"type": "str",
"required": False,
"default": "price",
"enum": ["price", "pe", "volume", "market_cap"]
}
}
def execute(self, symbol: str, metric: str = "price") -> ToolResult:
api_key = self.get_env("STOCK_API_KEY")
response = httpx.get(
f"https://api.stock.com/quote",
params={"symbol": symbol, "apikey": api_key}
)
data = response.json()
return ToolResult(
success=True,
data=data,
summary=f"{symbol} {metric}: {data.get(metric, 'N/A')}"
)
7. Plugin Security and Permissions
(1) Permission Model
| Permission | Description | Example |
|---|---|---|
network |
Allowed domains | ["*.atlassian.net"] |
filesystem |
Allowed paths | ["~/projects"] |
env_vars |
Required environment variables | ["JIRA_TOKEN"] |
tools |
Allowed built-in tools | ["fs_read"] |
subprocess |
Allow command execution | false |
(2) Security Audit
BASH
# Audit plugin permissions before installation
hermes plugin audit hermes-plugin-xxx
# Output example:
# ⚠️ Permission Audit:
# - network: *.example.com ✅
# - filesystem: /tmp ⚠️ (recommend limiting scope)
# - subprocess: true ❌ (recommend disabling or reviewing code)
# - env_vars: API_KEY ✅
❓ FAQ
Q How many plugins are in the marketplace?
A Community maintains 50+ plugins covering project management, cloud services, databases, design tools, etc.
Q Do plugins affect performance?
A Installed but unused plugins have zero impact. Resources are consumed only when invoked.
Q What's the difference between plugins and custom tools?
A Plugins are packaged extensions (tools + skills + config + templates), custom tools are individual tools. Plugins are more complete and shareable.
Q Can I install multiple plugins of the same type?
A Yes, but tool names may conflict. Recommend enabling only the one you need.
Q How to publish a plugin to the marketplace?
A Follow the plugin development spec, submit a PR to the hermes-plugins repository, after review it gets listed.
Q Will plugin updates break existing configuration?
A Following semantic versioning, minor updates are backward compatible. Major updates may have breaking changes with advance notice.
📖 Summary
- Plugins = packaged extension bundles of tools + skills + config + templates
- Installation methods: marketplace, Git, local path
- 50+ community plugins covering Jira/Notion/GitHub/AWS etc.
- Custom plugins: Python Tool class + YAML manifest
- Permission model controls network, filesystem, environment variables, subprocess access
📝 Exercises
- Basic (⭐): Install a community plugin (e.g., GitHub), complete a basic operation, verify functionality.
- Intermediate (⭐⭐): Develop a simple custom plugin (1-2 tools), install it in Hermes and test.
- Advanced (⭐⭐⭐): Develop a complete plugin (with tools, skills, configuration), publish it for team sharing, others install and use out-of-the-box.