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

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


📝 Exercises

  1. Basic (⭐): Install a community plugin (e.g., GitHub), complete a basic operation, verify functionality.
  2. Intermediate (⭐⭐): Develop a simple custom plugin (1-2 tools), install it in Hermes and test.
  3. Advanced (⭐⭐⭐): Develop a complete plugin (with tools, skills, configuration), publish it for team sharing, others install and use out-of-the-box.
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏