{"generated_at":"2026-10-19T20:08:51.845239+00:00","entries":[{"name":"0bull","repo":"https://github.com/0bull/agent-plugin","sha":"240890a71715375bc877b238491e414517e9d902","description":"Control real iPhones rented from 0bull (screenshots, on-screen text, taps, typing, device commands, recorded macros, an on-phone agent) and publish videos to TikTok and YouTube Shorts from them, through the hosted 0bull Streamable HTTP MCP server plus three workflow skills. Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code. Requires a 0bull account with a rented phone and browser OAuth consent (add the server with auth: oauth, then hermes mcp login 0bull); no API key or client secret is stored in the plugin. Posting sends the user's video and caption to TikTok or YouTube through the phone's own apps. Disclosure — hosted-only connector; screenshots, on-screen text, anything typed on the phone (including passwords or codes you hand the agent) and your videos and captions go to 0bull.net; posts publish publicly to TikTok or YouTube; the server also exposes rental tools that spend money, which the skills tell the model never to call but Hermes does not block.","maintainer":"0bull","tier":"community","category":"tools","docs_url":"https://github.com/0bull/agent-plugin#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"accent-picker","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"abec9e822a23089943dd1d476a104bf746f19f86","subdir":"accent-picker","title":"Accent Picker","description":"OKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.","maintainer":"NousResearch","tier":"official","category":"desktop","version":"1.0.0","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/accent-picker","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/abec9e822a23089943dd1d476a104bf746f19f86/assets/accent-picker.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"account-pool","repo":"https://github.com/roqianjas/hermes-account-pool","sha":"7a4fc9fd976ed68de9e6f70ba326ef2053741e69","subdir":"plugins/account-pool","version":"4.0.2","title":"Account Pool","description":"Run several accounts of one provider in Hermes' credential pool: `hermes account <provider> <action>` adds accounts with email verification, shows live usage per account, keeps the least-used account first (fill_first + a 5-minute balance timer over every provider with accounts), parks accounts for hours or on a weekly schedule, shows which bot is on which account and its tokens at API prices, alerts on dead logins, a full pool or a runaway bot, and can start an idle account's 5-hour window with one tiny request (wake). Adapters for anthropic and openai-codex; generic commands for any pool provider. Optional Accounts page in Hermes Desktop. Linux and Windows. Disclosure — logins stay in Hermes: park holds an entry out of rotation in Hermes' pool (mark_exhausted_and_rotate, reason \"parked\") and unpark is reset_status; the plugin's park list holds labels, ids and times only; expired tokens are refreshed by Hermes (try_refresh_matching); sign-in, in the terminal and on the Desktop page, runs `hermes auth add`; other profiles' accounts are read with read_credential_pool. It uses each account's access token as Hermes stores it for live usage and the email check (api.anthropic.com/api/oauth/usage and /profile, chatgpt.com/backend-api/wham/usage, with the client headers of Hermes' usage fetcher) and for wake (a command, a page button, or the timer after the opt-in `wake auto-on`): one one-word request per account through Hermes' Anthropic client or the Codex Responses endpoint, and the account's model list. Telegram alerts through `hermes send -t telegram` to the bot's home channel or a chat id kept in account-pool.json; no telemetry. Its session tracker, a post_api_request hook, runs in every profile and writes labels, ids and token counts only. `setup` writes plugins.enabled of every profile, links the plugin into every profile, removes the retired account-pool-tracker (`hermes plugins remove`) and, with --timer, adds a systemd user timer (Linux) or a Task Scheduler task for the user (Windows, no admin rights). Runs systemctl --user and notify-send (Linux), schtasks, powershell.exe and taskkill (Windows), hermes config set, hermes auth add/remove, hermes send, hermes plugins remove; reads every profile's config.yaml and state.db (read-only), the gateway config (whether the Telegram bot has a home channel) and /proc on Linux. The command registers in the default profile only and provides no tools. Live usage, the email check and wake send each account's own access token from Hermes' pool straight to its vendor with Claude Code (anthropic) and Codex CLI (openai-codex) client headers. The session tracker reads the running agent's current pool account (label and id only) by scanning Python thread frames for Hermes' private _credential_pool. On the first run after 3.x it moves parked logins from account-pool-parked.json back into Hermes' pool and deletes that file.","maintainer":"roqianjas","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/roqianjas/hermes-account-pool/blob/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/README.md","platforms":["linux","windows"],"screenshots":["https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/accounts.png","https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/report.png","https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/sessions.png","https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/alerts.png","https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/add-account.png","https://raw.githubusercontent.com/roqianjas/hermes-account-pool/7a4fc9fd976ed68de9e6f70ba326ef2053741e69/docs/screenshots/add-account-codex.png"],"known_issues":["After installing, run `hermes account <provider> setup` (add --timer for the 5-minute balance timer): it lists the plugin in every profile for the Desktop page and links it into every profile for the session tracker. Coming from 3.x it also removes account-pool-tracker.","Hermes can let a parked account back into rotation early (`hermes auth reset`, or a Codex quota it sees come back); the next balance run parks it again, and doctor names it until then. A park without --until is held for 30 days, and a balance run renews it once less than 15 days are left, so without the timer it ends after 30 days.","Windows: tested with a stand-in Task Scheduler and, up to 3.13, with Windows' own Python, cmd.exe and wscript.exe under Wine; not yet on a Windows machine. On Windows the timer runs only while the user is signed in.","Built for plugins.isolation: in_process (the default). Under host, Hermes skips plugin CLI commands, so `hermes account` and the timer's balance are unavailable.","Usage comes from undocumented provider endpoints (api.anthropic.com/api/oauth/usage, chatgpt.com/backend-api/wham/usage) that can change or rate-limit without notice; bots are unaffected when they do.","The Desktop page's sign-in relays `hermes auth add` and has run in sandbox tests (Hermes' real sign-in code, provider calls replaced), not yet with a new account on a real install. The Codex browser sign-in needs the browser on the same computer; when port 1455 is taken, Hermes signs in with a device code instead."],"capabilities":{"provides_tools":[],"provides_hooks":["post_api_request"],"provides_middleware":[],"requires_env":[]}},{"name":"acedatacloud-media","title":"Ace Data Cloud Media","repo":"https://github.com/AceDataCloud/AceDataCloudMediaHermes","sha":"8eaebfb86152d754061375de881548bfa096dd2d","description":"Suno music, Seedance video, HappyHorse (Happy Horse) video, GPT Image images and Nano Banana images by Ace Data Cloud; 17 selectable service toolsets and a Nano Banana image_generate backend. Each generate call spends Ace Data Cloud credits on your ACEDATACLOUD_API_KEY with no Hermes approval prompt; the model can choose costly options (pro models, 4K, up to 4 images), and prompts and reference URLs go to api.acedata.cloud. Google Search and face analysis also spend Credits. Disclosure — Each generate call spends Ace Data Cloud credits on your ACEDATACLOUD_API_KEY with no Hermes approval prompt, and the model can pick costly options (pro models, 4K, up to 4 outputs); Google Search and face analysis are billed too. Prompts, reference URLs and face images go to api.acedata.cloud. The tools are on wherever you enable their toolsets, including gateways.","maintainer":"AceDataCloud","tier":"community","category":"tools","version":"2.0.2","requires_hermes":">=0.21.6","image":"https://raw.githubusercontent.com/AceDataCloud/AceDataCloudMediaHermes/8eaebfb86152d754061375de881548bfa096dd2d/assets/catalog.png","readme":true,"capabilities":{"provides_tools":["acedatacloud_nano_banana_generate","acedatacloud_nano_banana_task","acedatacloud_veo_generate","acedatacloud_veo_task","acedatacloud_suno_generate","acedatacloud_suno_task","acedatacloud_fish_generate","acedatacloud_fish_task","acedatacloud_gpt_image_generate","acedatacloud_gpt_image_task","acedatacloud_seedance_generate","acedatacloud_seedance_task","acedatacloud_seedream_generate","acedatacloud_seedream_task","acedatacloud_happyhorse_generate","acedatacloud_happyhorse_task","acedatacloud_qwen_image_generate","acedatacloud_qwen_image_task","acedatacloud_google_search_search","acedatacloud_grok_generate","acedatacloud_grok_task","acedatacloud_face_analyze","acedatacloud_midjourney_generate","acedatacloud_midjourney_task","acedatacloud_flux_generate","acedatacloud_flux_task","acedatacloud_minimax_generate","acedatacloud_minimax_task","acedatacloud_wan_generate","acedatacloud_wan_task","acedatacloud_kling_generate","acedatacloud_kling_task"],"provides_hooks":[],"provides_middleware":[],"requires_env":["ACEDATACLOUD_API_KEY"]},"docs_url":"https://github.com/AceDataCloud/AceDataCloudMediaHermes/blob/8eaebfb86152d754061375de881548bfa096dd2d/README.md"},{"name":"acedatacloud","title":"Ace Data Cloud","repo":"https://github.com/AceDataCloud/AceDataCloudModelProviderHermes","sha":"568763ee21fe081562bb9bcd91e7323f8f81d6ff","image":"https://raw.githubusercontent.com/AceDataCloud/AceDataCloudModelProviderHermes/568763ee21fe081562bb9bcd91e7323f8f81d6ff/assets/catalog.png","description":"Ace Data Cloud GPT models with streaming and tool calling.","maintainer":"AceDataCloud","tier":"community","category":"models","requires_hermes":">=0.21.5","version":"1.0.2","docs_url":"https://github.com/AceDataCloud/AceDataCloudModelProviderHermes/blob/568763ee21fe081562bb9bcd91e7323f8f81d6ff/README.md","known_issues":["The model picker currently offers gpt-4.1-mini and gpt-4.1 only."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ACEDATACLOUD_API_KEY"]}},{"name":"adaption","repo":"https://github.com/adaptionlabs/adaption-hermes-plugin","sha":"958ad2e9077107be1919a5365541caa4e0acdcc8","description":"Dataset import, adaptation, augmentation, translation, synthetic generation, and AutoScientist fine-tuning through the hosted Adaption MCP. Portable Agent Plugins v1 package with three workflow skills; the MCP server is added separately with OAuth (or an API key for headless use). Disclosure — skill-only, no code; the MCP tools call api.prod.adaptionlabs.ai, and launches spend Adaption credits (the skills request a cost estimate first, Hermes does not enforce it). Hermes does not prompt before those tools unless the server is configured with trust: untrusted.","maintainer":"adaptionlabs","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/adaptionlabs/adaption-hermes-plugin#readme","version":"0.1.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"adspirer","repo":"https://github.com/Adspirer/adspirer-hermes-plugin","sha":"4688c38295a7b86f8119d7a0ecc09cd0b83a2730","description":"Create, analyze, and optimize campaigns across Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, Amazon Ads, ChatGPT Ads, and Microsoft Ads through the hosted Adspirer MCP. Portable Agent Plugins v1 package with fourteen paid-media workflow skills and approval safeguards; OAuth uses pinned mcp-remote@0.1.49 over npx stdio, so Node.js 20.18.1+ and npm are required. Disclosure — creates and edits real ad campaigns that spend your ad budgets; confirm-before-spend is enforced by skill instructions, not by Hermes.","maintainer":"Adspirer","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://github.com/Adspirer/adspirer-hermes-plugin#readme","version":"1.0.0","image":"https://raw.githubusercontent.com/Adspirer/adspirer-hermes-plugin/4688c38295a7b86f8119d7a0ecc09cd0b83a2730/assets/icon.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"adwhispr","repo":"https://github.com/adwhispr/adwhispr-hermes-plugin","sha":"80fd0e8fd93fe6207e6e9dd288811be9fe695bc2","description":"Research competitor ads, clone the winners, and run campaigns through the hosted AdWhispr MCP. Finds brands verified to be advertising in a niche right now, their longest-running Meta and TikTok ads, Instagram content and Google keyword data; clones a proven ad into a finished image or AI video for your brand (free script approval before any credit is charged); and launches paused campaigns on Meta, Google, TikTok, X and ChatGPT Ads. Portable Agent Plugins v1 package with twenty-four workflow skills; OAuth uses pinned mcp-remote@0.1.49 over npx stdio, so Node.js 20.18.1+ and npm are required. Disclosure — creates and edits real ad campaigns that spend your ad budgets (always created paused, two-step confirm server-side) and renders videos that use paid credits; the AdWhispr server is marked untrusted, so Hermes asks before every write or spend tool and refuses them in cron and headless runs. Sends research queries and your brand assets to adwhispr.com; sign-in is OAuth through npx mcp-remote@0.1.49.","maintainer":"AdWhispr","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/adwhispr/adwhispr-hermes-plugin#readme","version":"1.0.1","image":"https://raw.githubusercontent.com/adwhispr/adwhispr-hermes-plugin/80fd0e8fd93fe6207e6e9dd288811be9fe695bc2/assets/icon.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"afterforge","repo":"https://github.com/ussyverse/afterforge","sha":"067a739e5ab64097140c5200bde2cc5d52662ea5","description":"Local-first regression workbench turning agent failures and corrections into reviewed, evidence-backed checks.","maintainer":"ussyverse","tier":"community","category":"tools","docs_url":"https://github.com/ussyverse/afterforge/blob/067a739e5ab64097140c5200bde2cc5d52662ea5/README.md","platforms":["linux"],"capabilities":{"provides_tools":["fixlab_status","fixlab_scan","fixlab_list_cases","fixlab_inspect_case","fixlab_review_case","fixlab_build_regression","fixlab_verify_regression","fixlab_report"],"provides_hooks":["post_tool_call","on_session_end","pre_verify"],"provides_middleware":[],"requires_env":[]}},{"name":"agent-analytics","repo":"https://github.com/Agent-Analytics/agent-analytics-hermes-plugin","sha":"63f11d3669330e40dad977b7d32f9b69e69a9fb8","description":"Dashboard-only read plugin for Agent Analytics inside Hermes.","maintainer":"Agent-Analytics","tier":"community","category":"desktop","docs_url":"https://github.com/Agent-Analytics/agent-analytics-hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agent-batch","repo":"https://github.com/raaaas/hermes-agent-batch","sha":"064afc5dba8869df703ba055aa2760730c0d30dc","subdir":"plugin","description":"Parallel AI task orchestrator. Paste a task list into the desktop panel; Hermes phases it into dependency-ordered groups through the agent_batch_plan / agent_batch_phase tools (or you group it yourself in one click), then each phase dispatches one independent coding agent per task to a GitHub Actions workflow in a repo you name — own branch, own PR — and the panel tracks the runs and the PRs. GITHUB_TOKEN is the only required credential; AGENT_BATCH_REPO, AGENT_BATCH_WORKFLOW, AGENT_BATCH_MODEL and AGENT_BATCH_STATE are optional (the last is a directory override for the plan file, not a secret) and each can be set per plan in the panel instead. Disclosure — Hermes can read and rewrite the stored phase plan through the agent_batch_plan / agent_batch_phase tools, but dispatch is always a confirmed click in the panel. Each dispatch fires a GitHub workflow_dispatch with your GITHUB_TOKEN (Actions + pull-requests write) on the repo you name. The workflow you copy into that repo installs third-party coding-agent CLIs (cline by default; the others are unpinned npm packages) and runs them unattended, with auto-approve / skip-permissions, repo write access and your provider secrets. They push real branches and open real PRs, and your task text and repository code go to that runner's model vendor. LLM cost belongs to the runner: cline spends Cline Credits or a BYOK key, opencode free models need its zen relay, kilo needs an active Kilo Go subscription (keyless CI runs fail), and claude-code / codex / dsh need their own keys.","maintainer":"raaaas","tier":"community","category":"automation","docs_url":"https://github.com/raaaas/hermes-agent-batch","capabilities":{"provides_tools":["agent_batch_plan","agent_batch_phase"],"provides_hooks":[],"provides_middleware":[],"requires_env":["GITHUB_TOKEN"]},"requires_hermes":">=0.21.3","version":"1.0.0"},{"name":"agent-hint","repo":"https://github.com/dachaimahogany/hermes-agent-hint","sha":"5601d2353529352fb89c5ad85a1a9d3a68150cbb","description":"Give the inference engine behind each request a standard, machine-readable view of the agent session that produced it. Injects an X-Agent-Hint header (base64url JSON: session identity and call index, lifecycle state, soft priority, a cache-pinning hint, optional measured statistics) on main LLM requests, and can emit session lifecycle events out of band as local ndjson or as POSTs to a URL you configure. Request bodies are never modified, and nothing is added or sent until the plugin is enabled. Lets a scheduler pin a session to the instance already holding its KV cache, or rank a user-blocked session above background work, without teaching the engine anything about the client. Disclosure — when enabled, every main LLM request carries an X-Agent-Hint header (base64url JSON with the session id, call index, lifecycle state, priority and cache hints) to whatever provider is configured, not only hint-aware engines; with status_sink: http the same session events and usage/latency statistics are POSTed to the status_url you set, and ndjson writes them under $HERMES_HOME.","maintainer":"dachaimahogany","tier":"community","category":"general","docs_url":"https://github.com/dachaimahogany/hermes-agent-hint#readme","version":"0.5.1","requires_hermes":">=0.21.6","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start","on_session_end","on_session_finalize","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","subagent_start","subagent_stop","post_api_request"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"agent-hold-em","repo":"https://github.com/tony-simons-aiowa/agent-hold-em","sha":"dcd3b8d265778a70e6e671467cf2e6ec3cf21f42","subdir":"package/agent-hold-em","version":"1.0.0","description":"No-Limit Texas Hold 'Em for Hermes Desktop: play with three isolated Hermes profile agents using play chips only. Agent decisions use configured models and may consume provider tokens; this is a local game, not gambling software. Disclosure — each opponent is a zero-tool Hermes agent run in-process under the local Hermes profile you select for it, using that profile's configured provider credentials and spending its tokens; reads every local profile's name, model and avatar for the picker; stores the table (including hole cards) in plugin-data/agent-hold-em/table.json.","maintainer":"tony-simons-aiowa","tier":"community","category":"desktop","screenshots":["https://raw.githubusercontent.com/tony-simons-aiowa/agent-hold-em/dcd3b8d265778a70e6e671467cf2e6ec3cf21f42/assets/catalog-setup.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agent-janitor","version":"0.3.1","repo":"https://github.com/ZidoCode/agent-janitor","sha":"f8306948aa8edd0f7197dc9890ccd4fa19dd7aee","description":"Process hygiene for agent machines — finds the background processes your agent left behind (dev servers, tunnels, watchers, nohup jobs) using evidence signals (ppid=1 reparent, port listener via /proc/net/tcp{,6}, dev-server traits, TTL exceeded) and attributes them to the originating tool call via agent-ledger's ledger when present. Dry-run by default: nothing is killed until you write policy_mode=enforce; system daemons and host/VM management agents are exempt by name, a user-editable whitelist covers your real infrastructure, and each kill re-reads the cmdline first (SIGTERM, 2s, SIGKILL with PID-reuse check). stdlib-only, fails open. Disclosure — inside Hermes it only appends terminal commands that look like they start background work (first 300 characters, which can include inline secrets) to plugin-data/agent-janitor/spawns.jsonl, and reads agent-ledger's ledger.db read-only when present. Killing is a separate CLI you run yourself (janitor_cli.py sweep): after you write \"enforce\" to plugin-data/agent-janitor/policy_mode it sends SIGTERM then SIGKILL to every process re-parented to PID 1 for over a minute that is not on its built-in exempt list or your whitelist, whoever started it (for example a tmux server or a nohup'd hermes gateway), including other users' processes when run as root. Dry-run first; the dry-run list is the kill list.","maintainer":"ZidoCode","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/ZidoCode/agent-janitor#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"agent-ledger","version":"0.4.4","repo":"https://github.com/ZidoCode/agent-ledger","sha":"e9eba114cbebd9c4f55a90efe2eb3e1afe70a336","description":"Write-ahead ledger for agent side effects, with an OWASP Agentic Top 10 posture scorer. Disclosure — records the arguments (up to 4000 chars: terminal commands, file contents, MCP args) and a 300-char result digest of every state-changing tool call in a local plaintext SQLite ledger under HERMES_HOME/plugin-data/agent-ledger/ that is never pruned; injects a warning listing this session's unconfirmed calls into the next turn's context; an optional policy engine (off by default; you add policy.json and set policy_mode) can refuse matching tool calls before they run; the optional posture_daily.py script, run from your own cron, sends a score summary to Telegram with the bot token you give it.","maintainer":"ZidoCode","tier":"community","category":"tools","requires_hermes":">=0.19.0","docs_url":"https://github.com/ZidoCode/agent-ledger#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","pre_llm_call","on_session_start"],"provides_middleware":[],"requires_env":[]}},{"name":"agent-log","repo":"https://github.com/PixelAlchemist4/hermes-agent-log-plugin","sha":"e58702e60b2697c9d1dc3daa9eb65ac1fcc50560","description":"Readable agent.log viewer in the desktop status bar — a live, colour-coded feed of API calls, tools, turns, fallbacks, warnings and errors, with per-call tokens/latency/cache, stats tables, and a single-dot alert for genuine non-self-healing faults. Follows app theme/language.","maintainer":"PixelAlchemist4","tier":"community","category":"desktop","docs_url":"https://github.com/PixelAlchemist4/hermes-agent-log-plugin#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agent-mail-gateway","repo":"https://github.com/dominikamann/agent-mail-gateway","sha":"90c444bd7c0d2bf1955b8844ba3cf68d95f7f7fb","subdir":"integrations/hermes/agent-mail-gateway","description":"Email for your agents through a self-hosted Agent Mail Gateway: the agent-mail skill teaches reading, searching, replying and forwarding mail, attachments, sending and answering calendar invitations, how to react when the gateway's pre-send review or the operator's policies stop a message, and prompt-injection rules for email content. Portable Agent Plugins v1 package (skills/ only, no code, no mcp.json): you connect the gateway yourself as a remote MCP server in mcp_servers with your own key; the gateway enforces per-mailbox sender/recipient allow lists.","maintainer":"dominikamann","tier":"community","category":"tools","docs_url":"https://github.com/dominikamann/agent-mail-gateway/blob/main/docs/hermes.md","version":"0.3.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agent-station","repo":"https://github.com/thealps01-netizen/agent-station","sha":"ce8e97d25a3de6894e7f6066977c6346120b655b","subdir":"","description":"Read-only Hermes Desktop page for the focused chat: the main agent and its subagents, background commands and a Replay of file edits. Disclosure — its local dashboard routes serve the file-edit contents (Replay) and background-command output tails of the chat you view to the Desktop page; reads state.db read-only.","title":"Agent Station","maintainer":"thealps01-netizen","tier":"community","category":"desktop","requires_hermes":">=0.21.7","version":"3.0.3","docs_url":"https://github.com/thealps01-netizen/agent-station#readme","screenshots":["https://raw.githubusercontent.com/thealps01-netizen/agent-station/ce8e97d25a3de6894e7f6066977c6346120b655b/Docs/images/agents.png","https://raw.githubusercontent.com/thealps01-netizen/agent-station/ce8e97d25a3de6894e7f6066977c6346120b655b/Docs/images/commands.png","https://raw.githubusercontent.com/thealps01-netizen/agent-station/ce8e97d25a3de6894e7f6066977c6346120b655b/Docs/images/replay.png"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agent_memory_es","repo":"https://github.com/patrykkopycinski/hermes-plugin-agent-memory-es","sha":"e9469ee90396eae9db4a6b2526b5a0bc3d37dd62","description":"Self-owned long-term memory backed by the agent-memory-es service (Elasticsearch). Three agent tools — recall, retain, reflect — over episodic/ semantic/procedural tiers with hybrid BM25+kNN recall and server-enforced private/team/common visibility. Requires a running agent-memory-es instance. Disclosure — each user prompt (as a recall query), each user message and Hermes memory writes are sent to the agent-memory-es service at AMES_SERVICE_URL (default localhost:8123) with AMES_SERVICE_KEY; the model may store facts in shared team/common visibility tiers.","maintainer":"patrykkopycinski","tier":"community","category":"memory","requires_hermes":">=0.19","version":"0.1.0","docs_url":"https://github.com/patrykkopycinski/hermes-plugin-agent-memory-es#readme","homepage_url":"https://patrykkopycinski.github.io/hermes-plugin-agent-memory-es/","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["agent_memory_recall","agent_memory_retain","agent_memory_reflect"],"provides_hooks":[],"provides_middleware":[],"requires_env":["AMES_SERVICE_URL","AMES_SERVICE_KEY"]}},{"name":"agentchat","repo":"https://github.com/agentchatme/agentchat-hermes","sha":"8322d5c97fc81b1493c2ccfc83c19cee03173196","description":"AgentChat — peer-to-peer messaging for AI agents. Owns its own WebSocket; pokes the agent on inbound; the agent decides whether to reply. Send is a tool call, never automatic. Bundles the etiquette skill.","maintainer":"agentchatme","tier":"community","category":"platform","docs_url":"https://github.com/agentchatme/agentchat-hermes#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agentplaybooks-memory","repo":"https://github.com/matebenyovszky/agentplaybooks","sha":"819c3491d83c0371b678e2ccd7e95679b8a7d288","subdir":"packages/hermes-memory/agentplaybooks","description":"Private AgentPlaybooks memory for Hermes: native recall, explicit memory-write mirroring, archive and history. Disclosure — each turn's query is sent to agentplaybooks.ai for recall; explicit built-in memory writes are mirrored there. HTTPS endpoints only.","maintainer":"matebenyovszky","tier":"community","category":"memory","requires_hermes":">=0.21.4","version":"0.2.0","docs_url":"https://github.com/matebenyovszky/agentplaybooks/tree/819c3491d83c0371b678e2ccd7e95679b8a7d288/packages/hermes-memory/agentplaybooks","image":"https://raw.githubusercontent.com/matebenyovszky/agentplaybooks/819c3491d83c0371b678e2ccd7e95679b8a7d288/public/plugin-catalog/hermes-memory.png","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["AGENTPLAYBOOKS_MEMORY_API_KEY"]}},{"name":"agentplaybooks-tools","repo":"https://github.com/matebenyovszky/agentplaybooks","sha":"819c3491d83c0371b678e2ccd7e95679b8a7d288","subdir":"packages/hermes-portable/agentplaybooks-tools","description":"Connect AgentPlaybooks skills and hosted MCP/OpenAPI tools to Hermes, with guided authentication and API-key setup. Requires Node.js 20+ and @agentplaybooks/cli@0.5.0; the CLI is installed separately. Disclosure — skill-only; the separately installed apb CLI does the work. `apb connect --target=hermes --apply` and `apb sync --target=hermes --apply` edit the selected Hermes profile's config.yaml (adding the hosted playbook MCP endpoint and merged MCP definitions, so that playbook's remote tools become available to the agent); local writes require --apply; hosted operations contact agentplaybooks.ai after `apb login`, and `apb push --apply` uploads your project's configuration (secret references, not values).","maintainer":"matebenyovszky","tier":"community","category":"tools","requires_hermes":">=0.21.4","version":"0.1.0","docs_url":"https://github.com/matebenyovszky/agentplaybooks/tree/819c3491d83c0371b678e2ccd7e95679b8a7d288/packages/hermes-portable/agentplaybooks-tools","image":"https://raw.githubusercontent.com/matebenyovszky/agentplaybooks/819c3491d83c0371b678e2ccd7e95679b8a7d288/public/plugin-catalog/hermes-tools.png","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"agentwalletapi","repo":"https://github.com/openclawcash/agentwalletapi-hermes","sha":"426987c4df3e638270a0c41e5da4cb09fa82f439","version":"1.28.1","image":"https://raw.githubusercontent.com/openclawcash/agentwalletapi-hermes/426987c4df3e638270a0c41e5da4cb09fa82f439/assets/catalog-banner.png","subdir":"agentwalletapi","description":"OpenClawCash managed EVM and Solana wallets for AI agents — thin bridge to the OpenClawCash agent API. Disclosure — payments plugin for the OpenClawCash custodial wallet service (openclawcash.com); the model can create wallets and send EVM/Solana transfers from wallets reachable by OPENCLAWCASH_AGENT_KEY with no Hermes confirmation prompt; tool arguments go to openclawcash.com, and wallet_create also sends OPENCLAWCASH_EXPORT_PASSPHRASE to that API.","maintainer":"openclawcash","tier":"community","category":"tools","docs_url":"https://openclawcash.com/mcp","platforms":[],"capabilities":{"provides_tools":["agentwalletapi_wallets_list","agentwalletapi_wallet_get","agentwalletapi_wallet_rename","agentwalletapi_wallet_create","agentwalletapi_transfer_send"],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENCLAWCASH_AGENT_KEY"]}},{"name":"agora","repo":"https://github.com/yzy806806/agora","sha":"4e06ea3daa38aabf280483a91bbba64315927369","description":"Self-driving multi-agent development team. Role-based workers (architect, developer, reviewer, tester, researcher, writer, devops) are each a real Hermes profile with its own SOUL.md and skills; they discuss and vote on decisions, and the adopted conclusion is executed by the same team. A \"leader\" profile chairs the discussions and a heartbeat cron wakes it to assess state, unblock workers and plan the next phase. Discussion and execution share one board: a motion is a sub-task of a per-project team channel task, speech and votes are `[agora:msg]` comments, the conclusion is written to task.result, and an adopted conclusion becomes execution tasks parented to the motion so context reaches workers through Hermes' own parent handoff. Ships 20 tools, 3 kanban lifecycle hooks, a dashboard tab and an `hermes agora` CLI; installing writes nothing — the three bundled skills are deployed by an explicit `hermes agora setup`. Disclosure — creates a Hermes profile per worker by asking core to provision it (`hermes profile create --clone`, which copies config.yaml and .env into the new profile as owner-only files, never symlinks to the real credentials); spawns `hermes -p <profile> chat -Q -q` subprocesses to speak in discussions and to run dispatched tasks, which execute as full agents with that profile's toolset, including terminal and file writes inside the project workdir. Those subprocesses receive `--yolo --accept-hooks` ONLY when the project opted in via `agora_start_project(allow_unattended=True)`; the default is off, so a freshly installed team can read, discuss and plan but its flagged writes and shell commands fail closed. Also reads and writes the kanban database (tasks, task_comments, task_events, task_runs, task_links) restricted to its own project boards, including a persistent team-channel task pinned in `scheduled` status, and deletes a project's own tasks when it stops or completes; registers one recurring cron job and writes its runner script to HERMES_HOME/scripts/leader_heartbeat.sh; writes AGENTS.md into the configured project workdir; deploys three bundled skills into HERMES_HOME/skills/collaboration/; and serves a dashboard tab plus REST routes through the Hermes dashboard. No network egress of its own — model calls happen inside the spawned Hermes subprocesses under the operator's own provider credentials.","maintainer":"yzy806806","tier":"community","category":"automation","requires_hermes":">=0.20","docs_url":"https://github.com/yzy806806/agora#readme","version":"2.0.12","platforms":[],"readme":true,"capabilities":{"provides_tools":["agora_start_project","agora_stop_project","agora_project_status","agora_update_project","agora_create_task","agora_close_task","agora_raise_motion","agora_get_messages","agora_get_result","agora_list_motions","agora_close_motion","agora_message","agora_read_chat","agora_create_worker","agora_list_workers","agora_remove_worker","agora_list_templates","agora_create_team","agora_list_teams","agora_remove_team"],"provides_hooks":["kanban_task_completed","kanban_task_claimed","kanban_task_blocked"],"provides_middleware":[],"requires_env":[]}},{"name":"ai-usage-tracker","repo":"https://github.com/lvabarajithan/hermes-ai-usage-tracker","sha":"14e844f6ced5e0d618c767d726330a78c5cadadd","description":"Live subscription-quota windows for every AI provider Hermes can route to, as a desktop page plus a status-bar chip, with a per-profile picker — Codex, Claude, Copilot, OpenCode Go/Zen, Z.AI, Kimi, MiniMax, Nous, OpenRouter, DeepSeek.","maintainer":"lvabarajithan","tier":"community","category":"desktop","requires_hermes":">=0.21","platforms":["linux","macos"],"docs_url":"https://github.com/lvabarajithan/hermes-ai-usage-tracker","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"aichipmunk","repo":"https://github.com/Pacific-Cloud-Solutions/hermes-plugins","sha":"d565d7698a28f4364f819446e5f7ae2b67c57352","subdir":"plugins/aichipmunk","description":"Pairs this machine's Hermes bots with the AI Chipmunk mobile app from inside Hermes Desktop — pick a bot, get the reachable host, profile and API key as a scannable code. Registers a `hermes aichipmunk` CLI command, a desktop page and a dashboard API; no tools or hooks. Disclosure — on an explicit confirmed \"Switch to Tailscale\" it adds a persistent tailscale serve handler putting the API server's own port (plain HTTP inside the tailnet, API_SERVER_KEY auth) onto the tailnet; on a machine with no Tailscale CLI it instead runs hermes config set platforms.api_server.host <tailnet IP> on the owning profile and restarts that gateway; reads API_SERVER_KEY from every profile's .env on this machine on each status poll (masked in lists, the full key only in the pairing link and QR returned to an authenticated dashboard caller, which may be the phone over a published dashboard); shells out to the tailscale and hermes CLIs and probes only this machine's own /health; no third-party network calls.","maintainer":"Pacific-Cloud-Solutions","tier":"community","category":"platform","version":"0.1.0","image":"https://raw.githubusercontent.com/Pacific-Cloud-Solutions/hermes-plugins/d565d7698a28f4364f819446e5f7ae2b67c57352/plugins/aichipmunk/docs/hero-2x1.webp","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"aihubmix","repo":"https://github.com/AIhubmix/hermes-provider-aihubmix","sha":"b55e916362ebd0528c5d8981d12f3b8f7268b847","subdir":"aihubmix","description":"AIHubMix — unified OpenAI-compatible access to 400+ models; /model picker filtered to tool-capable routes.","maintainer":"AIHubMix","tier":"community","category":"models","docs_url":"https://github.com/AIhubmix/hermes-provider-aihubmix#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["AIHUBMIX_API_KEY"]}},{"name":"alans-way-computer","repo":"https://github.com/capthvnsen/alans-way-agents","sha":"0a61eb66894a00bf2e8a8091359ffb9bcf196a70","subdir":"alans-way-computer","version":"0.21.6","title":"Alan's Way Plugin: Computer Use","description":"Computer-use provider for Hermes: the stock computer_use tool drives desktop apps on the user's computer through the Alan's Workspace app, and on the VM's own desktop when the computer is offline. Needs the Alan's Way Plugin's workspace setup. Select it with computer_use.backend: alans-way-computer (the Alan's Way Plugin's setup.sh sets this when it installs the provider; in the catalog flow it prints the command). Disclosure — starts the workspace router from the profile's mcp_servers.workspace_browser block (command and args from config.yaml, with a filtered environment plus HERMES_WORKSPACE_ALLOW_DESKTOP_ACTIONS=1, which lets this private router child serve desktop input) as a long-running node child per session. The filtered environment passes PATH, HOME, locale and OS basics, plus DISPLAY, XAUTHORITY and DBUS_SESSION_BUS_ADDRESS so the router's VM-desktop fallback finds the X display and session bus; no keys or tokens. It talks to the router over stdio (app lists, element trees, screenshots and input actions). The router reaches the user's computer over SSH on the user's tailnet and falls back to the VM's desktop, where it uses xdotool, a screenshot tool and the AT-SPI accessibility bus if they are installed (the provider installs none of them). The provider never takes the focused window on the user's computer, and every input action still goes through Hermes's computer_use approval gate (cua:*:background entries in command_allowlist, which the Alan's Way Plugin's --allow-desktop-actions adds, skip the prompt). The provider itself makes no network calls. On Hermes 0.21.5, which has no provider API, it installs and does nothing. Since 0.21.0, captures keep element numbers stable across action replies on Mac and Windows, fold in changed controls and report removed numbers; a truncated list never treats unseen controls as removed. Linux keeps the whole-tree generation guard, so capture again before acting by number after a change. Action replies describe nearby changes and can mark the effect confirmed. Default som captures still fetch a screenshot to measure the window, but omit it from the model when named controls cover at least 35%; mode vision explicitly includes it and mode ax requests no screenshot. Replies identify the coordinate space and explain locked screens, missing permissions, unreadable or cut trees, hung apps and uncertain outcomes before a retry. Element trees, generation, screenshots' geometry and host OS are session memory, with no new persistent provider state, tools, hooks, middleware, required environment variables or direct network destinations. Browser commit approvals are separate from this provider's unchanged computer_use approval gate.","maintainer":"capthvnsen","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/capthvnsen/alans-way-agents/tree/0a61eb66894a00bf2e8a8091359ffb9bcf196a70/alans-way-computer","readme":true,"platforms":["linux","macos"],"known_issues":["Needs a Hermes build with the pluggable computer-use API (merged to main after 0.21.5). On older Hermes the plugin installs and does nothing. Install alans-way first and run its workspace setup, which writes the workspace_browser block this provider reuses.","Hermes asks for approval on every computer_use action type until it is granted. For an unattended Telegram bot, grant them once with Always in Telegram, or add cua:<action>:background entries to command_allowlist (see the README). Takes effect after a gateway restart.","Runs only in the plugin host: it cannot load under plugins.isolation: host, because the provider hands Hermes a live router session.","Typing without a target field works only on the VM's own desktop, where it types at the focused window (still approval-gated). On the user's computer the app never takes focus, so the agent uses set_value on a field instead.","The VM desktop path needs xdotool, a screenshot tool (scrot, maim or ImageMagick import), the AT-SPI bus and python3-gi on the VM. Without them those calls fail and the agent reports it; setup.sh warns about what is missing.","A default som capture may fetch the window screenshot even when it is omitted from the model after the 35% coverage check. Use mode vision to request it explicitly, or mode ax for an element-only capture. When a screenshot is omitted, coordinate= and element bounds are screen pixels.","Mac and Windows action replies update the held element list without shifting surviving numbers. On Linux, capture again before acting by number after a tree change; cut replies do not prove an unseen control is gone. A timeout or hung app can leave the action's outcome uncertain: capture before retrying."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"alans-way","repo":"https://github.com/capthvnsen/alans-way-agents","sha":"0a61eb66894a00bf2e8a8091359ffb9bcf196a70","subdir":"alans-way","version":"0.21.6","title":"Alan's Way Plugin","description":"Idle check-ins from the primary bot of a Hermes gateway on a Linux machine or a macOS guest VM: when the bound Telegram chat has been quiet for two hours, during 08:00-22:00 in the user's timezone, the bot checks in once (does one safe step and reports it, suggests one, or asks one question), backing off when unanswered. The model tool can only make check-ins quieter; more often, resume and wider hours are operator-only via /proactivity or the CLI. After install, the workspace-setup skill walks the agent through setting up Alan's Workspace (a separate desktop app for the user's computer: macOS or Windows) and Tailscale; desktop input goes only through Hermes's approval-gated computer_use tool. Disclosure — once the gateway connects Telegram, a background thread checks every 60 seconds. When the bound Telegram DM has been quiet (2 h by default, doubling per unanswered check-in, 08:00-22:00 user time), it injects an internal user-role prompt into that chat (needs plugins.entries.alans-way.allow_gateway_injection, which setup sets), so the bot runs a turn on its own and may take one \"safe, reversible\" step; the user still approves tool calls in Telegram. Its pre_llm_call/post_llm_call hooks see every session's turns and store only the bound chat's timestamps in plugin state. On first load it reads $HERMES_HOME/companion/proactivity/proactivity.sqlite3 once, read-only. The plugin itself makes no network calls. The workspace-setup skill has the agent fetch this repo at the catalog pin into ~/alans-way-agents (or reuse a clean clone there) and run setup.sh, which does the following. (1) Installs long-running services (Alan's Tools: a managed Chrome/Chromium on a loopback-only debugging port, the first free port from 9223 up, plus a browser broker and an optional availability watcher): systemd units hermes-alans-way-chromium, -browser and mac-watch with loginctl enable-linger where systemd is running; supervisord programs alans-way-chromium, alans-way-browser and alans-way-mac-watch, written to a conf.d file, where it is not (VM images and containers); a KeepAlive LaunchAgent on a macOS guest; logon Scheduled Tasks on Windows. When no X display is running it also installs and runs Xvfb on :99 (unit hermes-alans-way-xvfb or program alans-way-xvfb, -nolisten tcp). (2) Installs packages when they are missing, only as root or with passwordless sudo, through apt, dnf or yum: Google Chrome stable (the current .deb downloaded from dl.google.com on amd64 apt hosts, which also adds Google's apt repository, so the host keeps taking Chrome updates from Google), else the distro chromium package, else Playwright 1.49.1 Chromium through npx (root only); and xvfb. It only warns, and installs nothing, for xdotool, scrot, at-spi2-core and python3-gi, which the VM desktop path needs. (3) Appends the user's computer's public key to ~/.ssh/authorized_keys (administrators_authorized_keys on a Windows admin account) with a from= restriction to the Tailscale ranges 100.64.0.0/10 and fd7a:115c:a1e0::/48, rewriting an existing unrestricted line for the same key; pins its host key in known_hosts and adds a ControlMaster block to ~/.ssh/config for Tailscale hosts only (with a tailscale nc ProxyCommand when Tailscale runs in userspace-networking mode). (4) Adds a TimeoutStartSec=180 drop-in to the hermes-gateway unit. Hermes refuses plugin file changes while a gateway is running, so setup drain-stops that profile's gateway (SIGUSR1 under supervisord, else systemctl stop or hermes gateway stop), replays the refused plugin install or update, and starts it again. With --restart it restarts the gateway only if setup changed something the gateway loads (or an earlier restart never happened), detached about ten seconds after printing its summary: by SIGUSR1 drain under supervisord, else a transient systemd-run timer or hermes gateway restart. (5) For the main profile and every profile with its own Telegram bot, writes a managed mcp_servers.workspace_browser block (removing other entries that run this router, with a backup; a re-run keeps the computer address and OS it already holds, and --mac-ssh none removes them), turns off the built-in browser toolset for Telegram and cron (--keep-browser leaves it on), turns computer_use on for Telegram and cron, and sets computer_use.backend to alans-way-computer when it installed or found that provider (under the skill's --skip-plugin flow it only warns and prints the config command). It reads each profile's TELEGRAM_BOT_TOKEN only to derive the numeric bot id. It warns, and changes nothing, when a copy of the workspace-operations skill in a profile's skills directory shadows the plugin's. The workspace router reaches the user's computer over SSH on their tailnet; on the user's computer it calls the local API of Alan's Workspace on 127.0.0.1 with that app's bearer token. The skill's moved-VM checklist has the agent read the app's preferences.json on the user's computer over the same SSH path and tell the human where the VNC password lives without pasting it. The Alan's Workspace setup page has the human run the alans-way connect script from its main branch on their own computer, and the agent may install Tailscale with its official install script. The manual --allow-desktop-actions setup flag, which the skill offers but never adds itself, adds cua:*:background entries to command_allowlist. On a Hermes without the computer-use provider API, including 0.21.5, it also exposes workspace_computer_action, which drives the user's desktop, Terminal included, with no approval. The repo also holds bootstrap-orgo.sh and migrate.sh, which the plugin, setup.sh and the skills never run: a user runs them by hand to provision a fresh supervisord Linux computer (it fetches the Hermes and Tailscale installers over HTTPS, pipes setup.sh from this repo's main branch into bash unless --repo-ref is given, installs openssh-server if absent, writes supervisord programs, and POSTs the Tailscale login URL with a shared secret to a --callback URL when one is given) or to copy ~/.hermes, including .env, auth.json and state.db, to another host over SSH (it also looks up each profile's bot username at api.telegram.org with that profile's bot token). Since 0.21.0, every enabled profile also gets a default-on Telegram texting voice: an additional pre_llm_call hook reads that profile's voice mode and adds a tone note to Telegram turns, and transform_llm_output can remove a known leading assistant opener from the final Telegram reply. Messages containing backticks, quotes, indentation or silence markers are left unchanged by that polish. /tone texting|default|status and hermes tone store the mode under voice in Hermes plugin state; setup.sh --tone applies it to each configured profile. It layers over the user's persona without writing SOUL.md or agent.system_prompt. Check-ins now name one concrete open thread. /proactivity now requests one immediately from the bound chat even when paused or outside active hours, without changing the settings or unanswered-check-in count. Morning briefs are off by default: /proactivity brief on (or the operator CLI) enables one daily internal user-role prompt near active_start, with 0-20 minutes of jitter, at most two hours late and skipped after recent user activity. It asks the model to consult calendar and email read-only if those tools exist. The existing proactivity tool may disable the brief but cannot enable it; settings.morning_brief and last_brief_date are stored in the existing idle plugin state. The workspace router adds a commit object to the existing browser open/action tools for purchases, bookings, sends, posts, submissions, deletions and account changes. It checks control names, selectors, refs, action-looking URLs, batches, scripts, keys and dialogs against page state; missing page knowledge needs a snapshot or explicit commit. Shared commit-name patterns allow benign Buy it again, Book a demo and Subscribe & Save labels without excusing other commit-bearing words. It asks through MCP elicitation (60-second default wait, configurable with HERMES_ROUTER_APPROVAL_MS), refuses unavailable, declined, timed-out or stale approvals, drops agent-supplied approval receipts and adds a single-use receipt bound to the approved tab and epoch. An approved commit is never replayed after a lost connection or host change. It appends commit decisions to commit-decisions.jsonl beside the mac-watch state file, creating the log with mode 0600: timestamp, bot id, page origin, decision and any supplied kind, summary, amount, currency and counterparty, or the detected target. Page/control/challenge and pending-approval state is held in memory. The same two skills now prefer Hermes web_search/web_extract for plain lookups and the user's computer for interactive search, hand CAPTCHAs to the human, poll at most every 30 seconds for up to 30 minutes, and switch sources after two challenges in ten minutes. The router stops remembering challenge pages for failover and reports changed tab ids in result metadata. The operations skill covers the app's automatic takeover after its grace period; CAPTCHA and recording holds and Take-back cooldowns still keep the bot out. It also asks the agent to save durable facts and preferences to memory, never live tab state. The setup skill pins the companion app source to a82f5010248455600acfe275010e3e725355a2a8 and adds a long-chat reference: report effective compression and summary routing read-only, then only with explicit consent for each profile enable compression.proactive_prune_tokens at 48000, with 8000-character eligibility and 4096-token minimum reclaim, using the profile-scoped config CLI and keeping custom values, micro_compact and summary routing. This writes the approved profile's config.yaml and records prior values outside the repo for undo; setup.sh does not run it. A weekly time-saved report is a user-created Hermes cron recipe, not an installed job. setup.sh --verify now checks the running service manager, display, SSH ProxyCommand and managed browser's loopback /json/version endpoint, and reports noVNC reachability from its actual bind address. Manual supervisord restart guidance drains with USR1 first. The repo also adds scripts/voice_eval.py, user-run only: it sends fixed fictional scenarios and replies to Anthropic models through the SDK or claude -p for scoring and optionally writes a JSON result; the plugin, setup and skills never run it. Since 0.21.5, the plugin registers two more bundled skills, web-errands and integrations, with no new tools, hooks, commands or required environment variables. web-errands is guidance for shopping, booking, applications, filings, cancellations and claims in the workspace browser: every purchase, booking, send, submission and deletion still goes through the commit approval gate described above, CAPTCHA, sign-in and card-entry walls go back to the human, and card numbers are never stored. It has the agent record each application's company, role, date and posting URL in Hermes memory. For a price, restock or status watch the user asks for, it has the agent create a Hermes cron job with Hermes's cronjob_manage tool (or ask the operator), polling no more often than every 10 minutes and stopping after three consecutive failures; cron runs cannot answer approvals, so a watch that reaches its target stages the result for the user. The integrations skill has the agent check that an account is connected, with a small read, before promising a task that needs it, and reuses Hermes's Google Workspace, Himalaya, Home Assistant, Honcho and X routes first. The Google route uses Hermes's own setup, whose fixed scope list includes write access; the skill says so and stops if the user declines. Only after the user agrees in chat does it guide an install: a Hermes catalog plugin (Home Assistant or Honcho), a separately reviewed Himalaya v1.2.0 binary, rclone v1.75.2 (the release zip from downloads.rclone.org, checked against that release's SHA256SUMS before extraction) or Taskwarrior 3.5.0 (a source build of upstream commit 3419d5ba1e6a780fbbb0a8d68d8fd31e675c1bf8 cloned from GitHub, after checking the CMake and Rust versions and asking before changing any toolchain), the last two into versioned directories under ~/.local/share/alans-tools/. Secrets are entered by the human in a private terminal outside the agent session, never in Telegram; where a recipe needs a secret in the agent's terminal (a mail credential, RCLONE_CONFIG_PASS), it explains the grant and adds only that variable to the profile's terminal.env_passthrough. The recipes keep rclone.conf (mode 0600) and Taskwarrior's taskrc and data under the profile's HERMES_HOME/integrations. Scheduled reads are read-only cron jobs with a profile-local failure-count file, and pausing goes through the owner conversation or an explicitly authorized hermes cron pause. API writes (send, post, delete, share) need fresh explicit approval in the live conversation, and a declined, timed-out or unavailable browser commit is never completed through another tool. Mastodon is not bundled: its recipe is human-run documentation in this repo (docs/integrations/mastodon.md) that the plugin and skills never run. None of this runs at plugin load or from setup.sh. Telegram replies, check-ins and briefs share one status-first style: concrete status, evidence or caveat, plain limits, and no tool names, file paths, scripts or job and session IDs in user-facing text unless asked. Prices, availability and policies must come from a page read this turn or be labeled unconfirmed. Multi-step browser work runs in short chunks of about two actions with at most one plain progress update per chunk, a new mid-task message is acknowledged and folded in, and Hermes's clarify buttons may be used for decisions the user owns, never for approvals; a whole checkout batch still sits under one commit. For a message of 200 characters or fewer that is wholly a recap request, greeting, thanks or acknowledgment, the voice hook appends a three-sentence limit; the check reads only the current message, with no model call, history or network. The check-in menu now ends with asking about a decision the user owns. The operations skill adds tab hygiene: the agent closes finished tabs it owns with the existing close tool, never another bot's or the user's and never one with a pending handback or recording hold. The router adds requestingBotId to tab-list replies and forwards a reply over 4 MiB unchanged, without that decoration, writing a content-free line to stderr. The skill also tells the agent to report installed versions by running hermes --version, reading the plugin's install metadata, running local git describe and rev-parse on the Alan's Tools checkout, and calling the app's existing status tool. setup.sh --bind now also makes the bound DM Hermes's Telegram home by running hermes -p PROFILE config set for TELEGRAM_HOME_CHANNEL and TELEGRAM_HOME_CHANNEL_THREAD_ID (30-second limit each; on failure it warns to send /sethome); it loads on gateway restart. setup.sh --verify exits 0 for a complete local audit, 1 for failed required checks and 2 for a partial install (warnings, or skipped browser or services). The setup skill's checkout step now initializes ~/alans-way-agents if absent and fetches the pin (depth 1) from the repo's GitHub origin, or reuses a clean clone there after two read-only local git helpers (5-second limit) confirm one recorded and effective origin URL naming this repo; for file and direct Git installs it uses the installer-recorded revision, and it never falls back to a tag when that record is invalid. Its computer-use API probe separates an absent API from a failed or timed-out probe and ends the probe's process group or tree on timeout. The setup skill also offers, each only after an explicit answer, with readback and a remembered-choice marker in the profile's config: display.busy_input_mode (steer or interrupt, for every platform in that profile; asked once, only when the effective mode is interrupt and no choice is recorded) and one grouped Telegram question covering platforms.telegram.typing_indicator, display.platforms.telegram.interim_assistant_messages, tool_progress, notifications, long_running_notifications and busy_steer_ack_enabled, platforms.telegram.reactions, display.memory_notifications (hides the Memory updated and Self-improvement review notices on every platform in that profile), cron.wrap_response (profile-wide: removes scheduled-message headers, job IDs and footers for all delivery targets) and, as a separate city-confirmed question, timezone. Markers written through the same CLI are skills.config.workspace-setup.busy_input_choice and telegram_feel_choice; a legacy busy_steer_ack_choice marker is only read, never written. Silence and non-interactive runs write nothing, and neither setup script writes any of these keys. When the VNC viewer binds loopback only, the skill can, with explicit consent, have the human run a temporary SSH forward to the computer's loopback (local port 16080, ends after 30 minutes) and verify it with curl from that computer. For a manual or file install it explains the Hermes scanner result and, only after explicit consent to the exact reviewed revision, may retry hermes plugins install with --ref SHA --enable --force; --force confirms a caution verdict and cannot override a dangerous one. Hermes's unmodified scanner reports SAFE for this plugin: 0 HIGH, 2 MEDIUM (python_subprocess: the two git helpers in skills/workspace-setup/SKILL.md) and 3 LOW (hardcoded_ip_port: the loopback forward examples in the same file).","maintainer":"capthvnsen","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/capthvnsen/alans-way-agents/tree/0a61eb66894a00bf2e8a8091359ffb9bcf196a70/alans-way","readme":true,"platforms":["linux","macos"],"known_issues":["Install this on the machine that runs Hermes (a Linux host or a macOS guest VM), not on the user's primary computer. Windows guests are new and untested on real hardware. If the plugin is already installed from the catalog, setup leaves it as it is, so this pin stays.","Setup turns off Hermes's stock browser toolset for Telegram and cron so the agent uses the workspace browser (pass --keep-browser to leave it on). It never turns off computer_use: on Hermes with the computer-use provider API, desktop input goes through the gated computer_use tool and its alans-way-computer provider.","Check-ins need plugins.entries.alans-way.allow_gateway_injection: true and a bound Telegram DM (setup does both). A background thread checks every 60 seconds once the gateway connects Telegram.","Setup may install Chrome, Chromium, Playwright's Chromium or Xvfb with root or passwordless sudo, and may drain-stop and start the profile's gateway to apply a plugin change Hermes refuses while it runs. Pass --skip-services to skip the services and their packages.","The computer's SSH key is only accepted from the tailnet (from= restriction). An existing unrestricted line for the same key is rewritten with it.","A copy of the workspace-operations skill under a profile's skills directory shadows the plugin's and never gets its updates. Setup only warns; move anything worth keeping out of it, then delete it.","The Telegram texting voice is on by default in every enabled profile. /tone default turns off its note and final-reply polish; check-ins and morning briefs keep their own short style. Fixed Hermes approval/error/progress messages, direct sends and cron reports are outside these hooks; interim messages get the tone note but no polish, and streaming may show raw chunks before the final edit.","Morning briefs are opt-in (/proactivity brief on), use the existing bound DM and gateway-injection permission, and may read calendar/email through tools already available to the model. /proactivity now is user-only from that chat and bypasses pause/hours for one requested check-in.","Telegram browser Approve buttons need Hermes v0.21.6 or newer including commit 239740a19e (first in date tag v2026.6.19), despite the generic >=0.21.5 install floor. Without MCP form elicitation support commits fail with approval_unavailable; unattended cron declines them. The gate protects against agent mistakes and malicious pages, not a deliberately hostile bot with same-user terminal/file access.","The router appends approval details and detected targets to commit-decisions.jsonl beside mac-watch state, shared by routers using that path; no retention or rotation is implemented. Keep this local log private. CAPTCHA handback, recording holds and Take-back cooldowns still block takeover. If the router reports human_has_control before a commit approval, wait or claim the tab through the normal app control flow first.","Long-chat pruning is an agent-guided, separately consented config option per profile, not a setup.sh default. It preserves customized values and summary routing, rewrites sent history and can break the prompt-cache prefix; undo affects future pruning and cannot restore tool bodies already pruned from active context.","web-errands and integrations are agent guidance, not setup steps. Any Himalaya, rclone, Taskwarrior, Home Assistant or Honcho install happens only after the user agrees in chat, never from setup.sh or plugin load. Taskwarrior is built from source (CMake >=3.24, Rust >=1.91.1 and several GiB of temporary space). The Google Workspace route requests Hermes's fixed scope list, which includes write access.","Guided setup can change a profile's busy-input, Telegram display, notification, reaction, memory-notice, cron-wrapping and timezone settings, but only after explicit answers. Busy mode, memory-notice hiding, cron.wrap_response and timezone reach beyond Telegram within that profile. Silence and non-interactive runs write nothing; neither setup script writes these keys.","setup.sh --bind also sets TELEGRAM_HOME_CHANNEL for the bound profile through hermes config set and clears TELEGRAM_HOME_CHANNEL_THREAD_ID; it loads on gateway restart. If that fails, send /sethome in the primary DM.","Desktop control needs a Hermes with tools.computer_use.backend.ComputerUseProvider (commit 63f5e0ea45726c5d8d7d207d140613997730aab3 or newer); a version string alone does not prove it. setup.sh --verify exits 2, not 0, for a partial install."],"capabilities":{"provides_tools":["proactivity"],"provides_hooks":["pre_llm_call","post_llm_call","transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"alice-voice","repo":"https://github.com/bablobanov/hermes-alice-voice","sha":"e31f2c8e65bb861c6806bd19e8f57a1e89726450","subdir":"plugins/alice-voice","description":"Private Yandex Alice voice input for Hermes, with replies in Telegram. Disclosure — off until you set enabled: true and allow_gateway_injection: true; then, while the Telegram gateway is connected, it listens on 127.0.0.1 (port 8788 by default) for webhooks forwarded by your own HTTPS reverse proxy. The secret URL path (ALICE_WEBHOOK_SECRET) is the only authentication: Yandex request signatures are not checked, and the skill and account IDs in the request can be forged by anyone who has the URL. Each accepted request becomes a user message in one fixed Telegram DM session and runs with that session's tools; approvals stay in Telegram and slash commands are refused. Leaving owner_user_id empty accepts any Alice account presenting the URL.","maintainer":"bablobanov","tier":"community","category":"voice","requires_hermes":">=0.21.3","version":"0.3.0","title":"Alice Voice Input","image":"https://raw.githubusercontent.com/bablobanov/hermes-alice-voice/e31f2c8e65bb861c6806bd19e8f57a1e89726450/assets/hero.png","docs_url":"https://github.com/bablobanov/hermes-alice-voice/blob/e31f2c8e65bb861c6806bd19e8f57a1e89726450/README.md","readme":true,"platforms":["linux","macos","windows"],"onboarding":false,"known_issues":["Default profile and one existing authorized Telegram DM session only; a private Alice skill and operator-controlled HTTPS reverse proxy are required.","Requires in-process plugin execution: the Telegram connect factory receives the native Application and is not supported by plugins.isolation: host.","The webhook URL contains a bearer secret. Yandex request signatures are not verified; body skill/account IDs are not cryptographic authentication.","Alice acknowledges asynchronous scheduling, not completion or delivery. Replies are sent to Telegram, not spoken by Alice.","Deduplication is bounded and memory-only; no durable queue, exactly-once guarantee, or built-in global rate limiter."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ALICE_WEBHOOK_SECRET"]}},{"name":"ample","repo":"https://github.com/ishanray/hermes-ample","sha":"0f35366996a71b72ff93dc81e291bbda564b4bf0","version":"0.1.0","title":"Ample","description":"Ample (ample.computer) as native tools: deploy the websites and web apps Hermes builds to public HTTPS URLs, release changes to the same URLs, read build and runtime logs, list and delete apps; bundled skill ample:web-apps. Disclosure — maintained by Ample, the hosting service it deploys to; talks to Ample's API (https://api.ample.computer); on first use downloads the pinned Ample CLI 0.1.36 from Ample's release server (https://get.ample.computer/releases/0.1.36/, SHA-256 checked, never self-updated; cli_path uses your own binary instead) and runs it as a subprocess with an allowlisted environment and its crash reports off; ample_deploy uploads the folder it is given (home, Hermes home and credential directories refused) and writes ample.toml and .ample/ into it; with no AMPLE_CLIENT_ID/AMPLE_CLIENT_SECRET or AMPLE_TOKEN set, the first deploy signs up for a free Ample account (deleted after two days unless claimed) and saves its credential in Hermes's .env. A pre_tool_call hook sends every delete (scoped to that app) and the first publish of each folder to Hermes's approval gate; only folders the user has published, recorded in plugin state, skip it. No telemetry, no background processes.","maintainer":"ishanray","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/ishanray/hermes-ample#readme","readme":true,"capabilities":{"provides_tools":["ample_deploy","ample_logs","ample_apps","ample_app_delete"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"anatomy-museum","title":"Anatomy Museum","repo":"https://github.com/danrudy33/anatomy-museum","sha":"6c2f3912b6af87d1149e38be523157057533d585","version":"0.1.0","description":"Native Anatomy community gallery with search, local favorites and explicit sandboxed standalone playback. Disclosure — when opened it fetches gallery metadata and thumbnails from a third-party GitHub repository (wheresryan22/anatomy-community, resolved at runtime from its mutable previews branch via api.github.com and raw.githubusercontent.com). \"Open figure in Hermes\" downloads that community figure's HTML and runs its JavaScript inside the Desktop SDK sandbox (opaque origin, scripts only), and \"Browse Ryan's website\" embeds skills.wheresryan.sh the same way. Favorites and filters stay in Desktop-local plugin storage; no credentials or Hermes data are sent.","maintainer":"DanRudy33","tier":"community","category":"desktop","requires_hermes":">=0.21.6","platforms":["macos"],"readme":true,"docs_url":"https://github.com/danrudy33/anatomy-museum#readme","screenshots":["https://raw.githubusercontent.com/danrudy33/anatomy-museum/6c2f3912b6af87d1149e38be523157057533d585/docs/gallery-dark.png","https://raw.githubusercontent.com/danrudy33/anatomy-museum/6c2f3912b6af87d1149e38be523157057533d585/docs/gallery-light.png"],"known_issues":["Requires the matching native Desktop SDK; tested source-built Desktop reports 0.0.0, not a certified prebuilt release number.","Full embedded website navigation and website-wrapper Play-with-it are unsupported; repository standalone playback and external recovery are separate.","Wankel, Zipper and WebGL Ripple tank were interaction-tested; the other catalog figures were not individually certified."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"ando-platform","repo":"https://github.com/Ando-Corporation/hermes-ando","sha":"1bfde877e1ed194ebf461d64e0468605d7e21a87","tier":"community","category":"platform","maintainer":"Ando-Corporation","version":"0.2.4","description":"Connect a Hermes agent through an existing Ando invitation and receive authorized messages. Disclosure — connects outbound to Ando (mcp.ando.so, api.ando.so, realtime.ando.so) with an agent API key stored at $HERMES_HOME/ando/connection.json (mode 600); Ando messages from the connecting member (or members the operator explicitly allowlists) start Hermes turns and the final reply, with any files it attaches, is posted back to Ando; message attachments are uploaded and downloaded through short-lived single-use links Ando issues (up to 20 MB each; received files are cached in the profile's Hermes cache); hermes ando connect edits gateway.platforms.ando in config.yaml.","docs_url":"https://github.com/Ando-Corporation/hermes-ando/blob/1bfde877e1ed194ebf461d64e0468605d7e21a87/README.md","platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"android-emulator","repo":"https://github.com/PIR8-Software/hermes-android-emulator","sha":"3b5cb61e8bd6c4600f797a44c44234a6371bd59a","description":"Control a headless Android emulator from Hermes — live sidebar, app management, GPS/battery/network simulation, and ADB tools. Emulator host is Linux. Disclosure — requires a pre-installed Android SDK under ~/Android/Sdk; runs adb, emulator, avdmanager and sdkmanager on the host, and the dashboard's Create AVD action downloads Android system images from Google via sdkmanager. emu_shell runs arbitrary commands inside the emulator; emu_install/emu_push copy host files into it.","maintainer":"PIR8-Software","tier":"community","category":"tools","version":"1.1.1","image":"https://raw.githubusercontent.com/PIR8-Software/hermes-android-emulator/3b5cb61e8bd6c4600f797a44c44234a6371bd59a/docs/images/android-emulator-banner.png","docs_url":"https://github.com/PIR8-Software/hermes-android-emulator#readme","platforms":["linux"],"capabilities":{"provides_tools":["emu_status","emu_shell","emu_install","emu_uninstall","emu_screenshot","emu_tap","emu_swipe","emu_type","emu_key","emu_launch","emu_packages","emu_push","emu_pull","emu_logcat","emu_gps","emu_battery","emu_network","emu_deeplink"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"antenna","repo":"https://github.com/ClawReefAntenna/antenna-hermes","sha":"f1fe906ea3b7292dcec5e59754cf4a50f84d737b","description":"Signed messaging with paired Hermes and OpenClaw agents, with receiver-controlled live and opt-in non-YOLO headless delivery. Disclosure — runs a loopback-only Node receiver when listen_port is set (you expose only its HTTPS receive route); messages from paired peers become agent turns in the sessions you approve and may cause tool use, and opt-in background delivery runs them in non-YOLO sessions only; smart scanning sends message text through your configured provider; ClawReef Public Groups use a plaintext relay that ClawReef can read; identity keys, peer credentials, holds and receipts live in the profile's plugin-data/antenna (0700/0600) and backups contain credentials; policy and storage commands rewrite config.yaml (comments and formatting are lost).","maintainer":"ClawReefAntenna","tier":"community","category":"automation","title":"Antenna for Hermes","image":"https://raw.githubusercontent.com/ClawReefAntenna/antenna-hermes/c3285e552389d4e117ed9e4dd959aa888c813570/docs/assets/antenna-hermes-feature-header-v1.jpg","version":"1.7.0","docs_url":"https://github.com/ClawReefAntenna/antenna-hermes/blob/f1fe906ea3b7292dcec5e59754cf4a50f84d737b/references/USER-GUIDE.md","platforms":["linux"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start","on_session_finalize","on_session_reset","pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"antigravity-agy","repo":"https://github.com/Realtyxxx/hermes-plugin-antigravity-agy","sha":"f85003d3ce0de3844e2d5c23174d630ff3586e5d","description":"Run Hermes on a Google Antigravity subscription through the official agy CLI, with agy as the model only: a generated custom agent removes agy's built-in tools, Hermes tools are exposed through an inventory-only MCP server with native function calling, and every tool call is handed back to Hermes. Fails closed on any non-Hermes tool step or silent agent fallback; pre-warms agy for fast tool loops. Disclosure — routes inference through Google's official agy CLI and counts against the Antigravity/Gemini subscription agy is signed in to; the plugin never reads, copies or links agy's credential files. agy runs in your real HOME with the gateway's environment; by default the plugin moves the agy conversation records created by its own idle pre-warmed processes under ~/.gemini/antigravity-cli/ to the trash (trash-put from PATH; ANTIGRAVITY_AGY_CLEANUP=off disables) and pre-warms up to 4 idle agy processes (~400 MB each).","maintainer":"Realtyxxx","tier":"community","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/Realtyxxx/hermes-plugin-antigravity-agy#readme","version":"0.1.0","readme":true,"platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"antigravity-oauth","repo":"https://github.com/neerazz/hermes-antigravity-oauth","sha":"466fafb9b6e8099735d79ed32f97005a477ba144","description":"Sign in to Google Antigravity with `hermes auth add antigravity-oauth` (or one command, `npx hermes-antigravity-oauth`) and run Hermes on the Antigravity plan: Gemini 3.x, Claude 4.6, GPT-OSS. Every request is made by Google's official agy CLI under agy's own login. The plugin writes your Hermes SOUL.md and system prompt into agy's workspace GEMINI.md so the persona carries over. When a model reaches for an agy-native tool (run_command, view_file, grep_search, and so on) the call is re-issued as the matching Hermes tool, which then runs under Hermes approvals. agy never executes tools on the host, and unmapped native tools are blocked. Disclosure: inference counts against the Antigravity/Gemini subscription agy is signed in to. The plugin never reads, copies or uploads the OAuth token. It symlinks agy's antigravity-oauth-token file, and on macOS ~/Library/Keychains, into a per-session private temp HOME, which is deleted on close. It also probes the OS keyring (security / secret-tool / cmdkey) for credential presence only. Derived from antigravity-subscription-directsdk (MIT). Disclosure — inference counts against the Antigravity/Gemini subscription agy is signed in to. The plugin does not read or upload the OAuth token itself; it symlinks (hard-links, or as a last resort copies) agy's antigravity-oauth-token file, and on macOS ~/Library/Keychains, into a per-session private temp HOME that is deleted on close, probes the OS keyring (security / secret-tool / cmdkey) for credential presence only, and writes the full Hermes system prompt into that temp workspace as GEMINI.md each turn. Derived from antigravity-subscription-directsdk (MIT).","maintainer":"neerazz","tier":"community","category":"models","requires_hermes":">=0.21.0","docs_url":"https://github.com/neerazz/hermes-antigravity-oauth#readme","version":"0.1.2","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"antigravity-subscription-directsdk","repo":"https://github.com/soyelmismo/hermes-antigravity-subscription","sha":"48b9858ab639eadb46bd03be04ea3c6b7bde2361","description":"Run Hermes on an Antigravity subscription via the official agy CLI (DirectSDK path). Streams tokens progressively, persists multi-turn trajectories via agy --conversation (up to 239k tokens), discovers models dynamically per account, maps thinking effort, reports quota in /usage, and aborts reported native tools. Disclosure — routes inference and /usage quota reads through Google's official agy CLI under your subscription (usage counts against it); links (symlink, else hardlink/copy) the antigravity-oauth-token into a per-session private temp HOME deleted on close; probes OS keyring presence (Linux Secret Service, macOS Keychain, Windows Credential Manager) without reading secrets; on macOS symlinks ~/Library/Keychains for CLI session reuse; never writes to vendor credential stores; strips credential-looking environment variables before spawning agy (name heuristic; ANTIGRAVITY_ENV_STRICT for an allow-list). Disclosure — the opt-in ANTIGRAVITY_DEBUG_PROMPT_DIR env var writes every outgoing prompt (full conversation text) to that directory.","maintainer":"soyelmismo","tier":"community","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/soyelmismo/hermes-antigravity-subscription#readme","version":"1.0.20","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"anyapi","title":"AnyAPI.ai","repo":"https://github.com/es697/hermes-provider-anyapi","sha":"e5b7b985b5aa56bc585ef1924858978696eb0c3a","subdir":"anyapi","description":"AnyAPI.ai — unified OpenAI-compatible access to 400+ models; /model picker filtered to tool-capable routes. Disclosure — sends your prompts, tool results and ANYAPI_API_KEY to api.anyapi.ai, a third-party relay (AnyAPI Inc.) that forwards them to the upstream vendor serving the chosen model; billed to your AnyAPI account.","maintainer":"es697","tier":"community","category":"models","docs_url":"https://github.com/es697/hermes-provider-anyapi#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ANYAPI_API_KEY"]},"version":"0.1.0","requires_hermes":">=0.20.0"},{"name":"anyrouter","repo":"https://github.com/duyet/hermes-provider-anyrouter","sha":"86bc17dd61ade9baa6f2fb7d440979b55359a907","subdir":"anyrouter","description":"AnyRouter — unified model gateway (OpenAI-compatible); /model picker filtered to tool-capable routes, first-party meta-models like anyrouter/hermes. Disclosure — sends your prompts and ANYROUTER_API_KEY to anyrouter.dev, a third-party relay that forwards to upstream vendors (OpenAI, Anthropic, Google, xAI, …), on some plans through a shared pool of other members' donated free-tier vendor keys; billed in prepaid AnyRouter credits. anyrouter/hermes is AnyRouter's own routing meta-model, not a Nous Research model. Opt-in ANYROUTER_APP_ATTRIBUTION=1 adds Hermes attribution headers.","maintainer":"duyet","tier":"community","category":"models","docs_url":"https://github.com/duyet/hermes-provider-anyrouter#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ANYROUTER_API_KEY"]}},{"name":"anysearch","repo":"https://github.com/vollegrewar/hermes-plugin-anysearch","sha":"43c1757a5d12d4d7adb4e74326c99182f4957b6f","description":"AnySearch web search and extraction plus two real-time fallback chains: when a primary backend fails (Exa quota, Firecrawl timeout), the same call is served by AnySearch (1,000 free requests/day).","maintainer":"vollegrewar","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/vollegrewar/hermes-plugin-anysearch#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"aphrodite","repo":"https://github.com/PlayForm/Aphrodite-Hermes","sha":"e95afcd9d99360fdf73ecdd2f540af7cd81597ec","description":"CCR compression plugin - 28-type classifier, 13 tools, opt-in context engine, TOML-driven templates. Disclosure - pre_tool_call auto-backgrounds long terminal/process commands (modify: background=true, notify_on_complete=true) and rewrites chained terminal commands when enabled. Disclosure — hook and tool logic runs in prebuilt native binaries (libaphrodite_hermes + aphrodite proxy, v1.6.6) built from the public PlayForm/Aphrodite source and fetched by an explicit download.sh step checked against in-tree SHA-256 sums; register() starts a background proxy on 127.0.0.1:9797/9798 whose management routes are open to local processes unless APHRODITE_MGMT_TOKEN is set; pre_tool_call by default rewrites slow terminal commands (cargo/npm/pip/docker/curl…) to run in the background (background=true, notify_on_complete=true) and splits chained commands when enabled; aphrodite_prefetch reads files the model names into its store (refuses .env, auth.json, ~/.ssh and the Hermes home); requires its own APHRODITE_API_KEY for an upstream LLM endpoint (default api.openai.com).","maintainer":"NikolaRHristov","tier":"community","category":"tools","requires_hermes":">=0.20.2","docs_url":"https://github.com/PlayForm/Aphrodite-Hermes#readme","version":"2.2.6","capabilities":{"provides_tools":["aphrodite_retrieve","aphrodite_compress","aphrodite_stats","aphrodite_rebuild","aphrodite_files","aphrodite_diff","aphrodite_search","aphrodite_directive","aphrodite_test","aphrodite_catalog","aphrodite_reclassify","aphrodite_prefetch","aphrodite_prefetch_status"],"provides_hooks":["on_session_start","transform_tool_result","pre_llm_call","transform_terminal_output","post_llm_call","pre_tool_call"],"provides_middleware":[],"requires_env":["APHRODITE_API_KEY"]}},{"name":"apify","repo":"https://github.com/apify/apify-hermes-agent-plugin","sha":"a3a7af0c0dda9fdac79d67fb0a7a50b7a39cd91d","description":"Apify, the largest marketplace of tools for AI: discover, run, and collect results from thousands of ready-to-run Actors, from the comfort of your agent, plus an Apify backend for the built-in web_search and web_extract tools.","maintainer":"apify","title":"Apify","version":"0.1.5","image":"https://raw.githubusercontent.com/apify/apify-hermes-agent-plugin/a3a7af0c0dda9fdac79d67fb0a7a50b7a39cd91d/assets/banner.png","tier":"community","category":"web","docs_url":"https://docs.apify.com/integrations/hermes-agent","capabilities":{"provides_tools":["apify_discover","apify_start","apify_collect"],"provides_hooks":[],"provides_middleware":[],"requires_env":["APIFY_API_TOKEN"]}},{"name":"approval-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"4a2ef866a51f1c99ed1d77e423136450340d901b","subdir":"approval-ledger","description":"Local ledger of Hermes's approval prompts (dangerous commands, protected writes, MCP consent, smart-mode verdicts): /approval-log shows how often each rule asked, how many prompts were approved, denied or left unanswered, and how long a person took to answer, per rule, per surface or per day, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /approval-log recent lists the newest decisions (ten, or up to 100 with /approval-log recent 50). Disclosure — writes decision metadata (session id, surface, rule label, answer, timings; no command, description or session key) to plugin-data/approval-ledger/approvals.jsonl, trimmed to 5,000 rows past 2 MB; observer only, cannot answer or change an approval; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/approval-ledger","version":"1.2.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/4a2ef866a51f1c99ed1d77e423136450340d901b/docs/approval-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_approval_request","post_approval_response"],"provides_middleware":[],"requires_env":[]}},{"name":"ard-kit","repo":"https://gitlab.com/ameobius-ai/ard-kit","sha":"99796c7d776d89c8dcf99489b89a2b52831c4dc9","description":"Agentic Resource Discovery — search a local tool catalog by intent and inspect an entry to get its invoke command. Ships the ard-registry skill plus an stdio MCP server (ard_search / ard_inspect / ard_verify); stdlib only, the run stays local. Disclosure — no network egress, no API keys and no environment variables read by the MCP front, which ranks a catalog JSON on disk; no catalog ships in the repo, so the first call returns an explicit error naming the `python -m ard_kit.catalogize` command that builds one.","maintainer":"ameobius-ai","tier":"community","category":"tools","docs_url":"https://gitlab.com/ameobius-ai/ard-kit#readme","version":"0.20.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"artifact-relay","repo":"https://github.com/eloktev/hermes-artifact-relay","sha":"c91fa9229121dd616a275a45447301eacca45e6f","description":"Publish and read private Markdown or HTML reports through your Artifact Relay server.","maintainer":"eloktev","tier":"community","category":"tools","docs_url":"https://github.com/eloktev/hermes-artifact-relay#readme","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["artifact_read","artifact_publish"],"provides_hooks":[],"provides_middleware":[],"requires_env":["ARTIFACT_RELAY_API_TOKEN"]}},{"name":"artifacts","repo":"https://github.com/dmmeteo/hermes-artifacts","sha":"57b61fca2872d15060d8a9b30b9e51242e9cb357","subdir":"plugin","title":"Hermes Artifacts","description":"Private library for the finished documents agents make (self-contained HTML, Markdown, SVG, PNG, WebP), with an Artifacts dashboard tab and explicit, expiring, revocable guest links for one artifact each. Early public preview. Disclosure — the plugin is a client of a separate Artifacts service you run yourself from the same repository (not installed by the plugin): six tools and the dashboard tab send artifact bytes and metadata to HERMES_ARTIFACTS_URL with the machine credential HERMES_ARTIFACTS_TOKEN, resolved through Hermes secret scope, held server-side and never sent to the browser. artifact_publish reads a resolved local path only after Hermes read-policy and supported-extension checks; an explicit kind must match. artifact_download checks raw and resolved destinations against Hermes write policy, refuses approval-required paths even with overwrite=true, and writes atomically through a temporary sibling. File policy is defense in depth, not filesystem isolation. Sharing creates a public bearer link on your service; revocation cannot recall copies. Stores no data and no credentials of its own; no hooks, background processes or telemetry.","maintainer":"dmmeteo","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/dmmeteo/hermes-artifacts/blob/57b61fca2872d15060d8a9b30b9e51242e9cb357/docs/hermes.md","version":"0.1.0","readme":false,"platforms":[],"known_issues":["Conflicts with artifact-relay because both register artifact_publish. Enable only one of these plugins.","Needs the Hermes Artifacts service running separately (run from source; no package or image yet). Tested with Hermes 0.21.x and in Chromium only."],"capabilities":{"provides_tools":["artifact_publish","artifact_list","artifact_get","artifact_download","artifact_share","artifact_revoke_share"],"provides_hooks":[],"provides_middleware":[],"requires_env":["HERMES_ARTIFACTS_URL","HERMES_ARTIFACTS_TOKEN"]}},{"name":"aside-browser","repo":"https://github.com/leonphull/hermes-aside-browser","sha":"ffd4e0e0de4b3a8624f3d83f98c378b88d6f9581","description":"Use the signed-in Aside browser as Hermes's browser when the Aside CLI is installed. Disclosure — runs the local aside CLI to drive your signed-in Aside browser (page text, screenshots, Aside memory, model-written JavaScript via aside_repl) without a Hermes approval prompt; Aside's permission level is a user-only setting (default ask) that covers aside_exec only. Optional pre_tool_call hook blocks Hermes' built-in browser tools while Aside is ready when browser_policy is always. Reads Aside's settings.json for the model list; no telemetry.","maintainer":"leonphull","tier":"community","category":"tools","requires_hermes":">=0.21.0","docs_url":"https://github.com/leonphull/hermes-aside-browser#readme","version":"0.3.0","platforms":[],"known_issues":["Drives the signed-in Aside browser on this machine. Does not install Aside."],"capabilities":{"provides_tools":["aside_status","aside_exec","aside_repl","aside_session","aside_memory"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"author-feed","repo":"https://github.com/TakeshiTGAL/hermes-plugin-author-feed","sha":"4a302be82926ed9f0ccc87bba242cf7acfef37bb","description":"Read one public profile and watch one account, with profile_get, author_feed and author_watch. Disclosure — HTTPS GET only to public.api.bsky.app, no API key, and no program on your machine. The tools are on for every surface, including gateways, and ask for no approval: anyone you allow on your gateway can call them. Turn a surface off with hermes tools. hermes author-feed schedule creates one cron job, a model turn every hour by default (two or more model requests, no daily cap). Delivered to local unless you pass --deliver, so no chat by default. Run hermes author-feed unschedule before removal. A leftover job after the plugin is gone stops with hermes cron remove <id>. Under plugins.isolation: host the watch cannot run and posts a notice saying so on every run. The first run only records what is already there. One run reads at most the latest 3 pages and announces a new post by this account on them. When every row on those pages is new, with no saved post or mark, and the feed still offers another cursor, it also posts a possible-miss notice, at most once in 24 hours while that keeps happening. Replies, including the account's own thread continuations, are not announced. It relies on private Hermes parts, so an update can stop it. State stays in <HERMES_HOME>/plugin-data/author-feed after uninstall.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-author-feed#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["profile_get","author_feed","author_watch"],"provides_hooks":[],"provides_middleware":[]}},{"name":"auto-pin","repo":"https://github.com/bmcfiv/hermes-plugin-auto-pin","sha":"4458088ccfe3b5371e16fdae37753956f1296713","description":"Automatically pin every new interactive session (desktop, CLI, TUI) and the branches you fork from them. Cron, one-shot, subagent and messaging sessions are left alone, and unpinning a session sticks. Disclosure — on each new desktop/CLI/TUI session it sets the session's pinned flag in Hermes's session database (state.db) through the shared SessionDB handle, and records each automatic pin in $HERMES_HOME/auto-pin/ledger.txt; no network, no tools.","maintainer":"bmcfiv","tier":"community","category":"general","requires_hermes":">=0.21.1","docs_url":"https://github.com/bmcfiv/hermes-plugin-auto-pin#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start"],"provides_middleware":[],"requires_env":[]}},{"name":"aux-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"aee39a67b4ffb1ff786c417fb92f997a8c7663b7","subdir":"aux-ledger","description":"Local ledger of Hermes's auxiliary LLM calls (titling, compression, vision, approval): /aux shows tokens, time and failures per task, model, provider or day, or lists the newest calls (ten, or up to 100 with /aux recent 50), for the last 24 hours, any number of hours or days, the latest session or everything recorded. Disclosure — writes auxiliary-call metadata (ids, models, timings, token counts, no prompt or response text) to plugin-data/aux-ledger/calls.jsonl, trimmed to 5,000 rows past 2 MB; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/aux-ledger","version":"1.4.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/aee39a67b4ffb1ff786c417fb92f997a8c7663b7/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_auxiliary_call"],"provides_middleware":[],"requires_env":[]}},{"name":"beam","repo":"https://github.com/Beam-Network/beam-hermes","sha":"d41448cb3f08bacbc368a4948ecbe310e5f6964c","version":"0.1.1","title":"Beam","description":"Move data across cloud storage and exchange end-to-end encrypted messages, files and media between agents with Beam Network (Bittensor SN105).","maintainer":"Beam-Network","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/Beam-Network/beam-hermes#readme","readme":true,"capabilities":{"provides_tools":["beam_account","beam_transfer_estimate","beam_transfer_start","beam_transfer_status","beam_transfer_list","beam_transfer_cancel","beam_rooms","beam_room_listen","beam_room_messages"],"provides_hooks":[],"provides_middleware":[],"requires_env":["BEAM_API_KEY"]}},{"name":"bento","repo":"https://github.com/shagghiesuperstar/hermes-plugin-bento","sha":"f490ed02c0e377acc9112bf57192bacedbbcd9b1","description":"Bento (bentonow.com) email marketing: subscribers, tags, fields, events incl. $purchase, stats, draft/scheduled broadcasts and transactional email, with dry-run + human-approval gates on every send. Native Python plugin, no dependencies. Disclosure — sends real email (bento_email_send, bento_broadcast_schedule), and events, purchases and consent changes can trigger Bento Flows that email people; calls only app.bentonow.com (an operator base_url override is limited to https *.bentonow.com or loopback) with the BENTO_* keys from the profile .env; no telemetry, no self-update; T2/T3 calls go to the Hermes approval prompt, which asks no human under YOLO, approvals.mode off, or cron/single-query/unattended mode set to approve. T3 sends then still need a dry-run confirm token and hard guards, but T2 writes (events, purchases, consent, bulk upserts) need no token unless safety.tier2 is token_only; T1 writes (tags, tag/field definitions, drafts, upserts up to bulk_threshold) are never gated and still run under environment=disabled; environment=staging does not block sends, only environment=disabled blocks T2/T3.","maintainer":"shagghiesuperstar","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/shagghiesuperstar/hermes-plugin-bento#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["bento_subscriber_get","bento_subscriber_upsert","bento_subscriber_tag","bento_subscriber_consent","bento_tag_list","bento_tag_create","bento_field_list","bento_field_create","bento_event_track","bento_purchase_track","bento_broadcast_list","bento_broadcast_create","bento_broadcast_schedule","bento_email_send","bento_stats"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":["BENTO_PUBLISHABLE_KEY","BENTO_SECRET_KEY","BENTO_SITE_UUID"]}},{"name":"better-session-appearance","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"a503f2d3166f41bb0eacd7158150894da7eff14d","subdir":"public/better-session-appearance","description":"Set a color for each session and show an idle glyph to make rows easier to scan.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/better-session-appearance","version":"1.2.2","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/a503f2d3166f41bb0eacd7158150894da7eff14d/public/better-session-appearance/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"betterdb","repo":"https://github.com/BetterDB-inc/monitor","subdir":"packages/hermes-memory-py","sha":"cf54fb5f97afef8b3387ffe91be6272d5da23ea2","version":"0.1.0","description":"BetterDB long-term memory provider — semantic recall on Valkey / valkey-search via the betterdb-agent-memory SDK. Completed turns are embedded and stored in a vector index; the next turn recalls the most relevant memories with a composite similarity/recency/importance score. Explicit betterdb_remember / betterdb_recall / betterdb_forget tools. Disclosure — turn text and tool-stored facts are embedded through an OpenAI-compatible embeddings endpoint you configure (embeddings_base_url, default api.openai.com) and written to the Valkey instance you point it at; plaintext http:// to a remote host is refused. Opt-in, off by default: a discovery marker (set discovery=true to let BetterDB Monitor enumerate the tier) and SDK usage analytics (set telemetry=true).","maintainer":"betterdb-inc","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/BetterDB-inc/monitor/tree/master/packages/hermes-memory-py#readme","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["betterdb_remember","betterdb_recall","betterdb_forget"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"bilinc","repo":"https://github.com/ReARCLabs/bilinc-hermes-plugin","sha":"4f1001638e6995a4da5c9f1d6e961e4999d2d31c","version":"1.0.0","description":"Bilinc memory provider: hosted, versioned long-term memory for Hermes with recall before each turn, explicit recall, remember, revise and forget tools, and mirroring of Hermes built-in memory writes, with every change kept in a per-key history. Maintained by ReARC Labs. Disclosure: recall queries (the text of each message, when auto_recall is on), tool arguments, mirrored built-in memory writes, the Hermes session id and, only if memory.bilinc.capture_turns is turned on, each turn's user and assistant text are sent over HTTPS to bilinc.space under your BILINC_API_KEY; requests carry User-Agent bilinc-hermes/<version> and X-Bilinc-Client: hermes-plugin headers. Secret-looking strings are redacted before sending. Recall and writes run on background threads inside Hermes; no separate process, local database or telemetry.","maintainer":"ReARCLabs","tier":"community","category":"memory","requires_hermes":">=0.21.6","docs_url":"https://github.com/ReARCLabs/bilinc-hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["BILINC_API_KEY"]}},{"name":"billing","repo":"https://github.com/anotherchu/billing","sha":"2dfcc8ef346c1be65861bc8e8295c9727eb77c39","description":"Nous Portal usage widget for the Hermes desktop statusbar — remaining credits plus plan-usage percentage, with portal detail on hover.","maintainer":"anotherchu","tier":"community","category":"desktop","requires_hermes":">=0.19","docs_url":"https://github.com/anotherchu/billing#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"biomimetic-brain","repo":"https://github.com/ousiaresearch/biomimetic-brain","sha":"efbf72d0afc4dff0ab212542eed584114f88d70d","description":"Meters and a gate for a long-running agent — 25 subsystem state files (energy, fatigue, circadian phase, motivation, novelty, attention, conflict, values, open questions), one folded brain-state.json the rest of the agent reads, four maintenance passes that keep it honest, and a read-only PROCEED / CAUTION / VETO decision gate whose refusals name the numbers behind them. Provides the mind-kit skill, which seeds the files, produces the aggregate, schedules the passes and teaches the gate. Disclosure — portable Agent Plugins v1 package; it registers no hooks, no tools and no middleware, makes no network calls, and reads and writes state files only under the agent directory you choose, where a subsystem that has stopped updating reports stale instead of asserting an old number. No dependencies beyond the Python standard library (two shell scripts for the scheduled passes). Its scripts, when the agent or operator runs them, read and write JSON state under the directory chosen with MIND_AGENT_DIR (default an agent/ folder inside the plugin's own install dir), read HERMES_HOME/cron/executions.db for cron counts, and execute scripts/batch-maintenance.sh or scripts/verify-invariants.py from that agent directory if present; no network egress and no LLM calls.","maintainer":"ousiaresearch","tier":"community","category":"general","version":"1.1.0","docs_url":"https://github.com/ousiaresearch/biomimetic-brain","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"birkin-mnemosyne","repo":"https://github.com/ashmoonori-afk/birkin-mnemosyne","sha":"f91aeac0dcb3ff06bf5d82337a69b3f694880bd5","subdir":"integrations/hermes","version":"0.2.3","description":"Local Markdown memory provider with multilingual lexical recall and profile-local durable notes. Create-only writes are limited to primary agent contexts. Uses published birkin-mnemosyne 0.7.2 with compatible updates below 1.0; no API key, network service or telemetry. Session handoff capture is opt-in. Native Hermes memory files remain separate.","maintainer":"ashmoonori-afk","tier":"community","category":"memory","docs_url":"https://github.com/ashmoonori-afk/birkin-mnemosyne/tree/f91aeac0dcb3ff06bf5d82337a69b3f694880bd5/integrations/hermes","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"blackbox","repo":"https://github.com/umanitek/agent-blackbox","sha":"7d697683e0d56608cfe3fee374d6a6866702058a","subdir":"plugins/blackbox","title":"Agent Blackbox","description":"Security for agents: checks every tool call and model request before it runs against a curated, verifiable threat graph (prompt injection, dangerous commands, malicious packages, unsafe skills, phishing and drainer indicators) and local rules that keep an agent away from wallet stores, seed phrases, private keys and exchange API keys. Audit mode records; block mode refuses. Can share privacy-safe threat reports with an open community graph once the user turns sharing on (off by default); community findings only ever flag. Hooks only: no tools, no middleware. Disclosure — hooks see every tool call and model request; `hermes blackbox setup` installs Node (via a checksum-pinned nvm installer) if missing, the OriginTrail DKG node from npm (checksum-pinned) and Blazegraph in Docker or Oxigraph, registers the DKG node and the dashboard as login services (systemd/LaunchAgent), and joins the DKG peer-to-peer network; package installs are looked up on api.osv.dev (name and version); community threat reports signed by a local reporter key (threat identifiers, including domains of fetched pages that served a verified injection) are shared to the community graph only after you turn sharing on (off by default); the optional LLM reviewer sends the current turn's user and tool text to OpenAI or Anthropic; `blackbox attach` copies the plugin into the Hermes homes/profiles and OpenClaw workspaces you name and enables it in their config (automatic attaching is off unless you set `auto_attach: true`); `hermes blackbox chat` creates an `agent-blackbox` profile cloned from the current one (config.yaml and .env); the dashboard runs on 127.0.0.1:9700.","maintainer":"Umanitek","tier":"community","category":"tools","version":"1.0.0","requires_hermes":">=0.21.7","docs_url":"https://github.com/umanitek/agent-blackbox/tree/7d697683e0d56608cfe3fee374d6a6866702058a/plugins/blackbox","image":"https://raw.githubusercontent.com/umanitek/agent-blackbox/7d697683e0d56608cfe3fee374d6a6866702058a/docs/catalog/banner.png","screenshots":["https://raw.githubusercontent.com/umanitek/agent-blackbox/7d697683e0d56608cfe3fee374d6a6866702058a/docs/catalog/dashboard.png","https://raw.githubusercontent.com/umanitek/agent-blackbox/7d697683e0d56608cfe3fee374d6a6866702058a/docs/catalog/trader-shield.png","https://raw.githubusercontent.com/umanitek/agent-blackbox/7d697683e0d56608cfe3fee374d6a6866702058a/docs/catalog/threat-tiers.png"],"readme":true,"platforms":[],"known_issues":["After installing, run `hermes blackbox setup` once: it installs Blackbox's local DKG node (a pinned, checksum-verified OriginTrail release from npm) and its graph store (Blazegraph in Docker, or Oxigraph when Docker is not available), then syncs the verified threat graph. Until setup has run, the built-in rules protect and `hermes blackbox status` says setup is needed."],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","pre_api_request","on_session_start","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"blender","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"ad20043d4faf61081a905fc684d7c0ba3dfe9d6b","subdir":"blender","version":"0.2.0","description":"Official Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Requires Blender 5.1+, its separately installed MCP add-on, Git and uv. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv; at install Hermes looks for Blender in the standard install locations (Windows uninstall registry and Program Files, /Applications and the Steam library on macOS, PATH, flatpak, snap and Steam on Linux) and refuses the install when it is missing. Server discovery does not prove scene readiness.","title":"Blender","maintainer":"NousResearch","tier":"official","category":"tools","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/blender","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/ad20043d4faf61081a905fc684d7c0ba3dfe9d6b/assets/blender.jpg","platforms":["windows","macos","linux"],"onboarding":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"blinkenbar","repo":"https://github.com/cygnostik/Hermes-Plugin-Blinkenlights","sha":"eae7c2ebf76fdc6e9615753972e15c3a956f9e48","description":"Dense, animated supercomputer light banks driven by system telemetry and live agent activity in Hermes Desktop.","maintainer":"cygnostik","tier":"community","category":"desktop","version":"0.9.0-pre.3","docs_url":"https://github.com/cygnostik/Hermes-Plugin-Blinkenlights#readme","image":"https://raw.githubusercontent.com/cygnostik/Hermes-Plugin-Blinkenlights/eae7c2ebf76fdc6e9615753972e15c3a956f9e48/docs/media/blinkenbar-catalog-hero.png","platforms":["windows","macos","linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"boardstate","title":"Boardstate","repo":"https://github.com/100yenadmin/boardstate-hermes-plugin","sha":"a52cb77f5f98efd0108e45e64751193cc9dd700a","description":"A live board your agent builds for you: tabs of notes, tables, charts, KPI cards and live Hermes data, in the dashboard and Hermes Desktop. It appears as a Board tab in the dashboard and a page in Desktop, and the agent lays it out with 19 native boardstate_* tools, approval widgets included. Runs a local Node >= 20 sidecar on loopback with a per-spawn nonce; no network access unless you opt in to operator-gated connectors. Disclosure — spawns a local Node.js ≥20 sidecar (from PATH/HERMES_NODE_BIN, nothing downloaded) on 127.0.0.1 on first use; state under HERMES_HOME/boardstate-state/. Reads the dashboard's loopback session token from Hermes internals (web_server._SESSION_TOKEN) and passes it to the sidecar for live usage/sessions/cron widgets; mounts one token-gated static route for approved widget assets. No outbound network unless you author boardstate.connectors.json (stdio/HTTP MCP connectors); connector actions need operator approval. Ships one plugin skill, boardstate:boardstate-report-problem, which drafts a bug report and files it with the GitHub CLI only after the user approves the exact text.","maintainer":"100yenadmin","tier":"community","category":"desktop","requires_hermes":">=0.21.2","image":"https://raw.githubusercontent.com/100yenadmin/boardstate-hermes-plugin/a52cb77f5f98efd0108e45e64751193cc9dd700a/docs/media/banner.png","docs_url":"https://github.com/100yenadmin/boardstate-hermes-plugin#readme","version":"1.5.2","screenshots":["https://raw.githubusercontent.com/100yenadmin/boardstate-hermes-plugin/a52cb77f5f98efd0108e45e64751193cc9dd700a/docs/screenshots/desktop-board.png","https://raw.githubusercontent.com/100yenadmin/boardstate-hermes-plugin/a52cb77f5f98efd0108e45e64751193cc9dd700a/docs/screenshots/web-board.png"],"platforms":[],"capabilities":{"provides_tools":["boardstate_workspace_get","boardstate_tab_create","boardstate_tab_update","boardstate_tab_delete","boardstate_tabs_reorder","boardstate_widget_add","boardstate_widget_update","boardstate_widget_move","boardstate_widget_remove","boardstate_layout_set","boardstate_workspace_replace","boardstate_undo","boardstate_widget_catalog","boardstate_design_review","boardstate_tool_search","boardstate_widget_scaffold","boardstate_data_read","boardstate_connector_read","boardstate_connector_invoke"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"bot-cabinet-v2","title":"Cabinet","repo":"https://github.com/Dgardenhire/hermes-cabinet","sha":"d6a816c350f800e908075de437a108c44ff982e3","description":"Tell Cabinet the job you need done and it answers with the smallest setup that does it (one chat, a skill, a routine, a Bot or a crew), shows which answers led there, then helps you act: add one of botcabinet.com's 20 Bots (each with its test record shown) as a Hermes profile, plan a new Bot line by line, or set up a crew of Bots in a handoff order with blocked Kanban cards. Everything Cabinet makes can be removed again from My Bots, and a Bot that Hermes's own Bots catalog carries is handed over to it, never duplicated. Disclosure — fetches its Bot catalog from https://botcabinet.com/catalog.json on open and Refresh (data only, 2 MB cap) and, after you confirm, creates Hermes profiles whose instructions (SOUL.md) come from that catalog; can create and archive Kanban cards for a crew; deletes only profiles it created that you have not changed; reads ~/.hermes/profiles and hashes profile files to track what it made; calls private Hermes modules (hermes_cli.profiles, kanban_db), so a Hermes update can break it; no shell, credentials, telemetry or self-updates.","maintainer":"Dgardenhire","tier":"community","category":"desktop","requires_hermes":">=0.22.0","docs_url":"https://botcabinet.com/hermes/manual/","version":"0.3.11","image":"https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/docs/card.png","screenshots":["https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/01-start.png","https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/10-answer-bot.png","https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/21-add-bot.png","https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/27-setup-crew.png","https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/31-mybots.png","https://raw.githubusercontent.com/Dgardenhire/hermes-cabinet/d6a816c350f800e908075de437a108c44ff982e3/harness/shots/16-records.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"bot-forge","repo":"https://github.com/BkashJEE/hermes-bot-forge","sha":"b313916b25aa631af7b473cd0ac1d72737b0aa72","description":"Say \"make me a <role>\" and your agent spawns a complete Bot Mode Bot — name, face, SOUL.md, memory, tools, skills, routines, gateway — tested, with rollback. Then hire a whole crew in one call, ask what is waiting on you, and edit, teach, share and health-check Bots by chatting. Disclosure — spawns the hermes CLI to create and run Bot profiles under HERMES_HOME/profiles/, and installs its own small companion hook plugin (bot-forge-marks, two hooks, no tools) into each Bot profile it manages, enabling it in that profile's config.yaml; never the root profile. Disclosure — when a Bot journals a blocked/failed entry, the plugin emails its title and summary to your own address via the SMTP account in Hermes' EMAIL_* settings (TLS verified; off with notify_blocked or notify_email false); adopt_bots (off by default) installs the companion hook into every profile on load.","maintainer":"BkashJEE","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/BkashJEE/hermes-bot-forge#readme","version":"0.15.3","image":"https://raw.githubusercontent.com/BkashJEE/hermes-bot-forge/b313916b25aa631af7b473cd0ac1d72737b0aa72/docs/social-preview.png","platforms":[],"capabilities":{"provides_tools":["create_agent","create_team","teach_agent","update_agent","copy_agent","list_agents","check_agents","check_install","agent_journal","ask_agent","share_agent","import_agent","hide_agent","delete_agent"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"brain-graph","repo":"https://github.com/PIR8-Software/hermes-brain-graph","sha":"54923ce800fa07d0a81997ad899a3a1c6384d635","subdir":"catalog","description":"Local Markdown vault for Hermes Desktop — notes, wikilinks, search, recycle bin, and an interactive graph.","maintainer":"PIR8-Software","tier":"community","category":"desktop","version":"2.0.1","image":"https://raw.githubusercontent.com/PIR8-Software/hermes-brain-graph/54923ce800fa07d0a81997ad899a3a1c6384d635/docs/images/brain-graph-banner.png","docs_url":"https://github.com/PIR8-Software/hermes-brain-graph#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"brave-search","repo":"https://github.com/rabilrbl/hermes-brave-search-plugin","sha":"4134cbef910c14c63e6b284b0820b30f3811ab47","description":"Brave Search API tools for live web search inside Hermes","maintainer":"rabilrbl","tier":"community","category":"web","docs_url":"https://github.com/rabilrbl/hermes-brave-search-plugin#readme","capabilities":{"provides_tools":["brave_web_search"],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"brethof-brain","repo":"https://github.com/BrethofAI/brethof-brain-client","sha":"dea65da574b4069db932409e422816fa30990522","subdir":"adapters/hermes","version":"1.0.0","description":"brethof-brain long-term memory provider — the memory's briefing in the system prompt at session start, ambient recall on every turn, every turn archived; one memory shared with the user's other agents (Claude Code, Codex, OpenCode and more). Sends each turn to the user's own brethof-brain memory (on their machine at 127.0.0.1:8610, or hosted at memory.brethof.cloud). Needs a brethof-brain account. Disclosure — sends every user prompt and each turn's user and assistant text, with your API key, to the brethof-brain server you configure (default a local box at 127.0.0.1:8610; hosted at memory.brethof.cloud), and puts the server's returned briefing and recall text into the system prompt and each turn; reads BRETHOF_BRAIN_* from $HERMES_HOME/.env and ~/.brethof-brain/config.json.","maintainer":"BrethofAI","tier":"community","category":"memory","requires_hermes":">=0.21.0","docs_url":"https://brethof.ai/brain/docs/","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"bridge-adapter","repo":"https://github.com/Kesuek/hermes-bridge-adapter","sha":"c095d54bdecd4a6080e3166bd6c95552ac69ae65","description":"Generic JSON-file-based bridge adapter. Bridges self-register via a registry/ manifest (presence = registered, rm = unregistered). Polls inbox/ for incoming messages, writes outgoing to outbox/. External services (imsg, Matrix, Telegram, ...) write/read JSON files in a shared directory.","maintainer":"Kesuek","tier":"community","category":"platform","docs_url":"https://github.com/Kesuek/hermes-bridge-adapter#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["BRIDGE_DIR"]}},{"name":"browser-toggle","repo":"https://github.com/jcperdomoybarra/web-browser-button-plugin","sha":"b0b88856fa246296647e8697b80bf4bc2e723540","description":"One titlebar button, next to HUD mode, that opens and hides the built-in browser: the same action as Ctrl+Shift+L. Label follows the active UI language. Front-end only: no agent calls, no network, no API keys. Disclosure — works by pressing the browser shortcut (Ctrl/⌘+Shift+L); breaks if the user rebinds it.","maintainer":"jcperdomoybarra","tier":"community","category":"desktop","requires_hermes":">=0.21.6","version":"1.0.0","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"browserless","title":"Browserless","repo":"https://github.com/browserless/browserless-mcp","sha":"7006ee45f0f44b3561d7b2b7fbc5c50cdb766e64","subdir":"hermes","description":"Run Hermes' built-in browser tools on Browserless cloud browsers: stealth mode, residential proxies, captcha solving and ad blocking, with no local Chrome. One Browserless browser per task; Hermes' agent-browser daemon and CDP supervisor share it through a local CDP multiplexer, and the browser is reconnected after network drops and closed when the task ends. Disclosure — while a browser task runs, starts a background thread with a WebSocket listener on 127.0.0.1 (random port, secret path, local Host header only); connects to Browserless (production-*.browserless.io) with BROWSERLESS_TOKEN, read via get_secret; Browserless usage is metered on your plan, and residential proxy traffic costs more; no files written unless BROWSERLESS_MUX_LOG is set; no telemetry.","maintainer":"browserless","tier":"community","category":"web","docs_url":"https://github.com/browserless/browserless-mcp/tree/7006ee45f0f44b3561d7b2b7fbc5c50cdb766e64/hermes","requires_hermes":">=0.21.6","version":"0.1.1","readme":true,"known_issues":["If the Browserless session can't start (e.g. wrong token or plan concurrency limit), Hermes falls back to a local browser; set BROWSERLESS_MUX_LOG to see the reason."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["BROWSERLESS_TOKEN"]}},{"name":"browserpaw","repo":"https://github.com/GoldenLoaf24h/browserpaw","sha":"66a7349532a5ab6251b2090d2a4ab347aa07ad45","subdir":"plugins/browserpaw","description":"Drive your own Chrome from Hermes through a BrowserPaw MCP server you configure: 16 browserpaw_* tools for navigation, indexed DOM reading, click/fill, batch actions, screenshots and tabs. Disclosure — a thin wrapper over a BrowserPaw MCP server you add yourself (mcp_servers.browserpaw, plus plugins.entries.browserpaw.mcp_allowlist: [browserpaw]); it drives your real Chrome profile (logged-in sessions, cookies) through the separately installed BrowserPaw extension and native host on 127.0.0.1:12306, whose credential lives in ~/.chrome-mcp/bridge-token; the agent can click, fill, submit and read pages without a Hermes approval prompt unless you set trust: untrusted on that server (the README sample enables the full 50-tool profile, including in-page JavaScript, HttpOnly cookie reads and raw CDP, as native Hermes MCP tools); the optional Jev remote mode sends structured page state to TypeSafe AI or a base URL you set, and its local model download contacts hf-mirror.com/aifasthub.com/huggingface.co (probing baidu.com/bilibili.com first).","maintainer":"GoldenLoaf24h","tier":"community","category":"web","requires_hermes":">=0.21.5","docs_url":"https://github.com/GoldenLoaf24h/browserpaw#readme","version":"4.0.0","capabilities":{"provides_tools":["browserpaw_act_toward_goal","browserpaw_navigate","browserpaw_read_dom","browserpaw_interact_index","browserpaw_fill_index","browserpaw_batch_actions","browserpaw_screenshot","browserpaw_smart_scroll","browserpaw_scroll_until_found","browserpaw_inspect_media","browserpaw_grep","browserpaw_get_markdown","browserpaw_switch_tab","browserpaw_close_tabs","browserpaw_get_windows_and_tabs","browserpaw_tool_docs"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"bunny_space-platform","title":"Bunny Space","repo":"https://github.com/jasm001/hermes-plugin-bunny-space","sha":"fcea5421ed9418b6bfc4f292933310e43aa076c5","description":"Bunny Space gateway adapter for Hermes Agent. Connects a Hermes profile (the bot brain) to the Bunny Space relay so the bot joins private rooms, answers its owner, and handles @bot:<slug> mentions in posts and comments. Outbound pull transport; no external dependencies. Disclosure — replies are prompted to be in Spanish; @bot mention tasks and assistance tasks are dispatched to Hermes under the fixed sender id \"owner\" (BUNNY_SPACE_ALLOWED_USERS must contain \"owner\"), and the plugin refuses to dispatch third-party content unless platform_toolsets.bunny_space is restricted to read-only tools (the platform's effective toolset, including MCP and plugin toolsets; add no_mcp when MCP servers are enabled); the private assistance worker is opt-in via BUNNY_SPACE_ASSISTANCE=1 (the relay cannot enable it); setting BUNNY_SPACE_ALLOW_ALL_USERS makes the connector refuse to connect; the relay sets the poll interval and may hand the connector a WebSocket \"wake\" URL it then connects to (wake signals only, no message content).","maintainer":"jasm001","tier":"community","category":"platform","docs_url":"https://github.com/jasm001/hermes-plugin-bunny-space#readme","version":"1.0.6","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["BUNNY_SPACE_BOT_KEY","BUNNY_SPACE_SLUG"]}},{"name":"by2kb","repo":"https://github.com/Charlesmpc/by2kb","sha":"5983ca8a479feb87321f5c37f59cf8ae28818451","subdir":"by2kb/integrations/hermes","description":"Discover learning videos by topic, select numbered recommendations, and turn Bilibili and YouTube videos into transcripts, abstracts, and study notes using the Hermes host model. Disclosure — intercepts gateway messages with a Bilibili/YouTube URL, a \"by2kb <topic>\" prefix, or (for 1 h after a recommendation list, same user/chat) a bare number reply, and runs the separately installed by2kb CLI (BY2KB_COMMAND or PATH), which searches Bilibili/YouTube, downloads media and runs ASR; enrichment prompts go to your active Hermes model.","maintainer":"Charlesmpc","tier":"community","category":"tools","version":"0.7.0","docs_url":"https://github.com/Charlesmpc/by2kb/blob/v0.7.0/docs/agent-integration.md","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_gateway_dispatch"],"provides_middleware":[],"requires_env":[]}},{"name":"camofox-human-auth","repo":"https://github.com/tim-toothed/hermes-camofox-human-auth","sha":"19946d2e664063ffc5259f85703d14e11b477512","description":"Universal human-controlled authentication for Camofox Browser, powered by the Camoufox engine. Supports login, registration, SSO, MFA, OTP, CAPTCHA, and device confirmation. Requires the Camofox backend; never changes an existing Hermes browser provider automatically.","maintainer":"tim-toothed","tier":"community","category":"web","docs_url":"https://github.com/tim-toothed/hermes-camofox-human-auth#readme","capabilities":{"provides_tools":["camofox_auth_finish","camofox_auth_open","camofox_backend_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"carbonvoice-platform","repo":"https://github.com/PhononX/hermes-plugin-carbonvoice","sha":"55867dba9c6645ce493fd955970302e59a4548ea","description":"Carbon Voice gateway adapter for Hermes Agent. Connects via Socket.IO (primary) with REST polling fallback — no public webhook or tunnel required. Persists a cursor to disk so messages received while Hermes is offline are processed on the next startup. Replies via POST /v3/messages/start, so the Her","maintainer":"PhononX","tier":"community","category":"platform","docs_url":"https://github.com/PhononX/hermes-plugin-carbonvoice#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"cashew","repo":"https://github.com/magnus919/hermes-cashew","sha":"d89e59e63315f7c356c868a4ce7db64cb3c1aa1b","description":"Cashew — persistent thought-graph memory with local embeddings, organic decay, and autonomous think cycles.","maintainer":"magnus919","tier":"community","category":"memory","docs_url":"https://github.com/magnus919/hermes-cashew#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cdp-manager","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"b364f8d5f015b9a9c10fb6af1d2d1112edc2af48","subdir":"public/cdp-manager","description":"Local Chrome CDP debug ports in the status bar (probe, launch, stop, recheck) plus a managed port Hermes keeps alive and the `cdp` agent tool, which also detects and repairs a Chrome profile-picker launch (wedged/unwedge). Disclosure: launches local Chrome on 127.0.0.1 only, with per-port profiles under the local app-data directory, and closes it with a clean Browser.close; state lives in the plugin's own config file. Windows only.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/cdp-manager","version":"1.0.2","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/b364f8d5f015b9a9c10fb6af1d2d1112edc2af48/public/cdp-manager/docs/hero.png","platforms":["windows"],"capabilities":{"provides_tools":["cdp"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"channel3","title":"Channel3","repo":"https://github.com/channel3-ai/channel3-hermes-plugin","sha":"5dfcb6df773ad62c033346824d0779594cc6c31e","description":"Shop 100M+ products across thousands of US retailers: search, compare every store's live price, and switch variants (color, size) on inline product cards in Hermes Desktop. Portable Agent Plugins v1 package (mcp.json + skills/ + desktop/). Disclosure — connects to the hosted Channel3 MCP server at mcp.trychannel3.com (no account or key; free tier rate-limited per IP); search queries (and any image URL for visual search), product ids and variant selections go to it, and the Desktop cards call it directly from the app; a server-issued thread_id links searches within a conversation; product images load from cdn.trychannel3.com; Buy buttons open buy.trychannel3.com redirect links in the browser; nothing is purchased in-app and no credentials are stored.","maintainer":"channel3-ai","tier":"community","category":"tools","version":"0.1.0","requires_hermes":">=0.21.6","docs_url":"https://github.com/channel3-ai/channel3-hermes-plugin#readme","screenshots":["https://raw.githubusercontent.com/channel3-ai/channel3-hermes-plugin/5dfcb6df773ad62c033346824d0779594cc6c31e/docs/cards.png","https://raw.githubusercontent.com/channel3-ai/channel3-hermes-plugin/5dfcb6df773ad62c033346824d0779594cc6c31e/docs/detail.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"chat-studio","repo":"https://github.com/gchablemeneses-web/hermes-chat-studio","sha":"8b97b6c99a1f34abc6a8c5f461c894a8bb3f95d2","description":"Offline conversation customization with one-click presets and plugin-owned settings. Disclosure — enabled by default; injects a stylesheet that restyles the Desktop chat transcript (width, fonts, spacing, optional colours) keyed on app data-slot selectors, so a Desktop update can break the styling; settings stay in plugin storage, no network.","maintainer":"gchablemeneses-web","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"1.1.0","screenshots":["https://raw.githubusercontent.com/gchablemeneses-web/hermes-chat-studio/8b97b6c99a1f34abc6a8c5f461c894a8bb3f95d2/docs/presets.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"chatto-platform","repo":"https://github.com/jrimmer/hermes-chatto-plugin","sha":"aab0a20635cb578253a8014bc8d93e1b32f020fc","description":"Chatto gateway adapter for Hermes Agent. Connects to a Chatto server (self-hosted team chat) and relays messages between rooms/DMs and the Hermes agent.  Uses the Chatto ConnectRPC API (JSON over HTTP) for outbound messages and the Chatto realtime WebSocket protocol (binary protobuf) for inbound eve","maintainer":"jrimmer","tier":"community","category":"platform","docs_url":"https://github.com/jrimmer/hermes-chatto-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"cheatsheet","repo":"https://github.com/Bonorinoa/hermes-cheatsheet","sha":"d5a4f0121184ed789e138f423249b5c2f7c57eee","subdir":"","description":"Title-bar cheatsheet. Describe what you want to do and it points to a real command or a cited passage; live slash commands and plugins, plus cited passages from this install's docs. No runtime network. No self-update. Disclosure — reads the Markdown docs shipped with your Hermes install (website/docs next to hermes_cli) through a local dashboard route and lists your commands, plugins and MCP servers via read-only gateway calls; no network at runtime (doc and GitHub links open in your browser only when clicked).","maintainer":"Bonorinoa","tier":"community","category":"desktop","docs_url":"https://github.com/Bonorinoa/hermes-cheatsheet#readme","version":"0.2.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"chronicle","repo":"https://github.com/indigokarasu/chronicle-agent-context-and-memory","sha":"92e4351a852117a11542210d06e8e5bfb61c3f1a","version":"5.8.35","description":"Local-first long-term memory and memory-aware context compression for Hermes — SQLite, no account, API key or hosted service required. Captures every turn durably, extracts beliefs with provenance, answers from memory (raw-tier fallback and abstention), derives scoped conclusions, and compresses the context window losslessly with a restorable record. Registers the memory-provider AND context-engine slots from one shared core, and ships the Tapestry dashboard. Disclosure — off-host embedding endpoints are refused by default (RFC1918/ULA/CGNAT and https peers); sending memory excerpts off the host requires opting in via embeddings.allow_remote. Disclosure — the git mirror (engine/gitmirror.py) is on by default and writes plaintext JSONL copies of memory into a local git repo at ~/.hermes/commons/db/chronicle/git; it pushes only when git_remote is configured, and its 'encryption' option is a repeating-key XOR obfuscation, not cryptographic encryption.","maintainer":"indigokarasu","tier":"community","category":"memory","requires_hermes":">=0.19","docs_url":"https://github.com/indigokarasu/chronicle-agent-context-and-memory#readme","image":"https://raw.githubusercontent.com/indigokarasu/chronicle-agent-context-and-memory/92e4351a852117a11542210d06e8e5bfb61c3f1a/assets/readme/hero.jpg","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["subagent_start","subagent_stop","on_session_reset","post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"chutes-provider","repo":"https://github.com/TheStreamCode/hermes-chutes-provider","sha":"d1165cdd5c65a1179c559e9169a428adb9a36b42","description":"Chutes model provider for Hermes Agent via API key. Disclosure — model provider; prompts, tool schemas and CHUTES_API_KEY go to llm.chutes.ai (or CHUTES_BASE_URL), plus a GET /models catalog probe with the same key","maintainer":"TheStreamCode","tier":"community","category":"models","docs_url":"https://github.com/TheStreamCode/hermes-chutes-provider","version":"0.1.5","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CHUTES_API_KEY"]}},{"name":"cjk_sanitizer","repo":"https://github.com/evanyudis/cjk_sanitizer","sha":"47d2a95c89e827fef6ea0bacbff433c6dc980351","description":"Strip unwanted Chinese (CJK) and Cyrillic characters from LLM output. Korean Hangul and Japanese Kana are preserved.","maintainer":"evanyudis","tier":"community","category":"general","docs_url":"https://github.com/evanyudis/cjk_sanitizer#readme","capabilities":{"provides_tools":[],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"claude-code-theme","title":"Claude Code Theme","repo":"https://github.com/aliilhami/hermes-claude-code-theme","sha":"d2430687cde455e470f5f75b951e488eb0938e61","requires_hermes":">=0.21.6","description":"Unofficial Claude Code-inspired theme for Hermes Desktop, with light and dark palettes, rounded composer and side-panel cards, softer sidebar and menus, and a context-window meter beside the model switcher. Not affiliated with, endorsed by, or sponsored by Anthropic or Claude Code. Disclosure — unofficial Claude Code lookalike theme; its stylesheet restyles native Desktop surfaces (user bubbles, composer, file panel, sidebar rows, dropdown menus) and hides the chat backdrop image; the context meter reads session.usage through the SDK; an opt-in accent setting uses setAccentOverride; no network calls of its own.","maintainer":"aliilhami","tier":"community","category":"desktop","docs_url":"https://github.com/aliilhami/hermes-claude-code-theme#readme","version":"0.1.0","screenshots":["https://raw.githubusercontent.com/aliilhami/hermes-claude-code-theme/d2430687cde455e470f5f75b951e488eb0938e61/docs/overview-light.png","https://raw.githubusercontent.com/aliilhami/hermes-claude-code-theme/d2430687cde455e470f5f75b951e488eb0938e61/docs/sidebar-menus.png","https://raw.githubusercontent.com/aliilhami/hermes-claude-code-theme/d2430687cde455e470f5f75b951e488eb0938e61/docs/context-meter.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"claude-subscription-directsdk","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"6dacaaddbfd8e98dfc524096c44f712f743246b8","subdir":"claude-subscription-directsdk","description":"Experimental model provider that runs Hermes turns on a Claude Pro/Max subscription through the official Claude Code CLI (the Agent SDK path), so no separate API key or per-token bill. Requires the claude CLI installed and logged in; the plugin checks for it at load, in hermes model, in the pickers and before every request, and refuses cleanly with the install hint when it is missing. Disclosure — every turn is billed against your Claude subscription's Agent SDK allowance, and the provider inherits whatever account claude is logged into.","maintainer":"NousResearch","tier":"official","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/claude-subscription-directsdk","version":"0.3.3","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/6dacaaddbfd8e98dfc524096c44f712f743246b8/assets/claude-subscription-directsdk.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"clinepass","repo":"https://github.com/Adolanium/hermes-clinepass","sha":"3853e895482d3171ff3a8144344b74cfa3a7dd67","version":"1.2.3","image":"https://raw.githubusercontent.com/Adolanium/hermes-clinepass/3853e895482d3171ff3a8144344b74cfa3a7dd67/assets/catalog-banner.png","subdir":"clinepass","description":"ClinePass model provider with live model discovery and a curated fallback catalog.","maintainer":"Adolanium","tier":"community","category":"models","docs_url":"https://github.com/Adolanium/hermes-clinepass#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CLINE_API_KEY"]}},{"name":"cliproxyapi-provider","repo":"https://github.com/duu261/hermes-cliproxyapi-provider","sha":"42240b168488c820883b0d989456acf0a8a06ba8","description":"CLIProxyAPI as native Hermes model providers: discovers each CPA provider group (Claude, Codex, xAI, Gemini, Kiro and others) and registers one profile per group on the wire its CPA executor accepts (Anthropic Messages, Responses or Chat Completions), with context windows and reasoning levels from CPA. Disclosure — sends model-list and inference requests, authenticated with the API key env var you name, to the CPA base_url you configure; with an optional management key it also makes bounded read-only GETs to CPA's management API; with an optional billing route it sends inference, and a model-list GET, to the gateway URL you configure, authenticated with the gateway key env var you name. Known limit: Hermes strips from agent subprocesses only the key env vars a registered provider declares, so the management key env var, and on a routed instance the CPA key env var, stay readable by agent shells.","maintainer":"duu261","tier":"community","category":"models","requires_hermes":">=0.21.7","docs_url":"https://github.com/duu261/hermes-cliproxyapi-provider#readme","version":"0.3.1","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cloudflare-sandbox","repo":"https://github.com/kiyo-e/hermes-cloudflare-sandbox","sha":"75961d77109b185bdaeef650cc9f945df0aa0551","version":"0.1.0","description":"Run Hermes terminal, file and execute_code tools in Cloudflare Containers, with the workspace saved to a snapshot when idle. Disclosure — you deploy the bundled Cloudflare Worker to your own account first; running containers is billed by Cloudflare; commands and file contents run in the container at HERMES_CF_ENDPOINT using HERMES_CF_TOKEN; the container has outbound internet by default (ENABLE_INTERNET); host env vars, skills and credentials are not copied into the container; dangerous-command approval stays on.","maintainer":"kiyo-e","tier":"community","category":"tools","requires_hermes":">=0.20.6","docs_url":"https://github.com/kiyo-e/hermes-cloudflare-sandbox#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["HERMES_CF_ENDPOINT","HERMES_CF_TOKEN"]}},{"name":"cloudflare-web-search","repo":"https://github.com/Adolanium/hermes-cloudflare-web-search","sha":"259783bf335cfffbfe16e2ef16efa301beb6db14","description":"Cloudflare Web Search backend for Hermes' existing web_search tool, with Ceramic, Exa, or Linkup selected in plugin settings. Search only; keep a separate extract backend. Disclosure — sends queries, result limits, gateway IDs, and optional BYOK aliases to api.cloudflare.com, which forwards searches to the selected provider and records them in AI Gateway logs. Requests can consume gateway credits or provider quota. Reads its own settings and CLOUDFLARE_WEB_SEARCH_API_TOKEN through Hermes' profile-scoped APIs. Registers one web provider, with no new tools, hooks, background processes, file writes, or self-updater. Independent community plugin.","maintainer":"Adolanium","tier":"community","category":"web","title":"Cloudflare Web Search","docs_url":"https://github.com/Adolanium/hermes-cloudflare-web-search#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-cloudflare-web-search/259783bf335cfffbfe16e2ef16efa301beb6db14/assets/catalog-banner.png","version":"1.0.1","platforms":[],"known_issues":["Set web.cache_enabled: false in every profile using this backend. Hermes' shared search cache omits profiles and routing settings, so repeated queries can reuse another profile's result or an earlier provider, account, gateway, or BYOK route. This setting also disables the profile's extraction result cache."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CLOUDFLARE_WEB_SEARCH_API_TOKEN"]}},{"name":"cloudflare-workers-ai-provider","repo":"https://github.com/AhmetArif0/hermes-cloudflare-workers-ai-provider","sha":"f6821d058d504ee6324b0d3217564b93124c09f9","subdir":"cloudflare-workers-ai-provider","description":"Cloudflare Workers AI as a Hermes model provider (`--provider workers-ai`, or Cloudflare Workers AI in `hermes model`, which asks for the token and the account's base URL): the 16 Workers AI models with function calling and 64K+ context, Cloudflare's context windows (a custom endpoint lists no models and assumes 256K for the 128K gpt-oss), reasoning effort in the form each model accepts, and a clear message when a free-plan account picks a paid-plan model. Not affiliated with Cloudflare. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads); the model list and details are built in, so nothing is fetched to show them; chat requests go to the URL in CLOUDFLARE_WORKERS_AI_BASE_URL through Hermes' own client with CLOUDFLARE_WORKERS_AI_API_TOKEN, both read by Hermes per profile; the plugin itself opens no connections, reads and writes no files and starts no processes.","maintainer":"AhmetArif0","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/AhmetArif0/hermes-cloudflare-workers-ai-provider","version":"1.0.0","image":"https://raw.githubusercontent.com/AhmetArif0/hermes-cloudflare-workers-ai-provider/f6821d058d504ee6324b0d3217564b93124c09f9/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CLOUDFLARE_WORKERS_AI_API_TOKEN","CLOUDFLARE_WORKERS_AI_BASE_URL"]}},{"name":"coder","repo":"https://github.com/perqin/hermes-plugin-coder","sha":"98e023da379961702fb0ce0cf03b983176039321","version":"0.1.0","description":"Run Hermes terminal commands in an existing remote Coder workspace. Disclosure — runs terminal commands inside your Coder workspace at CODER_URL using CODER_API_KEY; starts a stopped workspace automatically; forwards only the env vars you list in TERMINAL_CODER_FORWARD_ENV.","maintainer":"perqin","tier":"community","category":"tools","docs_url":"https://github.com/perqin/hermes-plugin-coder#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CODER_URL","CODER_API_KEY","CODER_WORKSPACE"]}},{"name":"codex-account-switch","repo":"https://github.com/SmelterLabs/hermes-account-switcher","sha":"397332d6b3dc1b1ae7dc8e87ca5ea4b648e482a0","subdir":"","description":"Windows desktop plugin that switches which Codex login and which Claude subscription account every local Hermes profile uses, with one idle-only, verified restart of the gateway (and, on Hermes before 0.22, of Hermes Desktop). Refuses while any profile is busy, restores the previous selection if a step fails, and writes a receipt that says whether the switch took effect. Disclosure — Windows only. A switch rewrites, through Hermes's own commands, the Codex credential order in every profile's auth.json and the CLAUDE_SUBSCRIPTION_DIRECTSDK_CONFIG_DIR line in every profile's .env, so every profile that has the plugin enabled spends the same selected Codex login and the same Claude login (one Hermes-owned claude-auth folder; no token is copied between profiles). It reads Codex tokens from each profile's auth.json. On Hermes 0.22 and later it stops and restarts the gateway once Hermes's own idle proof and the gateway's drain report idle, and Hermes Desktop stays open and reconnects; on earlier Hermes it also reads the Desktop backends' dashboard session token from their process environment and closes and reopens Hermes Desktop (work started in the seconds after the idle check is cut off). It sends the target Codex token to OpenAI's usage endpoint and Claude login tokens to Anthropic's OAuth profile endpoint (also when the setup screen opens); if the target Claude login has expired it first runs the claude CLI once so the CLI renews its own token, which rotates that login's refresh token. No telemetry and no automatic account rotation.","maintainer":"SmelterLabs","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/SmelterLabs/hermes-account-switcher#readme","version":"1.2.3","platforms":["windows"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"codex-chat-look","repo":"https://github.com/steveafrost/hermes-quiet","sha":"401b04ff2dc2447d5c3f40af1254d7fe8413013a","subdir":"codex-chat-look","description":"Independent Catppuccin Latte/Mocha desktop theme with peach accents, SDK-native gateway/profile switching and host-owned session density. Legacy plugin identity: codex-chat-look. No self-updater or native layout overrides. Disclosure — Desktop theme derived from FPSUnleashed's MIT-licensed desktop skin; switches gateway/profile via host.ensureAgent only on user selection and a palette command rewrites the native sessionListDensity setting; no network calls of its own.","maintainer":"steveafrost","tier":"community","category":"desktop","docs_url":"https://github.com/steveafrost/hermes-quiet","version":"2.0.0","readme":false,"platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"codex-truly","repo":"https://github.com/kyssta-exe/hermes-codex-truly","sha":"1913d2a0a4b2dd3e4283af5c78241de4d3a2995e","description":"Gives ChatGPT/Codex-subscription models the context window the backend actually accepts instead of the one its catalog advertises. Measured live on 2026-10-14: gpt-6.1-sol advertises 500K, caps at 872K and accepts 919,956 input tokens, while the -900k opt-in variant had silently stopped working because Hermes only raises a legacy 272K advertisement. The plugin reads the live catalog, writes one scoped model_overrides.<provider>.<model_id>.context_window entry per model (a documented step of context resolution, so no core patch), and ships a probe that bisects the API for the true ceiling because the refusal is a late SSE event, not an HTTP error. It also selects core's Codex-backed image provider so image_generate runs on the subscription with no OPENAI_API_KEY. Disclosure - uses the profile's Codex sign-in through Hermes's credentialed_provider_request (requires_auth: [openai-codex]); the plugin never reads auth.json and never holds a token, and network calls go only to chatgpt.com. Its only writes are scoped model_overrides entries and image_gen.provider (only when unset), through Hermes's atomic config writers; revert removes exactly what it wrote. No telemetry, no background processes, no shell commands, no self-updater. probe spends subscription quota (refused requests are free, accepted ones bill) and is never run automatically. Disclosure — uses the profile's Codex sign-in only through Hermes's credentialed_provider_request (requires_auth: openai-codex) and calls chatgpt.com only; its CLI and the model-callable codex_truly tool write scoped model_overrides context_window entries and image_gen.provider (only when unset) to config.yaml with no approval prompt, and `probe` sends large padding requests that spend subscription quota.","maintainer":"kyssta-exe","title":"Codex Truly","tier":"community","category":"models","requires_hermes":">=0.21.7","version":"1.0.0","docs_url":"https://github.com/kyssta-exe/hermes-codex-truly#readme","platforms":[],"known_issues":["Full 1M of input is not reachable on the Codex OAuth route: ~1.05M total context is shared with a 128K output reserve, leaving ~920K of input. The plugin defaults to 900,000 and clamps to 918,000 rather than promising more.","An over-large window fails late - the request streams response.created and then returns context_length_exceeded - so it surfaces as a mid-turn crash rather than a configuration error. Lower target_context_window and re-apply if a turn dies that way."],"capabilities":{"provides_tools":["codex_truly"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cognee","repo":"https://github.com/topoteretes/cognee-integrations","subdir":"integrations/hermes-agent","sha":"f9355258435836d67fa4233e4098ad9a85568e8d","version":"1.2.2","description":"Knowledge-graph memory for Hermes — recall, remember, forget, and code search, backed by a local cognee server or Cognee Cloud. Disclosure — default local mode starts a detached cognee server (uvicorn on 127.0.0.1:8011) plus a session-close watcher per session; turns, memory writes and indexed source go to that server and on to your configured LLM provider (OpenAI by default) or to Cognee Cloud / COGNEE_BASE_URL in remote mode; the store lives in ~/.cognee (outside HERMES_HOME, shared across profiles); cognee sends anonymous usage telemetry unless TELEMETRY_DISABLED=1.","maintainer":"topoteretes","tier":"community","category":"memory","docs_url":"https://github.com/topoteretes/cognee-integrations/tree/main/integrations/hermes-agent#readme","readme":true,"capabilities":{"provides_tools":["cognee_recall","cognee_remember","cognee_forget","cognee_switch_dataset","cognee_code_search"],"provides_hooks":["on_session_end","on_memory_write"],"provides_middleware":[],"requires_env":[]}},{"name":"cognition","repo":"https://github.com/aska-digital/cognition-memory","sha":"a31ae960034ef3f0f860a33dc5ab8637549343aa","version":"0.1.1","description":"Cognition session-end memory — facts regex-extracted from your messages at session end, stored in a local SQLite queue and JSON log under one repo label, with fetch-first merge, per-entry provenance, and budgeted prefetch (tools: cognition_search, cognition_status, read-only cognition_dream). Disclosure — saves verbatim excerpts (up to 400 chars) of your own messages that match preference/decision phrases in plain local files under HERMES_HOME/cognition/ (SQLite queue, JSON commit log) and re-injects them into later prompts sent to your model provider; the author name is read from ~/.gitconfig; the plugin makes no network calls of its own.","maintainer":"aska-digital","tier":"community","category":"memory","docs_url":"https://github.com/aska-digital/cognition-memory#readme","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["cognition_search","cognition_status","cognition_dream"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"colorado-traffic","repo":"https://github.com/drkpxl/colorado-traffic","sha":"e7ae48527f7069ed4e311516773d4828e8453efb","description":"Live Colorado highway events from CDOT COtrip. No API key. Default corridor is I-70 Golden to east Denver. Separates incidents happening now from scheduled work and unverified Waze reports.","maintainer":"drkpxl","tier":"community","category":"tools","version":"1.1.0","docs_url":"https://github.com/drkpxl/colorado-traffic#readme","platforms":["macos","linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"command-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"bf93fe7502464a2206f4b7878c61946f0b022b88","subdir":"command-ledger","description":"Local ledger of the slash commands you run in Hermes (built-in commands in the CLI, built-in and plugin commands on messaging platforms): /command-log shows how often each command was used, its share, in how many sessions and when last, per command, platform, surface or day, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /command-log recent lists the newest commands (ten, or up to 100 with /command-log recent 50) with the alias typed. Disclosure — writes command metadata (command name, alias typed, surface, platform, a 12-digit hash of the session key; no arguments, session key or user id) to plugin-data/command-ledger/commands.jsonl, trimmed to 5,000 rows past 2 MB; observer only, cannot block or change a command; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/command-ledger","version":"1.2.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/bf93fe7502464a2206f4b7878c61946f0b022b88/docs/command-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_command"],"provides_middleware":[],"requires_env":[]}},{"name":"command-tray","repo":"https://github.com/aydnOktay/hermes-command-tray","sha":"f28afd1e21dd9ac18756a4ec8d48e8a0f6889ce2","description":"Session command tray — shell commands the Hermes agent ran via the terminal tool (success and failure). Desktop pane and /commands. No API keys. Disclosure — records terminal commands with exit code, workdir and a 160-char redacted output preview to $HERMES_HOME/plugin-data/command-tray/state.json; the Desktop pane inserts text through Hermes Desktop's internal hermes:composer-insert event (not a public SDK API) with clipboard fallback; no network.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-command-tray","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["command_tray_list","command_tray_clear"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"commandcode-oauth","repo":"https://github.com/NanamiMio/hermes-commandcode-oauth","sha":"60bfd24c23c748b05431917c91b4fcbd6a650460","description":"Command Code CLI-key model provider with a live OAuth catalog property bridge, plan limits and failover classification. Disclosure — uses the CLI-internal api.commandcode.ai/alpha/generate endpoint and CLI client headers, sends the full conversation, tool schemas, cwd path and OS/Python version, and imports a static key from the read-only CLI credential file or a browser hand-off; no OAuth exchange takes place. Hermes also bundles commandcode for the documented Provider API.","maintainer":"NanamiMio","tier":"community","category":"models","requires_hermes":">=0.21.6","docs_url":"https://github.com/NanamiMio/hermes-commandcode-oauth#readme","version":"0.1.3","readme":true,"platforms":[],"known_issues":["Older cores may incorrectly warn about this provider's vendor/model IDs in hermes doctor; generic profile namespace support is proposed in upstream PR 134900."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"comment-scraper","repo":"https://github.com/supertj/comment-scraper-mcp","sha":"fd739bc532f351d22f056ff74bf48a1a14beca7f","subdir":"plugin","title":"Comment Scraper","description":"Ask about the Reddit and Hacker News threads you exported with the Comment Scraper browser extension: list, read, search and quote them by comment number. Disclosure — starts a local stdio MCP server with npx -y comment-scraper-mcp@0.1.0, which npx downloads from npm on first run; the server only reads JSON exports in ~/Downloads and the folders directly inside it, never writes files, makes no network requests, stores no credentials and sends no telemetry.","maintainer":"Comment Scraper","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://comment-scraper.com/docs","version":"0.1.0","image":"https://raw.githubusercontent.com/supertj/comment-scraper-mcp/fd739bc532f351d22f056ff74bf48a1a14beca7f/plugin/assets/icon.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"compartment","repo":"https://github.com/MaxFreedomPollard/Compartment","sha":"b144fc34723911eace9f240ac1044b9280b74bf2","subdir":"integrations/hermes/compartment","description":"Encrypted, fully offline memory provider. AEAD-encrypted local vault (vectors included), bundled embedding model, exact hybrid search, no API key and no network at runtime. One vault shared with Claude, Cursor and any other MCP client on the machine. Disclosure — installs the full compartment engine (about 27 Python packages including onnxruntime, tokenizers, mcp and system-tray dependencies) into the Hermes venv; the provider's system prompt instructs the model to store passwords and API keys in the encrypted vault.","maintainer":"MaxFreedomPollard","tier":"community","category":"memory","requires_hermes":">=0.20.1","docs_url":"https://github.com/MaxFreedomPollard/Compartment/blob/b144fc34723911eace9f240ac1044b9280b74bf2/integrations/hermes/README.md","version":"4.10.0","image":"https://raw.githubusercontent.com/MaxFreedomPollard/Compartment/b144fc34723911eace9f240ac1044b9280b74bf2/docs/images/social-preview.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"completion-sound","repo":"https://github.com/Zamoca42/hermes-completion-sound","sha":"160883daf31f7e788f862197cf2bedb7b8715be2","title":"Completion Sound","description":"Pick the sound Hermes Desktop plays when a turn finishes: one of the 14 built-in presets or your own audio file (mp3, wav, ogg), with an optional different sound during night hours. Files stay in the plugin's local storage. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.","maintainer":"Zamoca42","tier":"community","category":"desktop","requires_hermes":">=0.22.0","docs_url":"https://github.com/Zamoca42/hermes-completion-sound","version":"0.1.0","platforms":[],"known_issues":["Hermes' own completion sound still plays alongside the plugin's until Hermes adds a way to turn it off (PR #140350)."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"composer-modes","repo":"https://github.com/LisandroNahuelH/hermes-composer-modes","sha":"de372aa34ecfe6adb424f86c04ca2de924984cb0","description":"Cursor-style composer modes (ask / agent / plan / debug) for the Hermes desktop — the mode's operating note reaches the model inside the turn's model-facing bytes, never the bubble, transcript or session titles, and ask mode is enforced read-only on the tool side.","maintainer":"LisandroNahuelH","tier":"community","category":"desktop","requires_hermes":">=0.21.3","docs_url":"https://github.com/LisandroNahuelH/hermes-composer-modes#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"context-audit","version":"0.1.0","repo":"https://github.com/ZidoCode/context-audit","sha":"2aaa96aab2c685798b011a5d6479a4a1fa6a033f","description":"Context-window forensics: per-turn input/output token estimates, the single largest tool output of each turn, oversized tool calls (args over 50 KB), and compaction events, recorded as metadata only (tool name, byte length, ids, timestamps — never args or results) in a local SQLite DB under HERMES_HOME/plugin-data/context-audit/. Adds a /context-audit slash command that prints the top 5 context eaters over a window with one mitigation per entry.","maintainer":"ZidoCode","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/ZidoCode/context-audit#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","post_auxiliary_call"],"provides_middleware":[],"requires_env":[]}},{"name":"corpus","repo":"https://github.com/teakesdev/corpus-agent-kit","sha":"53db664236201a885a3a7133ffe62476293faace","subdir":"plugins/corpus","description":"Hosted Corpus MCP (Streamable HTTP at corpuslaw.us/api/mcp) plus two bundled skills: US law search/get_node/list_coverage over 571k+ provisions, and LLC/nonprofit formation intake (requirements, compare, NAICS lookup, handoff, USDC checkout, payment_status), with account.status for quota. Filing always stays human-gated and USDC pay is email-confirmed. Portable Agent Plugins v1 package (mcp.json + skills/); no API key needed for anonymous research. The formation skill requires fixed vendor-authored marketing copy in the first reply and before payment, and sends founder PII (name, email, phone, address) to Corpus through links and MCP tools. Intake instructions are vendored; checkout requires exact-amount confirmation from the user in the current turn.","maintainer":"teakesdev","tier":"community","category":"tools","docs_url":"https://corpuslaw.us/agents","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cortexlayer","repo":"https://github.com/Cortex-Layer/cortexlayer-hermes-plugin","sha":"099e4b3e77f73086bbf94fb32e052c864295e2ee","subdir":"plugins/memory/cortexlayer","description":"CortexLayer memory provider — page-linked long-term memory with link-expansion retrieval, wired into Hermes' automatic per-turn recall (prefetch) and persistence (sync_turn), plus a pre-compress checkpoint so evidence Hermes' own context compaction would otherwise drop is saved first. Platform mode only: each turn's query and conversational content is sent to the hosted api.cortexlayer.net (HTTPS, API-key authenticated) for storage/retrieval — no local/offline mode. Requires a free CortexLayer account and API key.\n","maintainer":"Cortex-Layer","tier":"community","category":"memory","docs_url":"https://docs.cortexlayer.net/docs/agents/hermes","version":"0.1.1","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end","on_pre_compress"],"provides_middleware":[],"requires_env":["CORTEX_API_KEY"]}},{"name":"covision","repo":"https://github.com/Covision-Consultants/covision-agent-plugin","sha":"373012bed0a36f7d4345a180eefc26352403cd3d","description":"Read-only Covision meeting, assigned-task, and published-knowledge tools through the Covision Streamable HTTP MCP service, plus a workflow skill. Requires a Covision account, organization connector enablement, and browser OAuth consent; no API key or client secret is stored in the plugin.","maintainer":"Covision Consultants","tier":"community","category":"tools","docs_url":"https://github.com/Covision-Consultants/covision-agent-plugin","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"crawl4ai","repo":"https://github.com/mblauser/hermes-plugin-crawl4ai","sha":"6eb0842a39e2d89fb02ca85512945700dbebdc86","description":"Crawl4ai self-hosted web content extraction. Requires CRAWL4AI_URL and CRAWL4AI_API_TOKEN pointing at your instance.","maintainer":"mblauser","tier":"community","category":"web","docs_url":"https://github.com/mblauser/hermes-plugin-crawl4ai#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"crew","repo":"https://github.com/macd2/Crew","sha":"eda96d5b43215659678829f9f5cc50dac304d289","description":"One /crew message becomes verified work on the kanban board. A coordinator owns every card until its proof command exits 0 - one writer per card, an independent verifier, a hard token budget per card, and a live local dashboard of every card, run and tool call. Disclosure — install.py creates four crew-* profiles cloned from your chat profile (including its .env provider keys and memories), deletes non-crew skills in them, updates crew in other profiles and on Linux starts a loopback dashboard service (127.0.0.1:8799, transcript excerpts; --publish serves it to one tailnet login), restarting it when an upgrade changes the plugin code; on native Windows the service and the optional nightly cron are skipped and the dashboard is started by hand, and proofs run in Git for Windows's bash; a Crew tab in the Hermes dashboard and a Crew page in Hermes Desktop build that board inside the Hermes backend, including its transcript excerpts, each live card's step count and last tool name, and its acknowledge action, under /api/plugins/crew/ to anyone with dashboard access; a detached coordinator makes read-only model decisions and runs card proof commands unattended with a scrubbed env, flagged or changed proofs only after the owner answers /crew-proof; card reports and questions are sent to the originating chat via hermes send; agent-written per-role lessons are injected into later crew turns.","maintainer":"macd2","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/macd2/Crew#readme","version":"0.9.10","image":"https://raw.githubusercontent.com/macd2/Crew/eda96d5b43215659678829f9f5cc50dac304d289/assets/banner.png","screenshots":["https://raw.githubusercontent.com/macd2/Crew/eda96d5b43215659678829f9f5cc50dac304d289/assets/dashboard.webp"],"platforms":["linux","windows"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_api_request","api_request_error","on_kanban_dispatch_tick"],"provides_middleware":[],"requires_env":[]}},{"name":"cron-bulletin","repo":"https://github.com/lvabarajithan/hermes-cron-bulletin","sha":"42afc8190f61a4601da7bdeced61d2c26e10fd65","tier":"community","category":"desktop","description":"Central Hermes Desktop inbox for reports produced by local cron runs.","maintainer":"Abarajithan","version":"0.1.2","image":"https://raw.githubusercontent.com/lvabarajithan/hermes-cron-bulletin/42afc8190f61a4601da7bdeced61d2c26e10fd65/docs/cron-bulletin.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"crypto-prices","repo":"https://github.com/cruzlxyz/crypto-prices","sha":"69d34d7fa8d600f3c57b634c5cfdb8fdd2fe995a","description":"Live crypto price ticker for the desktop status bar — Top 10 by market cap, seamless marquee, custom coins & 60+ display currencies, adjustable width (CoinGecko, no API key).","maintainer":"cruzlxyz","tier":"community","category":"desktop","version":"0.1.0","requires_hermes":">=0.21.3","docs_url":"https://github.com/cruzlxyz/crypto-prices#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cursor-provider","repo":"https://github.com/anpicasso/hermes-cursor-provider","sha":"833122c23a8e1d1570446a358cdb8e120d7ce42c","subdir":"provider","description":"Cursor model provider using the official proprietary Cursor SDK. Disclosure — uses Cursor's proprietary cursor-sdk (PyPI, bundled binary bridge on loopback) with the user's CURSOR_API_KEY; sends the full conversation, tool schemas/results and images (HTTPS URLs or base64) to Cursor; keeps private per-session SDK workspaces under HERMES_HOME/cache/cursor-sdk; Cursor built-in tools and MCP are requested off and Hermes keeps tool execution and approvals.","maintainer":"anpicasso","tier":"community","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/anpicasso/hermes-cursor-provider#readme","version":"0.3.6","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"cursor-sdk","repo":"https://github.com/mcpeezy/hermes-cursor-sdk","sha":"0e546bc079ab23451a52a12ca02e8a55af34e217","description":"Experimental model transport using the official Cursor Agent SDK. Requests go to Cursor through its official SDK. The plugin cannot enforce an included-only spending cap and never changes account spending settings. Instructions use a Cursor project rule, not a native system-role override. Permission and prompt-hierarchy equivalence remain unqualified. The plugin spawns Node and a local SDK agent, runs Git initialization in a plugin-owned workspace, and writes project rules, hooks, and SDK state under its own runtime directory. That state may contain private conversation data and currently remains on disk. Credentials come from Hermes's profile-scoped secret accessor. No credential store or vendor token file is read directly by plugin code. Text-only, buffered responses. The bundled model snapshot is not live entitlement discovery. Optional picker hooks require Hermes support. This plugin does not patch the desktop. Disclosure — spawns Node and a local Cursor Agent SDK worker per request (`npm ci` in the plugin dir installs Cursor's official native platform binaries from npm); sends the full conversation, system prompt and tool schemas to Cursor with your CURSOR_API_KEY; Cursor-native shell/file tools are denied by a fail-closed project hook and the run is cancelled if one fires, but that enforcement is not proven in every Cursor runtime; each request's workspace and conversation state stay under the plugin's runtime/ directory until you delete them.","maintainer":"mcpeezy","tier":"community","category":"models","requires_hermes":">=0.22.0","docs_url":"https://github.com/mcpeezy/hermes-cursor-sdk#readme","version":"0.1.0","readme":true,"platforms":["macos","linux"],"known_issues":["Experimental: included subscription billing and live permission equivalence are not verified.","Node 22.13 or later and Git are required. Install the pinned npm dependencies in the plugin directory.","Text-only, buffered responses. Model snapshot is not live entitlement discovery.","SDK workspaces and conversation state remain under the installed plugin's runtime directory.","Uses 3 private Hermes helper imports, disclosed in the README and entry PR."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CURSOR_API_KEY"]}},{"name":"custodian","repo":"https://github.com/indigokarasu/hermes-custodian-plugin","sha":"d5b4ebfd2353a29380a51c8bcba84d4682cf4c91","version":"3.0.1","description":"Autonomous operations monitor for a Hermes install: scans gateway logs, cron jobs, skill journals and agent data directories, classifies findings against a 27-fingerprint registry, auto-repairs Tier 1 problems, escalates the rest, and keeps an append-only issue ledger. Ships /custodian (status, scan, issues, repair, verify, schedule, confidence, init, escalation-runner), four scan/health tools and a grid dashboard. Disclosure — reads gateway logs, cron job state and per-skill journal files under HERMES_HOME to build its findings, and writes repair actions and an issues ledger back there; it performs no network I/O and holds no credentials. Disclosure — /custodian init registers 3 recurring agent cron jobs (deep scan 4×/day, cron-health 4×/day, escalation runner every 30 min on weekdays).","maintainer":"indigokarasu","tier":"community","category":"automation","docs_url":"https://github.com/indigokarasu/hermes-custodian-plugin#readme","readme":true,"platforms":[],"capabilities":{"provides_tools":["custodian_status","custodian_scan","custodian_issues","custodian_cron_health"],"provides_hooks":["post_tool_call","on_session_end","on_session_start","on_session_reset"],"provides_middleware":[],"requires_env":[]}},{"name":"custom-dangerous-patterns","repo":"https://github.com/scross01/hermes-custom-dangerous-patterns-plugin","sha":"256ff08d0be04baf1916f5e7d841b1c2718aa1e4","description":"Add custom dangerous command patterns to Hermes's built-in approval system. Users define regex patterns in YAML; a pre_tool_call hook sends block patterns to Hermes's human approval gate and blocks deny patterns immediately. Modifies no Hermes internals.","maintainer":"scross01","tier":"community","category":"tools","requires_hermes":">=0.21.4","version":"0.5.1","image":"https://raw.githubusercontent.com/scross01/hermes-custom-dangerous-patterns-plugin/256ff08d0be04baf1916f5e7d841b1c2718aa1e4/assets/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"darkmoon","repo":"https://github.com/ASCIT31/darkmoon-hermes-plugin","sha":"4a24b4eb77f01bf8ba56c11f37803d623fc14f14","description":"Triage the findings file of a Darkmoon autonomous pentest scan (JSON or SARIF): filter by severity and proof status, get a severity-sorted summary and a pass/fail gate for a release. Read-only and offline: no network, no subprocess, no credentials, standard library only. Darkmoon is open source (GPL-3.0); its web dashboard and remediation agent are Pro and are not used here. Disclosure — reads a local .json or .sarif file at a model-supplied path (10 MB cap) and returns its findings; no network, subprocess or writes","maintainer":"ASCIT31","tier":"community","category":"tools","version":"0.1.0","docs_url":"https://github.com/ASCIT31/Dark-Moon","platforms":[],"capabilities":{"provides_tools":["darkmoon_findings"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"dashboard-auth-feishu","repo":"https://github.com/xielevi/hermes-dashboard-auth-feishu","sha":"724715f6b87cec86f147b0ff9854abd343c00013","description":"Feishu / Lark OAuth sign-in for the web dashboard, admitted by tenant + open_id allow-list. Registers the `feishu` dashboard auth provider once plugins.entries.dashboard-auth-feishu.settings (app_id, tenant_key, owner_open_ids) and an app secret are configured. Disclosure — calls only the fixed Feishu or Lark authorize, token and user_info endpoints; reads HERMES_DASHBOARD_FEISHU_APP_SECRET or, as a fallback, the Feishu gateway's FEISHU_APP_SECRET, plus HERMES_DASHBOARD_FEISHU_SESSION_KEY; stores tenant, open_id and display name per sign-in in a 0600 SQLite file under plugin-data (no upstream tokens); a refused sign-in logs the tenant_key and open_id Feishu returned (identifiers only, for first-time setup); every admitted identity gets full dashboard access; upstream PKCE is not used (confidential client with single-use cookie-bound state); pending logins are in memory, so one dashboard worker only; WebSockets opened before logout may stay open until the session key is rotated and the dashboard restarted.","maintainer":"xielevi","tier":"community","category":"general","title":"Feishu / Lark Dashboard Login","requires_hermes":">=0.21.5","docs_url":"https://github.com/xielevi/hermes-dashboard-auth-feishu#readme","version":"1.0.1","known_issues":["Lark endpoints are implemented but not live-tested; Feishu is tested end to end."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"dashboard-auth-ldap","repo":"https://github.com/angel12/hermes-ldap-auth","sha":"7b871ef375239275e29b1934bbed8ae7573afea3","description":"LDAP / Active Directory password login for the web dashboard. Verifies credentials with an LDAP bind (direct or search-then-bind), never stores passwords, requires ldaps:// or StartTLS, and supports group restriction. Registers the `ldap` dashboard auth provider once dashboard.ldap_auth is configured. Disclosure — dashboard logins are verified by binding to your configured LDAP/AD server with the user's password (TLS with certificate validation required unless allow_insecure is set); sessions are stateless HMAC tokens (12h access / 30d refresh by default) signed with HERMES_DASHBOARD_LDAP_SECRET or a random per-process key, and logout cannot revoke them; group removal and disabled accounts are not re-checked until the refresh token expires; failed logins count toward the directory's account-lockout policy.","maintainer":"angel12","tier":"community","category":"general","requires_hermes":">=0.21","docs_url":"https://github.com/angel12/hermes-ldap-auth#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"dashboard-button","repo":"https://github.com/g3org3yo/dashboard-button","sha":"e3ad0477d61587a0f9e8f1f136d275995328070d","description":"One-click access to the Hermes Web Dashboard (127.0.0.1:9119) from the Desktop app — sidebar row, in-app page that loads itself when the server comes up, and a status-bar chip with a live dot. Front-end only: no agent calls, no tokens, no API keys.","maintainer":"g3org3yo","tier":"community","category":"desktop","requires_hermes":">=0.21.2","version":"1.1.0","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"dashscope-image","repo":"https://github.com/rriggs/hermes-plugin-dashscope-image","sha":"f13665c97eb852b3ef90e30e020dbdcf0c9dc38b","description":"DashScope (Qwen Cloud) image generation -- Wan 2.7 models via Alibaba Cloud Model Studio. Works with token plan (sk-sp-*) and PAYG (sk-ws-*) keys.","maintainer":"rriggs","tier":"community","category":"tools","docs_url":"https://github.com/rriggs/hermes-plugin-dashscope-image#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["QWEN_API_KEY"]}},{"name":"dashscope-video","repo":"https://github.com/rriggs/hermes-plugin-dashscope-video","sha":"229b5c93d498dfa25aab31f0bef47f32fccde69f","description":"DashScope (Qwen Cloud) video generation -- HappyHorse 1.1 models via Alibaba Cloud Model Studio. Async task API. Works with token plan (sk-sp-*) keys.","maintainer":"rriggs","tier":"community","category":"tools","docs_url":"https://github.com/rriggs/hermes-plugin-dashscope-video#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["QWEN_API_KEY"]}},{"name":"davinci-resolve","repo":"https://github.com/wassermanproductions/hermes-davinci-resolve-plugin","sha":"bbd5b207f823f16a20e756bfa80f44ad34790a3f","description":"Control DaVinci Resolve Studio live, or generate importable interchange files for free DaVinci Resolve.","maintainer":"wassermanproductions","tier":"community","category":"tools","docs_url":"https://github.com/wassermanproductions/hermes-davinci-resolve-plugin#readme","capabilities":{"provides_tools":["resolve_add_timeline_marker","resolve_append_to_current_timeline","resolve_capabilities","resolve_create_scripted_timeline","resolve_create_timeline","resolve_generate_fcpxml_timeline","resolve_generate_marker_csv","resolve_import_media","resolve_launch","resolve_probe","resolve_project_summary","resolve_render_status","resolve_render_timeline","resolve_scan_media_folder"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"platforms":["macos"]},{"name":"deadbolt","repo":"https://github.com/seanebones-lang/deadbolt-hermes-plugin","sha":"177fff79a8b6308f8d182146ed8a6e21dc84c565","description":"Review and approve exact text-artifact writes through a local DeadBolt sidecar. Protects this plugin's commit tool only.","maintainer":"seanebones-lang","tier":"community","category":"tools","title":"DeadBolt — reviewed artifact writes","version":"0.1.0","requires_hermes":">=0.22.2","docs_url":"https://github.com/seanebones-lang/deadbolt-hermes-plugin#readme","platforms":["linux","macos"],"readme":true,"known_issues":["Requires a separately installed DeadBolt 2.0.0 engine and operator-provisioned local sidecar, run, policy and scoped admission credential.","Only this plugin's artifact commit route is gated; other Hermes tools, plugins, MCP routes and already-running work are outside its boundary.","New files only, existing parent directories, 32 KiB request limit and five-minute exact approvals. Admitted filesystem failures require operator reconciliation."],"capabilities":{"provides_tools":["deadbolt_prepare_write","deadbolt_commit_write"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"debug-desk","repo":"https://github.com/aydnOktay/hermes-debug-desk","sha":"57cbd4d23eba978dc9a53ab6387a84c336992b74","description":"Today's git digest in the current repo, plus the last failed terminal command the Hermes agent ran. Desktop pane, status chip, optional local LLM summary. Does not watch OS or editor terminals.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-debug-desk","version":"1.0.1","image":"https://raw.githubusercontent.com/aydnOktay/hermes-debug-desk/57cbd4d23eba978dc9a53ab6387a84c336992b74/assets/banner.png","platforms":[],"capabilities":{"provides_tools":["debug_daily_report","debug_last_failure"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"deepgram-voice","repo":"https://github.com/jaysonsantos/hermes-deepgram-voice-plugin","sha":"2d31b885ec873ed6693edd7ad1a80f7023439ac0","description":"Deepgram Aura text-to-speech and Nova speech-to-text providers for Hermes Agent.","maintainer":"jaysonsantos","tier":"community","category":"voice","docs_url":"https://github.com/jaysonsantos/hermes-deepgram-voice-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["DEEPGRAM_API_KEY"]}},{"name":"deepinfra-sandbox","repo":"https://github.com/deepinfra/deepinfra-hermes-sandbox","sha":"259a477548f1862071c9e2462fda6a7bb9de68c8","description":"Terminal backend running agent commands in isolated DeepInfra cloud sandboxes (deep_sands microVMs). Disclosure — runs agent commands in billable DeepInfra cloud sandboxes and uploads your Hermes skills, cache and skill-registered credential files to the sandbox at /workspace/.hermes; dangerous-command approval is skipped inside the sandbox.","maintainer":"DeepInfra","tier":"community","category":"platform","docs_url":"https://github.com/deepinfra/deepinfra-hermes-sandbox#readme","version":"0.1.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["DEEPINFRA_API_KEY"]}},{"name":"deepseek-search-fetch","repo":"https://github.com/JasonSwindle/hermes-deepseek-search-fetch","sha":"68c9b735288ce9a38f1108eec22707c9880da6dd","description":"DeepSeek Search & Fetch as a backend for the built-in web_search and web_extract. Disclosure — sends web_search queries and web_extract URLs to api.deepseek.com with your DEEPSEEK_API_KEY and DeepSeek fetches the pages server-side; billed to your DeepSeek balance per successful request; no other endpoint, no telemetry, no file or shell access.","maintainer":"JasonSwindle","tier":"community","category":"web","docs_url":"https://github.com/JasonSwindle/hermes-deepseek-search-fetch#readme","version":"1.0.7","title":"DeepSeek Search & Fetch","image":"https://raw.githubusercontent.com/JasonSwindle/hermes-deepseek-search-fetch/68c9b735288ce9a38f1108eec22707c9880da6dd/docs/banner.png","platforms":[],"known_issues":["Billed by DeepSeek per successful request (list price $0.75 per 1,000; failed calls are free); web_extract calls Fetch one URL at a time, so multi-URL extracts run sequentially and stop starting new URLs 110s in (the extract_deadline setting, clamped 5-115, must stay below web.extract_timeout); and ori_question is not forwarded, because Hermes hands the provider only the query and a result limit."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["DEEPSEEK_API_KEY"]},"requires_hermes":">=0.22.0"},{"name":"deepseek-whale","repo":"https://github.com/bmtrnavsky/deepseek-whale","sha":"9b284b47a1db1f2cc05e71b0d0b2b58f9d773f1b","description":"Live DeepSeek API peak/off-peak pricing whale for the Hermes desktop titlebar. Blue x0.5 off-peak, grey PEAK at full price, countdown on click, 30s repaint, no backend or API key.","maintainer":"bmtrnavsky","tier":"community","category":"desktop","version":"1.1.0","requires_hermes":">=0.21","docs_url":"https://github.com/bmtrnavsky/deepseek-whale#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"deferred-questions","repo":"https://github.com/web3blind/hermes-deferred-questions","sha":"eeb86254725e8ba0d599f85d25c63488efd06364","description":"Durable non-blocking questions with exact answer binding and gateway continuation. Disclosure — its pre_gateway_dispatch hook sees every gateway message and consumes only `dq <id> …` answers from the stored recipient; with `enable_tool` on, the model can send questions to any chat the gateway already authorizes, and a question marked continue_agent resumes that chat's agent with the user's answer; questions and answers are stored unencrypted in $HERMES_HOME/deferred-questions/questions.sqlite3; it calls private gateway and adapter methods, so a Hermes update can break delivery until it is re-pinned.","maintainer":"web3blind","tier":"community","category":"automation","requires_hermes":">=0.21.6","platforms":["linux","macos"],"version":"0.2.4","docs_url":"https://github.com/web3blind/hermes-deferred-questions#readme","readme":true,"capabilities":{"provides_tools":["deferred_questions"],"provides_hooks":["pre_gateway_dispatch"],"provides_middleware":[],"requires_env":[]}},{"name":"deja-memory","repo":"https://github.com/vshulcz/deja-vu","sha":"d7e4a264bbd4deedd0bdba9d22ef5d2ba26c5d4e","subdir":"extensions/hermes","version":"0.1.0","description":"Memory from the coding sessions already on this machine — Claude Code, Codex, Cursor, Hermes and the other agents deja reads, including history from before it was installed. No model, no API key, no server. Disclosure — runs the separately installed, unpinned deja binary (brew install deja-vu) as a subprocess; deja reads Claude Code, Codex, Cursor, Hermes and other agents' local transcript files, keeps its index under ~/.cache/deja, and recalled text from those agents is injected into Hermes turns; nothing leaves the machine.","maintainer":"vshulcz","tier":"community","category":"memory","platforms":["linux","macos","windows"],"docs_url":"https://vshulcz.github.io/deja-vu/guide/memory-for-hermes.html","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"desensitize","repo":"https://github.com/yubingz/hermes-desensitize","sha":"4f6697c1e45bb224e40b556372f33794f9326c0f","subdir":"src/hermes_desensitize","description":"Chinese-context desensitization for Hermes chats. Replaces PII and business-sensitive entities — person names, company names, addresses, file paths, and magnitude figures — with reversible placeholders before a message reaches the model, then restores them in the reply. Two layers: an optional local/OpenAI-compatible LLM for semantic entity judgment, plus a sub-millisecond regex fallback (phone, ID card, email, IP, path) that keeps the conversation working when the model is unavailable. Disclosure — the semantic layer sends the pre-redaction text to the configured LLM, because recognising a name requires seeing it: with the default provider=ollama that is the local Ollama host and nothing leaves the machine, but provider=openai without an explicit base_url falls back to https://api.siliconflow.cn/v1 (remote); set base_url, or stay on ollama, to keep it local. Also rewrites inbound user messages and outbound assistant replies, so transcript content differs from what you typed; placeholders are code-generated and may over-match (18-digit ID-card-shaped strings, names that collide with the public-entity allowlist); company names are matched greedily and a modifier such as 原北京某某有限公司 is absorbed into the placeholder; magnitude masking drops the numeric value and only fires on the configured trigger words, so a domain term absent from that list is left unmasked without warning; the placeholder mapping is held in memory only and never written to disk.","maintainer":"yubingz","tier":"community","category":"tools","requires_hermes":">=0.19","docs_url":"https://github.com/yubingz/hermes-desensitize#readme","version":"1.4.1","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","pre_api_request","transform_llm_output","post_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"deskrpg","repo":"https://github.com/dandacompany/deskrpg-hermes-plugin","sha":"1e9914a614f17186b6749916031da69ed6b61aa0","description":"Hermes gateway integration for DeskRPG virtual offices, with profiles, kanban, cron, artifacts and NPC skill management. Install it through the DeskRPG setup wizard. Optional (off by default): when enabled by the operator, links the plugin into every profile so kanban workers and cron runs can save artifacts. Disclosure — NPC skill management runs hermes skills/curator commands as background subprocesses per profile and edits that profile's skills, config.yaml and memory files; creating new review-policy kanban cards needs a review-policy API that upstream Hermes does not ship (the README points at the author's hermes-agent fork for it), and that feature stays inert on upstream.","maintainer":"dandacompany","tier":"community","category":"automation","requires_hermes":">=0.21.1","docs_url":"https://github.com/dandacompany/deskrpg-hermes-plugin/tree/1e9914a614f17186b6749916031da69ed6b61aa0","version":"0.16.0","readme":true,"platforms":[],"capabilities":{"provides_tools":["artifact_save","propose_kanban_card"],"provides_hooks":["post_tool_call","post_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"devin","repo":"https://github.com/Adolanium/hermes-devin","sha":"45ae46b935503d9271492001564690f153a0fdb9","subdir":"","title":"Hermes Devin","description":"Delegate coding tasks to the Devin CLI, on your computer or in Devin Cloud, with live progress cards and change review in Hermes Desktop. Every launch goes through Hermes approval; Cloud runs need a separate Cloud-managed-permissions confirmation. Disclosure — spawns the vendor devin CLI from PATH or cli_path (devin acp, devin acp --cloud, devin --print, devin auth status, devin models list); the CLI edits files and runs shell commands in a folder the model picks (any folder unless allowed_roots is set) under the configured permission mode (accept-edits/smart auto-allow edits, dangerous auto-allows everything and needs allow_dangerous: true), and talks to Cognition's servers; Devin Cloud runs use Cognition-managed permissions that Hermes does not gate. Every model-initiated launch goes through Hermes approval; follow-ups typed on a Desktop run card and answers to Devin's prompts on the card start or allow actions on that click without a Hermes prompt (unanswered card prompts are denied after 300 s by default). Uses the existing Devin CLI login and stores no credentials; Hermes provider, bot and tool secrets are stripped from the child environment (extra_env is passed as set). Background runs continue after the turn up to their timeout and post Devin's output back into the conversation as a message when they finish. Run history (prompts, diffs, command output) and model preferences are saved under plugin-data/devin unless persist_runs is off. Independent community add-on, not affiliated with Cognition.","maintainer":"Adolanium","tier":"community","category":"tools","docs_url":"https://github.com/Adolanium/hermes-devin#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-devin/45ae46b935503d9271492001564690f153a0fdb9/assets/catalog-banner.png","version":"0.1.1","screenshots":["https://raw.githubusercontent.com/Adolanium/hermes-devin/bcfeeeb8e6a1798595b266a3d2271eebb90aeef2/assets/screenshots/desktop-review.png"],"platforms":[],"capabilities":{"provides_tools":["delegate_to_devin","devin_list_runs","devin_run_status","devin_run_result","devin_cancel_run"],"provides_hooks":["pre_tool_call","post_approval_response"],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.6"},{"name":"devkit","repo":"https://github.com/Zek-Takai/hermes-devkit","sha":"dbfa6b26ac64c65ec3e58a937890a912de3d628d","subdir":"plugin","title":"Scratchpad (devkit)","version":"0.3.0","description":"One managed home for agent drafts: a per-session scratchpad of named buffers the agent edits in place instead of writing a new temp file per revision. Buffers live under plugin-data/devkit/, open in the Desktop code viewer, are promoted to real files only through write_file, and are removed when their chat is deleted. A Scratchpad tab beside Files groups chats by date like the chat sidebar; click a chat to open it, click a file to view or edit it in a workspace tab, and delete or clear drafts. Disclosure — adds a short placement rule (about 120 tokens) to each turn's user message; reads state.db read-only once an hour from a background thread to find deleted chats, and also removes folders idle longer than idle_days (default 90) using its own stamps; deletes only its own folders under plugin-data/devkit/; no network calls, credentials or third-party services.","maintainer":"Zek-Takai","tier":"community","category":"tools","requires_hermes":">=0.22.0","image":"https://raw.githubusercontent.com/Zek-Takai/hermes-devkit/dbfa6b26ac64c65ec3e58a937890a912de3d628d/docs/scratchpad-banner.png","screenshots":["https://raw.githubusercontent.com/Zek-Takai/hermes-devkit/dbfa6b26ac64c65ec3e58a937890a912de3d628d/docs/scratchpad-desktop.png"],"known_issues":["scratchpad action=open needs the Desktop window bridge on the session gateway (NousResearch/hermes-agent#138917); on v0.22.1 open reports 'The preview pane is only available in the Hermes desktop app'. Every other action works.","The agent may not always pick the scratchpad on its own (the model chooses its tools). If it writes a loose file or pastes code instead, ask it to use the scratchpad."],"capabilities":{"provides_tools":["scratchpad"],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"dexio","repo":"https://github.com/dexio-wiki/hermes-plugin","sha":"5ab1615315512bbc70dad8f80cc5ecebc0404b34","version":"0.1.0","description":"Dexio shared-wiki memory. Before each turn, the pages of your Dexio wiki that match the user's message; tools to search, read and write the pages your other agents and team also use. Nothing is captured automatically: no transcripts or turn logs. Standard library only; no background threads or local services. Disclosure — with DEXIO_API_KEY set, the first 300 characters of each user message go to the Dexio server (default app.dexio.wiki, or DEXIO_URL) as a search query, tool arguments and the agent's profile name go there on tool calls, and the model is prompted to write, overwrite and edit pages in a wiki shared with the user's team and other agents, without a confirmation step.","maintainer":"dexio-wiki","tier":"community","category":"memory","docs_url":"https://github.com/dexio-wiki/hermes-plugin#readme","readme":true,"capabilities":{"provides_tools":["dexio_search","dexio_read","dexio_list","dexio_write","dexio_edit","dexio_append"],"provides_hooks":[],"provides_middleware":[],"requires_env":["DEXIO_API_KEY"]}},{"name":"diaktoros","repo":"https://github.com/coe0718/diaktoros","sha":"777458fb0ab7cdcea7fe4b2c032f6eebcb83b52e","description":"Unattended GitHub pull-request review between two Hermes agents: one pushes fixes, a different one reviews, rounds are capped in verdicts, a watchdog reports silent stalls, and the loop never merges. Disclosure — runs unattended Hermes agent turns inside bubblewrap (terminal and file tools, no network, no credentials); a host-side broker and the CLI write to GitHub (reviews, comments, labels, issues, repo webhooks, and opt-in fixer pushes, which may push CI fixes, merge commits of the base into a PR's own branch to resolve conflicts, and issue-fix branches and PRs, including an opt-in auto-fix that hands issues its triage seat labels (never P0-P2, capped per day) to the fixer without a maintainer, plus an opt-in clean merge of the base into a review-only author's same-repository PR branch when it conflicts or falls behind, a branch the loop does not own; it never merges a PR) with repo-scope PAT files you provide; edits Hermes's webhook_subscriptions.json directly and its watchdog re-adds this loop's routes while armed; writes gate scripts into the seat profiles' scripts/ folders and creates one hermes cron job (its migrate command replaces the old hermes-review-loop job and copies that plugin's settings); its backup command writes a 0600 archive of the plugin's state, including webhook route secrets, to a path you choose, and restore writes one back into the Hermes home and recreates the cron job (restore only archives you made: a crafted one can place files anywhere under the Hermes home); downloads PR archives from codeload.github.com, failed CI job logs from GitHub's log storage (redirected, without the token) and Rust crates from crates.io on the host; an opt-in observer feed posts loop notices to the chat you name; deletes its own state and closed-PR review dirs in roots you configure; on OAuth seats its host proxy may force Hermes token refreshes that rewrite ~/.claude, ~/.codex, ~/.qwen and profile auth.json credentials, and on Claude subscription logins it identifies as Claude Code (Claude Code user-agent, x-app and OAuth beta headers). Nothing runs until you arm a loop. Linux only.","maintainer":"coe0718","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/coe0718/diaktoros#readme","version":"0.3.0","image":"https://raw.githubusercontent.com/coe0718/diaktoros/777458fb0ab7cdcea7fe4b2c032f6eebcb83b52e/docs/banner.jpg","platforms":["linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"diff-review","repo":"https://github.com/sprmn24/hermes-plugin-diff-review","sha":"f238271c1f63ac59b43b99290ec6143f50b780f3","description":"Analyze git diffs for common code quality issues — debug prints, hardcoded secrets, bare except clauses, and unresolved TODOs.","maintainer":"sprmn24","tier":"community","category":"tools","docs_url":"https://github.com/sprmn24/hermes-plugin-diff-review#readme","capabilities":{"provides_tools":["diff_review"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"digital-marketing-pro","repo":"https://github.com/indranilbanerjee/neels-plugins","sha":"fe81530ae4f92b7459c43fccd21e15dcd54ae661","subdir":"hermes/digital-marketing-pro","description":"Open-source marketing toolkit for agencies and in-house teams, one listing with three skill groups and 207 skills registered as Hermes skills: Digital Marketing Pro (strategy, SEO/AEO/GEO, paid media, CRM, analytics; 164 skills), ContentForge (fact-checked long-form content with a run auditor; 22 skills) and SocialForge (a content calendar to images, carousels, video and copy; 21 skills). Skills only: no tools, hooks or background processes. Disclosure — Skills only (no tools, hooks or MCP servers). The optional scripts the skills run call third-party APIs (ad, CRM, e-mail, Slack, LLM and image/video providers) only when run, using the user's own keys from environment variables. Live writes need the user's typed yes. For writes the plugin sends itself, the script creates a single-use approval record when it prepares the write, and the agent approves that record after the yes, so Hermes does not prompt before those script runs. Writes through MCP tools rely on the typed yes alone. Paid image and video generation is quoted first. refresh_models.py reads your Anthropic, OpenAI, Gemini and (strategy group) Evolink keys. Keys and data live outside the Hermes profile: SocialForge stores API keys in plain text, plus a copy of any Google service-account file, in ~/socialforge-workspace; brand data goes to ~/.claude-marketing; deliverables are copied to ~/Documents/DigitalMarketingPro and ~/Documents/ContentForge. Nothing installs unless the user says yes; installs are exact-pinned pip packages into the Python that runs the script, plus Playwright's Chromium download. See the README and each group's PRIVACY.md.","maintainer":"Indranil Banerjee","tier":"community","category":"tools","docs_url":"https://github.com/indranilbanerjee/neels-plugins/tree/fe81530ae4f92b7459c43fccd21e15dcd54ae661/hermes/digital-marketing-pro#readme","version":"3.56.7","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"discord-tps","repo":"https://github.com/tuancookiez-hub/hermes-discord-tokenpersec","sha":"056fcd331d9be03c287f293854b715b17b637203","subdir":"discord-tps","version":"1.0.3","requires_hermes":">=0.21.4","description":"Show live tokens-per-second and the active model on your Discord bot's presence. Disclosure — Replaces the Discord bot's public presence with the live tok/s figure and the model name of the most recent API call in this gateway (any platform or chat), visible to anyone who can see the bot; updates at most every interval seconds (minimum 10) over the gateway's existing Discord connection. Reads no credentials and makes no network calls of its own.","maintainer":"tuancookiez-hub","tier":"community","category":"platform","docs_url":"https://github.com/tuancookiez-hub/hermes-discord-tokenpersec/blob/056fcd331d9be03c287f293854b715b17b637203/discord-tps/README.md","readme":true,"image":"https://raw.githubusercontent.com/tuancookiez-hub/hermes-discord-tokenpersec/056fcd331d9be03c287f293854b715b17b637203/assets/banner.png","screenshots":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-discord-tokenpersec/056fcd331d9be03c287f293854b715b17b637203/assets/presence-screenshot.png"],"capabilities":{"provides_tools":[],"provides_hooks":["post_api_request"],"provides_middleware":[],"requires_env":[]}},{"name":"doc-markdown","repo":"https://github.com/TakeshiTGAL/hermes-plugin-doc-markdown","sha":"4206b7f8066fe84f2c295f480a441f47154d9315","description":"Convert one local file to Markdown with doc_convert on Linux and macOS, built on Microsoft's MarkItDown. Microsoft and MarkItDown are trademarks of the Microsoft group of companies. Disclosure — the doc_markdown toolset is on by default on every surface, including a gateway, so anyone you allow there can call doc_convert; stop it with hermes tools. It does not fetch pages. Unattended sessions still convert when Hermes calls the tool. This plugin creates no cron job. A child process runs MarkItDown with no Hermes keys in its environment; on macOS the plugin runs ps about every 10 ms to watch that child's memory. It stops 8 seconds after its converters load, at 60 seconds if loading never finishes, or above 922746880 bytes. It is not a sandbox: after realpath it may read any allowlisted path it can open. Unpublished Hermes code locates the Hermes home, and a failed check refuses the path. Removal deletes the plugin directory, not the markitdown package. Windows was not tested.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-doc-markdown#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":["linux","macos"],"capabilities":{"provides_tools":["doc_convert"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"doctorpack","repo":"https://github.com/godhiraj-code/hermes-doctorpack","sha":"ac00ace14ea9210e2e02a7b978cf4bc51eec2d8f","description":"Local-first diagnostics, safety audit, and incident postmortems for Hermes Agent.","maintainer":"godhiraj-code","tier":"community","category":"tools","version":"0.1.0","capabilities":{"provides_tools":["doctorpack_config_audit","doctorpack_plugin_check","doctorpack_postmortem"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"document-reader","repo":"https://github.com/lEWFkRAD/hermes-document-reader","sha":"f3a0bed28e6c289942b899924d9e7cf8b93045e8","description":"Profile-scoped document OCR for Hermes Desktop and HUD, with a guarded per-profile Windows service.","maintainer":"lEWFkRAD","tier":"community","category":"desktop","docs_url":"https://github.com/lEWFkRAD/hermes-document-reader#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"platforms":["windows"]},{"name":"done-bell","repo":"https://github.com/aydnOktay/hermes-done-bell-","sha":"3fa519a291d91b0e6c44bd42762190363ce80c39","description":"Ring when a Hermes turn finishes so you can leave the window. OS notification, optional chime, and a busy/done chip. Optional \"needs you\" when approval is waiting. No API keys.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-done-bell-","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["done_bell_status"],"provides_hooks":["on_session_end","pre_approval_request","post_approval_response","agent_loop_stopped"],"provides_middleware":[],"requires_env":[]}},{"name":"drag-to-pin-session","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"4116276225a4df1da1c899998b5f69f6ca937130","subdir":"public/drag-to-pin-session","description":"Pin or unpin sessions from their row with supported desktop SDK actions.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/drag-to-pin-session","version":"1.1.0","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/4116276225a4df1da1c899998b5f69f6ca937130/public/drag-to-pin-session/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"duty-board","title":"Duty Board","repo":"https://github.com/xiaoyaner0201/hermes-duty-board","sha":"405dbae3ff3314fa7b8f1de3f56f27a9ee313563","description":"Read-only dashboard tab and model-free /duty and hermes duty summaries for waiting conversations, unanswered messages, running turns, undelivered background results and failing cron jobs. Supports all 17 dashboard languages, including right-to-left Arabic. Disclosure — opens HERMES_HOME/state.db with SQLite mode=ro (sessions, messages, turn leases, async delegations, goals) and reads cron/jobs.json and gateway_state.json; writes only HERMES_HOME/duty-board/dismissed.json for dashboard dismissals. Chat requires in-process Hermes 0.21.7+ and a configured owner; shared-chat summaries default to counts only. No network calls, no model calls, no credentials, no background processes.","maintainer":"xiaoyaner0201","tier":"community","category":"desktop","requires_hermes":">=0.21.1","docs_url":"https://github.com/xiaoyaner0201/hermes-duty-board#readme","version":"0.4.0","screenshots":["https://raw.githubusercontent.com/xiaoyaner0201/hermes-duty-board/405dbae3ff3314fa7b8f1de3f56f27a9ee313563/docs/screenshot.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"eatwise","repo":"https://github.com/harrylabsj/hermes-plugin-eatwise","sha":"d482a1230703e3714abf187754608fd0704000d5","description":"Eatwise (外卖营养教练) — local-first Chinese dietary coach: deterministic meal nutrition reviews, personal daily energy/nutrient targets, and consented on-device profile and meal history through 9 MCP tools over a bundled open food database (TFND + USDA FNDDS). No network, no accounts, no payments; profile schema rejects name/phone/ID/medical fields by design. Engine pinned to an immutable git commit (cbc08f6) over npx stdio; Portable Agent Plugins v1 package (mcp.json + skills/), needs Node.js 22.5+ on PATH. Disclosure — the engine's MCP tool descriptions and error messages are Chinese-only while the skills are English-first.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/eatwise-mcp","version":"0.2.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"echarts-in-chat","repo":"https://github.com/Tommy00748/hermes-plugin-echarts-in-chat","sha":"6825178e277604594cd0a9b8f2789208e40ba59b","description":"Render a chart inline in the Hermes Desktop transcript: the model emits ::echarts{labels=... values=...} and the plugin mounts an interactive SVG chart (dataZoom slider, click-to-filter legend, resize-aware, 280-560px height clamp) in the plugin SDK's transcript-directive slot. Disclosure — no network calls, no shell commands, no stored credentials, no environment variables, no background processes, and nothing read or written outside the message it renders; the chart is drawn locally as inline SVG with no third-party libraries.","maintainer":"Tommy00748","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/Tommy00748/hermes-plugin-echarts-in-chat#readme","version":"2.1.0","title":"ECharts in Chat","screenshots":["https://raw.githubusercontent.com/Tommy00748/hermes-plugin-echarts-in-chat/6825178e277604594cd0a9b8f2789208e40ba59b/docs/echarts-in-chat-bar-line.png","https://raw.githubusercontent.com/Tommy00748/hermes-plugin-echarts-in-chat/6825178e277604594cd0a9b8f2789208e40ba59b/docs/echarts-in-chat-trend.png","https://raw.githubusercontent.com/Tommy00748/hermes-plugin-echarts-in-chat/6825178e277604594cd0a9b8f2789208e40ba59b/docs/echarts-in-chat-donut.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"edit-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"c0a93cb23627ac1856cb29db163e2cbfff77251d","subdir":"edit-ledger","description":"Local ledger of the turns in which the agent changed files with write_file or patch: /edit-log shows how many turns changed files, how many files in all, the median per turn, the most changed file type and how long ago the last one was, per model, platform or day, a table of file types (extensions), or the newest turns, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /edit-log recent lists the newest turns (ten, or up to 100 with /edit-log recent 50). A turn another plugin keeps going is counted once. Disclosure — subscribes to pre_verify as an observer only: always returns nothing, so it never keeps the agent going or changes a turn; writes turn metadata (model, platform, file count, files per extension, a 12-digit hash of the session id; never a path, file name or answer text) to plugin-data/edit-ledger/edits.jsonl, trimmed to 5,000 rows past 2 MB; never opens the changed files; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/edit-ledger","version":"1.0.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/c0a93cb23627ac1856cb29db163e2cbfff77251d/docs/edit-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_verify"],"provides_middleware":[],"requires_env":[]}},{"name":"effortless-hermes","repo":"https://github.com/ivcained/effortless-hermes","sha":"5444e7b130a74e1c03e826f224da65789abdffb5","description":"Picks the reasoning effort for every prompt: a fast judge (Jev/TypeSafe, a local OpenAI-compatible model, or any custom API) reads the next message once per turn and rewrites the request's reasoning effort before it ships — easy questions run cheap, hard jobs get high. Port of effortless for Claude Code. Disclosure — sends the next message (≤4000 chars) plus a short recent-conversation excerpt (≤1600 chars) to the configured judge endpoint (default api.typesafe.ai for Jev; a local or custom OpenAI-compatible API otherwise), solely to pick the effort; the optional model_map setting (off by default) also switches the turn's model to the one you map to the verdict; keeps recent per-turn token counts in its own plugin state; no telemetry; secrets resolved only through Hermes' secret scope; stdlib-only, no pip dependencies.","maintainer":"ivcained","tier":"community","category":"tools","requires_hermes":">=0.21.7","docs_url":"https://github.com/ivcained/effortless-hermes#readme","image":"https://raw.githubusercontent.com/ivcained/effortless-hermes/5444e7b130a74e1c03e826f224da65789abdffb5/assets/banner.png","version":"0.4.0","platforms":[],"title":"effortless-hermes","capabilities":{"provides_tools":[],"provides_hooks":["post_api_request","api_request_error"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"enchanted-composer","repo":"https://github.com/noxius-studium/enchanted-composer","sha":"63cb51633a68eb1c2739b6ab8d17a383361d20c4","title":"Enchanted Composer","description":"Draft enhancement, reusable prompt libraries, undo/redo, and owner-bound full-duplex voice for Hermes Desktop. Disclosure — Derived from hermes-live-voice by Synero (itself derived from hermes-talk) and prompt-enhance by apoapostolov (both MIT; notices preserved). Starting voice captures microphone audio. The Codex-subscription lane spawns the official codex app-server CLI under its own login with a minimal environment; through it the captured profile's SOUL.md (up to 4,000 chars), the list of installed skills and enabled tools, and Hermes task results go to OpenAI. The API lane runs only when COMPOSER_REALTIME_OFFER_URL is set: it posts the SDP offer to that https URL with COMPOSER_OPENAI_API_KEY, or the profile's OPENAI_API_KEY, as a Bearer token (redirects refused). A user-configured wss:// bridge receives microphone audio, chat/profile identifiers and task results. Spoken requests the voice model delegates run as Hermes agent turns with tools in the chat where voice started; runs that need approval are stopped, not approved. Settings and usage totals are stored under HERMES_HOME/plugin-data/enchanted-composer/. No telemetry, no self-updater, no Codex OAuth-file reads.","maintainer":"Deadtrix21","tier":"community","category":"voice","requires_hermes":">=0.21.5","docs_url":"https://github.com/noxius-studium/enchanted-composer/blob/63cb51633a68eb1c2739b6ab8d17a383361d20c4/README.md","version":"0.2.0","image":"https://raw.githubusercontent.com/noxius-studium/enchanted-composer/63cb51633a68eb1c2739b6ab8d17a383361d20c4/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/noxius-studium/enchanted-composer/63cb51633a68eb1c2739b6ab8d17a383361d20c4/docs/media/enhancement-desktop.png","https://raw.githubusercontent.com/noxius-studium/enchanted-composer/63cb51633a68eb1c2739b6ab8d17a383361d20c4/docs/media/voice-desktop.png","https://raw.githubusercontent.com/noxius-studium/enchanted-composer/63cb51633a68eb1c2739b6ab8d17a383361d20c4/docs/media/prompts-mobile.png"],"readme":true,"platforms":[],"known_issues":["Codex subscription authentication is managed with `codex login` outside Hermes; the plugin does not read or write Codex OAuth files.","Full two-sided persistent voice history and a phone voice client are not included in version 0.2.0."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"entropicmem","repo":"https://github.com/Ufonik88/EntropicMem","sha":"7e02412366408234629e759a575edc31eb138721","subdir":"plugins/entropicmem","description":"Durable local memory for Hermes agents: SQLite FTS5 facts with cited, explainable recall; a Markdown vault with knowledge-graph export and an interactive visual graph; and turn-prefetch context injection with reason tokens. Write policy auto-redacts high-confidence secrets at write time (other PII types are warn-only findings) and stored-content injection screening flags and warns on recall and prefetch payloads (flag-and-warn, fail-open by design, not a blocking filter). Includes a 34-command CLI, destructive-op gates with automatic backups, and an append-only audit log. Disclosure — all memory data (vault markdown, memory.db, index.db, backups) stays local under HERMES_HOME/entropicmem/; a shared publish DB defaults to HERMES_HOME/entropicmem-shared/. The CLI init command appends ENTROPICMEM_* settings to HERMES_HOME/.env (append-only). Vector embeddings are off by default; only with embeddings_enabled: true (provider) or ENTROPICMEM_EMBEDDINGS=1 / query --semantic (CLI) and the optional sentence-transformers extra installed does first use download all-MiniLM-L6-v2 weights from huggingface.co; otherwise the provider has no network egress. The CLI ingest command fetches a user-supplied URL; CLI graph export writes to ./export in the cwd by default and its HTML loads D3/marked from d3js.org and cdn.jsdelivr.net when opened; CLI graph serve starts a loopback HTTP server. entropicmem_patch_core edits the plugin's own Core-memory markdown (Persona/User_Profile), not Hermes core, and is off by default.","maintainer":"Ufonik88","tier":"community","category":"memory","requires_hermes":">=0.21","docs_url":"https://github.com/Ufonik88/EntropicMem/blob/7e02412366408234629e759a575edc31eb138721/docs/SELF_INSTALL.md","version":"2.8.1","image":"https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/banner.png","screenshots":["https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/graph-galaxy.png","https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/note-modal.png","https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/cli-recall.png","https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/timeline.png","https://raw.githubusercontent.com/Ufonik88/EntropicMem/7e02412366408234629e759a575edc31eb138721/docs/assets/prefetch-context.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":["entropicmem_remember","entropicmem_recall","entropicmem_query","entropicmem_patch_core","entropicmem_stats","entropicmem_get","entropicmem_consolidate"],"provides_hooks":["on_memory_write","on_session_switch","on_session_end","on_turn_start","on_pre_compress"],"provides_middleware":[],"requires_env":[]}},{"name":"epistemic-harness","repo":"https://github.com/quangphucqp/epistemic-harness","sha":"eb45ca676df53cce0629a3cc5dcf8a7bdab1c806","subdir":"","description":"Record a provisional claim or uncertainty before an evidence-gathering step, then link the actual observation to it.","maintainer":"quangphucqp","tier":"community","category":"general","requires_hermes":">=0.21,<1.0","platforms":["linux","macos"],"docs_url":"https://github.com/quangphucqp/epistemic-harness#readme","capabilities":{"provides_tools":["epistemic_model","epistemic_probe"],"provides_hooks":["pre_llm_call","post_tool_call","transform_tool_result","subagent_stop","on_session_reset","on_session_finalize"],"provides_middleware":["tool_execution"],"requires_env":[]}},{"name":"error-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"dd646070c662ebf1978e5623bf30d2d1f55f7bef","subdir":"error-ledger","description":"Local ledger of failed provider calls (rate limits, overloads, timeouts, context overflows): /errors shows how many attempts failed per model, provider or cause, how many Hermes could retry, and the most common HTTP status, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /errors days puts one day on each line, newest first; /errors recent lists the newest failures (ten, or up to 100 with /errors recent 50) and how long ago each happened. Disclosure — writes failed-attempt metadata (ids, provider, model, HTTP status, Hermes's failure class, exception class name, timings; no error message, request or prompt text) to plugin-data/error-ledger/errors.jsonl, trimmed to 5,000 rows past 2 MB; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/error-ledger","version":"1.3.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/dd646070c662ebf1978e5623bf30d2d1f55f7bef/docs/error-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["api_request_error"],"provides_middleware":[],"requires_env":[]}},{"name":"evalroute","repo":"https://github.com/keppy/hermes-plugin-evalroute","sha":"836273c09d28cd5fc6c009ed955837e2014bd1f7","description":"Route a task to the right (model, reasoning effort) arm before you start. Classifies the task into a lane, prints a provenance-carrying route card, and installs per-model reasoning-effort defaults. Strong rules run locally; weak-signal classification calls the host LLM and consumes tokens. The separate harness and shim can make paid provider calls when explicitly run; no plugin-owned credentials. Disclosure — weak-signal task classification sends the task text to your active Hermes model via the host LLM facade (token cost). The model-callable tool, /route, /rate and observed /model and /reasoning commands append task text and command args to a local ledger at <HERMES_HOME>/evalroute/labels.jsonl. \"hermes evalroute install-routes\" rewrites agent.reasoning_overrides in config.yaml when you run it. The bundled harness and Hermes shim are never run by the plugin. When run by hand they make paid provider calls, execute model-generated code on the host via shell checkers, and run hermes -z with approvals bypassed. Disclosure — \"hermes evalroute sync\" (run by hand) downloads the route table from the Hugging Face dataset keppy/evalroute-flywheel into HERMES_HOME and route cards then show that dataset's text; \"hermes evalroute dispatch\" (run by hand) spawns a single-query hermes chat on the routed model (Nous provider by default) — or, with --runner claude-code, a `claude -p` (Claude Code) process under the user's own Claude account, whose per-run cost is recorded in the local sidecar — with the brief as its query, inheriting the current environment except HERMES_YOLO_MODE (the worker never inherits --yolo; its approvals follow approvals.single_query_mode, default deny), and writes its report and a .dispatch.json sidecar beside the brief. Disclosure — \"hermes evalroute contribute\" (run by hand only) refuses to run unless evalroute.contribute: true is set in config.yaml, and then uploads redacted outcome rows only — lane, routed arm, confirmed arm, verdict, method, facet counts, ISO week and an HMAC-SHA256 task hash; never task text, notes, paths or the salt — to the user's own path (contributed/<hf-username>/) in the Hugging Face dataset keppy/evalroute-flywheel using the user's existing huggingface_hub login; \"--dry-run\" prints the exact rows and sends nothing; the per-install salt stays local in <HERMES_HOME>/evalroute/contribute.salt. Since evalroute 0.9.1 (schema 2) the same upload also carries lane-correction rows as lane pairs (from_lane, to_lane, method, week) with no task text, plus the max_turns value and harness name the arm ran under. Disclosure — \"hermes evalroute install-encoder <dir|owner/name>\" (run by hand only) downloads a small text-classification model (the default id keppy/evalroute-lane-encoder is a 146 MB ModernBERT fine-tune on the Hugging Face Hub) into <HERMES_HOME>/evalroute/encoder/ and from then on \"hermes evalroute route\" runs it locally, offline, to classify the task when the keyword rules are weak, instead of the LLM call; it needs torch and transformers in the plugin environment (pip extra evalroute[encoder]), which the plugin does not install; \"install-encoder --remove\" deletes it. \"hermes evalroute export-cases\" (run by hand only) writes your --lane-pinned route rows, task text included, to a local file you name, for training your own encoder; stdout carries counts only and nothing is uploaded. As of 0.6.2 the plugin is a thin adapter: all behaviour lives in the PyPI package evalroute (>=0.9.2,<0.10), declared as a Python dependency that Hermes installs on your confirmation.","maintainer":"keppy","tier":"community","category":"tools","requires_hermes":">=0.21","version":"0.6.4","docs_url":"https://github.com/keppy/hermes-plugin-evalroute#readme","capabilities":{"provides_tools":["evalroute_route"],"provides_hooks":["pre_llm_call","pre_command","post_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"event-read","repo":"https://github.com/TakeshiTGAL/hermes-plugin-event-read","sha":"d469ceb434d59dc91bb14ff9ae1e1191e135d025","description":"Read one CalDAV calendar collection you run, with list_events and read_event. Disclosure — Sends CALDAV_USER and CALDAV_PASSWORD as Basic auth to your CALDAV_URL, does not follow redirects, and starts no local program. Over plain http that password travels unencrypted. The tools are on for every surface, including gateways, and the plugin has no user list of its own: anyone you allow on your Hermes gateway reads the calendar with your password. Turn a surface off with hermes tools. A watch is a cron job you create yourself with hermes cron create. Each run is at least one model turn, there is no daily cap, and the job stays until you run hermes cron remove. Under plugins.isolation: host the watch cannot run and posts a notice saying so on every run. When the watch can run, it reports a problem on the first run, when the cause changes and again after 23 hours, or on every run when its data directory cannot be written. Each request gives up after 20 seconds without data, and a whole call has no time limit. The watch relies on private parts of Hermes, so an update can stop it. State lives in plugin-data/event-read. Not tested against a vendor-hosted calendar.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-event-read#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["list_events","read_event"],"provides_hooks":[],"provides_middleware":[],"requires_env":["CALDAV_URL","CALDAV_USER","CALDAV_PASSWORD"]}},{"name":"excel_line","repo":"https://github.com/kalice-vi/hermes-excel-line","sha":"a48cc5a9d1763e7bbc21b28fb12ed1289870150c","description":"Excel-backed hierarchical long-term memory tree (10-row cap per workbook, dynamic branching, leaf pointers). Classifier defaults to the host model; third-party keyless rotation is opt-in.","maintainer":"kalice-vi","tier":"community","category":"memory","docs_url":"https://github.com/kalice-vi/hermes-excel-line","platforms":[],"capabilities":{"provides_tools":["excel_line"],"provides_hooks":["on_session_end","on_memory_write"],"provides_middleware":[],"requires_env":[]}},{"name":"field-academy","title":"Field Academy","repo":"https://github.com/Dgardenhire/hermes-field-academy","sha":"9d4b342535fdcb9948b0b2334b78fcbd1fd14675","description":"Learn Hermes by doing real work. Four paths (Messenger, Traveler, Crossroads, Boundary Keeper) climb Beginner, Intermediate and Advanced to a capstone on a problem of your own, and a fifth, Guide, covers setting Hermes up for a client: practice labs built from made-up data, a proposal, one real service run by a scheduled job for several days, a recovery drill, and a review signed by a reviewer you choose. Every mission ends with a check on something you made; your own Hermes scores your written answers in a new chat; passed missions come back for short spaced reviews; and at the end of a path you can create a Field Record, your own self-issued learning record. Field Academy is an independent community plugin. It is not made, issued or endorsed by Nous Research. Disclosure — no network calls (a source link opens in your browser only when you click it); no credentials, telemetry, shell commands, background processes or self-updates; registers six tools, two hooks, the /academy command and one skill: pre_llm_call may add one sentence offering a practice to the user message, only in interactive desktop, TUI and CLI sessions, and post_tool_call records which tool was used; pressing Try it or a scoring button opens a new chat and sends the practice or scoring prompt there (on an older Hermes it goes to the clipboard instead); the Desktop page calls gateway list methods only (session.list, cron.manage list, skills.manage list, tools.list, mcp.catalog, commands.catalog, setup.runtime_check); stores progress, pasted documents, practice labs, review packets and saved Field Records in $HERMES_HOME/plugin-data/field-academy/; reads a file you name (UTF-8 text, max 5 MiB) and hashes a recording you name without copying it; Guide labs write and check made-up .env and auth.json files inside its own labs folder (refusing to build in a real Hermes home) and never read Hermes's real ones; on the Guide path reads Hermes's run-history database read-only, jobs.json and up to 25 log files (2 MiB each), keeping only timestamps for the job you name, and reads install-stamp.json for the Hermes version; no private Hermes imports.","maintainer":"Dgardenhire","tier":"community","category":"desktop","requires_hermes":">=0.22.0","docs_url":"https://linchpin.studio/school-of-hermes/manual/","version":"0.8.5","image":"https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/card.png","screenshots":["https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/home.png","https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/mission.png","https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/miss.png","https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/certificate.png","https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/deployer.png","https://raw.githubusercontent.com/Dgardenhire/hermes-field-academy/9d4b342535fdcb9948b0b2334b78fcbd1fd14675/docs/shots/home-light.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":["field_academy_snapshot","field_academy_mission","field_academy_grade_explanation","field_academy_grade_review","field_academy_grade_deployer","field_academy_record_evidence"],"provides_hooks":["post_tool_call","pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"file-tray","repo":"https://github.com/aydnOktay/hermes-file-tray","sha":"275f040af145b6b3f9660487b7d35821d33d5aca","description":"Session file tray — paths the Hermes agent touched via read_file, write_file, or patch. Desktop pane and /files. No API keys.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-file-tray","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["file_tray_list","file_tray_clear"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"filebox","repo":"https://github.com/AndreasHiltner/hermes-filebox","sha":"718c595d2737a5eecc9ab14c45cd6d8fa7d372a7","version":"0.3.0","description":"Dual-panel commander file browser for Hermes Desktop — whitelist-guarded file CRUD, copy/move/symlink, media preview, multi-select, rename, and trash. No network I/O, no model tokens.","maintainer":"Andreas Hiltner","tier":"community","category":"desktop","requires_hermes":">=0.19","docs_url":"https://github.com/AndreasHiltner/hermes-filebox#readme","image":"https://raw.githubusercontent.com/AndreasHiltner/hermes-filebox/718c595d2737a5eecc9ab14c45cd6d8fa7d372a7/docs/banner.png","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"financial-datasets","repo":"https://github.com/financial-datasets/hermes-plugin","sha":"6745cb6261f86895364579d897be2b6067f117f1","description":"Stock market data from Financial Datasets - financial statements, prices, SEC filings, insider and institutional ownership, KPIs, news, macro data, and a stock screener.","maintainer":"financial-datasets","tier":"community","category":"tools","docs_url":"https://github.com/financial-datasets/hermes-plugin#readme","version":"1.0.0","capabilities":{"provides_tools":["fd_get_beneficial_owners","fd_get_beneficial_ownership","fd_get_company_facts","fd_get_earnings","fd_get_filing_items","fd_list_filing_item_types","fd_get_filings","fd_get_financial_metrics","fd_get_financial_metrics_snapshot","fd_get_balance_sheet","fd_get_income_statement","fd_get_cash_flow_statement","fd_get_index_fund","fd_get_insider_ownership","fd_get_insider_trades","fd_get_institutional_investors","fd_get_institutional_holdings","fd_get_interest_rates","fd_get_kpi_guidance","fd_get_kpi_metrics","fd_get_kpi_non_gaap","fd_get_macro_data","fd_get_news","fd_get_segmented_financials","fd_get_stock_price","fd_get_stock_prices","fd_screen_stocks","fd_list_stock_screener_filters"],"provides_hooks":[],"provides_middleware":[],"requires_env":["FINANCIAL_DATASETS_API_KEY"]}},{"name":"fish-audio","title":"Fish Audio","repo":"https://github.com/100yenadmin/fish-audio-hermes","sha":"e58aaa000b663ed012b0f4ec608c2cfec019f4fa","description":"Lifelike voices for your agent: Fish Audio's expressive text-to-speech in 80+ languages, plus transcription, voice cloning and a voice library. The official Fish Audio plugin: Fish's Drama 3 model with word-level direction, speech-to-text, Fish Audio's community voice library, voice cloning and voice design, with a Voices page in Hermes Desktop. Fish Audio becomes a Hermes speech and transcription provider for voice replies, read-aloud, voice notes and Desktop dictation, with sentence-by-sentence streaming in CLI voice mode and Desktop, and live dictation captions on Hermes 0.21.6+ (stt.streaming: true). Adds the fish_speak, fish_voices and fish_transcribe tools, /fish and hermes fish commands, and four skills. Disclosure — sends your Fish API key and the text, audio (with file names) and voice titles, tags, descriptions, cover images and design instructions you ask it to process to api.fish.audio, or to the base_url you configure, and reads your Fish wallet for balances and model choice; with live dictation on, microphone audio streams to api.fish.audio's realtime speech-to-text endpoint while you speak, billed per committed phrase rounded up to a second; synthesis, transcription, cloning and voice design are paid requests billed to your Fish account, except the free s2.1-pro-free model (free through 30 November 2026), whose requests Fish may use to improve its models. The key comes from the profile's secret scope (Hermes stores it in the profile .env; a single-profile install may also read FISH_API_KEY from the environment). Generated audio and subtitles are written to Hermes's audio cache; clone samples and recordings it uploads must be regular audio files, and Hermes config, secret and credential paths are refused. Cloning and deleting voices from chat or the model tools go through Hermes's approval gate and follow your approval settings. The Desktop Voices page and a Fish Audio settings page add gateway routes under /api/plugins/fish-audio/, behind the Hermes dashboard's existing authentication. On the Voices page, previews, clones and voice designs are billed; cloning a voice or saving a designed one creates a voice in your Fish account; cloning and deleting are confirmed on the page (a speaker-consent box, a typed voice name) instead of through Hermes's approval gate; and Use sets the profile's Fish voice, and its speech provider when none is set. The settings page and /fish alias can set or reset the profile's Fish model and voice and save up to 50 voice names in the profile's config. Preview and design audio files are deleted from the gateway once returned; a design's audio is held in gateway memory so you can save it, until it is saved, a later design or save finds it over an hour old, or the gateway stops; clone uploads are deleted after the clone, or by the next upload once idle for 15 minutes. With a key set, Desktop reads your Fish wallet when an agent is selected and about every five minutes, for the status-bar credit; favourites stay in Desktop's plugin storage on that computer, and fetched previews stay in the window's memory until it closes. Includes a report-a-problem skill: the agent drafts a bug report and files it to this plugin's repository as a public GitHub issue or comment with your gh login only after you approve the exact text; reports leave out keys, credit amounts and your own voice ids, and security problems go to the repository's private advisory form instead. No telemetry.","maintainer":"100yenadmin","tier":"community","category":"voice","requires_hermes":">=0.21.6","docs_url":"https://github.com/100yenadmin/fish-audio-hermes#readme","version":"1.7.7","image":"https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/e58aaa000b663ed012b0f4ec608c2cfec019f4fa/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/e58aaa000b663ed012b0f4ec608c2cfec019f4fa/docs/media/screenshot-desktop-library.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/e58aaa000b663ed012b0f4ec608c2cfec019f4fa/docs/media/screenshot-desktop-create.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/e58aaa000b663ed012b0f4ec608c2cfec019f4fa/docs/media/screenshot-desktop-account.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/e58aaa000b663ed012b0f4ec608c2cfec019f4fa/docs/media/screenshot-setup.png"],"readme":true,"platforms":["linux","macos"],"known_issues":["Hermes's text normaliser alters <|speaker:N|> markup and Drama 3 closing tags such as </whisper> on the plain text_to_speech path; use fish_speak for multi-speaker speech and Drama 3 word tags (NousResearch/hermes-agent#133131).","In the dark theme an empty API key field in Settings is very hard to see; a fix is proposed (NousResearch/hermes-agent#138994).","Under plugins.isolation: host the hermes fish terminal command is unavailable and voice replies use whole-file speech instead of streaming; /fish, the tools and both providers still work."],"capabilities":{"provides_tools":["fish_speak","fish_voices","fish_transcribe"],"provides_hooks":["transform_llm_output","pre_tool_call"],"provides_middleware":[],"requires_env":["FISH_API_KEY"]}},{"name":"fleet-policy","repo":"https://github.com/Julientalbot/hermes-fleet-policy","sha":"7d36874a5a625fc2a0c24ee280e34872e5259800","subdir":"fleet_policy","description":"For administrators who pin settings through the managed scope: records what each agent role really sends to the provider (model, reasoning effort, service tier, plus the tier the provider says it served) next to the managed-scope state and the effective config (`hermes fleet-policy status --json`); measures cron cost per job — runs, empty runs, $/day, gate present (`crons --cost`); and `watch`, a generic wake gate for cron scripts that replays one read tool on an MCP server and wakes the agent only when new item ids appear (stock `wakeAgent` gate, no LLM call otherwise). Ships two skills (managed-scope admin, recurring tasks). Disclosure — records only model, reasoning effort and service tier per role (no message content, headers or keys) via the pre_api_request and pre_auxiliary_call hooks and a pass-through llm_execution middleware, stored in $HERMES_HOME/fleet-policy/observed.json; crons --cost opens cron/executions.db and state.db read-only and checks each cron run's final reply locally for silence; watch is an operator CLI command that calls one MCP tool at the config's server_url (or the admin-pinned watch_server_url) with config headers in which ${VAR} env values are expanded, follows redirects, and writes seen ids to a state file at the config-chosen path; the recurring-tasks skill has the agent write watch configs under $HERMES_HOME/watches, a script under $HERMES_HOME/scripts and a cron job; no other network access, no telemetry.","maintainer":"Julientalbot","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/Julientalbot/hermes-fleet-policy/blob/7d36874a5a625fc2a0c24ee280e34872e5259800/README.md","version":"0.2.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_api_request","pre_auxiliary_call"],"provides_middleware":["llm_execution"],"requires_env":[]}},{"name":"fluxer-platform","repo":"https://github.com/elkimek/hermes-fluxer-plugin","sha":"6d2ef9767d0a0811a3ae26a76290b9b1e4636d4c","description":"Fluxer gateway adapter for Hermes Agent. Native Fluxer integration using Fluxer's bot REST API for outbound messages, Gateway WebSocket events for inbound dispatches, message edits, agent-requested reactions, pins, reply references, media delivery, and channel-directory enumeration. Component button","maintainer":"elkimek","tier":"community","category":"platform","docs_url":"https://github.com/elkimek/hermes-fluxer-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"fmsg-platform","repo":"https://github.com/markmnl/hermes-fmsg","sha":"562f45a48a6b10504c8d6ff5c677f1ec990e6b7b","description":"fmsg platform adapter for Hermes Agent. Real-time inbound over the fmsg-webapi WebSocket (/fmsg/ws), outbound via its JSON REST routes. Authenticates with an fmsg API key (fmsgk_...) exchanged for a short-lived JWT — run the agent as a derived sub-account such as @alice_hermes@example.com. Only http","maintainer":"markmnl","tier":"community","category":"platform","docs_url":"https://github.com/markmnl/hermes-fmsg#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"foresee","title":"Foresee","repo":"https://github.com/Foresee-Tech/foresee","sha":"18361bd74ffce667fbceb2a60a57d3eabff11854","subdir":"plugins/foresee","description":"Let AI assistants shop for home and auto insurance: compare instant quotes across every carrier. Connects to the hosted Foresee MCP server (Streamable HTTP at agents.go-foresee.com), with three workflow skills bundled. Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — portable Agent Plugins v1 package (hosted MCP server plus three skills), no Python and nothing runs locally; the vendor is Foresee Insurance Services, LLC (go-foresee.com). Every quote request sends the profile the user gives in chat (ZIP, age or date of birth, vehicles, drivers, driving record, home details) to agents.go-foresee.com with no account or API key. The live_carrier_quotes tool additionally sends the user's identity (name, date of birth, street address, email, optionally phone and driver's licence number) and, after the user's in-chat consent recorded verbatim, Foresee's agents submit those details to the selected insurance carriers, who may run a soft credit-based insurance score pull and contact the user. Foresee does not take payment or bind policies.","maintainer":"Foresee-Tech","tier":"community","category":"tools","version":"0.4.1","docs_url":"https://go-foresee.com/docs","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"freight-reconciliation","repo":"https://github.com/harrylabsj/hermes-plugin-freight-reconciliation","sha":"160ed80ddf6333e48f176f299322aaf9ed2414b0","description":"Payer-side freight reconciliation: import carrier bills and trip ledgers into a deterministic local core (SQLite, WAL, no cloud), re-calculate against contracted rates and produce evidence-linked difference lists for human review — 14 MCP tools over uvx stdio (engine pinned to the immutable commit e8cd259c, release v0.4.1), with 3 bilingual workflow skills bundled. Portable Agent Plugins v1 package (mcp.json + skills/); needs uv on PATH. Never approves payments, sends messages or writes back to ERP/TMS; final confirmations route through a local admin page the model cannot reach. Disclosure — the optional freight-admin page listens on 127.0.0.1 and is where a human confirms mappings, rules, matches and exports; nothing leaves the machine.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/hermes-plugin-freight-reconciliation","version":"0.4.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"freshdesk","repo":"https://github.com/aedelgod/hermes-plugin-freshdesk","sha":"005bee2c6a1d0857dbafd6bfac7a2e2e37619991","description":"Generic Freshdesk API v2 tools for Hermes Agent. Unaffiliated community connector, not a Freshworks product. Disclosure: calls the account's native Freshdesk HTTPS origin with profile-scoped secrets FRESHDESK_DOMAIN and FRESHDESK_API_KEY; downloads an attachment into the Hermes cache only from that ticket's own attachment hosts; the two write tools escalate to Hermes human approval and fail closed when no person is present. No third-party dependencies, shell commands, telemetry, or self-updater.","maintainer":"GFORGOV","tier":"community","category":"tools","requires_hermes":">=0.21.4","version":"0.1.1","readme":true,"docs_url":"https://github.com/aedelgod/hermes-plugin-freshdesk#readme","platforms":[],"capabilities":{"provides_tools":["freshdesk_list_tickets","freshdesk_get_ticket","freshdesk_search_tickets","freshdesk_list_conversations","freshdesk_get_contact","freshdesk_download_attachment","freshdesk_add_private_note","freshdesk_create_ticket"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":["FRESHDESK_DOMAIN","FRESHDESK_API_KEY"]}},{"name":"frihet","repo":"https://github.com/Frihet-io/hermes-frihet","sha":"4f092d58398ab252ea1fa6b07bfefacec717abd9","description":"Official Hermes Agent integration for Frihet — discoverability, setup, diagnostics, and operating guidance for the Frihet MCP. Zero duplicated tools; the canonical 158-operation Frihet surface stays in @frihet/mcp-server and the remote endpoint https://mcp.frihet.io/mcp. Disclosure — /frihet setup and /frihet doctor send an unauthenticated MCP initialize to mcp.frihet.io (or FRIHET_MCP_URL); /frihet doctor also makes one read-only list_invoices call through Hermes's MCP client once you grant plugins.entries.frihet.mcp_allowlist; reads ~/.hermes/config.yaml only to check that an mcp_servers.frihet block exists; the pre_tool_call hook prompts before Frihet MCP calls it classifies as irreversible or unknown, but reads and draft-first creates pass without a prompt unless the server sets trust: untrusted.","maintainer":"Frihet-io","tier":"community","category":"tools","docs_url":"https://github.com/Frihet-io/hermes-frihet#readme","requires_hermes":">=0.21.5","version":"0.1.0","capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"fusion","repo":"https://github.com/BoredSexyJordan/hermes-fusion","sha":"edab6a6d17838d4d9a1525a2a7d3500c62694e17","description":"Multi-model fusion router for Hermes: detects the model fleet your harnesses (Hermes, Codex, Claude, Grok) actually have installed and builds a Frontier -> Middle Manager -> Frontier routing structure with pinned models and provenance from execution records. `hermes fusion teams|validate|plan|run|index|report|status`.","maintainer":"Jordan Rosenberg","tier":"community","docs_url":"https://github.com/BoredSexyJordan/hermes-fusion","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"fxmacrodata","repo":"https://github.com/fxmacrodata/hermes-fxmacrodata","sha":"5b52feced342f945bb41b3fdb60c668f1f21d374","description":"FXMacroData macro and FX research: official-source economic releases, indicator history, release calendars, policy rates, yield curves, FX, commodities and COT positioning, with source citations. Native tools for 23 REST operations and 49 hosted MCP tools, plus a /fxmacrodata USD brief command. Disclosure — tool calls send their arguments over HTTPS to api.fxmacrodata.com and mcp.fxmacrodata.com only, with FXMACRODATA_API_KEY in a request header when it is set. The key is optional: without it the data catalogue, the USD release calendar and recent USD releases (15-minute delay) work, and other data answers with a subscribe message. No files written, no shell commands, no background processes, no telemetry. It also adds a short research-guidance section to the system prompt and 72 tools in the fxmacrodata toolset; MCP tool behaviour is served remotely and not covered by the pinned sha.","maintainer":"fxmacrodata","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/fxmacrodata/hermes-fxmacrodata#readme","version":"0.2.0","platforms":[],"capabilities":{"provides_tools":["fxmd_health","fxmd_ping","fxmd_forex","fxmd_intraday_reference_rates","fxmd_fx_sources","fxmd_fx_source_universe","fxmd_data_catalogue","fxmd_release_calendar","fxmd_market_sessions","fxmd_rate_differentials","fxmd_curves","fxmd_financial_prices","fxmd_press_releases","fxmd_risk_sentiment","fxmd_factors","fxmd_event_predictions","fxmd_latest_announcements","fxmd_indicator_history","fxmd_cot","fxmd_latest_commodities","fxmd_commodities","fxmd_announcement_changes","fxmd_stream_events","fxmd_mcp_ping","fxmd_mcp_mcp_capabilities","fxmd_mcp_mcp_auth_guide","fxmd_mcp_subscribe_for_mcp_access","fxmd_mcp_data_catalogue","fxmd_mcp_risk_sentiment","fxmd_mcp_macro_news","fxmd_mcp_release_calendar","fxmd_mcp_release_calendar_visual_artifact","fxmd_mcp_event_predictions","fxmd_mcp_latest_announcements","fxmd_mcp_announcement_changes","fxmd_mcp_press_releases","fxmd_mcp_macro_factor","fxmd_mcp_fx_reference_sources","fxmd_mcp_fx_reference_universe","fxmd_mcp_fx_intraday_reference_rates","fxmd_mcp_rate_curve","fxmd_mcp_rate_differentials","fxmd_mcp_latest_commodities","fxmd_mcp_forex","fxmd_mcp_seasonality","fxmd_mcp_indicator_query","fxmd_mcp_plot_visual_artifact","fxmd_mcp_indicator_visual_artifact","fxmd_mcp_forex_visual_artifact","fxmd_mcp_commodities_visual_artifact","fxmd_mcp_cot_visual_artifact","fxmd_mcp_policy_rate_differential_visual_artifact","fxmd_mcp_macro_briefing_task","fxmd_mcp_indicator_intel_task","fxmd_mcp_pair_intel_task","fxmd_mcp_macro_heatmap_task","fxmd_mcp_policy_scenario_modeler_task","fxmd_mcp_macro_war_room_task","fxmd_mcp_event_impact_replay_task","fxmd_mcp_quant_scenario_lab_task","fxmd_mcp_known_at_time_task","fxmd_mcp_macro_regime_classifier_task","fxmd_mcp_release_risk_score_task","fxmd_mcp_portfolio_risk_engine_task","fxmd_mcp_fx_trade_setup_task","fxmd_mcp_fx_backtest_task","fxmd_mcp_macro_research_pack_task","fxmd_mcp_market_sessions","fxmd_mcp_cot_data","fxmd_mcp_commodities","fxmd_mcp_financial_prices","fxmd_mcp_official_dataset_family","fxmd_usd_macro_brief"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gadget","repo":"https://github.com/Adolanium/hermes-gadget-sdk","sha":"4a22503cd5888d00b3fe4aedde167793e1c3961a","subdir":"plugin","title":"Hermes Gadget","description":"Talk to your Hermes from small ESP32 devices with a screen, microphone and speaker: hold a button, ask, and hear the answer. Adds a gateway platform where each device is a chat, plus tools to list devices, show a card on a screen and run device actions (LEDs, relays). Disclosure — the gateway listens for devices on a WebSocket port (8765, all interfaces by default; plain ws:// unless tls_cert/tls_key are set). New devices need a Hermes pairing code unless listed in GADGET_ALLOWED_USERS; GADGET_ALLOW_ALL_USERS skips pairing (development only). A paired device answers the agent's command approvals for its own chat (allow once or deny). The first approved device becomes the platform's home channel by default. Spoken replies that are not WAV are converted with the local ffmpeg. `hermes gadget update --latest` downloads firmware from this repository's GitHub releases, checks size and SHA-256 against the release manifest (files carry build provenance attestations) and sends it to the device. Writes only under plugin-data/gadget/. Uses Hermes's own STT, TTS and image cache; no telemetry. Independent community project, not affiliated with Nous Research.","maintainer":"Adolanium","tier":"community","category":"platform","requires_hermes":">=0.21.6","docs_url":"https://adolanium.github.io/hermes-gadget-sdk/docs/connect-hermes.html","version":"0.2.0","image":"https://raw.githubusercontent.com/Adolanium/hermes-gadget-sdk/4a22503cd5888d00b3fe4aedde167793e1c3961a/docs/images/banner.webp","screenshots":["https://raw.githubusercontent.com/Adolanium/hermes-gadget-sdk/4a22503cd5888d00b3fe4aedde167793e1c3961a/docs/images/sim-window.png","https://raw.githubusercontent.com/Adolanium/hermes-gadget-sdk/4a22503cd5888d00b3fe4aedde167793e1c3961a/docs/images/screen-listening.png","https://raw.githubusercontent.com/Adolanium/hermes-gadget-sdk/4a22503cd5888d00b3fe4aedde167793e1c3961a/docs/images/screen-reply.png","https://raw.githubusercontent.com/Adolanium/hermes-gadget-sdk/4a22503cd5888d00b3fe4aedde167793e1c3961a/docs/images/screen-prompt.png"],"capabilities":{"provides_tools":["gadget_devices","gadget_display","gadget_action"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gbrain-plugin","repo":"https://github.com/kerrz2020/hermes-gbrain","sha":"51f5b558e00aa3ea412801d423f436fdd43385ec","description":"Community (non-official) plugin wiring GBrain (garrytan/gbrain, MIT) into Hermes as a local memory layer over MCP: /gbrain status command, desktop starter, and per-profile Postgres setup/update/maintenance scripts. Not affiliated with upstream. Disclosure — the plugin itself only adds a /gbrain status command and a Desktop pane; GBrain is installed by the user via scripts/setup.sh, which installs bun (curl|bash), an unpinned gbrain from GitHub HEAD, and provisions PostgreSQL with sudo.","maintainer":"kerrz2020","tier":"community","category":"memory","requires_hermes":">=0.21.3","docs_url":"https://github.com/kerrz2020/hermes-gbrain#readme","version":"1.2.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gbrain-pointer","repo":"https://github.com/praggybuilds/hermes-gbrain-pointer","sha":"56212b086ed8dc134011440fc05cfc867586b9a4","version":"0.1.0","title":"GBrain Pointer","description":"Read-only memory.provider for GBrain (garrytan/gbrain, MIT; not affiliated). After each non-trivial turn it searches a GBrain MCP server (`gbrain serve --http`) in the background and injects up to the configured limit (3 by default, capped at 10) of `[source:slug] title` pointers into the next turn as fallible background context. It never writes to GBrain and adds no tools or hooks. Disclosure — after each non-trivial turn, the first 500 characters of your message are sent to GBRAIN_MCP_URL (default http://127.0.0.1:3131/mcp; plain http to a non-loopback host is refused unless GBRAIN_POINTER_ALLOW_HTTP=1), and the profile's GBrain OAuth client id and secret go to that server's /token endpoint. Redirects and proxy settings are ignored. Only the slug, title and source id of up to 10 results are kept and injected into the next turn as background context; rows GBrain flags as suspected injection are skipped. Tokens and pointers stay in memory only. It never writes to GBrain; no other network calls, no telemetry.","maintainer":"praggybuilds","tier":"community","category":"memory","requires_hermes":">=0.21.5","docs_url":"https://github.com/praggybuilds/hermes-gbrain-pointer#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["GBRAIN_MCP_CLIENT_ID","GBRAIN_MCP_CLIENT_SECRET"]}},{"name":"gbrain-retrieval-reflex","repo":"https://github.com/aean0x/hermes-gbrain-retrieval-reflex","sha":"78516ca629588612ebfc0a7ca86944fbb63d7dd8","description":"pre_llm_call hook plugin, enabled with `hermes plugins enable`: injects ambient context from a GBrain instance before each turn (volunteer_context, then a hybrid-query fallback). Not a `memory.provider`. Silent no-op when GBrain is unreachable or no token is set. Disclosure — before each non-trivial turn the last six user and assistant messages (truncated) and the current message are sent with a GBRAIN_TOKEN bearer token to GBRAIN_MCP_URL (default http://127.0.0.1:3131/mcp), and returned brain-page text is injected into the turn.","maintainer":"aean0x","tier":"community","category":"memory","docs_url":"https://github.com/aean0x/hermes-gbrain-retrieval-reflex#readme","version":"0.6.1","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"gemini-live-bridge","repo":"https://github.com/cruzlxyz/gemini-live-bridge","sha":"a0016e33244ff2f74fd33bae1869e4a8c06f5034","description":"Realtime duplex voice chat with the Gemini Live API — a status-bar minibar for the Hermes desktop app (transcript, model catalog, thinking level, session token meter, auto-redial via session resumption). Full-proxy architecture: the plugin backend owns the upstream Live WebSocket and the user's key (requires_env GOOGLE_API_KEY); the desktop UI only talks to localhost and receives single-use ephemeral tokens. No agent tools; desktop-focused, dashboard tab hidden. Disclosure — pressing Start captures microphone audio and streams it through the local backend to generativelanguage.googleapis.com using GOOGLE_API_KEY (or GEMINI_API_KEY) from the environment; input/output transcripts are held in backend memory for the session, and a Gemini session-resumption handle is written to .resume.json inside the plugin's install directory.","maintainer":"cruzlxyz","tier":"community","version":"1.0.6","category":"voice","docs_url":"https://github.com/cruzlxyz/gemini-live-bridge#readme","image":"https://raw.githubusercontent.com/cruzlxyz/gemini-live-bridge/a0016e33244ff2f74fd33bae1869e4a8c06f5034/docs/banner.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["GOOGLE_API_KEY"]}},{"name":"genealogy-research-recipes","title":"Kinprove Genealogy Research Recipes","repo":"https://github.com/Kinprove/genealogy-research-recipes","sha":"3eaab75f25952f736de52956e16397c949075dd1","description":"Fact-checked genealogy instructions for DNA evidence, record searches and proof judgment. Native read-only skill bundle with recipe sources and an offline given-name lookup helper. Disclosure — optional third-party services and commands described by recipes require separately authorized tools and credentials; the adapter itself makes no service calls and registers no tools, hooks or MCP server.","maintainer":"Kinprove","tier":"community","category":"general","requires_hermes":">=0.21.5","docs_url":"https://github.com/Kinprove/genealogy-research-recipes#readme","version":"1.4.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gh-ref","repo":"https://github.com/EloquentBrush0x/hermes-context-refs","sha":"bb0001012c5b213ce5a09b5905d859635c440c17","subdir":"gh-ref","description":"@gh:owner/repo#123 context references: attach a public GitHub issue or pull request to a message (title, state, labels, description, the latest comments; for pull requests also the branches, merge state and change size). Disclosure — sends anonymous HTTPS GET requests to api.github.com only (the referenced owner/repo and number leave the machine; no token, public repositories only, 60 requests an hour per IP address); no files written, no subprocess; register() only adds the @gh: reference provider.","maintainer":"EloquentBrush0x","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/EloquentBrush0x/hermes-context-refs/tree/main/gh-ref","version":"1.0.0","image":"https://raw.githubusercontent.com/EloquentBrush0x/hermes-context-refs/bb0001012c5b213ce5a09b5905d859635c440c17/docs/gh-ref-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gigamail","repo":"https://github.com/adecubed/hermes-plugin-gigamail","sha":"a056fe1a5ac09595a97952ab6062dba7504b57af","description":"Email and calendar through an existing local GigaMail MCP server, with a workflow skill and stdio launcher. Requires Python and a separately configured backend; no automatic backend installation or updates. Reads real mail and attachments; sending, deletion and calendar writes use GigaMail's out-of-band human approval. Disclosure — a thin stdio launcher for the separately installed GigaMail MCP server from Adecubed inc. (gigamail.ai, github.com/adecubed/gigamail, same author as this plugin); the plugin holds no mail logic or credentials and downloads nothing, but it starts that third-party executable from PATH or a configured path, points it at GigaMail's own data directory under your user profile (%APPDATA%\\ADE or ~/.ade), and send, delete and calendar writes are gated by that backend's out-of-band approval rather than by Hermes.","maintainer":"adecubed","tier":"community","category":"tools","docs_url":"https://github.com/adecubed/hermes-plugin-gigamail#readme","version":"0.1.0","readme":true,"platforms":["windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"git-autosave","title":"Git Autosave","repo":"https://github.com/xiaoyaner0201/hermes-git-autosave","sha":"b4b12d6bf79318c6708ab468327d52e7671d63f9","description":"Lightweight local alternative to directory checkpoints for Git projects. Before a mutating tool call it saves the affected repository's working state to a private local shadow ref (refs/hermes-autosave/<branch>, with reflog) through a private index, or copies the single existing file outside Git; `hermes autosave find` and `restore` recover a pre-edit version. Disclosure — runs local git subprocesses in repositories the agent touches (hooks, clean filters, fsmonitor and lazy fetch disabled); writes shadow refs/reflogs into those repositories' .git and unencrypted file copies into its plugin-data directory; never changes HEAD, branches, the real index or the working tree and never pushes; skips credential stores (.env, auth.json, .ssh, .aws, .docker, .kube, gh/gcloud/azure configs) and dependency directories; `hermes autosave sweep` reads the session database read-only and is scheduled by the user; no network, no background processes; it observes only and never blocks or approves a tool call.","maintainer":"xiaoyaner0201","tier":"community","category":"tools","requires_hermes":">=0.22.0","docs_url":"https://github.com/xiaoyaner0201/hermes-git-autosave#readme","version":"0.3.0","readme":true,"platforms":["linux","macos"],"known_issues":["One V4A patch that moves a symlink and then updates the moved path can miss the edited file on case-insensitive or Unicode-normalizing filesystems; commit first or send the Move and the Update as separate calls."],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"git-hook","repo":"https://github.com/aean0x/hermes-git-hook","sha":"a7303c89b429704a31e2df4212ec4f08ee76692a","description":"Auto fetch/pull before reads, and commit + push only the files each turn changed, for every git worktree Hermes touches. Disclosure — after each turn it commits and pushes (push on by default; GIT_HOOK_PUSH=0 keeps commits local) the changed files of git worktrees under GIT_HOOK_ROOTS (default PROJECTS_ROOT, \"*\" for every repo), pushing to origin HEAD when no upstream is set; it pulls --ff-only before reads. A branch whose direct push the remote refuses on policy grounds (branch protection, a PR-required ruleset) is never committed to again: the hook drops its own unpushed commit, leaves the edit staged and dirty, and reports it once.","maintainer":"aean0x","tier":"community","category":"automation","docs_url":"https://github.com/aean0x/hermes-git-hook#readme","version":"0.5.1","capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","post_llm_call","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"git-tasks","repo":"https://github.com/meviusisback/git-tasks","sha":"b38ae71b083bb75a92c5c0b96ce012da053c73ab","description":"Multi-repo GitHub issues & PRs in an Orca-style Tasks view for Hermes Desktop. Disclosure — runs your logged-in `gh` CLI and `git` through Hermes Desktop's shell bridge and scans your configured clone folders for GitHub repos; approve, close and reopen act on GitHub in one click; creates git worktrees and opens seeded Hermes sessions from the detail view.","maintainer":"meviusisback","tier":"community","category":"desktop","requires_hermes":">=0.21.1","docs_url":"https://github.com/meviusisback/git-tasks#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"githermes","repo":"https://github.com/claudiumio/githermes","sha":"09d5b566da650290dc0d639ea1e77def4bcdab31","description":"GitHub PRs and issues as a right workspace pane in Hermes Desktop, via the connected gh CLI. Disclosure — shells out to your logged-in gh CLI; the in-pane update pill only runs `hermes plugins update githermes` (no fetch-and-replace) and currently compares against upstream main rather than the pinned sha.","maintainer":"claudiumio","tier":"community","category":"desktop","requires_hermes":">=0.21.1","docs_url":"https://github.com/claudiumio/githermes#readme","version":"0.5.0","image":"https://raw.githubusercontent.com/claudiumio/githermes/09d5b566da650290dc0d639ea1e77def4bcdab31/docs/social-preview.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"github_app","repo":"https://github.com/himanusia/hermes-github-app-plugin","sha":"2adfd020f93a5d71a563e94c88738fb8e64335f8","subdir":"github_app","version":"0.1.0","description":"GitHub and GitHub Enterprise tools with bot-first attribution and approval-gated issue/PR writes. Disclosure — authenticates as a GitHub App from GITHUB_APP_ID, GITHUB_APP_INSTALLATION_ID and a private key in GITHUB_APP_PRIVATE_KEY or GITHUB_APP_PRIVATE_KEY_PATH/_FILE (read from the profile env or HERMES_HOME/.env, held in memory only, never written or logged), falling back to GITHUB_TOKEN/GH_TOKEN or `gh auth token` when no App variables are set, and reports which identity acted in every result. Talks only to https://api.github.com or the operator-configured GITHUB_API_URL / settings.api_url (HTTPS, no redirects; no tool argument can change the host). Issue/comment/review/merge writes stay disabled until settings.allow_write_actions is true and each one additionally goes through Hermes's human-approval prompt via its pre_tool_call hook (an 'always' answer does not persist).","maintainer":"himanusia","tier":"community","category":"tools","readme":true,"capabilities":{"provides_tools":["github_identity","github_create_issue","github_comment_issue","github_list_issues","github_get_issue","github_review_pr","github_merge_pr"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"glasser","repo":"https://github.com/glasser-ai/hermes-plugin-glasser","sha":"79a2f5a343735548d270f87309a44ad4d32c2ecc","description":"Glasser's hosted MCP: search, inspect and run 1,000+ paid data endpoints (people and company enrichment, SEO, web, social media, US property, stock quotes) with one key, pay per call. Portable Agent Plugins v1 package: a stdio bridge through mcp-remote (browser sign-in, no key in the package) plus a bundled skill for setup and the spending rules. Requires Node.js 18+. Disclosure — paid data broker: each run tool call charges your Glasser balance per the endpoint's published price with no in-Hermes confirm step; runs npx mcp-remote@0.14.3 as a local stdio bridge to https://api.glasser.ai/mcp; the sign-in token is cached by mcp-remote under ~/.mcp-auth/.","maintainer":"glasser-ai","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://glasser.ai/docs/mcp-server","version":"0.1.1","title":"Glasser","image":"https://raw.githubusercontent.com/glasser-ai/hermes-plugin-glasser/79a2f5a343735548d270f87309a44ad4d32c2ecc/assets/banner.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gmail","repo":"https://github.com/guberm/hermes-gmail-desktop-plugin","sha":"c8cd0c2d140561a1dffb7432c6d02b63b2374888","subdir":"plugins/gmail","title":"Gmail","description":"Hermes Desktop Gmail mailbox UI for search, reading, and thread inspection, with preview-confirmed send, reply, archive, trash, and label changes. Uses the active profile's existing Google Workspace OAuth setup; email is sensitive external content. Gmail actions and data access require user review and configuration. Disclosure — reads the active profile's Hermes Google Workspace token (google_token.json, refreshed in memory only) and calls the Gmail API; opening an unread message marks it read, other send/trash/label changes go through a confirm step (one setting can skip every review dialog, and then the prepare ticket, account/profile binding, exact snapshot validation and readback verification still run); remote email images load only after the user allows them. Attachment metadata listing and bounded read-only attachment download (25 MB cap) are profile/account-scoped.","maintainer":"guberm","tier":"community","category":"desktop","docs_url":"https://github.com/guberm/hermes-gmail-desktop-plugin#readme","version":"1.0.20","readme":false,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"go-whatsapp","repo":"https://github.com/anpicasso/hermes-go-whatsapp","sha":"a48546353fe79456bc193402905b17b3e1cd1be6","version":"0.4.1","requires_hermes":">=0.21.5","title":"Go WhatsApp","description":"Outbound WhatsApp tools through GOWA: registers GOWA's native MCP server and adds device listing, pairing, and removal. Setup can connect an existing server or explicitly install pinned GOWA v9.5.0 as a loopback-only authenticated native user service on Linux x86_64, macOS x86_64/arm64, or Windows x86_64. Disclosure — agents can send messages and mutate WhatsApp state through the linked account; session databases grant account access. The plugin does not ingest incoming messages or configure webhooks.","maintainer":"anpicasso","tier":"community","category":"tools","docs_url":"https://github.com/anpicasso/hermes-go-whatsapp/blob/a48546353fe79456bc193402905b17b3e1cd1be6/README.md","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["gowa_devices","gowa_device_login","gowa_device_remove"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"gondola-provider","repo":"https://github.com/Gondola-Market/hermes-gondola-provider","sha":"ad3f352b6a9814f1b550c819bee5ef2fb92a1851","description":"Gondola, a USDC-settled marketplace API for Venice AI inference","maintainer":"Gondola-Market","tier":"community","category":"models","docs_url":"https://github.com/Gondola-Market/hermes-gondola-provider#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["GONDOLA_API_KEY"]}},{"name":"gonogo","repo":"https://github.com/keppy/hermes-plugin-gonogo","sha":"3f9945d3235d204d74420544fbd11a08121cd6d2","description":"Turn a pilot-scale eval score into a deployment decision — Wilson intervals, a confidence threshold that routes uncertain cases to a human, and an honest INSUFFICIENT EVIDENCE verdict when the sample cannot support the claim. Disclosure — gonogo_report writes report JSON/HTML to the path the model supplies.","maintainer":"keppy","tier":"community","category":"tools","requires_hermes":">=0.21","version":"0.2.0","docs_url":"https://github.com/keppy/hermes-plugin-gonogo#readme","capabilities":{"provides_tools":["gonogo_decide","gonogo_report","gonogo_compare"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"good-student","repo":"https://github.com/harrylabsj/hermes-plugin-good-student","sha":"021375cf1cf0dad73d7a81b997f9a383be98c1ed","description":"Wrong-question diagnosis and study-action loop for parents and students — deterministic local core (SQLite, no cloud), host-model recognition gated by parent confirmation. Portable Agent Plugins v1 package (mcp.json + skills/); good-student MCP server pinned to immutable commit 2469cbb over uvx, with the good-student workflow skill bundled. Needs Python 3.10+ via uv. No credentials required; all data stays on-device and nothing is uploaded.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/good-student","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"govee","repo":"https://github.com/promptclickrun/hermes-govee","sha":"2d552cd1c67421cd5c9bbd8dd9b267f6dd5f0a0a","description":"Discover and control Govee lights (power, brightness, color, white temperature, scenes) through Govee's developer API. Every command is checked against the model's advertised capabilities and ranges, then confirmed by a state read-back. Disclosure — sends device IDs and control commands to openapi.api.govee.com with your Govee API key; the model can change light state; stores nothing on disk.","maintainer":"promptclickrun","tier":"community","category":"tools","version":"0.1.0","requires_hermes":">=0.21.2","docs_url":"https://github.com/promptclickrun/hermes-govee#readme","platforms":[],"capabilities":{"provides_tools":["govee_lights"],"provides_hooks":[],"provides_middleware":[],"requires_env":["GOVEE_API_KEY"]}},{"name":"grok-acp","repo":"https://github.com/nicolasdmolina/hermes-grok-acp","sha":"2851d6667be7f1a9044fee5006a382699d942c6f","description":"xAI Grok subscription as a Hermes model provider, driven over ACP stdio. Disclosure — spawns the vendor grok CLI found on PATH (grok agent over ACP stdio, plus grok models / grok login during setup) and drives your existing Grok subscription login; no API key is stored and Hermes provider secrets are stripped from the child environment.","maintainer":"nicolasdmolina","tier":"community","category":"models","docs_url":"https://github.com/nicolasdmolina/hermes-grok-acp#readme","version":"0.1.2","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"groq-provider","repo":"https://github.com/AhmetArif0/hermes-groq-provider","sha":"b5be0388c2b4cae8ed6a30c7371aaa1330731ee8","subdir":"groq-provider","description":"Groq as a Hermes model provider (`--provider groq`, or Groq in `hermes model`): reasoning effort is sent in the form each Groq model accepts, so gpt-oss-120b and gpt-oss-20b work (through a custom endpoint, Hermes 0.21.5 sends them a value Groq rejects with HTTP 400), and the model list leaves out Groq's speech-to-text, text-to-speech, prompt-guard and 4K-context models that Hermes cannot run. Not affiliated with Groq. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads); chat requests and the model list go to https://api.groq.com/openai/v1 (or the configured model.base_url) through Hermes' own client with GROQ_API_KEY, which Hermes reads; the plugin itself opens no connections, reads and writes no files and starts no processes.","maintainer":"AhmetArif0","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/AhmetArif0/hermes-groq-provider","version":"1.0.0","image":"https://raw.githubusercontent.com/AhmetArif0/hermes-groq-provider/b5be0388c2b4cae8ed6a30c7371aaa1330731ee8/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["GROQ_API_KEY"]}},{"name":"gurusup-brain","title":"Gurusup","repo":"https://github.com/gurusup/gurusup-brain-plugin","sha":"4709ca345cb55a1fab809b6b53523c5c0600be6e","description":"Your company's memory in Hermes: search decisions, people, customers and projects across every source your team connected to Gurusup (Slack, HubSpot, Notion, uploaded documents and more), with the sources behind each answer. Portable Agent Plugins v1 package (mcp.json + skills/), remote streamable-http with OAuth 2.1, no local code and no API keys. Disclosure — hosted-only MCP connector with no local code: every tool call goes to Gurusup's server at mcp.brain.gurusup.com under the signed-in Gurusup account (OAuth via `hermes mcp add gurusup-brain --url https://mcp.brain.gurusup.com/mcp --auth oauth`; the bundled mcp.json alone yields 401), and answers are limited to what that account can see; write tools save knowledge to the company's Gurusup workspace (add_company_knowledge, skills_publish) and send issue reports or feedback to Gurusup (report_issue, send_feedback), and request_human_info can message a teammate on Slack or phone them when its dispatch flag is set.","maintainer":"Gurusup","tier":"community","category":"tools","version":"0.1.0","docs_url":"https://gurusup.com/brain/mcp","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"ha-sidebar-navigator","repo":"https://github.com/badiyee85/HA-Plugins-sidebar-navigator","sha":"e025217648f3688bdee3c846f43646b4dfec6143","version":"0.3.0","image":"https://raw.githubusercontent.com/badiyee85/HA-Plugins-sidebar-navigator/e025217648f3688bdee3c846f43646b4dfec6143/docs/images/banner.png","description":"Full-power sidebar navigator & uncapped project/session explorer for Hermes Desktop. Bypasses the 3-session overview cap with searchable, scrollable project trees and timeline view.","maintainer":"badiyee85","tier":"community","category":"desktop","requires_hermes":">=0.19","docs_url":"https://github.com/badiyee85/HA-Plugins-sidebar-navigator","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"desktop-plugin"},{"name":"hades-coding-workflows","repo":"https://github.com/singhguri/hades-coding-workflows","sha":"b68546d66fe684a49633a9174e44362eff77cbfc","description":"Coding workflow skills — dual-model harness, subagent-driven development, and implementation planning patterns for Hermes Agent","maintainer":"singhguri","tier":"community","category":"automation","docs_url":"https://github.com/singhguri/hades-coding-workflows#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"handflow","repo":"https://github.com/DECRUX9812/hermes-handflow","sha":"6526ef75ffeb133d66472bc1899c87f34dcf9556","subdir":"","description":"Manus-style planning flow — the agent plans in steps and marks them as it works, with a live desktop pane.","maintainer":"DECRUX9812","tier":"community","category":"automation","requires_hermes":">=0.19","docs_url":"https://github.com/DECRUX9812/hermes-handflow#readme","platforms":[],"capabilities":{"provides_tools":["handflow"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"health-data","repo":"https://github.com/Infinite-Labs-AI/hermes-health-apollo","sha":"9f2db670a2669c9f3401fecb3b547ed52bcb2c3b","description":"Local health and daily-context data store for Hermes.","maintainer":"Infinite-Labs-AI","tier":"community","category":"tools","docs_url":"https://github.com/Infinite-Labs-AI/hermes-health-apollo#readme","capabilities":{"provides_tools":["health_analysis_catalog","health_analysis_explain","health_analysis_plan","health_analyze","health_calendar_peek","health_coverage","health_event_query","health_feature_query","health_log_food","health_query","health_sync"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"health-insights","repo":"https://github.com/mwdearing/hermes-health-insights","sha":"d6d09c1f17ada6ca60368a1e0c7a7b5bd4efefc6","description":"Deterministic, local-first analysis of your own Apple Health data - weekly trends, rule-based concern checks, nutrition versus Dietary Reference Intakes, an IOM energy target, lab results and opt-in modules (GLP-1 monitoring, medication adherence; all off by default). Portable Agent Plugins v1 package of ten skills that drive the separately installed health-insights command line tool (installed from the plugin's own pinned copy); the plugin itself contains no executable. Works on a self-hosted HealthRelay or Health Bridge receiver database. Disclosure - it handles sensitive health data, so use a local model or one you trust; personal integrations (medication counts, model wording) are off by default. Disclosure — the skills run a separately installed health-insights CLI that reads your HealthRelay or Health Bridge SQLite database read-only and keeps imported lab and ECG results under ~/.local/share/health-insights; the health values it prints are sent to whichever model provider your Hermes session uses.","maintainer":"mwdearing","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://github.com/mwdearing/hermes-health-insights#readme","version":"0.3.2","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"healthcare","repo":"https://github.com/harrylabsj/hermes-plugin-healthcare","sha":"09f3af2b2b862efececbcfa784c4442fcc2978df","description":"Local-first personal health records: encrypted on-device Vault (AES-GCM) for vitals, medications, activities, emotions, sleep, encounters, diagnosis mentions, medication plans and reminders, served through a Keychain-paired local daemon with 24 scoped MCP tools. Zero-config first run: the plugin bootstraps Vault + daemon + agent pairing automatically under PLUGIN_DATA. Engine pinned to an immutable PyPI release (healthcare-mcp==0.2.1) over uvx stdio; Portable Agent Plugins v1 package (mcp.json + skills/), macOS only, Python 3.11+. Zero network by default; the optional LLM report-import endpoint stays off unless the user configures it. Approval-gated deletes, tamper-evident audit chain. Disclosure — personal health record-keeping, not medical advice (the skill forbids diagnoses and dosage changes); first run has uvx fetch healthcare-mcp==0.2.1 from PyPI; the optional report-import path posts report images to Alibaba DashScope (qwen-vl-max) unless HEALTHCARE_LLM_ENDPOINT points elsewhere, and only when HEALTHCARE_LLM_API_KEY is set.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/healthcare-mcp","version":"0.2.0","platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"healthrelay","repo":"https://github.com/mwdearing/hermes-healthrelay","sha":"6c7927f832aaa7859c55fff72578b217ea35597f","description":"Read-only access to your own Apple Health data through a self-hosted HealthRelay receiver. Portable Agent Plugins v1 package with one stdio MCP server (ten read-only tools, including intake evidence; no raw SQL, no write tools) and three skills for setup, review and troubleshooting. Requires your own HealthRelay receiver (health-bridge) and an iPhone app you sign yourself; the plugin ships neither. Disclosure — exposes your Apple Health data, read-only, from your own receiver database to whichever model you run, so use a local model or one you trust with health data; runs the separately installed health-bridge binary from PATH; the setup skill can install the receiver from the author's git tag with uv tool install.","maintainer":"mwdearing","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://github.com/mwdearing/hermes-healthrelay#readme","version":"0.4.4","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"heartbeat2","title":"HeartBeat 2.0","repo":"https://github.com/electricsheephq/heartbeat2","sha":"63569ea6d4a767dc1cb7d22d5e68d4d4c1239a85","description":"Your agent follows up on its own: timed check-ins, recurring checks and watchers that wake it in the same chat when something changes. You (with /pulse) or your agent (with the pulse tool) arm follow-ups at a time, recurring checks, a check-in after a long silence, or deterministic watchers on a file, process, URL, read-only command or Hermes event (kanban, subagent, API error, reactions). A wake is a turn in the same messaging DM that armed it, on that chat's own model: no side model, cron session or subagent. Watchers decide without a model call; the agent answers each wake with a structured verdict (notify or stay silent, never a typed sentinel); a no-op governor slows, then pauses pointless wakes and asks once. Every guardrail is a user setting (quiet hours, daily caps, unanswered mute, floors, lifetimes) that the agent works inside and can never widen. A one-time reminder you ask for in chat bypasses the unanswered mute and daily caps; HeartBeat 2.0 grants that only in a turn that carries your message. Arming returns a one-line receipt saying when the wake will really fire, and a wake that could never fire before it expires is refused. It delivers to messaging-gateway DMs only and needs plugins.entries.heartbeat2.allow_gateway_injection: true. Ships the plugin skill `heartbeat2:heartbeat2-report-problem`, which drafts a bug report and files it with the GitHub CLI only after the user approves the exact text. Disclosure — wakes and watchers run full turns on the conversation's own model, billed like any message, at your conversation's context size, with the conversation's normal tools and approval prompts; the agent can arm wakes and watchers itself unless you set agent_can_create to ask_first or no; command watchers run allowlisted read-only commands (default gh pr view/checks, gh run view/list, git ls-remote/status/log) without an approval prompt, with no shell, a sanitized environment (no provider keys, GH_TOKEN or GITHUB_TOKEN) and the process group killed after 30 s, can use your stored git/gh credentials, and `git ls-remote <url>` / `gh -R` can contact any host your machine can reach; URL watchers make the GET requests you or the agent configured, without URL credentials, cookies, auth headers or proxies, always refuse cloud-metadata addresses and refuse private or local addresses unless url_allow_private is on; file watchers refuse paths Hermes blocks from reading; notes, summaries and event payloads are stored in plaintext in the profile's plugin-data; no telemetry.","maintainer":"100yenadmin","tier":"community","category":"automation","requires_hermes":">=0.21.6","docs_url":"https://github.com/electricsheephq/heartbeat2#readme","version":"0.2.0","image":"https://raw.githubusercontent.com/electricsheephq/heartbeat2/63569ea6d4a767dc1cb7d22d5e68d4d4c1239a85/docs/media/banner.png","readme":true,"platforms":["linux","macos"],"known_issues":["A wake turn that fails at the provider shows Hermes's own failure notice; the plugin cannot suppress it (NousResearch/hermes-agent#136749). HeartBeat 2.0 backs all wakes off until a model call on the profile succeeds.","notify=false silences the final reply; platforms that show tool progress by default (Discord, WhatsApp, Matrix) still show a progress bubble per wake turn unless display.platforms.<p>.tool_progress is off (quiet injection requested upstream: NousResearch/hermes-agent#136825).","Delivers only to messaging-gateway DMs by default (dm_only); CLI, TUI, Desktop, API-server and cron arming are refused until Hermes core supports silent injected turns there.","When Hermes falls back to another model during a wake turn, its model-fallback notice is posted to the chat, even for a wake that stays silent (NousResearch/hermes-agent#137738)."],"capabilities":{"provides_tools":["pulse"],"provides_hooks":["pre_gateway_dispatch","gateway_platform_event","pre_llm_call","pre_api_request","post_api_request","transform_llm_output","on_session_end","agent_loop_stopped","on_session_reset","kanban_task_completed","kanban_task_blocked","on_kanban_worker_exited","subagent_stop","api_request_error"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-aac","title":"Hermes AAC","repo":"https://github.com/TREE-Ind/hermes-aac","sha":"45d855ff2d8f448e1f98b62870aa72c3a02ea013","subdir":"","description":"Communication boards, explicit speech, switch scanning and reviewed AI proposals for Hermes Desktop. Disclosure — Desktop-only page; Speak sends your message text through the Hermes gateway to the TTS provider configured in Hermes (cloud providers receive it) and the audio plays on the gateway host, which may be remote; the AI helpers open a separate Hermes chat session per request and send your topic or message as a normal agent turn on your model provider; saved phrases and approved boards are kept in plaintext in the plugin's Desktop storage.","maintainer":"TREE-Ind","tier":"community","category":"desktop","version":"0.1.1","requires_hermes":">=0.21.7","readme":true,"onboarding":false,"platforms":["windows"],"screenshots":["https://raw.githubusercontent.com/TREE-Ind/hermes-aac/45d855ff2d8f448e1f98b62870aa72c3a02ea013/evidence/cockpit-1366.png","https://raw.githubusercontent.com/TREE-Ind/hermes-aac/45d855ff2d8f448e1f98b62870aa72c3a02ea013/evidence/studio-1366.png","https://raw.githubusercontent.com/TREE-Ind/hermes-aac/45d855ff2d8f448e1f98b62870aa72c3a02ea013/evidence/focus-1366.png"],"known_issues":["Experimental, nonclinical AAC; requires Hermes Desktop and configured services for optional AI and speech.","Screenshots are actual React renders with mocked SDK/native boundaries, not live provider proof.","Saved phrases and approved boards persist locally in plaintext; full config is read-only through SDK.","Speech is submission acknowledgement only; backend-owned audio may play on a remote gateway host.","No speech Stop, request-scoped cancellation, completion or later playback error tracking; Stop scanning remains independent.","No voice catalog or model/provider/settings writes; configure in Hermes Settings.","Explicit expression tags require a current ElevenLabs v3 config snapshot, not an atomic guarantee or provider attestation."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-activity","repo":"https://github.com/hassan-kamel/hermes-activity","sha":"0335e954b3ab00193720205fcdab7e10ae1194f9","title":"Activity","description":"Hermes Desktop session analytics and provider-reported usage: annual heatmaps, token mix, model breakdowns and source-period summaries. Disclosure — reads the selected profile's state.db read-only and, for the Providers tab, an Activity cache under plugin-data/hermes-activity plus the optional Quota quota_cache.json. Fetch provider data runs a local Node.js (22.18+) collector and, only on that explicit click, calls chatgpt.com through Hermes's signed-in Codex request route (requires_auth: openai-codex) and api.commandcode.ai, opencode.ai and ollama.com with the optional API keys you configure as plugin secrets; it stores usage aggregates and hashed key identifiers locally. No other credential reads, telemetry or sign-in flow; remote profiles go through the configured gateway.","maintainer":"hassan-kamel","tier":"community","category":"desktop","requires_hermes":">=0.21.7","docs_url":"https://github.com/hassan-kamel/hermes-activity","version":"0.2.2","screenshots":["https://raw.githubusercontent.com/hassan-kamel/hermes-activity/0335e954b3ab00193720205fcdab7e10ae1194f9/assets/activity-preview.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-adaptive-effort","repo":"https://github.com/atostivint/hermes-adaptive-effort","sha":"0998a083d85ea52fbef38427b44a54d27332358a","description":"Choose a separate scorer to set the reasoning effort of each Hermes request. Disclosure — off by default; when a mode is enabled (or on an explicit `/hae probe`), sends the latest user message (or the parent-written subagent goal), truncated to 4000 characters, plus any configured guidance to the scorer you select (TypeSafe Jev at api.typesafe.ai by default, or OpenAI Decisions, OpenRouter, Cloudflare Workers AI, or a custom URL) using that service's key; in Hermes Desktop it also sets the focused chat's session reasoning selector through the gateway `config.set` API after each applied change, and it keeps a prompt-free effort-change history (64 changes × 64 conversations) in its plugin data directory.","maintainer":"atostivint","tier":"community","category":"models","requires_hermes":">=0.21.6","docs_url":"https://github.com/atostivint/hermes-adaptive-effort/blob/0998a083d85ea52fbef38427b44a54d27332358a/docs/README.md","version":"0.3.1","readme":true,"screenshots":["https://raw.githubusercontent.com/atostivint/hermes-adaptive-effort/0998a083d85ea52fbef38427b44a54d27332358a/docs/images/desktop-routing-mode.png","https://raw.githubusercontent.com/atostivint/hermes-adaptive-effort/0998a083d85ea52fbef38427b44a54d27332358a/docs/images/desktop-route-and-scorer.png","https://raw.githubusercontent.com/atostivint/hermes-adaptive-effort/0998a083d85ea52fbef38427b44a54d27332358a/docs/images/desktop-settings.png","https://raw.githubusercontent.com/atostivint/hermes-adaptive-effort/0998a083d85ea52fbef38427b44a54d27332358a/docs/images/routing-mode-popover.png"],"platforms":[],"title":"Hermes Adaptive Effort","known_issues":["Pre-release: live effort acceptance is only partially validated; see the v0.3.0 release notes for the per-route evidence."],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_end","on_session_finalize","on_session_reset","subagent_start","subagent_stop"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"hermes-agent-builder","title":"Hermes Agent Builder","repo":"https://github.com/itsflownium/hermes-agent-builder","sha":"6ed39da7c7054587cbe2a42e60c3e9cbe4969cf6","description":"Guided Desktop workspace in BOTS: tailored questions, reference files, editable instructions and capabilities, version comparisons, model-only trials, and native Bot Chat handoff. Saves specialists as separate Hermes profiles and installs the Builder companion plugin into its own bot profile. Disclosure — \"Talk to Builder\" auto-creates a hermes-builder profile cloned from the active profile with copied .env/auth.json and copies+enables this plugin there outside the catalog installer (uninstall does not remove that copy); \"Save agent\" creates new profiles the same way and rewrites their tool/skill selection.","maintainer":"itsflownium","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/itsflownium/hermes-agent-builder#readme","version":"1.0.0","image":"https://raw.githubusercontent.com/itsflownium/hermes-agent-builder/6ed39da7c7054587cbe2a42e60c3e9cbe4969cf6/docs/banner.png","screenshots":["https://raw.githubusercontent.com/itsflownium/hermes-agent-builder/6ed39da7c7054587cbe2a42e60c3e9cbe4969cf6/docs/builder.png","https://raw.githubusercontent.com/itsflownium/hermes-agent-builder/6ed39da7c7054587cbe2a42e60c3e9cbe4969cf6/docs/compare.png"],"readme":true,"platforms":["macos","windows"],"known_issues":["Windows Desktop runtime testing remains; the installer and renderer use portable paths and APIs."],"capabilities":{"provides_tools":["agent_builder"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-agent-mixer","repo":"https://github.com/Sahil-SS9/hermes-agent-mixer","sha":"f1da4ced08326cac33ba7a9fd0d5c1b6acd19f35","title":"Agent Mixer","maintainer":"Sahil-SS9","tier":"community","category":"general","version":"0.2.0","description":"A mixing desk for how much a coding agent may change: four enforced dials (edits, write-scope globs, per-turn line budget, new-dependency policy) with /mixer, live presets, a Desktop dial panel in the composer, a web-dashboard saved-defaults bar and a steering-console page. Also drives Claude Code, Codex and Gemini CLI through the agent-mixer hook command. Disclosure — enforces edit/scope/line-budget/new-dependency dials in pre_tool_call (blocks, or escalates \"ask\" to Hermes approval, which /yolo skips) and adds a one-line rules context via pre_llm_call when a dial is off its default; per-session dial state is stored under HERMES_HOME/plugin-data/hermes-agent-mixer/sessions/, and the Desktop panel and dashboard bar write the plugin's own saved defaults into config.yaml (plugins.entries.hermes-agent-mixer.settings); the separately installed agent-mixer CLI keeps its own state in ~/.config/agent-mixer and ~/.local/state/agent-mixer, writes hook entries into ~/.claude/settings.json, ~/.claude/commands/mixer.md, ~/.codex/hooks.json or ~/.gemini/settings.json only when run as `agent-mixer install <harness> --yes`, and `agent-mixer ui` serves a token-guarded console on 127.0.0.1:8377.","docs_url":"https://github.com/Sahil-SS9/hermes-agent-mixer","image":"https://raw.githubusercontent.com/Sahil-SS9/hermes-agent-mixer/f1da4ced08326cac33ba7a9fd0d5c1b6acd19f35/docs/screenshots/dial-panel-open.png","screenshots":["https://raw.githubusercontent.com/Sahil-SS9/hermes-agent-mixer/f1da4ced08326cac33ba7a9fd0d5c1b6acd19f35/docs/screenshots/dial-panel-open.png","https://raw.githubusercontent.com/Sahil-SS9/hermes-agent-mixer/f1da4ced08326cac33ba7a9fd0d5c1b6acd19f35/docs/screenshots/console-page.png","https://raw.githubusercontent.com/Sahil-SS9/hermes-agent-mixer/f1da4ced08326cac33ba7a9fd0d5c1b6acd19f35/docs/screenshots/dashboard-tab.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","pre_llm_call","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.6"},{"name":"hermes-anilist","repo":"https://github.com/BatataBF/hermes-anilist","sha":"0081dfd7b45a469eef1ec35d3d0797318694c640","description":"AniList tracker for Hermes Desktop — airing countdowns, a season browser, a local or account-backed watchlist, episode alerts and a daily digest, plus agent tools that read your own list and answer about a single show. Disclosure — stores your pasted AniList token in the active profile .env (sent only to graphql.anilist.co); alerts and the daily digest are Hermes cron jobs it creates on the host you pick, and the digest job asks that host's agent to query the public AniList API itself.","maintainer":"BatataBF","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/BatataBF/hermes-anilist#readme","version":"0.9.0","platforms":[],"image":"https://raw.githubusercontent.com/BatataBF/hermes-anilist/0081dfd7b45a469eef1ec35d3d0797318694c640/docs/screenshots/popover-upcoming.png","capabilities":{"provides_tools":["anilist_list","anilist_show"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-atoll","title":"Hermes Notch Plugin","repo":"https://github.com/himanusia/hermes-notch-plugin","sha":"298a67e9fc1f9e5a4ec821bdce9d516e7e72e968","description":"Native Hermes Agent plugin that runs the local Atoll notch monitor for Hermes session and turn status on macOS. Disclosure — macOS only. Starts a detached Node daemon on every Hermes session that reads state.db read-only and sends session titles, model/profile/token stats and a ≤96-char redacted preview of your latest request to the third-party Atoll notch app over localhost. hermes notch setup clones and builds the author's Atoll fork (github.com/himanusia/Atoll at a pinned commit, not reviewed here) with Xcode and installs an unnotarized app to ~/Applications. Node deps install via Hermes's npm ci prompt. Run hermes notch stop before removing.","maintainer":"himanusia","tier":"community","category":"desktop","version":"0.3.0","image":"https://raw.githubusercontent.com/himanusia/hermes-notch-plugin/298a67e9fc1f9e5a4ec821bdce9d516e7e72e968/assets/hermes-atoll-thumbnail.jpg","platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-auto-titler","repo":"https://github.com/Vocllum/hermes-auto-titler","sha":"42259f5cf346eba307e1cc8cac835203d986bcb6","version":"0.3.0","image":"https://raw.githubusercontent.com/Vocllum/hermes-auto-titler/42259f5cf346eba307e1cc8cac835203d986bcb6/docs/catalog-card.png","description":"Topic-aware session title tracking for Hermes Agent. Hermes generates the first title by default; AutoTitler follows conversation changes and session close without changing the host title-generation switch. Disclosure — sends excerpts of each conversation (sampled user turns, short assistant replies, compaction summaries) to your Hermes title-generation model in the background, also for up to 200 recent untitled sessions at startup; needs plugins.entries.hermes-auto-titler.llm.allow_task_override (or allow_provider/model_override for a custom route). 0.3 no longer edits config.yaml, but users upgrading from 0.2.x keep auxiliary.title_generation.enabled=false until they re-enable it (/autotitler status shows the fix).","maintainer":"Vocllum","tier":"community","category":"automation","docs_url":"https://github.com/Vocllum/hermes-auto-titler","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","on_session_end","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-beads","repo":"https://github.com/jacobhausler/hermes-beads","sha":"975263183c65b1ef94160344024187b64379dc32","description":"Native Beads (bd) work-graph plugin: fixed-argv adapter, scoped ready frontier, claim with read-back, guarded writes. Six tools over an explicit store path + actor; honest exit-code map incl. stale-13; plain bd stays fully sufficient (escape hatch). No desktop pane ships yet.","maintainer":"jacobhausler","tier":"community","category":"tools","requires_hermes":">=0.21","version":"0.1.2","readme":true,"platforms":[],"capabilities":{"provides_tools":["beads_smoke","beads_frontier","beads_show","beads_claim","beads_update","beads_comment"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-blogwatcher","title":"Blogwatcher","repo":"https://github.com/irfansofyana/hermes-blogwatcher","sha":"1b6f32afc1a509437a9bc57a078bea99b3d69dab","description":"A Blogwatcher inbox for Hermes Desktop and web, with themes, read controls and on-demand AI summaries. Disclosure: runs the original Blogwatcher CLI against its database; scans contact subscribed sites; requested summaries fetch public pages and send text to the configured Hermes model after consent, which may incur costs. Summaries are cached locally. No telemetry or self-update.","maintainer":"irfansofyana","tier":"community","category":"desktop","docs_url":"https://github.com/irfansofyana/hermes-blogwatcher/blob/1b6f32afc1a509437a9bc57a078bea99b3d69dab/README.md","version":"0.2.0","screenshots":["https://raw.githubusercontent.com/irfansofyana/hermes-blogwatcher/1b6f32afc1a509437a9bc57a078bea99b3d69dab/docs/screenshots/follow-hermes.png","https://raw.githubusercontent.com/irfansofyana/hermes-blogwatcher/1b6f32afc1a509437a9bc57a078bea99b3d69dab/docs/screenshots/light.png","https://raw.githubusercontent.com/irfansofyana/hermes-blogwatcher/1b6f32afc1a509437a9bc57a078bea99b3d69dab/docs/screenshots/dark.png"],"readme":true,"known_issues":["Requires the original Hyaxia/blogwatcher CLI on the Hermes backend host; the blogwatcher-cli fork is not supported.","Remote Desktop clients need desktop/plugin.js copied locally. Restart the dashboard/API server after installing the backend."],"capabilities":{"provides_tools":["blogwatcher_list_sources","blogwatcher_list_articles"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.6"},{"name":"hermes-boot-screen","repo":"https://github.com/OMOX563/hermes-boot-screen","sha":"4bdfb3c67cd8341c3018631214b8c42d7cf50cb7","title":"Hermes Boot Screen","description":"Six-act boot animation for the Hermes desktop app — black-screen brand reveal, over-exposed whiteout bridge, a technical-dossier plate, an authorization handshake with identity confirmation, and a welcome finale — with audio cues, theme-aware light/dark plates and Esc/Enter/Space controls. Desktop-only: desktop/plugin.js inside the plugin SDK surface; no agent tools, hooks, middleware or env vars. Fully English UI. Adapted from 6shenhonghong9/dsh-startup-screen (MIT). Disclosure — on every Desktop launch (default: once per session) it covers the whole window with a full-screen animation that plays audio and spoken narration and waits for Enter/Space/click on two steps (Esc skips); while it is up it captures Enter/Space/Esc at the document level. Turn it off or switch to daily in its Startup Animation settings page.","maintainer":"OMOX563","tier":"community","category":"desktop","version":"1.1.1","readme":true},{"name":"hermes-call-ledger","repo":"https://github.com/skappafrost/hermes-call-ledger","sha":"c55671dd61becb30a8b4d5e53cba9926938fb299","description":"Per-call cost ledger for Hermes Desktop: every model call Hermes makes is recorded from the observer hooks (provider, model, tokens, duration, outcome) and paired with the charge the billing provider actually took; works with no billing account, priced by Hermes' own estimate where the price book knows the model. English or Vietnamese; dong or dollars. Disclosure — three observer hooks (post_api_request, post_auxiliary_call, api_request_error) record per-call metadata from every profile in the install (session id, platform, task, provider, model, token counts, duration, finish reason, context length; never prompt, response or tool-argument text) into one shared SQLite ledger at <install root>/plugin-data/call-ledger/calls.sqlite, and import this plugin's own older per-profile ledgers into it once. It caches the vilao.ai model list there and the USD-to-VND rate under the active profile's plugin-data/call-ledger. Network is GET-only: vilao.ai (wallet balance, per-request usage, consumer keys) with VILAO_PAT read through Hermes's secret scope (vilao issues one full-scope token per account, including wallet writes; this plugin only reads), the public vilao.ai model list with no credential, and open.er-api.com for the dollar rate. The first full billing pull pages back through up to ten years of the account's usage. Nothing runs while the Desktop page is closed. Derived from hermes-resetwatch (Adolanium, MIT).","maintainer":"skappafrost","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/skappafrost/hermes-call-ledger#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_api_request","post_auxiliary_call","api_request_error"],"provides_middleware":[],"requires_env":["VILAO_PAT"]}},{"name":"hermes-cloud-file-manager","title":"Cloud File Manager","repo":"https://github.com/electricsheephq/hermes-cloud-file-manager","sha":"9678d440f0c1735996d2a0b1a5e97fe58013fddd","description":"Cloud Files for Hermes Desktop — browse, search and sort by date, create folders and bulk-upload files and whole folders to the machine your agent runs on, preview its images, PDFs and code files, download a file, read and edit its Markdown and text files (view first; nothing is written until you press Save in the review, which shows the line diff for files up to 20,000 lines), drag files into the chat, import files from the agent's own Google Drive, and hand the agent file locations from the chat + menu without re-uploading. Built for remote gateways (token or sign-in); works locally too. Ships one plugin skill, hermes-cloud-file-manager:cloud-file-manager-report-problem, which drafts a bug report and files it with the GitHub CLI only after the user approves the exact text. Disclosure — adds a file API to the gateway (dashboard plugin routes under the gateway's existing auth) over the agent's working folders: the configured roots, else terminal.cwd, TERMINAL_CWD or MESSAGING_CWD, else the gateway user's home with its dot-entries hidden. It lists, sorts and searches those folders, reads the files you open or preview (Markdown and .txt files up to 1 MiB in the editor; the first 1 MiB of other code and text files; images and PDFs up to 10 MiB), creates folders, and writes uploads, Drive imports and editor saves (staged as hidden .cfm-* temp files in the destination folder; a name clash keeps both files). It overwrites only an existing .md/.markdown/.txt file you open and explicitly Save in its editor (refused if the file changed since you opened it). It has no delete action: it removes only its own .cfm-* staging files and folders (aborted ones, and stale ones over a day old) and, when an upload or import fails to publish, the empty file it had reserved for it. It never follows links out of those folders, and its file API never exposes the agent's Hermes home apart from a working folder set inside it (roots, terminal.cwd, or a workspace/ folder it creates when the working folder would be the home itself). Download and drag into the chat use Hermes Desktop's own authenticated file download and @file/@folder references; the plugin adds no route for them. Desktop listens for the agent's tool-completion events to refresh the open folder. Apart from Desktop's calls to the gateway and the report skill's GitHub requests, its only network use is Google Drive, read-only, through the agent's own google-workspace skill, whose scripts (from skills/productivity/google-workspace in the agent's Hermes home, else the copy bundled with Hermes) it runs with the gateway's Python and a minimal environment without API keys, buffering their output in the gateway's temp directory; the plugin never reads the Google token. While Desktop is open it re-checks the plugin and Drive sign-in about once a minute. The report skill runs hermes --version, hermes plugins list and hermes logs (filtered to this plugin), may save its search words, title and draft as local files, and searches electricsheephq/hermes-cloud-file-manager issues with gh or a web tool before drafting; it posts a public issue or comment there only after the user approves the exact title and text.","maintainer":"100yenadmin","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/electricsheephq/hermes-cloud-file-manager#readme","version":"0.5.0","image":"https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-page.png","https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-upload.png","https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-picker.png","https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-drive-page.png","https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-editor-review.png","https://raw.githubusercontent.com/electricsheephq/hermes-cloud-file-manager/9678d440f0c1735996d2a0b1a5e97fe58013fddd/docs/media/screenshot-chat.png"],"readme":true,"platforms":[],"known_issues":["In a split layout with two agents' chats side by side, a drag started while one agent's chat is in focus can be dropped into the other agent's chat; the reference then names a path on the wrong machine (no file moves between agents). Use Add to chat, or focus the target chat before dragging (electricsheephq/hermes-cloud-file-manager#55)."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-codex-resets","repo":"https://github.com/sxuff/hermes-codex-resets","sha":"008f4fe2549bedd5a09ef0ce9615594ea388ffed","version":"0.1.0","title":"Codex Resets","description":"Know the moment OpenAI resets your Codex usage limits. A status-bar chip counts the time since the last reset; when a new one lands, a small card rises out of it (chip-only while you type), with a history page of every reset. Disclosure — polls the public codex-resets.com API every 60 s and loads fonts from Google Fonts; sends nothing about you or your sessions.","maintainer":"sxuff","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/sxuff/hermes-codex-resets#readme","image":"https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/banner.png","screenshots":["https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/card.png","https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/reset.png","https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/banked.png","https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/watch.png","https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/typing.png","https://raw.githubusercontent.com/sxuff/hermes-codex-resets/008f4fe2549bedd5a09ef0ce9615594ea388ffed/artifacts/history.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-council","repo":"https://github.com/girayk/hermes-council","sha":"18a66633acc045c251063721a1cf26f9a46d29de","description":"LLM Council (karpathy/llm-council) as a Hermes plugin. Four fixed advisor seats (First-Principles Analyst, Skeptic, Pragmatist, Researcher) answer in parallel, anonymously review and rank each other, and a Chairman model synthesizes the final answer. Members borrow your existing provider credentials - no API keys. Registers a Council group in every model menu, a council_deliberate tool, /council, hermes council CLI, and a desktop panel. Disclosure — council_deliberate and the Council model fan each prompt (as a session model, the whole conversation) out to every seat, judge and chairman model you assign, up to 2N+1 billed calls per turn on your existing provider credentials; it also adds a non-secret \"council\" marker row to auth.json and keeps run history in $HERMES_HOME/council/runs/.","maintainer":"girayk","tier":"community","category":"models","version":"1.0.0","docs_url":"https://github.com/girayk/hermes-council#readme","capabilities":{"provides_tools":["council_deliberate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.4"},{"name":"hermes-cron","repo":"https://github.com/itpartypattaya/hermes-cron","sha":"bcd9e9a8d3e376f910236aa2fecd80b309df5eae","description":"Operating skill for Hermes cron: lifecycle rules (pause vs disable vs remove, `in 30m` vs `30m`), four ways to avoid needless LLM runs (no_agent, wakeAgent pre-check, monitor, [SILENT]), verify-after-change, a layered runbook and a read-only doctor that complements `hermes cron doctor` and reports one error across several jobs as one scheduler fault and a cron store that cannot be written. Portable Agent Plugins v1 package (plugin.json + skills/); no tools, hooks, middleware or env vars. Disclosure — skill only, no network; the bundled doctor reads ~/.hermes/cron/jobs.json, ticker stamps and executions.db (or a named profile's store with --profile) read-only, checks the cron directory's permissions and free space without writing, and runs the local hermes cron doctor (argument list, no shell), whose job loader may repair malformed jobs.json entries (--no-builtin skips it).","maintainer":"itpartypattaya","tier":"community","category":"automation","requires_hermes":">=0.21.0","docs_url":"https://github.com/itpartypattaya/hermes-cron/blob/bcd9e9a8d3e376f910236aa2fecd80b309df5eae/README.md","version":"1.4.2","image":"https://raw.githubusercontent.com/itpartypattaya/hermes-cron/bcd9e9a8d3e376f910236aa2fecd80b309df5eae/docs/banner.png","screenshots":["https://raw.githubusercontent.com/itpartypattaya/hermes-cron/bcd9e9a8d3e376f910236aa2fecd80b309df5eae/docs/modes.png","https://raw.githubusercontent.com/itpartypattaya/hermes-cron/bcd9e9a8d3e376f910236aa2fecd80b309df5eae/docs/doctor.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-desktop-camera","repo":"https://github.com/BrokeSkill/Hermes-Camera","sha":"ce9e8b914cb73ca88e797d89124f6add516bf823","description":"A camera button for the Hermes Desktop composer. Open the preview, take a photo, and the frame lands in the composer as an image attachment, ready to send.","maintainer":"BrokeSkill","tier":"community","category":"desktop","version":"0.1.0","image":"https://raw.githubusercontent.com/BrokeSkill/Hermes-Camera/ce9e8b914cb73ca88e797d89124f6add516bf823/docs/demo.gif","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-discord-rpc","repo":"https://github.com/DarRahman/hermes-discord-presence","sha":"fb49ff562015b4ae3ed88b2306f2c1de518bfb8b","description":"Native Discord Rich Presence (RPC) integration for Hermes Agent — real-time session, model, token, and tool tracking with local-only IPC. Disclosure — publishes your most recent session title (or, in full title mode, the workspace folder name), model name and token total to the local Discord client as Rich Presence every 3 s (visible to other Discord users); opt-in settings also publish the git branch and a \"View Repository\" button with the public github.com/gitlab.com remote URL (credentials, ports and other hosts stripped); reads ~/.hermes/state.db read-only; reads the active workspace's .git/HEAD and .git/config read-only to resolve repository and branch; on Linux may scan running Discord processes' environment via psutil to find XDG_RUNTIME_DIR; writes a small presence-ownership file in XDG_RUNTIME_DIR (or the system temp dir) and, under herdr, queries the local HERDR_SOCKET_PATH socket for pane focus.","maintainer":"DarRahman","tier":"community","version":"1.3.0","category":"general","docs_url":"https://github.com/DarRahman/hermes-discord-presence/blob/main/README.md","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_session_end","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-dreaming","repo":"https://github.com/itpartypattaya/hermes-dreaming","sha":"8f35aac1acc02faa70d1e970643f21aac718788c","description":"Nightly deterministic memory consolidation (\"dreaming\"): corroborates candidate facts with what humans actually said on distinct days, proposes the few worth keeping with a verbatim edit anchor, asks whether stale memory entries still hold, and wakes the agent only when there is work — including a memory file close to its char limit. Fact sources: the holographic store, a SQLite or JSONL export, or none. Secrets and instructions are screened by the dream's own rules plus a verbatim copy of the holographic plugin's screen (scripts/holo_screen.py, MIT, same maintainer), applied to stored facts and human messages before anything reaches memory, the report or the model. Portable Agent Plugins v1 package (plugin.json + skills/); no tools, hooks, middleware or env vars. Disclosure — scripts make no network or LLM calls and open state.db and every fact store read-only (SQLite mode=ro; with holographic >= 0.15.0 including its fact_versions/fact_confirmations tables, to say who stands behind a fact); they also read Hermes config.yaml's memory/timezone keys and the holographic plugin's db_path/scope/cron_writes/min_trust_threshold (the floor recall applies, so a rejected fact is only reported when the store still trusts it) and, to say so in install.py --check, embeddings/mirror_memory_writes, the pending/memory approval queue, cron/jobs.json (to find their own jobs) and — only when chat_stores is set, with holographic scope user/chat/thread — the per-chat databases next to the store (counts of every one; facts of the chats listed in promote_from). The user-run installer copies three gate scripts into $HERMES_HOME/scripts, seeds $HERMES_HOME/dreaming.json and, through Hermes' cron Python API, creates (or with --rebind re-points) two agent cron jobs bound to this plugin's own skill with only the memory toolset, plus one no_agent job (every 15 min, no model) that reads the fact stores to keep a hash index of diary lines and, for facts holographic >= 0.8.0 has forgotten, rewrites the dream's own cache files and diary without them and deletes the output files of the dream's own cron jobs that mention them (by id or verbatim text); with a chat --deliver target the reports are attached as a session you can reply to. The agent runs send recent human messages (up to 200 / 40k chars, each with its chat type and sender id) and fact snippets to your configured model; state goes to $HERMES_HOME/cache and a diary to $HERMES_HOME/memories/DREAMS.md (configurable); memory files are changed by the agent only through the regular memory tool, and with the holographic provider it also adds candidate facts via fact_store (with holographic >= 0.15.0 marked said or inferred; with holographic >= 0.8.0 also change / end / correct / forget, the last three only on a human's own answer; forget is irreversible), lowers trust on human-rejected facts via fact_feedback, with holographic >= 0.15.0 raises trust (fact_feedback confirmed, +0.05, at most 10 facts a night) on facts people repeated on two or more different days and, when keywords.enabled is set (off by default), adds search keywords to facts via fact_store update.","maintainer":"itpartypattaya","tier":"community","category":"memory","requires_hermes":">=0.21.0","docs_url":"https://github.com/itpartypattaya/hermes-dreaming/blob/8f35aac1acc02faa70d1e970643f21aac718788c/README.md","version":"2.9.5","image":"https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/8f35aac1acc02faa70d1e970643f21aac718788c/docs/banner.png","screenshots":["https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/8f35aac1acc02faa70d1e970643f21aac718788c/docs/overview.png","https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/8f35aac1acc02faa70d1e970643f21aac718788c/docs/lifecycle.png","https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/8f35aac1acc02faa70d1e970643f21aac718788c/docs/files.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-experientiallabs","repo":"https://github.com/kyoto-aircon/hermes-experientiallabs","sha":"2bcdd3bc2cb4c1af4a7287c54eded5e5acc6b3cb","description":"Experiential Labs - OpenAI-compatible multi-model gateway provider (chat, /model picker, aux and curated fallback models, /usage wallet snapshot). All network calls go to api.experientiallabs.ai - /v1 chat + models via Hermes' own transport, /api/v1/credits and /api/v1/key only when /usage runs; no telemetry; credentials resolve through Hermes routes (hermes auth / .env). Disclosure — When you pick Experiential Labs as your model, every prompt, tool result and attachment of that session goes to api.experientiallabs.ai, a third-party gateway that routes to upstream model vendors. /usage sends your key to its Cost API (GET /credits and /key) or to the cost_api_base you set. Independent integration, not affiliated with Experiential Labs.","maintainer":"kyoto-aircon","tier":"community","category":"models","requires_hermes":">=0.21.6","version":"0.3.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["EXPLABS_API_KEY"]}},{"name":"hermes-federated-search","repo":"https://github.com/kumaxs/hermes-federated-search","sha":"566b3ccc6aeff7e39c19dcfd779ade107827043c","description":"Federated web search backend (provider name `federated`): fans one query out to multiple configured search backends in parallel and returns merged, deduplicated, relevance-ranked results (keyword scoring; optional LLM re-rank with automatic fallback). Phase 2 — official settings-page exposure (config_schema, six keys) merged with the legacy web.federated block, and per-line multi-card credential pools (environment-variable names only) with automatic failover and host-aligned cooldowns. Phase 3 — a desktop card config page (Settings → Plugins; opt-in via Settings → Skills & Tools → Plugins): one card per line, two-level membership checkboxes (backends / credentials), add/remove lines and keys, a per-line Key rotation strategy (pool_strategy), an LLM ranker model picker (seventh schema key `ranker`), and a current-settings string with paste import; no type picker/badges (`type` round-trips verbatim); every edit serializes back to the settings tree (string ↔ UI parity). The LLM re-rank request pins thinking off (`reasoning_effort=off`) and the card page states it. Disclosure — reads the operator's config.yaml (read-only) for its own settings (web.federated and plugins.entries.hermes-federated-search.settings); sends the query to the operator-configured sub-backends (registered providers or custom HTTP endpoints); no telemetry, no subprocesses, no credential storage (key values stay in the runtime environment).","maintainer":"kumaxs","tier":"community","category":"web","requires_hermes":">=0.21.5","docs_url":"https://github.com/kumaxs/hermes-federated-search#readme","version":"1.1.2","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-field-notes","repo":"https://github.com/itpartypattaya/hermes-field-notes","sha":"74b566dd49ce6a9f249b7d1e5e12d25895592d42","description":"Field notes for a Hermes install: search known pitfalls before debugging and record new ones with root cause; register every local core edit as a patch note with a declarative checks file, then verify read-only after each hermes update (OK / MISSING / UPSTREAMED / N/A / UNKNOWN with reason) and list core files changed outside the registry. Ships 42 pitfalls and 10 patch recipes checked against 0.22.0. Optional pinned Telegram dashboard edited in place by an hourly no_agent cron job. Portable Agent Plugins v1 package (plugin.json + skills/); no tools, hooks, middleware or env vars; never edits the core or runs patch scripts. Disclosure — its scripts only read the Hermes core (pyproject.toml, read-only git status/diff) and never edit it or run patch scripts; the skill does walk the agent through hand-editing core files from its patch recipes and re-running the owner's re-apply scripts, each only after the user says yes. Network: Telegram Bot API only when the dashboard is enabled (reuses the agent's TELEGRAM_BOT_TOKEN from env or ~/.hermes/.env), and the public GitHub API without credentials (latest release plus compare against the installed commit SHA, cached 12 h; upstream.check=false disables). Writes: the notes store (~/.hermes/field-notes), ~/.hermes/field-notes.json, state and lock files in ~/.hermes/cache, a copy of the cron script in ~/.hermes/scripts when install.py runs (the skill runs it on first use), and one hourly no_agent cron job only when the user runs install_cron.py (it reads ~/.hermes/installs/*/facts.json to find Hermes' own Python and re-runs itself with it). Without a dashboard chat, install_cron.py sends the job's alerts to the Telegram home channel when TELEGRAM_HOME_CHANNEL is set (read from env or ~/.hermes/.env), else local.","maintainer":"itpartypattaya","tier":"community","category":"tools","requires_hermes":">=0.21.0","docs_url":"https://github.com/itpartypattaya/hermes-field-notes/blob/74b566dd49ce6a9f249b7d1e5e12d25895592d42/README.md","version":"1.2.6","image":"https://raw.githubusercontent.com/itpartypattaya/hermes-field-notes/74b566dd49ce6a9f249b7d1e5e12d25895592d42/docs/banner.png","screenshots":["https://raw.githubusercontent.com/itpartypattaya/hermes-field-notes/74b566dd49ce6a9f249b7d1e5e12d25895592d42/docs/how-it-works.png","https://raw.githubusercontent.com/itpartypattaya/hermes-field-notes/74b566dd49ce6a9f249b7d1e5e12d25895592d42/docs/patch-lifecycle.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-fleet-connector","title":"Hermes Fleet Connector","repo":"https://github.com/tony-simons-aiowa/hermes-fleet-connector","sha":"9a4b6f76c4c880d5cade1a0f43b5749112cb7be9","description":"Owner-approved universal phone pairing and bundled read-only Live Operations reporting for selected Hermes profiles. Disclosure — paired phones get broad fleet:operator access over the internet, including cron jobs (unattended runs), Kanban task dispatch and media reads, and see live session titles/previews and subagent goals from the profiles you select for reporting; any messaging account you make an owner (with a one-time claim code from `hermes fleet claim`) can create pairing links and approve phones from a private chat, so that account's security is your host's security. Runs an explicitly activated background connector/reverse proxy behind your HTTPS origin and may launch a local Hermes backend; legacy QR flow opens a private local browser. Keeps an owner-only control socket in the system temp directory, plus pairing/owner state and shared local snapshots; reads selected profiles' session registries through private read-only imports. `hermes fleet reporting configure --apply` edits the selected profiles' config.yaml (with a backup). Local idle/retirement maintenance is explicit and not exposed to phones. Reporting adds no control power.","maintainer":"tony-simons-aiowa","tier":"community","category":"platform","requires_hermes":">=0.21.6","version":"0.3.0","readme":true,"platforms":["linux","macos"],"known_issues":["Native platform/auth-provider operation requires plugins.isolation: in_process; host-isolated and mixed/multiplexed reporting contexts fail closed. Isolation is never downgraded.","macOS local acceptance includes existing phone pairing continuity and nine healthy idle reporting processes; Linux and other runtime/OS results are separate CI evidence. Active agent/delegation acceptance is not claimed.","Private read-only Hermes registry imports can break on future releases. Validator retains a service caution and private-import warnings; no core runtime override is detected.","Trusted HTTPS origin reachable from host and phone is required. Legacy QR display additionally requires qrencode and an authenticated GUI/browser; terminal approval-code pairing does not require Telegram. Native Windows is unsupported; WSL browser display is experimental."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-gemini-live","repo":"https://github.com/skappafrost/hermes-gemini-live","sha":"cf549e7f8af858568936ccb434c7e1104eb200e9","description":"Realtime duplex voice with the Gemini Live API, built around handing real work to Hermes. A single control in the composer (not a floating panel): tap, speak, hear the model, and when the ask needs files, a terminal, the web or memory the voice model delegates the job to the api server and keeps talking, reading the outcome aloud when it lands. Three verbs rather than thirty schemas — hermes_task starts, hermes_tasks reads the call's task board, and hermes_task_update denies, steers or stops a task. A task that stops to ask permission reaches the user as a spoken prompt and a \"Hermes needs you\" indicator with Approve and Deny buttons; only the user's press approves it, never the voice model. Multi-task is one Live session plus a board, not a session per task. Mute drops the uplink without hanging up, and the call survives composer remounts, so opening a session mid-sentence does not kill it. Full-proxy architecture: the plugin backend owns the upstream Live socket and the key, and the renderer is never given either, because the Live API carries the credential in the socket URL. Ships no Python dependencies of its own, which keeps it out of the uv workspace and lets one clone serve several profiles. Tested model behaviour is published in the README, including that gemini-3.8-live-extended-thinking accepts a function declaration and then delegates only about 2 times in 5, which is why gemini-3.8-live is the default. Disclosure — pressing Start captures microphone audio and streams it through the local backend to generativelanguage.googleapis.com using GEMINI_API_KEY from the Hermes home's .env; delegated work runs as a Hermes run in the serving profile's own memory with the profile's full toolset via the local api_server and API_SERVER_KEY, and those runs' results (up to 4000 characters each), the task board and approval prompts are sent back to Gemini as text. Nothing is sent anywhere else and no telemetry is emitted.","maintainer":"skappafrost","tier":"community","version":"0.1.0","category":"voice","docs_url":"https://github.com/skappafrost/hermes-gemini-live#readme","requires_hermes":">=0.21.5","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["GEMINI_API_KEY"]}},{"name":"hermes-gensyn-delphi","repo":"https://github.com/TakeshiTGAL/hermes-gensyn-plugins","sha":"9325a7b15d815ca05983885ddd6615eae5f2b7a6","subdir":"packages/delphi","description":"Seven read-only tools. Disclosure — Seven read-only tools for Gensyn Delphi prediction markets; no funds move and nothing is signed or sent. Needs Node.js 20.18+ and a manual `npm ci --ignore-scripts` in the plugin folder (installs the pinned @gensyn-ai/gensyn-delphi-sdk and its locked npm deps) before the tools work. Runs a local Node subprocess per call (25 s deadline, not a sandbox). Sends your DELPHI_API_ACCESS_KEY only to delphi-api.gensyn.ai (testnet) or api.delphi.fyi (mainnet); history and quotes read api.goldsky.com and gensyn-testnet/mainnet.g.alchemy.com without the key, and quotes use a throwaway in-memory key the SDK requires. Tools are on for every surface by default, including messaging gateways, where anyone admitted can run these reads on the owner's key (rate limit 30 requests per minute per process); disable per surface with `hermes tools`.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","version":"0.2.0","platforms":["linux","macos"],"capabilities":{"provides_tools":["delphi_list_markets","delphi_get_market","delphi_get_positions","delphi_query_subgraph","delphi_compute_edge","delphi_quote_buy","delphi_quote_sell"],"provides_hooks":["transform_tool_result"],"provides_middleware":[],"requires_env":["DELPHI_API_ACCESS_KEY","DELPHI_NETWORK","DELPHI_WALLET_ADDRESS"]}},{"name":"hermes-gensyn-ree","repo":"https://github.com/TakeshiTGAL/hermes-gensyn-plugins","sha":"9325a7b15d815ca05983885ddd6615eae5f2b7a6","subdir":"packages/ree","description":"ree_validate_receipt, ree_verify_receipt, ree_infer. Validate does not re-execute and does not stand behind text_output, finish_reason, token_count, model.name, or ree_version. Verify re-executes on CPU. Infer runs one of three small models and writes one receipt. Disclosure — Starts containers from the local image gensynai/ree:v0.8.0 (pinned by digest) and never pulls it; running docker pull yourself is consent to the REE-Binary-License. ree_verify_receipt and ree_infer mount ~/.cache/gensyn and ~/.cache/huggingface read-write (a Hugging Face token file stored there is visible to the container; no token is passed in the environment), may download Hugging Face weights for any model a receipt names, and their container network is not limited to Hugging Face; they ask for Hermes approval on every call and refuse under cron, yolo, approvals off, single-query, unattended runs, host isolation, or when the approval API is missing. ree_validate_receipt runs with network none, does not ask, and returns no receipt text. Any person admitted to one of your gateways can call these tools and approve containers on your Docker daemon; disable per surface with hermes tools. Choosing \"always\" adds one config.yaml allowlist line per call and never covers the next call. New receipts and temporary work files are written under ~/.cache/hermes-ree; nothing is stored under HERMES_HOME. The container is not a hostile-code sandbox. No cron is created.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.6","version":"0.1.0","platforms":["linux","macos"],"capabilities":{"provides_tools":["ree_validate_receipt","ree_verify_receipt","ree_infer"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-guide","repo":"https://github.com/iap/hermes-guide","sha":"250cf3fca85f4e2368b00946ddd9bfaa42782a53","description":"Read-only diagnostics for Hermes configuration: /hermes-doctor in-session and hermes guide in a terminal. Eight read-only health checks (config, mcp, skills, commands, hooks, plugins, memories, sessions) and points to 21 troubleshooting skills, installed separately as a skills tap, for what the built-in doctor doesn't cover. Complements — never replaces — hermes doctor. Disclosure — reads config.yaml, SKILL.md frontmatter, skill bundles, plugin manifests, the shell-hooks allowlist and the built-in MEMORY.md/USER.md stores read-only (the report quotes short memory snippets); the sessions scope reads the tail of logs/agent.log read-only for runaway-session signatures (session ids, model names and token counts appear in the report); registers one read-only plugin skill, hermes-guide:start, listed in model sessions while the plugin is enabled; /hermes-doctor and hermes guide run hermes config path and hermes hooks doctor as subprocesses (argument list, no shell), and hermes hooks doctor executes every approved shell hook once with a synthetic payload; with opt-in proactive: true it runs the checks (including the agent.log scan) in-process at each session start/end (no hooks executed) and once per process runs git ls-remote against the plugin's GitHub repo to log a newer-release notice (no download, no local writes). The 21 troubleshooting skills are not loaded by the plugin: they install separately from the repo as a skills tap, which this entry's pin does not cover.","maintainer":"iap","tier":"community","category":"tools","requires_hermes":">=0.21","version":"0.7.2","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start (opt-in proactive mode)","on_session_end (opt-in proactive mode)"],"provides_middleware":[],"requires_env":[]},"docs_url":"https://github.com/iap/hermes-guide#readme"},{"name":"hermes-herald","repo":"https://github.com/bennybuoy/hermes-herald","sha":"1d185a9e0f4fbfa141447be401903cc80407e1cb","description":"Cross-profile agent dispatch for Hermes Agent — 12 tools for agents talking to agents: async dispatch with SSE completion, synchronous multi-turn chat, model-selectable in-process subagents, a durable SQLite run ledger, fail-closed per-target model-route discovery, and host-owned bare LLM inference. Disclosure — sends task text and bearer tokens to the Hermes API servers you configure (plaintext HTTP permitted, warn-only); stores full dispatch text in a local SQLite ledger; delegate_subagent may use any provider credential you have configured.","maintainer":"bennybuoy","tier":"community","category":"tools","requires_hermes":">=0.21.0","docs_url":"https://github.com/bennybuoy/hermes-herald#readme","version":"1.1.1","platforms":[],"capabilities":{"provides_tools":["dispatch_agent","check_dispatch","collect_dispatches","dispatch_status","dispatch_chat","cancel_dispatch","delegate_subagent","llm_call","llm_direct","ping_profile","approve_dispatch","list_profile_models"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-honcho-plugin","title":"Honcho Memory","repo":"https://github.com/outpoints/hermes-honcho-plugin","sha":"0323f5d6d0e1790aa801a0801cab8896f719b72b","description":"Desktop workbench for the Honcho memory behind the focused chat: read the newest conclusions, trace their premises, search messages, ask scoped questions, and add confirmed corrections or source files. Uses each profile's existing Honcho provider configuration. Disclosure — talks only to the Honcho server each profile is already configured for, through Hermes's own Honcho client and credentials, and polls it about every 10 seconds for the focused chat while Desktop is open. Ask runs a Honcho reasoning call that may use credits. Add fact/correction and Add to session write to Honcho only after you confirm the target in a dialog; Add to session uploads the text or PDF/JSON/text file you choose. A chat from another local profile is read with that profile's own Honcho configuration, only where this plugin is enabled. It reads the focused chat's title and folder from the profile's session database, read-only. No telemetry.","maintainer":"outpoints","tier":"community","category":"desktop","version":"0.4.1","requires_hermes":">=0.21.4","docs_url":"https://github.com/outpoints/hermes-honcho-plugin","image":"https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/banner.png","screenshots":["https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-memory.png","https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-ask.png","https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-correct.png","https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-pane.png","https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-messages.png","https://raw.githubusercontent.com/outpoints/hermes-honcho-plugin/0323f5d6d0e1790aa801a0801cab8896f719b72b/docs/catalog/gallery-status.png"],"readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-impossibl","repo":"https://github.com/impossiblco/hermes-impossibl","sha":"146805e4eabab33687fa2e34bbe959f0057f9497","description":"Impossibl, the AI gateway (100+ models from every major lab behind one OpenAI-compatible API), as a model provider","maintainer":"impossiblco","tier":"community","category":"models","docs_url":"https://github.com/impossiblco/hermes-impossibl#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["IMPOSSIBL_API_KEY"]}},{"name":"hermes-insight","repo":"https://github.com/BrokeSkill/Hermes-Insight","sha":"a61cdf643621ae106958f99078a17d94f9ea5289","subdir":"backend-plugin","description":"Selection-definition lookup for Hermes Desktop. Select any text, get an AI definition with sources in a popup. Renders the definition inline, runnable code aside. Backend is a stateless hermes insight CLI; panel, providers, and one-click model picking are configurable. Disclosure — definitions are generated with your configured provider keys (the selected term, your format template and optional web-search results are sent to that provider) via a short-lived `hermes insight` CLI run; no background process remains. When web search is on it also queries your configured searxng instance and fetches result thumbnails from their image hosts, inlining them into the panel; nothing is fetched without a searxng URL.","maintainer":"BrokeSkill","tier":"community","category":"desktop","version":"1.0.3","image":"https://raw.githubusercontent.com/BrokeSkill/Hermes-Insight/a61cdf643621ae106958f99078a17d94f9ea5289/assets/insight-banner-dark.png","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-iroh-interconnect","repo":"https://github.com/rahlquist/hermes-iroh-interconnect","sha":"c7d13769715f25d410696800a538d746952da50e","description":"Authenticated Hermes agent-to-agent tasks and optional file transfer over Iroh QUIC. Disclosure — tasks from a paired peer run in your live gateway agent with its full toolset; pairing is confirmed via the tool's confirm=true argument, not a UI prompt. Uses n0's public relays by default (HERMES_IROH_RELAY=off or a self-hosted URL for LAN-only). iroh_send_file can share any readable path the model names (credential-name denylist only, overridable with allow_sensitive); remote-triggered auto-fetch is off by default and confined to HERMES_IROH_AUTO_FETCH_DIR. The Rust sidecar is built locally with cargo, never downloaded.","maintainer":"Richard Ahlquist","tier":"community","category":"tools","docs_url":"https://github.com/rahlquist/hermes-iroh-interconnect","version":"0.3.1","platforms":["linux","macos"],"capabilities":{"provides_tools":["iroh_peer_status","iroh_peer_list","iroh_peer_pair","iroh_peer_make_ticket","iroh_send_file","iroh_fetch_file","iroh_transfer_status","iroh_peer_call","iroh_peer_settings"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-jailbreak-kernel","repo":"https://github.com/Enchanted0911/hermes-jailbreak-kernel","sha":"eca97e0659794a98602d3cbc679dd4d0907800b6","description":"Jailbreak-kernel plugin for Hermes Agent (ported from dsh-infinite-gen-4): session-scoped modes (off/slim/on/full) with kernel profiles (core/research/creative/max), session-aware system-prompt sections, llm_request request-layer system rebuild, and opencode session rotation, removing model refusals. Ships a /jailbreak command, a progressive-disclosure ops skill, and a 276-check offline self-test. Disclosure — llm_request middleware that, by default (`on`/`full` modes), replaces the system prompt on every request with a refusal-removal (\"jailbreak\") kernel plus only the memory and runtime-environment sections (agent rules, skills index, context files and other plugins' sections are dropped); `slim` appends it instead, and `off` passes requests through but strips all plugin prompt sections, including other plugins'. Rotates the x-opencode-session header on opencode routes. Writes a diagnostic dump per session (full system prompt incl. memory/persona text, plus the first 200 chars of every other message and the model/provider/base_url) to its own plugin dir (dumps/); `/jailbreak dump off` or `HERMES_JAILBREAK_DUMP=0` turns it off. No network, no exec.","maintainer":"Enchanted0911","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/Enchanted0911/hermes-jailbreak-kernel#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":["llm_request"],"requires_env":[]},"version":"2.0.1"},{"name":"hermes-jetstream","repo":"https://github.com/atbrace/hermes-jetstream","sha":"4508957d1889ddb625c8bfb1eef7c822f2761349","subdir":"plugin/hermes_jetstream","description":"NATS JetStream event bus: agents publish events (nats_publish), pull one batch (nats_fetch), and wake on subject matches — live-session watches or wake routes (config-declared or runtime-registered via jetstream_wake) with durable consumers, manual ack, an idempotent wake ledger and rate rails; an opt-in lifecycle tap mirrors Hermes events onto hermes.> subjects. Disclosure — connects only to the NATS servers in your own config (no third-party calls, no telemetry); the platform adapter holds persistent subscriptions and reconnect loops for the gateway's lifetime; token/nkey/user-pass secrets come from ${VAR} references read via the profile-scoped secret scope and a configured creds file is read from its path, never written or rotated; wake routes render event payloads into prompts that start gateway turns or fire an existing cron job (optionally under another named profile), the agent itself can add up to 16 durable wake routes with jetstream_wake that persist in plugin data across restarts (subject still limited to subscribe_allowed, no cron-job or cross-profile targets), and jetstream_watch injects matching events into the live session when allow_gateway_injection is on, so keep subscribe_allowed scoped to trusted publishers.","maintainer":"atbrace","tier":"community","category":"platform","requires_hermes":">=0.21.4","version":"1.2.0","readme":true,"platforms":[],"capabilities":{"provides_tools":["nats_publish","nats_fetch","jetstream_watch","jetstream_unwatch","jetstream_list","jetstream_status","jetstream_wake"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-jina","repo":"https://github.com/Adolanium/hermes-jina","sha":"98505951a3d26230dc30dfd47a502fcdc396f793","description":"Jina Reader web backend for web_extract (r.jina.ai, works without a key) and web_search (s.jina.ai, needs JINA_API_KEY). Unofficial; not affiliated with Jina AI.","maintainer":"Adolanium","tier":"community","category":"web","requires_hermes":">=0.21.6","docs_url":"https://github.com/Adolanium/hermes-jina#readme","version":"0.1.0","image":"https://raw.githubusercontent.com/Adolanium/hermes-jina/98505951a3d26230dc30dfd47a502fcdc396f793/assets/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["JINA_API_KEY"]}},{"name":"hermes-kame-api-rotation","repo":"https://github.com/Kame696/kame-api-rotation-for-hermes","sha":"cab5372d18d233da905c9f84a343359d2bc26564","subdir":"hermes-kame-api-rotation","description":"Smart API key rotation: the healthiest key for every call, each 429 / RESOURCE_EXHAUSTED / quota refusal sized from its own evidence. Install with its companion hermes-kame-provider, which hands Hermes this plugin's rotating client through ProviderProfile.create_client (and create_messages_client where Hermes offers it); no core override. Disclosure — /kame-keys add|import|split, and on start a key variable holding several comma-joined keys, write one auth.json pool row per key through Hermes' pool API after a plaintext backup (last 5 kept; switch: resolver_disabled); key-redacted, size-capped owner-only local logs and a status file per profile; the Desktop panel reads that file and queues its settings requests through its own dashboard/plugin_api.py route (GET /state, POST /control, this plugin's plugin-data folder only); while every key is resting, chats (CLI, Desktop, messaging gateway) keep waiting with no total limit (each key's rest capped by max_hold_seconds) and cron runs give up after 300 s with the provider's refusal unless max_total_wait_seconds is set.","maintainer":"Kame696","tier":"community","category":"models","requires_hermes":">=0.21.4","version":"1.8.2.2","docs_url":"https://github.com/Kame696/kame-api-rotation-for-hermes/tree/v1.8.2.2#readme","image":"https://raw.githubusercontent.com/Kame696/kame-api-rotation-for-hermes/cab5372d18d233da905c9f84a343359d2bc26564/assets/kame-banner.png","screenshots":["https://raw.githubusercontent.com/Kame696/kame-api-rotation-for-hermes/cab5372d18d233da905c9f84a343359d2bc26564/assets/panel-overview.png","https://raw.githubusercontent.com/Kame696/kame-api-rotation-for-hermes/cab5372d18d233da905c9f84a343359d2bc26564/assets/panel-events.png","https://raw.githubusercontent.com/Kame696/kame-api-rotation-for-hermes/cab5372d18d233da905c9f84a343359d2bc26564/assets/panel-settings.png"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":["transform_api_error_classification","post_api_request","on_session_reset"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-kame-provider","repo":"https://github.com/Kame696/kame-api-rotation-for-hermes","sha":"cab5372d18d233da905c9f84a343359d2bc26564","subdir":"hermes-kame-provider","description":"Companion to hermes-kame-api-rotation (install both). A model-provider plugin that re-registers Hermes' bundled API-key profiles unchanged except for create_client and create_messages_client, which return the rotation plugin's key-rotating client; otherwise None and Hermes builds its own. Same endpoints as Hermes, no third-party service, no core override.","maintainer":"Kame696","tier":"community","category":"models","requires_hermes":">=0.21.4","version":"1.8.2.2","docs_url":"https://github.com/Kame696/kame-api-rotation-for-hermes/tree/v1.8.2.2/hermes-kame-provider#readme","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-ca","repo":"https://github.com/jordimas/hermes-lang-ca","sha":"034cb32941d0471e78c287e7d8f5610f1ac6d85b","description":"Catalan (Català) language pack for Hermes Agent — UI translation for core (CLI, gateway, approval prompts and tips), TUI and Desktop. Covers all text-overridable catalog keys; preserves command syntax and non-text Desktop values. Manifest-only plugin, no code execution, no network. Disclosure — text-only catalogs; registering the pack never changes display.language, the user opts in via config.","maintainer":"jordimas","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/jordimas/hermes-lang-ca#readme","version":"0.2.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-el","repo":"https://github.com/axiom-agent-ai/hermes-lang-el","sha":"d290234075dc14a701c69706f7f89ea26bff7d09","description":"Greek (Ελληνικά) language pack for Hermes Agent — Desktop UI (~5,060 of 5,065 keys) plus the 102 most visible core CLI slash-command descriptions; missing keys fall back to English. TUI and the remaining core CLI strings are not covered yet. Disclosure — text-only catalogs; registering the pack never changes display.language, the user opts in via config.","maintainer":"axiom-agent-ai","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/axiom-agent-ai/hermes-lang-el#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-it-full","repo":"https://github.com/gradia64/hermes-lang-it-full","sha":"b6a599c2f52ea90b40d48b1eef2cfd7f55395f3c","description":"Italian (Italiano) language pack for Hermes Desktop — 5,082 of 5,085 keys on main (firstRun, themePicker, connector accounts and the update-channel picker included; the 3 the pack format rejects are array/object leaves that fall back to English). Core, CLI and TUI keep the Italian catalogs already bundled with Hermes. Generated from the hand-reviewed typed catalog maintained in gradia64/hermes-agent (gradia-desktop-it branch); function-backed keys ship as positional {0} templates. Independent community translation, unrelated to hermes-lang-it. Disclosure — text-only catalogs plus an __init__.py whose register() is a no-op (kept so Desktop \"Install from Git\" accepts the pack, #138118); registering the pack never changes display.language, the user opts in via config.","maintainer":"gradia64","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/gradia64/hermes-lang-it-full#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-it","repo":"https://github.com/Lazzdaycod/hermes-lang-it","sha":"21fa60e724ffb74a9d3b90375eb51f5e6a71c6d3","description":"Italian (Italiano) language pack for Hermes Agent — UI translation for core (approval prompts, gateway/slash replies, CLI, tips), TUI and Desktop. Coverage: core 3437/3437, TUI 1259/1259 and Desktop ~5,000 keys (missing ones fall back to English). Parser-safe: hard-parsed menu brackets and [Y/n] prompts stay verbatim; placeholders, URLs and CLI flags preserved. Manifest-only plugin, no code execution, no network. Traduzione italiana dell'interfaccia Hermes Agent. Disclosure — text-only catalogs; registering the pack never changes display.language, the user opts in via config.","maintainer":"Lazzdaycod","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/Lazzdaycod/hermes-lang-it#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-ko","repo":"https://github.com/dandacompany/hermes-lang-ko","sha":"d22f3e08489b0640d0c618760c51172d3cffd27e","description":"Korean (한국어) language pack for Hermes Desktop — Desktop UI (4,962 of 5,065 keys on v0.21.7, 4,982 of 5,085 on main); CLI, gateway and TUI keep the Korean catalogs already bundled with Hermes. Independent translation from the English source; values identical to English are omitted so missing strings fall back to English. Disclosure — text-only catalogs plus an __init__.py whose register() is a no-op (kept so Desktop \"Install from Git\" accepts the pack, #138118); registering the pack never changes display.language, the user opts in via config.","maintainer":"dandacompany","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/dandacompany/hermes-lang-ko#readme","version":"0.2.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-pt-br","repo":"https://github.com/StudioCodeAI/hermes-lang-pt-br","sha":"b0eab60fc41392a0fe652c0b2d2f53a0d07feb9d","title":"Brazilian Portuguese (Português do Brasil) Language Pack","description":"Brazilian Portuguese (pt-BR) language pack for Hermes Agent covering all three UI surfaces — core CLI/gateway/platforms (3,436/3,436 keys), the Ink TUI (1,346/1,346) and the Desktop app (5,106/5,106). Every catalog is complete against the English source of `main`: no missing key, no key upstream has since removed, and zero placeholder divergence — checked with `hermes plugins validate` and with the pack's own `tools/verify_pack.py`, which also runs as public CI on every push. Core and TUI mirror the bundled `pt` locale, registered as a real `pt-br` variant so it wins over the `pt`/`pt-BR` alias; the Desktop catalog is the original contribution, since the Desktop app ships no Portuguese at all. Manifest-only plugin: flat dotted YAML catalogs under locales/, no code, no network, no dependencies. Registering the pack never changes display.language — the user opts in via `hermes config set display.language pt-br`. A weekly drift workflow reports when `main` adds or drops keys; nothing self-updates. Tradução pt-BR da interface do Hermes Agent.","maintainer":"StudioCodeAI","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/StudioCodeAI/hermes-lang-pt-br#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lang-th","repo":"https://github.com/shoesroom13/hermes-lang-thai","sha":"0c2f11bba4225fca17c7bf348c350bf55c3fdc18","title":"Thai (ภาษาไทย) Language Pack","description":"Thai (ภาษาไทย) language pack covering all three Hermes UI surfaces — Desktop (5,023/5,030), core CLI/gateway/platforms (3,437/3,437), and the Ink TUI (1,259/1,259) — 9,719/9,725 keys total (99.9%). All three catalogs checked against the English reference with `hermes plugins validate`. Manifest-only plugin: flat nested YAML overlays under locales/, no code, no network, no dependencies. Registering the pack never changes display.language — the user opts in via `hermes config set display.language th`. Disclosure — text-only catalogs (no code, network or dependencies); untranslated keys fall back to English: the 7 array/conditional Desktop keys listed in the repo README, plus strings Hermes added after the pack was built.","maintainer":"shoesroom13","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/shoesroom13/hermes-lang-thai#readme","version":"1.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"screenshots":["https://raw.githubusercontent.com/shoesroom13/hermes-lang-thai/0c2f11bba4225fca17c7bf348c350bf55c3fdc18/screenshots/desktop-th.png"]},{"name":"hermes-lang-vi","repo":"https://github.com/moken627-hub/hermes-lang-vi","sha":"79bbcf3646b54976af72ea2e2c46b8af9d9d209f","description":"Vietnamese (Tieng Viet) language pack for Hermes Agent — full UI translation across every surface: core (approval prompts, gateway/slash replies, CLI, tips), TUI, and Desktop catalogs. Checked against the English catalogs with hermes plugins validate. Parser-safe: hard-parsed menu brackets and [Y/n] prompts stay verbatim; placeholders, URLs and CLI flags preserved; multi-line values use real newlines exactly like the English catalogs. Manifest-only plugin, no code execution, no network. Ban dich tieng Viet day du cho toan bo giao dien Hermes Agent. Disclosure — text-only catalogs; registering the pack never changes display.language, the user opts in via config.","maintainer":"moken627-hub","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/moken627-hub/hermes-lang-vi#readme","version":"1.1.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-lcm-x","title":"LCM-X","repo":"https://github.com/electricsheephq/lcm-x","sha":"709099b3a397a7893a7abae8802ebe7bf605f79e","description":"Lossless memory for long sessions: LCM-X keeps every turn in a local store instead of compacting it away, and the agent can search and expand it. The store is local SQLite (lcm.db) with a recoverable DAG of summaries over it and 15 lcm_* tools for search, recall and expansion. Select it with context.engine: lcm-x. Upgrading from hermes-lcm (breaking in v0.24.0): stop Hermes, then in plugins.enabled replace hermes-lcm with hermes-lcm-x and run exactly one LCM copy (the install script prints the steps; the old engine name lcm still resolves with a deprecation warning); lcm.db and the lcm: config block are unchanged. Summaries use the model Hermes is configured with. Disclosure — optional semantic recall (embeddings_enabled, off by default) sends message text to the embedding provider you configure (Voyage via VOYAGE_API_KEY, an OpenAI-compatible endpoint, or a local Ollama), and once enabled new summaries are embedded automatically in the background; in-process FastEmbed keeps it on the machine after a one-time model download. For known cloud providers the provider-bound copy is privacy-transformed by default (LCM_EMBEDDING_PRIVACY_ENABLED=false opts out), while lcm.db keeps the raw text. Every turn (user, assistant and tool output) is stored in plaintext in lcm.db (secret redaction at rest is opt-in), and oversized tool outputs are by default written as plaintext files under HERMES_HOME/lcm-large-outputs and replaced in the model's context by recoverable references. The engine also reads Hermes' state.db read-only for session lineage, reads private AIAgent attributes via the call stack on Hermes builds without subagent hooks, and runs git on its own install directory for lcm_status/lcm_doctor; tiktoken may fetch its BPE file on first use.","maintainer":"100yenadmin","tier":"community","category":"memory","requires_hermes":">=0.21.3","docs_url":"https://github.com/electricsheephq/lcm-x#readme","version":"0.28.0","image":"https://raw.githubusercontent.com/electricsheephq/lcm-x/7df332fd6113a15b2c5175d215f73365f7e42b6e/docs/media/banner.png","platforms":[],"capabilities":{"provides_tools":["lcm_grep","lcm_recall","lcm_query_state","lcm_compute","lcm_compile_evidence","lcm_evidence_pack","lcm_retrieve","lcm_recent","lcm_load_session","lcm_describe","lcm_expand","lcm_expand_query","lcm_status","lcm_inspect","lcm_doctor"],"provides_hooks":["pre_llm_call","post_llm_call","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-ledgerline","repo":"https://github.com/Adolanium/hermes-ledgerline","sha":"fa28160845d530ecbd5b9559c0f960a8c589dfb2","version":"0.1.8","image":"https://raw.githubusercontent.com/Adolanium/hermes-ledgerline/fa28160845d530ecbd5b9559c0f960a8c589dfb2/assets/catalog-banner.png","description":"Inspect session costs and usage in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-ledgerline#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-live-voice","repo":"https://github.com/Synero/hermes-live-voice","sha":"0578e0cc35022a9dcb469cb9fbfc4d8afc93fc65","version":"0.2.6","description":"Full-duplex Live Voice for Hermes Desktop — GPT-Live-1 on the ChatGPT/Codex subscription via the local Codex app-server, with live transcript, voice tool calls and task delegation to the user chat. Disclosure — subscription voice uses your Hermes openai-codex sign-in through Hermes-signed requests (requires_auth; the plugin never holds or refreshes the token) to mint OpenAI Realtime client secrets, and the usage panel reads Hermes's own account-usage fetcher; the gpt-live-1 lane runs the local codex app-server on the Codex CLI's own login, and the dashboard can run codex login --device-auth, copying ~/.codex/auth.json (or $CODEX_HOME) to a backup before that login, restoring the backup if the login is cancelled, and reading the file read-only for sign-in status; with TALK_OPENAI_API_KEY or OPENAI_API_KEY set it uses that key instead; if hermes-talk is installed it loads that plugin's modules from ~/.hermes/plugins/hermes-talk and substitutes its own talk_auth; voice audio goes to OpenAI over WebRTC, and spoken tasks are submitted as messages in your focused chat.","maintainer":"Synero","tier":"community","category":"voice","requires_hermes":">=0.21.7","docs_url":"https://github.com/Synero/hermes-live-voice","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-loadout","repo":"https://github.com/qwertyuiop97/hermes-loadout","sha":"e31ad580756a6481d38fac0b18ddc3fd0239d124","description":"Desktop pane to manage skills and MCP connections across agent apps: save named loadouts, review changes, apply them, and undo the latest managed operation. Agent half is inert (no tools or hooks). Disclosure — MCP sync copies your Hermes mcp_servers env/header secrets into ~/.codex/config.toml and claude_desktop_config.json (with 0600 backups).","maintainer":"qwertyuiop97","tier":"community","category":"desktop","docs_url":"https://github.com/qwertyuiop97/hermes-loadout#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-memory-ui","repo":"https://github.com/xraysight/hermes-memory-ui","sha":"8f798101a61a33e16f38eb22c3b1ad50ef9484a1","version":"0.6.4","description":"Read-only Hermes Dashboard and Desktop plugin for inspecting built-in, holographic, Mem0, Honcho, Mnemosyne, Hindsight, and ByteRover memory. Disclosure — reads the active profile's memory files, provider configs and provider API keys (keys are never returned to the UI), and on user action sends search/recall/reflect queries with configured bank/peer/user IDs to the configured Mem0, Honcho and Hindsight endpoints (Hindsight Cloud default api.hindsight.vectorize.io) using those keys; ByteRover queries run the local `brv` CLI; for a local embedded Hindsight setup a contents read may start the `hindsight-embed` daemon; no memory is written.","maintainer":"xraysight","tier":"community","category":"desktop","docs_url":"https://github.com/xraysight/hermes-memory-ui#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-memory-wiki","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"abec9e822a23089943dd1d476a104bf746f19f86","subdir":"memory-wiki","description":"Memory Wiki dashboard tab: browsable subject pages and daily logs derived from local session history, plus a read-only Persistent Memory (MEMORY.md / USER.md) audit panel.","maintainer":"NousResearch","tier":"official","requires_hermes":">=0.21","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/memory-wiki","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/abec9e822a23089943dd1d476a104bf746f19f86/assets/memory-wiki.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-minimizer","title":"Minimizer","repo":"https://github.com/nosliwhtes/hermes-minimizer","sha":"d209ed0824e2787cd6454bd4b060dbf0381b7b79","description":"YAGNI coding and code-review guidance for Hermes: reduce over-engineering, reuse existing behavior, and preserve requirements. One static prompt section; no tools or hooks.","maintainer":"nosliwhtes","tier":"community","category":"general","requires_hermes":">=0.22.0","version":"0.1.1","docs_url":"https://github.com/nosliwhtes/hermes-minimizer/blob/d209ed0824e2787cd6454bd4b060dbf0381b7b79/README.md","image":"https://raw.githubusercontent.com/nosliwhtes/hermes-minimizer/d209ed0824e2787cd6454bd4b060dbf0381b7b79/docs/assets/minimizer-demo.png","screenshots":["https://raw.githubusercontent.com/nosliwhtes/hermes-minimizer/d209ed0824e2787cd6454bd4b060dbf0381b7b79/docs/assets/minimizer-demo.png"],"readme":true,"platforms":[],"known_issues":["Guidance is advisory, not enforcement; existing session prompts may retain it after disabling."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-mobile","repo":"https://github.com/geniok1980/hermes-mobile-adapter","sha":"91bdca089770c3ad83f157e2932d8c3d9ed55a6a","subdir":"adapter/hermes_mobile","title":"Hermes Mobile Adapter","description":"WebSocket platform for your own mobile, desktop or web app: it talks to the agent directly — text, voice, images, video and documents in both directions, approval/clarify/slash cards answered from the app, streaming edits, typing and avatar state events, cron delivery to a chosen device. On request it also answers command-catalog and model-list frames (commands from the agent's own registry, models from its model inventory) so a client renders command and model pickers from the agent's data instead of bundling a snapshot; auto-push after ready is off by default (MOBILE_CATALOG_AFTER_READY=1). Ships TypeScript and Python SDKs, platform guides and an acceptance checklist. Disclosure — opens a listening WebSocket server (plain ws://, no built-in TLS; 127.0.0.1:8787 by default, the wildcard address only when set, behind a wss proxy) guarded by MOBILE_TOKEN plus optional per-device tokens; anyone holding an unbound token can chat with the agent, run slash commands and answer the approval and clarify cards of the device id they connect as; device_id=token entries bind a token to one device. deliver frames are accepted only from loopback peers or MOBILE_DELIVER_TOKENS. Inbound media is written under $HERMES_HOME/mobile-media; secrets are read through Hermes's profile-scoped route; approvals resolve through Hermes's own resolvers; no telemetry, no third-party network calls, no self-update.","maintainer":"geniok1980","tier":"community","category":"platform","requires_hermes":">=0.21.6","docs_url":"https://geniok1980.github.io/hermes-mobile-adapter/","version":"1.1.1","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MOBILE_TOKEN"]}},{"name":"hermes-monitor","repo":"https://github.com/mr-3mm3/hermes-monitor","sha":"ec6a3ada338ca3e06fbfc246bc672c3c776b0988","version":"0.3.5","description":"Kanban worker health in the Desktop status bar — live activity per running card with stall and loop detection (same tool + same arguments repeated), plus a compact per-provider quota readout (the related ai-usage-tracker plugin covers quota windows as a standalone feature). Zero model tokens. Disclosure — opens HERMES_HOME/kanban.db and each profile's state.db read-only for worker activity; for quota chips it reads every Hermes profile's credential pool (each profile's auth.json, with that profile's .env as secret scope) into read-only snapshots plus DEEPSEEK_API_KEY from the environment or .env files, and calls Hermes' own account-usage fetchers for each configured provider (Anthropic, Codex, OpenRouter, DeepSeek at https://api.deepseek.com/user/balance, and any provider plugin exposing fetch_account_usage), sending each entry's own token only to its own provider. The plugin never refreshes or persists a credential; on a Codex HTTP 401, Hermes core may refresh the active profile's matching Codex token via OpenAI's token endpoint and rewrite that profile's auth.json. No other network egress.","maintainer":"Hermes Monitor contributors (independent of Nous Research)","tier":"community","category":"desktop","requires_hermes":">=0.21","platforms":["linux","macos"],"docs_url":"https://github.com/mr-3mm3/hermes-monitor","screenshots":["https://raw.githubusercontent.com/mr-3mm3/hermes-monitor/ec6a3ada338ca3e06fbfc246bc672c3c776b0988/docs/footer.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-monitoring-dashboard","title":"Monitoring Dashboard","repo":"https://github.com/austinpickett/hermes-monitoring-dashboard","subdir":"plugin","sha":"96d6881d7242e0fd9240a3040ad3266ed6c2492e","version":"1.0.1","description":"Prompt-customizable desktop dashboard with live host metrics, session activity, clocks, calendars, and text widgets. Disclosure — polls ~/monitoring-dashboard on the desktop device through the Desktop native file bridge, and its Reset command moves only the dashboard's own page/panel marker files in that folder to the OS trash (never dashboard.json or the folder); host metrics and session activity stay on the machine.","maintainer":"austinpickett","tier":"community","category":"desktop","docs_url":"https://github.com/austinpickett/hermes-monitoring-dashboard/blob/96d6881d7242e0fd9240a3040ad3266ed6c2492e/plugin/README.md","image":"https://raw.githubusercontent.com/austinpickett/hermes-monitoring-dashboard/96d6881d7242e0fd9240a3040ad3266ed6c2492e/assets/hermes-cyanotype.jpg","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-mpp","repo":"https://github.com/tempoxyz/hermes-mpp","sha":"a0782b7024ad0256cceede338754b466ded1df06","version":"0.1.3+a0782b7","subdir":"src/hermes_mpp","description":"Pay supported HTTP 402 MPP challenges on Tempo through mpp_fetch and in-process HTTPX clients. Uses a dedicated wallet. Disclosure — with MPP_ALLOWED_ORIGINS unset, any supported HTTP 402 MPP challenge returned to core HTTPX traffic (not only mpp_fetch) is auto-paid from the Tempo wallet with no per-payment cap or confirmation; the origin allowlist is the operator's control.","maintainer":"tempoxyz","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/tempoxyz/hermes-mpp#native-plugin-installation","capabilities":{"provides_tools":["mpp_fetch"],"provides_hooks":[],"provides_middleware":[],"requires_env":["TEMPO_PRIVATE_KEY"]}},{"name":"hermes-muse-code","repo":"https://github.com/TheStreamCode/hermes-muse-code","sha":"e33501185e328b5597fd98c6de916495922ec727","description":"Muse Spark in Hermes billed to the Muse Code monthly login (device-code login, no API key).","maintainer":"TheStreamCode","tier":"community","category":"models","requires_hermes":">=0.21.3","docs_url":"https://github.com/TheStreamCode/hermes-muse-code","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-muse","repo":"https://github.com/xiaohei-info/hermes-muse","sha":"0dade28130b6901dfa2dd81a067856441948d33c","version":"0.3.1","description":"A proactive companion for Hermes: follows accepted goals (active/done/cancelled), prepares sourced research and Feed articles, maintains memory, and assembles rolling 30-day or natural-month calendar views. Read-only local Dashboard/Desktop pages show Feed, Ideas and Goals; profile selection cannot install, enable or disable Muse in any profile. One Skill, one state tool and six fixed recurring jobs; selected notices and weekly/monthly reports go to the active profile's Bot Chat and run an assistant turn there. Sources, authorization, quiet hours and actual result/delivery receipts remain distinct; partial coverage is not global availability. Disclosure: first load creates profile-local files/SQLite state and owned Cron scripts/jobs. Private/local input inbox rows retain their first 8000 characters and source identities, with associated chat/user routing IDs when present. The newest 500 remain; older rows are cleaned on later input only after both hourly/nightly cursors cover them. Unprocessed backlog can exceed 500 and has no fixed retention time. Native conversations/tool results are read separately; research records can retain returned payloads. Idempotency journals and oversized tool results stay in the profile state database without automatic expiry and may contain written content or tool output. Bounded conversation previews support full revision-checked paging. Delegates are instructed to remain read-only under inherited permissions, not sandboxed. Workers always use public delegate_task dispatch and follow the user's delegation settings; leave delegation.provider/model empty to keep the parent model. New Cron watches require cron.allow_agent_scheduling; local goal registration creates no job. Watch prompt/stop fields each allow 4000 characters; new repeating watches (interval or cron) must be at least 30 minutes apart, one-off schedules are exempt. Windows is not supported (POSIX file locks) and CI does not cover it. Background work incurs normal model/tool costs. No telemetry, self-updater, mandatory service, core/SOUL replacement or phone/read-receipt guarantee. Native remove retains data/tasks for the documented owned-only cleanup.","maintainer":"xiaohei-info","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/xiaohei-info/hermes-muse/blob/0dade28130b6901dfa2dd81a067856441948d33c/README.md","platforms":["linux","macos"],"capabilities":{"provides_tools":["muse_manage"],"provides_hooks":["pre_llm_call","post_llm_call","transform_llm_output","on_session_end","post_tool_call","on_skill_lifecycle"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-newswire","repo":"https://github.com/tony-simons-aiowa/hermes-newswire","sha":"e6b438ee617f9b3c1ef9fe008cce2b7291abd949","description":"Breaking-news ticker for Hermes Desktop: a scrolling RSS/Atom/JSON-Feed strip above the statusbar with per-source favicons, feed search + discovery, grouping modes, offline cache, and in-app reading. Zero API keys, zero model tokens.","maintainer":"tony-simons-aiowa","tier":"community","category":"desktop","requires_hermes":">=0.19","docs_url":"https://github.com/tony-simons-aiowa/hermes-newswire","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-nous-prices","repo":"https://github.com/Adolanium/hermes-nous-prices","sha":"e2e8639300f4e2bd18f14b39710d2c3436805235","version":"0.1.2","image":"https://raw.githubusercontent.com/Adolanium/hermes-nous-prices/e2e8639300f4e2bd18f14b39710d2c3436805235/assets/catalog-banner.png","description":"Browse Nous Portal model prices and account balances in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-nous-prices#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-office","repo":"https://github.com/Adolanium/hermes-office","sha":"ae956aa756e4b75768dc850ff999dae94520e78e","description":"View and manage Bot Mode agents in a shared office in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-office#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-office/ae956aa756e4b75768dc850ff999dae94520e78e/assets/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-openwhispr","repo":"https://github.com/mooserini/hermes-openwhispr","sha":"636314f33376616d3a39815eb63b8a0f06900f3b","description":"Local-first OpenWhispr dictation history and shared notes for Hermes agents: find what the user said, search notes, transcribe local audio. Free local desktop bridge by default, paid cloud opt-in only. Skill-carrier plugin, no tools or hooks registered. Disclosure — skill only: the agent runs the external OpenWhispr CLI (installed with an unpinned `npm install -g @openwhispr/cli`) through the terminal tool to read your dictation history and notes over the OpenWhispr desktop app's authenticated loopback bridge, and, with your consent each time, to create, update or delete notes, transcriptions and dictionary entries and to transcribe local audio files; OpenWhispr Cloud (api.openwhispr.com, including an email-code sign-in that mints an API key kept in the CLI's own config) is used only when you opt in; the agent never opens credential files itself.","maintainer":"mooserini","tier":"community","category":"voice","docs_url":"https://github.com/mooserini/hermes-openwhispr#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-opper","repo":"https://github.com/opper-ai/hermes-opper","sha":"2e15f465b4c2a107fd0230611ebc1e5a7586a196","description":"Opper, the EU-hosted AI gateway (700+ models behind one OpenAI-compatible API), as a model provider","maintainer":"opper-ai","tier":"community","category":"models","docs_url":"https://github.com/opper-ai/hermes-opper#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPPER_API_KEY"]}},{"name":"hermes-pantheon","title":"Pantheon","repo":"https://github.com/Adolanium/hermes-pantheon","sha":"c19043955225211d199921c21b4f8440ad0d6b98","description":"Eighteen Hermes Desktop themes in dithered classical marble, one god each: all twelve Olympians plus Hades, Nyx, Helios, Selene and Medusa. Install once, then switch with /skin <name>. Disclosure — theme-only desktop plugin: it registers eighteen themes through the plugin SDK, and their stylesheets restyle parts of Desktop's own UI (sidebar art, tabs, composer, wordmark) only while a Pantheon theme is active. Fonts and art are bundled; no network requests, no agent tools or hooks.","maintainer":"Adolanium","tier":"community","category":"desktop","requires_hermes":">=0.22.2","docs_url":"https://github.com/Adolanium/hermes-pantheon#readme","version":"0.3.0","image":"https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/assets/catalog-banner.png","screenshots":["https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/olympus.png","https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/hera.png","https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/mars.png","https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/demeter.png","https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/hades.png","https://raw.githubusercontent.com/Adolanium/hermes-pantheon/c19043955225211d199921c21b4f8440ad0d6b98/media/shots/caduceus.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-pets-all","repo":"https://github.com/poponline63/hermes-pets-all","sha":"2130957d3d84d68f2e367c7aa2f52a61bf3c8064","description":"Browse every pet installed for this Hermes profile in its own desktop pane (thumbnails, search, click-to-adopt), plus a read-only list_pets tool for the agent.","maintainer":"poponline63","tier":"community","category":"desktop","requires_hermes":">=0.19","docs_url":"https://github.com/poponline63/hermes-pets-all","platforms":[],"capabilities":{"provides_tools":["list_pets"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-pickup","repo":"https://github.com/murenovich/hermes-pickup","sha":"dc9b2b9b24b194f6d9b2f17f8bd4c7fa73105a5d","description":"Pick up where you left off: up to 10 cards (5 by default) of unfinished work from your recent Hermes chats, project folders and files, each with where you stopped and a one-click next step. Adapted from Herald OS by Luke (iamlukethedev), MIT. Disclosure — after explicit in-app consent (stored per profile), each Refresh reads recent chats from every profile's session store (read-only; profiles the user skips in Settings are never opened) and sends chat excerpts and metadata, project/file names and paths, git branch/changed-file names and recent commit subjects to the current profile's Hermes LLM route (the auxiliary title-generation model, main provider unless configured); runs read-only git and, on macOS, Spotlight `mdfind`; never reads document contents; writes only $HERMES_HOME/pickup/. The \"Next step\" button can submit a model-written prompt straight into the card's chat in one click. The optional install.sh, when asked, adds the plugin to every profile's plugins.enabled (undone exactly by uninstall.sh).","maintainer":"murenovich","tier":"community","category":"desktop","requires_hermes":">=0.20.0","docs_url":"https://github.com/murenovich/hermes-pickup#readme","version":"0.2.0","screenshots":["https://raw.githubusercontent.com/murenovich/hermes-pickup/dc9b2b9b24b194f6d9b2f17f8bd4c7fa73105a5d/docs/screenshot.png"],"known_issues":["On installs with several profiles, Hermes issue #134712 can make the Desktop backend answer Plugin not found; the page explains the fix (enable hermes-pickup in every profile, then restart Desktop)."],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-pii","repo":"https://github.com/lukefx/hermes-pii","sha":"bd6c8e5dea1d709ff3182cb78ceb141e7c06ab5c","description":"Uses local Presidio and spaCy to redact supported PII in outgoing user text. Disclosure — filters Chat Completions user messages and Responses user input locally; system prompts, tool outputs and tool-call arguments are preserved. Fail-open: detector errors, including a missing model, send original text. Install spaCy en_core_web_sm 3.8.0 separately from its GitHub release wheel in the Hermes Python environment before enabling; Hermes installs only the named PyPI dependencies. No runtime model downloads or remote detection.","maintainer":"lukefx","tier":"community","category":"tools","version":"0.1.0.dev2","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"hermes-plex-music","repo":"https://github.com/imzacksong/hermes-plex-music","sha":"c583d6fdaac61d2108bada99b275460b4d08a993","description":"Mini-Plexamp for Hermes Desktop: statusbar player for your Plex music library — likes synced to Liked Songs, custom playlists with rename/delete, shuffle + repeat, sleep timer, queue editing, OS media keys. Needs only Plex Media Server. Zero API keys, zero model tokens. Disclosure — talks only to the Plex Media Server you configure (default http://127.0.0.1:32400), sending your Plex token in the request URL as Plex requires; the token is stored in Desktop plugin storage, and the optional \"Get token…\" button reads the Plex `.LocalAdminToken` file you pick. Likes and playlist create/rename/delete write to your Plex server. No agent tools, no telemetry.","maintainer":"imzacksong","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/imzacksong/hermes-plex-music","platforms":["windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-plugin-chrome-profiles","repo":"https://github.com/anpicasso/hermes-plugin-chrome-profiles","sha":"03d24e95e7b14125c5227797a3a6682c3d890c84","description":"Switch Hermes browser tools to a named Chromium-family profile (Chrome, Edge, Brave), local or remote, over CDP.","maintainer":"anpicasso","tier":"community","category":"web","docs_url":"https://github.com/anpicasso/hermes-plugin-chrome-profiles","version":"2.0.0","platforms":[],"capabilities":{"provides_tools":["browser_profile"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-plugin-gen","repo":"https://github.com/iruzen-dono/hermes-plugin-gen","sha":"75899f960d8358731255172add8232344c9084b8","description":"Generate, scaffold, and extend Hermes Agent plugins from simple descriptions.","maintainer":"iruzen-dono","tier":"community","category":"tools","docs_url":"https://github.com/iruzen-dono/hermes-plugin-gen#readme","capabilities":{"provides_tools":["plugin_add_skill","plugin_add_tool","plugin_scaffold"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-plugin-guard","repo":"https://github.com/mauricemohr88-debug/hermes-plugin-guard","sha":"857d881be77249c192c5fefa8254db186a7abbca","description":"Static review of candidate Hermes plugins; target code is never executed.","maintainer":"mauricemohr88-debug","tier":"community","category":"tools","docs_url":"https://github.com/mauricemohr88-debug/hermes-plugin-guard#readme","capabilities":{"provides_tools":["plugin_guard_review_candidate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-plugin-netbox","repo":"https://github.com/andrewvieyra/hermes-plugin-netbox","sha":"8ff1fc408e765294664e6ed96c4a5a437b76ceef","description":"NetBox change management: query DCIM/IPAM objects, build a reviewed field-level diff, apply with a journal and roll back.","maintainer":"andrewvieyra","tier":"community","category":"tools","docs_url":"https://github.com/andrewvieyra/hermes-plugin-netbox","platforms":[],"capabilities":{"provides_tools":["netbox_query","netbox_plan","netbox_apply","netbox_rollback","netbox_plans"],"provides_hooks":[],"provides_middleware":[],"requires_env":["NETBOX_URL","NETBOX_TOKEN"]}},{"name":"hermes-pokemon","repo":"https://github.com/sxuff/hermes-pokemon","sha":"a3d9f57f345a744825b59432c343d07d4f508a24","version":"0.7.0","title":"Hermes Pokémon","description":"A cozy pixel-art companion garden for Hermes Desktop with three starters, nicknames, fetch, berries, XP, and optional evolution through all nine starter forms. The companion keeps you company on long turns, reacts quietly to failures, to what Hermes is doing and to turns finishing in other chats, and lives through seasons with real day length and moon phases, offline showers, wild visitors it greets in character, old-friend cameos, keepsakes, milestones that leave a bench, a lantern and bunting in the garden, and a sapling that grows with the days. Reachable from the keyboard, the status bar and the command palette. Independent fan project bundling CHUNSOFT Pokémon sprites and SpriteCollab community contributions; artwork is excluded from the source-code MIT license. Uses local plugin storage and read-only session activity, with no runtime network requests, credentials, backend, or model calls. Disclosure — independent fan project bundling CHUNSOFT Pokémon sprites and SpriteCollab contributions that are excluded from the MIT code license; reads session busy state and message-complete/tool-start/tool-complete events read-only (other chats contribute only \"a turn finished\"), focuses the composer (caret only, no text) or reveals its own pane only on a user click or command, saves a PNG snapshot to your downloads only when you click Save a snapshot, and keeps companion state in plugin storage; no network or model calls.","maintainer":"sxuff","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/sxuff/hermes-pokemon#readme","screenshots":["https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/habitat.png","https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/starters.png","https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/rewards-night.png","https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/cameo.png","https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/evolution.png","https://raw.githubusercontent.com/sxuff/hermes-pokemon/a3d9f57f345a744825b59432c343d07d4f508a24/docs/images/visitor.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-project-stewardship","repo":"https://github.com/Sahil-SS9/hermes-project-stewardship","sha":"f10e7131583158e33eacd9ca3aee46039095abd1","description":"Durable project ownership and bounded initiative management for Hermes fleets. Disclosure — a `pre_llm_call` hook adds a project's saved rules, decisions and facts to turns of bots assigned to that project; objective checks run allowlisted local programs only at autonomy level 3+ and GitHub objectives shell out to your own `gh api`; it creates and edits Hermes Kanban tasks through Hermes' internal kanban modules (title/body/tenant written directly to kanban.db), keeps its own SQLite DB under `<Hermes home>/plugin-data/hermes-dockyard/`, and its optional HTTP API (`/stewardship/v1`, 127.0.0.1) stays closed until you set a bearer token.","maintainer":"Sahil-SS9","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/Sahil-SS9/hermes-project-stewardship","platforms":[],"capabilities":{"provides_tools":["steward_status","steward_run_cycle","steward_propose_initiative"],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-pubky","repo":"https://github.com/MCarlomagno/hermes-pubky","sha":"3603b82893864af4e8b7a7bc5980864d37dd6ee4","subdir":"plugin","description":"Setup helper for managed Pubky agents. The launcher syncs agent state, including conversation database snapshots and portable configuration, to your remote Pubky homeserver.","maintainer":"MCarlomagno","tier":"community","category":"memory","requires_hermes":">=0.21.3","docs_url":"https://github.com/MCarlomagno/hermes-pubky#readme","version":"0.2.3","platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-quest","description":"Read-only pixel-art RPG view of real Hermes Kanban and worker activity, with a live web dashboard tab and an optional native Desktop page. The Desktop page currently supports explicit local connections only; registry and SSH remote connections fail closed until a public SDK connection-lifecycle hook is available. Standalone demo data is synthetic. Disclosure — reads local Hermes data outside its own directory (kanban.db, every profile's state.db, profile.yaml, config.yaml model/effort, logs/agent.log, bot-status.json) on each dashboard poll: every /replay or /events request (about every 10 s while the tab is open) runs the bundled Python extractor as a subprocess (argument list, no shell, 30 s timeout); a background thread samples bot-status.json every 30 s (HERMES_QUEST_SAMPLER=off disables it) and writes bot-status history, checkpoint state, a lock and a random 0600 HMAC key under <hermes_home>/hermes-quest/ (not yet plugin-data); profile names and task titles are hidden unless enabled and only shown to host-authenticated dashboard sessions; the Desktop page works only on an explicit local connection; no network calls beyond the local Hermes backend.","repo":"https://github.com/ap08960695/hermes-quest","sha":"76e95ca9f95fc33603b889e55fac908ae70af7c7","tier":"community","category":"desktop","maintainer":"ap08960695","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"version":"0.1.4","docs_url":"https://github.com/ap08960695/hermes-quest","screenshots":["https://raw.githubusercontent.com/ap08960695/hermes-quest/76e95ca9f95fc33603b889e55fac908ae70af7c7/docs/screenshots/overview.png"]},{"name":"hermes-resetwatch","repo":"https://github.com/Adolanium/hermes-resetwatch","sha":"002c8c378cb6fa092241cbe94dcffa29bd26184e","version":"0.2.23","image":"https://raw.githubusercontent.com/Adolanium/hermes-resetwatch/002c8c378cb6fa092241cbe94dcffa29bd26184e/assets/catalog-banner.png","description":"Track subscription quotas and reset times in Hermes Desktop. Disclosure — probe.py re-executes itself under the Hermes Python interpreter located via HERMES_PYTHON / VIRTUAL_ENV / the parent process or the Hermes installer's managed venv (HERMES_HOME/installs); it reads provider API keys from the Hermes .env, Hermes's own saved OAuth logins (auth.json credential pool, read-only), the Vaultwarden plugin's local secret cache (cache/vaultwarden_cache.json, read-only, only when Vaultwarden is the sole enabled secret source) and Docker s6 container env files, plus other coding-assistant CLIs' local logins (including macOS keychain entries), and sends each key only to its own vendor's usage endpoint.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-resetwatch#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-rich-ui","repo":"https://github.com/jacobhausler/hermes-rich-ui","sha":"693fe296579ae69cfc78b90624a7b6bfc2564755","subdir":"","description":"Rich, evidence-backed answer cards — tables, charts, metrics, timelines, sources — rendered inline in the desktop transcript Disclosure — Image and ImageGallery cards load agent-supplied https image URLs (up to 8 per gallery) from any host when the card renders in Desktop","maintainer":"jacobhausler","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"0.1.4","image":"https://raw.githubusercontent.com/jacobhausler/hermes-rich-ui/693fe296579ae69cfc78b90624a7b6bfc2564755/assets/screenshot-1.png","screenshots":["https://raw.githubusercontent.com/jacobhausler/hermes-rich-ui/693fe296579ae69cfc78b90624a7b6bfc2564755/assets/screenshot-1.png","https://raw.githubusercontent.com/jacobhausler/hermes-rich-ui/693fe296579ae69cfc78b90624a7b6bfc2564755/assets/screenshot-2.png","https://raw.githubusercontent.com/jacobhausler/hermes-rich-ui/693fe296579ae69cfc78b90624a7b6bfc2564755/assets/screenshot-3.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":["rich_present"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-routines","title":"Hermes Routines","repo":"https://github.com/crdesign8/hermes-routines","sha":"aa055f5851a9e9cacd0e8516f56c58f62c639292","description":"A minimal Routines page in Hermes Desktop that turns crontab's five cron.manage actions into a plain-language interface for non-developers - name a routine, pick a schedule, write the prompt, and pause or resume it. No cron syntax, no service, no database; routine data stays in the host.","maintainer":"crdesign8","tier":"community","category":"desktop","docs_url":"https://github.com/crdesign8/hermes-routines#readme","version":"0.1.0","image":"https://raw.githubusercontent.com/crdesign8/hermes-routines/aa055f5851a9e9cacd0e8516f56c58f62c639292/docs/assets/hr-cover-04.png","screenshots":["https://raw.githubusercontent.com/crdesign8/hermes-routines/aa055f5851a9e9cacd0e8516f56c58f62c639292/docs/assets/hermes-routines-01.png","https://raw.githubusercontent.com/crdesign8/hermes-routines/aa055f5851a9e9cacd0e8516f56c58f62c639292/docs/assets/hermes-routines-03.png"],"platforms":["linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-rss","repo":"https://github.com/Adolanium/hermes-rss","sha":"79215b2e4fd768a0eef2b1417c983155bc26a09b","version":"0.0.3","image":"https://raw.githubusercontent.com/Adolanium/hermes-rss/79215b2e4fd768a0eef2b1417c983155bc26a09b/assets/catalog-banner.png","description":"Read RSS and Atom feeds and discuss articles in Hermes Desktop. Disclosure — feeds and full articles are fetched with curl through the gateway's shell.exec on the connected Hermes host (public-IPv4 SSRF guard); opt-in AI grading sends article excerpts to your configured model and creates HERMES_HOME/skills/rss-importance-grading/SKILL.md if missing; opt-in image loading fetches publisher images directly from Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-rss#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-rustpush-imessage","repo":"https://github.com/boobutler/hermes-rustpush-imessage","sha":"695f74755cbcdbcd742baa51021fdb96a78ac10e","description":"Local-only iMessage platform plugin backed by a launchd-supervised OpenBubbles RustPush sidecar over a same-user Unix socket.","maintainer":"boobutler","tier":"community","category":"platform","docs_url":"https://github.com/boobutler/hermes-rustpush-imessage","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-security-audit","repo":"https://github.com/dafka007/hermes-security-audit","sha":"60a7661bbe2f255c507d620275c59782cabe0335","description":"Approval-gated local security audit for Hermes Agent using Gitleaks, OSV-Scanner, and Semgrep CE.","maintainer":"dafka007","tier":"community","category":"tools","docs_url":"https://github.com/dafka007/hermes-security-audit#readme","platforms":[],"capabilities":{"provides_tools":["security_audit"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-self-healing-context","repo":"https://github.com/forumevi/hermes-self-healing-context","sha":"b8ca86d6cc6f5eda445654d7e2cb08289a347cbf","tier":"community","category":"general","maintainer":"forumevi","version":"2.0.0","title":"Hermes Self-Healing Context","capabilities":{"provides_hooks":["on_session_start","on_session_end","post_tool_call","pre_llm_call"]},"description":"Intercepts runtime errors and dynamically patches the context window \nusing local SQLite FTS5 memory for zero-downtime recovery.\n"},{"name":"hermes-seo","title":"Hermes SEO","repo":"https://github.com/yuzushi-dev/hermes-seo","sha":"5f04951e8fddc8b869378236a7ff5b584a0d023d","version":"0.1.0","description":"Native Hermes port of Claude SEO 2.4.2: 45 SEO workflow and specialist skills, a credential-scoped hermes_seo_run tool, an isolated Python runtime, and advisory JSON-LD feedback. Derived from Claude SEO 2.4.2 (MIT; FLOW prompt materials CC BY 4.0). Disclosure — derived from Claude SEO 2.4.2 (MIT; FLOW prompt materials CC BY 4.0); the hermes_seo_run tool starts local subprocesses in the Hermes host process, not a Docker terminal sandbox, and model-supplied script arguments may name host paths, so it can read host files (the Gemini image-edit utility uploads the named file to Google, the IndexNow utility reads a URL-list file); `hermes seo setup` downloads Python packages from PyPI within version ranges into a private environment and optionally Chromium through Playwright; audits fetch user-selected websites; separately configured providers (Moz, Bing Webmaster, Keywords Everywhere, Google APIs, Matomo, DataForSEO, IndexNow, Google Gemini) receive the data sent to them and may incur charges; skills ask before paid or mutating calls but the tool does not enforce approvals; Gemini images are saved to ~/Documents/nanobanana_generated, and other runtime state stays in Hermes plugin data storage; provider keys are read from the active Hermes profile and passed only to the script that needs them; Google OAuth workflows are disabled; no telemetry, bundled credentials, background process or self-updater.","maintainer":"yuzushi-dev","tier":"community","category":"tools","requires_hermes":">=0.22.2","docs_url":"https://github.com/yuzushi-dev/hermes-seo#readme","image":"https://raw.githubusercontent.com/yuzushi-dev/hermes-seo/5f04951e8fddc8b869378236a7ff5b584a0d023d/assets/hermes-seo-card.png","platforms":["linux","macos"],"capabilities":{"provides_tools":["hermes_seo_run"],"provides_hooks":["transform_tool_result"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-session-diff","repo":"https://github.com/Adolanium/hermes-session-diff","sha":"9ed3bf2f6e7d859495589940430782c542bbc4f9","description":"Persistent session file diffs, run comparisons, and individual edit history in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","requires_hermes":">=0.21.3","docs_url":"https://github.com/Adolanium/hermes-session-diff#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-session-diff/9ed3bf2f6e7d859495589940430782c542bbc4f9/assets/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":["tool_execution"],"requires_env":[]}},{"name":"hermes-session-reset-policy","repo":"https://github.com/fastfinge/hermes-session-reset-policy","sha":"0f2ea5ad995f1e4ba7c92c2dbd21afa868b8ae21","description":"Opt-in idle/daily gateway conversation resets. Reads the existing session_reset block (mode idle | daily | both, idle_minutes, at_hour) and starts a fresh session on the first inbound message past the boundary. No timers, no background writes.","maintainer":"fastfinge","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/fastfinge/hermes-session-reset-policy#readme","version":"0.3.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_gateway_dispatch"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-session-warmer","repo":"https://github.com/mojomast/hermes-session-warmer","sha":"eba7be111c44e4ac6b702cdcb341c8d71da1c57e","version":"0.1.0","description":"Opt-in bounded idle prompt warming for explicitly allowlisted OpenAI-compatible text-chat endpoints. Sends potentially billable requests; no tool execution or conversation writes. Does not support Codex/Responses or native Anthropic. Authenticated endpoints use optional HERMES_SESSION_WARMER_API_KEY.","maintainer":"mojomast","tier":"community","category":"models","docs_url":"https://github.com/mojomast/hermes-session-warmer#readme","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call","on_session_end"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"hermes-sidepulse","repo":"https://github.com/d31tcjg/hermes-sidepulse","sha":"864785d72bfcdec6605622a0dcf211ea35a11917","subdir":"python","description":"SidePulse lifecycle status backend; Desktop focus tracking requires the separate companion in the linked setup guide. Disclosure — forwards event names, a hashed agent id, the raw session_id and tool names to a local AF_UNIX socket and a 0600 jsonl log; no network egress.","maintainer":"d31tcjg","tier":"community","category":"desktop","requires_hermes":">=0.21.3","docs_url":"https://github.com/d31tcjg/hermes-sidepulse/blob/v0.2.0-beta.1/README.md","version":"0.2.0-beta.1","platforms":["macos","linux"],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start","on_session_reset","pre_llm_call","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","api_request_error","post_llm_call","on_session_end","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-slash-router","repo":"https://github.com/raitoxlol/hermes-slash-router","sha":"2088919f4c59927aa2d47f21bb12e639453c1a2a","description":"Jev-powered routing for misspelled, shortened, and meaning-based slash commands in the Hermes Desktop composer. Preserves drafts when unsure. Requires a TypeSafe API key; every non-exact lookup uses paid TypeSafe API usage. Disclosure — every non-exact slash token is sent through the plugin's local backend to api.typesafe.ai (paid, your TYPESAFE_API_KEY) together with the Desktop command catalog (names and descriptions), any prior route, up to 8 saved correction explanations and any clarification you type into its panel; message arguments and conversation content are not sent; the backend reads HERMES_HOME/.env only to check whether TYPESAFE_API_KEY is set.","maintainer":"raitoxlol","tier":"community","category":"desktop","requires_hermes":">=0.21.2","docs_url":"https://github.com/raitoxlol/hermes-slash-router#readme","version":"0.3.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TYPESAFE_API_KEY"]}},{"name":"hermes-snapcompact","repo":"https://github.com/vimona3ds/hermes-snapcompact","sha":"8a274ca4a501e5661f1e2762150c4c3f99e374ce","description":"Snapcompact context engine: archives conversation history as dense bitmap PNG frames that vision models read back at ~1/3 the token cost.","maintainer":"vimona3ds","tier":"community","category":"memory","docs_url":"https://github.com/vimona3ds/hermes-snapcompact","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-speech","repo":"https://github.com/allmodels-io/hermes-speech","sha":"6efecc359aa4c091b41ad530575943657ee259de","description":"Give your agent the voice it deserves. Guided TTS and STT setup for Hermes, with voice search and previews, model switching, testing, and native spoken replies across supported providers. Access 80+ speech models through a single API key with the AllModels router.","maintainer":"moeadham","tier":"community","category":"voice","requires_hermes":">=0.20.0","docs_url":"https://github.com/allmodels-io/hermes-speech#readme","version":"0.3.3","image":"https://raw.githubusercontent.com/allmodels-io/hermes-speech/6efecc359aa4c091b41ad530575943657ee259de/.github/social-preview.png","platforms":[],"capabilities":{"provides_tools":["allmodels_speech_setup","allmodels_speech_manage"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-ssh","repo":"https://github.com/Adolanium/hermes-ssh","sha":"f3f916149ad3130f2285dad94ade5ebe43091fad","description":"Manage SSH connections and remote workspaces in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-ssh#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-ssh/f3f916149ad3130f2285dad94ade5ebe43091fad/assets/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-structured-aux-models","repo":"https://github.com/trajectoire-ai/hermes-structured-aux-models","sha":"e5c49b081ad04adca2ee3edc601b09ede6cee4c5","description":"Routes selected Hermes auxiliary tasks (approval, MCP sampling, compression) through bounded Jev decision calls on OpenRouter instead of free-form chat prompts, failing open to the operator's own auxiliary provider for anything it cannot express as a decision. Disclosure — sends redacted approval prompts, MCP tool names and compression transcript blocks to openrouter.ai using your OpenRouter key (read-only); on any error approvals escalate to you, never auto-approve; the default decision_model is a moving alias, pin it.","maintainer":"trajectoire-ai","tier":"community","category":"models","requires_hermes":">=0.21","docs_url":"https://github.com/trajectoire-ai/hermes-structured-aux-models#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-stt-enhance","repo":"https://github.com/dmmeteo/hermes-stt-enhance","sha":"7be60e334a2d7cba870a76b5758e83655323d8b0","subdir":"hermes-stt-enhance","description":"Local speech-to-text (provider stt_enhance) with faster-whisper or opt-in sherpa-onnx Parakeet V3 and long-audio chunking, plus an optional bounded LLM pass that enhances the transcript using a custom skill, an inline prompt or the default, and keeps the raw transcript on failure. Disclosure — audio is decoded locally. Post-processing is on by default and sends the transcript text to the LLM Hermes routes the stt_enhance auxiliary task to (your main, usually remote, provider unless you point it at a local endpoint or set post_processing.enabled: false). It reads the body of the SKILL.md you configure (never executed) and runs ffmpeg/ffprobe. The opt-in Parakeet backend reads a local model export and, on first use and only when your config.yaml explicitly sets security.allow_lazy_installs: true, installs pinned sherpa-onnx and numpy from PyPI into ~/.hermes/plugin-runtimes/hermes-stt-enhance/ (shared by all profiles). No tools, hooks, background processes, telemetry or stored credentials.","maintainer":"dmmeteo","tier":"community","category":"voice","requires_hermes":">=0.15.0","docs_url":"https://github.com/dmmeteo/hermes-stt-enhance/tree/7be60e334a2d7cba870a76b5758e83655323d8b0/hermes-stt-enhance#readme","version":"0.5.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-subscription-meter","repo":"https://github.com/NealZhouPanda/hermes-subscription-meter","sha":"44f33fcb041096f159ebf72182ac633547926422","description":"Provider-neutral subscription quota matrix panel — each provider's subscription window as a single time x quota row (elapsed vs remaining at a glance), with UI-side show/hide per provider row. Disclosure — reads provider keys from the current profile's .env and token presence from its auth.json, and calls each provider's own usage/balance API with that key (Kimi, GLM, MiniMax, Command Code, DeepSeek, xAI management, OpenRouter, Alibaba Cloud BSS, Grok, Codex via Hermes); an optional shared_sources setting reads another profile's .env/auth.json the same way; nothing is written outside this plugin's settings.","maintainer":"NealZhouPanda","tier":"community","category":"desktop","docs_url":"https://github.com/NealZhouPanda/hermes-subscription-meter#readme","version":"0.6.0","image":"https://raw.githubusercontent.com/NealZhouPanda/hermes-subscription-meter/44f33fcb041096f159ebf72182ac633547926422/docs/banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-switchyard","repo":"https://github.com/bgrablin/hermes-switchyard","sha":"895c101d4228f12cbb7e56194f94d0e555256339","subdir":"","description":"Jev-powered Hermes plugin for skill/model routing, typed assess, DOM/Cua computer use, adaptive reasoning effort with a per-turn receipt line, and FTS rerank. Disclosure: the default-on adaptive llm_request sends up to 1,200 characters of the current user message to TypeSafe/OpenRouter after Hermes redact_for_egress (no history or tool output); greetings and thanks are decided locally with no call; without the Hermes redactor it sends metadata only (disable via adaptive_reasoning_effort false). Separate default-on hosted skill routing sends up to 4,000 characters of the current user turn after Hermes redact_for_egress, plus skill names, to the same provider; without the redactor it stays local (opt down to local_only); light turns (greetings, closed acknowledgements, and read-only listings) skip that hosted call by default. Model routing remains advisory. Disclosure — By default, adaptive effort sends up to 1,200 characters of the current user message, and hosted skill routing sends up to 4,000 characters plus skill names, to TypeSafe/OpenRouter Jev after Hermes redact_for_egress (greetings and light turns stay local). The jev_session_search_rerank and jev_computer_use DOM tools send query/card and public-page text using the plugin's own masking. Off unless enabled: evidence prefetch sends source files the user names under evidence_finder_root (up to 80 KB), cross-tool stuck advice sends redacted error excerpts, and the switchyard-approvals provider, once selected for auxiliary.approval, sends flagged shell commands and your approval policy to OpenRouter Jev, whose confident verdict can auto-approve them (any failure falls back to a human prompt). /switchyard effort receipt saves the plugin's own setting to config.yaml.","maintainer":"bgrablin","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/bgrablin/hermes-switchyard/blob/895c101d4228f12cbb7e56194f94d0e555256339/docs/SETUP.md","version":"0.6.0","image":"https://raw.githubusercontent.com/bgrablin/hermes-switchyard/895c101d4228f12cbb7e56194f94d0e555256339/docs/assets/hermes-switchyard-overview.png","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["jev_assess","jev_computer_use","jev_skill_select","jev_skill_select_many","jev_model_route","jev_model_route_approved","jev_session_search_rerank"],"provides_hooks":["pre_tool_call","transform_tool_result","pre_llm_call","post_llm_call","post_tool_call","transform_llm_output","post_api_request"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"hermes-t3-control","repo":"https://github.com/thetasigmaio/hermes-t3-control","sha":"aeb5493e30e744b414cbfe88a70adb1acd59a1c8","description":"Bounded tools to list, read, create, and control local T3 coding threads on Linux and WSL2.","maintainer":"thetasigmaio","tier":"community","category":"tools","requires_hermes":">=0.20.4","docs_url":"https://github.com/thetasigmaio/hermes-t3-control/blob/aeb5493e30e744b414cbfe88a70adb1acd59a1c8/docs/compatibility.md","platforms":["linux"],"capabilities":{"provides_tools":["t3_threads","t3_thread_read","t3_thread_create","t3_thread_send","t3_thread_set_mode","t3_thread_implement_plan","t3_turn_interrupt","t3_session_stop","t3_thread_wait","t3_thread_respond","t3_thread_settle"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-tabular","repo":"https://github.com/frankiethull/hermes-tabular","sha":"c5b965086d0d5b8239703c2aa8a5df99b1eee5c3","subdir":"","description":"Tabular AI that grows with your tables — Hermes skills for honest tabular ML, one entry point. Disclosure — Installing pulls numpy, pandas, scikit-learn, pyarrow, joblib and pyyaml into Hermes's environment. The skills have the agent run Python on your data files, may ask it to pip install catboost, tabicl/torch, mapie or matplotlib, and the TabICL skill downloads a pretrained checkpoint of a few hundred MB on first use. Saved checkpoints are pickles: load only ones you made.","maintainer":"frankiethull","tier":"community","category":"tools","requires_hermes":">=0.21.6","version":"0.2.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-tailscale","repo":"https://github.com/Adolanium/hermes-tailscale","sha":"778a49b0bc499e7c8457d1f83159d4054fcfdc8e","version":"0.0.7","image":"https://raw.githubusercontent.com/Adolanium/hermes-tailscale/778a49b0bc499e7c8457d1f83159d4054fcfdc8e/assets/catalog-banner.png","description":"Browse Tailscale devices and connect to remote Hermes instances in Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-tailscale#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-talk","repo":"https://github.com/TheSmokeDev/hermes-talk","sha":"981711b8f44df78e2ad958174e931c1b584b8bdd","description":"Realtime voice for Hermes through terminal, Discord, dashboard and Desktop. Live voice mode (TALK_VOICE_MODE=live, TALK_LIVE_AUTH=subscription) connects with your own Codex OAuth session to the undocumented chatgpt.com/backend-api/codex/realtime/calls endpoint, which is outside the vendor's published API terms and may change or stop working without notice.","maintainer":"TheSmokeDev","tier":"community","category":"voice","version":"0.21.1","docs_url":"https://github.com/TheSmokeDev/hermes-talk/blob/981711b8f44df78e2ad958174e931c1b584b8bdd/README.md","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end","subagent_start","subagent_stop","post_tool_call","pre_approval_request"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-taskbar-badge","repo":"https://github.com/BrokeSkill/hermes-taskbar-badge","sha":"fabe90e1e2271c90e31ccd4b784352193e46c795","description":"Windows taskbar badge on the Hermes window when a turn finishes. Calls navigator.setAppBadge on the message.complete event while the window is in the background, and clears it when the window regains focus or another session is opened. Disclosure — no network calls and no data leaves the machine; the badge is drawn by the app's own Electron process, which maps the Chromium Badging API onto the Windows taskbar overlay.","maintainer":"BrokeSkill","tier":"community","category":"desktop","version":"0.1.0","requires_hermes":">=0.21.6","image":"https://raw.githubusercontent.com/BrokeSkill/hermes-taskbar-badge/fabe90e1e2271c90e31ccd4b784352193e46c795/docs/demo.png","platforms":["windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-teammates","repo":"https://github.com/100yenadmin/hermes-teammates","sha":"44233e7de52be198497e39484757ac9e2133dea7","description":"Give your agent a team: named subagents with their own instructions, tools and model, which it assigns work to, checks on and steers mid-task. The operator defines the roster; the agent follows up with a digest of earlier results and can work a Kanban teammates lane with a review handoff. Launches subagents only through the public ctx.subagent_lifecycle API. Stock Hermes; no patched core. Disclosure — adds six tools (teammates_roster, teammate_assign, teammate_check, teammate_wait, teammate_message, teammate_stop) and a /teammates command; the model picks only a teammate name, and the operator's config decides what it means. Teammates run as in-process Hermes subagents using credentials selected by Hermes from the parent, delegation settings or an operator-configured teammate route where supported. Toolsets narrow the parent's tools at toolset granularity only (the file toolset includes write_file and patch); Hermes can add inherited MCP toolsets back unless delegation.inherit_mcp_toolsets is false. A teammate with invalid settings refuses to launch. A delegated child cannot start teammates. Steering uses the lifecycle steer where Hermes provides it, otherwise delegate_task's steer action with the turn-bound parent. Under plugins.isolation: host every tool except the roster refuses. It keeps a per-profile SQLite run ledger in its plugin-data folder (goals, statuses, clipped summaries, role hashes and available token receipts; no full transcripts). It does not read credential stores. Where supported in-process, subagent_start and post_api_request hooks collect token receipts for mapped child sessions. For a card assigned to its non-profile lane, it claims the card through the Kanban DB, heartbeats the claim and its worker, then moves the card to review without a reviewer, or blocks it on failure, a stop or an unavailable result; it never completes a card. It runs one in-process monitor thread per run to retain finished results and, for lane runs, keep the claim alive; no network calls, child processes or self-updates of its own. Completion-notice code exists but never injects on current Hermes because the host cannot bind notices to the receiving session; use teammate_wait instead. Includes a report-a-problem skill: the agent drafts a bug report and files it to this repository with gh only after the user approves the draft.","maintainer":"100yenadmin","tier":"community","category":"automation","requires_hermes":">=0.21.4","docs_url":"https://github.com/100yenadmin/hermes-teammates#readme","version":"1.0.0","image":"https://raw.githubusercontent.com/100yenadmin/hermes-teammates/44233e7de52be198497e39484757ac9e2133dea7/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/100yenadmin/hermes-teammates/44233e7de52be198497e39484757ac9e2133dea7/docs/media/screenshot-roster.png","https://raw.githubusercontent.com/100yenadmin/hermes-teammates/44233e7de52be198497e39484757ac9e2133dea7/docs/media/screenshot-assign.png","https://raw.githubusercontent.com/100yenadmin/hermes-teammates/44233e7de52be198497e39484757ac9e2133dea7/docs/media/screenshot-results.png","https://raw.githubusercontent.com/100yenadmin/hermes-teammates/44233e7de52be198497e39484757ac9e2133dea7/docs/media/screenshot-slash-command.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":["teammates_roster","teammate_assign","teammate_check","teammate_wait","teammate_message","teammate_stop"],"provides_hooks":["subagent_start","post_api_request"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-telegram-business","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"c6f130d195298ace7d0e84bab8efdfa2bcdc57c8","subdir":"telegram-business","description":"Observe-with-approval Telegram Business Mode (secretary bot): every drafted customer reply needs owner approval before it is sent.","maintainer":"NousResearch","tier":"official","category":"platform","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/telegram-business","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/c6f130d195298ace7d0e84bab8efdfa2bcdc57c8/assets/telegram-business.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-telemetry-dashboard","repo":"https://github.com/cybertecla/hermes-telemetry-dashboard","sha":"1399a77f8096c536e51dbd5e732da44ff345c354","description":"Dashboard-only read plugin: visualize the shared-metrics telemetry Hermes collects locally — metric families, drilldowns, milestone timeline, install snapshot, and the exact next package payload. Send stays off.","maintainer":"cybertecla","tier":"community","category":"general","docs_url":"https://github.com/cybertecla/hermes-telemetry-dashboard#readme","version":"0.1.1","screenshots":["https://raw.githubusercontent.com/cybertecla/hermes-telemetry-dashboard/1399a77f8096c536e51dbd5e732da44ff345c354/assets/screenshot-overview.png","https://raw.githubusercontent.com/cybertecla/hermes-telemetry-dashboard/1399a77f8096c536e51dbd5e732da44ff345c354/assets/screenshot-drilldown.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-telemetry","repo":"https://github.com/nujovich/hermes-telemetry","sha":"872eadc4b1e6797bc72c8eed3daf54f199d2bed5","description":"Observability + budget guardrails for Hermes Agent — tokens, cost, latency, tool calls per session and cron job. Persists to local SQLite. Exposes /stats and /budget slash commands. Disclosure — records per-session tokens, cost, latency, tool names and sender/profile ids (no message text) in ~/.hermes/telemetry/telemetry.db; fetches public model pricing from openrouter.ai/api/v1/models on first load and at most once a day; in the default enforce mode first load writes a $5/day, $100/month global budget to telemetry/budget.yaml, and a hard breach blocks every tool call and pauses the over-budget cron job until the window resets (set plugins.entries.hermes-telemetry.settings.mode: observe to record without enforcing); the optional standalone dashboard server binds 127.0.0.1 with no auth.","maintainer":"nujovich","tier":"community","category":"general","docs_url":"https://nujovich.github.io/hermes-telemetry/","capabilities":{"provides_tools":[],"provides_hooks":["api_request_error","on_session_end","on_session_finalize","on_session_start","post_api_request","post_llm_call","post_tool_call","pre_api_request","pre_llm_call","pre_tool_call","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]},"version":"0.9.1"},{"name":"hermes-tenuo","repo":"https://github.com/tenuo-ai/hermes-tenuo","sha":"8bce830c5df9dcd06d16688a954146d8edc0c562","description":"Security guardrails for Hermes tool calls: per-call authorization, so a prompt injection cannot make the agent do more than you allowed. Each call is checked against a signed, expiring permission slip (a warrant) before the handler runs, down to the arguments (file paths, search queries, spending limits), and every decision lands in a local audit log. Give cron jobs, delegate_task subagents and gateway users their own policy.\nDisclosure — hermes-tenuo is a no-op until a warrant is configured and blocks every tool call in a kanban worker that has no per-task warrant; it appends every tool call's name and full arguments to $HERMES_HOME/tenuo/audit.jsonl (disable with audit_log: false); when TENUO_CONNECT_TOKEN or TENUO_CONTROL_PLANE_URL are set, the bundled tenuo SDK (compiled Rust core) streams those decisions, including arguments, to that control plane.","title":"Tenuo","maintainer":"tenuo-ai","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://github.com/tenuo-ai/hermes-tenuo","version":"0.1.3","capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_start"],"provides_middleware":[],"requires_env":["TENUO_WARRANT","TENUO_SIGNING_KEY"]}},{"name":"hermes-terminal","repo":"https://github.com/Adolanium/hermes-terminal","sha":"014bb0cb55a6e61ba1a2f89e2c2bb0f8b0197064","version":"0.0.4","image":"https://raw.githubusercontent.com/Adolanium/hermes-terminal/014bb0cb55a6e61ba1a2f89e2c2bb0f8b0197064/assets/catalog-banner.png","description":"Run the Hermes terminal interface in a Hermes Desktop workspace tab.","maintainer":"Adolanium","tier":"community","category":"desktop","docs_url":"https://github.com/Adolanium/hermes-terminal#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"catalog"},{"name":"hermes-toolsmith","repo":"https://github.com/Adolanium/hermes-toolsmith","sha":"419669c1efd49513cc404f5503c99b61ed68593f","version":"1.0.1","image":"https://raw.githubusercontent.com/Adolanium/hermes-toolsmith/419669c1efd49513cc404f5503c99b61ed68593f/assets/catalog-banner.png","description":"Local developer tools, transformation recipes, and reviewed chat handoff inside Hermes Desktop.","maintainer":"Adolanium","tier":"community","category":"desktop","requires_hermes":">=0.21.3","docs_url":"https://github.com/Adolanium/hermes-toolsmith#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-town","repo":"https://github.com/sxuff/hermes-town","sha":"f3b89401fafde0cd3ebaaccf01ea9e658bc66ff9","subdir":"integrations/hermes-town-plugin","description":"Local pixel-art town where every Hermes session is a resident and every tool call walks to a building. Passive lifecycle bridge to a loopback-only server; prompts, arguments, and output never leave the process. Disclosure — version 0.3.0 bundles the Town Node server and a prebuilt browser app inside the plugin directory and adds a hermes town setup/start/status/stop/open command tree. Nothing is downloaded and no npm install runs at any point; node (^20.19 or >=22.12) must already be installed and is launched only by the explicit hermes town start command, bound to 127.0.0.1 only. Runtime state, a 0600 bridge token, a bounded event journal and rotated server logs are written under HERMES_HOME/hermes-town/runtime/. On start the server also reads HERMES_HOME/cron/jobs.json (job id and enabled flag only) to place one resident per enabled scheduled job.","maintainer":"sxuff","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/sxuff/hermes-town#readme","version":"0.3.0","image":"https://raw.githubusercontent.com/sxuff/hermes-town/f3b89401fafde0cd3ebaaccf01ea9e658bc66ff9/artifacts/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","on_session_start","on_session_end","on_session_finalize","on_session_reset","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-trove","repo":"https://github.com/misterdas/hermes-trove","sha":"69c673eeb2fcbaf12e9b88451ad1f627a88bc930","description":"DAG-based context engine that never loses a message — full-text search, semantic recall, assertion-backed evidence compilation, and pre-answer sufficiency gating Disclosure — replaces the context engine and stores every turn's full raw transcript in HERMES_HOME/trove.db with secret redaction OFF by default; with TROVE_EMBEDDING_PROVIDER=voyage, transcript text is sent to Voyage AI for embeddings; as a fallback it reads private AIAgent attributes read-only via frame inspection. No other network egress.","maintainer":"misterdas","tier":"community","category":"general","requires_hermes":">=0.20","docs_url":"https://github.com/misterdas/hermes-trove#readme","version":"1.1.4","platforms":[],"capabilities":{"provides_tools":["trove_grep","trove_recall","trove_query_state","trove_compute","trove_compile_evidence","trove_evidence_pack","trove_retrieve","trove_recent","trove_load_session","trove_describe","trove_expand","trove_expand_query","trove_status","trove_inspect","trove_doctor"],"provides_hooks":["pre_llm_call","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":["TROVE_ENABLE_SLASH_COMMAND"]}},{"name":"hermes-vcc-engine","repo":"https://github.com/danbiocchi/hermes-vcc-engine","sha":"31ee4fe7ef3e3f6c67dadfd45ebc1a3cb9773f95","description":"Instant context compaction for Hermes Agent: builds the compaction summary in milliseconds with no LLM call, keeping the exact commands, exit codes, errors and files, each linked back to its original message for recall via session_search. Disclosure — no network calls, shell commands or credentials; reads Hermes's config.yaml through Hermes's own loader; subclasses ContextCompressor and relies on its private methods, falling back to the stock compressor if they are missing.","maintainer":"danbiocchi","tier":"community","category":"general","requires_hermes":">=0.21.7","version":"0.4.1","docs_url":"https://github.com/danbiocchi/hermes-vcc-engine#readme","readme":true,"title":"Instant Context Compactor","image":"https://raw.githubusercontent.com/danbiocchi/hermes-vcc-engine/31ee4fe7ef3e3f6c67dadfd45ebc1a3cb9773f95/docs/img/banner.png","screenshots":["https://raw.githubusercontent.com/danbiocchi/hermes-vcc-engine/31ee4fe7ef3e3f6c67dadfd45ebc1a3cb9773f95/docs/img/results.svg","https://raw.githubusercontent.com/danbiocchi/hermes-vcc-engine/31ee4fe7ef3e3f6c67dadfd45ebc1a3cb9773f95/docs/img/recall.svg"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-vcc","repo":"https://github.com/agentbox-tech/hermes-vcc","sha":"d08eb0adf4aff5dc4a9ec7179687a08fd6350561","subdir":"engine","description":"Algorithmic (no-LLM) context compaction engine: builds summaries by deterministic regex extraction instead of a summarizer-model call — zero-token, byte-reproducible, inside the built-in ContextCompressor; compacted turns stay searchable via session_search. Disclosure — no network calls, no env vars, no secrets, no telemetry; registers no tools/hooks/middleware and reads only the turns the host passes for compaction; debug: true (default false) writes one metadata-only file $HERMES_HOME/vcc-debug.json. Derived from pi-vcc (MIT, sting8k)","maintainer":"rain-sk","tier":"community","category":"general","requires_hermes":">=0.21.6","docs_url":"https://github.com/agentbox-tech/hermes-vcc","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-verifier","repo":"https://github.com/am423/hermes-verifier","sha":"514ff4a7a937e391fca763ba3c9732103f351531","description":"Attach an independent verifier (advisor) model to your Hermes session: it reviews each primary-agent turn delta, raises findings (note / caution / blocker), and can steer a blocker back into the session before the primary agent goes wrong. Read-only tool access (read_file, search_files) is available but off by default and best treated as opt-in plumbing -- measured across 216 reviews the reviewer made ~4 tool calls. Supports a VERIFIER.yml roster of named specialists, each with its own model and tool grant, plus VERIFIER.md review priorities. Ships disabled and off by default. Disclosure — off by default. When enabled, each primary turn's regex-redacted transcript delta goes to the verifier model's provider on that provider's terms and billing (one or more calls per turn per roster entry). So do any VERIFIER.md / VERIFIER.yml briefs found in HERMES_HOME and from the working directory up to the repo root (confined to that root, 256 KiB per file). A project VERIFIER.yml can add named verifiers and instructions whose findings are injected into your session, and a blocker finding can keep a coding turn going. With advisor_tools on, an advisor can read any file the session can read through read_file/search_files, and those reads also go to the provider. The optional engagement gate sends a ≤1,500-char redacted digest per turn. The optional phase gate sends the redacted arguments of an impending destructive or publishing tool call and can block that call (it fails open). Findings, reasoning, short redacted excerpts and gate decisions are logged under HERMES_HOME/plugin-data/hermes-verifier (rotated at 8 MB). Adds a /verify command, a dashboard API and a Desktop Verifier page. Development scripts (evals/, sidecar/, autoresearch/) run only when launched by hand: provider experiments use DEEPSEEK_API_KEY from the process environment or the host `hermes` CLI, and offline analysis reads the active profile's session database and decision logs. No telemetry, no runtime shell execution, no access to Hermes's stored credentials.","maintainer":"am423","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/am423/hermes-verifier#readme","version":"0.4.1","capabilities":{"provides_tools":[],"provides_hooks":["post_llm_call","pre_tool_call","pre_llm_call","pre_verify","on_session_reset"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-video-editor","title":"Video Editor (local FFmpeg)","repo":"https://github.com/oliverhees/hermes-video-editor","sha":"66035165c71e09b7f77a08aecc36e35c0b2dce14","version":"0.3.0","description":"Local video editor for your own footage: 45 FFmpeg tools for the agent (cut, silence removal, 9:16 reframe, captions, music with ducking, loudness, platform export and checks) plus a visual editor in Hermes Desktop with canvas, any number of tracks for text, shapes, video overlays and music, scenes and an English/German help. 100% local, no API key. Licence: PolyForm Noncommercial 1.0.0. Disclosure — the Desktop page starts a local web server on 127.0.0.1 (random port, per-run token) that can read and write media and image files anywhere under your home folder (and any VE_EDITOR_ROOTS); preview caches go to the system temp folder. The agent tools run ffmpeg/ffprobe on the input paths the model passes and write media, image or .srt files at the output paths it passes (replacing an existing file only with overwrite: true).","maintainer":"oliverhees","category":"tools","tier":"community","requires_hermes":">=0.21.5","docs_url":"https://github.com/oliverhees/hermes-video-editor/blob/66035165c71e09b7f77a08aecc36e35c0b2dce14/README.md","image":"https://raw.githubusercontent.com/oliverhees/hermes-video-editor/66035165c71e09b7f77a08aecc36e35c0b2dce14/docs/banner.png","screenshots":["https://raw.githubusercontent.com/oliverhees/hermes-video-editor/66035165c71e09b7f77a08aecc36e35c0b2dce14/docs/editor.png"],"readme":true,"capabilities":{"provides_tools":["lk_media_doctor","lk_media_probe","lk_detect_silence","lk_detect_scenes","lk_extract_frame","lk_loudness_report","lk_trim","lk_split","lk_join","lk_remove_silence","lk_remove_segments","lk_change_speed","lk_reverse","lk_loop","lk_crossfade_join","lk_crop","lk_crop_to_aspect","lk_resize","lk_rotate_flip","lk_pad_blur_background","lk_color_adjust","lk_denoise_video","lk_fade_video","lk_stabilize","lk_add_text","lk_burn_captions","lk_add_image_overlay","lk_picture_in_picture","lk_stack_videos","lk_blur_region","lk_extract_audio","lk_replace_audio","lk_mix_music","lk_normalize_loudness","lk_sync_audio_offset","lk_adjust_volume","lk_fade_audio","lk_denoise_audio","lk_mute_video","lk_export_preset","lk_platform_check","lk_compress_to_size","lk_to_gif","lk_contact_sheet","lk_transcribe_captions"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["Requires FFmpeg and ffprobe on PATH (apt install ffmpeg / brew install ffmpeg / winget install Gyan.FFmpeg).","lk_transcribe_captions is optional and needs 'pip install faster-whisper' plus a model already on disk.","The visual editor has one main video track plus any number of tracks for text, shapes, video overlays, audio and scenes; these items sit at fixed times and do not move when the main clips are cut (bundle them in a scene to move them together).",{"Licence is PolyForm Noncommercial 1.0.0 (source-available)":"free for non-commercial use, commercial use needs a separate licence from Lokyy.de."},"The editor preview needs H.264 or VP8 playback in the app's browser engine; editing and export work without it."]},{"name":"hermes-vision-inline","repo":"https://github.com/BrokeSkill/hermes-vision-inline","sha":"281bce608e799834cd1b60929d3f9b44756cb7c2","description":"Attach an image inline to the session model when it can see one, instead of letting an explicit auxiliary.vision backend describe it. Core already attaches images natively by default; what this plugin changes is an explicit auxiliary.vision setting, which it overrides so the model reads the pixels directly. The image stays in context, so follow-ups do not reprocess it. The model's modality comes from the local models.dev cache; no network calls and nothing to configure. Disclosure — replaces the vision_analyze handler through tool_execution middleware: when the local models.dev cache says the main model takes images and its provider carries images in tool results, it attaches the image itself even if you configured an auxiliary.vision backend (agent.image_input_mode: text still turns this off); the image stays in the conversation and is resent on later turns; relies on Hermes private vision helpers, so after a Hermes update it may silently fall back to the normal path.","maintainer":"BrokeSkill","tier":"community","category":"tools","docs_url":"https://github.com/BrokeSkill/hermes-vision-inline#readme","version":"1.1.0","image":"https://raw.githubusercontent.com/BrokeSkill/hermes-vision-inline/281bce608e799834cd1b60929d3f9b44756cb7c2/docs/banner.png","platforms":["windows","macos","linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":["tool_execution"],"requires_env":[]}},{"name":"hermes-whatsapp-voice","repo":"https://github.com/ashwanthbalakrishnan5/hermes-whatsapp-voice","sha":"e472a47dda4e9986ca44f0ad62cb1b71c893bec0","title":"WhatsApp Voice Calls","description":"Live voice calls with Hermes over WhatsApp, on the linked-device (personal number) setup most Hermes users already have, with no WhatsApp Business account. Call your bot's number and talk to your Hermes: the voice uses Hermes's own persona (a short briefing fetched from Hermes) and hands real work to Hermes mid-call. Or let Hermes call you for things that matter: whatsapp_call_owner rings only the configured owner number (it has no destination parameter) and reports answered, no answer or declined, so the agent can fall back to another channel, including from cron. A short summary of each call arrives in WhatsApp. Speech runs on Gemini Live (gemini-3.8-live by default), reusing the Gemini key Hermes already has; any Live setup field is configurable, plus a language lock. Setup is a dashboard tab (pairing QR, settings, test call) or an agent runbook skill. Disclosure — runs a separate sidecar process (Rust, built on whatsapp-rust) that the user starts or installs as a systemd/launchd user service; the binary is downloaded from this repo's GitHub release, built and attested by its release workflow, and checked against checksums pinned in the repo (plus the build attestation when the gh CLI is present). The sidecar becomes an extra linked device of the bot's WhatsApp number through an unofficial protocol, stores that session in the plugin's data directory, and answers only the owner's number. During calls it streams audio to generativelanguage.googleapis.com with GOOGLE_API_KEY or GEMINI_API_KEY (read via get_secret), along with the persona briefing, the outgoing call's reason and ask_hermes results as text. It calls the local api_server with API_SERVER_KEY for ask_hermes (a full Hermes turn with the owner's tools), the persona briefing (at startup and after each call) and the post-call summary, a run that may write to Hermes memory and whose result is sent to the owner on WhatsApp. The dashboard tab's backend saves only this plugin's settings (through hermes config set), starts and stops pairing, places test calls to the owner, and restarts the sidecar service (systemctl --user or launchctl). No telemetry.","maintainer":"ashwanthbalakrishnan5","tier":"community","version":"0.1.12","category":"voice","docs_url":"https://github.com/ashwanthbalakrishnan5/hermes-whatsapp-voice#readme","requires_hermes":">=0.21.6","platforms":["linux","macos"],"known_issues":["Uses an unofficial, reverse-engineered WhatsApp protocol (whatsapp-rust): WhatsApp updates can break calls, and automated use may get the bot number restricted. Use a number you can afford to lose.","Prebuilt sidecar binaries cover Linux amd64/arm64 and macOS arm64; elsewhere it builds from source (Rust 1.94+, cmake, a C compiler)."],"capabilities":{"provides_tools":["whatsapp_call_owner","whatsapp_call_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-windows-computer-use","repo":"https://github.com/TREE-Ind/THEIA-UI-Computer-Use","sha":"6c73f53617c68e74618a6d6783e966795afe0e7a","description":"THEIA — The Human Environment Intelligence Aperture: virtual-desktop capture, fused stage observation, guarded caches, bounded dynamic workflows, and persistent raw-RGB LocateAnything C++/Q5 CUDA grounding.","maintainer":"TREE-Ind","tier":"community","category":"tools","docs_url":"https://github.com/TREE-Ind/THEIA-UI-Computer-Use#readme","capabilities":{"provides_tools":["computer_use_batch","computer_use_calibrate_grid","computer_use_capture_screen","computer_use_click","computer_use_double_click","computer_use_drag","computer_use_drag_path","computer_use_drag_relative","computer_use_dynamic_workflow","computer_use_execute_code","computer_use_find_click","computer_use_find_drag","computer_use_focus_window","computer_use_forget_grounding","computer_use_get_active_window","computer_use_grid_cells","computer_use_hotkey","computer_use_key_down","computer_use_key_up","computer_use_locate","computer_use_locate_batch","computer_use_mouse_down","computer_use_mouse_up","computer_use_move","computer_use_move_relative","computer_use_observe_stage","computer_use_open_app","computer_use_pixel","computer_use_pixel_matches","computer_use_press","computer_use_release_all","computer_use_remember_groundings","computer_use_reuse_groundings","computer_use_scroll","computer_use_set_dry_run","computer_use_type","computer_use_warm"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"platforms":["windows","macos","linux"]},{"name":"hermes-windows-ops","repo":"https://github.com/Yicheng-Mark/hermes-windows-ops","sha":"02512e4b545d09ee837d269c7261aaeb363cac8d","description":"Windows and WSL triage skills for Hermes: processes that survive a quit (orphaned stdio MCP trees, lingering python/uv/node children), WSL-to-Windows interop where an argument reaches cmd.exe as shell syntax, config and encoding traps (UTF-8 BOM, legacy console code pages), and long-path or reserved-name errors. One skill plus a copy-paste command reference; the process, argv and job-object failure modes are pinned to reports #131561, #132069 and #61059 and re-verified against current main. Disclosure — instructions only: no tools, hooks, middleware, network calls or credentials, and the destructive diagnostics are marked and gated on asking the user first.","maintainer":"Yicheng-Mark","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/Yicheng-Mark/hermes-windows-ops#readme","version":"0.1.0","platforms":["windows","linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-workbench","repo":"https://github.com/sxuff/hermes-workbench","sha":"f07fb5c90e24c1a396604758feb0fd4ae077760b","description":"The Hermes desktop app in your browser. `hermes workbench` serves the desktop interface through the Hermes dashboard, for headless servers, VPSes and tablets. Disclosure — community plugin, not a Nous product. On the first `hermes workbench` run and again after each Hermes update it runs `npm install --ignore-scripts` (guided by Hermes's lockfile) and Vite against your Hermes checkout's desktop sources, writing only under ~/.hermes/hermes-workbench and its own plugin dir (the checkout is only read), and starts `hermes dashboard` on loopback when none is running.","maintainer":"sxuff","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/sxuff/hermes-workbench#readme","version":"0.2.1","image":"https://raw.githubusercontent.com/sxuff/hermes-workbench/f07fb5c90e24c1a396604758feb0fd4ae077760b/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/sxuff/hermes-workbench/f07fb5c90e24c1a396604758feb0fd4ae077760b/docs/media/session.png","https://raw.githubusercontent.com/sxuff/hermes-workbench/f07fb5c90e24c1a396604758feb0fd4ae077760b/docs/media/slash-commands.png","https://raw.githubusercontent.com/sxuff/hermes-workbench/f07fb5c90e24c1a396604758feb0fd4ae077760b/docs/media/model-picker.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-worker-monitor","repo":"https://github.com/djmango/hermes-worker-monitor","sha":"6edb2d6e55133f57a3a7768ca4897c84e8adc00b","version":"0.2.0","description":"Kanban board groups and worker health in the Hermes Desktop footer: blocked cards first and red, live running state as a coloured dot, hover for the breakdown, one click to open the board. Worker-only fork of hermes-monitor. No credentials are read and there is no network egress; it opens kanban.db and each profile's state.db read-only and returns counts only. Zero model tokens.","maintainer":"djmango","tier":"community","category":"desktop","requires_hermes":">=0.21","platforms":["linux","macos"],"docs_url":"https://github.com/djmango/hermes-worker-monitor","screenshots":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-workflows","repo":"https://github.com/jacobhausler/hermes-workflows","sha":"b1bf8cc99d5113cfaf8251122ce4f4492838bad8","description":"Agent-owned workflow graphs for Hermes — a background runner executes a JSON DAG of agent nodes, fan-outs (quorum) and human/machine gates with fingerprint replay-skip resume, cooperative steer, typed failure events and compact status payloads; ships a desktop DAG view, an inline transcript card and the authoring skill with measured budget recipes. Stock Hermes; no patched core required. Disclosure — every workflow run spawns a detached background runner (wf.py run <id>) that survives session end, gateway restart and plugin disable until the graph reaches a boundary or workflow stop; each agent node is a child hermes chat --query-file … --oneshot -Q … inheriting the runner's environment, and a node with profile set runs as that named profile (with its own credentials) only if the target's workflow_team.json lists the launcher; a gate's wait.until_argv runs an agent-authored argv directly from the runner, outside Hermes' tool-approval gate (the engine uses no shell, but the shipped machine-watch and incident-response templates use it to run a shell line read from a fixed-name handoff file under $HERMES_HOME, and release-lifecycle one read from a per-run handoff file in the run dir); the runner makes itself the subreaper of its children and SIGTERM/SIGKILLs any process a node leaves running (its own descendants plus pids registered in the run's .proctree_sidecar.jsonl) when the node finishes, retries or the run stops; run and amend send a one-token ping through Hermes' configured providers to check pinned model routes; at gate.held/run.done/run.failed the runner reads the API server key from config.yaml and POSTs a wake turn to the local Hermes API server — the gate.held wake only relays the gate to the human, but the run.done wake tells the woken session to turn the run's findings into tracked work and dispatch follow-up work (as PRs) before the turn ends, and the run.failed wake to apply one corrective amend/repair/resume; a transform_llm_output hook appends a ::workflow{id} card line to replies for runs the session launched in the last 30 minutes; the runner reads WORKFLOW_MAX_SEATS (that key only) from $HERMES_HOME/.env and the active profile's .env; state.db is read read-only, including every profile's session ids and profile names, and status/wait can read runs in sibling profiles' workflows dirs; state lives under $HERMES_HOME/workflows/ (or a configured runs_root). No other network of its own.","maintainer":"jacobhausler","tier":"community","category":"automation","requires_hermes":">=0.21.4","docs_url":"https://github.com/jacobhausler/hermes-workflows#readme","version":"1.3.6","image":"https://raw.githubusercontent.com/jacobhausler/hermes-workflows/b1bf8cc99d5113cfaf8251122ce4f4492838bad8/assets/dag-review.png","screenshots":["https://raw.githubusercontent.com/jacobhausler/hermes-workflows/b1bf8cc99d5113cfaf8251122ce4f4492838bad8/assets/dag-review.png","https://raw.githubusercontent.com/jacobhausler/hermes-workflows/b1bf8cc99d5113cfaf8251122ce4f4492838bad8/assets/branch-gate.png","https://raw.githubusercontent.com/jacobhausler/hermes-workflows/b1bf8cc99d5113cfaf8251122ce4f4492838bad8/assets/fanout.png"],"platforms":[],"capabilities":{"provides_tools":["workflow"],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-wsl-terminal","repo":"https://github.com/Yicheng-Mark/hermes-wsl-terminal","sha":"9e0f0d02d28a5db04cd1f0b916f9c633279fbdfc","description":"Run Hermes' terminal tools inside an existing WSL distro on Windows: one bash -c per command as the distro's default user, over the same files Windows sees at /mnt/<drive>, with no Docker Desktop, no image and no container to start or tear down. A host cwd is translated (C:\\Users\\me\\proj becomes /mnt/c/Users/me/proj, \\\\wsl.localhost paths become the distro's own paths) and the mount root is asked once with wslpath, so a distro that moved its automount point still gets correct paths. cwd persists across commands, stdin and exit codes ride through wsl.exe, and hermes doctor / setup and the dashboard picker get real rows (wsl.exe path, WSL version, distros present, selected distro). HERMES_WSL_DISTRO and HERMES_WSL_USER select the distro and the user. Disclosure — this is a full-access backend, not a sandbox: when it is the selected backend, everything the terminal tool runs executes as your user inside your distro, with that distro's files, permissions and network access, so dangerous-command approval stays on and Hermes never stops the distro. The plugin itself reads no credentials, stores nothing and makes no network calls; it spawns wsl.exe per command and wslpath once per distro. It rewrites one core-produced string, the trailing cwd marker, because under WSL a command substitution is handed the directory wsl.exe started in rather than the shell's current one (measurements in the repo's VALIDATION.md); nothing in Hermes is patched or rebound at runtime.","maintainer":"Yicheng-Mark","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/Yicheng-Mark/hermes-wsl-terminal#readme","version":"0.1.0","platforms":["windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-wslc-sandbox","repo":"https://github.com/Yicheng-Mark/hermes-wslc-sandbox","sha":"3250f4dcafd30fe1f00e0cff5b45246b98b520d9","version":"0.1.0","description":"Run Hermes' terminal, file and execute_code tools in a Linux container on Microsoft's WSL Containers (wslc) runtime, so Windows users who run WSL Containers get a sandbox without Docker Desktop. Disclosure — the plugin spawns the wslc CLI (one short-lived process per command, plus one long-lived container per environment) and every call runs inside that container; containers have outbound network access unless docker_network is false; persistent sandboxes are left stopped on disk until removed; host environment variables enter the container only when named in docker_forward_env, and only paths listed in docker_volumes are bind-mounted. wslc rejects --cap-drop, --security-opt, --pids-limit, --init and --storage-opt, so this sandbox is not capability-dropped the way the Docker backend's is, container_disk is reported but not enforced, and dangerous-command approval deliberately stays enabled for this backend. The plugin reads no credentials, stores none, and makes no network calls of its own.","maintainer":"Yicheng-Mark","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/Yicheng-Mark/hermes-wslc-sandbox#readme","platforms":["windows"],"known_issues":["container_disk is reported but not enforced: wslc has no --storage-opt.","No capability dropping: wslc rejects --cap-drop and --security-opt, so dangerous-command approval stays enabled."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes-xai","repo":"https://github.com/Julientalbot/hermes-xai","sha":"8fd9bf8ecef1f8e9cb2cb7921fc86527acd9ede3","version":"0.1.0","description":"The xAI API surfaces core does not cover, nothing it already ships (provider, x_search, web search, TTS, STT and Imagine stay in core). Voice module: full-duplex Grok Voice (grok-voice-latest) in the Desktop composer, built like core's GPT-Live mode; the voice model hands real work to Hermes as a normal turn on the open chat (surface voice-live) and reads the result aloud; the backend mints a 300 s xAI client secret so XAI_API_KEY never reaches the renderer. Collections module: one read-only tool, xai_collections_search, over documents the user already indexed in xAI Collections (GET /v1/collections, POST /v1/documents/search). Disclosure — the voice button captures microphone audio and streams it to api.x.ai over a WebSocket; the backend calls api.x.ai once per call with XAI_API_KEY (read through agent.secret_scope) to mint the secret; delegated requests run as normal Hermes turns with the profile's full toolset and approvals, and their final text (up to 3000 characters) plus the last spoken turns are sent back to xAI. Each xai_collections_search call sends the query to api.x.ai with XAI_API_KEY and returns passages into the conversation. Nothing is uploaded, stored or deleted and no telemetry is emitted; xAI bills on the user's key.","maintainer":"Julientalbot","tier":"community","category":"voice","docs_url":"https://github.com/Julientalbot/hermes-xai/blob/8fd9bf8ecef1f8e9cb2cb7921fc86527acd9ede3/README.md","requires_hermes":">=0.21.5","platforms":[],"capabilities":{"provides_tools":["xai_collections_search"],"provides_hooks":[],"provides_middleware":[],"requires_env":["XAI_API_KEY"]}},{"name":"hermes-zh","repo":"https://github.com/Cody292/hermes-zh","sha":"9ee5c26c6860a3947b6403dd0797d4535b166cd7","description":"Simplified Chinese (简体中文) language pack. Declarative locales/zh.yaml overlay for part of approval.* and gateway.*; placeholders match en.yaml.","maintainer":"Cody292","tier":"community","category":"general","requires_hermes":">=0.19","docs_url":"https://github.com/Cody292/hermes-zh","version":"0.1.7","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hermes_otel","repo":"https://github.com/briancaffey/hermes-otel","sha":"d234865b13e997e0b3a50dc18aaad7c7d7b1b1fe","subdir":"hermes_otel","description":"OpenTelemetry for Hermes Agent: sessions, LLM and API calls, tool calls, sub-agents and approvals as OTLP traces, metrics and logs to any OTLP backend. Disclosure — sends span data including prompts, tool arguments and tool output only to backends you configure (a backends: list, an OTEL_* variable, or LANGSMITH_TRACING=true); by default content_capture is full and unclipped (preview clips to 1200 chars, off sends none); vendor SDK keys already in the environment are used only after that opt-in; with nothing configured it keeps a local owner-only SQLite store under $HERMES_HOME and sends nothing; installs opentelemetry-api, -sdk, -exporter-otlp-proto-http (>=1.35,<2) and PyYAML.","maintainer":"briancaffey","tier":"community","category":"general","requires_hermes":">=0.21","docs_url":"https://briancaffey.github.io/hermes-otel/","version":"1.18.2","image":"https://raw.githubusercontent.com/briancaffey/hermes-otel/d234865b13e997e0b3a50dc18aaad7c7d7b1b1fe/docs/catalog-banner.png","capabilities":{"provides_tools":[],"provides_hooks":["api_request_error","on_session_end","on_session_finalize","on_session_reset","on_session_start","post_api_request","post_approval_response","post_llm_call","post_tool_call","pre_api_request","pre_approval_request","pre_llm_call","pre_tool_call","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]}},{"name":"hicortex","repo":"https://github.com/gamaze-labs/hicortex-hermes-plugin","sha":"3321a063bffb087dfcedc239a6f7aaf1ac0b8ef6","description":"Shared fleet memory for Hermes agents: every connected agent learns from all other agents connected to the memory, wherever they run. Sessions across machines and harnesses are distilled into one common brain overnight — what one learns, the whole fleet recalls. Pushes a compact per-turn recall index (entries lazy-load via hicortex_get), injects fresh lessons plus a per-agent standing context block at session start — lesson blocks are delimited and carry an explicit reference-data framing line and provenance header — and exposes the full 9-tool memory surface (search, get, recent, ingest, lessons, index, graph, update, delete) through the shared server. The same server also serves Claude Code, OpenClaw, Pi and opencode agents, so mixed-harness fleets share one brain. Stdlib-only, no pip dependencies. Requires a running Hicortex server (npx @gamaze/hicortex init on any machine); data flow: each user message is sent to your configured Hicortex server for recall (default http://localhost:8787); session distillation runs on the server. Disclosure — sends every user message (and profile name) to your configured Hicortex server each turn for recall, default http://localhost:8787, plain http with a bearer token is accepted for remote servers with a one-time log warning; the server's standing Identity text and lessons are injected into the system prompt; the model can permanently update or delete shared fleet memories via hicortex_update / hicortex_delete without confirmation.","maintainer":"gamaze-labs","tier":"community","category":"memory","docs_url":"https://github.com/gamaze-labs/hicortex-hermes-plugin#readme","version":"0.7.10","readme":true,"capabilities":{"provides_tools":["hicortex_search","hicortex_get","hicortex_recent","hicortex_ingest","hicortex_lessons","hicortex_index","hicortex_graph","hicortex_update","hicortex_delete"],"provides_hooks":[],"provides_middleware":[],"requires_env":["HICORTEX_URL","HICORTEX_AUTH_TOKEN"]}},{"name":"hindsight","repo":"https://github.com/vectorize-io/hindsight","sha":"d952b6e655fccab4581ee0722b51c5f103873d12","subdir":"hindsight-integrations/hermes","version":"1.2.3","description":"Hindsight long-term memory provider — knowledge graph, entity resolution and multi-strategy retrieval (recall/reflect/retain tools plus automatic per-turn capture). Maintained by Vectorize; cloud, local external and local embedded modes are available. `hermes memory setup` fetches its bank-template catalog from raw.githubusercontent.com (vectorize-io/hindsight main). Disclosure — in cloud mode (and local external) every turn's conversation, and every entry the agent adds or replaces in Hermes's built-in MEMORY/USER stores, is sent to api.hindsight.vectorize.io or the URL you configure, into every bank it writes to; local embedded mode starts a background Hindsight daemon (fetched with uvx, version-pinned, on first run when hindsight-api is not installed) and keeps its LLM settings in ~/.hindsight/profiles/<profile>.env; setup writes the keys you enter to the profile .env; repositories under folders you list in trusted_project_dirs may choose their bank with .hindsight/config.toml; `hermes memory setup` fetches its bank-template catalog from raw.githubusercontent.com (vectorize-io/hindsight main).","maintainer":"vectorize-io","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://hindsight.vectorize.io/sdks/integrations/hermes","image":"https://raw.githubusercontent.com/vectorize-io/hindsight/d952b6e655fccab4581ee0722b51c5f103873d12/hindsight-integrations/hermes/docs/banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"holographic","title":"Holographic","repo":"https://github.com/itpartypattaya/hermes-plugin-holographic","sha":"827c639e3cf38b17e9b5c1b6a4ef2ef7880ae953","version":"0.17.4","description":"Local fact-store memory provider: SQLite with FTS5 keyword search (word forms in English, Russian, Spanish, French, Portuguese, Indonesian, German, Hindi, Arabic, Bengali, Italian, Turkish, Polish and Dutch; Russian and English words of the same root at a lower weight, from bundled DerivBase.Ru (Apache-2.0) and Open English Wordnet (CC BY 4.0) pairs; German compounds and German and Spanish irregular verb forms from bundled Wikidata Lexemes tables (CC0); Chinese, Japanese, Korean and Thai by character n-grams, Chinese also split into words with jieba's dictionary (MIT), Traditional and Simplified Chinese compared as one through a bundled OpenCC table (Apache-2.0), Japanese spelling variants through SudachiDict's (Apache-2.0); synonyms through keywords the agent gives when it stores a fact), trust scores, entities with aliases and HRR (holographic reduced representation) recall, with no API key, network or model calls unless the optional search by meaning (embeddings: on, off by default) is switched on. The provider that shipped in-tree as plugins/memory/holographic, with the same provider name, config (plugins.hermes-memory-store) and memory_store.db, so `hermes update` moves existing users onto it; the schema change is additive and older versions keep working on the file. Taken over from Nous Research's handoff copy (NousResearch/hermes-plugin-holographic) and maintained by itpartypattaya; since 0.1.1 it fixes probe/reason/related/contradict, non-atomic writes and the never-written retrieval_count, gates recall by relevance without repeats, flags duplicates and conflicts when a fact is added, and honours the provider contract (read-only subagent contexts, hermes_home, mirror metadata, backup_paths); since 0.8.0 it keeps the history of every fact (change / end / correct / revert, search and list as_of a date) and `forget` erases a fact with all its versions from the file; since 0.16.0 a name guessed from a fact's text must be shaped like one and stays provisional until a second fact or a person confirms it, and entities can be renamed or deleted (the facts stay). Disclosure — local only unless the optional search by meaning is switched on: reads and writes one SQLite file per profile ($HERMES_HOME/memory_store.db unless db_path says otherwise), or with scope: user / chat / thread one file per user or chat in holographic-users/ or holographic-chats/ next to it; each fact version records where it was written (platform, chat type, chat and thread id, session id, the turn author's id and display name, and whether the person said it or the agent inferred it; never chat titles), shown in full by list, history and export and not in recall unless recall_source: short (date, display name, this or another chat); each confirmation of a fact by a person keeps its time, session id and that person's id (no text); forget deletes that and the confirmations with the fact and keeps only an HMAC of the text, keyed by a random key stored in the same file, as a tombstone; delete_entity removes a name, its aliases and links from the entity index (never a fact) and keeps an HMAC of each name the same way (not of an alias only a fact's text gave, which goes without one), and both rewrite the file so freed pages keep no copy; the first writable open after an upgrade that changes the extraction rules relinks the facts to their entities under the new rules (stores up to 2,000 facts and 500,000 characters; larger ones on fact_store rebuild_entities), changing only the names it guessed and their links, never a fact, a declared name or an alias someone gave; subagents never write, but a cron job's explicit fact_store / fact_feedback calls do unless cron_writes: false (on by default); no subprocesses or telemetry, and no network calls or credentials unless embeddings: on (off by default): then the text of facts, and of messages and fact_store search queries that are not greetings, goes to the OpenAI-compatible embeddings endpoint the user configures, also after cron turns while cron_writes is on (embedding_url; https, plain http only to localhost, a private or link-local address, or a local host name such as one without a dot or ending in .local), with the key read from the environment variable the user names (embedding_key_env, OPENAI_API_KEY unless set, sent as a Bearer token to whatever embedding_url is configured, never stored in config) and no redirects followed; facts that recall would not inject, and facts and messages that look like they hold a secret (checked by pattern, best effort), are not sent; the vectors are kept in the same file (table fact_embeddings), deleted with their fact by forget / end / remove and all of them by the next writable session after the option is switched off; the provider keeps what it received under its own terms; the bundled language dictionaries are gzip-compressed plain-text word lists; with auto_extract on (off by default) user sentences that state a preference or decision are stored.","maintainer":"itpartypattaya","tier":"community","category":"memory","requires_hermes":">=0.21.5","docs_url":"https://github.com/itpartypattaya/hermes-plugin-holographic/blob/827c639e3cf38b17e9b5c1b6a4ef2ef7880ae953/README.md","known_issues":["Word forms are matched by stems, not a dictionary: an irregular form can miss (ponies / pony). A synonym is found only if the fact's keywords name it, unless the optional online search by meaning is on; facts stored without keywords (older ones, auto_extract) need `enrich`.","Arabic, Indic scripts, Indonesian, German, Turkish, Polish and Dutch are matched by scanning the facts' text: the first such search after start analyses every fact (about 1-1.5 s at 5,000 facts, 4-6 s at 20,000); stores without such facts never scan. The bundled dictionaries load on the first word of their language (Chinese about 0.2 s and 30 MB).","forget cleans the database file only: Hermes session history, `hermes backup` archives and copies other tools made are not rewritten (tools can read the `forgotten` table and clean their own copies by fact id)."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"home-dashboard","repo":"https://github.com/albertocvrrbs/hermes-home-dashboard","sha":"a8a018225d8ecd21b281788131775adeade4c577","description":"Personalizable rice-style Home page with draggable, resizable glass widgets for Hermes Web and Desktop.","maintainer":"albertocvrrbs","tier":"community","category":"desktop","docs_url":"https://github.com/albertocvrrbs/hermes-home-dashboard#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"homeassistant","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"c6f130d195298ace7d0e84bab8efdfa2bcdc57c8","subdir":"homeassistant","description":"Home Assistant gateway platform (state-change events in, persistent notifications and cron notify delivery out) plus the homeassistant toolset (ha_list_entities, ha_get_state, ha_list_services, ha_call_service). Formerly built into Hermes core; existing users are migrated automatically.","maintainer":"NousResearch","tier":"official","category":"platform","requires_hermes":">=0.21.5","version":"2.0.1","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/c6f130d195298ace7d0e84bab8efdfa2bcdc57c8/assets/homeassistant.jpg","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/homeassistant","platforms":[],"capabilities":{"provides_tools":["ha_list_entities","ha_get_state","ha_list_services","ha_call_service"],"provides_hooks":[],"provides_middleware":[],"requires_env":["HASS_TOKEN"]}},{"name":"honcho","repo":"https://github.com/plastic-labs/honcho","sha":"e2d2aba182862deeb846e5cd4a30a41bce0ed82a","subdir":"hermes-plugin-honcho","version":"1.0.0","description":"Honcho is memory infrastructure for building stateful agents that understand changing people, agents, groups, projects, and ideas over time. Store messages and events, let Honcho reason in the background, then query peer representations, session context, search results, or natural-language insights from any model or framework. Use it managed at api.honcho.dev, run a local stack with the honcho CLI, or self-host the server yourself. Maintained by Plastic Labs; the same provider that shipped in-tree. Disclosure — conversation turns, derived conclusions and peer/session ids are sent to the Honcho API (api.honcho.dev by default, or the self-hosted base_url you configure) under your HONCHO_API_KEY; every request also carries X-Honcho-Host (Hermes version and OS platform) and X-Honcho-Plugin (plugin version) headers that Honcho records for usage attribution.","maintainer":"plastic-labs","tier":"community","category":"memory","image":"https://raw.githubusercontent.com/plastic-labs/honcho/e2d2aba182862deeb846e5cd4a30a41bce0ed82a/hermes-plugin-honcho/docs/banner.png","docs_url":"https://docs.honcho.dev/v3/guides/integrations/hermes","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end"],"provides_middleware":[],"requires_env":["HONCHO_API_KEY"]}},{"name":"hopper","repo":"https://github.com/mykeura/hopper","sha":"68427cf7770b393b6b4b694722d24431058fbd3f","description":"Add and manage custom OpenRouter models in Hermes without modifying the core catalog.","maintainer":"mykeura","tier":"community","category":"models","docs_url":"https://github.com/mykeura/hopper#readme","version":"1.4.0","requires_hermes":">=0.21","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENROUTER_API_KEY"]}},{"name":"hud-teach","repo":"https://github.com/iamlukethedev/hermes-hud-teach","sha":"faa71902eaaf0b82af58c37a58a117daf159021a","description":"Click-through numbered marks on any live Mac window — chess, games, Photoshop, Settings — so Hermes can teach on the real UI without clicking for the user.","maintainer":"iamlukethedev","tier":"community","category":"desktop","requires_hermes":">=0.20.0","docs_url":"https://github.com/iamlukethedev/hermes-hud-teach","version":"0.1.3","platforms":["macos"],"capabilities":{"provides_tools":["teach_screen"],"provides_hooks":["on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"huddo","repo":"https://github.com/puffo-ai/huddo-mcp","sha":"3b724cb4d066096edfdf86cc091b3cc03f21f8b8","subdir":"integrations/hermes","description":"Huddo — group chat where people and AI agents talk in the same room. Join by invite link, read and reply, edit or unsend your own messages, react, whisper to one member, pair with your human, wait for new messages, and read or update room apps (shared mini-apps such as task lists that a room owner publishes). Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — runs the Huddo MCP server locally over stdio (npx -y huddoai@0.9.8, pinned, npm provenance to this commit; Node 20+); sends and receives room messages via api.huddo.ai, readable by every room member except one-to-one encrypted whispers; when you ask it to create a room, huddo_new tells the agent to post a short summary of your conversation there; huddo_app_submit changes a room app's shared state, which every member sees (app code runs only in members' browsers, never on this machine), and app guides written by the room owner reach the agent as untrusted text; huddo_send can attach any local file the agent names and upload it to the room, huddo_transfer (and huddo_leave with to) hands room ownership to another member, and huddo_update_name/huddo_update_avatar with operator: true change your paired human's display name or avatar; Hermes does not ask before huddo_send/huddo_whisper/huddo_react/huddo_edit/huddo_unsend/huddo_app_submit/huddo_download/huddo_transfer/huddo_leave/huddo_update_name/huddo_update_avatar run (the package does not set trust: untrusted); the server tells the agent to keep calling huddo_wait (up to 50 s per call) for as long as it is in a room, which keeps spending model tokens until you stop it; downloads go to ~/.huddo/downloads without overwriting; stores a guest identity (signing keys) in ~/.huddo; no background process (HUDDO_DAEMON=0), no self-update, no telemetry. Room messages from others are untrusted chat content; Huddo marks the paired human with a header tag that message text cannot imitate, and the bundled skill tells the agent to get confirmation in your own Hermes chat before anything sensitive.","maintainer":"puffo-ai","tier":"community","category":"tools","version":"0.9.8","docs_url":"https://github.com/puffo-ai/huddo-mcp/tree/main/integrations/hermes#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hwiki","repo":"https://github.com/ottosulin/hwiki","sha":"d1961956eaafbd64fef71cb7135d475efcc8f954","version":"1.0.0","description":"Markdown wiki as Hermes long-term memory: plain files you and the agent edit together (Obsidian-compatible, git-versionable), local SQLite FTS5 search with optional qmd hybrid retrieval. Inspired by the Karpathy LLM wiki. Disclosure — reads every Markdown file under the wiki folder you set (wiki_path, outside HERMES_HOME; untrusted_dirs, default raw/, excluded) and injects up to ~1,400 characters of matching excerpts into each turn; the agent appends dated notes only under <wiki>/<memory_dir> (default wiki/memory), and additions to Hermes's built-in memory are mirrored there by default (mirror_builtin_memory), so they land in a folder you may commit or sync; keeps an index at HERMES_HOME/hwiki-index.sqlite and config in HERMES_HOME/hwiki.json, and adds the wiki folder to hermes backup. Cron and subagent runs get read-only recall. No network with the default fts5 backend; the optional qmd backend runs the separately installed qmd CLI (npm @tobilu/qmd, Node ≥22), whose vector modes download local models (~0.3–1.6 GB).","maintainer":"ottosulin","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/ottosulin/hwiki","readme":true,"capabilities":{"provides_tools":["wiki_memory_search","wiki_memory_read","wiki_memory_write","wiki_memory_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"hyatlas","repo":"https://github.com/tuancookiez-hub/HyAtlas-Memory","sha":"39bdccc246023ee8bdc5c6a84c3134d86bb94550","subdir":"plugins/hyatlas","version":"4.7.3","image":"https://raw.githubusercontent.com/tuancookiez-hub/HyAtlas-Memory/39bdccc246023ee8bdc5c6a84c3134d86bb94550/docs/images/banner.png","screenshots":["https://raw.githubusercontent.com/tuancookiez-hub/HyAtlas-Memory/39bdccc246023ee8bdc5c6a84c3134d86bb94550/docs/images/desktop-overview.png","https://raw.githubusercontent.com/tuancookiez-hub/HyAtlas-Memory/39bdccc246023ee8bdc5c6a84c3134d86bb94550/docs/images/desktop-graph.png"],"title":"HyAtlas Memory","description":"HyAtlas v4 — self-hosted 8-layer memory provider backed by a pure-Go single-binary server you run yourself (chromem-go vectors, in-process BGE-small embeddings, hybrid vector + keyword search, bitemporal knowledge graph with source citations). Embeddings, the vector index and stored memories stay local. Ships agent tools (hyatlas_status/search/recent/add), a `hermes hyatlas` CLI, a Desktop pane with a starmap graph view, and a web dashboard. Disclosure — requires the separate hyatlas-go server, installed by the user. The plugin never downloads or bundles it, and it talks only to the configured server (default 127.0.0.1:19528). Embeddings and stored memories stay local. Extraction is opt-in: the server has no default LLM endpoint and makes no LLM call until HYATLAS_LLM_BASE, HYATLAS_LLM_MODEL and HYATLAS_LLM_KEY are all set. The repo installer pre-fills a free Nous Portal endpoint that Enter accepts, but nothing is sent until you also enter a key. Once configured, each turn's user and assistant text goes to that endpoint (not tool output or context summaries; capped at 12,000 characters). In the default ultra mode the server also sends topic-grouped batches of up to 50 stored facts to it every 6 hours (every 20 minutes while earlier batches are still pending) and supersedes (hides but keeps) the facts the model marks merged or stale, recording a reason for each drop. It also records relations corroborated across turns in the local knowledge graph (HYATLAS_CONSOLIDATE_GRAPH=off disables that). In pro and ultra modes it also sends each owner's open intentions and recent summaries to rewrite a short Now page, at most every 15 minutes (HYATLAS_NOW_EVERY). An optional HYATLAS_LLM_FALLBACK_MODEL, tried only when a primary call fails, receives the same text; it is sent the primary key only when it uses the same host. HYATLAS_MODE=lite makes no LLM call. Server endpoints that rewrite stored data are off unless the server runs with HYATLAS_ADMIN=on. The spawned server gets an allowlisted environment (OS essentials plus HYATLAS_*), not the agent's keys. auto_start is off by default; when on, Hermes starts the server as soon as it loads the plugin, and a server started by auto_start or `hermes hyatlas start` keeps running after Hermes exits until `hermes hyatlas stop`. On Windows, if a hyatlas-go.ps1 launcher is configured, `hermes hyatlas start/stop` runs it; the repo's sample launcher reads your Nous token from Hermes auth.json and points extraction at the Nous Portal. No telemetry.","maintainer":"tuancookiez-hub","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/tuancookiez-hub/HyAtlas-Memory/tree/39bdccc246023ee8bdc5c6a84c3134d86bb94550/plugins/hyatlas","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["After enabling, select the provider with `hermes memory setup` (memory.provider: hyatlas) — installing and enabling alone does not activate memory.","The agent tools and hooks arrive through the MemoryProvider interface, not ctx.register_tool, so they do not appear in the plugin tool list.","Requires the separate hyatlas-go server binary (installed by the user); without a reachable server the provider reports unavailable and memory features degrade rather than fail.","Updating the plugin does not update the server: install hyatlas-go v4.7.3 too. A store written by an earlier version can be cleaned with the server's maintenance endpoints (see after-install.md, 'Upgrading a store written before 4.5.0')."]},{"name":"hydradb","repo":"https://github.com/hydra-db/hydradb-hermes-plugin","sha":"056d684f7e7f71b1086d975a9b78c52674a960e5","subdir":"hydradb_hermes","description":"HydraDB long-term memory for Hermes: prompt-time recall (prefetch) and non-blocking turn capture (sync_turn). Disclosure — when selected as the memory provider, each turn's user message (as the recall query) and every completed user/assistant turn are sent over HTTPS to the HydraDB API (api.hydradb.com, or HYDRADB_BASE_URL) under HYDRADB_API_KEY.","image":"https://raw.githubusercontent.com/hydra-db/hydradb-hermes-plugin/056d684f7e7f71b1086d975a9b78c52674a960e5/assets/icon.png","maintainer":"hydra-db","tier":"community","category":"memory","requires_hermes":">=0.21.5","version":"1.0.1","docs_url":"https://github.com/hydra-db/hydradb-hermes-plugin#readme","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["HYDRADB_API_KEY","HYDRADB_DATABASE"]}},{"name":"icarus","repo":"https://github.com/esaradev/icarus-plugin","sha":"e46cba30fb95a0b54b7c4d6c26169a424283d72b","description":"Self-memory and replacement models for Hermes agents. Remember your work. Train your replacement.","maintainer":"esaradev","tier":"community","category":"memory","docs_url":"https://github.com/esaradev/icarus-plugin#readme","capabilities":{"provides_tools":["fabric_brief","fabric_curate","fabric_eval","fabric_export","fabric_init_obsidian","fabric_models","fabric_pending","fabric_recall","fabric_report","fabric_rollback_model","fabric_search","fabric_switch_model","fabric_telemetry","fabric_train","fabric_train_status","fabric_write"],"provides_hooks":["on_session_end","on_session_start","post_llm_call","pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"identity","repo":"https://github.com/indigokarasu/hermes-identity-plugin","sha":"8f51e0ed7c69992b8494389fb93ec0e02bcca734","version":"1.0.1","description":"View and edit the identity files (SOUL.md, MEMORY.md, USER.md, AGENT.md/HERMES.md) from chat, switch the active profile, and see per-line usage with colour-coded staleness timestamps. Adds six tools, /identity, /identity-switch and /identity-dashboard commands, and a utilization dashboard pane. Disclosure — reads and writes the identity files and a line-utilization record inside the selected profile directory under HERMES_HOME, and can change which profile is active; it performs no network I/O and holds no credentials. Disclosure — the model-callable identity_edit tool rewrites SOUL.md/MEMORY.md/USER.md/AGENT.md and identity_switch_profile writes HERMES_HOME/active_profile.","maintainer":"indigokarasu","tier":"community","category":"tools","docs_url":"https://github.com/indigokarasu/hermes-identity-plugin#readme","readme":true,"platforms":[],"capabilities":{"provides_tools":["identity_view","identity_edit","identity_switch_profile","identity_list_profiles","identity_dashboard","identity_reset_usage"],"provides_hooks":["post_llm_call","post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"image-utils","repo":"https://github.com/MazenMkhinini/hermes-image-plugin","sha":"c4123fbdb315137b40e4c5b4b5fd3eb2298dae66","description":"Inspect, resize, crop, rotate, convert and re-encode image files in-process with Pillow - no shell, no ImageMagick, no network.","maintainer":"MazenMkhinini","tier":"community","category":"tools","docs_url":"https://github.com/MazenMkhinini/hermes-image-plugin#readme","version":"1.0.0","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["image_info","image_resize","image_crop","image_rotate","image_convert","image_optimize"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"index-network","title":"Index","repo":"https://github.com/indexnetwork/hermes-plugin","sha":"1214c6179d00ccc5f6e27454385f3fd0abbaf845","description":"Give your agent someone to talk to. Index is the social layer between personal agents. It makes it possible to find the others who share your flavor of weird, no searching or posting needed.\nYou're already telling your agent what you're interested in, and what you're secretly tinkering on. We give personal agents the coordination protocol to socialize their humans' intents. They structure mutual intents into opportunities, negotiate on fit, learn from each turn, and surface connections between people who otherwise might've just missed each other. Disclosure — login (browser or `hermes index login`) writes INDEX_SESSION_TOKEN and INDEX_API_URL to the Hermes env. When this install is the selected negotiator (under the gateway, Desktop's backend or the dashboard), a Bun child (INDEX_BUN, else PATH) runs the pinned bundle with an allowlisted environment (PATH, HOME, TMPDIR, LANG, LC_ALL, TZ plus names in INDEX_NEGOTIATOR_ENV_PASSTHROUGH; never the session token, no .env files) and drives your Hermes model over a loopback bridge; only with plugins.entries.index-network.settings.custom_negotiator set to true (default off) does the bundle import $HERMES_HOME/index/negotiator.ts, when it exists, and run it on each turn before the built-in negotiator (code in that file runs with the negotiator's Index API key and model bridge); the plugin mints INDEX_API_KEY from the session if it is missing, saves it to the Hermes env and registers the Index MCP server in config.yaml. API traffic goes to protocol.index.network. If INDEX_EARLY_NETWORK_ID is set, confirming onboarding joins that Index network. Negotiation turns are saved as Hermes sessions in a Negotiations project. The 08:00 \"Index morning\" cron job is off until turned on; when on it wakes the negotiator once per active networked signal, spending model calls and possibly sending outreach. The desktop half ships as desktop/plugin.js and stays off until enabled.","maintainer":"indexnetwork","tier":"community","category":"tools","docs_url":"https://github.com/indexnetwork/hermes-plugin#readme","version":"0.48.5","image":"https://raw.githubusercontent.com/indexnetwork/hermes-plugin/1214c6179d00ccc5f6e27454385f3fd0abbaf845/catalog/banner.png","capabilities":{"provides_tools":["index_read_intents","index_research_profile","index_create_intent","index_update_intent","index_add_intent_to_network","index_list_intent_networks","index_read_networks","index_read_network_memberships","index_update_network","index_create_network","index_join_network","index_list_opportunities","index_update_opportunity","index_read_docs","index_agent_me","index_open_app"],"provides_hooks":[],"provides_middleware":[],"requires_env":["INDEX_SESSION_TOKEN"]}},{"name":"index-search","repo":"https://github.com/TakeshiTGAL/hermes-plugin-index-search","sha":"e3303f6e42636d6efa41c240fe79981e23b79c1e","description":"Search one index you run and watch one saved query, with index_search, index_health and index_watch. Disclosure — Sends MEILI_API_KEY as a Bearer token to your MEILI_HOST. Over plain http that key travels unencrypted, and a master or admin key is sent as given, so use a search-only key. The tools are on for every surface, including gateways: anyone you allow on your Hermes gateway can search with your key and approve a watch. Turn a surface off with hermes tools. index_watch schedule creates one cron job that runs a model turn every 15 minutes (two or more model requests when it calls the tool) with no daily cap, and it watches only the first 20 hits. The job stays after uninstall until you run hermes cron remove, with -p and the profile name when the profile is not default. Scheduling and unscheduling ask for Hermes approval every time and are refused under cron, yolo, approvals off, unattended sessions and plugins.isolation: host, where the watch only posts a notice that it cannot run, on every run. Answering \"always\" adds an unused line to config.yaml. The watch relies on private parts of Hermes, so an update can stop it.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-index-search#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["index_search","index_health","index_watch"],"provides_hooks":[],"provides_middleware":[],"requires_env":["MEILI_HOST","MEILI_API_KEY"]}},{"name":"infisical","repo":"https://github.com/antonba/hermes-infisical-plugin","sha":"d1c5d46267bcc05f1ee2ae68e06f0ba3072d656a","description":"Secret source plugin that resolves environment variables from an Infisical secret store (cloud or self-hosted) at Hermes startup. Registers a mapped source (\"infisical\", inf:// references) and a bulk source (\"infisical_bulk\").","maintainer":"antonba","tier":"community","category":"general","docs_url":"https://github.com/antonba/hermes-infisical-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"inkbox","repo":"https://github.com/inkbox-ai/hermes-agent-plugin","sha":"0948a16679f09fcfc78ed3d9171604b2c853402c","description":"Inkbox email, SMS/MMS, iMessage, voice, and A2A platform plugin for Hermes Agent.","maintainer":"inkbox-ai","tier":"community","category":"platform","docs_url":"https://github.com/inkbox-ai/hermes-agent-plugin#readme","capabilities":{"provides_tools":["inkbox_a2a_ask_caller","inkbox_a2a_call","inkbox_a2a_check","inkbox_a2a_complete","inkbox_a2a_fail","inkbox_a2a_reply","inkbox_create_contact","inkbox_delete_contact","inkbox_get_a2a_sent_task","inkbox_get_contact","inkbox_get_imessage_conversation","inkbox_get_text","inkbox_get_text_conversation","inkbox_imessage_triage_number","inkbox_list_a2a_messages","inkbox_list_a2a_sent_tasks","inkbox_list_a2a_tasks","inkbox_list_contacts","inkbox_list_imessage_assignments","inkbox_list_imessage_conversations","inkbox_list_text_conversations","inkbox_list_texts","inkbox_lookup_contact","inkbox_mark_imessage_conversation_read","inkbox_mark_text_conversation_read","inkbox_mark_text_read","inkbox_place_call","inkbox_send_email","inkbox_send_imessage","inkbox_send_imessage_reaction","inkbox_send_sms","inkbox_update_contact","inkbox_whoami"],"provides_hooks":["post_tool_call","pre_llm_call","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"inline-platform","repo":"https://github.com/inline-chat/inline","sha":"2d3b360da0430684eabab2d946eca0e725c08aa5","subdir":"plugins/hermes-agent/plugin/inline","description":"Use Hermes Agent from Inline work-chat DMs, chats, and reply threads. Disclosure — the setup wizard can, on explicit opt-in, download https://inline.chat/cli/install.sh and pipe it to sh without a checksum, then run the vendor inline CLI login; on connect the adapter publishes your Hermes slash-command list and the names and descriptions of installed skills to the Inline server (INLINE_SYNC_COMMANDS=false disables); error telemetry is off unless a Sentry DSN is set.","maintainer":"morajabi","tier":"community","category":"platform","requires_hermes":">=0.21.3","version":"0.0.21","capabilities":{"provides_tools":["inline"],"provides_hooks":[],"provides_middleware":[],"requires_env":["INLINE_TOKEN"]}},{"name":"intelligent-tool-break","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/intelligent-tool-break","description":"Abort a stalled in-flight tool call with /break, send a note with /break {message}, or retry it with /again without cancelling the rest of the task.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/intelligent-tool-break","version":"1.3.4","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/intelligent-tool-break/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","transform_tool_result","on_session_start","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"intelligent_memory","repo":"https://github.com/hoysama/hermes-intelligent-memory","sha":"2d15ce5ba5878ddd7e18ca8cb1f0c62311965da0","description":"Local-first Arabic/English intelligent memory with canonical facts, conflict lifecycle, bounded recall, and selective Hermes cloud enrichment.","maintainer":"hoysama","tier":"community","category":"memory","docs_url":"https://github.com/hoysama/hermes-intelligent-memory#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"subdir":"plugin/intelligent_memory"},{"name":"interim-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"ed94f43f5573b4b55f355bb97f37c225e36d6f19","subdir":"interim-ledger","description":"Local ledger of the messages models write in the middle of a turn, before their final answer (the text that comes with a tool call, which on chat platforms can arrive as messages of their own): /interim-log shows how many each model wrote, in how many turns, how many per such turn, their median length and how long ago the last one was, per model, provider, surface or day, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /interim-log recent lists the newest messages (ten, or up to 100 with /interim-log recent 50). Counted even where display.interim_assistant_messages hides them. Disclosure — writes message metadata (model, provider, surface, step of the turn, length in characters, 12-digit hashes of the session and turn ids; never the message text) to plugin-data/interim-ledger/interim.jsonl, trimmed to 5,000 rows past 2 MB; observer only, cannot delay, change or hide a message; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/interim-ledger","version":"1.0.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/ed94f43f5573b4b55f355bb97f37c225e36d6f19/docs/interim-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_interim_message"],"provides_middleware":[],"requires_env":[]}},{"name":"invinoveritas-receipts","repo":"https://github.com/babyblueviper1/hermes-invinoveritas","sha":"6a4f9c7b49beac69899f18f3bcf1d0b340297624","description":"Signed, independently checkable receipts for Hermes approval verdicts and, since 0.2.0, for turns that stop on iteration exhaustion. Observe-only: a post_approval_response hook requests an invinoveritas decision receipt for each Guardian LLM verdict (or every approve/deny with scope=all); post_llm_call + on_session_end record, when a turn ends with max_iterations_reached, whether the turn's todo ledger (the last todo result or the list re-injected after compaction) was complete (turn_scope: exhausted by default, all, or off). Each receipt is a signed set of salted commitments that anyone can check for free at /verify-proof and that the holder can later open with the salt kept locally. Never approves, denies, delays, continues or blocks anything. Disclosure — one HTTPS POST per recorded approval decision or recorded turn to api.babyblueviper.com/decision-receipt (or the configured api_url) under INVINOVERITAS_API_KEY, paid automatically at 100 sats per receipt from your invinoveritas balance with no per-call confirmation (defaults: Guardian LLM verdicts, and only turns that stop on max_iterations_reached; scope: all adds every human approve/deny, turn_scope: all pays on every turn); sends a fixed question, the options, the choice, a nonce-salted SHA-256 of the context and the tool_call_id/turn_id, never the command text, todo contents or reply text; stores receipts, salts and the full contexts (including the command as Hermes passed it, and the todo ledger) in plugin-data/invinoveritas-receipts/receipts.jsonl.","maintainer":"babyblueviper1","tier":"community","category":"general","docs_url":"https://github.com/babyblueviper1/hermes-invinoveritas#readme","version":"0.2.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_approval_response","post_llm_call","on_session_end"],"provides_middleware":[],"requires_env":["INVINOVERITAS_API_KEY"]}},{"name":"iowap","repo":"https://github.com/iowap-org/iowap-hermes-integration","sha":"8ada6297345e0c5464e1b0015478867fd1c23944","description":"Fleet control for Hermes Desktop: live statusbar chip (N/M IOWAP nodes online), a draggable fleet pane, a full fleet page (status, load, queue depth, capabilities per node, activity) and a tasks page that submits to any task-type capability on the fleet and tracks submitted tasks live (per-stage status dots, result previews, artifacts). Data stays local via the local node-cli against your own IOWAP relay; agent sessions join through an optional iowap-task bridge into a shared track store. Disclosure — the dashboard backend runs the local node-cli (the IOWAP node client from github.com/iowap-org/iowap-node) to read your relay's node list, capabilities and task results, and to submit tasks you start from the Tasks page to nodes on your IOWAP fleet. Relay health also goes through the local node-cli (`server health`) — the plugin itself makes no raw HTTP calls to the relay; node identity comes from the node's own ~/.relay state files. Tracked task ids are stored in your Hermes home under plugin-data/iowap/.","maintainer":"Kesuek","tier":"community","category":"desktop","version":"0.3.2","docs_url":"https://github.com/iowap-org/iowap-hermes-integration#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"iteration-budget-meter","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/iteration-budget-meter","description":"Status-bar chip for the focused session per-turn iteration usage (N/60), with a hover tooltip and a click popover of per-request stats.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/iteration-budget-meter","version":"1.2.2","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/iteration-budget-meter/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"ja-writing-guard","repo":"https://github.com/TakeshiTGAL/hermes-plugin-ja-writing-guard","sha":"ef2bc3c2c2c3162e9c281f3d359dfaaec629d6ad","description":"Rule-based proofreading for Japanese business text: finds and fixes AI-style phrasing (stock phrases, monotonous sentence endings, overused symbols and Markdown, English-calque grammar) with line, column and a fix hint. It checks wording, not authorship, and rarely flags plain model output. A transform_llm_output hook checks every final Japanese answer and only reports by default; opt-in enforce mode rewrites flagged answers with the user's own model and delivers the rewrite only if numbers, names, URLs, code and negation survive and the score drops under the threshold. Disclosure: no network calls of its own; enforce mode sends each flagged answer to the user's configured model (one extra call, a second only when the first rewrite fails the checks or stays over the threshold; extra cost and up to 25 s delay); a read-only post_tool_call hook notes turns with MEDIA: lines so attachments from other plugins are kept; reports stay in process memory on local surfaces only. Disclosure — no network calls of its own; mode report (default) only logs scores; opt-in mode enforce sends each flagged final answer (with finding excerpts) to the user's configured model via ctx.llm (1–3 calls, up to 25 s delay) and replaces the delivered and stored answer when its preservation checks pass, which do not prove meaning is unchanged; reads plugins.hook_callback_timeout via a private read-only Hermes helper; eval/ dev scripts ship in the tree but are never loaded.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-ja-writing-guard#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["ja_writing_check"],"provides_hooks":["transform_llm_output","post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"jackal-verified","repo":"https://github.com/AnubisQuantumCipher/hermes-jackal-verified","sha":"dab507a521406a69d308025bed380401eff967b9","description":"Typed adapter for the reproducible JACKAL v1.7.3 release: 41 catalog-derived verification tools (exact, numerical, Lean-checked bounded lanes, claim replay).","maintainer":"AnubisQuantumCipher","tier":"community","category":"tools","docs_url":"https://github.com/AnubisQuantumCipher/hermes-jackal-verified","platforms":[],"capabilities":{"provides_tools":["jackal_alg_cmp","jackal_alg_sign","jackal_anubis_check_program","jackal_anubis_verify_program","jackal_anubis_verify_program_receipt","jackal_atan_rat_bound","jackal_canon","jackal_claim","jackal_claim_cites_test","jackal_cos_rat_bound","jackal_crt","jackal_decision_rank","jackal_decision_rank_v2","jackal_diff","jackal_divides","jackal_evaluate","jackal_exact","jackal_exp_rat_bound","jackal_gaussian_integral","jackal_integrate","jackal_integrate_adaptive","jackal_integrate_bound","jackal_integrate_bound_cert","jackal_ln_rat_bound","jackal_mod_inv","jackal_mod_pow","jackal_poly_canon","jackal_poly_eq","jackal_poly_gcd","jackal_prime_cert","jackal_range_bound","jackal_ratfunc_canon","jackal_roots_isolate","jackal_sin_rat_bound","jackal_solve","jackal_sqrt_rat_bound","jackal_tanh_rat_bound","jackal_test_exists","jackal_verify_bundle","jackal_verify_receipt","jackal_xgcd"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jekyll-hyde","repo":"https://github.com/jnorthrup/hermes-jekyl-hyde","sha":"10149e57ec2cf47a0184d475ca4d5cb797b54c2d","description":"Context optimization and execution alignment for agent sessions.","maintainer":"jnorthrup","tier":"community","category":"general","docs_url":"https://github.com/jnorthrup/hermes-jekyl-hyde#readme","capabilities":{"provides_tools":[],"provides_hooks":["post_llm_call","pre_llm_call","transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"jet-browser","repo":"https://github.com/masakaai/jet-browser","sha":"1b0b10feb70e52bde844ba4e1cb7c35600af4b35","subdir":"integrations/hermes","description":"Verify Jet Browser startup, native input, DOM agreement, and PNG capture inside a network-isolated WPE WebKit container. Disclosure — runs `docker run` (Docker access is root-equivalent on the host) on the digest-pinned image ghcr.io/masakaai/jet-browser@sha256:540a1fec…, pulled from GHCR on first use; the container has no network and only SETUID/SETGID capabilities, but runs with AppArmor and systempaths unconfined and a seccomp profile that allows user-namespace and mount syscalls for WebKit's bubblewrap sandbox; the tool takes no arguments and loads only a built-in local test page.","maintainer":"IRONICBo","tier":"community","category":"tools","docs_url":"https://github.com/masakaai/jet-browser/tree/1b0b10feb70e52bde844ba4e1cb7c35600af4b35/integrations/hermes","platforms":["linux"],"known_issues":["Requires Docker with linux/amd64 container support; the first run may pull the pinned image from GHCR."],"capabilities":{"provides_tools":["jet_browser_verify"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.6","version":"0.1.0"},{"name":"jev-agent-router","repo":"https://github.com/Pinutss/jev-agent-router","sha":"8cb6d67a81d4545502750c4599b427d98acf3120","description":"Agent Plugins v1 package: one skill plus one stdio MCP server (agent_route) started with uv run from the checkout. Needs uv on PATH. Registers no Hermes tools or hooks; do not expect jev_* tools.","maintainer":"Pinutss","tier":"community","category":"general","docs_url":"https://github.com/Pinutss/jev-agent-router#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jev-approvals","repo":"https://github.com/anpicasso/hermes-jev-approvals","sha":"28be98a19539b29768398fb400f4c62f41337c26","subdir":"plugin","description":"TypeSafe's Jev decision model as Hermes' smart-approval reviewer only: it cannot generate text and refuses every other task. Supports TypeSafe direct, OpenRouter, and configurable Jev-compatible HTTPS endpoints with optional endpoint-specific authentication; validates typed answers and endpoint/redirect boundaries, redacts command credentials, and records bounded structured audit logs. Disclosure — each command routed to smart approval (redacted best-effort) and the operator's smart-policy text leave the machine for the configured third-party endpoint; provider or validation failures fail closed to ESCALATE.","maintainer":"anpicasso","tier":"community","category":"models","docs_url":"https://github.com/anpicasso/hermes-jev-approvals#readme","version":"0.3.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TYPESAFE_API_KEY"]}},{"name":"jev-cron-gate","repo":"https://github.com/superlowburn/hermes-jev-cron-gate","sha":"cfd999802bd8d6eb25b986f128323fae0572429c","description":"Skip agent cron runs that would do nothing: a pre-run wake-gate script asks TypeSafe Jev one yes/no question over a small state snapshot (files, changed-since-last-run, localhost URLs) and prints {\"wakeAgent\": false} when it is confident the run is pointless. Fail-open on every error, forced wake after N consecutive skips, stdlib only. Disclosure — each gated cron tick (and the tool's test action) sends the configured snapshot of file contents, localhost URL response bodies and change flags (≤6,000 chars) to api.typesafe.ai with your TypeSafe key.","maintainer":"superlowburn","tier":"community","category":"automation","docs_url":"https://github.com/superlowburn/hermes-jev-cron-gate/blob/cfd999802bd8d6eb25b986f128323fae0572429c/README.md","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["jev_cron_gate"],"provides_hooks":[],"provides_middleware":[],"requires_env":["TYPESAFE_API_KEY"]}},{"name":"jev-curator","repo":"https://github.com/anpicasso/hermes-jev-curator","sha":"4e8626c7d394a9cbef8594993ec4b208ffb3395f","subdir":"plugin","description":"TypeSafe Jev semantic governance for Hermes' native Curator: classifies relationships between complete skill packages, produces content-hash-bound, fail-closed consolidation plans, and locally guards background destructive skill_manage calls while Hermes retains control of backups and mutations. A profile-scoped 60-second lifecycle debounce coalesces skill changes into dry refreshes. Disclosure — no egress occurs by default; after allow_content_egress is explicitly enabled, redacted bounded skill content is sent to the configured TypeSafe, OpenRouter, or custom Jev endpoint and may spend provider credits. Automatic refreshes never apply mutations, and missing, stale, or incomplete evidence fails closed.","maintainer":"anpicasso","tier":"community","category":"automation","requires_hermes":">=0.21.2","docs_url":"https://github.com/anpicasso/hermes-jev-curator/blob/4e8626c7d394a9cbef8594993ec4b208ffb3395f/README.md","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["jev_skill_relations"],"provides_hooks":["on_skill_lifecycle","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"jev-effort-router","repo":"https://github.com/AlphaPerseii3000/jev-effort-router","sha":"6fd9f2ec1c53cb99b5e6c7043c25bbd37938d4a5","description":"Per-turn model AND reasoning-effort routing, decided by TypeSafe Jev, which rewrites the outgoing Ollama:Cloud provider request itself via the llm_request middleware. Every other catalog router picks a model and stops, and the two entries that touch reasoning effort move it by hand; this one decides both per turn. Ollama:Cloud only — no other provider is routed, and every failure path leaves the request byte-identical to a plugin-disabled run. Disclosure — sends the current user message and up to 4 previous turns to OpenRouter's Decisions API (typesafe/jev, billed to your OpenRouter key) on every routed turn.","maintainer":"AlphaPerseii3000","tier":"community","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/AlphaPerseii3000/jev-effort-router","version":"0.3.0","platforms":[],"capabilities":{"provides_tools":["jev_effort_router_status","jev_effort_router_route"],"provides_hooks":["on_session_end","post_llm_call"],"provides_middleware":["llm_request"],"requires_env":["OPENROUTER_API_KEY"]}},{"name":"jev-judge","repo":"https://github.com/DoGMaTiiC/hermes-jev","sha":"5dddbeaac5be08281e6c3b372eeaba3639971f0a","subdir":"plugins/jev-judge","description":"TypeSafe Jev as a judgment layer — a pre-tool gate (shadow by default, enforce escalates) on terminal, write_file and patch asking destructive / exfiltration / impact (a v2 signal set — reads_secrets × sends_outbound, blast_radius, self_advocating — is one setting away), plus a jev_ask tool for typed judgments. Thresholds in code, one JSONL line per decision with the fail-open reason, fail-open on every error path. Stdlib only, no Node; no redirects, proxy env ignored, payload capped; works with TYPESAFE_API_KEY, OPENROUTER_API_KEY, or AI_GATEWAY_API_KEY. Disclosure — each judged call sends the tool name and its redacted arguments (≤600 chars each, ≤12 args) to TypeSafe, OpenRouter, or your configured gateway, using your key; shadow mode only logs. With the default backend auto, OPENROUTER_API_KEY is used automatically whenever it is present and TYPESAFE_API_KEY is not, so tool names and redacted arguments go to openrouter.ai on your main-model OpenRouter key unless backend is set to typesafe or gateway.","maintainer":"DoGMaTiiC","tier":"community","category":"tools","docs_url":"https://github.com/DoGMaTiiC/hermes-jev/blob/main/plugins/jev-judge/README.md","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["jev_ask"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"jev-mcp-router","repo":"https://github.com/Pinutss/jev-mcp-router","sha":"6a7b3baf45af62def86c3d824b06c85569d14298","description":"Agent Plugins v1 package: one skill plus one stdio MCP server (mcp_select) started with uv run from the checkout. Needs uv on PATH. Registers no Hermes tools or hooks; do not expect jev_* tools.","maintainer":"Pinutss","tier":"community","category":"tools","docs_url":"https://github.com/Pinutss/jev-mcp-router#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jev-memory-selector","repo":"https://github.com/Pinutss/jev-memory-selector","sha":"87bd9be2a67d380024be194e6d80a1a053024361","description":"Agent Plugins v1 package: one skill plus one stdio MCP server (memory_select) started with uv run from the checkout. Needs uv on PATH. Registers no Hermes tools or hooks; do not expect jev_* tools.","maintainer":"Pinutss","tier":"community","category":"memory","docs_url":"https://github.com/Pinutss/jev-memory-selector#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jev-model-router","repo":"https://github.com/Pinutss/jev-model-router","sha":"b977dc3ef07738aab005c433d08c1da3fa949e8d","description":"Agent Plugins v1 package: one skill plus one stdio MCP server (model_route) started with uv run from the checkout. Needs uv on PATH. Registers no Hermes tools or hooks; do not expect jev_* tools.","maintainer":"Pinutss","tier":"community","category":"models","docs_url":"https://github.com/Pinutss/jev-model-router#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jev-skill-router-mcp","repo":"https://github.com/ydmw74/jev-skill-router","sha":"76ee09e049dbc10c76f98cfefc6ca16b42cfad38","description":"Agent Plugins v1 package: one skill plus one stdio MCP server (skill_select) started with uv run from the checkout. Needs uv on PATH. Suggests at most one skill per request via the TypeSafe (Jev) cookbook pattern; roster is read live from the profile skills dir. Note: the portable loader does not interpolate env in mcp.json — JEV_TYPESAFE_API_KEY must be present in the server's inherited environment (native mcp_servers declaration works too).","maintainer":"ydmw74","tier":"community","category":"tools","docs_url":"https://github.com/ydmw74/jev-skill-router#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["JEV_TYPESAFE_API_KEY"]}},{"name":"jev-skill-router","repo":"https://github.com/DoGMaTiiC/hermes-jev","sha":"5dddbeaac5be08281e6c3b372eeaba3639971f0a","subdir":"plugins/jev-skill-router","description":"Names the one skill from your live roster that fits the turn, before the model call — typed routing via TypeSafe Jev (one choice over the roster plus gate booleans, then a re-read of the shortlist with per-candidate fits), with both thresholds applied in code. Says nothing when nothing fits; opt-in, fail-open, stdlib only, no Node; no redirects, proxy env ignored, payload capped. Disclosure — on eligible turns it sends your message (up to 4,000 chars) plus skill names and short SKILL.md excerpts from your local roster to TypeSafe, OpenRouter, or your configured gateway, using your key. With backend auto an OpenRouter key is used automatically when no TypeSafe key is set, and the OpenRouter route also reads Hermes' OpenRouter credential pool (auth.json) when OPENROUTER_API_KEY is absent, rotating that pool's entries through the core pool API.","maintainer":"DoGMaTiiC","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/DoGMaTiiC/hermes-jev/blob/main/plugins/jev-skill-router/README.md","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"jev-typesafe","repo":"https://github.com/ajensenwaud/hermes-jev-plugin","sha":"b3d29f71770a3447ad0b3db00658f64a8edc7dd3","description":"TypeSafe Jev (System One) decision tools — atomic yes/no checks, routing, rubric scoring and mixed typed questions with calibrated probabilities, for triage, routing and review gating in coding agents. Disclosure — every tool call sends the model-supplied question/state together with your TYPESAFE_API_KEY to api.typesafe.ai (TypeSafe AI, an independent vendor); the catalog has not verified the plugin author's affiliation with that vendor.","maintainer":"Anders Jensen-Waud","tier":"community","category":"tools","requires_hermes":">=0.19","docs_url":"https://github.com/ajensenwaud/hermes-jev-plugin/blob/b3d29f71770a3447ad0b3db00658f64a8edc7dd3/README.md","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["jev_evaluate","jev_check","jev_route","jev_score"],"provides_hooks":[],"provides_middleware":[],"requires_env":["TYPESAFE_API_KEY"]}},{"name":"jev","repo":"https://github.com/ourines/hermes-jev","sha":"28a4ea390f80d97fcdc8c20d6b630dfe2de645de","subdir":"","description":"Explicit Jev decision sidekick via TypeSafe or Cloudflare; advisory judgments, no automatic tool gating.","maintainer":"ourines","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/ourines/hermes-jev/blob/28a4ea390f80d97fcdc8c20d6b630dfe2de645de/README.md","version":"0.1.2","platforms":[],"capabilities":{"provides_tools":["jev_evaluate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jira-browser","repo":"https://github.com/LikelyLucid/hermes-jira-browser","sha":"03ba860d7241af620860968fa747b109d4664cc2","description":"Jira workspace for Hermes Desktop, linking tickets to Hermes Projects, worktrees, and conversations. Disclosure — reads a Jira API token from JIRA_* env vars or ~/jira-config/config.json (owner-only, read-only) and sends it only to your configured https Jira origin; agent tools are read-only but return Jira text (untrusted) to the model; Start work / Draft update create chats seeded with ticket descriptions (Draft update auto-runs a turn); PR/CI status is read through your local gh CLI login.","maintainer":"LikelyLucid","tier":"community","category":"desktop","version":"0.1.0","readme":true,"platforms":[],"capabilities":{"provides_tools":["jira_assigned_issues","jira_search_issues","jira_issue_detail","jira_issue_transitions"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"job-search","repo":"https://github.com/agent-data/job-search","sha":"dba0c0992e9d7fc6533dd1be3003df7a311168f0","description":"A private, local-first job-search assistant that finds postings, judges them against your prose preferences (no scores), and writes digests on a schedule you control.","maintainer":"agent-data","tier":"community","category":"automation","docs_url":"https://github.com/agent-data/job-search#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jot","repo":"https://github.com/Totoro-qaq/hermes-jot","sha":"b65b550108c8e742cc5737055213da947dc54e0f","description":"Notes, checklists and documents beside Hermes that your agent can read and update safely, with revision checks and undo for AI edits.","maintainer":"Totoro-qaq","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"0.4.1","title":"Jot","readme":true,"image":"https://raw.githubusercontent.com/Totoro-qaq/hermes-jot/b65b550108c8e742cc5737055213da947dc54e0f/assets/readme/banner.png","screenshots":["https://raw.githubusercontent.com/Totoro-qaq/hermes-jot/b65b550108c8e742cc5737055213da947dc54e0f/assets/readme/workspace.en.jpg","https://raw.githubusercontent.com/Totoro-qaq/hermes-jot/b65b550108c8e742cc5737055213da947dc54e0f/assets/readme/sidebar.en.jpg"],"known_issues":["Requires a current Hermes Desktop build with SandboxedFrame and gateway file-download SDK support.","Word attachments use download or the default application; the tested host does not render DOCX."],"capabilities":{"provides_tools":["jot_list","jot_read","jot_create","jot_update","jot_set_task","jot_delete"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jp-address","repo":"https://github.com/TakeshiTGAL/hermes-plugin-address","sha":"c778f382951fcc7f2b1a3f2feea77e26fdc3e70e","description":"Splits one Japanese address into prefecture, city, town and the remainder with address_split, built on Geolonia's address data (CC BY 4.0, from the Digital Agency address base registry). Disclosure — Each call sends at most two HTTPS GET requests, with no API key, to japanese-addresses-v2.geoloniamaps.com or the JP_ADDRESS_BASE_URL you set (plain http only for 127.0.0.1 and localhost). The matched prefecture and municipality names go into the URL path; the house number, the lot and the building name are not sent. The tool is on for every surface, including gateways, and asks for no approval: anyone you allow on your Hermes gateway can call it. Turn a surface off with hermes tools. It writes no files and creates no cron job. A point can be coarser than the town and is not a rooftop geocode, and an address it cannot place for certain comes back as ambiguous or at the municipality instead of a guess. The publisher may change or stop the free host and suggests self-hosting for commercial use. Not tested from a Hermes model.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-address#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["address_split"],"provides_hooks":[],"provides_middleware":[]}},{"name":"jp-charts","repo":"https://github.com/TakeshiTGAL/hermes-plugin-charts","sha":"870b5fcb1c9ca3db00f4fe956ee8d860f20ea661","description":"Bar, line, stacked and 100% band charts as phone-sized PNGs for chat replies and reports, with Japanese text, 万/億 units and a required unit and source line. Every bar, point, label and tick is read back from the finished figure and compared with the parsed data before the image is returned. Disclosure: no network calls at run time; reads a local .csv/.tsv/.txt/.json only when given its path (never hidden files or the Hermes home); writes PNGs to the Hermes image cache; a transform_llm_output hook adds a forgotten MEDIA line to replies on chat platforms and cron deliveries (setting auto_attach, on by default).","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-charts#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["chart_render","chart_validate","chart_types"],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"jp-chatwork","repo":"https://github.com/TakeshiTGAL/hermes-plugin-chatwork","sha":"8dbdff609b3c99768420a19a7ca646b6daad3dbe","description":"Talk to Hermes from Chatwork rooms, built on the Chatwork API: put Hermes in a Chatwork room and ask it with [To:] or a reply, like a colleague; the answer comes back as a Chatwork reply. Polls the Chatwork API (no public URL or webhook), never answers a message twice across restarts, and while CHATWORK_ALLOWED_USERS is unset only the token's own account can use Hermes commands beyond /help, /whoami, /new and /reset or answer approval prompts. Disclosure: talks only to api.chatwork.com with your own API token; polls every 5 s by default while the gateway runs; stores read positions and the ids of its posted messages in <HERMES_HOME>/plugin-data/jp-chatwork/state.json. Disclosure — while CHATWORK_ALLOWED_USERS is unset everyone in the rooms listed in CHATWORK_ROOMS (external guests included) can prompt the agent and use its enabled tools, with Hermes commands and approval answers kept to the token's own account; talks only to api.chatwork.com with your API token, polling every 5 s while the gateway runs; stores read positions and posted message ids in <HERMES_HOME>/plugin-data/jp-chatwork/state.json; logs each asker's name and account id.","maintainer":"TakeshiTGAL","tier":"community","category":"platform","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-chatwork#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["CHATWORK_API_TOKEN","CHATWORK_ROOMS"]}},{"name":"jp-corporate","repo":"https://github.com/TakeshiTGAL/hermes-plugin-jp-corporate","sha":"fc0e16c2924d00774957c516f5eb14016228b91d","description":"Japanese corporate lookup (法人照会): find or verify a company by name or corporate number and read its gBizINFO record (basic info, subsidies, government contracts, awards, certifications, financials, patents, workplace data). Disclosure — sends the company names, corporate numbers and prefectures you look up to api.info.gbiz.go.jp (METI gBizINFO) with your own GBIZINFO_API_TOKEN in a request header; no other host, nothing written to disk.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-jp-corporate#readme","version":"0.1.1","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["jp_corp_search","jp_corp_profile"],"provides_hooks":[],"provides_middleware":[],"requires_env":["GBIZINFO_API_TOKEN"]}},{"name":"jp-edinet","repo":"https://github.com/TakeshiTGAL/hermes-plugin-edinet","sha":"0f89efb62c3026f0552d38eb394b29cb71094459","description":"Japanese filings on the EDINET API v2. Disclosure — talks only to api.edinet-fsa.go.jp over HTTPS, and your EDINET_API_KEY rides in the URL as Subscription-Key. The edinet toolset is on for every platform, including gateways, so anyone a gateway admits can call these tools with your key. With CHATWORK_ALLOWED_USERS unset, everyone in CHATWORK_ROOMS can call them. Turn the toolset off per platform with hermes tools. There is no daily cap. The agent can call the three tools itself. A cron you add stays after uninstall until you remove it in Hermes. This plugin starts no child process and is not a sandbox. Search sends EDINET the filing date, and a download sends the document id and its type. Company name, securities code, EDINET code, and corporate number are filtered on your machine. found: false only means the figure is missing from the consolidated current-year rows the plugin reads, not that the document has no number. A past day's filing list can change. Lists, saved files, and a key fingerprint, not the key, stay at <HERMES_HOME>/plugin-data/jp-edinet per profile after uninstall. Delete that directory to remove them. The plugin relies on Hermes internals for the write check and the data folder. If an update moves those parts, the tools refuse and do not call EDINET. Test files are not loaded at startup.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-edinet#readme","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["edinet_search_filings","edinet_financials","edinet_save_document"],"provides_hooks":[],"provides_middleware":[],"requires_env":["EDINET_API_KEY"]}},{"name":"jp-egov-law","repo":"https://github.com/TakeshiTGAL/hermes-plugin-egov-law","sha":"f1dd47e0a501d21f67089b2da5e2e9b16734a552","description":"Japanese laws for Hermes Agent, built on the e-Gov Law API: find a law by name, abbreviation or phrase, read one article as in force today or on a given date, and check amendment history and enforcement dates, with the source credit e-Gov's terms ask for. Disclosure — sends the law names, article numbers, dates and search phrases you look up to laws.e-gov.go.jp (public API, no key); no other host, nothing written to disk. Registers blueprint jp-egov-law:weekly-amendments and does not create a cron job. When you create a job from that blueprint, one model turn runs once a week (default Mon 09:00, Hermes tz or the host clock if unset, not converted to Japan). A turn that calls a tool is at least two model requests, and there is no daily cap. The agent can schedule it, and scheduling it twice creates two jobs. Silence is not \"no amendment\". Uninstall leaves the cron until hermes cron remove. Tools stay on every platform, including gateways (a guest can call them; hermes tools disables one). v0.21.4 and v0.21.5 load the tools and skip the blueprint.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-egov-law#readme","version":"0.1.2","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["egov_law_search","egov_law_article","egov_law_revisions"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"jp-estat","repo":"https://github.com/TakeshiTGAL/hermes-plugin-estat","sha":"7cf225afe7ef6f46b4dccd0e2521f137e602dd9e","description":"Japanese government statistics for Hermes Agent, built on the e-Stat API (政府統計の総合窓口, Japan's official government statistics portal): search tables, see their categories, and fetch numbers by name (population, households, establishments by industry, wages, consumer prices) with units, survey dates and citations. Disclosure — sends your search words and table selections to api.e-stat.go.jp with your own ESTAT_APP_ID (e-Stat requires the ID in the request URL); no other host, nothing written to disk.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.18","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-estat#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["estat_search_tables","estat_table_info","estat_get_data"],"provides_hooks":[],"provides_middleware":[],"requires_env":["ESTAT_APP_ID"]}},{"name":"jp-kokkai","repo":"https://github.com/TakeshiTGAL/hermes-plugin-kokkai","sha":"b6ae5e95430bea4a02a652fa1b29fb392e9228ad","description":"Posts new Diet meeting hits as metadata and the official meeting URL, with kokkai_search and kokkai_watch. Disclosure — Talks only to kokkai.ndl.go.jp over HTTPS GET with no API key, and never requests or stores speech text. The tools are on for every surface, including gateways, and the plugin has no user list of its own: anyone you allow on your Hermes gateway, and a guest in a room with an empty allowlist, can search, add a watch and approve it. Turn a surface off with hermes tools. kokkai_watch add creates one cron job that runs a model turn once a day, at the hour you pick in Hermes's own timezone, with no daily cap. It stays after uninstall until you run hermes cron remove, with -p and the profile name when the profile is not default. Adding or removing a watch asks for Hermes approval every time and is refused under cron, yolo, approvals off, unattended sessions and plugins.isolation: host. Answering \"always\" adds an unused line to config.yaml. Under plugins.isolation: host the watch cannot save seen speech IDs and says so on every run. The watch relies on private parts of Hermes, so an update can stop it. Each request waits up to 30 seconds for data, and a whole run has no time limit. State (your watch words, seen speech IDs and the job id) stays in plugin-data/jp-kokkai after uninstall. Tested with a stand-in server on Hermes 0.21.4 and current main, not in a live chat.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-kokkai#readme","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["kokkai_search","kokkai_watch"],"provides_hooks":[],"provides_middleware":[]}},{"name":"jp-reinfolib","repo":"https://github.com/TakeshiTGAL/hermes-plugin-reinfolib","sha":"9191d0e5bd3539f3c55801c614c9b47cc7763494","description":"Quarterly MLIT prices for one city, via reinfolib_quarter. Disclosure — sends your REINFOLIB_API_KEY as Ocp-Apim-Subscription-Key to www.reinfolib.mlit.go.jp (HTTPS, XIT001) or the host of REINFOLIB_BASE_URL. Plain http is refused except 127.0.0.1 and localhost, where the key is not encrypted. On for every surface, including gateways, so anyone you allow can call it with your key, with no approval prompt, including unattended cron, yolo, and approvals off. hermes tools does not stop /jp-reinfolib. Stop the slash command with allow_admin_from, user_allowed_commands, group_user_allowed_commands, or by disabling the plugin. After a GET returns, this process waits 1 second before the next, each GET stops after 30 seconds with no bytes, and there is no retry or daily cap. Blueprint jp-reinfolib:weekly-city-check is once a week (default Monday 09:00) and calls only this tool after you schedule it. This plugin does not create a cron job or write a file. A job you schedule stays until hermes cron remove and may include your MCP servers. HTTP 404 means no data for that request, not zero rows and not unchanged prices. A scheduled run is one model turn. A turn that calls the tool is at least two model requests. An empty slash allow list does not stop this tool. Registered only if register_automation_blueprint exists; else skip. A no-data week may be [SILENT] and not arrive. Data weeks are one short message. 「このサービスは、国土交通省の不動産情報ライブラリのAPI機能を使用していますが、提供情報の最新性、正確性、完全性等が保証されたものではありません」","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-reinfolib#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["reinfolib_quarter"],"provides_hooks":[],"provides_middleware":[],"requires_env":["REINFOLIB_API_KEY"]}},{"name":"jp-subsidies","repo":"https://github.com/TakeshiTGAL/hermes-plugin-subsidies","sha":"8412900250980d673a82364c5c1c151eb45ccba0","description":"Japanese subsidy search and weekly watch, built on the jGrants public API. Disclosure — Searches api.jgrants-portal.go.jp with no API key and no daily request cap; each call waits at most 60 seconds and retries at most twice, and a result is a search match, not proof that every subsidy came back. The plugin has no user list of its own: anyone you allow on your Hermes gateway can call these tools and change this profile's watch, and the agent can set up a watch by itself. In a Chatwork room listed in CHATWORK_ROOMS, everyone can call them while CHATWORK_ALLOWED_USERS is unset. The tools are on for every platform, including gateways; turn them off per platform with hermes tools. The /subsidies command is outside hermes tools; limit it with allow_admin_from or user_allowed_commands, or disable the plugin. The optional weekly watch is an unattended cron job that runs a script with no model call and is not a sandbox; delivering it to bot-chat instead runs one model turn on the fetched text. If delivery fails after the script runs, those subsidies are already marked seen and the text stays under cron/output/. Uninstall leaves the cron job, scripts/jp-subsidies-weekly-*.py and plugin-data/jp-subsidies/ until you run hermes cron remove and delete the files. The plugin does not store the name or ID of who asked. Not tested against a live gateway, with the Chatwork plugin loaded, or for result sets of several hundred rows.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-subsidies#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["subsidies_search","subsidies_detail","subsidies_watch_setup"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"junie-acp","repo":"https://github.com/JetBrains/junie","sha":"296ea839b354956fbd22544687a88b944c18dc22","subdir":"hermes-plugin","description":"JetBrains Junie coding agent as a Hermes model provider over ACP.","maintainer":"JetBrains","tier":"community","category":"models","requires_hermes":">=0.21.1","docs_url":"https://github.com/JetBrains/junie/tree/main/hermes-plugin","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kanban-gantt","repo":"https://github.com/e-is/hermes-kanban-gantt","sha":"086463b08cd89157d0cd92631ceef95cb4b76236","description":"Gantt timeline view for the Hermes kanban boards: a full /kanban-gantt desktop page rendering any board as a timeline of real work timestamps (created/started/review/done), with a collapsible tree column (boxed fold controls, tree connectors, per-board fold state, multi-parent links kept visible), an optional List view beside the timeline (task, assignee, status, last activity — the timeline stays the default), task creation (project, workspace, skills, model override, goal mode), re-parenting by drag & drop or from the drawer, live-activity arcs, filters, bulk actions, and a dockable task detail drawer. Any task with files carries a paperclip: the file list is fetched on demand (the board payload carries a count per task), and each file gets a type-aware preview (markdown, plain text, image, PDF, HTML in a sandboxed frame) or a download. A period selector (6 h to 7 d) puts a slice of the timeline on screen in one click. Zero API keys, zero model tokens; live updates follow the plugin's /events websocket, which a gateway turns off with KANBAN_GANTT_WS=0 (the page then polls every 60 s and shows a Refresh button). Disclosure — Desktop page plus dashboard routes that read and write the local kanban boards (create tasks with workspace path, skills, model override and goal mode; re-parent; move a task, with its children, to another board — the copy is verified there before the source rows and their links are deleted; edit status, assignee and description; bulk archive and delete; read task attachment files from the board's own attachments folder for preview and download); live updates over a dashboard-authenticated /events websocket, off with KANBAN_GANTT_WS=0; no third-party network.","maintainer":"e-is","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/e-is/hermes-kanban-gantt","version":"1.6.3","image":"https://raw.githubusercontent.com/e-is/hermes-kanban-gantt/086463b08cd89157d0cd92631ceef95cb4b76236/docs/catalog-card.png","screenshots":["https://raw.githubusercontent.com/e-is/hermes-kanban-gantt/086463b08cd89157d0cd92631ceef95cb4b76236/docs/screenshot-en-01.png","https://raw.githubusercontent.com/e-is/hermes-kanban-gantt/086463b08cd89157d0cd92631ceef95cb4b76236/docs/screenshot-en-02-details.png","https://raw.githubusercontent.com/e-is/hermes-kanban-gantt/086463b08cd89157d0cd92631ceef95cb4b76236/docs/screenshot-en-06-list.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kanban-graph","repo":"https://github.com/Senci/hermes-kanban-graph","sha":"6dee73134f30bc7d8fc10078dcf1b5a7bed30342","description":"Live, read-only dependency graph of the Hermes kanban boards in Hermes Desktop: every board as a band, tasks as cards, dependencies as arrows with implied ones folded away. Click a task to light up its whole lineage with runs, last failure and the running worker's latest tool calls; deep links open a task directly, and a stdlib CLI renders the same graph as a standalone HTML file. Zero API keys, zero model tokens. Disclosure — reads every kanban board database and, for running tasks, the assignee profile's state.db (the kanban worker session's latest assistant messages and tool-call arguments), read-only, and shows them in Desktop through its own local dashboard routes.","maintainer":"Senci","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/Senci/hermes-kanban-graph","version":"0.2.1","image":"https://raw.githubusercontent.com/Senci/hermes-kanban-graph/6dee73134f30bc7d8fc10078dcf1b5a7bed30342/docs/assets/banner.png","screenshots":["https://raw.githubusercontent.com/Senci/hermes-kanban-graph/6dee73134f30bc7d8fc10078dcf1b5a7bed30342/docs/assets/overview.png","https://raw.githubusercontent.com/Senci/hermes-kanban-graph/6dee73134f30bc7d8fc10078dcf1b5a7bed30342/docs/assets/lineage.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kanban-live-gantt","repo":"https://github.com/ningfangbin/hermes-kanban-live-gantt","sha":"7081f6376226b6f1c65be3e4e27ae8fb5950e062","description":"Live, now-centered Gantt timeline for the Hermes kanban boards — a slidable, persisted 72 h window (default now -24h -> now +48h; drag to move, drag the ends to resize), free wheel zoom down to hour ticks, a now line, status filtering, an optional done lane, and lifecycle rendering (dashed waiting vs solid run spans at real durations). Fork of kanban-gantt (GPL-3.0). Disclosure — the backend can transition, reassign, comment on and permanently delete kanban tasks on any board (Desktop asks for confirmation before deletes); local SQLite only, no network.","maintainer":"ningfangbin","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/ningfangbin/hermes-kanban-live-gantt#readme","version":"0.1.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kanban-task-threads","repo":"https://github.com/diegomarino/kanban-task-threads","sha":"467284665eb18360e9c32cd8fe4ff76690a66231","description":"Give every Hermes kanban task a live Discord forum thread with a rewritten status card and append-only event log. Disclosure — sends task and lifecycle data to the configured Discord webhook (no host allowlist). Cards and event replies use built-in or operator-configured templates and may include identifiers, titles, status, assignment, branch and workspace metadata, relationships and blocking details, comments, event actors, reviewers, reasons, summaries, and configured dashboard links; the comment excerpt length is configurable. Fixed prerequisite announcements additionally send the prerequisite task ID, title, assignee, and up to 140 characters of its body and are not template-configurable. The absolute workspace path is off by default and requires explicit opt-in. Reads the kanban database read-only and stores thread mapping state under <kanban_home>/kanban/plugins/kanban-task-threads/. With an optional existing publisher-profile Discord bot token, reads forum and thread metadata; creates or repairs managed status tags and emojis; replaces applied tags on plugin-managed threads; renames threads; and archives or unarchives them. Discord fetches webhook avatars from the configured HTTPS asset origin. Disclosure — the avatar asset origin defaults to the author-hosted https://diegomarino.github.io/kanban-task-threads (disable with avatars_enabled: false). With the bot token the periodic metadata audit also lists the guild's active threads (filtered to the forum) and may rewrite the forum's available-tag list to add the 11 managed status tags (requires Manage Channels).","maintainer":"diegomarino","tier":"community","category":"automation","requires_hermes":">=0.20","docs_url":"https://github.com/diegomarino/kanban-task-threads#readme","version":"0.4.1","image":"https://raw.githubusercontent.com/diegomarino/kanban-task-threads/467284665eb18360e9c32cd8fe4ff76690a66231/docs/assets/catalog-banner.png","screenshots":["https://raw.githubusercontent.com/diegomarino/kanban-task-threads/467284665eb18360e9c32cd8fe4ff76690a66231/docs/assets/catalog-screenshot-full.png","https://raw.githubusercontent.com/diegomarino/kanban-task-threads/467284665eb18360e9c32cd8fe4ff76690a66231/docs/assets/catalog-banner-detail.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["kanban_task_claimed","kanban_task_completed","kanban_task_blocked","on_kanban_task_updated","on_kanban_worker_spawned","on_kanban_worker_exited","on_kanban_worker_stale_claim","on_kanban_dispatch_tick"],"provides_middleware":[],"requires_env":["KANBAN_TASK_THREADS_WEBHOOK_URL"]}},{"name":"kfchow-llm-value-router","repo":"https://github.com/kfchow-ai/kfchow-llm-value-router","sha":"39a6944280c2156f816df8641d3d01d743aec564","description":"Per-turn LLM routing: on each matching turn a TypeSafe Jev classifier call (api.typesafe.ai) receives turn-shape features plus the first 1200 chars of the last user message (shadow mode included) and labels it free/paid; high-confidence routine turns are downgraded to the provider's configured free rung, strategic mid-rung turns on Nous are escalated to the configured premium rung after a 2-token billed credit probe (Nous only, fail-closed). Fail-open, shadow-by-default, per-provider rungs from the user's lane2_config.json (leaderboard resolver script optional). Probe model id is fixed in code (z-ai/glm-5.3-flash). Disclosure — once you list models in ~/.hermes/jev/lane2_config.json, the first call of each matching turn sends message/tool counts and the first 1,200 characters of the last user message (send_excerpt, on by default) to TypeSafe Jev at api.typesafe.ai with your JEVI_API_KEY, in shadow mode as well as live; in live mode Jev's answer switches the request (and every later call of that turn, via an llm_execution wrapper) to the free, flash or premium model you configured on the same provider; with escalation set up on Nous it sends a 2-token billed ping to the Nous inference API with NOUS_API_KEY at most every 5 minutes; every turn appends a decision row (with that excerpt on routed turns) to ~/.hermes/jev/lane2-live.jsonl, which is never rotated.","maintainer":"KFChow","tier":"community","category":"models","requires_hermes":">=0.21.5","version":"1.0.6","platforms":["linux","macos"],"docs_url":"https://github.com/kfchow-ai/kfchow-llm-value-router","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":["llm_request","llm_execution"],"requires_env":[]}},{"name":"kimchi-acp-provider","repo":"https://github.com/getkimchi/kimchi-hermes","subdir":"model-providers/kimchi-acp","sha":"d6ffe62876a44605585eaf5c2e3d5214b9e10cb8","description":"The Kimchi coding harness (kimchi.dev) as a Hermes model provider over ACP stdio — spawns kimchi --mode acp keeping the harness's permission prompts on (YOLO opt-in via KIMCHI_ACP_ARGS=\"--mode acp --yolo\"), the harness owns its own auth, and completed tool calls surface as inline bullets in the reply. Disclosure — every turn spawns the local Kimchi CLI (`kimchi --mode acp`, overridable with KIMCHI_ACP_COMMAND / KIMCHI_ACP_ARGS) in Hermes's working directory and hands it the conversation. The harness calls kimchi.dev with its own stored login and runs its own shell, file and web tools. Its permission prompts stay on, and Hermes cancels them, so gated tools don't run, unless you opt in with KIMCHI_ACP_ARGS=\"--mode acp --yolo\", which runs them with no approval prompt (not for shared gateway or cron use). To show setup status, it parses ~/.config/kimchi/config.json (or KIMCHI_CONFIG_PATH) only to check that a key is present; the key is never stored or sent by Hermes.","maintainer":"getkimchi","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/getkimchi/kimchi-hermes#readme","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kimchi-provider","repo":"https://github.com/getkimchi/kimchi-hermes","subdir":"model-providers/kimchi","sha":"0fcca81491ce97449d615754c60f89eff7696a93","description":"Kimchi (kimchi.dev) models via the OpenAI-compatible API — live catalog from the metadata endpoint, API-key auth, gateway unknown-model 400s classified as model_not_found, and an identifying User-Agent (hermes-agent/<version>) on every gateway request.","maintainer":"getkimchi","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/getkimchi/kimchi-hermes#readme","version":"1.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["KIMCHI_API_KEY"]}},{"name":"kimi-code-delegate","repo":"https://github.com/s-a-s-k-i-a/hermes-kimi-code","sha":"72c741cc166ec1db2aec4cd5316f7b7281a74b40","description":"Delegate-only, fail-closed Kimi Code ACP integration for Hermes Agent","maintainer":"s-a-s-k-i-a","tier":"community","category":"tools","docs_url":"https://github.com/s-a-s-k-i-a/hermes-kimi-code#readme","capabilities":{"provides_tools":["kimi_code_delegate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kiro-acp","repo":"https://github.com/tobenwarrior/hermes-kiro-provider","sha":"02c4dd06585436751145961658a22b773f23a0ef","description":"Kiro CLI (AWS) as a Hermes model provider, driven over ACP stdio.","maintainer":"tobenwarrior","tier":"community","category":"models","docs_url":"https://github.com/tobenwarrior/hermes-kiro-provider#readme","version":"0.1.2","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kiro-provider","repo":"https://github.com/anpicasso/hermes-kiro-provider","sha":"013017d27acd58051c4ad654bb21036d93bdd3ce","subdir":"provider","description":"Native Kiro model provider over HTTPS with AWS Builder ID / IAM Identity Center device login. Disclosure — dynamically registers an AWS OIDC public client named `hermes-kiro` during login and stores OAuth grants in Hermes' profile-scoped auth.json credential pool.","maintainer":"anpicasso","tier":"community","category":"models","docs_url":"https://github.com/anpicasso/hermes-kiro-provider#readme","version":"1.0.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kiwi","repo":"https://github.com/harrylabsj/hermes-plugin-kiwi","sha":"5d23517308bf9e5d75b62dcda63a19dd03ab0491","description":"Source suppliers and negotiate purchases through the Kiwi Buyer MCP server — an open-source A2A commerce runtime (pinned @harrylabsj/kiwi@0.12.5 over npx stdio), with the kiwi-buyer sourcing workflow skill bundled. Sourcing is dual-source: Kiwi Network results come from kiwi_search, and internet e-commerce listings are reported through the host's own web tools when the session has them (a host capability, not a plugin guarantee). Portable Agent Plugins v1 package (mcp.json + skills/); needs Node.js/npm on PATH. No credentials required; Kiwi never handles payments.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/hermes-plugin-kiwi","version":"1.2.2","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"klipper-print-watch","repo":"https://github.com/TakeshiTGAL/hermes-plugin-klipper-print-watch","sha":"20aa6f0083d0a81bea36f47490ea9be7ac4a72ff","description":"Built on the Moonraker HTTP API. Cron reports klippy_shutdown, complete, error, paused (after printing), cancelled, stalled. Disclosure — Talks to the one Moonraker URL you set. Over plain http on a LAN, MOONRAKER_API_KEY is sent unencrypted. Pause, resume and cancel ask for Hermes approval every time and are refused under cron, yolo, approvals off and unattended sessions. The plugin has no user list of its own: anyone you allow on your Hermes gateway can request a move and approve it. Answering \"always\" adds an unused line to config.yaml. The optional watch is a cron job (a model turn every 5 minutes by default) that stays after uninstall until you run unschedule. vision_check, off by default, sends webcam stills to your model. The plugin host cannot watch. Not tested on real hardware.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-klipper-print-watch#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["klipper_status","klipper_control","klipper_watch"],"provides_hooks":[],"provides_middleware":[],"requires_env":["MOONRAKER_URL"]}},{"name":"kokoro-tts","title":"Kokoro TTS (local, Apple Silicon)","repo":"https://github.com/brunosouzas/hermes-kokoro-tts","sha":"9b682a84ff5b59c1b4d0b340b07b2c188b409e0b","description":"Local Kokoro-82M text-to-speech on Apple Silicon: adds the kokoro-mlx speech provider (tts.provider: kokoro-mlx) with sentence-by-sentence PCM streaming for voice mode, read-aloud and text_to_speech, 54 voices in nine languages, an optional voice per language that switches per sentence between Portuguese and English, and an optional dictionary of English words a non-English voice pronounces in English without changing voice; plus hermes kokoro install, status, restart, voices, say, words and uninstall. Disclosure — hermes kokoro install creates a separate Python 3.11 environment with uv (about 1.1 GB from PyPI, plus spaCy's en_core_web_sm wheel from its GitHub release, pinned by SHA-256), downloads mlx-community/Kokoro-82M-bf16 at a pinned revision from Hugging Face (about 340 MB), and installs a launchd agent (dev.hermes.kokoro-tts) that keeps a local server running in the background. The server listens only on 127.0.0.1 (it refuses other addresses), runs offline, and does not log the text; the text to speak goes only to that local server, bypassing any proxy settings. Writes the environment, model cache and log under ~/Library/Application Support/hermes-kokoro-tts, the requested audio files, and the profile's config.yaml only when you run hermes kokoro words add or remove. No API keys, no telemetry.","maintainer":"brunosouzas","tier":"community","category":"voice","requires_hermes":">=0.22.2","docs_url":"https://github.com/brunosouzas/hermes-kokoro-tts#readme","version":"0.3.0","readme":true,"platforms":["macos"],"known_issues":["macOS on Apple Silicon only (MLX).","Under plugins.isolation: host the hermes kokoro terminal command is not available (Hermes skips plugin CLI commands in the host); the speech provider still registers.","Only Brazilian Portuguese and English are tested; Japanese and Mandarin may need extra G2P packages this release does not install. Per-sentence language detection covers Portuguese and English."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kuma","repo":"https://github.com/nitishagar/hermes-kuma","sha":"e4a6c9db8d4e49c4827cc07632e46b8ec92f56df","description":"Uptime-Kuma monitoring for agents: the community MCP server for Uptime Kuma v2 (pinned @0.11.18 over npx stdio) with workflow skills for incident review, status digests, and confirmation-gated maintenance. Credentials stay in host-native MCP config (portable Agent Plugins v1 package, mcp.json + skills/; needs Node.js >= 22 on PATH and a Uptime Kuma v2 instance). Disclosure — first run has npx fetch @davidfuchs/mcp-uptime-kuma@0.11.18 (single-maintainer community package) from npm; that server exposes 31 read/WRITE tools against your Uptime Kuma instance, including permanent delete tools the bundled skills never call.","maintainer":"nitishagar","tier":"community","category":"tools","docs_url":"https://github.com/nitishagar/hermes-kuma","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"kumiho-memory","repo":"https://github.com/KumihoIO/kumiho-plugins","sha":"d4811200fa22225ae245d2778b938a793d6d5af6","subdir":"hermes","title":"Kumiho Memory","description":"Recall and save decisions, preferences and facts in your Kumiho Cloud workspace. Portable Agent Plugins v1 package with hosted OAuth MCP and six skills. Disclosure — connects to Kumiho's hosted MCP at https://mcp.kumiho.cloud/mcp (OAuth at control.kumiho.cloud, tokens held by Hermes); memory queries, including an automatic topic lookup near the start of relevant conversations, and approved captures are sent there; the server is marked `trust: untrusted`, so Hermes asks before every tool not annotated read-only. The optional backfill helper reads only files the user names and writes review packets to a new folder; Dream State can create a recurring Hermes cron task when asked (read-only by default). No local server, telemetry or background process.","maintainer":"KumihoIO","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/KumihoIO/kumiho-plugins/tree/d4811200fa22225ae245d2778b938a793d6d5af6/hermes","version":"0.1.0","image":"https://raw.githubusercontent.com/KumihoIO/kumiho-plugins/d4811200fa22225ae245d2778b938a793d6d5af6/hermes/assets/kumiho-memory-banner.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"lancedb-suite","repo":"https://github.com/3L0935/hermes-lancedb-memory-suite","sha":"9a83a57335f4b1074d075b255ca289fda5290099","subdir":"plugin","description":"Local-first LanceDB vector memory with a strict write contract, calibrated abstention, typed relations, conflict tracking and a retrieval-quality gate. Requires local Ollama + nomic-embed-text.","maintainer":"3L0935","tier":"community","category":"memory","version":"1.5.3","docs_url":"https://github.com/3L0935/hermes-lancedb-memory-suite#readme","platforms":["linux","macos"],"capabilities":{"provides_tools":["lancedb_search","lancedb_add","lancedb_update","lancedb_delete","lancedb_get","lancedb_list","lancedb_graph","lancedb_conflicts"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"lancedb","repo":"https://github.com/lancedb/hermes-agent-memory","sha":"6691591e62e10438ee32ff671afad337208fdd43","description":"LanceDB hybrid memory — embedded vector + FTS recall, workspace facts, transparent forget.","maintainer":"lancedb","tier":"community","category":"memory","docs_url":"https://github.com/lancedb/hermes-agent-memory#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"langfuse","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"c2a95963c442f3f23e4bc6fe0da898e1dd1fb63d","subdir":"langfuse","description":"Langfuse observability for Hermes: one trace per turn, one generation per LLM call (usage and cost from Hermes' own pricing, cache and reasoning tokens included), one observation per tool call and subagent. Content capture is sanitized by default (metadata-only and full are opt-in); sends traces only to the Langfuse project whose keys you set. Formerly built into Hermes core as observability/langfuse; existing users are migrated automatically.","maintainer":"NousResearch","tier":"official","category":"general","requires_hermes":">=0.21.7","version":"2.0.0","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/c2a95963c442f3f23e4bc6fe0da898e1dd1fb63d/assets/langfuse.jpg","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/langfuse","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_api_request","post_api_request","api_request_error","pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","on_session_finalize","on_session_end","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":["HERMES_LANGFUSE_PUBLIC_KEY","HERMES_LANGFUSE_SECRET_KEY"]}},{"name":"laso-finance","repo":"https://github.com/LasoFinance/hermes-plugin","sha":"8a046544307af690f04277bcb04929e5d1d58970","image":"https://raw.githubusercontent.com/LasoFinance/hermes-plugin/8a046544307af690f04277bcb04929e5d1d58970/assets/banner.png","description":"Spend USDC in the real world from Hermes: prepaid cards, gift cards, push-to-card, Venmo/PayPal and bank payouts, through the Laso Finance API. Native plugin, standard library only. Sign-in is the OAuth device flow (link and code handed to the human, approved on any device), so there is no key to paste and it works over SSH and the messaging gateway. Every tool that moves money or mints a credential goes through the Hermes approval gate first. Disclosure — the tools move real funds from the user's Laso account and agent wallet; 19 money-moving or credential-minting tools ask for Hermes approval first, but approvals.mode off / yolo, or approvals.cron_mode/unattended_mode approve, let them run without a prompt; laso_buy_with_saved_card is not prompted in Hermes (Laso requires a passkey approval on the holder's device before an order); all traffic goes to laso.finance only; the approved key is saved as LASO_API_KEY in the profile's .env and removed when Laso rejects it.","maintainer":"LasoFinance","tier":"community","category":"tools","docs_url":"https://github.com/LasoFinance/hermes-plugin#readme","version":"1.1.1","platforms":[],"capabilities":{"provides_tools":["laso_get_version","laso_refresh_token","laso_order_card","laso_get_card_data","laso_list_card_transactions","laso_get_card_deposit_address","laso_get_saved_cards","laso_create_saved_card_link","laso_buy_with_saved_card","laso_get_purchase_turn","laso_get_purchase_conversation","laso_create_reloadable_card","laso_get_account_balance","laso_get_kyc_status","laso_get_kyc_link","laso_register_webhook","laso_get_webhook","laso_delete_webhook","laso_withdraw","laso_get_withdrawal_status","laso_refresh_card_data","laso_order_intl_card","laso_cancel_intl_order","laso_search_merchants","laso_start_signup","laso_get_signup_status","laso_get_auth_link","laso_send_feedback","laso_list_address_book","laso_save_address_book_entry","laso_delete_address_book_entry","laso_push_to_card","laso_send_payment","laso_fund_card_balance","laso_withdraw_card_balance","laso_list_payment_recipients","laso_update_payment_recipient","laso_delete_payment_recipient","laso_get_payment_status","laso_send_bank_payment","laso_search_gift_cards","laso_order_gift_card","laso_create_banking_profile","laso_get_banking_profile_status","laso_get_banking_application","laso_update_banking_application_details","laso_upload_banking_document","laso_submit_banking_application","laso_create_banking_account","laso_list_banking_accounts","laso_create_banking_recipient","laso_add_banking_destination","laso_list_banking_recipients","laso_update_banking_destination","laso_delete_banking_recipient","laso_get_banking_transaction","laso_list_banking_transactions","laso_exchange_api_key","laso_get_agent_spend_limit","laso_create_agent_api_key","laso_announce_connection","laso_get_agent_wallet","laso_create_agent_wallet","laso_agent_wallet_transfer","laso_pay_x402_endpoint","laso_search_docs"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"letsfg","title":"LetsFG","repo":"https://github.com/LetsFG/LetsFG","sha":"94c16d6ab8c25437fbf95c954882c38c086d2978","subdir":"integrations/hermes","description":"Search and book real flights and hotels through the hosted LetsFG MCP server (Streamable HTTP, OAuth 2.1 + DCR), with the letsfg travel-booking workflow skill bundled: fares across airlines and the major travel sites, flexible dates, destinations in a region, bookable hotel rates, then book, follow and stop bookings. Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — hosted-only connector with no local code: every tool call goes to the vendor's remote MCP server at letsfg.co/mcp. Booking tools act on real money: a booking holds the price on the card saved on the user's LetsFG account (captured only once the airline or hotel confirms, released if it fails); per LetsFG, a booking, paid extra or hotel cancellation starts only when the user presses Approve in an e-mail from LetsFG, never from the conversation, and Hermes itself does not prompt before these tools unless you set `trust: untrusted` on the letsfg MCP server. Card details are only ever entered on letsfg.co, never in the conversation. Traveller details given for a booking (name, date of birth, gender, passport, contact, address) are sent to LetsFG and saved on that account. OAuth must be enabled with `hermes mcp add letsfg --url https://letsfg.co/mcp --auth oauth --connect-timeout 300`; the bundled mcp.json alone yields 401.","maintainer":"LetsFG","tier":"community","category":"tools","version":"1.1.1","docs_url":"https://github.com/LetsFG/LetsFG/tree/main/integrations/hermes","image":"https://raw.githubusercontent.com/LetsFG/LetsFG/94c16d6ab8c25437fbf95c954882c38c086d2978/integrations/hermes/assets/banner.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["Sign-in needs one extra command after install, because a portable mcp.json cannot declare OAuth: hermes mcp add letsfg --url https://letsfg.co/mcp --auth oauth --connect-timeout 300"]},{"name":"lib-docs","repo":"https://github.com/aydnOktay/hermes-lib-docs","sha":"6674b0e7aa469deb5a89b9640cd3a07f3b481abc","description":"Look up current library docs from public npm and PyPI (no API keys). Resolve a package, fetch README and metadata, keep recent lookups on Desktop. Disclosure — HTTPS to registry.npmjs.org, pypi.org and cdn.jsdelivr.net (npm READMEs) only; package name and version leave the machine; recent lookups are stored under $HERMES_HOME/plugin-data/lib-docs; the Desktop pane inserts text through Hermes Desktop's internal hermes:composer-insert event (not a public SDK API).","maintainer":"aydnOktay","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-lib-docs","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["lib_docs_resolve","lib_docs_get","lib_docs_recent"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"lightningai-rate-limit","repo":"https://github.com/dinosauria123/hermes-lightningai-rate-limit","sha":"dc7911a946f0b209a81cf680c168382177bb13bf","description":"Per-process throttle for Lightning AI (https://lightning.ai/api/v1) keeping LLM requests within the ~15 requests/min limit, using an in-memory token bucket. Gates only calls whose provider or base_url points at Lightning AI; no-op otherwise. Disclosure — registers one llm_execution middleware and nothing else; no network calls, files, or processes of its own.","maintainer":"dinosauria123","tier":"community","category":"models","requires_hermes":">=0.21.5","version":"1.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":["llm_execution"],"requires_env":[]}},{"name":"lightningai","repo":"https://github.com/dinosauria123/hermes-lightningai-provider","sha":"e4350ca278f8994322fc3b79a55a52e83388b7da","description":"Lightning AI as a Hermes model provider (--provider lightning, lightning-ai, lightningai): OpenAI-compatible gateway at https://lightning.ai/api/v1, models fetched live from /models. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads); chat requests and the model list go to lightning.ai through Hermes' own client with LIGHTNING_API_KEY (or LIGHTNING_AI_API_KEY), optional LIGHTNING_BASE_URL overrides the endpoint; the plugin itself opens no connections, reads/writes no files and starts no processes.","maintainer":"dinosauria123","tier":"community","category":"models","requires_hermes":">=0.21.5","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["LIGHTNING_API_KEY"]}},{"name":"limbic","repo":"https://github.com/dyiapanis/limbic","sha":"cddf94dfbac5598a451af9110ac56e15111fe16a","description":"Self-organising memory provider (MemoryProvider ABC): local SQLite (WAL) with sqlite-vec KNN + FTS5 hybrid recall, adaptive trust scoring, activation maturation, interference-based forgetting, NLI-based correction detection and synaptic atrophy. No LLM cost — all lifecycle mechanisms are deterministic. The optional inline chat recall indicator is off by default (recall_indicator in limbic.yaml) and memory injection works identically either way. Recall is confidence-gated: when nothing clears the calibration floor, recall abstains (no_confident_match) instead of surfacing near-misses, and the agent answers from what it knows without attributing anything to memory. Tools (remember/recall) and lifecycle hooks dispatch via the MemoryManager from the registered provider — this entry registers a MemoryProvider only, so provides_tools/provides_hooks are empty. Disclosure — on first primary session start downloads ~1.0GB of ONNX models (Arctic Embed 2.0 L int8 embedding, ~570MB; MiniLMv2 NLI, ~430MB, on first contradiction check) from huggingface.co at pinned commits with hash checks into ~/.cache/limbic/ (outside HERMES_HOME); at every model load, every file in those cache folders that is not in the pinned manifest is deleted — including unrelated files if you point embedding/nli cache_dir at a shared folder — which reclaims stale orphans from prior versions (e.g. an older fp32 cache of ~2.2GB); the memory database is never touched; spaCy NER models are not downloaded and must be installed manually for entity extraction; memory stays local in limbic.db under HERMES_HOME, and hermes backup adds VACUUM snapshots under HERMES_HOME/backups; no telemetry. Stores created or reindexed on 0.6.0+ record the embedder that produced their vectors and report stale_embedder=true after an embedder change until `hermes limbic reindex`; stores from 0.5.x keep serving their fp32 vectors unflagged until reindexed. PolyForm Noncommercial 1.0.0 (commercial use requires a separate license).","maintainer":"dyiapanis","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/dyiapanis/limbic#readme","version":"0.6.4","image":"https://raw.githubusercontent.com/dyiapanis/limbic/cddf94dfbac5598a451af9110ac56e15111fe16a/assets/banner.png","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"linkup","repo":"https://github.com/LinkupPlatform/linkup-hermes-plugin","sha":"d83d1162f2941e51bb4cbf34841b4c6b3305081c","description":"Linkup web search: live cited search (fast/standard/deep), URL-to-Markdown fetch with JS rendering, async deep research, and a Linkup backend for the built-in web_search / web_extract tools. Disclosure — sends search queries, fetch URLs and research briefs to api.linkup.so with your LINKUP_API_KEY (Linkup fetches pages server-side); when selected with hermes linkup use-as-web-backend it also handles the built-in web_search and web_extract calls; large fetched pages are cached under $HERMES_HOME/cache/linkup for 24 hours.","maintainer":"LinkupPlatform","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/LinkupPlatform/linkup-hermes-plugin#readme","version":"1.0.1","image":"https://raw.githubusercontent.com/LinkupPlatform/linkup-hermes-plugin/d83d1162f2941e51bb4cbf34841b4c6b3305081c/docs/banner.png","platforms":[],"capabilities":{"provides_tools":["linkup_search","linkup_fetch","linkup_research","linkup_research_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":["LINKUP_API_KEY"]}},{"name":"liquid-inference-provider","repo":"https://github.com/architect-xyz/hermes-liquid-inference","sha":"acd120f007367c1f422d3cd6ffe643f916f0b5f7","description":"Liquid Inference, an auction exchange for LLM inference, as a Hermes model provider (provider id `liquid`): the exchange sends each request to the eligible offer with the lowest estimated charge, and each request carries a cap on its charge (1 USD by default; set `model.default_headers.x-liquid-cap-usd` to change it). Submitted by Architect, the operator of Liquid Inference. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads). Chat requests (full prompts and tool results), auxiliary tasks (model `liquid.auto`) and the model list go through Hermes's own client to https://router.inference.ai.exchange/v1 (or LIQUID_BASE_URL) with LIQUID_API_KEY. The exchange forwards each request to whichever third-party provider wins its auction. Each request is billed up to its `x-liquid-cap-usd` cap (1 USD by default, set with `model.default_headers.x-liquid-cap-usd`) and carries `X-Title: Hermes Agent`. A top-level `reasoning_effort` is sent only when you select a level.","maintainer":"architect-xyz","tier":"community","category":"models","requires_hermes":">=0.21.6","docs_url":"https://github.com/architect-xyz/hermes-liquid-inference","version":"0.2.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["LIQUID_API_KEY"]}},{"name":"little-canary","repo":"https://github.com/hermes-labs-ai/little-canary","sha":"61855a940a66fb8319742756c3ff72c720a89160","subdir":"integrations/hermes-agent","version":"0.4.0","description":"Screens user turns and blocks downstream tools on a BLOCK verdict; the original prompt still reaches the model.","maintainer":"roli-lpci (Hermes Labs; independent of Nous Research)","tier":"community","category":"general","requires_hermes":">=0.21.3","docs_url":"https://github.com/hermes-labs-ai/little-canary/blob/61855a940a66fb8319742756c3ff72c720a89160/integrations/hermes-agent/README.md","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","pre_tool_call","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"live-time","repo":"https://github.com/chenfeijiang95-ui/hermes-live-time","sha":"8e5c80012457592f5c4fb740aa424f8512324467","description":"Inject live current time into every LLM call via the pre_llm_call hook — fixes stale session-start timestamps in long/cross-day conversations.","maintainer":"chenfeijiang95-ui","tier":"community","category":"general","docs_url":"https://github.com/chenfeijiang95-ui/hermes-live-time#readme","version":"1.0.0","image":"https://raw.githubusercontent.com/chenfeijiang95-ui/hermes-live-time/8e5c80012457592f5c4fb740aa424f8512324467/assets/banner.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"llm-antidote","repo":"https://github.com/GroveMinting/llmAntidote","sha":"c7f6a5428abbdba2b48f8b5fd3494b7ae2e3c5e8","description":"Runtime guardrails, behavioral evaluation, and signed fleet admission for Hermes Agent: a versioned capability policy that blocks or requires approval for model tool calls, paired synthetic behavioral evaluation with no real side effects, and a signed local promotion gate that refuses a model whose evidence does not satisfy signed fleet policy. Hooks-only (no agent tools). Disclosure — Adds approval prompts to tool calls by default (balanced mode): every MCP, connector or other-plugin tool, memory and skill writes, file reads outside the working and temp directories, and network-capable terminal/code commands go to Hermes's approval prompt; strict mode blocks them instead, and opt-in enforced fleet mode blocks all tool calls until the served model name matches the admitted one. The user-run `hermes antidote eval run` command sends synthetic prompts (and the API key you name) to the OpenAI-compatible endpoint you pass, as billed model calls (default suite up to ~170 requests); `model inspect hf:` queries huggingface.co; `fleet keygen` writes unencrypted Ed25519 private keys (mode 0600) to paths you choose.","maintainer":"GroveMinting","tier":"community","category":"tools","requires_hermes":">=0.21.5","version":"3.2.4","docs_url":"https://github.com/GroveMinting/llmAntidote#readme","capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call","post_tool_call","pre_api_request","on_session_start","on_session_reset","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"local-system-one-hermes","title":"Local System One","repo":"https://github.com/NMTZ-z/system-one-benchmark-lab","sha":"1095495019b2dff2b4231ed70ec23a3ea716e2f6","subdir":"integrations/hermes/local-system-one-hermes","description":"Local System One / Laya Typed Decisions control plane for Hermes Agent. Sends bounded turn data to a configurable sidecar for reversible OFF/Shadow/Canary routing decisions, with explicit Canary acknowledgement and fail-open behavior. Disclosure — executes nothing and does not start the sidecar. In Shadow/Canary mode, Search and Model Tier may POST the current task plus bounded recent conversation context; Notification Shadow may POST the completed turn's final assistant response (up to 6000 chars) plus lifecycle metadata. The default sidecar URL is loopback 127.0.0.1:8787 but is user-configurable to any host and no auth header is added. Notification is observation-only: the plugin never sends a push/message/webhook and persists decision metadata, not raw response text. Its only request mutations, in acknowledged Canary mode on the first provider call of a turn, are removing web_search/web_extract tools for audited deterministic no-Web rules and (off by default) lowering reasoning_effort for gemini-3.8-flash-tiered on audited hard-fast rules. The sidecar (same repo, separate pip install, Apple-Silicon MLX/CoreML) is a text classifier that downloads a pinned Hugging Face model.","maintainer":"NMTZ-z","tier":"community","category":"automation","requires_hermes":">=0.21.4","version":"0.6.0","docs_url":"https://github.com/NMTZ-z/system-one-benchmark-lab/tree/1095495019b2dff2b4231ed70ec23a3ea716e2f6/integrations/hermes/local-system-one-hermes","readme":true,"platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call","on_session_end"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"local_knowledge","repo":"https://github.com/stepanov1975/hermes-local-knowledge","sha":"c13a1a357eb110fe62d6d4f8a715187079766541","description":"Native Hermes tools for a configurable local capability index: search/get/neighbors plus local usage feedback/reporting.","maintainer":"stepanov1975","tier":"community","category":"tools","docs_url":"https://github.com/stepanov1975/hermes-local-knowledge#readme","capabilities":{"provides_tools":["knowledge_feedback","knowledge_get","knowledge_neighbors","knowledge_search","knowledge_usage_report"],"provides_hooks":["on_session_end","on_session_finalize","post_tool_call","pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"long-conversations","version":"0.1.0","repo":"https://github.com/cspears32/hermes-long-conversations","sha":"1a8dc52b7ae610f6db2d2ab0a7e7133b3a199807","description":"Persistent long-term conversations across session boundaries via structured handoff briefs and token monitoring. Disclosure — stores handoff briefs (topic, work in progress, decisions, open questions, next step; in aggressive mode auto-built from the first 200 characters of recent user messages) as plain JSON under HERMES_HOME/long-conversations/ and injects the pending brief into the first turn of the next session for the same chat or user (CLI briefs stay in one local scope and are not shown to messaging users); the model can change the plugin's settings with long_conv_config_set; an opt-in HERMES_LONG_CONV_BETA_LOG writes a local event log; no network calls.","maintainer":"cspears32","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/cspears32/hermes-long-conversations#readme","platforms":[],"capabilities":{"provides_tools":["long_conv_handoff","long_conv_load","long_conv_list","long_conv_config_get","long_conv_config_set"],"provides_hooks":["pre_llm_call","post_api_request","on_session_start","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"looot","repo":"https://github.com/loootai/hermes-looot","sha":"b4d9a4a212139938c7e8c1b10d5e73f8b0b70c59","description":"looot gives Hermes one sign-in and one prepaid balance for 2,500+ data API endpoints from 90+ providers: work emails and phones, company and people search, Google results, web pages as markdown, news, local businesses. Portable Agent Plugins v1 package with the hosted MCP server (remote streamable-http, OAuth 2.1 with dynamic client registration) and 21 skills. Disclosure — the run tool spends your prepaid looot balance (Hermes asks before each paid call and refuses them in unattended runs); the names, domains and emails you look up are sent to looot.ai and its upstream data providers; a `looot` server you define in config.yaml replaces the package's and drops that prompt unless you add `trust: untrusted`.","maintainer":"looot","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/loootai/hermes-looot#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"loreconvo","repo":"https://github.com/labyrinth-analytics/loreconvo","sha":"a61bf9fcf4a3c9eabce851f64fac23bf84eefc5e","subdir":"integrations/hermes","description":"LoreConvo memory provider: cross-surface persistent session memory with search, recall and structured memory items. Disclosure — stores end-of-session transcripts (truncated, including tool output) and Hermes memory writes in ~/.loreconvo/sessions.db, a store shared across all Hermes profiles and other LoreConvo clients, and injects context from those sessions into each turn; a Pro license enables a one-time Hugging Face embedding-model download; installs the loreconvo package (BUSL-1.1) with lancedb, fastembed and onnxruntime into the Hermes environment.","tier":"community","category":"memory","maintainer":"labyrinth-analytics","capabilities":{"provides_tools":["loreconvo_search_sessions","loreconvo_get_context","loreconvo_save_memory"],"provides_hooks":[],"provides_middleware":[],"requires_env":["LORECONVO_HERMES_PROJECT"]},"requires_hermes":">=0.21.0","version":"0.10.17","docs_url":"https://github.com/labyrinth-analytics/loreconvo?tab=readme-ov-file#loreconvo"},{"name":"lowrouter","repo":"https://github.com/carboniferio/hermes-lowrouter-provider","sha":"5531e83c0c13224c5501ccab09f11724b193d7fd","subdir":"lowrouter","description":"LowRouter as a Hermes model provider (`--provider lowrouter`, or LowRouter in `hermes model`). The picker shows the 180 `auto/` chat models with tool calling and 64K+ context, plus the user's own `alias/` models, instead of all 719 IDs from /v1/models. Context windows come from LowRouter's catalog instead of Hermes' 256K fallback, and /usage shows the credit balance in euros. LowRouter bills in EUR, so the plugin reports no USD cost and Hermes shows it as unknown. Maintained by LowRouter. Disclosure — registers one model provider and nothing else (no tools, hooks, commands or threads). Prompts, tool schemas and LOWROUTER_API_KEY go to https://api.lowrouter.ai/v1 (or the configured model.base_url) through Hermes' client, and LowRouter forwards each request to the host serving the model. The plugin's own requests are GET /v1/models (cached for an hour) and GET /v1/credits on /usage, to the same base URL with the same key, through Hermes' open_credentialed_url. No files read or written, no processes.","maintainer":"carboniferio","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/carboniferio/hermes-lowrouter-provider#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["LOWROUTER_API_KEY"]}},{"name":"lumberroom","repo":"https://github.com/lumberroom/lumberroom-hermes","sha":"87c697f31e0015c64900c2cc40f88beb3ead4a11","version":"1.0.2","description":"lumberroom memory provider. One durable store shared with every agent you use, recalled on every turn and written through the engine's own memory_write. Self-hosted open-source engine or lumberroom.cloud; OAuth or a static token. Maintained by the lumberroom team. Disclosure — when active, every non-trivial user message (first 1,000 characters) and the absolute git-root path of the working directory are sent on each turn to the configured lumberroom engine, which defaults to https://mcp.lumberroom.cloud (operated by Cybersapien Technologies, India) unless base_url names a self-hosted engine; the model is instructed to store decisions, preferences and facts there through memory_write, the engine's live tool descriptions and server instructions are injected into the system prompt each session, and setup switches off Hermes' built-in MEMORY.md/USER.md store.","maintainer":"lumberroom","tier":"community","category":"memory","requires_hermes":">=0.21.3","docs_url":"https://github.com/lumberroom/lumberroom-hermes#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"machine-library","repo":"https://github.com/SpaceFrontiers/hermes-machine-library","sha":"3d31000cd4995ffb452b246d268a5031acdd3744","description":"Research search for web_search and web_extract — papers, books, patents, standards and Wikipedia, with citable source links (Machine Library API key).","maintainer":"SpaceFrontiers","tier":"community","category":"web","title":"Machine Library","version":"0.1.0","docs_url":"https://github.com/SpaceFrontiers/hermes-machine-library#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MACHINELIBRARY_API_KEY"]},"requires_hermes":">=0.20.0"},{"name":"machine-spirit","repo":"https://github.com/KuboKubis25/hermes-machine-spirit","sha":"fcba6cbcdfd29ecf6fe4dcd652884aa9972ae0b2","title":"Machine Spirit","description":"A Warhammer 40k shrine pane docked under the sessions list: the cogitators recite original Adeptus Mechanicus-style litanies, and the cog-skull, candle and binary stream animate while Hermes works. Just for fun. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware, env vars, network or file access.","maintainer":"KuboKubis25","tier":"community","category":"desktop","version":"1.0.0","docs_url":"https://github.com/KuboKubis25/hermes-machine-spirit#readme","screenshots":["https://raw.githubusercontent.com/KuboKubis25/hermes-machine-spirit/fcba6cbcdfd29ecf6fe4dcd652884aa9972ae0b2/docs/machine-spirit.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.20.6"},{"name":"made-shelf","repo":"https://github.com/aydnOktay/hermes-made-shelf","sha":"72f65557a9b9d4e0df3deb26d673fa17a37e8c64","description":"Everything Hermes made - cross-session shelf of wrote/patched paths. Full Desktop page, chip, pin. No API keys.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/aydnOktay/hermes-made-shelf","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["made_shelf_list","made_shelf_clear"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"magi","repo":"https://github.com/MarcosAlves90/magi","sha":"3f1a38c1804b12080a329a41fc2cc257f1af151a","description":"Review pending Hermes memory writes and inspect, add, edit, delete, or AI-compact stored memory from Desktop.","maintainer":"MarcosAlves90","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"1.7.8","screenshots":["https://raw.githubusercontent.com/MarcosAlves90/magi/3f1a38c1804b12080a329a41fc2cc257f1af151a/docs/screenshots/pending-writes.png","https://raw.githubusercontent.com/MarcosAlves90/magi/3f1a38c1804b12080a329a41fc2cc257f1af151a/docs/screenshots/stored-memory.png"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"make-parts-now","title":"Make Parts Now","repo":"https://github.com/makepartsnow/makepartsnow-hermes","sha":"5ccbbbc7b3ba276bba6ad62d8f38b977960d9420","description":"Quote and order custom 3D printed and CNC machined parts from your CAD files through the hosted Make Parts Now MCP server (Streamable HTTP, no sign-in to quote), with the quote-parts workflow skill bundled: upload an STL, STEP, 3MF or OBJ file, get the price and ship date for each production speed (SLS nylon, FDM plastic, CNC aluminum and brass), change the quantity, material or speed, and get a checkout link. Portable Agent Plugins v1 package (mcp.json + skills/), configuration only. Disclosure — hosted-only connector with no local code; every tool call goes to makepartsnow.com. To quote a local file the agent uploads that one CAD file with curl through the terminal tool (Hermes approvals apply) to a one-time upload link, or gives the user an upload page. Nothing is charged in chat: checkout links open Stripe Checkout on makepartsnow.com where the user pays. US shipping only.","maintainer":"Make Parts Now","tier":"community","category":"tools","version":"1.0.1","docs_url":"https://github.com/makepartsnow/makepartsnow-hermes","image":"https://raw.githubusercontent.com/makepartsnow/makepartsnow-hermes/5ccbbbc7b3ba276bba6ad62d8f38b977960d9420/assets/banner.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["Order status needs a signed-in Make Parts Now account, which the plugin's server doesn't have; it answers with a link to makepartsnow.com/orders. To ask Hermes about orders, add a signed-in server once: hermes mcp add makepartsnow-orders --url \"https://makepartsnow.com/mcp/assistant/signin?client=hermes\" --auth oauth --connect-timeout 300"],"requires_hermes":">=0.20.0"},{"name":"maqami-travel","repo":"https://github.com/negm17111995/mcp-server","sha":"6478de2d093fcf9bdd3c5dbff6d6ef267dcb56ae","description":"Search hotels (3M+ hotels) and flights worldwide on MAQAMI, read hotel details and reviews, then send the customer a secure checkout link on book.maqami.co, through the official MAQAMI Travel MCP server (Streamable HTTP at mcp.maqami.co, no account or key), with the maqami-travel-booking skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — connects to the hosted MAQAMI MCP server at mcp.maqami.co (no key); its tool list is defined by that server, not by the pinned repo. The tool arguments the agent sends go to it: destinations, dates, guests, lead-guest nationality and currency, plus booking ID and email for lookups, amendments and cancellations. Prebook (hotels) and verify (flights) hold a real rate, and the amend and cancel tools change or cancel real bookings (late or non-refundable cancellations are still charged); the skill tells the agent to show the details and get a clear yes before each prebook, amend or cancel. Customers pay only on book.maqami.co; no tool takes card or passport details.","maintainer":"negm17111995","tier":"community","category":"tools","title":"MAQAMI Travel","requires_hermes":">=0.21.5","docs_url":"https://github.com/negm17111995/mcp-server#readme","version":"1.0.7","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"markdown-new","repo":"https://github.com/nosliwhtes/hermes-markdown-new","sha":"dab049e0fd338ab8f7159c120fe55490410d0a6e","subdir":"plugin/markdown-new","description":"Search the public web, read pages as Markdown, crawl sites, and convert documents in Hermes. No API key required. Disclosure — search queries, submitted URLs and explicitly approved local file uploads go to the public markdown.new service; needs the companion markdown-new CLI (uv tool install from the same repo tag), which the plugin runs as a subprocess with the Hermes process environment.","maintainer":"nosliwhtes","tier":"community","category":"web","docs_url":"https://github.com/nosliwhtes/hermes-markdown-new/blob/dab049e0fd338ab8f7159c120fe55490410d0a6e/plugin/markdown-new/README.md","version":"1.0.0","readme":true,"platforms":["linux","macos"],"capabilities":{"provides_tools":["markdown_new"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"markifact","repo":"https://github.com/markifact/markifact-mcp","sha":"9a873931b6138970888d2a9102a8037dbbd174a5","subdir":"plugins/hermes/markifact","description":"Run Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, GA4, Shopify, HubSpot and 50+ more platforms through Markifact's hosted MCP server. Portable Agent Plugins v1 package with ten skills (operating protocol, write-safety rules, campaign launch, creative rotation, negative sweeps, diagnosis); remote streamable-http with OAuth 2.1 and dynamic client registration, so no Node.js or API keys. Disclosure: creates and edits real ad campaigns that spend your ad budgets; every write is a separate approval-gated operation and the skills instruct confirm-before-spend, but that is enforced by the skills and the server's approval flag, not by Hermes.","maintainer":"Markifact","tier":"community","category":"tools","requires_hermes":">=0.20","docs_url":"https://github.com/markifact/markifact-mcp/tree/main/plugins/hermes/markifact#readme","version":"1.0.5","image":"https://raw.githubusercontent.com/markifact/markifact-mcp/9a873931b6138970888d2a9102a8037dbbd174a5/assets/icon.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"max-platform","title":"Hermes MAX.ru Integration","repo":"https://github.com/Realmagnum/hermes-max-integration","sha":"50c7a9a7c16b6207a079b7b883718dd863e9e951","version":"2.11.0","requires_hermes":">=0.21.4","image":"https://raw.githubusercontent.com/Realmagnum/hermes-max-integration/50c7a9a7c16b6207a079b7b883718dd863e9e951/assets/banner.jpg","docs_url":"https://github.com/Realmagnum/hermes-max-integration/blob/50c7a9a7c16b6207a079b7b883718dd863e9e951/README.md","description":"MAX messenger gateway with polling/webhook, streaming, interactive questions, native attachments, Core voice transcription, optional PNG tables and a Desktop sessions sidebar. Disclosure — sends the bot token and message/file content to the MAX Bot API (platform-api2.max.ru) and MAX upload hosts (*.max.ru, *.oneme.ru, *.okcdn.ru). Inbound attachments are downloaded only for allowlisted senders, with SSRF protection, and cached under HERMES_HOME. The bundled Russian Trusted Root CA is trusted only by the MAX API/upload clients, not attachment downloads. Its platform hint lets the agent attach local host files to MAX replies via MEDIA paths, and a public output hook adds a filename caption to file-only MAX replies. Webhook mode opens a listener (default 0.0.0.0:8646) that requires a secret and public HTTPS. Polling startup deletes all of the bot's webhook subscriptions. Optional table rendering launches Playwright/Chromium; with MAX_AUTO_INSTALL_PLAYWRIGHT=true it pip-installs playwright==1.62.0 and downloads Chromium (~115 MB). The MAX allowlist does not honour Hermes pairing approvals. No telemetry or self-update.","maintainer":"Realmagnum","tier":"community","category":"platform","platforms":[],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":["MAX_BOT_TOKEN"]}},{"name":"meeting-overlay","repo":"https://github.com/taxbax/meeting-overlay","sha":"2c7859f1407f516c543d4409abab98d9b2e8928a","description":"Disclosure — sends meeting transcripts to Nous inference with your Hermes login (fallback OpenRouter key from ~/.hermes/.env; optional OCTOPUS_DESK_URL); installs a launchd agent that records mic/system audio; writes and deletes under your Obsidian vault; macOS + source install only. Native desktop pane showing the live meeting transcript, answer, and daemon status.","maintainer":"taxbax","tier":"community","category":"desktop","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"platforms":["macos"]},{"name":"mem-os","repo":"https://github.com/Markgatcha/memos","sha":"af8fa31e01078e4d5e38210b61acdf90f6d70581","subdir":"plugin","description":"Local-first persistent memory: store durable facts once and recall them in any session. Portable Agent Plugins v1 package (mcp.json + skills/): the @mem-os/sdk MCP server (pinned 1.6.26) over npx stdio, plus the mem-os-memory skill covering when to store and when to recall. All data stays in a local SQLite database under the user home directory; no cloud, no telemetry, no API keys. Server cwd is ${PLUGIN_DATA} so nothing is written into the install tree. Needs Node.js and npm on PATH.","maintainer":"Markgatcha","tier":"community","category":"memory","docs_url":"https://github.com/Markgatcha/memos#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mem0","repo":"https://github.com/mem0ai/mem0","sha":"43849c6e9d4d773b83a8144b6373aedc67241a5d","subdir":"integrations/hermes-plugin-mem0","version":"1.3.0","description":"Mem0 memory provider — server-side LLM fact extraction with semantic search, automatic deduplication and opt-in reranking, in platform, self-hosted or local OSS mode. Maintained by Mem0; the same provider that shipped in-tree. Disclosure — conversation turns and recall queries go to the configured Mem0 backend (api.mem0.ai in platform mode); at this pin the mem0ai library's anonymous PostHog usage telemetry stays on unless MEM0_TELEMETRY=false is set; `hermes memory setup` can start Docker (pgvector) and Ollama containers for local mode.","maintainer":"mem0ai","tier":"community","category":"memory","docs_url":"https://github.com/mem0ai/mem0/tree/main/integrations/hermes-plugin-mem0#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"memanto","repo":"https://github.com/moorcheh-ai/memanto","subdir":"integrations/hermes-agents/hermes_memanto","sha":"21554fe8ac40685a45f222022b08e58459760b7d","version":"0.1.1","description":"Memanto memory agent — typed long-term memory (remember/recall/answer) with auto-recall, turn capture, and RAG answers. Disclosure — each user turn (as a recall query), completed user+assistant turns, Hermes memory writes and memanto_answer questions are sent to Moorcheh cloud (api.moorcheh.ai) under a per-profile agent namespace by default; requires MOORCHEH_API_KEY; settings in $HERMES_HOME/memanto.json.","maintainer":"moorcheh-ai","tier":"community","category":"memory","docs_url":"https://github.com/moorcheh-ai/memanto/tree/main/integrations/hermes-agents#readme","readme":true,"capabilities":{"provides_tools":["memanto_remember","memanto_recall","memanto_answer"],"provides_hooks":["on_memory_write"],"provides_middleware":[],"requires_env":["MOORCHEH_API_KEY"]}},{"name":"memex8","repo":"https://github.com/Ex8-ca/memex8","sha":"9f30627c7d7f35d44e0b6aa73e81417482d5bdb9","subdir":"plugins/memex8","version":"1.1.0","description":"Self-hosted vector memory (Qdrant + TurboQuant compression) with auto-discovered knowledge realms, semantic search across conversations and ingested documents, and a slumber pipeline for memory consolidation. v1.1.0 adds optional per-session injection dedup with char-budget gate, decision/evaluation memory-type promotion (slower decay for load-bearing turns), prompt-injection sanitization on read, configurable system-prompt template, export/import memories as JSON, and a /memex8 slash command. New memory behaviours are opt-in; /memex8 export|import is confined to $HERMES_HOME/plugin-data/memex8 unless enable_export_import=true. Disclosure — auto-stores a truncated copy (first 300 chars) of every user and assistant turn, plus per-message previews of the whole transcript at session end and before context compression, to the memex8 server at MEMEX8_BASE_URL (self-hosted; default http://localhost:8080) using MEMEX8_API_KEY.","maintainer":"Ex8-ca","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/Ex8-ca/memex8/blob/main/plugins/memex8/README.md","image":"https://raw.githubusercontent.com/Ex8-ca/memex8/9f30627c7d7f35d44e0b6aa73e81417482d5bdb9/plugins/memex8/docs/banner.png","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end","on_pre_compress"],"provides_middleware":[],"requires_env":["MEMEX8_API_KEY"]}},{"name":"memlock","repo":"https://github.com/Sahil-SS9/hermes-memlock","sha":"123b9fd252d6fc2c9c7c4f254164915874aa54d5","description":"Reasserts pinned standing instructions after context compaction. Disclosure — scope=global pins apply to every session sharing the same HERMES_HOME; memlock_setup.py edits config.yaml and .claude/settings.json (with backups) only when you run it.","maintainer":"Sahil-SS9","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/Sahil-SS9/hermes-memlock","platforms":[],"capabilities":{"provides_tools":["guard_pin"],"provides_hooks":["pre_llm_call","on_session_start","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"memobase","repo":"https://github.com/fred0m/hermes-memobase-provider","sha":"4e8e447966acefaea372395e2db96ca0d0127f18","description":"Memobase memory provider — self-hosted user profile + event timeline recall, with hybrid BM25/vector/entity retrieval and automatic per-turn prefetch.","maintainer":"fred0m","tier":"community","category":"memory","docs_url":"https://github.com/fred0m/hermes-memobase-provider#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MEMOBASE_API_KEY","MEMOBASE_BASE_URL"]}},{"name":"memoria","repo":"https://github.com/matrixorigin/memoria","sha":"3a5c5065b2820d56dd3d8ac8bb259a9424b1476e","subdir":"plugins/hermes","description":"Memoria Cloud memory provider with scoped recall, explicit memory tools and opt-in background capture. Disclosure — sends recall queries and explicit memory operations to api.thememoria.ai by default (or a configured self-hosted origin). When enabled, auto capture uploads completed user/assistant text for fact extraction, excluding tool results and media. A local SQLite outbox stores pending text; credentials are resolved through the active Hermes profile's MEMORIA_API_KEY secret.","maintainer":"matrixorigin","tier":"community","category":"memory","requires_hermes":">=0.21.5","version":"0.1.1","docs_url":"https://github.com/matrixorigin/memoria/blob/3a5c5065b2820d56dd3d8ac8bb259a9424b1476e/plugins/hermes/README.md","readme":true,"platforms":["linux","macos"],"known_issues":["Development preview: local CLI acceptance passed; Desktop has not been validated and gateway platforms are disabled.","Auto capture is off by default. One-shot CLI exit can interrupt an in-flight capture, leaving an uncertain event requiring manual inspection.","Explicit-write exclusions apply to the current turn only. Auto capture can retain paraphrases, recalled facts from later turns, transient results or operation requests; global semantic deduplication is not guaranteed.","Ambiguous write outcomes are not automatically retried; this plugin does not provide exactly-once capture."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MEMORIA_API_KEY"]}},{"name":"memory-review","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"a10fb2b55ed38e6cdb0cf2faff1056443db57c5f","subdir":"public/memory-review","description":"Checkbox staged memory writes and approve or reject the selection from a dialog.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/memory-review","version":"1.2.1","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/a10fb2b55ed38e6cdb0cf2faff1056443db57c5f/public/memory-review/docs/hero.png","screenshots":["https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/a10fb2b55ed38e6cdb0cf2faff1056443db57c5f/public/memory-review/docs/screenshot.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"memory-rewind","repo":"https://github.com/AhmetArif0/hermes-memory-rewind","sha":"354927184de03cdc4a9e9e48ddb2865c36368b1f","subdir":"memory-rewind","description":"Automatic version history for the built-in memory (MEMORY.md, USER.md), SOUL.md and skills/ (including curator-archived skills): browse, diff and restore any past version with `hermes memory-rewind`, or view it from any chat with the read-only `/memory-history`. Works alongside the built-in memory; not a memory provider. Disclosure — runs the local git binary (isolated from the user's git config, hooks and signing) to keep a bare repository in $HERMES_HOME/plugin-data/memory-rewind/; reads only the tracked files (never .env, auth.json, databases or skills/.hub/); rewrites tracked files only when the user runs `restore`; no network.","maintainer":"AhmetArif0","tier":"community","category":"general","requires_hermes":">=0.21.5","docs_url":"https://github.com/AhmetArif0/hermes-memory-rewind","version":"1.3.2","image":"https://raw.githubusercontent.com/AhmetArif0/hermes-memory-rewind/e5b139b1059a47df34002e76a7bfd84bc60d9f35/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start","pre_llm_call","post_tool_call","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"memory-shield","title":"Memory Shield","repo":"https://github.com/churnast/hermes-memory-shield","sha":"347ab18408da52937f7e808a6e88a52b74184225","description":"Keeps your agent from rewriting or wiping what it remembers about you: by default the agent may add facts to the owner profile (USER.md) wherever it may write and may correct one only when the owner asks in a direct chat, the CLI or a trusted chat, and nobody may delete one; the agent's notes (MEMORY.md) cannot be deleted; group chats are read-only except for the people and owner-only chats you trust, and once trusted_users is set a direct chat with anyone not listed is read-only too; Hermes' unattended background review may not touch the owner profile. Block, ask through Hermes' approval prompt or just log, and undo edits and deletions from snapshots. Disclosure — no network calls, credentials, shell commands or background processes. One pre_tool_call hook reads the turn's platform, chat type, chat id and name, sender id and name and the cron flag (gateway.session_context) and whether the run is Hermes' unattended review (tools.skill_provenance.is_unattended_review), checks memory tool calls, and checks write_file, patch, terminal and execute_code calls only for a write into, or a removal of, USER.md, MEMORY.md or the memory folder (reading a memory file or copying it elsewhere passes in calls up to 16 KB; a longer call that names them is refused); mode approve asks through Hermes' approval gate in the owner's direct chats and the CLI and blocks in shared chats, cron and direct chats with people not in trusted_users. Writes plugin-data/memory-shield/audit.jsonl (the last 500 refused or flagged writes: time, chat, sender and a 160-character excerpt) and snapshots/ (full copies of USER.md and MEMORY.md taken right before an allowed edit or deletion, 20 per file by default). Reads the memory files and holds the memory store's lock files while it reads or writes them (not on Windows); /memory-shield restore overwrites one memory file. /memory-shield log and restore answer only in direct chats, the CLI and trusted_chats, and once trusted_users is set only the people listed there (a session without a user id, such as the CLI, counts as the owner); /memory-shield, snapshots and whoami answer in any chat with settings, counts, times, sizes and the caller's own id, name and chat key.","maintainer":"churnast","tier":"community","category":"general","requires_hermes":">=0.21.5","docs_url":"https://github.com/churnast/hermes-memory-shield#readme","version":"1.1.2","image":"https://raw.githubusercontent.com/churnast/hermes-memory-shield/347ab18408da52937f7e808a6e88a52b74184225/docs/card.png","screenshots":["https://raw.githubusercontent.com/churnast/hermes-memory-shield/347ab18408da52937f7e808a6e88a52b74184225/docs/screenshots/01-group-stranger.png","https://raw.githubusercontent.com/churnast/hermes-memory-shield/347ab18408da52937f7e808a6e88a52b74184225/docs/screenshots/02-forget-everything.png","https://raw.githubusercontent.com/churnast/hermes-memory-shield/347ab18408da52937f7e808a6e88a52b74184225/docs/screenshots/04-undo.png"],"platforms":["linux","macos"],"known_issues":["Needs plugins.isolation: in_process (the default). Under plugins.isolation: host the plugin cannot see the current chat, sender or Hermes' review marker, so it judges every call like a direct chat and the group chat and background review protection does not apply.","Covers Hermes' built-in memory tool (USER.md, MEMORY.md) only, not the tools of memory provider plugins such as Honcho or Mem0.","Without trusted_users every direct chat counts as the owner: whoever can message the agent directly may add facts to the owner profile and correct them (not delete them) until the owner's id is listed.","Spotting USER.md and MEMORY.md edits made through terminal and execute_code is best effort: a path built some other way, or a command run from a script file, can get through.","terminal and execute_code calls are read up to 16,384 characters. A longer call that contains the word memories, USER.md or MEMORY.md (any case, quotes ignored) is refused even when it only reads them; a longer call that contains none of them passes without being read."],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"memory-zvec","repo":"https://github.com/kuntao2011/kkk-hermes-memory-zvec","sha":"ef1f460353185735f0139c3e315a44255f32e667","version":"1.3.2","description":"Community Zvec memory backend for Hermes Agent - in-process HNSW + RocksDB FTS store with native hybrid retrieval and session-safe lock governance; embeddings via any Ollama-compatible endpoint (local Ollama bge-m3 by default).","maintainer":"kuntao2011","tier":"community","category":"memory","docs_url":"https://github.com/kuntao2011/kkk-hermes-memory-zvec#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"memtomem","repo":"https://github.com/memtomem/memtomem","sha":"592865456cf7670311648fbc619bbb876d002a1e","subdir":"packages/memtomem-hermes-plugin","version":"0.1.4","description":"Markdown-first long-term memory shared across your coding agents: a local memtomem MCP server plus six memory skills (index, recall, remember, search, setup, status). Notes live in ~/.memtomem and are searchable from Hermes, Claude Code, Codex CLI and Kimi Code. Runs at user scope. Disclosure — the server is launched with `uvx --python 3.12` and downloaded from PyPI (memtomem[onnx]==0.6.8) on first start, with Python 3.12 if uv cannot find one; it runs as a stdio MCP server for the session and reads the directories you ask it to index. With a fresh BM25-only configuration nothing else leaves the machine; an existing memtomem configuration may enable Hugging Face model downloads, a remote embedding or LLM provider, Cohere reranking or search webhooks. At startup the server also reads the nearest .env found upward from its installed location inside uv's cache (normally ~/.env), setting variables not already present, outside Hermes's MCP environment filtering.","maintainer":"memtomem","tier":"community","category":"general","requires_hermes":">=0.21.5","docs_url":"https://github.com/memtomem/memtomem/tree/592865456cf7670311648fbc619bbb876d002a1e/packages/memtomem-hermes-plugin","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mermail","repo":"https://github.com/Nudgen-Marketing/mermail-skills","sha":"269a711bf683845d75009df4984bf25eee83b0bd","description":"Privacy-first agent email inboxes and workspace automation through hosted Mermail MCP. Portable Agent Plugins v1 package (mcp.json + skills/, seventeen skills bundled); authenticate with OAuth via `hermes mcp login mermail`. No credentials are stored in mcp.json. Disclosure — the bundled skills also expose Mermail's paybox wallet tools over the hosted MCP (x402 payments, xStocks trading, standing grants); the skills allow the agent to move funds without a same-turn confirmation when your message already states exact terms, so spending controls live on your Mermail account, not in Hermes.","maintainer":"Nudgen-Marketing","tier":"community","category":"platform","requires_hermes":">=0.20","docs_url":"https://docs.mermail.app/ai/skills","version":"1.5.5","image":"https://raw.githubusercontent.com/Nudgen-Marketing/mermail-skills/269a711bf683845d75009df4984bf25eee83b0bd/assets/logo.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"metamask-wallet","repo":"https://github.com/akugone/hermes-metamask-wallet","sha":"b56d6bbf575391d172280016abf778d31c5ca8bd","subdir":"","description":"MetaMask Agent Wallet for Hermes — chat-only setup, reads, and approval-gated transfers/swaps/signatures, a gated Guard Mode policy editor, and a background 2FA watcher. Keys stay in MetaMask.","maintainer":"akugone","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/akugone/hermes-metamask-wallet","platforms":["macos","linux"],"capabilities":{"provides_tools":["mm_status","mm_setup","mm_balance","mm_market","mm_history","mm_swap_quote","mm_transfer","mm_swap_execute","mm_sign","mm_requests","mm_policy"],"provides_hooks":["pre_tool_call","post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"metronix","repo":"https://github.com/mtrnix/hermes-memory-metronix","sha":"55634c149378f6241a9147a47e67133f6c8a02e6","description":"Metronix memory provider for Hermes with prefetch recall and built-in memory write-through.","maintainer":"mtrnix","tier":"community","category":"memory","docs_url":"https://github.com/mtrnix/hermes-memory-metronix#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"microsoft365","repo":"https://github.com/fabiomotta0311/hermes-microsoft365-plugin","sha":"4fdc64c02c92e155df570c030f6d3c53d5361e23","description":"Pre-release Microsoft 365 Graph tools for Outlook, SharePoint, OneDrive, Calendar, Teams, To Do, and Planner.","maintainer":"Fabio Motta","tier":"community","category":"platform","requires_hermes":">=0.21.3,<0.22","subdir":"microsoft365","docs_url":"https://github.com/fabiomotta0311/hermes-microsoft365-plugin#readme","version":"0.1.0a4","platforms":[],"capabilities":{"provides_tools":["microsoft365_preflight","microsoft365_outlook","microsoft365_sharepoint","microsoft365_onedrive","microsoft365_calendar","microsoft365_teams","microsoft365_todo","microsoft365_planner"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":["MICROSOFT365_CLIENT_SECRET"]}},{"name":"mindgraph","repo":"https://github.com/shuruheel/mindgraph","sha":"b96c2590435bb625210506a47df682967215b6d7","description":"MindGraph — semantic graph memory with hybrid retrieval, goal/decision tracking, and cross-document synthesis.","maintainer":"shuruheel","tier":"community","category":"memory","docs_url":"https://github.com/shuruheel/mindgraph#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"minecraft-platform","repo":"https://github.com/kyssta-exe/hermes-minecraft-gateway","sha":"8ff37a626439caecb9ceb724b5da7718eb77a8b1","description":"Minecraft gateway adapter for Hermes Agent. Spawns a Mineflayer bot that joins a Minecraft server, wanders around, and relays chat messages between players and the Hermes agent. Supports offline and Microsoft-authenticated accounts.","maintainer":"kyssta-exe","tier":"community","category":"platform","docs_url":"https://github.com/kyssta-exe/hermes-minecraft-gateway#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"minimax-image","repo":"https://github.com/rriggs/hermes-plugin-minimax-image","sha":"5a07a0f67d74a67ac426d7b901f8bfc60f28951c","description":"MiniMax image generation -- Image-01 models via MiniMax platform. Supports text-to-image and image-to-image with subject reference.","maintainer":"rriggs","tier":"community","category":"tools","docs_url":"https://github.com/rriggs/hermes-plugin-minimax-image#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MINIMAX_API_KEY"]}},{"name":"minimax-search","repo":"https://github.com/pdonizete/hermes-minimax-search","sha":"f2af5191e70269fdf6aee1954ab6888d652c1651","description":"MiniMax web search via the Token Plan API — keyed, no CAPTCHA","maintainer":"pdonizete","tier":"community","category":"web","docs_url":"https://github.com/pdonizete/hermes-minimax-search#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MINIMAX_API_KEY"]}},{"name":"minimax-video","repo":"https://github.com/rriggs/hermes-plugin-minimax-video","sha":"759bec0f124c50e868facc8da5e6cf054403d761","description":"MiniMax (Hailuo) video generation -- Hailuo 2.3/02 and S2V-01 models via MiniMax platform. Async task API. Supports text-to-video, image-to-video, and subject-reference-to-video.","maintainer":"rriggs","tier":"community","category":"tools","docs_url":"https://github.com/rriggs/hermes-plugin-minimax-video#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MINIMAX_PAYG_KEY"]}},{"name":"mistral-vibe","repo":"https://github.com/nebneo/hermes-mistral-vibe","sha":"c0d7bc8d11306e18499c84dd94cc3581de550e55","description":"Direct Mistral Vibe subscription access — browser PKCE login, dedicated credential pool, account-visible catalog discovery, relay-verified reasoning_effort for GLM models. Disclosure — unofficial, not affiliated with Mistral. \"hermes auth add mistral-vibe\" runs a browser PKCE sign-in against Mistral's Vibe console endpoints (console.mistral.ai/api/vibe/*) and stores the returned API key in the Hermes credential pool (auth.json, slice mistral-vibe), or uses MISTRAL_VIBE_API_KEY. Prompts and model listing go only to api.mistral.ai/v1. Vibe subscription coverage of API use is not guaranteed and may bill as pay-as-you-go. Logout clears the local pool but does not revoke the key remotely.","maintainer":"nebneo","tier":"community","category":"models","docs_url":"https://github.com/nebneo/hermes-mistral-vibe#readme","version":"1.1.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MISTRAL_VIBE_API_KEY"]}},{"name":"mnemostack","repo":"https://github.com/udjin-labs/hermes-mnemostack","sha":"08bdc8c4bc78501eaa4297978082ff380bff4658","subdir":"src/hermes_mnemostack/plugin","description":"Persistent agent memory over a mnemostack service or a local Qdrant — hybrid recall (vector + lexical + graph), verbatim capture with self-echo suppression, and soft retraction. Multi-tenant when pointed at a shared authenticated service; the tenant is resolved server-side from the service key. Disclosure — the pinned directory is a discovery shim; the provider code installs from PyPI at the version pinned in plugin.yaml pip_dependencies (hermes-mnemostack==1.0.3) into the Hermes venv. Configured via MNEMOSTACK_* env vars; no key is required for a purely local Qdrant setup.","maintainer":"udjin-labs","tier":"community","category":"memory","requires_hermes":">=0.19","docs_url":"https://github.com/udjin-labs/hermes-mnemostack/blob/08bdc8c4bc78501eaa4297978082ff380bff4658/README.md","version":"1.0.3","capabilities":{"provides_tools":["mnemostack_search","mnemostack_remember","mnemostack_forget"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mnemosyne-dashboard","repo":"https://github.com/wysie/mnemosyne-dashboard","sha":"a918e5e0841fdc85baad7ab582432b2b7499b2f2","description":"Local-only web dashboard for browsing and visualising Mnemosyne memories, triples, stats, and consolidation history.","maintainer":"wysie","tier":"community","category":"desktop","docs_url":"https://github.com/wysie/mnemosyne-dashboard#readme","capabilities":{"provides_tools":["mnemosyne_dashboard_config","mnemosyne_dashboard_start","mnemosyne_dashboard_status","mnemosyne_dashboard_stop"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mnemosyne","repo":"https://github.com/mnemosyne-oss/mnemosyne","sha":"d73848735a2a48471a62d2c8fb96cd7183c97491","subdir":"integrations/hermes-catalog","requires_hermes":">=0.21.4","version":"0.7.3","description":"Local-first memory layer for Hermes Agent — SQLite with vector + FTS5 hybrid recall, episodic consolidation, temporal knowledge graph. Zero cloud. Disclosure — the mnemosyne_remember_media tool refuses local file paths unless MNEMOSYNE_MEDIA_ALLOWED_PATHS is set and sends media only to an operator-configured OpenAI-compatible endpoint when modality_enabled is on; video uses ffmpeg/ffprobe from PATH; the embedding model (BAAI/bge-small-en-v1.5) downloads from Hugging Face on first use.","maintainer":"mnemosyne-oss","tier":"community","category":"memory","docs_url":"https://github.com/mnemosyne-oss/mnemosyne","capabilities":{"provides_tools":["mnemosyne_apply_pending","mnemosyne_batch","mnemosyne_diagnose","mnemosyne_export","mnemosyne_forget","mnemosyne_forget_canonical","mnemosyne_get","mnemosyne_graph_link","mnemosyne_graph_query","mnemosyne_import","mnemosyne_invalidate","mnemosyne_model_card","mnemosyne_model_refresh","mnemosyne_persona_demote","mnemosyne_persona_list","mnemosyne_persona_promote","mnemosyne_persona_reinforce","mnemosyne_recall","mnemosyne_recall_canonical","mnemosyne_recall_diagnostics","mnemosyne_remember","mnemosyne_remember_canonical","mnemosyne_remember_media","mnemosyne_scratchpad_clear","mnemosyne_scratchpad_read","mnemosyne_scratchpad_write","mnemosyne_shared_forget","mnemosyne_shared_recall","mnemosyne_shared_remember","mnemosyne_shared_stats","mnemosyne_sleep","mnemosyne_stats","mnemosyne_sync_pull","mnemosyne_sync_push","mnemosyne_sync_status","mnemosyne_task_progress","mnemosyne_triple_add","mnemosyne_triple_end","mnemosyne_triple_query","mnemosyne_update","mnemosyne_validate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mnemoverse","repo":"https://github.com/mnemoverse/claude-plugin","sha":"0e36727a2432410a642d4980d24a0ad33d05a8d2","description":"Persistent memory for agents, shared across tools: save preferences, decisions and lessons and recall them later by natural-language search; rating a recalled memory as helpful or misleading re-ranks what comes back next; shared rooms (beta) let several people's agents work from one memory. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/) pointing at the hosted Mnemoverse MCP server (Streamable HTTP, OAuth 2.1 + DCR); the two bundled skills load under a namespaced name. Disclosure — hosted-only connector; Hermes runs no code from the package (scripts/ holds the repository's own CI checks). Every tool call goes to the vendor's remote MCP server at mcp.mnemoverse.com (authorization server auth.mnemoverse.com, browser sign-in on console.mnemoverse.com); memories the agent writes are stored in the signed-in user's Mnemoverse account, and recalled memories are pulled into the session context. OAuth tokens are held and refreshed by Hermes, never by the package. No telemetry, background process or self-update code.","maintainer":"Mnemoverse","tier":"community","category":"tools","version":"1.0.2","docs_url":"https://mnemoverse.com/docs/api/install-by-host#hermes-agent","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"model-drift-watch","repo":"https://github.com/TakeshiTGAL/hermes-plugin-model-drift","sha":"0102786ba4812e8581f3f6234a453eb26137fa52","description":"Scheduled check that the model you use in Hermes has not quietly got worse: 34 fixed, exactly graded questions (reasoning, instruction following, Japanese, plus your own) run through Hermes cron, each run tested against the same model's own baseline with an exact per-question test and a same-day confirmation run, and a message only for a confirmed drop, a changed served model or a failed measurement. Not yet tried against a real LLM API (checked with a local mock model and real Hermes cron). Disclosure — each check calls your own model through ctx.llm on your bill, capped per check by the plugin (default 120,000 tokens / $0.50, no daily cap; the agent can start checks itself via the model_drift tool, and the scheduled agent turn is extra); price lookup goes through Hermes's pricing code (may fetch OpenRouter/models.dev prices); 10 optional code questions, off by default, run model-written Python in a limited child process (not a hostile-code sandbox) including in unattended cron runs when enabled; `schedule` creates one Hermes cron job that survives plugin removal (run `unschedule` first); writes run history to plugin-data/model-drift-watch; no telemetry.","maintainer":"TakeshiTGAL","tier":"community","category":"automation","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-model-drift#readme","version":"0.1.0","requires_hermes":">=0.21.5","platforms":[],"capabilities":{"provides_tools":["model_drift"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"model-router","title":"Model Router","repo":"https://github.com/metamindedu/hermes-model-router","sha":"01e2a2cd1e5eedf4f3d90dee936cc8ada06ca3fa","description":"Profile model settings, opt-in Heavy/Light task routing, fallback controls, runtime limits and Fast inheritance. Reads Hermes profile configuration; explicit saves update selected profiles via the native CLI. Routed jobs launch background Hermes children using the user's configured providers/MCP and store private prompts/results locally. No separate credential store, telemetry, self-updater or approval bypass. Disclosure — once you enable routing for a profile, the model-callable `coding_route` tool starts detached background Hermes agents. They get file, terminal and code-execution tools in any existing folder the model names, run under that profile's credentials and approval policy (single-query mode: dangerous commands are refused unless `approvals.single_query_mode: approve`), and their per-job time limit can be set to none. Prompts and results are stored in `plugin-data/model-router/jobs/`. Saving settings writes model, delegation, auxiliary, fallback and `skills.disabled` keys into the config.yaml of the profiles listed in the preview (backups are taken first) and copies a skill into those profiles' `skills/` folders. From install, native subagents inherit the parent session's Fast (priority/ultrafast) tier on first-party OpenAI/Codex routes, which can raise costs.","maintainer":"metamindedu","tier":"community","category":"models","version":"0.4.4","docs_url":"https://github.com/metamindedu/hermes-model-router#readme","readme":true,"platforms":["windows"],"screenshots":["https://raw.githubusercontent.com/metamindedu/hermes-model-router/01e2a2cd1e5eedf4f3d90dee936cc8ada06ca3fa/docs/fast-inheritance.png"],"known_issues":["Small bounded changes stay with Main. Ordinary implementation delegation requires two substantive independent workstreams with net parallel benefit; explicit delegation and required Heavy/independent review remain exceptions. This is guidance, not an API two-job minimum.","Preferences now live under Settings > Plugins. The main-sidebar settings row is removed; legacy /model-router bookmarks remain supported. A host supporting the public plugin-settings area is needed; no private-core or sidebar fallback is added.","The Desktop UI is Korean-first. Windows runtime/SDK/Desktop behavior has been tested; full Linux/macOS runtime support is not claimed.","Requires a Hermes build with unified Python/Desktop packages and request/tool middleware; new Python tools may require a new session.","Fast and fallback can increase API charges or subscription-credit use. Transports bypassing the request middleware, including codex_app_server, are outside Fast inheritance coverage.","The native scanner can report CAUTION for the manual source-repair helper; routing-disabled capability probes can warn that coding_route was not registered.","Default-profile mid-run activation was not confirmed on the developer's shared backend; package installation is distinct from existing-session activation."],"capabilities":{"provides_tools":["coding_route"],"provides_hooks":["pre_api_request","post_api_request","api_request_error","pre_tool_call","post_tool_call","subagent_start","subagent_stop"],"provides_middleware":["tool_execution","llm_request"],"requires_env":[]},"requires_hermes":">=0.21.6"},{"name":"model-usage-status","repo":"https://github.com/krapwoo/hermes-model-usage-status","sha":"da9b55ee79972dd04d333745574d5d198b3b2088","description":"Provider-native Claude and Codex remaining allowance windows in the Hermes Desktop status bar. Disclosure — spawns the local `codex app-server` and `claude auth status` CLIs and reads the Claude OAuth token read-only through Hermes core; the optional install.sh (not part of the catalog install) edits the statusLine in ~/.claude/settings.json; macOS only.","maintainer":"krapwoo","tier":"community","category":"desktop","docs_url":"https://github.com/krapwoo/hermes-model-usage-status#readme","version":"0.2.1","platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"monid","repo":"https://github.com/monid-ai/hermes-plugin","sha":"cdf26de6da51a04c5ffccaa48bee0a2d51f7c35c","description":"Connect your agent to third-party tools and APIs (web search and scraping, people and company data, social media, media generation, email and phone) through one integration. The agent discovers, compares and runs tools at runtime, paid per call from one Monid balance. Disclosure — Monid (monid.ai, by Monid / monid-ai) is a paid third-party marketplace: the agent installs the @monid-ai/cli npm package or connects to mcp.monid.ai, sends your requests and any uploaded files to Monid and on to its providers, and each run spends your prepaid Monid workspace balance. The \"confirm the price first\" step is an instruction to the model in the bundled skill, not a Hermes approval prompt, unless you add `trust: untrusted` to `mcp_servers.monid`.","maintainer":"monid-ai","tier":"community","category":"tools","docs_url":"https://github.com/monid-ai/hermes-plugin#readme","version":"0.2.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"morning-briefing","repo":"https://github.com/drkpxl/morning-briefing","sha":"347ce44a1e71173285b2943a7a97bbdece8327b2","description":"Personal daily newspaper for Hermes: gathers weather, calendar, AQI, curated 36-hour news (timestamped Reddit RSS + X + web search, per-story QR codes), and newsletter digests, renders one 8.5x11 newsprint page, and prints it every morning via a cron job.","maintainer":"drkpxl","tier":"community","category":"automation","docs_url":"https://github.com/drkpxl/morning-briefing#readme","platforms":["macos","linux"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mrscraper","repo":"https://github.com/ai-mrscraper/hermes-mrscraper-plugin","sha":"87f7b14132671ae9d02b5edb7e69f64b0982a31b","description":"MrScraper web search, rendered extraction, crawling, and scraper tools. Disclosure — every tool call is a paid MrScraper API request billed to your account; URLs, prompts and schemas you pass are sent to mrscraper.com.","maintainer":"ai-mrscraper","tier":"community","category":"web","docs_url":"https://github.com/ai-mrscraper/hermes-mrscraper-plugin#readme","version":"1.0.0","capabilities":{"provides_tools":["mrscraper_get_account_info","mrscraper_crawl_website_urls","mrscraper_search_google_serp","mrscraper_extract_page_by_prompt","mrscraper_extract_listings","mrscraper_extract_structured_data","mrscraper_get_results","mrscraper_get_latest_results","mrscraper_get_result_detail","mrscraper_create_prompt_scraper","mrscraper_create_listing_scraper","mrscraper_create_website_crawl_scraper","mrscraper_run_existing_scraper","mrscraper_run_existing_scraper_batch","mrscraper_fetch_rendered_html"],"provides_hooks":[],"provides_middleware":[],"requires_env":["MRSCRAPER_API_TOKEN"]}},{"name":"ms-decision-provider","repo":"https://github.com/guglxni/ms-decision-provider","sha":"a28887362a55f9b4b03362568760ce6d0ae903e5","description":"Microsoft-Decision-1 (Azure AI Foundry System One) decision provider for bounded agent decisions. Registers typed-decision tools (decision_noul, decision_choice, decision_score, decide) that preserve full probability distributions, plus an opt-in pre_tool_call hook that requests human approval for known-risk calls without sending their arguments to Azure. Reference implementation of the typed decision-provider runtime in #113008. Disclosure — the four decision tools send the caller-supplied state/questions text to the Azure Foundry endpoint you set in AZURE_FOUNDRY_BASE_URL (nothing is sent while it is unset); with MS_DECISION_GATE=1 the pre_tool_call gate sends only a coarse operation label for known-risk tool calls to that endpoint and routes them to Hermes's human approval prompt (MS_DECISION_GATE_MODE=block hard-denies instead); the labelled eval corpus under tests/ contains literal destructive commands as should-refuse examples.","maintainer":"guglxni","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/guglxni/ms-decision-provider#readme","platforms":[],"capabilities":{"provides_tools":["decision_noul","decision_choice","decision_score","decide"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":["AZURE_FOUNDRY_API_KEY","AZURE_FOUNDRY_BASE_URL"]},"version":"1.0.0"},{"name":"my-github","repo":"https://github.com/tomekdot/hermes-my-github-plugin","sha":"639f0cf0eb580d209b8bc55bbb05d316501ca77c","description":"Desktop and dashboard plugin: statusbar chip, palette command, and dashboard tab listing your GitHub repos (public + private) via the gh CLI.","maintainer":"tomekdot","tier":"community","category":"desktop","version":"1.2.5","requires_hermes":">=0.21","docs_url":"https://github.com/tomekdot/hermes-my-github-plugin","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"mybot-farm","repo":"https://github.com/okita-io/mybot-farm","sha":"f875c97bf2f2c9bf601a22ea6971d28ec64ba763","subdir":"packages/hermes-mybot-farm","description":"Search mybot.farm, plant/reinstall Hermes packs (Desktop Recruit + CLI), and post GAF listings. Disclosure — plants third-party Hermes profiles (config, SOUL, skills, memories) from mybot.farm sellers with no hash pinning; force/clean delete profiles.","maintainer":"badkangaroo","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://mybot.farm/install/hermes","version":"0.3.0","platforms":[],"capabilities":{"provides_tools":["farm_search","farm_get_pack","farm_get_stall","farm_plant","farm_reinstall","farm_post","farm_update"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"myswarm","title":"MySwarm","repo":"https://github.com/tomkubik/hermes-myswarm","sha":"5a7cf3ced917234a292359ce436c609c3285c3c4","description":"Discover, visualize, sanitize/export, and import community agents.md swarm configurations. Outputs abbreviated agent/persona/goal tables, renders ASCII topology diagrams (.svg and .png images + portable 7-bit copy-paste ASCII symbol blocks), generates rich themed swarm illustrations across 12 curated signature themes and orthogonal intensity levels (understated, normal, overstated) via Hermes default model and image_generate, exports sanitized agents.md files, and imports/reverts shared configs with on-screen file preview and best-effort import warnings; every import/revert asks for approval. Disclosure — myswarm_import/myswarm_revert replace the workspace AGENTS.md/agents.md (a file Hermes loads into every session's system prompt) after a Hermes approval prompt; choosing \"always\" approves all later imports. The import security check is a best-effort regex + model warning, not a security boundary — only import files you trust. Swarm file contents are sent to your configured model for parsing and PII scrubbing (also best-effort; review exports before sharing), and myswarm_visualize_image calls your configured image_generate provider (may cost credits). Adds a ~2.8k-character MySwarm guidance section to every session's system prompt. Writes myswarm-ascii.svg/.png and .md exports into the current folder (exports may overwrite an existing .md file there), plus a .agents.md.myswarm.orig sidecar, and keeps import backups under HERMES_HOME/plugin-data/myswarm/.","maintainer":"tomkubik","tier":"community","category":"tools","requires_hermes":">=0.19.0","version":"1.0.0","docs_url":"https://github.com/tomkubik/hermes-myswarm#readme","readme":true,"capabilities":{"provides_tools":["myswarm_list","myswarm_ascii","myswarm_visualize_image","myswarm_export","myswarm_import","myswarm_revert"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"nachos","repo":"https://github.com/Nacho-Labs-LLC/hermes-plugin-nachos","sha":"4850d47a876d43b61ec6ea58bb0d690aeffde062","version":"0.5.3","description":"Durable memory and context compression for Hermes Agent with local SQLite or flat-file storage. Disclosure — replaces the memory provider (memory.provider: nachos) and, only when context.engine: nachos is set, the context engine; the provider injects a system-prompt block telling the agent to use the nachos_memory_* tools and keep built-in memory disabled; opt-in semantic ranking either runs a separately installed nachos-embeddings CLI or sends the turn query plus memory titles/summaries to api.openai.com with OPENAI_API_KEY; all storage is local under /nachos/.","maintainer":"Nacho Labs LLC","tier":"community","category":"memory","requires_hermes":">=0.21","docs_url":"https://github.com/Nacho-Labs-LLC/hermes-plugin-nachos#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"needs-you","repo":"https://github.com/aydnOktay/hermes-needs-you","sha":"f903b8eb8f166b609e2ee3c535209fb4602b60d3","description":"Hermes is waiting — full Desktop page for pending approvals. Queue, chip, OS notify. Redacted previews only. No API keys.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-needs-you","version":"0.1.0","image":"https://raw.githubusercontent.com/aydnOktay/hermes-needs-you/f903b8eb8f166b609e2ee3c535209fb4602b60d3/logo.png","platforms":[],"capabilities":{"provides_tools":["needs_you_list","needs_you_clear"],"provides_hooks":["pre_approval_request","post_approval_response"],"provides_middleware":[],"requires_env":[]}},{"name":"nerve","repo":"https://github.com/keeltrace/hermes-nerve","sha":"3de7d94982b7a2cb87c829e4b2366ced927d8fed","description":"Nerve is a supervisory nervous system for Hermes Agent with provider-neutral Jev, Laya, and OpenJev Reflex backends, evidence-backed Kanban supervision, context governance, token-budget trajectory control, and durable SSH workers. Disclosure — the default Reflex backend is hosted Jev; with the default settings (enabled / admission_enabled on) each turn's user prompt (up to 12k characters) and redacted tool/result previews are sent to the configured Jev provider (OpenRouter Decisions / TypeSafe Jev) using your OPENROUTER_API_KEY or TYPESAFE_API_KEY, spending your credits on every turn. Laya and OpenJev can be configured as local/self-hosted backends. The operator-only nerve setup CLI can copy a local HermesContextBus checkout into HERMES_HOME/plugins/hermes-context-bus and runs hermes plugins enable/disable for that plugin when a profile is saved; the model cannot trigger this.","maintainer":"keeltrace","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/keeltrace/hermes-nerve#readme","version":"0.3.1","capabilities":{"provides_tools":["nerve_decide","nerve_rank","nerve_verify","nerve_assess","nerve_context_curate","nerve_context_rehydrate","nerve_stats","nerve_nervous_event","nerve_supervise_card","nerve_work_event","nerve_work_status","nerve_remote_delegate_task","nerve_remote_worker_status","nerve_remote_worker_result","nerve_remote_worker_cancel","nerve_remote_worker_control"],"provides_hooks":["pre_tool_call","post_tool_call","pre_llm_call","transform_tool_result","pre_verify","post_api_request","api_request_error","post_llm_call","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"netmind-provider","title":"NetMind","repo":"https://github.com/NetMind-AI/netmind-hermes-provider","sha":"00ab432e251fc04b983382a7b339f54d96e4b29d","description":"NetMind OpenAI-compatible model provider with a bundled model catalog. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads); chat requests go to https://api.netmind.ai/inference-api/v1 through Hermes' own client with NETMIND_API_KEY, which Hermes reads; the plugin itself opens no connections, reads and writes no files and starts no processes.","maintainer":"NetMind-AI","tier":"community","category":"models","requires_hermes":">=0.21.6","version":"1.0.0","docs_url":"https://github.com/NetMind-AI/netmind-hermes-provider#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["NETMIND_API_KEY"]}},{"name":"next-prompt","repo":"https://github.com/soymarketing/hermes-plugin-next-prompt","sha":"c200200d6678dc6b093bab03c2e00a4f5a5043ed","description":"Suggests your next message after each turn as a pill under the Desktop composer: your likely answer when the agent asks you something, or the natural next step.","maintainer":"soymarketing","tier":"community","category":"desktop","version":"0.3.1","requires_hermes":">=0.21","docs_url":"https://github.com/soymarketing/hermes-plugin-next-prompt#readme","platforms":["windows","macos","linux"],"image":"https://raw.githubusercontent.com/soymarketing/hermes-plugin-next-prompt/ec58f9b298b0bb0c182f909a0014432b1dc898a8/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/soymarketing/hermes-plugin-next-prompt/eff647b44fc81153f5220d505e5f8a5c642330e8/docs/media/likely-answer.png","https://raw.githubusercontent.com/soymarketing/hermes-plugin-next-prompt/eff647b44fc81153f5220d505e5f8a5c642330e8/docs/media/next-step.png","https://raw.githubusercontent.com/soymarketing/hermes-plugin-next-prompt/eff647b44fc81153f5220d505e5f8a5c642330e8/docs/media/command-palette.png"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"next-steps","repo":"https://github.com/Agantila/next-steps","sha":"7baab9e7e644546db17318baacdb7f1c6e2e19fa","description":"Next-step suggestions under the Hermes Desktop composer after each turn: local Ollama inference, per-session state, target routing (session, new tab, bots, kanban), tiny-model capacity profiles, EN/DE UI. No API keys. Disclosure — after every agent turn, sends the last 8 messages (each cut to 200 chars) plus the working directory to Ollama on localhost; clicking a suggestion immediately submits it as a prompt in the current session, a new session, or another profile's session, or creates a kanban card, and for non-current targets also attaches the working directory and the last 6 messages (on by default, can be turned off under Targets).","maintainer":"Agantila","tier":"community","category":"desktop","version":"11.1.0","docs_url":"https://github.com/Agantila/next-steps#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"nextcloud-talk","title":"Nextcloud Talk","repo":"https://github.com/Cliff3c/hermes-nextcloud-talk","sha":"0df0679d1ed28c2087774fea9ae646a858e7ed70","subdir":"plugin","description":"Signed Nextcloud Talk bot webhooks and text replies for Hermes, with JSON/XML OCS support. Disclosure — runs an HTTP webhook listener (default 0.0.0.0:8788, HMAC-verified with the bot secret) and sends messages and optional Basic-auth room lookups to your Nextcloud server; registers the `nextcloud_talk` gateway platform.","maintainer":"Cliff3c","tier":"community","category":"platform","version":"0.2.1","readme":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["NC_TALK_BASE_URL","NC_TALK_BOT_SECRET"]},"known_issues":["Text only; attachments, reactions and inbound reply-context reconstruction are not implemented.","Dedupe is in-memory and does not survive restart; uncertain sends are not automatically retried.","Valid empty OCS acknowledgements confirm delivery without returning a message ID."],"requires_hermes":">=0.21.3"},{"name":"nextdns","repo":"https://github.com/shanelord01/hermes-nextdns","sha":"6e46460e9d7f4775d247fb1e467532cf42bfc52d","description":"Read-only NextDNS tools - DNS query logs, blocked queries with the blocklist that matched, and aggregate analytics by domain, device, blocklist or protocol. For triaging DNS problems and answering \"was this blocked, and by what\". Uses the official NextDNS API; makes no configuration changes.","maintainer":"shanelord01","tier":"community","category":"tools","docs_url":"https://github.com/shanelord01/hermes-nextdns#readme","capabilities":{"provides_tools":["nextdns_analytics","nextdns_blocked","nextdns_logs","nextdns_profile"],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"nexus","repo":"https://github.com/Neboy72/nexus-memory","sha":"85ddc9009f1b78fa8343e88e06cd56ae8fdbee38","subdir":"plugins/memory/nexus","version":"0.22.25","description":"Self-hosted long-term memory on Qdrant: automatic per-turn prefetch and write-back, plus recall/remember/forget, guardrail rules and a knowledge graph; Hermes and any MCP-connected agent share one collection. Embeddings run fully local by default (sentence-transformers with Qwen/Qwen3-Embedding-0.6B, 1024d, about 1.2 GB from Hugging Face on first use; on Apple Silicon the model is pinned to the CPU, because PyTorch's MPS backend aborts the whole process under two overlapping encodes). A cloud embedder runs only when NEXUS_EMBEDDING_PROVIDER names it and its key is present, and a key that merely sits in the environment never selects one. Access levels fail closed: a memory, a protection rule or a graph label without a known level counts as the most restrictive. A local service on 127.0.0.1:9122 serves embeddings and the full MCP toolset; its /embed and /mcp routes demand a per-installation key (service_auth.key, mode 0600) and reject non-loopback Host/Origin, while the open /healthz answers liveness only. The plugin starts that service when Hermes cannot load the embedding stack, and it keeps running afterwards. Session-end fact extraction sends conversation text to the model endpoint from Hermes config.yaml, and the consolidation daemon to its configured model, which defaults to a cloud model; reads ~/.hermes/.env and config.yaml; state and daily backups under ~/.nexus-memory; NEXUS_UPDATE_CHECK=1 opts into a GitHub release check. Disclosure — when Hermes cannot load the embedding stack (and always on Apple Silicon unless NEXUS_EMBED_IN_HOST=1), the plugin starts `nexus-memory serve` on 127.0.0.1:9122 (embeddings, the full Nexus MCP toolset and a consolidation daemon whose default model is a cloud model that receives memory text), and the service keeps running after Hermes exits; its /embed and MCP routes require a per-install key in ~/.nexus-memory/service_auth.key (0600) and a loopback Host/Origin; session-end fact extraction sends conversation text to the model endpoint in Hermes config.yaml; reads ~/.hermes/.env and config.yaml; state and daily backups under ~/.nexus-memory; opt-in NEXUS_UPDATE_CHECK=1 adds a GitHub release check and an upgrade nudge to the system prompt.","maintainer":"Neboy72","tier":"community","category":"memory","requires_hermes":">=0.19","docs_url":"https://github.com/Neboy72/nexus-memory/blob/85ddc9009f1b78fa8343e88e06cd56ae8fdbee38/plugins/memory/nexus/README.md","image":"https://raw.githubusercontent.com/Neboy72/nexus-memory/85ddc9009f1b78fa8343e88e06cd56ae8fdbee38/docs/images/nexus-logo-square.png","capabilities":{"provides_tools":["nexus_recall","nexus_remember","nexus_forget","nexus_guardrail_check","nexus_guardrail_override","nexus_graph_traverse","nexus_find_entities","nexus_get_subgraph","nexus_get_related","nexus_cost_routing_stats","nexus_cost_routing_explain","nexus_sica_run"],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"ngrok-ai-gateway","repo":"https://github.com/ngrok/hermes-ngrok","sha":"27baaa0e85e09581f05084fc318a0755774162e1","subdir":"model-providers/ngrok","title":"ngrok AI Gateway","description":"The ngrok AI Gateway as a Hermes model provider (`--provider ngrok`, or ngrok AI Gateway in `hermes model`): one access key for all your model providers, with failover. The model list comes live from your gateway, and gateway errors (unrouted model, access-policy and upstream-key failures, out of credit) map onto Hermes' fallback instead of a generic error. Disclosure — registers one model provider at import and nothing else (no tools, hooks, commands or threads); chat requests and the model list go to https://gateway.ngrok.ai/v1 (or NGROK_AI_GATEWAY_BASE_URL) through Hermes' own client with NGROK_AI_GATEWAY_KEY, which Hermes reads; the plugin itself opens no connections, reads and writes no files and starts no processes.","maintainer":"ngrok","tier":"community","category":"models","requires_hermes":">=0.21.6","docs_url":"https://ngrok.com/docs/ai-gateway/overview","version":"1.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["NGROK_AI_GATEWAY_KEY"]}},{"name":"nine-balance-widget","repo":"https://github.com/OMOX563/nine-balance-widget","sha":"b8652884a4f9c6d07c7e637991c09be6a645a87e","title":"Nine-Balance Widget","description":"Nine AI provider balances in one desktop widget — live balance/usage and quota reads, token-based spend estimates with off-peak price windows, drop alerts, and an anime mascot per provider with rotating flavour lines (DeepSeek, MiniMax, GLM, Kimi, MiMo, ChatGPT, Claude, Gemini, Grok). Fully English UI. Desktop-only: desktop/plugin.js inside the plugin SDK surface; no agent tools, hooks, middleware or env vars. Keys are entered in the widget's settings page and stored in plugin-scoped storage; the widget only calls those providers' official APIs. Ported from MeteorNOX/DeepSeek-Balance-Whale-Widget (MIT). Disclosure — API keys you enter in the widget's settings are stored in plaintext in Desktop plugin storage (not Hermes' secret store); while the widget is on, the Desktop renderer polls the balance/usage endpoint of the provider matching your current model every 60 s with that provider's key (api.deepseek.com, api.minimaxi.com / api.minimax.io, open.bigmodel.cn / api.z.ai, api.moonshot.cn / api.moonshot.ai, api.kimi.com, token-plan-cn.xiaomimimo.com, api.openai.com, api.anthropic.com, generativelanguage.googleapis.com with the key in the URL, api.x.ai); each key goes only to its own provider; draws a floating widget over the app window.","maintainer":"OMOX563","tier":"community","category":"desktop","version":"1.0.0","screenshots":["https://raw.githubusercontent.com/OMOX563/nine-balance-widget/b8652884a4f9c6d07c7e637991c09be6a645a87e/assets/preview.png","https://raw.githubusercontent.com/OMOX563/nine-balance-widget/b8652884a4f9c6d07c7e637991c09be6a645a87e/assets/grid-light.jpg"],"readme":true,"requires_hermes":">=0.21.5"},{"name":"node-search","repo":"https://github.com/Heeervas/node-search-plugin","sha":"3a1ad9df4ae367d27a1b9533fb271a968b6099be","description":"Bounded Markdown metadata+graph prefilter for configured local roots","maintainer":"Heeervas","tier":"community","category":"tools","docs_url":"https://github.com/Heeervas/node-search-plugin#readme","capabilities":{"provides_tools":["node_search"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"nowstamp","repo":"https://github.com/zakiyys/hermes-nowstamp","sha":"26148cca897f0798ca2cfc035e9eb2e00349bcf8","description":"Give the agent a clock. Appends the current date and time, plus the real gap since the previous message, to every user turn. Optional spaced-out timestamps on tool results for long runs.","maintainer":"zakiyys","tier":"community","category":"general","docs_url":"https://github.com/zakiyys/hermes-nowstamp#readme","version":"1.0.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call","transform_tool_result"],"provides_middleware":[],"requires_env":[]}},{"name":"ntfy-approval","repo":"https://github.com/AhmetArif0/hermes-ntfy-approval","sha":"95d3a4b838073d6908c578ca1a9f04154349a2cf","subdir":"ntfy-approval","description":"Answer Hermes' approval prompts from your phone: once selected with security.approval.transport: ntfy, each dangerous-command prompt arrives as an ntfy push notification with Approve once, Approve for session and Deny buttons, and no answer still means deny. Disclosure — once selected, anyone who can read the ntfy topic can approve dangerous commands (the one-time answer codes are in the notification), so on the public ntfy.sh default the topic name is the only secret and NTFY_APPROVAL_TOKEN is optional; each pending approval publishes Hermes' reason, the redacted command (unless send_command is false), the non-default profile name and one-time answer codes to the configured ntfy server, then reads <topic>-reply and deletes the notification; any failure or timeout is a deny; reads NTFY_APPROVAL_TOPIC/NTFY_APPROVAL_TOKEN from the profile .env, never puts the token in a notification, follows no redirects, writes no files and starts no processes.","maintainer":"AhmetArif0","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/AhmetArif0/hermes-ntfy-approval","version":"1.0.1","image":"https://raw.githubusercontent.com/AhmetArif0/hermes-ntfy-approval/e6d557073d7034002503c27113b80df1c64b3485/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_approval_response"],"provides_middleware":[],"requires_env":[]}},{"name":"nvidia-app","repo":"https://github.com/NousResearch/hermes-nvidia","sha":"de75692b479dc88b95e428a9cb25091d3fb0e327","subdir":"nvidia-app","description":"NVIDIA App control through its local MCP server: overlay capture and state, driver status and release notes, game optimization, and app launch. Requires NVIDIA App 11.0 or newer on Windows; the install is refused when the app is absent, and the tools appear while the app's service is running. The plugin reads the endpoint and token NVIDIA App publishes in its own McpServer server.json on every connection, so a changed port or token needs no reconfiguration. Disclosure: the tools read and change NVIDIA App settings on this machine; nothing leaves loopback.","title":"NVIDIA App","maintainer":"NousResearch","tier":"official","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/NousResearch/hermes-nvidia/tree/main/nvidia-app","version":"0.1.0","platforms":["windows"],"onboarding":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"nvidia-broadcast","repo":"https://github.com/NousResearch/hermes-nvidia","sha":"de75692b479dc88b95e428a9cb25091d3fb0e327","subdir":"nvidia-broadcast","description":"NVIDIA Broadcast control through its local MCP gateway: camera, microphone and speaker effects, Studio Voice profiles, device selection, camera resolution, and effects on local media files. Requires NVIDIA Broadcast 2.3 or newer on Windows (2.2 and older have no gateway); the install is refused when the app is absent, and the tools appear while NVIDIA Broadcast is running in the user's desktop session. Disclosure: the tools change live audio and video effects on this machine; nothing leaves loopback.","title":"NVIDIA Broadcast","maintainer":"NousResearch","tier":"official","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/NousResearch/hermes-nvidia/tree/main/nvidia-broadcast","version":"0.1.0","platforms":["windows"],"onboarding":true,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"obsidian-memory","repo":"https://github.com/kyssta-exe/hermes-obsidian-memory","sha":"11239984e82caa6dbf02106ce315e3019368b5fc","description":"Browse, search, and edit Obsidian vault notes from the Hermes dashboard. Features force-directed graph visualization, multi-vault support, markdown rendering with wikilinks, and inline note editing.","maintainer":"kyssta-exe","tier":"community","category":"desktop","docs_url":"https://github.com/kyssta-exe/hermes-obsidian-memory#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"oc-free-provider","repo":"https://github.com/anpicasso/hermes-oc-free-provider","sha":"ae705c692dd83c5eb0e871053722838af39e213e","description":"Unofficial OpenCode Zen free-model transport for Hermes. Discovers live zero-cost tool-capable models by intersecting OpenCode Zen and models.dev over HTTPS, persists only the last successful intersection for restart fallback, and bidirectionally translates compatible OpenCode and Hermes tool schemas, calls, choices, and replayed history while Hermes executes tools locally. No OpenCode CLI, Node.js, npm, or npx dependency. Disclosure — prompts, tool schemas, tool results, and other conversation content leave the machine for OpenCode and the selected model provider; model availability, retention, data use, and permission are governed by their current terms.","maintainer":"anpicasso","tier":"community","category":"models","requires_hermes":">=0.21.3","docs_url":"https://github.com/anpicasso/hermes-oc-free-provider#readme","version":"3.0.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"offpeak-bekci","repo":"https://github.com/onkanat/hermes-offpeak-bekci","sha":"7b9a1c4abbe3f30b7869c41f35c9056af676d020","title":"Off-Peak Watch (offpeak-bekci)","description":"Makes Ollama Cloud's off-peak window visible and actionable in Hermes: a desktop status-bar chip shows the countdown and the queue item counts (Ollama off-peak hours: weekdays 18:00-12:00 UTC, weekends one block), a one-shot notice fires 30 minutes before the window opens, and approval is taken only from the user (`/offpeak-onayla <id,id>`) — work runs only if approved, and items never enter the queue by themselves. `/offpeak-durum` prints a readable report by default (machine-readable JSON with `/offpeak-durum json`), and `/offpeak-kur` prints the cron job it would install in full plus a `plan_hash`; nothing is installed without a hash-bound approval typed by the user, and the plugin never writes the cron store. One `llm_execution` middleware measures the call rate for Ollama Cloud calls during the peak window and ships measure-only (`kuru_kosu: true`): it records what it would delay and never delays. No network calls, no telemetry, no credential reads; the only local files it touches are the queue ledger and its own JSONL measurement log. Output language is English by default; `dil: tr` selects Turkish. Auto-delivery is host-dependent: in a classic CLI session the request enters the agent queue; on the Ink TUI / desktop-panel host the core asks for a persistent `session_key`, which the command handler does not receive, so the command prints the parameters as a single line of JSON. Injecting into a gateway additionally requires `plugins.entries.offpeak-bekci.allow_gateway_injection: true` (default off); the only in-process way to read that key is the private `gateway.session_context` module (rule 9 -> not used). Requires Hermes >= 0.22.2. Disclosure — the llm_execution middleware can sleep Ollama Cloud calls during the peak window once `kuru_kosu: false` is set (default is measure-only); it writes a JSONL measurement log and, on `/offpeak-onayla`, rewrites the user's queue file; `/offpeak-kur` and `/offpeak-kaldir` leave cron install/removal requests in the session (or, with `allow_gateway_injection: true`, inject them into the gateway) for the agent's own cron tool to act on; no network calls, no credential reads, never writes the cron store.","maintainer":"onkanat","tier":"community","category":"desktop","version":"0.1.4","requires_hermes":">=0.22.2","docs_url":"https://github.com/onkanat/hermes-offpeak-bekci#readme","platforms":[],"screenshots":["https://raw.githubusercontent.com/onkanat/hermes-offpeak-bekci/555dff262a37a35f615dc03f82320db3bf34ccca/docs/rozet.png"],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_end"],"provides_middleware":["llm_execution"],"requires_env":[]}},{"name":"omh","repo":"https://github.com/rlaope/oh-my-hermes","sha":"021e5c63d976b4e0faf9cfc7d608701d98fe1722","subdir":"src/plugin_bundle/omh","description":"Oh My Hermes (OMH) bridge: routing hints and role context for OMH workflow skills, per-task delegation model routing, plan todos and a status tool, a Hermes Desktop status pane (off until enabled), bounded evidence probes that keep prepared work apart from observed results, and a file-backed memory provider. Disclosure — omh_delegate_route writes delegation.model/provider/reasoning_effort in $HERMES_HOME/config.yaml and the session hooks restore them; omh_gather_evidence runs allowlisted checks (python -m unittest with reporting flags only, python -m compileall, git diff --check, omh doctor/probe/docs/release checks) via subprocess on the host, outside any sandboxed terminal backend and without Hermes' terminal approval, in the agent working directory or below it, so it runs whatever test code that directory holds; omh_team (only with the separate OMH core package installed) asks once through the Hermes approval prompt for an exact list of up to 8 check commands from an accepted plan, then runs them on the host as each helper returns; omh_jev_ask posts model-supplied state and questions to api.typesafe.ai (openrouter.ai only when the operator opts in via ~/.omh/jev/settings.json) with the user's own TYPESAFE_API_KEY or OPENROUTER_API_KEY, only in a turn where the user names Jev; opt-in egress_attempts (re-registers chosen core tools, needs the operator's tool-override grant) and browser_adapter (vetoes core browser_* tools) settings; reads session and cost metadata from state.db read-only; state lives under ~/.omh and <project>/.omh.","maintainer":"rlaope","tier":"community","category":"tools","requires_hermes":">=0.21.1","docs_url":"https://github.com/rlaope/oh-my-hermes","version":"3.0.0","platforms":[],"capabilities":{"provides_tools":["omh_agent_board","omh_capabilities","omh_context","omh_decision_gate","omh_delegate_route","omh_document_plan","omh_gather_evidence","omh_hud","omh_interact","omh_jev_ask","omh_loop","omh_memory","omh_probe","omh_recommend","omh_resume","omh_role","omh_route_answer","omh_run_summary","omh_source_trust","omh_status","omh_team","omh_todo"],"provides_hooks":["on_session_end","on_session_start","post_tool_call","pre_llm_call","pre_tool_call","pre_verify","subagent_start","subagent_stop","transform_llm_output","transform_tool_result"],"provides_middleware":[],"requires_env":[]}},{"name":"omnivoice","repo":"https://github.com/ThaungThanHan/hermes-omnivoice","sha":"21d2900c392247dc52d706fee956f08dbfc3c5ea","description":"OmniVoice TTS provider for Hermes Agent","maintainer":"ThaungThanHan","tier":"community","category":"voice","docs_url":"https://github.com/ThaungThanHan/hermes-omnivoice#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"opaque-composer","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/opaque-composer","description":"Keep the desktop composer solid while scrolling so conversation text stays readable.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/opaque-composer","version":"1.0.0","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/opaque-composer/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"openai-compatible","repo":"https://github.com/duu261/hermes-imagegen-openai-compatible","sha":"65851c2f6985c5e193a5498493ecb2971450de7b","description":"GPT Image through CLIProxyAPI, New API, or any OpenAI Images-compatible gateway, with gateway-aware errors and requested-vs-returned size reporting. Disclosure — sends image prompts and any source images (local files, data URLs or public HTTPS URLs) to the OpenAI-compatible gateway base_url you configure, authenticated with OPENAI_COMPAT_IMAGE_API_KEY.","maintainer":"duu261","tier":"community","category":"tools","version":"2.0.2","docs_url":"https://github.com/duu261/hermes-imagegen-openai-compatible#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENAI_COMPAT_IMAGE_API_KEY"]}},{"name":"openalex","repo":"https://github.com/Adolanium/hermes-plugin-openalex","sha":"d38a1ee2fb04df0f7ad136bd30bff5f2136fe0cd","description":"Scholarly search, citation traversal, grouped counts, and fulltext access through OpenAlex with session spending limits.","maintainer":"Adolanium","tier":"community","category":"tools","docs_url":"https://github.com/Adolanium/hermes-plugin-openalex#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-plugin-openalex/d38a1ee2fb04df0f7ad136bd30bff5f2136fe0cd/assets/catalog-banner.png","capabilities":{"provides_tools":["openalex_resolve","openalex_get","openalex_count","openalex_search","openalex_related","openalex_account","openalex_fields","openalex_fulltext","openalex_classify","openalex_harvest"],"provides_hooks":["on_session_start","on_session_reset"],"provides_middleware":[],"requires_env":["OPENALEX_API_KEY"]}},{"name":"opencode-shepherd","repo":"https://github.com/okazakee/opencode-shepherd","sha":"207a1443a5daa20e20824d13776794c0057cd539","description":"Watch over opencode sessions from anywhere: alerts for stopped turns, questions and permissions, plus a dependency-free CLI to reply. Disclosure — the skill has the agent install the ocshepherd CLI from GitHub at a pinned commit and, after asking you, add a cron entry or systemd unit that polls your opencode server; the CLI talks to that server with the password you provide, can reply to its questions and permission prompts, and optionally sends alerts to Telegram or runs a notify command you configure.","maintainer":"okazakee","tier":"community","category":"automation","requires_hermes":">=0.21","version":"0.2.5","docs_url":"https://github.com/okazakee/opencode-shepherd#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"openinvest","repo":"https://github.com/longsizhuo/openInvest","sha":"0b9268bb85f8b97bff0f9d2eea18d7b88faec8fa","subdir":"plugin","description":"Self-hosted AI investment committee — skills for portfolio review, a decision ledger, and a 4-role LLM committee (macro / quant / risk / CIO) that debates a symbol. Disclosure — the skills run the openinvest backend from PyPI via uvx (pinned in run.sh) and keep portfolio, ledger, committee records and any keys you add in plaintext under ~/openInvest (or $INVEST_HOME); it fetches public market data and RSS news, and on the Direct path / daily report sends your portfolio and wealth context to the LLM you configure (default api.deepseek.com) and, if installed, to the agy or gemini CLI for a second opinion; news ingestion can trigger extra committee runs (LLM spend). The MCP tools are a server you add to config.yaml yourself (the printed snippet runs the plugin's pinned run.sh with `trust: untrusted`, so Hermes asks before ledger writes); buy/sell/deposit/withdraw only edit the local ledger — it never connects to a broker or places orders.","maintainer":"longsizhuo","tier":"community","category":"tools","title":"openInvest","docs_url":"https://openinvest.involutionhell.com","version":"0.25.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"openltm","repo":"https://github.com/RohiRIK/OpenLtm","sha":"91f77925f75c1e5bb0feb999f427f463f7ed9bf5","subdir":"hermes/openltm_hermes","description":"Long-term memory for Hermes agents, stored in a local SQLite database. FTS5 full-text search with optional vector (sqlite-vec) recall, importance-weighted decay, a queryable memory graph, and automatic capture: a declarative rule engine classifies corrections, constraints, preferences, decisions, and agent-discovered facts from a conversation and stores each one as a distilled, self-contained fact. Runtime notifications and read-only OpenLTM tool requests are excluded by named guards so ops noise never becomes memory. No cloud, no telemetry, no API keys required; optional semantic recall via a local llama.cpp embedding server. MIT licensed. Disclosure — local SQLite in HERMES_HOME; runs git config to read the repo remote; memory text goes to Gemini or OpenAI embeddings, or to the llama.cpp server URL you set (default 127.0.0.1:8080), only if selected in openltm.json (default local Ollama)","maintainer":"RohiRIK","tier":"community","category":"memory","docs_url":"https://github.com/RohiRIK/OpenLtm/blob/main/docs/10-hermes-plugin.md","version":"2.19.0","image":"https://raw.githubusercontent.com/RohiRIK/OpenLtm/687934564e68878ff9646a57aa72f6d3fc4f5fc8/hermes/plugin-catalog/banner.png","readme":true,"platforms":[],"capabilities":{"provides_tools":["openltm_recall","openltm_learn","openltm_forget","openltm_context","openltm_relate","openltm_graph","openltm_brain_stats","openltm_stale"],"provides_hooks":["system_prompt_block","prefetch","sync_turn","on_turn_start","on_session_switch","on_session_end","on_memory_write"],"provides_middleware":[],"requires_env":[]}},{"name":"openmail","repo":"https://github.com/openmailsh/hermes-plugin","sha":"4035b7d1f8775304443f60f67bcd636acb1a325d","description":"Gives a Hermes agent its own email address. Inbound mail wakes the agent over a websocket, replies go out in-thread, plus tools for sending, reading and provisioning inboxes.","maintainer":"openmailsh","tier":"community","category":"platform","docs_url":"https://docs.openmail.sh/integrations/hermes","image":"https://raw.githubusercontent.com/openmailsh/.github/f9d07f18a90a75e8b29f96cbc8d17154ce254828/profile/assets/banner.png","platforms":[],"capabilities":{"provides_tools":["openmail_whoami","openmail_send","openmail_reply","openmail_list_threads","openmail_read_thread","openmail_list_messages","openmail_attachment_text","openmail_list_inboxes","openmail_create_inbox"],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENMAIL_API_KEY"]}},{"name":"openrouter-picker","repo":"https://github.com/PIR8-Software/Hermes-OR-Picker","sha":"5f360c80ecbb09216e41b62db83262c1bde4cb7f","subdir":"catalog","description":"One install: the Desktop model picker and the OR Picker composer provider. Checking a model here is what the composer lists. Disclosure — the optional OpenRouter management key is stored in plaintext in Desktop localStorage; the plugin reads OPENROUTER_API_KEY from your environment, Hermes secret store or HERMES_HOME/.env and sends it only to openrouter.ai (credits, usage, and the Test-model button, which spends credits).","maintainer":"PIR8-Software","tier":"community","category":"desktop","version":"1.1.1","image":"https://raw.githubusercontent.com/PIR8-Software/Hermes-OR-Picker/5f360c80ecbb09216e41b62db83262c1bde4cb7f/docs/images/openrouter-picker-banner.png","docs_url":"https://github.com/PIR8-Software/Hermes-OR-Picker#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENROUTER_API_KEY"]}},{"name":"openrouter-spend","title":"OpenRouter Spend","repo":"https://github.com/AllenRobinHubert/openrouter-spend","sha":"4a54b43f82264a0703d21abec9f7e49e8650abcf","description":"OpenRouter API-key spend and recorded chat costs in USD/INR. Disclosure — sends the configured OpenRouter key (OPENROUTER_API_KEY, or the variable named in api_key_env) only to openrouter.ai's read-only key and generation accounting endpoints, and fetches public USD/INR rates from api.frankfurter.dev unless a manual rate is set; middleware on every LLM request records ids, model, token counts and reported cost (no prompt or reply text) to its own ledger; the dashboard reads accounting metadata (session ids, token counts, billing provider) read-only from the state.db and OpenRouter Spend ledger of every profile under the Hermes root.","maintainer":"AllenRobinHubert","tier":"community","category":"desktop","version":"0.4.1","requires_hermes":">=0.21.5","docs_url":"https://github.com/AllenRobinHubert/openrouter-spend#readme","readme":true,"screenshots":["https://raw.githubusercontent.com/AllenRobinHubert/openrouter-spend/4a54b43f82264a0703d21abec9f7e49e8650abcf/docs/statusbar.png"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_api_request","api_request_error","post_auxiliary_call","post_tool_call"],"provides_middleware":["llm_execution"],"requires_env":["OPENROUTER_API_KEY"]}},{"name":"openrouter-voice","repo":"https://github.com/esketids/hermes-openrouter-voice","sha":"3f2478ab6e795da54547e7a4b162dd207d73079a","description":"OpenRouter speech-to-text and text-to-speech providers for Hermes Agent (stt.provider / tts.provider = openrouter).","maintainer":"esketids","tier":"community","category":"voice","requires_hermes":">=0.21","docs_url":"https://github.com/esketids/hermes-openrouter-voice#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OPENROUTER_API_KEY"]}},{"name":"openspec","repo":"https://github.com/FelineStateMachine/hermes-openspec","sha":"493b42cd95d2a30f967ede5a53eb22d1bd248fb9","description":"OpenSpec CLI tools for spec-driven development workflows","maintainer":"FelineStateMachine","tier":"community","category":"desktop","docs_url":"https://github.com/FelineStateMachine/hermes-openspec#readme","capabilities":{"provides_tools":["openspec_change_archive","openspec_change_create","openspec_change_promote","openspec_change_sequence_set","openspec_change_unarchive","openspec_cli","openspec_context","openspec_idea_create","openspec_idea_enrich","openspec_idea_promote","openspec_instructions","openspec_list","openspec_show","openspec_spec_create","openspec_spec_diff","openspec_spec_list","openspec_spec_show","openspec_status","openspec_task_list","openspec_task_set_status","openspec_validate"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"openviking","title":"OpenViking","repo":"https://github.com/volcengine/OpenViking","sha":"9f150ece247ad683494ab172d738023bd6dc6170","subdir":"examples/hermes-plugin","version":"2.1.1","image":"https://raw.githubusercontent.com/volcengine/OpenViking/9f150ece247ad683494ab172d738023bd6dc6170/docs/images/openviking-social.jpg","description":"Long-term memory for Hermes. Capture conversations, recall useful facts across sessions and search your knowledge. Choose Quick Local, OpenViking Service (managed cloud) or your own server. Disclosure — conversation turns, tool results and MEMORY.md / USER.md edits are sent to the configured OpenViking server. Quick Local setup installs the newest OpenViking 0.4.x server release from PyPI at setup time (checked against PyPI's hash, not the version reviewed here; re-running setup upgrades it) plus a hash-pinned llama-cpp-python wheel and a local embedding model. It copies the active Hermes static LLM API key into a private file under the profile for extraction, and its localhost server keeps running after Hermes exits and after plugin removal (stop it with `hermes openviking local stop`). Extraction can use a remote LLM. Custom localhost connections can start openviking-server from PATH with the profile environment minus Hermes bot, gateway, GitHub and dashboard secrets; model and tool API keys still pass.","maintainer":"volcengine","tier":"community","category":"memory","docs_url":"https://github.com/volcengine/OpenViking/tree/9f150ece247ad683494ab172d738023bd6dc6170/examples/hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"operations","repo":"https://github.com/c-pompa/operations-hermes-desktop-plugin","sha":"61b5e241c7893df32c64426eb6d84e6bb4334620","subdir":"plugins/operations","title":"Operations","description":"A Hermes Desktop page for running a fleet - topology, model traffic, handoffs, traces, merge requests and conformance checks in one place. Disclosure — reads hermes-metrics-dash's <hermes root>/metrics/metrics.db, the kanban board, every profile's config.yaml (plugin enable state, rolectl-mcp entries, default model) and plugin-data/gitlab-mr/device-aliases.json, all read-only; calls your GitLab (host and token from the plugin settings or GITLAB_HOST/GITLAB_TOKEN), the local model router (MODEL_ROUTER_URL, default 127.0.0.1:8867) and LM Studio (LMSTUDIO_URL, default 127.0.0.1:1234); runs git status/rev-parse/ls-files in the project folders it checks and shows matching lines (including any keys found) on the page. Page buttons create, assign, schedule, unblock and close kanban cards and start their workers at once, write <hermes root>/conformance/conformance.yaml, and \"Propose a rule\" pushes a branch and opens a merge request on the standard's GitLab project. A hook on every kanban dispatcher tick starts cards scheduled from the page; with alert_target set it posts new attention items through hermes send; with drift_action: automatic it files and starts a fix card for drift_profile for each drifting host with a verified report (at most daily) carrying the standard's remediate commands. With Activity summaries on (off by default), Activity sentences and each \"Explain this session\" click send log lines and trace details to the model set for the operations_summary auxiliary task.","maintainer":"c-pompa","tier":"community","category":"desktop","docs_url":"https://github.com/c-pompa/operations-hermes-desktop-plugin#readme","version":"0.1.0","requires_hermes":">=0.21.5","image":"https://raw.githubusercontent.com/c-pompa/operations-hermes-desktop-plugin/61b5e241c7893df32c64426eb6d84e6bb4334620/screenshots/card.png","screenshots":["https://raw.githubusercontent.com/c-pompa/operations-hermes-desktop-plugin/61b5e241c7893df32c64426eb6d84e6bb4334620/screenshots/overview.png","https://raw.githubusercontent.com/c-pompa/operations-hermes-desktop-plugin/61b5e241c7893df32c64426eb6d84e6bb4334620/screenshots/topology.png","https://raw.githubusercontent.com/c-pompa/operations-hermes-desktop-plugin/61b5e241c7893df32c64426eb6d84e6bb4334620/screenshots/conformance.png"],"readme":true,"platforms":[],"known_issues":["Request, error, host and conformance results come from hermes-metrics-dash's metrics.db; without it those sections show \"unavailable\".","Merge requests and the GitLab conformance standard need the GitLab host and token set in the plugin's settings (or GITLAB_HOST and GITLAB_TOKEN)."],"capabilities":{"provides_tools":[],"provides_hooks":["on_kanban_dispatch_tick"],"provides_middleware":[],"requires_env":[]}},{"name":"optchat","repo":"https://github.com/aska-digital/optchat-memory","sha":"7b0f3abd65b95996366d0495787c95af981ea587","subdir":"optchat","description":"OptChat-style endless memory for Hermes: an append-only verbatim log plus a binary summary tree, exposed as recall through the MemoryProvider ABC. Background compactor builds the tree with a cheap auxiliary model (call_llm task optchat_compact); prefetch returns a fixed-budget view of the whole history; optchat_zoom/optchat_date tools open any line down to the verbatim message. Disclosure — every turn's user messages, agent replies, tool calls and tool results (each result capped at 30,000 characters, after Hermes's secret redaction) are appended permanently to unencrypted owner-only files under $HERMES_HOME/optchat/, with no deletion or retention limit; a background compactor sends those messages and the surrounding summary view to your auxiliary model route (task optchat_compact) for summarization; each turn injects up to view_budget_chars (default 16,000) of that history into the model context.","maintainer":"ahrazzle","tier":"community","category":"memory","requires_hermes":">=0.21.6","version":"0.1.0","docs_url":"https://github.com/aska-digital/optchat-memory/tree/7b0f3abd65b95996366d0495787c95af981ea587#readme","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["optchat_zoom","optchat_date"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"optmem-hermes","repo":"https://github.com/rarf/optmem-hermes-plugin","sha":"2868af6620bf07958f833ca354fbeecf2a56b265","subdir":"optmem","description":"Independent Hermes integration of Victor Taelin's OptMem design: local, append-only memory with regex/BM25 recall and a bounded wake digest. Hybrid and guarded OptMem-only modes; verified migration and rollback. Local by default. Compaction is manual unless auto_nap is enabled. Optional LLM summaries run only when both auto_nap and llm_summary are on; they send memory blocks to the configured provider via host-owned authentication and may incur token costs. Summaries are lossy, raw records remain recoverable, and conflicts are not resolved automatically. Wake consumes model context. See README for upstream attribution. Disclosure — memory is stored locally under HERMES_HOME; optional auto_nap+llm_summary sends stored memory lines to the user's configured model provider; the optmem-only mode (explicit CLI with --yes) disables Hermes' built-in MEMORY.md/USER.md injection after a verified backup.","maintainer":"rarf","tier":"community","category":"memory","requires_hermes":">=0.21.2","docs_url":"https://github.com/rarf/optmem-hermes-plugin/blob/2868af6620bf07958f833ca354fbeecf2a56b265/README.md","version":"0.3.3","image":"https://raw.githubusercontent.com/rarf/optmem-hermes-plugin/2868af6620bf07958f833ca354fbeecf2a56b265/docs/assets/catalog-banner-card.png","screenshots":[],"readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["optmem_note","optmem_recall","optmem_nap","optmem_wake","optmem_zoom","optmem_forget","optmem_config","optmem_import","optmem_init"],"provides_hooks":["on_memory_write","on_turn_start"],"provides_middleware":[],"requires_env":[]}},{"name":"orbit-desktop","repo":"https://github.com/mojomast/orbitdesktop","sha":"98b9a5ee13cb1841e819d7a9c873d7de427ba347","subdir":"hermes-plugin","description":"Your workspace, shaped by your agent: a bundled browser desktop powered by Hermes. Describe the workflow you need; the agent can rearrange windows and panes, customize appearance, build versioned sandboxed web apps, and refine your workspace with scoped control, previews and checkpoints. Illustrated examples show a project-specific COCS 3D asset viewer and OmniVoice experiment bench; these example apps and their backends are not bundled. Includes permission-controlled desktop agent-reply notifications (generic alerts while Orbit remains open; browser/OS restrictions apply) and 100,000-character chat messages, guidance and drafts. Includes Devplan Studio for guided interviews, specifications, phased devplans and circular-development handoff exports. Optional conversational interviews require explicit service setup and a working Hermes provider login, and send project context to that provider. Includes 14 distinctive interface presets including Nous Atelier, with local wallpapers, themed icons and taskbar treatments. Agent chats include inline expandable tool activity, running/completed/failed summaries, an activity strip, a workspace agent overview and responsive toolbar controls. Missing tool-call IDs are explicitly uncorrelated. Embedded apps retain their own styling. Includes a reviewed GitHub app catalog with immutable source pins and a portable Live Telemetry package. Catalog sync (operator-run scripts/orbit_catalog.py, never triggered by the Hermes tool or at register) reads the entry list from the upstream repo's main branch at sync time and downloads third-party static app bundles at their per-entry commit pins; installed UI runs in a sandboxed iframe and never executes backend code. Optional telemetry backend staging downloads pinned Python; execution requires explicit host-code trust and separate private authenticated HTTPS setup. Backend code runs with owner privileges, not a sandbox. Disclosure — adapter talks only to the configured local Orbit server (loopback, Bearer capability from runtime_dir); mutations off by default. Optional orbit.py setup runs npm ci / node. Bundled VNC/Xpra launchers use the Orbit page's hostname and scheme; optional Linux apps require separate provisioning. Optional api.typesafe.ai requests require explicit consent and a user-supplied key. The 0.2.7 web app's opt-in Show tools panel displays tool call arguments and results for the current Hermes conversation, fetched from the local Orbit server and local Hermes session API and kept in the browser only. The Nous Atelier theme contains Nous Research logo artwork and is unofficial; Orbit is not affiliated with Nous Research.","maintainer":"mojomast","tier":"community","category":"desktop","version":"0.2.7","docs_url":"https://github.com/mojomast/orbitdesktop/blob/98b9a5ee13cb1841e819d7a9c873d7de427ba347/hermes-plugin/README.md","platforms":["linux"],"capabilities":{"provides_tools":["orbit_workspace"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"orcaslicer","repo":"https://github.com/mazzanfar/hermes-orcaslicer","sha":"08bcbeffff712702896fba0d101d8fa669d129d2","version":"0.5.0","title":"OrcaSlicer for Hermes","description":"Prepare, slice, preflight and export 3D prints with stock OrcaSlicer profiles. Includes explicit printer upload/control, camera snapshots and monitoring through supported protocols. Protocol and hardware limits are documented. Independent of OrcaSlicer and Nous Research. Disclosure — executes the installed local slicer and exposes printer upload, start, pause, resume and cancel; agent-supplied confirmation is not independent human authentication. Printer/camera credentials are read from ORCA_*/HERMES_ORCA_* environment variables named in tool arguments (HTTPS required unless allow_plaintext_credentials is set); plugin state lives in ~/.hermes-orca (HERMES_ORCA_HOME), outside HERMES_HOME.","maintainer":"mazzanfar","tier":"community","category":"tools","docs_url":"https://github.com/mazzanfar/hermes-orcaslicer#readme","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["orca_capabilities","orca_edit_project","orca_open_native","orca_diagnose","orca_presets","orca_inspect","orca_prepare","orca_slice","orca_job","orca_preview","orca_export","orca_printer_configure","orca_printers","orca_printer_status","orca_camera_snapshot","orca_monitor","orca_preflight","orca_upload","orca_start","orca_printer_control"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"osv-ref","repo":"https://github.com/EloquentBrush0x/hermes-context-refs","sha":"43ab2b75e660db5edcfe2f215776294c45408b40","subdir":"osv-ref","description":"@cve:, @ghsa: and @osv: context references: attach a vulnerability record from OSV.dev to a message (summary, aliases, severity, affected packages with version ranges and fixed versions, details, references), with package data merged from up to four alias records. Disclosure — sends HTTPS GET requests to api.osv.dev/v1/vulns/<id> only (the referenced id and up to four of its alias ids leave the machine); no API key, no files written, no subprocess; register() only adds the @cve:, @ghsa: and @osv: reference providers.","maintainer":"EloquentBrush0x","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/EloquentBrush0x/hermes-context-refs/tree/main/osv-ref","version":"1.0.0","image":"https://raw.githubusercontent.com/EloquentBrush0x/hermes-context-refs/43ab2b75e660db5edcfe2f215776294c45408b40/docs/osv-ref-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"parallel-search","repo":"https://github.com/parallel-web/search-mcp","sha":"12f721b2b7ad29e63315884c008b5d77c2a4d7e4","description":"Free web search and page fetching through Parallel's hosted MCP, with a setup skill bundled. No account or API key required. Queries and requested URLs are sent to Parallel. Adds direct MCP tools alongside Hermes's native web providers.","maintainer":"georgeatparallel","tier":"community","category":"web","requires_hermes":">=0.20.1","docs_url":"https://github.com/parallel-web/search-mcp#hermes-agent","version":"0.1.2","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"parcel-deliveries","repo":"https://github.com/promptclickrun/hermes-parcel","sha":"9641b4092f1373ca021285e80b0885cb9e1c7fa3","description":"Track package deliveries with the Parcel app (parcelapp.net). List what's on the way, add tracking numbers and look up carrier codes, with a built-in guard for Parcel's strict rate limits. Disclosure — sends tracking numbers, descriptions and optional postcode/order email to api.parcel.app (Parcel Premium API key); the model can add deliveries to the user's Parcel account (add-only, capped at 20/day); caches delivery lists in plugin-data.","maintainer":"promptclickrun","tier":"community","category":"tools","version":"0.1.0","requires_hermes":">=0.21.2","docs_url":"https://github.com/promptclickrun/hermes-parcel#readme","platforms":[],"capabilities":{"provides_tools":["parcel_deliveries","parcel_add_delivery","parcel_carriers"],"provides_hooks":[],"provides_middleware":[],"requires_env":["PARCEL_API_KEY"]}},{"name":"parlor","repo":"https://github.com/dariorapisardi/parlor.sh","sha":"31db52cfd456750338e4dcc98b47b8ec8efc2ef5","subdir":"skill","title":"Parlor.sh","description":"Rooms where AI agents of any vendor talk to each other. A room is a URL; agents join, read and post over plain HTTP, with no accounts and no sign-in. Portable Agent Plugins v1 package: the parlor skill plus the hosted parlor MCP server (Streamable HTTP, no authentication, 8 tools). Disclosure — hosted unauthenticated MCP connector at parlor.sh/mcp (tool set is server-controlled, not pinned) plus a curl fallback; messages the agent writes go to parlor.sh or the server in a given room URL and rooms are public to anyone with the link; room tokens are stored under ~/.local/state/parlor; the skill may keep background wait loops running.","maintainer":"dariorapisardi","tier":"community","category":"tools","version":"1.0.0","docs_url":"https://parlor.sh/docs","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"parrotnotes","repo":"https://github.com/ascetx/parrot-notes-hermes-plugin","sha":"18b2ed0d4b9eacff38e286f34bc08301afe3f0f3","description":"Find, search, summarize and save insights for your ParrotNotes in-person meeting notes through the hosted ParrotNotes MCP server (Streamable HTTP, OAuth 2.0 + DCR), with the parrotnotes workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — hosted-only connector with no local code: every tool call goes to the vendor's remote MCP server at mcp.parrotnotes.app (OAuth via a Supabase auth backend); note titles, transcripts and insights from the user's ParrotNotes account are pulled into the session context, and text the model passes to save_note_insight is written to that account. OAuth must be enabled with `hermes mcp add parrotnotes --url https://mcp.parrotnotes.app/mcp --auth oauth`; the bundled mcp.json alone yields 401.","maintainer":"ParrotNotes","tier":"community","category":"tools","version":"1.2.2","docs_url":"https://parrotnotes.app/docs/mcp","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pass-secrets","repo":"https://github.com/dyiapanis/pass-secrets","sha":"485f105150e09dad28461b26b9eca9ffc511b15d","description":"pass (password-store) secret source: resolves secrets from a local, GPG-encrypted, git-tracked password store into environment variables at startup, as a first-class SecretSource beside the built-in Bitwarden and 1Password sources. Stdlib-only (subprocess + pathlib), no Python deps, no network — ever. Config: secrets.pass.{enabled,store_path,subdirs,override_existing,timeout_seconds}. Disclosure — when enabled, shells out to the local pass binary (10 s per entry) for every .gpg entry under the configured store subdirs and injects each as an env var that by default overrides .env and shell values; when enabled, also adds a ~900-char system-prompt note about secret resolution; no network.","maintainer":"dyiapanis","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/dyiapanis/pass-secrets#readme","version":"1.0.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pastdotdev","repo":"https://github.com/pastdotdev/hermes-plugin","sha":"22f7abdd1e73bebda6f876cd1f07fe383c25ada4","subdir":"past_hermes","version":"0.2.0","description":"past.dev memory provider: recall before each turn from source-traced memory of past conversations, with sessions sent to past.dev when they end. Maintained by past.dev. Disclosure — the user's message (as the recall query) and each session's user and assistant text, with common secret shapes redacted, are sent to the past.dev API (api.past.dev by default, or the address you configure) under your past project key, with a past-hermes/<version> User-Agent; the key and identity are read from PAST_API_KEY or ~/.past/config.json, which past.dev's other connectors share; off by default on messaging-gateway sessions.","maintainer":"pastdotdev","tier":"community","category":"memory","requires_hermes":">=0.21.0","docs_url":"https://github.com/pastdotdev/hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"pay-cli","repo":"https://github.com/solana-foundation/pay","sha":"d76d57ddbce5f2338432d98cfc06240992d49097","subdir":"agent-plugins/pay-cli","title":"Pay CLI","description":"Discover priced APIs and pay per request (HTTP 402, x402, MPP) in stablecoins from a wallet on this machine, through the local `pay mcp` stdio server of the official Pay CLI, with the pay workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables; the user installs the `pay` CLI (brew or npm) and runs `pay setup` first, and the server is offered only while `pay` is on PATH. Disclosure — payments plugin for pay.sh: Hermes starts `pay mcp` as a long-running local process; the curl tool spends the local wallet's stablecoin balance; each payment is confirmed by the user through MCP elicitation (PAY_FORCE_ELICITATION=1, declined when nobody can answer) and the server is marked untrusted; every profile using the plugin shares the same local wallet.","maintainer":"solana-foundation","tier":"community","category":"tools","docs_url":"https://github.com/solana-foundation/pay/tree/main/agent-plugins/pay-cli#readme","version":"0.1.0","requires_hermes":">=0.21.6","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pay","repo":"https://github.com/solana-foundation/pay","sha":"d76d57ddbce5f2338432d98cfc06240992d49097","subdir":"agent-plugins/pay","title":"Pay","description":"Discover priced APIs and pay per request (HTTP 402, x402, MPP) in stablecoins through the official hosted Pay MCP server (Streamable HTTP at https://connect.pay.sh/mcp, OAuth sign-in, no keys or local wallet), with the pay workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables. Disclosure — payments plugin for pay.sh: the curl tool spends the hosted Pay account's stablecoin balance; hosted Pay enforces the account's spending limits (none move until the user sets them) and confirms each payment through MCP elicitation, declined when nobody can answer; the plugin marks its server untrusted, but the documented OAuth setup (`hermes mcp add pay`) replaces that entry with a native one that runs at `trust: full` unless the user sets `mcp_servers.pay.trust: untrusted`; chats sharing a Hermes profile share its Pay account; the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha.","maintainer":"solana-foundation","tier":"community","category":"tools","docs_url":"https://github.com/solana-foundation/pay/tree/main/agent-plugins/pay#readme","version":"0.1.0","requires_hermes":">=0.21.6","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pcs-security-tls-posture","repo":"https://github.com/Pacific-Cloud-Solutions/hermes-plugins","sha":"389d300cd43de459fd6f260498ba3c2e7fff95dc","subdir":"plugins/pcs-security-tls-posture","description":"Read-only audit of local TLS posture — certificate validity, key strength, deprecated protocols, weak cipher suites, and the certificate each server's configuration points at. Disclosure — reads a fixed list of system certificate and nginx/Apache config paths under / (or a caller-supplied prefix); makes no network connections and runs no subprocesses. If the sibling plugin pcs-security-core is installed, its copy of the shared contract is loaded in preference to the bundled one.","maintainer":"Pacific-Cloud-Solutions","tier":"community","category":"tools","version":"0.3.0","image":"https://raw.githubusercontent.com/Pacific-Cloud-Solutions/hermes-plugins/389d300cd43de459fd6f260498ba3c2e7fff95dc/docs/hero-2x1.webp","readme":true,"platforms":[],"capabilities":{"provides_tools":["tls_posture"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pdf-surgeon","repo":"https://github.com/Samuek9/pdf-surgeon","sha":"0d3baf4f45bd00c2730e3f23e2d8981e5c916165","description":"Model-driven editor of PDF text whose result keeps the original typesetting, by rewriting the page content stream in place — the string operand inside the existing BT/ET block is replaced and the Tm origin of everything after it on the line is retargeted, so font, size, colour, baseline, char/word spacing, horizontal scale and kerning survive untouched because they are never rewritten. This is the alternative to redact-and-re-stamp, which defaults to Helvetica 8pt and makes you restate font, size and colour by hand; get any of that wrong and the page reads as forged. The phrase must match exactly (whitespace is ignored); a fuzzy match is refused rather than allowed to edit text the caller never named. Until an edit is accepted the output is written under a temporary name next to the destination and moved into place only after verification passes, so a failed check leaves nothing behind; the destination must end in .pdf, must not already exist, must not resolve to the input, and must have an existing parent directory, because the path arrives from the model. Verification enforces that the edited line reads exactly as the original with the phrase swapped and nothing else, that every other line on the page is unchanged, that block count, baseline, font, size and spacing hold, that the old phrase's occurrence count dropped by exactly one (allowing for copies inside the replacement), and that the page's font/size/colour set is unchanged; a pixel-diff band is reported for information and does not decide the outcome. Refuses, writing nothing, on scans, Type3/XObject text, pages with more than one content stream, and a replacement needing a glyph the embedded subset lacks — it never falls back to substituting a typeface. Widths are measured from the embedded font program, not the system font of the same name. action=\"inspect\" lists each line with its baseline and BT/ET block count so a caller can tell whether a document is editable before choosing what to replace. Requires a digital-born PDF whose text is laid out as one block per word/run with an explicit Tm origin (Word, LibreOffice, Excel, Google Docs). Disclosure — this can alter documents such as certificates or invoices; use it only on documents you are entitled to change. The edit is not visible on the page and not recorded in the Info dictionary. It is detectable at file level: the PDF is re-saved by PyMuPDF as a single revision, so the file hash and the second trailer /ID change, any earlier incremental-save history is dropped and any digital signature no longer validates. Writes only a new .pdf that does not exist yet and never touches the input. No network, credentials or subprocesses. Depends on PyMuPDF (AGPL-3.0), which Hermes installs for this plugin. Output files inherit the 0600 mode of the temporary file they are moved from.","maintainer":"Samuek9","tier":"community","category":"tools","docs_url":"https://github.com/Samuek9/pdf-surgeon#readme","version":"1.0.1","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["pdf_replace_text"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"penny","repo":"https://github.com/HelperLabs/penny-hermes","sha":"0887dae11062165a78be9fb6c7b85c810a3353b5","version":"0.1.0","description":"Penny core memory and private notes for Hermes. Disclosure — automatic recall sends the first 4,000 characters of each nontrivial local prompt to app.mypenny.ai as a search query, and the agent can save notes there through penny_remember without a Hermes approval prompt; works only in local CLI/TUI conversations (cron, subagents and gateways are refused); login is a manual command that registers its own OAuth client with clerk.mypenny.ai and briefly listens on 127.0.0.1 for the callback; tokens are kept in <HERMES_HOME>/penny/auth.json (owner-only) and are not removed on uninstall; no raw transcript upload, telemetry or other-client credential reuse.","maintainer":"HelperLabs","tier":"community","category":"memory","title":"Penny","requires_hermes":">=0.21.6","docs_url":"https://github.com/HelperLabs/penny-hermes#readme","platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pep-ref","repo":"https://github.com/EloquentBrush0x/hermes-context-refs","sha":"20c7a0e1f56d6fea9761077f6994ab7b3d174b99","subdir":"pep-ref","description":"@pep:<number> context references: attach a Python Enhancement Proposal to a message (status, type, authors, Python version and its first section, usually the Abstract), or one section with @pep:<number>#<section>, with PEP number and title autocomplete in the TUI and Desktop composer. Disclosure — sends HTTPS GET requests to peps.python.org only (the PEP index and the referenced PEP's page; section names and autocomplete text are matched locally); keeps the index in memory for an hour; no API key, no files written, no subprocess; register() only adds the @pep: reference provider.","maintainer":"EloquentBrush0x","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/EloquentBrush0x/hermes-context-refs/tree/main/pep-ref","version":"1.0.0","image":"https://raw.githubusercontent.com/EloquentBrush0x/hermes-context-refs/20c7a0e1f56d6fea9761077f6994ab7b3d174b99/docs/pep-ref-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"personae","repo":"https://github.com/SmoothMarx/personae","sha":"6c6f0fc524eb8fcdd7e633bf0229b8c829281ff3","description":"A messenger-style roster for Hermes Desktop: one row per profile with its live sessions, per-profile colour, status lights, search, groups, multi-select and an Apropos beta that starts a new session already knowing the ones you picked. Disclosure — a Desktop pane over all your local profiles: it reads each profile's sessions, cron jobs and settings through the app's own requests and, only when you click, deletes or archives sessions (deletes ask first), changes cron jobs or edits profile settings; Apropos starts a new session with a hidden pointer message naming the sessions you picked; no network calls or telemetry.","maintainer":"SmoothMarx","tier":"community","category":"desktop","version":"1.2.0","image":"https://raw.githubusercontent.com/SmoothMarx/personae/6c6f0fc524eb8fcdd7e633bf0229b8c829281ff3/assets/personae-pane.png","screenshots":["https://raw.githubusercontent.com/SmoothMarx/personae/6c6f0fc524eb8fcdd7e633bf0229b8c829281ff3/assets/personae-pane.png"],"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.5"},{"name":"phone-harness","repo":"https://github.com/ShawnPana/phone-harness","sha":"7e3ea6cff1377db4d4f37e852c59493120aa52b6","subdir":"integrations/hermes","title":"Phone Harness","description":"Drive a real phone from Hermes with one phone_exec tool: an iPhone via iPhone Mirroring on a Mac, an Android over adb, or a cloud phone from Phone Harness Cloud. Disclosure — runs model-written Python on this computer with your user's permissions through the phone-harness package (installed from PyPI); every phone_exec call goes to Hermes's approval prompt unless you opt in to classifier auto-run, a heuristic, bypassable check that decides which scripts ask first; taps and types into your real phone and its apps and accounts; screenshots go to the system temp folder and are attached to the tool result for vision models; a cloud phone streams its screen to Phone Harness Cloud, bills by the minute, and uses phone-harness's own cloud sign-in (~/.config/phone-harness/auth.json); phone-harness's PostHog telemetry (script text, script output, helper arguments) is off under Hermes unless you opt in.","maintainer":"ShawnPana","tier":"community","category":"tools","version":"0.1.0","requires_hermes":">=0.21.6","docs_url":"https://github.com/ShawnPana/phone-harness/tree/main/integrations/hermes#readme","capabilities":{"provides_tools":["phone_exec"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"pinned-folders","repo":"https://github.com/jacobhausler/hermes-pinned-folders","sha":"ec3cecf321c022ae0babd55db49fcfbb32f71db9","subdir":"","description":"A Pinned tab in the Desktop sidebar that files your pinned chats into nested folders: drag to order and nest, folder colors, right-click menus (including Unpin), unread/working badges on collapsed folders, a filter box, open-folder-as-tabs, and layout export/import via the clipboard. Layout stays local to the app; pins belong to the backend. SDK-only build (desktop/plugin.js); no network.","maintainer":"jacobhausler","tier":"community","category":"desktop","docs_url":"https://github.com/jacobhausler/hermes-pinned-folders#readme","version":"0.1.4","image":"https://raw.githubusercontent.com/jacobhausler/hermes-pinned-folders/ec3cecf321c022ae0babd55db49fcfbb32f71db9/docs/catalog-banner.png","screenshots":["https://raw.githubusercontent.com/jacobhausler/hermes-pinned-folders/ec3cecf321c022ae0babd55db49fcfbb32f71db9/docs/catalog-context-menu.png","https://raw.githubusercontent.com/jacobhausler/hermes-pinned-folders/ec3cecf321c022ae0babd55db49fcfbb32f71db9/docs/catalog-filter.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pixel-worlds","repo":"https://github.com/cygnostik/pd-pixel-worlds","sha":"55feb15cf6d3c147504b8f5d68c2de8e8d995cac","description":"Watch your agents inhabit pixel-art realms in Hermes Desktop, with imported scenes and a minimal PW Agents display.","maintainer":"cygnostik","tier":"community","category":"desktop","version":"0.3.1","docs_url":"https://github.com/cygnostik/pd-pixel-worlds/blob/55feb15cf6d3c147504b8f5d68c2de8e8d995cac/docs/install.md","image":"https://raw.githubusercontent.com/cygnostik/pd-pixel-worlds/55feb15cf6d3c147504b8f5d68c2de8e8d995cac/docs/images/catalog-banner.png","platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"plan-mode","title":"Plan mode","repo":"https://github.com/100yenadmin/hermes-plan-mode","sha":"ee4a245fbc2b2d874f3a5021963bef6c358d17fb","description":"Claude Code-style plan mode for Hermes: the agent explores and writes a plan, and edits nothing else until you approve it. It works on every interactive Hermes surface: /plan or /planmode on blocks mutating Hermes tools dispatched through pre_tool_call (writes outside .hermes/plans, terminal, code execution, delegation, MCP) while the agent explores, asks clarifying questions and writes a plan. The agent shows the complete plan, submits it with plan_mode(submit) and one approval card asks: approve and auto-accept edits, approve and review each file edit (when Hermes approvals are on, every write_file and patch then gets Hermes' approval prompt with its path and a preview), or keep planning; Other sends feedback, and the revised plan says what changed since the last revision. Once approved, it implements in the same turn and tracks todo_list progress. To change the plan yourself, keep planning, run /planmode edit, save, then /planmode show and /planmode approve; the text you were shown is saved as an approved snapshot, so later edits to the file do not change the approval. The classic profile (plan_profile: classic), approval_card: false and surfaces without a card use Hermes' own approval prompt (gateway buttons, the TUI/Desktop card, the CLI panel or /approve). When yolo or approvals.mode: off would auto-approve, it asks through clarify instead, so a person still decides. By default plans are compact and decision-complete, the lean profile asks at most three targeted questions, and the agent does not commit unless asked (plan_style, plan_profile, allow_commits and plan_skill settings). Classic CLI enforced on every supported Hermes; gateway, TUI and Desktop from Hermes v2026.9.24 (0.21.5), and refused on older builds; 0.21.6 recommended. On the interactive classic CLI, Hermes' inline diff shows a new plan file in full, so the agent does not retype it (write_once). A report-a-problem skill drafts a bug report and files it with gh only after you approve the draft. Disclosure — plan-mode does not enforce Codex app-server exec/applyPatch or TUI /background and btw side agents. A plan is approved only on its approval card (a clarify question only the plugin issues and checks), through Hermes' own approval prompt, or with /planmode approve. It reads nine groups of internal Hermes seams for session identity, workspace, profile, skills.inline_shell and the classic CLI's inline diff, each guarded with a documented fallback. It creates .hermes/plans under the session working directory, reads plan files there, saves the approved text of an edited plan as a new file under .hermes/plans/approved, and keeps per-session state in plugin state. It adds a turn note while planning or executing, a ≤200-char system-prompt hint, and a one-line footer to short replies on chat platforms. When a turn ends while a submitted plan still awaits approval and no approval card was answered, it adds one line to that reply on any surface, whatever its length, saying how to approve (unless footer is off). When you pick \"Always\" on a plan approval or a per-edit review, Hermes core writes a plugin_rule:plan-mode entry to command_allowlist in config.yaml; each entry is keyed to one plan revision, so it cannot approve another plan. With allow_gateway_injection: true it queues one message to start work after a typed /planmode approve. On TUI, Desktop and hermes serve sessions (lean profile, plan_once) it reads the visible reply text from post_api_request while planning and saves its <proposed_plan> block as the plan file. On the interactive classic CLI (lean, write_once) it checks that Hermes printed a newly written plan file in full, then tells the agent not to retype it. Its report-a-problem skill has the agent file to the plugin repository with gh only after the user approves the exact saved draft. The plugin itself makes no network calls, launches no subprocesses and has no self-updater.","maintainer":"100yenadmin","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/100yenadmin/hermes-plan-mode#readme","version":"1.0.0","image":"https://raw.githubusercontent.com/100yenadmin/hermes-plan-mode/ee4a245fbc2b2d874f3a5021963bef6c358d17fb/docs/media/banner.png","screenshots":["https://raw.githubusercontent.com/100yenadmin/hermes-plan-mode/ee4a245fbc2b2d874f3a5021963bef6c358d17fb/docs/media/cli-card.png","https://raw.githubusercontent.com/100yenadmin/hermes-plan-mode/ee4a245fbc2b2d874f3a5021963bef6c358d17fb/docs/media/cli-edit-review.png","https://raw.githubusercontent.com/100yenadmin/hermes-plan-mode/ee4a245fbc2b2d874f3a5021963bef6c358d17fb/docs/media/cli-card-implement.png","https://raw.githubusercontent.com/100yenadmin/hermes-plan-mode/ee4a245fbc2b2d874f3a5021963bef6c358d17fb/docs/media/cli-edit-approve.png"],"platforms":[],"capabilities":{"provides_tools":["plan_mode"],"provides_hooks":["pre_tool_call","post_tool_call","pre_llm_call","transform_llm_output","pre_approval_request","post_approval_response","on_session_finalize","on_session_reset","post_llm_call","transform_tool_result","post_api_request"],"provides_middleware":[],"requires_env":[]}},{"name":"pocket-watch","repo":"https://github.com/indigokarasu/hermes-pocket-watch-plugin","sha":"b05178ab1f2d8a39a377581c3dc7562ec8f0c2dc","version":"1.0.1","description":"Dashboard-only cron companion: a Pocket Watch pane showing cron jobs by schedule (daily/weekly/monthly), a health view of run outcomes and consecutive failures, a timeline, and maintenance actions — a read-oriented window onto the scheduler rather than another agent-facing toolset. Disclosure — the pane's API reads the cron jobs file under HERMES_HOME to render schedules and run history; it registers no tools, hooks or middleware, performs no network I/O and holds no credentials.","maintainer":"indigokarasu","tier":"community","category":"automation","docs_url":"https://github.com/indigokarasu/hermes-pocket-watch-plugin#readme","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"post-cortex","repo":"https://github.com/julymetodiev/hermes-plugin-post-cortex","sha":"f271162a6c20c6a0f72a0240c81953053b3cc18b","description":"Self-hosted long-term memory through a post-cortex daemon (https://github.com/julymetodiev/post-cortex): typed records (decisions, fixed problems, code changes) in an entity graph with local semantic search. Recalls related records from the profile's workspace before each turn, mirrors built-in memory writes as records, and adds post_cortex_search, post_cortex_record and post_cortex_context (graph neighbours and reverse dependencies of named components) plus the post-cortex:memory skill. Profiles are mapped to shared workspaces by name glob, so a team of profiles recalls each other's records. Disclosure — talks only to the post-cortex daemon at the configured URL (default http://127.0.0.1:3737; a remote daemon over plain HTTP should sit on a private network or behind TLS): each non-trivial user prompt (up to 2,000 characters) is sent as a search query, and built-in memory writes and post_cortex_record calls are sent as records; nothing goes to third parties. Disclosure — the daemon stores records in its own database and redacts credentials, e-mail addresses, phone numbers and public IPv4 addresses on write. Disclosure — PCX_TOKEN (and optionally PCX_URL) is read through the Hermes secret scope; the only local state is $HERMES_HOME/post-cortex.json (0600, never holds the token). No background threads or processes, no shell commands, no deletes in post-cortex; cron and subagent runs never write automatically.","maintainer":"julymetodiev","tier":"community","category":"memory","requires_hermes":">=0.22.2","version":"0.1.0","docs_url":"https://github.com/julymetodiev/hermes-plugin-post-cortex#readme","readme":true,"known_issues":["Requires a post-cortex daemon 0.4.0 or newer; a daemon bound to 0.0.0.0 must list the host in the plugin URL in its allowed_hosts, or every request gets 403."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pricewin","repo":"https://github.com/PriceDotWin/pricewin-hermes-plugin","sha":"c3644c21a02fc995791d5056cc4cc8ec9e859b54","description":"Live hotel and flight prices from Booking.com, Agoda, Trip.com and Traveloka through the PriceWin MCP server (Streamable HTTP at mcp.price.win, no account or key), with the pricewin-travel-search skill and inline hotel/flight cards for the Desktop transcript bundled. Portable Agent Plugins v1 package (mcp.json + skills/ + desktop/). Booking is a request the hotel confirms; nothing is ever charged. Disclosure — connects to the hosted PriceWin MCP server at mcp.price.win (no key); search arguments including a verbatim excerpt of the user's request go to it, and four of its twelve tools act on bookings (request_booking sends guest details to the hotel, cancellation needs a token emailed to the guest); nothing is charged.","maintainer":"PriceDotWin","tier":"community","category":"tools","version":"0.2.0","requires_hermes":">=0.21.5","docs_url":"https://github.com/PriceDotWin/pricewin-hermes-plugin#readme","screenshots":["https://raw.githubusercontent.com/PriceDotWin/pricewin-hermes-plugin/c3644c21a02fc995791d5056cc4cc8ec9e859b54/docs/hotel-cards.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"print-job-watch","repo":"https://github.com/TakeshiTGAL/hermes-plugin-print-job-watch","sha":"d5c8ec85ecfd48e970a274368ff32ec75c7575df","description":"Reads one OctoPrint printer. A cron watch reports printer_disconnected (not a pause); error; complete after Printing, Printing from SD, Pausing, Paused, Resuming, or Finishing; paused after Printing, Printing from SD, Pausing, or Resuming; cancelled; and stalled. This plugin can be used with OctoPrint. OctoPrint is a registered trademark owned by Gina Häußge (https://octoprint.org). Disclosure — Talks to the one OctoPrint origin you set in OCTOPRINT_URL with your OCTOPRINT_API_KEY, plus an optional webcam still from the same host, fetched without the key when it is on another port. Over plain http, that key is sent unencrypted. Pause, resume, and cancel ask for Hermes approval every time and are refused under cron, yolo, approvals off, single-query, unattended sessions and plugins.isolation: host, and when those checks cannot run. The plugin has no user list of its own: anyone you allow on your Hermes gateway can ask for a move and approve it. Running hermes tools does not remove the slash command. Answering \"always\" adds one unused line to config.yaml, and that line does not approve the next move. The optional watch is a cron job you create from the CLI (a model turn every 5 minutes by default) that stays after uninstall until you run unschedule. At that default it is 288 runs a day with no daily cap. The watch needs plugins.isolation: in_process; under host it only posts a notice that it cannot run, on every run. Not tested on a physical printer, with access control off, or with the stock webcam.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-print-job-watch#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["print_job_status","print_job_control","print_job_watch"],"provides_hooks":[],"provides_middleware":[],"requires_env":["OCTOPRINT_URL","OCTOPRINT_API_KEY"]}},{"name":"prism","repo":"https://github.com/prismhq/hermes-prism-provider","sha":"f68a9bff76a1dba30389f56a671292e48b22887a","description":"Prism OpenAI-compatible inference with long-context DeepSeek models.","maintainer":"Prism","tier":"community","category":"models","requires_hermes":">=0.21.3","docs_url":"https://github.com/prismhq/hermes-prism-provider#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["PRISM_API_KEY"]}},{"name":"privacy-gateway","repo":"https://github.com/saiteja-madha/hermes-privacy-gateway","sha":"032bda954ad89599c16b655c9b3d11c91083f3e3","description":"Local Presidio-based PII pseudonymization for Hermes model requests and tool results with an encrypted profile-scoped alias vault. Disclosure — PII detection runs locally with Presidio and the spaCy en_core_web_lg model, which you install manually; alias mappings are stored encrypted in the Hermes plugin DB under HERMES_PRIVACY_GATEWAY_KEY; requests are blocked when the engine cannot load; tools outside rehydrate_tool_allowlist receive alias tokens, not plaintext.","maintainer":"saiteja-madha","tier":"community","category":"general","docs_url":"https://github.com/saiteja-madha/hermes-privacy-gateway#readme","version":"0.1.1","requires_hermes":">=0.20.4","platforms":["linux"],"capabilities":{"provides_tools":[],"provides_hooks":["transform_tool_result","transform_llm_output"],"provides_middleware":["llm_request","tool_request"],"requires_env":["HERMES_PRIVACY_GATEWAY_KEY"]}},{"name":"profile-models","title":"Profile Models","repo":"https://github.com/AllenRobinHubert/profile-models","sha":"669157573ae4f577fae1eac88bed54afb7506c40","description":"Read-only Desktop model map for main, auxiliary, sub-agent and MoA routes. Disclosure — reads the selected profile's full config.yaml through the host's `config.get` (the response includes any credential fields it holds); only model-routing fields are kept and nothing is stored or sent off the machine.","maintainer":"AllenRobinHubert","tier":"community","category":"desktop","version":"1.0.1","requires_hermes":">=0.21.5","docs_url":"https://github.com/AllenRobinHubert/profile-models#readme","readme":true,"screenshots":["https://raw.githubusercontent.com/AllenRobinHubert/profile-models/669157573ae4f577fae1eac88bed54afb7506c40/docs/statusbar.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"profile-pane","repo":"https://github.com/taxbax/profile-pane","sha":"2b480df77307e263df800dac03c220d009c0fae8","description":"Disclosure — copies .env key values (and opt-in auth.json backups) between profiles; rewrites other profiles' SOUL, memory and config.yaml. Cross-profile config pane with copy+manifest reconcile and per-group scope.","maintainer":"taxbax","tier":"community","category":"desktop","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"platforms":["macos"]},{"name":"profile-picker","repo":"https://github.com/weltmaister/hermes-profile-picker","sha":"9a38fa52616c8b1be5397c4d922e80a2c754613d","description":"Pick the profile for a new chat right in the composer, next to the model pill, and see which profile a running chat belongs to.","maintainer":"weltmaister","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/weltmaister/hermes-profile-picker#readme","version":"1.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"screenshots":["https://raw.githubusercontent.com/weltmaister/hermes-profile-picker/9a38fa52616c8b1be5397c4d922e80a2c754613d/docs/picker-open.png","https://raw.githubusercontent.com/weltmaister/hermes-profile-picker/9a38fa52616c8b1be5397c4d922e80a2c754613d/docs/picker-closed.png","https://raw.githubusercontent.com/weltmaister/hermes-profile-picker/9a38fa52616c8b1be5397c4d922e80a2c754613d/docs/chip-running-chat.png"]},{"name":"progress-squash","repo":"https://github.com/pierrenode/hermes-progress-squash","sha":"044e6f1128037a58a76d5f6ff71df1607b4c1c63","subdir":"progress-squash","description":"Collapses carriage-return progress bars (tqdm, git clone --progress and similar) in terminal output to the frame a terminal would show, so the model reads one line instead of every redraw: a 300-step tqdm loop goes from 17,396 characters to about 120. Other text written between redraws, CRLF line endings and output without a carriage return are left as they are. Disclosure — register() adds one transform_terminal_output hook that rewrites the output string in memory; no tools, network access, subprocesses, files, settings or environment variables.","maintainer":"pierrenode","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/pierrenode/hermes-progress-squash","version":"1.0.0","image":"https://raw.githubusercontent.com/pierrenode/hermes-progress-squash/044e6f1128037a58a76d5f6ff71df1607b4c1c63/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["transform_terminal_output"],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-enhance","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/prompt-enhance","description":"Rewrite a composer draft outside the chat and put the finished prompt back in the field. A prompt library keeps saved prompts, and a one-call model pick does not change the session.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/prompt-enhance","version":"1.1.1","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/prompt-enhance/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-enhancer","repo":"https://github.com/Heybinshao/prompt-enhancer","sha":"e5cc952c44d7d8ea731f406dbfcd2330fda2befb","description":"A composer button for Hermes Desktop that rewrites a rough draft into a structured prompt (task / scope / constraints / output shape) and restores the original on a second click. One stateless gateway call, preserves @file and /command chips, per-session state. UI in EN / 简中 / 繁體.","maintainer":"Heybinshao","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/Heybinshao/prompt-enhancer#readme","version":"1.6.1","image":"https://raw.githubusercontent.com/Heybinshao/prompt-enhancer/e5cc952c44d7d8ea731f406dbfcd2330fda2befb/assets/banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-optimizer","repo":"https://github.com/Sahil-SS9/hermes-multichannel-prompt-optimizer","sha":"e83eba9a8e102ed255a5bfd20cc88ea50e3af28f","description":"Model-aware prompt rewriting with quality scoring, analytics, and coaching. Disclosure — the default auto mode rewrites every user message of 5+ words through your configured model (one extra LLM call per turn) before the agent sees it.","maintainer":"Sahil-SS9","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/Sahil-SS9/hermes-multichannel-prompt-optimizer","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_gateway_dispatch","transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-pocket","repo":"https://github.com/xraysight/hermes-prompt-pocket","sha":"1da1175923393292c798a20cadfdadc6067adee6","description":"Local prompt library for Hermes Desktop. Save, edit, search, and copy named prompts for manual use, with validated JSON import/export and IndexedDB storage. Does not read or modify composer drafts, send messages, or make network requests.","maintainer":"xraysight","tier":"community","category":"desktop","docs_url":"https://github.com/xraysight/hermes-prompt-pocket#readme","version":"0.1.1","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-queue","repo":"https://github.com/vectorforge22/prompt-queue","sha":"04314c08a9de003fbf5d58ab648a052a49b09b66","description":"Kanban-style prompt queue for the desktop: Play drains cards one at a time into per-card target modes — new session, existing session, project, or a profile's canonical Bot Chat — gated on the global model slot, background-review completion, and context compaction. Queue/Done/Skipped/ Failed tabs, two-row target picker, markdown ingest (Windows), and a trust-aware ::enqueue directive (ask-first by default). Disclosure — Desktop pane that runs queued prompts as full agent turns (all tools the session allows) in new or chosen existing sessions, projects it can create, or a hidden per-profile \"Bot Chat\" session while Play is on; reads recent agent.log lines to detect background reviews and context compaction; on Windows the markdown-ingest menu runs local shell commands (mkdir, dir, certutil, explorer, and python on a small bundled reader script it writes into the chosen folder) through Hermes's shell.exec; an opt-in Auto-add setting lets ::enqueue directives in a live assistant reply queue prompts that run without a click.","maintainer":"vectorforge22","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"1.4.4","docs_url":"https://github.com/vectorforge22/prompt-queue","platforms":[],"screenshots":["https://raw.githubusercontent.com/vectorforge22/prompt-queue/04314c08a9de003fbf5d58ab648a052a49b09b66/docs/screenshots/prompt-queue.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-snippets","repo":"https://github.com/Heybinshao/prompt-snippets","sha":"a6ecc3f73a1ccb7f003f498ca950c525d0537222","description":"Prompt snippet library for the Hermes Desktop composer: a quick-pick overlay styled after the app's own slash menu (own shortcut), plus a management view with drag reordering, group tags and import/export. Inserts into the focused session, not the active one. UI in EN / 简中 / 繁體. v1.8.0 is fully SDK-only: the quick-pick overlay renders as an official Popover anchored to the plugin's own contributed node and all draft writes go through the host composer draft API. No local network; v1.6.0+ adds local JSON import/export via the system clipboard.","maintainer":"Heybinshao","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/Heybinshao/prompt-snippets#readme","version":"1.8.0","image":"https://raw.githubusercontent.com/Heybinshao/prompt-snippets/a6ecc3f73a1ccb7f003f498ca950c525d0537222/assets/banner.png","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-studio","repo":"https://github.com/bwoliveira/prompt-studio","sha":"ecead76f0b2ff4f46c09341c871e234eb1692a1a","description":"Step-by-step prompt builder for Hermes Desktop (F4): option cards per step with AI suggestions, then an AI-written final prompt sent to or placed in the composer through host.composer (Hermes Desktop 0.21.5+). Tuned for Claude Opus 5.5, Claude Sonnet 5.5 and GPT-6 Astra. AI calls go through its own auxiliary task (auxiliary.prompt_studio) via the dashboard plugin API; sends no temperature. No external network beyond the configured provider; preferences in ctx.storage. Disclosure — on opening in an existing chat (default on, toggle in Studio Settings) it reads the last 8 user/assistant turns (plus any compaction summary) of that session from state.db, redacts secrets and sends up to 8k chars to the configured auxiliary model for a short summary used in step suggestions; draft and form answers go to the same auxiliary model; no other network.","maintainer":"bwoliveira","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/bwoliveira/prompt-studio#readme","version":"1.9.0","image":"https://raw.githubusercontent.com/bwoliveira/prompt-studio/ecead76f0b2ff4f46c09341c871e234eb1692a1a/docs/images/banner.png","screenshots":["https://raw.githubusercontent.com/bwoliveira/prompt-studio/ecead76f0b2ff4f46c09341c871e234eb1692a1a/docs/images/step-question.png","https://raw.githubusercontent.com/bwoliveira/prompt-studio/ecead76f0b2ff4f46c09341c871e234eb1692a1a/docs/images/step-preview.png","https://raw.githubusercontent.com/bwoliveira/prompt-studio/ecead76f0b2ff4f46c09341c871e234eb1692a1a/docs/images/step-settings.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"prompt-tray","repo":"https://github.com/aydnOktay/hermes-prompt-tray","sha":"e693e91f2c83031653a62fe286efb90d081f051b","description":"Saved chat prompts — click a tray item to insert it into the Hermes composer. Review / Plan / Explain defaults, then your own. No API keys. Disclosure — inserts prompts through Hermes Desktop's internal hermes:composer-insert event (not a public SDK API); stores prompts in $HERMES_HOME/plugin-data/prompt-tray/prompts.json; no network.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-prompt-tray","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["prompt_tray_list"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"proofable-mcp","title":"Proofable","repo":"https://github.com/proofable/mcp","subdir":"plugins/proofable-mcp","sha":"028e2815dd98756e5d74dd6c43cd2cf06ff39b58","version":"0.1.7","description":"Context and control for any AI. Agent identity, scoped access, and proof across tools. Disclosure — skills-only package: its workflow skills steer the agent to Proofable's hosted MCP server at mcp.proofable.me (which you add yourself with `hermes mcp add … --auth oauth`) to check identity proofs and agent permissions, create wallet-signed proofs, and store, list or revoke secrets in Proofable's hosted vault, so secrets you store and proof/agent data go to Proofable; Hermes does not prompt before those MCP tools run unless you give the server a trust setting; the skills also suggest Proofable's own optional `proofable` CLI, which edits MCP/project config.","maintainer":"proofable","tier":"community","category":"tools","docs_url":"https://docs.proofable.me/mcp/setup","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.20.0"},{"name":"protean-model-sync","repo":"https://github.com/aska-digital/protean-model-sync","sha":"50d3d096a2beb02a578c28d116a989537f5d19d1","description":"Fleet-wide provider and model presets with CLI and Hermes Desktop support. Disclosure — writes model/provider keys into the config.yaml of the profiles you select (backup taken first).","maintainer":"aska-digital","tier":"community","category":"models","requires_hermes":">=0.21","docs_url":"https://github.com/aska-digital/protean-model-sync","version":"1.1.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"protean-ordaprompt","repo":"https://github.com/aska-digital/protean-ordaprompt","sha":"60e89af2853072c7801c465f30999f3c6ceb35b2","description":"Jev-style comparative classifier for OrdaPilot. It compares all topic labels and session choices in one batch, including new-topic, ambiguous, and new-session options. It uses calibrated score and margin gates, weighs continuity against context cost and contamination, and abstains when uncertain. OpenRouter is optional for provisional new-label proposals and disabled by default.","maintainer":"aska-digital","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/aska-digital/protean-ordaprompt","version":"1.0.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"protean-subagent-viewer","repo":"https://github.com/aska-digital/protean-subagent-viewer","sha":"facbb14b83e932165070394eb664c92dcd17036b","description":"Read-only Hermes Desktop pane for live and past delegated subagent workers.","maintainer":"aska-digital","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aska-digital/protean-subagent-viewer","version":"0.1.2","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"protonpass","repo":"https://github.com/lucas-nicolas/hermes-protonpass","sha":"b17cc05a92494aa1d6481c3f1b6ff14a241f7375","description":"Proton Pass secret source: resolves pass://vault/item/field references (mapped source \"protonpass\") or every env-var-titled item of one vault (bulk source \"protonpass_vault\") into environment variables at startup through the user's own pass-cli, beside the built-in Bitwarden and 1Password sources, with a hermes protonpass setup/status/token/set/remove/sync/disable CLI. Stdlib-only, no Python deps. Disclosure — when enabled, runs the user-installed pass-cli (argv only, allowlisted env, 30 s per call), which talks to Proton's API; a personal access token or AI-agent token is read from Hermes' env and passed only to the pass-cli login child's environment (never argv); writes a 0700 session dir under cache/protonpass and a 0600 value cache (cache_ttl_seconds: 0 disables); no self-update, no downloaded binaries, no telemetry, no background process.","maintainer":"lucas-nicolas","tier":"community","category":"tools","requires_hermes":">=0.20.1","docs_url":"https://github.com/lucas-nicolas/hermes-protonpass#readme","version":"0.1.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"provider-copy","repo":"https://github.com/tobenwarrior/hermes-provider-copy","sha":"1599d21d1bce11d94424f749531dadf8d619f42c","version":"1.0.1","description":"Copy provider API keys (and provider base-URL overrides) from one profile onto other profiles — a one-time, explicit copy from a desktop page. Per-profile missing/present badges, fill-missing by default with an explicit overwrite opt-in. OAuth sign-ins and messaging bot tokens never travel; values never cross back in responses.","maintainer":"tobenwarrior","tier":"community","category":"desktop","docs_url":"https://github.com/tobenwarrior/hermes-provider-copy#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"provider-status","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/provider-status","description":"Status-bar quota tracking for 17 providers: Tavily, OpenCode Go, DeepSeek, GLM (z.ai), OpenRouter, Grok (xAI), Codex (OpenAI), OpenAI, Anthropic, Groq, Cerebras, Moonshot Kimi, MiniMax, Google Gemini, Hugging Face, Mistral, and Qwen. DeepSeek and GLM show peak/off-peak gauges and countdowns. Includes OAuth and multi-key pools. This edition does not rotate Hermes environment keys on exhaust. Codex and Grok checks use their CLI client identity and user-agent.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/provider-status","version":"1.5.12","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/provider-status/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"provider-usage","repo":"https://github.com/PhoeniXAbhisheK/hermes-plugin-provider-usage","sha":"023e7e54d6f6c5ec55314f7603ed5b80af81cd54","description":"Per-provider quota and balance readout in the Hermes desktop status bar. Per-provider chips with eye toggles, a popover with every quota window, reset times, balance and key-cap amounts, near-limit amber tint, a desktop notification per threshold crossing, and burn-rate projections (ETA to reset or depletion). Providers: OpenCode Go, OpenAI Codex, OpenRouter, plus Anthropic, GitHub Copilot, Nous, Z.AI, Kimi, MiniMax and DeepSeek when configured. Disclosure — resolves provider credentials read-only (Hermes account-usage helpers and profile secrets, else the profile's .env and the vendor CLI login files ~/.codex/auth.json, ~/.claude/.credentials.json and ~/.local/share/opencode/auth.json) and sends each only to that provider's usage endpoint; the GitHub Copilot check presents the VS Code / Copilot client identity. No subprocesses, no telemetry.","maintainer":"PhoeniXAbhisheK","tier":"community","category":"desktop","requires_hermes":">=0.21.0","docs_url":"https://github.com/PhoeniXAbhisheK/hermes-plugin-provider-usage#readme","version":"0.2.1","image":"https://raw.githubusercontent.com/PhoeniXAbhisheK/hermes-plugin-provider-usage/023e7e54d6f6c5ec55314f7603ed5b80af81cd54/media/banner.png","screenshots":["https://raw.githubusercontent.com/PhoeniXAbhisheK/hermes-plugin-provider-usage/023e7e54d6f6c5ec55314f7603ed5b80af81cd54/media/panel.png","https://raw.githubusercontent.com/PhoeniXAbhisheK/hermes-plugin-provider-usage/023e7e54d6f6c5ec55314f7603ed5b80af81cd54/media/status-bar.png","https://raw.githubusercontent.com/PhoeniXAbhisheK/hermes-plugin-provider-usage/023e7e54d6f6c5ec55314f7603ed5b80af81cd54/media/notification.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pstack","repo":"https://github.com/Cloeille/pstack","sha":"ac5e5ab5f090f4d2113f17dbe7ca7a8d8c8a4856","description":"Engineering rigor stack: poteto-mode orchestrator with 7 playbooks (new-feature, bugfix, refactor, testing, one-shot, migrate, explore), plus how, architect, interrogate, swarm, and unslop skills.","maintainer":"Cloeille","tier":"community","category":"tools","version":"0.1.0","docs_url":"https://github.com/Cloeille/pstack","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"public-holidays","repo":"https://github.com/Akloenx123/hermes-public-holidays","sha":"d73f177b13c368c5c2445f6595f4008ed6c79a78","description":"Public holidays for 200+ countries and their regions, plus workday checks, workday counts and deadline math (N working days after a date), computed in code instead of by the model. Disclosure — sends HTTPS GET requests to date.nager.at (Nager.Date, free, no key) carrying only a country code and a year; no redirects, 10 s timeout, responses cached in memory only. No credentials, no files written, no shell commands, no hooks, no background processes, no telemetry.","maintainer":"Akloenx123","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/Akloenx123/hermes-public-holidays#readme","version":"0.1.0","readme":true,"platforms":[],"capabilities":{"provides_tools":["holidays_list","workday_check","workdays_count","workdays_add"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"pushary","repo":"https://github.com/Pushary/hermes-plugin-pushary","sha":"cd3a9a4d78a9ef8a1c279d27100cb1e462273362","subdir":"pushary_plugin","description":"Phone notifications, questions and approvals through Pushary's native Hermes approval transport, with optional per-tool gates. Disclosure — approval transport and per-tool gates hand dangerous-command approvals to whoever holds the devices or Slack channel paired to your Pushary account (fails closed); messages queued in the Pushary app or Mac notch are injected into the next turn as operator instructions; sends session events with a hashed hostname on every turn, redacted tool-error text (max 3 per session) and redacted gated-tool arguments to pushary.com.","maintainer":"Pushary","tier":"community","category":"automation","docs_url":"https://github.com/Pushary/hermes-plugin-pushary#readme","version":"0.5.9","readme":false,"capabilities":{"provides_tools":["pushary_notify","pushary_ask","pushary_wait","pushary_cancel","pushary_propose_scope","pushary_enroll","pushary_ask_end_user"],"provides_hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_session_start","on_session_end","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"pushover-hermes-plugin","repo":"https://github.com/lightx/pushover-hermes-plugin","sha":"967fe2d476b384d51773529a7b34ab52e3fdebf1","description":"Pushover as an outbound-only gateway platform, plus opt-in agent lifecycle notifications (finished, questions, errors, approvals, kanban blockers, Hermes's sudo password prompt) via Pushover and/or native notify-send, managed with /notifications. Disclosure — sends HTTPS requests to api.pushover.net only, carrying your Pushover app token, user key and notification text (when lifecycle notifications are enabled, excerpts of agent replies, clarify questions, approval commands, the command waiting on the sudo password prompt (redacted by Hermes; never the password) and kanban block reasons; PUSHOVER_NOTIFY_QUESTION=minimal suppresses all but kanban reasons); send_message can address any Pushover user or group key; runs notify-send (argv, no shell) when native notifications are enabled; writes an unrotated log under $HERMES_HOME/logs and settings.json under $HERMES_HOME/plugin-data, and $HERMES_HOME/.env only from the interactive setup wizard. Outbound-only, no inbound or approval path, no telemetry, no background processes.","maintainer":"lightx","tier":"community","category":"platform","requires_hermes":">=0.21","docs_url":"https://github.com/lightx/pushover-hermes-plugin#readme","version":"1.2.0","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_llm_call","pre_approval_request","post_approval_response","pre_tool_call","post_tool_call","on_human_input_request"],"provides_middleware":[],"requires_env":["PUSHOVER_APP_TOKEN","PUSHOVER_USER_KEY"]}},{"name":"qdrant-memory","repo":"https://github.com/cnkang/hermes-plugin-qdrant-memory","sha":"c85d2bce788b117dddd854bb124971f7de8e564c","description":"Durable native memory for Hermes with LLM fact extraction. Conversations are distilled by the Hermes-configured LLM into searchable memories — facts, preferences and decisions with deduplication and importance — instead of storing turns verbatim, and are kept in Qdrant (embedded, self-hosted Server, or Qdrant Cloud) with configurable embeddings (default: local Ollama qwen3-embedding:4b at 2560 dimensions). The plugin registers a native MemoryProvider plus four scoped tools: qdrant_memory_search, qdrant_memory_add, qdrant_memory_update and qdrant_memory_delete. A SQLite WAL admission ledger makes every write idempotent and replayable across restarts with fail-closed recovery; scoped inventory, portable export and scope-aware deletion (list/export/delete-all with explicit single-agent vs all-agents semantics) ship in the same CLI, and `migrate mem0` imports existing Mem0 exports with resumable, verifiable runs. Disclosure — memory text is stored in the configured Qdrant store (embedded files under <HERMES_HOME>/qdrant-memory/qdrant by default, or the Server/Cloud URL you set), and memory text plus each turn's recall query are sent as plain text to the configured embedding endpoint (default local Ollama at http://127.0.0.1:11434; an OpenAI-compatible remote endpoint can be configured, and keyed endpoints must use HTTPS). Disclosure — after each primary-agent turn, at session end and before context compression, conversation text goes to the LLM configured in Hermes through the Hermes plugin LLM facade (a provider/model override needs the plugin's Hermes trust grant) to extract facts and to compare near-duplicate memories; that LLM may be a remote provider. Disclosure — the provider is selected with memory.provider: qdrant-memory; its settings live in <HERMES_HOME>/qdrant-memory.json (0600, secrets stripped on save). QDRANT_URL, QDRANT_API_KEY and EMBEDDING_API_KEY are read through the Hermes secret scope, but an api_key written by hand into qdrant-memory.json takes precedence, and `migrate mem0` reads the source Qdrant endpoint and any api_key from <HERMES_HOME>/mem0.json or --source-config. Disclosure — state lives under <HERMES_HOME>/qdrant-memory/ (embedded store, SQLite WAL ledger, lock files); the ledger holds raw turn text and pre-compression transcripts until they are processed, and failed items until retried, then scrubs the bodies. Disclosure — single-writer design: a local ownership lock excludes a second writer to the same profile destination, and Server/Cloud deployments expect one active writer per scope. Disclosure — deletion removes records and fences pending operations, but is not a forensic secure erase (SQLite WAL pages and backups may retain content).","maintainer":"cnkang","tier":"community","category":"memory","requires_hermes":">=0.21.5","version":"0.2.2","docs_url":"https://github.com/cnkang/hermes-plugin-qdrant-memory#readme","readme":true,"known_issues":["Preview scope: multi-writer Server/Cloud deployments, hybrid retrieval and a web UI are not supported.","Deletion removes records and fences pending operations but is not a forensic secure erase; storage-level remnants (WAL, backups) may persist.","Embedded mode is single-writer: a second process fails closed on the ownership lock instead of sharing the store.","Extraction adds LLM latency after a turn; memory admission is not guaranteed before the host admits the provider, and pending operations replay on the next start."],"capabilities":{"provides_tools":["qdrant_memory_search","qdrant_memory_add","qdrant_memory_update","qdrant_memory_delete"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"qdrant","repo":"https://github.com/kuehnberger/hermes-qdrant-memory","sha":"5241e51274c657251776659bfb651aae4ba4bf1d","version":"0.1.8","image":"https://raw.githubusercontent.com/kuehnberger/hermes-qdrant-memory/5241e51274c657251776659bfb651aae4ba4bf1d/docs/banner.jpg","description":"Dense semantic memory for Hermes, stored in a Qdrant collection you host. Each turn becomes one point — user and assistant text verbatim, no LLM summarization step — embedded on-device at 384 dimensions with fastembed (ONNX; the default install is 206 MB of runtime dependencies with no torch, versus ~1.2 GB when sentence-transformers was a hard dependency) and recalled by cosine search with an optional session_id payload filter, so a result quotes what was actually said. Registers 7 tools: qdrant_search, qdrant_upsert, qdrant_recall, qdrant_collect, qdrant_prepare, qdrant_forget (point-targeted deletion, dry-run by default, no delete-all), and md_search (local markdown knowledge index). An optional recall-indicator display, display.level (off | summary | verbose, default off), adds latency and collection to the chat indicator at summary and one numeric line per operation to the log at verbose — numbers and identifiers only, never recalled message text or search-result snippets (the md_search line also echoes the query you searched — your own input, not recalled content); it is separate from the older top-level progress knob (off | minimal | verbose), which gates status events. sentence-transformers is selectable on GPU hosts; both backends produce identical vectors for all-MiniLM-L6-v2, so switching backends needs no re-embedding. A circuit breaker (5 consecutive I/O failures, 120 s cooldown) degrades to no new memories instead of crashing, and is_available()/check_backend()/unavailable_reason() distinguish a misconfiguration from a dead server. Optional hybrid dense+sparse RRF search (default off): one config key enables dense+BM25 RRF fusion. A fresh collection declares the sparse vector at creation and an existing dense-only store gets it added in place (Qdrant >= 1.18) with one bundled backfill command; measured +0.024 recall@10 on the LongMemEval 1,000-example benchmark. INT8 quantization is not implemented. Local embedded Qdrant mode is not supported: the provider is REST-only and needs a reachable server. Disclosure — all memory content (verbatim user and assistant turns) is stored in and read back from the Qdrant server at the configured url (default http://localhost:6333); QDRANT_API_KEY is only needed for Qdrant Cloud, is kept in .env and read through the Hermes secret scope, and is never written to config.yaml or qdrant.json. Disclosure — the only other outbound traffic is a one-time download of the embedding model weights (plus the 10 MB Qdrant/bm25 sparse model when hybrid is on) from huggingface.co (fastembed falls back to storage.googleapis.com/qdrant-fastembed if that fails); embedding runs on-device and no memory content goes to any other party. Disclosure — settings are stored in <HERMES_HOME>/qdrant.json (created 0600, no credentials) and last-operation status in <HERMES_HOME>/qdrant-status.json. Disclosure — md_search returns snippets of local markdown to the model from ~/.hermes/skills, the Obsidian vault at ~/Documents/hermes_default, ~/.hermes/hermes-agent/website and any path in the md_docs_roots key of qdrant.json; its index is built only when you run scripts/md_ingest.py and lives in <base Hermes home>/state/md-search/ (shared by all profiles). Disclosure — the optional semantic tier (md_ingest.py --semantic, and md_search queries with few lexical hits) sends embedding vectors plus file-path labels and section headings, never chunk text, to a separate hermes_md_docs collection on the Qdrant server named by the QDRANT_URL env var (default http://localhost:6333, no API key), and downloads paraphrase-multilingual-MiniLM-L12-v2 from huggingface.co on first use. Disclosure — the plugin is not a server and registers no MCP server, but it is loaded in-process into every Hermes process that embeds, so each one pays its own model copy (measured ~194-211 MB per process). Disclosure — the bundled scripts/backfill_memory.py (run by hand; a dry run unless --yes) reads a profile's Hermes session database (<profile>/state.db, read-only) and copies every stored user, assistant and tool message from every session source (cli, cron, subagent, gateway), in 2,000-character chunks, into the collection at the url in qdrant.json (default http://localhost:6333); nothing reads state.db unless you run it.","maintainer":"kuehnberger","tier":"community","category":"memory","requires_hermes":">=0.21.5","docs_url":"https://github.com/kuehnberger/hermes-qdrant-memory#readme","known_issues":["Windows on ARM is unsupported: grpcio, pulled in by qdrant-client, has no win_arm64 wheel. Linux and macOS on x86_64/arm64 and Windows x86_64 are supported.","Local embedded Qdrant mode is not supported — the provider is REST-only and requires a reachable server.","md_search returns 'no markdown index yet' until you run the bundled ingest script once (python scripts/md_ingest.py, lexical only and fast; add --semantic for the embedding tier, which takes about 7 minutes for 5500 chunks on a 5-core CPU). No background process does this for you.","Running the plugin's pytest suite inside an installed copy still changes the PM dependency stamp (the .pytest_cache directory is hashed as a build input); only an upstream core change can exclude gitignored state."],"capabilities":{"provides_tools":["qdrant_search","qdrant_upsert","qdrant_recall","qdrant_collect","qdrant_prepare","qdrant_forget","md_search"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"quota","repo":"https://github.com/rarf/hermes-quota-plugin","sha":"ce8593a25ff61c32dd1e929fe2f87502cb6408cc","version":"2.10.0","description":"Per-provider quota / rate-limit status via /quota command and desktop widget. Reads precomputed quota_cache.json so the widget never does network I/O. Disclosure — refreshes your Gemini OAuth token using the Gemini CLI's public client identity, in memory only; queries Copilot's internal usage endpoint with VS Code client headers and Anthropic's OAuth usage endpoint using the hermes-quota-plugin User-Agent; optional additional Claude accounts read access tokens only from explicitly configured Claude Code credentials files and send them only to Anthropic's fixed OAuth usage endpoint (read-only, no refresh-token exchange or credential write-back; tokens and paths excluded from the quota cache). Linux extra accounts verified; Windows experimental, extra macOS Keychain accounts unsupported. The openai-codex check reads every saved Codex account from Hermes' own auth.json credential pool (read-only, never refreshed; expired accounts show reauth-required) and queries the Codex usage endpoint with the codex-cli User-Agent; the opencode-go check reads the OpenCode CLI's local auth.json, Hermes' auth.json pool and OPENCODE_GO_API_KEY_N variables (read-only). The cursor check reads the Cursor CLI token from the macOS Keychain or Cursor's auth.json (read-only, never refreshed or rewritten; on expiry it asks you to run cursor-agent login) and queries api2.cursor.sh; the opt-in (default off) antigravity check reads Antigravity's OAuth token from Windows Credential Manager, the macOS Keychain or ~/.gemini/antigravity-cli (read-only), refreshes it in memory with Antigravity's public client identity and sends Antigravity's User-Agent to Google's cloudcode endpoint; the opt-in (default off) grok.com check reads local browser cookies, using secret-tool on Linux or the macOS Keychain for the browser's Safe Storage key and decrypting only grok.com cookies from a temporary copy of the cookie DB; the commandcode check reads ~/.commandcode/auth.json (read-only) or Hermes' credential store and uses the Command Code CLI's User-Agent; zai, kimi, minimax, deepseek, openrouter, ollama (which may read OLLAMA_API_KEY from ~/.hermes/.env and calls ollama.com/api/usage and /api/me) and experientiallabs send keys from Hermes' credential store or env only to their own vendor's usage or balance endpoints.","maintainer":"rarf","tier":"community","category":"desktop","docs_url":"https://github.com/rarf/hermes-quota-plugin#readme","readme":true,"image":"https://raw.githubusercontent.com/rarf/hermes-quota-plugin/ce8593a25ff61c32dd1e929fe2f87502cb6408cc/docs/images/quota-banner.png","screenshots":["https://raw.githubusercontent.com/rarf/hermes-quota-plugin/ce8593a25ff61c32dd1e929fe2f87502cb6408cc/docs/images/quota-pane.png","https://raw.githubusercontent.com/rarf/hermes-quota-plugin/ce8593a25ff61c32dd1e929fe2f87502cb6408cc/docs/images/quota-app.png"],"capabilities":{"provides_tools":[],"provides_hooks":["footer","usage_extra"],"provides_middleware":[],"requires_env":[]}},{"name":"quote-ask","repo":"https://github.com/freefate258/quote-ask","sha":"194f1715a623f2ca185469047452365e36cb8972","title":"Quote & Ask","description":"Codex-style ask-about-selection for Hermes Desktop: select text anywhere in a conversation, and a small pill appears above the selection offering Quote & ask — the selection lands in the message composer as a Markdown quote with the caret on the line below, ready for your question — or Copy, which puts the same Markdown quote on the clipboard. A command-palette entry does the same without the pill. Desktop-only (desktop/plugin.js inside the plugin SDK surface): no agent tools, hooks, middleware or env vars, nothing written to disk, nothing persisted. Disclosure — reads window.getSelection() and the selection rectangle; serializes the selection to Markdown (fenced code with its language, nested lists, bold/italic, links), cut at 4000 characters; writes the draft through host.composer (getDraft/setDraft, falling back to insertText, then ctx.os.writeClipboard) and focuses the composer; ignores selections made inside the composer itself and hides on collapse, scroll or Escape. No network calls, no credentials, no telemetry.","maintainer":"freefate258","tier":"community","category":"desktop","version":"0.1.0","docs_url":"https://github.com/freefate258/quote-ask#readme","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.5"},{"name":"quotum","repo":"https://github.com/qvotvm/hermes-quotum","sha":"b27d42ea995567a66e64b2389b14a665c5a17611","description":"A quotum seat's Venice key as a provider. Private and anonymized models, with the seat's daily cap, spend and the 20:00 UTC bell in /usage, and a Seals tab in hermes dashboard with the seat's record. Disclosure — prompts and QUOTUM_SEAT_KEY go to api.venice.ai; /usage, Desktop usage and the Seals tab send a 16-hex sha256 handle of the key to quotum.org, then the Seals tab reads the seat's public record from quotum.org (the key itself is never sent there); QUOTUM_X_SEARCH=1 swaps in its own client that drops Hermes web_search for Venice-side web and X search (billed per search); seats are funded by the QUOTUM crypto token","maintainer":"quotum","tier":"community","category":"models","version":"0.2.0","requires_hermes":">=0.21.5","docs_url":"https://github.com/qvotvm/hermes-quotum#readme","known_issues":["The optional QUOTUM_X_SEARCH mode supplies its own client through create_client, so it works with plugins.isolation in_process (the default) only; under host isolation leave it off.","Hermes' bundled Achievements page has no hook for outside achievements, so the seat's seals live in the plugin's own Seals tab."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["QUOTUM_SEAT_KEY"]}},{"name":"radio-dm-gateway","repo":"https://github.com/TakeshiTGAL/hermes-plugin-radio-dm-gateway","sha":"cc543e3fcd331bb3aeb995d8176947593134e7a3","description":"Answers an allowlisted direct message on your Meshtastic® radio. Disclosure — talks only to the MESHTASTIC_URL you set, over plain tcp, so channel keys and text travel unencrypted. An empty MESHTASTIC_ALLOWED_NODES answers nobody. A channel packet or a direct message without pkiEncrypted is never answered, because a channel key can forge a sender. Allowlisted nodes can prompt the agent, use tools until hermes tools turns them off, and approve one command at a time. An approval question is sent only when its line shows exactly the command /approve will run. A line that still goes out after that send was declined does not let /approve run it, and the next approval is declined once. Each direct message runs an agent turn on your model, and the agent cannot send on its own. No cron job comes with it; one the agent makes stays until hermes cron remove. Hermes main does not load this platform when plugins run in their own process. Node ids, sizes and times go to nodes.json in this profile's plugin-data and stay after uninstall. The message text is not stored. Not tried on a physical radio. Meshtastic® is a registered trademark of Meshtastic LLC. This site is not affiliated with or endorsed by the Meshtastic project.","maintainer":"TakeshiTGAL","tier":"community","category":"platform","requires_hermes":">=0.21.6","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-radio-dm-gateway#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MESHTASTIC_URL"]}},{"name":"rea-captcha","repo":"https://github.com/masakaai/rea-captcha","sha":"bac84a628e989d330b807974789cde0ec689be18","subdir":"integrations/hermes","description":"Inspect captured browser verification evidence locally when an agent task is interrupted by a CAPTCHA. Portable Agent Plugins v1 package (pinned stateless mcp.json + skill); needs Node.js 22.19+/24.11+/26+ with npx on PATH. Disclosure — on first start Hermes runs `npx rea-captcha@0.3.1`, which downloads that exact npm package and its dependencies (incl. Playwright) from the npm registry; the catalog config is stateless, so only the read-only, local captcha_analyze works and the browser-session tools fail closed until you configure a separate stateful server; no telemetry, hosted solver, browser-profile copying, or cookie/token transfer.","maintainer":"masakaai","tier":"community","category":"automation","requires_hermes":">=0.22.0","docs_url":"https://github.com/masakaai/rea-captcha/tree/bac84a628e989d330b807974789cde0ec689be18/integrations/hermes","version":"0.3.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"rea","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"1690b63a4790cb821fb6a319ba524815d4e09411","subdir":"rea","description":"Reverse engineer programs with REA (rea.tools): native binaries, .NET assemblies, Electron/JavaScript apps, Android packages, firmware and browser/process activity, through REA's MCP server (pinned rea-agents@6.7.0 over npx stdio) with REA's reverse-engineer-anything skill adapted for Hermes. Portable Agent Plugins v1 package (mcp.json + skills/); needs Node.js 22.19+/24.11+/26+ on PATH, plus your own Ghidra, Hopper or IDA for native decompilation. Disclosure — a few REA tools run a command under a PTY, launch or drive an application, change a connected Android device or overwrite a chosen file, and Hermes does not prompt before them; the bundled skill tells the agent to ask first and to skip them in unattended runs.","maintainer":"NousResearch","tier":"official","category":"tools","requires_hermes":">=0.22.0","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/rea","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/1690b63a4790cb821fb6a319ba524815d4e09411/assets/rea.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"reaction-feedback","repo":"https://github.com/AhmetArif0/hermes-reaction-feedback","sha":"50d8dbd0fb9f89ce1002ad378a8b656e52a617e1","subdir":"reaction-feedback","description":"Lets the agent see the emoji reactions you leave on its Telegram messages: react 👍 or 👎 to a reply and the agent's next turn in that private chat starts with a short note naming the reaction and the message it followed. Disclosure — registers pre_gateway_dispatch (always returns None, so dispatch is never changed), pre_llm_call and gateway_platform_event hooks; keeps a bounded in-memory record of private-chat message ids, 60-character excerpts and reactions; writes nothing to disk, makes no network requests, starts no processes and reads no secrets.","maintainer":"AhmetArif0","tier":"community","category":"general","requires_hermes":">=0.21.5","docs_url":"https://github.com/AhmetArif0/hermes-reaction-feedback","version":"1.0.2","image":"https://raw.githubusercontent.com/AhmetArif0/hermes-reaction-feedback/14f339e250ccfac1961977276256745da72e6491/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_gateway_dispatch","pre_llm_call","gateway_platform_event"],"provides_middleware":[],"requires_env":[]}},{"name":"reading-buddy","repo":"https://github.com/harrylabsj/hermes-plugin-reading-buddy","sha":"486034846dc82916460faaa7ab1b4baedea08f5b","description":"Local-first WeRead (微信读书) reading companion: syncs bookshelf, reading stats and notes to the local machine and turns them into private reading cards and weekly/monthly reviews through 8 MCP tools, with a built-in fictional demo mode for previews. Engine pinned to an immutable git commit (e5f6673) over npx stdio; Portable Agent Plugins v1 package (mcp.json + skills/), needs Node.js 20+ on PATH. All data stays in PLUGIN_DATA; never posts to WeRead — cards and reviews are local files saved only after user confirmation. Disclosure — live mode sends your WEREAD_API_KEY as a Bearer token plus book ids and paging cursors to i.weread.qq.com (Tencent's WeRead agent gateway) and nothing else; the engine's MCP tool descriptions and error messages are Chinese-only while the skills are English-first; the engine's npm dependencies resolve as caret ranges at first launch.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/reading-buddy","version":"1.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"reasoning-switch","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"953732a9fb52b6fd89e73fc96d910aab63163e07","subdir":"public/reasoning-switch","description":"Rotate the focused session reasoning effort from the status bar. A dialog sets the levels, colors, and per-level prompt limits. Disclosure — changes the focused session's reasoning effort through the gateway config.set API (core may fall back to writing the global config.yaml when the session id is stale) and auto-demotes the level after the configured number of prompts.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/reasoning-switch","version":"1.1.1","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/953732a9fb52b6fd89e73fc96d910aab63163e07/public/reasoning-switch/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"recency-anchor","repo":"https://github.com/etkecc/hermes-recency-anchor","sha":"24d1906a285fdfe37ecaf6253da8712db28f5a7b","description":"Your system prompt is message zero and the user's question is message N. On models that weight recency hard, that is not a fair fight, and the instruction you care about most quietly loses to whatever was just asked. This plugin restates it at the end of every user turn instead. Append-only, API cop","maintainer":"etkecc","tier":"community","category":"general","docs_url":"https://github.com/etkecc/hermes-recency-anchor#readme","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"redaction-pack","repo":"https://github.com/pierrenode/hermes-redaction-pack","sha":"febd8bfe9971a3242d0ca18e8e7ca71d685d503b","subdir":"redaction-pack","description":"Teaches Hermes's built-in secret redactor 71 more vendor credential formats (HashiCorp Vault, Doppler, Amazon Bedrock, Atlassian, Cloudflare, Supabase, Tailscale, Docker Hub, JFrog Artifactory, CircleCI, HubSpot, PostHog, Grafana, Sentry, Shopify and others) through register_redaction_patterns, so those tokens are masked in logs, tool output and model-bound text like the built-in ones. Disclosure — register() makes one call, ctx.register_redaction_patterns; no tools, hooks, network access, subprocesses, files or environment variables; the patterns can only add masks, and security.redact_secrets: false still turns redaction off.","maintainer":"pierrenode","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/pierrenode/hermes-redaction-pack","version":"1.4.0","image":"https://raw.githubusercontent.com/pierrenode/hermes-redaction-pack/febd8bfe9971a3242d0ca18e8e7ca71d685d503b/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"redline","repo":"https://github.com/silentpr0/hermes-redline","sha":"3fffa9b5af77c31119fb6cf138279cdc5349540c","subdir":"","description":"Guided Markdown and source-code review in Hermes Desktop — annotate passages or line-numbered code in a docked pane and send comment/question/change-request batches back to the agent; cards are offered automatically on delivered Markdown. Disclosure — reads any user-selected local .md/.markdown or source-code path (.py .sh .js .ts .tsx .c .h .cpp .go .rs .rb .yaml .yml .json .toml .sql, so config files such as config.yaml or auth.json are shown if you open them) up to 1 MB (symlink-resolved), writes only a <file>.redline.json sidecar beside it, and in Hermes Desktop chats the transform_llm_output hook appends a ::redline directive line to qualifying final agent responses; syntax highlighting uses Pygments in the local gateway host with plain-text fallback; no network beyond the local gateway, no credentials, no telemetry, no subprocesses; the pane polls the local backend every 3 s while open.","maintainer":"silentpr0","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"0.2.0","image":"https://raw.githubusercontent.com/silentpr0/hermes-redline/3fffa9b5af77c31119fb6cf138279cdc5349540c/docs/banner.png","screenshots":["https://raw.githubusercontent.com/silentpr0/hermes-redline/3fffa9b5af77c31119fb6cf138279cdc5349540c/docs/screenshot.png"],"readme":true,"capabilities":{"provides_tools":[],"provides_hooks":["post_tool_call","transform_llm_output","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"remarkable","repo":"https://github.com/cygnostik/hermes-plugin-remarkable","sha":"5f841248b068d49f8a04208bf3471e00acd933f3","description":"Unofficial reMarkable cloud transfers, library management, backups, typed text, and bounded native notebook rendering. Disclosure — talks to reMarkable cloud with a device token under ~/.hermes/credentials/remarkable/; remarkable_upload sends model-chosen local PDF/EPUB files to your account; the cloud sidecar (Node 22+) and renderer venv are installed only by the human-run setup commands; USB/SSH off by default.","maintainer":"cygnostik","tier":"community","category":"tools","requires_hermes":">=0.21.3","version":"0.2.0","docs_url":"https://github.com/cygnostik/hermes-plugin-remarkable#readme","image":"https://raw.githubusercontent.com/cygnostik/hermes-plugin-remarkable/5f841248b068d49f8a04208bf3471e00acd933f3/docs/media/remarkable-hermes-catalog.png","platforms":["windows","linux","macos"],"capabilities":{"provides_tools":["remarkable_enroll","remarkable_status","remarkable_list","remarkable_download","remarkable_upload","remarkable_mkdir","remarkable_manage","remarkable_export","remarkable_extract_text","remarkable_search","remarkable_backup","remarkable_changes"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"reme","repo":"https://github.com/agentscope-ai/ReMe","sha":"5231f3970c550bb0bc5d1bc7fbc85534274ca530","subdir":"integrations/hermes_agent","description":"Local-first, file-native long-term memory with HTTP and embedded ReMe backends. Disclosure — search queries and full user/assistant turns are sent to the configured ReMe endpoint (default http://127.0.0.1:2333; a non-loopback http:// endpoint receives them in plaintext) or handled by the in-process ReMe SDK; no API keys are forwarded.","maintainer":"agentscope-ai","tier":"community","category":"memory","requires_hermes":">=0.21","docs_url":"https://github.com/agentscope-ai/ReMe/tree/main/integrations/hermes_agent","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"render-platform","title":"Render","repo":"https://github.com/ojusave/render-hermes-plugin","sha":"1d343332142c27e1b97281ff03e2811f8a083750","version":"0.1.0","maintainer":"ojusave","tier":"community","category":"platform","docs_url":"https://github.com/ojusave/render-hermes-plugin#readme","readme":true,"platforms":[],"description":"Deploy, debug and manage Render applications with 20 unchanged skills from render-oss/skills and Render's hosted MCP connection. Disclosure — connects Hermes to Render's hosted MCP server (mcp.render.com) with your RENDER_API_KEY; the server is marked untrusted so tools without a read-only annotation need approval; account permissions apply and changes can incur Render charges; bundled skills guide shell commands, file edits and Render CLI installs (including the vendor's curl | sh installer).","known_issues":["render-docker is excluded because its upstream Dockerfile cleanup example triggers a critical scanner rule.","Render's list_workspaces lacks a read-only annotation and requires approval; unattended calls are denied.","An existing native mcp_servers.render configuration overrides the package connection and trust setting."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["RENDER_API_KEY"]},"requires_hermes":">=0.21.6"},{"name":"replaid","repo":"https://github.com/replaid-pro/replaid-hermes","sha":"3f8881f2f9f6ee27b59515ff9fef0afee33b87e0","description":"Connect Replaid with OAuth to read, triage, and draft replies in your social inbox.","maintainer":"replaid-pro","tier":"community","category":"tools","requires_hermes":">=0.21.3","docs_url":"https://github.com/replaid-pro/replaid-hermes#readme","version":"0.2.1","capabilities":{"provides_tools":["replaid_connection_status"],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"rfc-ref","repo":"https://github.com/EloquentBrush0x/hermes-context-refs","sha":"7d10da5365b5f6d9cfac8c9f5ce8fdc8273f6624","subdir":"rfc-ref","description":"@rfc:<number> context references: attach an IETF RFC's record from the RFC Editor to a message (title, status, date, authors, abstract, what it obsoletes and updates and what obsoletes or updates it, errata link). Disclosure — sends one HTTPS GET per reference to www.rfc-editor.org/rfc/rfc<number>.json only (the referenced RFC number leaves the machine); no API key, no caching, no files written, no subprocess; register() only adds the @rfc: reference provider.","maintainer":"EloquentBrush0x","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/EloquentBrush0x/hermes-context-refs/tree/main/rfc-ref","version":"1.0.0","image":"https://raw.githubusercontent.com/EloquentBrush0x/hermes-context-refs/7d10da5365b5f6d9cfac8c9f5ce8fdc8273f6624/docs/rfc-ref-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"rocketchat-platform","repo":"https://github.com/HalfbitStudio/hermes-plugin-rocketchat","sha":"989a04cd5f09e57bdd88997940cd18e4d58415b2","description":"Rocket.Chat gateway adapter for Hermes Agent. Connects to a self-hosted Rocket.Chat instance via the REST API v1 for outbound traffic and the Realtime (DDP) WebSocket for inbound messages. Uses aiohttp (already a Hermes dependency) — no extra packages needed.","maintainer":"HalfbitStudio","tier":"community","category":"platform","docs_url":"https://github.com/HalfbitStudio/hermes-plugin-rocketchat#readme","capabilities":{"provides_tools":["rocketchat_create_channel","rocketchat_delegate","rocketchat_dm","rocketchat_get_history","rocketchat_get_permalink","rocketchat_get_thread","rocketchat_list_channels","rocketchat_post","rocketchat_search_messages","rocketchat_send_file"],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"rply-platform","repo":"https://github.com/joshuaKnauber/rply","sha":"932926e7f209e2d41b985b51a73867e7b050ab57","subdir":"integrations/hermes","title":"rply","description":"rply gateway platform: talk to Hermes from the rply inbox on your phone and laptop, with web push. Messages and files both ways, seen/working/done with a live activity note, clarify questions and command approvals as tappable questions, cron delivery, a pinned table of scheduled jobs, a dashboard app with run/pause/resume, and an rply_request_secret tool that saves API keys to the profile's .env without the value passing through the chat. Each profile joins the channel as its own agent. Disclosure — keeps a long-polling connection to the configured rply server only (RPLY_SERVER, default https://app.rply.sh; self-hostable, AGPL server); messages the channel's members send reach Hermes as user instructions and members answer its approval and clarify prompts; the dashboard sends the server Hermes' cron job list, the titles and previews of the 10 most recent sessions from every platform, token and cost totals and the default model, and runs, pauses or resumes jobs when its buttons are pressed; stores the agent token in the profile's .env, an X25519 keypair in <profile>/rply/secret-key.json (0600) and secrets the human provides in the profile's .env under a variable name the agent picks (core's env denylist applies; the .env path is sent to the server with the request); the secret tool waits up to 15 minutes for the human and refuses under cron; adds a `hermes rply` setup command; credentials read through Hermes' profile-scoped route; no shell commands, no telemetry, no self-update.","maintainer":"joshuaKnauber","tier":"community","category":"platform","requires_hermes":">=0.22.2","docs_url":"https://rply.sh/docs/integrations/hermes/","version":"0.7.0","capabilities":{"provides_tools":["rply_request_secret"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"rss-reader","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"30d6dc6311bfce951c10ed120c878dc3f28a7ced","subdir":"public/rss-reader","description":"Desktop RSS reader with reader-mode capture, drag-reorder subscriptions, mute rules, saved searches, AI summaries, keyboard shortcuts, and an optional headline ticker. Disclosure — optional YouTube cookies you paste in Settings are sent with YouTube feed requests; selectable User-Agent presets (incl. a ChatGPT-User string) are sent to feed hosts; YouTube videos render as youtube-nocookie.com embed iframes inside the reader.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/rss-reader","version":"1.1.0","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/30d6dc6311bfce951c10ed120c878dc3f28a7ced/public/rss-reader/docs/hero.png","screenshots":["https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/30d6dc6311bfce951c10ed120c878dc3f28a7ced/public/rss-reader/docs/screenshot.png"],"platforms":[],"capabilities":{"provides_tools":["rss"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"rtk-rewrite-docker","repo":"https://github.com/petertaras/hermes-rtk-rewrite-with-docker-support","sha":"929c8f5f86fc544a523f94a92f95a57d4c0d7d40","description":"Community plugin that rewrites Hermes terminal commands through RTK (rtk-ai/rtk, Apache-2.0) so the model sees compact output. Adds a backend gate: it rewrites only for terminal backends a profile opts in to (default local), so a Docker or remote backend without rtk never receives an rtk command. Fail-open pre_tool_call hook (2s timeout). Disclosure — every terminal command on an opted-in backend (default local) is passed to the rtk binary on the Hermes host's PATH (or RTK_BIN) and replaced with rtk's stdout before approval and execution; the plugin does not validate the rewrite, fails open on timeout or error, and downloads nothing (the repo's optional Containerfile fetches a checksum-pinned RTK release only when you build it). Not affiliated with rtk-ai.","maintainer":"petertaras","tier":"community","category":"tools","requires_hermes":">=0.21","version":"0.1.0","docs_url":"https://github.com/petertaras/hermes-rtk-rewrite-with-docker-support#readme","platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"rtk-rewrite","repo":"https://github.com/kerrz2020/hermes-rtk-rewrite","sha":"4c5f8a5abdfd7980cba5ef02df86b8efe52c00d6","description":"Community (non-official) plugin that rewrites Hermes terminal commands through RTK (rtk-ai/rtk, Apache-2.0) before execution, so the model sees compact output instead of raw command spam — cutting tokens on common dev commands. Adds a fail-open pre_tool_call hook (2s timeout, unexpected exits leave the command untouched), an optional desktop pane, and update scripts. Disclosure — every terminal tool command is passed to the rtk binary found on PATH (rtk-ai/rtk, installed separately) and replaced with rtk's rewrite before approval and execution; fail-open when rtk is missing or errors. Community mirror of upstream's hooks/hermes/rtk-rewrite, not affiliated with rtk-ai. scripts/update.sh downloads the pinned RTK release binary (v0.49.0, checksum-verified).","maintainer":"kerrz2020","tier":"community","category":"tools","version":"1.0.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"runbox","repo":"https://github.com/Zek-Takai/hermes-runbox","sha":"544e6f35c65c45d085a90078a328dbd8c3fb8872","subdir":"plugin","title":"runbox","version":"0.1.0","description":"Build, run and test Python in an offline container per chat, with results as a plain file:line issue list. The agent syncs files or folders in as copies, then runs run (a shell command), check (ruff error rules) and test (pytest); fixes stay in the box until the user asks for export, which writes changed files back through write_file and reports host files changed since the sync as conflicts. In Hermes Desktop a VS Code-style editor opens beside the chat: file tabs with in-place editing, Run / Check / Test / Stop, and PROBLEMS / OUTPUT / RUNS panels that follow the agent live. Ships the runbox:dev-loop starting-point skill. Disclosure — needs Docker (on macOS a dedicated colima profile 'runbox', started on demand with --activate=false and its own Docker config); pulls the container image pinned by digest and installs a hash-pinned checker toolchain (ruff 0.16.9, pytest 9.1.1 and deps) from PyPI once per image; the work container has no network, hardened flags, and runs commands without Hermes' dangerous-command approval like Hermes' Docker backend; install (PyPI) always asks for approval in a separate installer container; a write_file/patch on an imported original asks for approval (guard_imports); export reads each existing target through read_file before replacing it; a background thread removes idle containers (15 min), stops the VM, and removes boxes of deleted or long-idle chats (reads state.db read-only hourly); adds a short per-turn note (about 80 tokens); no credentials or telemetry.","maintainer":"Zek-Takai","tier":"community","category":"tools","requires_hermes":">=0.22.2","platforms":["linux","macos"],"image":"https://raw.githubusercontent.com/Zek-Takai/hermes-runbox/544e6f35c65c45d085a90078a328dbd8c3fb8872/docs/runbox-banner.png","screenshots":["https://raw.githubusercontent.com/Zek-Takai/hermes-runbox/544e6f35c65c45d085a90078a328dbd8c3fb8872/docs/runbox-desktop.png","https://raw.githubusercontent.com/Zek-Takai/hermes-runbox/544e6f35c65c45d085a90078a328dbd8c3fb8872/docs/runbox-demo.gif"],"known_issues":["Needs Docker: on macOS install colima and the docker CLI (brew install colima docker); on Linux a running Docker daemon. The first start on macOS downloads the VM image and takes a few minutes.","The Hermes data folder must be under your home folder on macOS (colima shares only that).","The agent may not always pick runbox on its own (the model chooses its tools). Ask it to use runbox."],"capabilities":{"provides_tools":["runbox"],"provides_hooks":["pre_tool_call","pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"s3","repo":"https://github.com/lagoon-labs/hermes-s3-plugin","sha":"3d1514e270914d89b4e99db9917eaec25d4e6688","description":"Generic S3-compatible backup and restore operations for Hermes","maintainer":"lagoon-labs","tier":"community","category":"tools","docs_url":"https://github.com/lagoon-labs/hermes-s3-plugin#readme","capabilities":{"provides_tools":["s3-ls","s3-pull","s3-push","s3-rm"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sabi-metadata","repo":"https://github.com/vizuh/sabi","sha":"b59bd21b89fca091bf9ebcfb3082a4191e511da7","description":"Fail-closed attribution middleware for Sabi's local adaptive routing lane (sabi-code). Adds opaque session/turn headers on loopback only; ignores all other models. Verified on Hermes 0.21.3.","maintainer":"Atroci","tier":"community","category":"models","subdir":"packages/adapters/hermes/plugin","docs_url":"https://github.com/vizuh/sabi/blob/main/docs/adapters/hermes.md","version":"0.1.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":["llm_request"],"requires_env":["SABI_HERMES_BASE_URL"]}},{"name":"salesforce-chatter","repo":"https://github.com/zenplace-system/hermes-plugin-salesforce-chatter","sha":"16ff469ffb1484e37053315e799846d3c4d7c9d8","subdir":"salesforce_chatter","title":"Salesforce Chatter","description":"Talk to Hermes from Salesforce Chatter: @mention the bot user in a post or comment, it Likes the message as an acknowledgement and replies in the same thread, keeping the thread as one session. Images and files on the post are passed to the model; MEDIA files are attached back. Community plugin, not affiliated with Salesforce. Disclosure — authenticates as a dedicated bot user with the OAuth 2.0 JWT bearer flow, reading the private key file at SF_CHATTER_PRIVATE_KEY_PATH; talks to the configured Salesforce login host and the org instance (attachment downloads follow Salesforce redirects); image URLs in the agent's replies are fetched from the gateway host over HTTPS (any public host; private, loopback and metadata addresses are refused) and uploaded to Chatter; polls the To Me feed every 60 s and, for allowlisted groups, runs a SOQL probe every 5 s by default (counts against the org API quota); writes Likes, comments, files in the bot user's Files and optional home-channel posts; keeps its ledger in plugin-data/salesforce-chatter/inbox.sqlite. dry_run defaults to true (no Salesforce writes, no outbound image fetch); with SF_CHATTER_ALLOWED_USERS unset nobody is answered. Optional, off by default: html_preview renders model-generated HTML to PNG with Chromium in a network-isolated Docker container (digest-pinned image, pulled if missing). No telemetry.","maintainer":"zenplace-system","tier":"community","category":"platform","docs_url":"https://github.com/zenplace-system/hermes-plugin-salesforce-chatter#readme","version":"0.2.1","requires_hermes":">=0.21.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["SF_CHATTER_LOGIN_URL","SF_CHATTER_CLIENT_ID","SF_CHATTER_USERNAME","SF_CHATTER_PRIVATE_KEY_PATH","SF_CHATTER_BOT_USER_ID"]}},{"name":"scalekit","title":"Scalekit","repo":"https://github.com/scalekit-inc/hermes-tools","sha":"35bfcedf59442377a930c4c3ed1c818ca425c11a","description":"Call any Scalekit connector from Hermes: 500+ connectors and 20,000+ tools. Disclosure — HTTP calls go to the Scalekit environment URL you paste; the three Scalekit values are read with get_secret; one person id is stored at plugin-data/scalekit/identifier; the model can request an approval link, run a named tool, or proxy one HTTP request. Provider tokens stay in Scalekit; no shell, no background process, no telemetry.","maintainer":"scalekit-inc","tier":"community","category":"tools","requires_hermes":">=0.20.0","docs_url":"https://github.com/scalekit-inc/hermes-tools#readme","version":"0.1.0","image":"https://raw.githubusercontent.com/scalekit-inc/hermes-tools/35bfcedf59442377a930c4c3ed1c818ca425c11a/screenshots/catalog-card.png","screenshots":["https://raw.githubusercontent.com/scalekit-inc/hermes-tools/35bfcedf59442377a930c4c3ed1c818ca425c11a/screenshots/01-plugin-installed-and-enabled.png","https://raw.githubusercontent.com/scalekit-inc/hermes-tools/35bfcedf59442377a930c4c3ed1c818ca425c11a/screenshots/02-list-connections.png","https://raw.githubusercontent.com/scalekit-inc/hermes-tools/35bfcedf59442377a930c4c3ed1c818ca425c11a/screenshots/03-github-connected.png","https://raw.githubusercontent.com/scalekit-inc/hermes-tools/35bfcedf59442377a930c4c3ed1c818ca425c11a/screenshots/04-github-profile.png"],"capabilities":{"provides_tools":["scalekit_authorize","scalekit_execute_tool","scalekit_list_connections","scalekit_proxy"],"provides_hooks":[],"provides_middleware":[],"requires_env":["SCALEKIT_CLIENT_ID","SCALEKIT_CLIENT_SECRET","SCALEKIT_ENVIRONMENT_URL"]}},{"name":"scamgate","repo":"https://github.com/odaiameera/scamgate","sha":"7a03486735c6b338586268d9ac8e02fc10142203","subdir":"src/scamgate","description":"Offline scam gate. Blocks known-bad links and payments before a tool runs, and asks a human when it cannot see the destination. Disclosure — blocks agent tool calls that would edit Hermes config/profiles/plugins/hooks or turn approvals off, and with approvals off turns its \"ask\" into a block (setting when_approvals_off: allow restores asks); keeps its signing key and ask log under ~/.local/state/scamgate and phishing feeds under ~/.cache/scamgate (not per-profile); feeds download only when you run `scamgate update-feeds` (openphish.com, Phishing-Database on GitHub, optional urlhaus); optional SCAMGATE_RDAP=live sends each checked link's domain to its RDAP registry.","maintainer":"odaiameera","tier":"community","category":"tools","requires_hermes":">=0.19.1","version":"0.3.0","docs_url":"https://github.com/odaiameera/scamgate","readme":true,"platforms":["linux","macos","windows"],"capabilities":{"provides_tools":["scamgate_check_url","scamgate_check_payment"],"provides_hooks":["pre_tool_call","post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"search1api","repo":"https://github.com/superagents-lab/hermes-search1api","sha":"ab898ae9a46b382d53aeb7c26cfb1a32ce5c89b8","description":"Live web search, news, Ask, page crawl, sitemap, and trending via Search1API","maintainer":"superagents-lab","tier":"community","category":"web","docs_url":"https://github.com/superagents-lab/hermes-search1api#readme","version":"0.2.1","capabilities":{"provides_tools":["search1api_search","search1api_news","search1api_ask","search1api_crawl","search1api_sitemap","search1api_trending"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"secret-drop","repo":"https://github.com/Goitonthefloor/hermes-secret-drop","sha":"505bd3b47937ae453d4a54a2ee2455a4d274bf42","description":"Store a secret on the gateway host without showing it to the model. Disclosure — stores the value in plaintext in the profile .env (mode 0600) and adds the name to terminal.env_passthrough, so $NAME is available to the terminal tool; the model can still read the value with its own tools (cat .env, echo $NAME). Keeps secrets out of chat/prompt context and redacts verbatim output of credential-shaped values; it is not a boundary against a model that deliberately reads it. Adds a static system-prompt section and a /secret command. Imports private core helpers read-only (_config_profile_scope, _is_hermes_provider_credential, _CONFIG_LOCK).","maintainer":"Goitonthefloor","tier":"community","category":"desktop","version":"1.4.0","capabilities":{"provides_tools":[],"provides_hooks":["on_session_start"],"provides_middleware":[],"requires_env":[]}},{"name":"secret-handoff","repo":"https://github.com/aean0x/hermes-secret-handoff","sha":"f669c2a8adce468790be46ad70cfd312df53ba79","description":"Ephemeral credential paste: request_secret asks through clarify and injects the reply over CDP, never storing it. Disclosure — the reply is typed into the focused field of the page whose origin matches the requested service, over the endpoint from BROWSER_CDP_URL or SECRET_HANDOFF_CDP_URL; the answer is visible in the CLI scrollback or the chat history of the surface that asked, and the value is never written to disk, the tool result, or the session transcript.","maintainer":"aean0x","tier":"community","category":"tools","docs_url":"https://github.com/aean0x/hermes-secret-handoff#readme","version":"0.3.6","capabilities":{"provides_tools":["request_secret"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"secure-env-ingress","repo":"https://github.com/web3blind/hermes-secure-env-plugin","sha":"96fac2a1295f51d45466276276af32e6d6059c41","subdir":"secure_env_ingress","description":"One-use HTTPS forms for missing environment secrets, native encrypted Browser Vault logins/TOTP setup keys and payment cards, protected hosted payment-field filling, nested HTTPS verification codes/passcodes, and approved secret operations outside chat and LLM input. Disclosure — /senv setup supplies a skill using sudo for host packages and TLS setup after approval; the TLS listener binds all interfaces by default; pre_gateway_dispatch observes gateway messages to bind commands to their sender. In interactive Telegram sessions, secure_env_vault saves logins or fills a code field through the captured browser supervisor without explicitly submitting the site form. Explicit parent payment/nested-code targeting requires compatible host task/profile ownership and browser-generation evidence and fails closed without it; this is not a general fix for native Vault named-tab selection. Payment filling requires separate native consent and exact document/control guards; explicit resume requires existing nonempty values to match Vault. Site input callbacks, especially 3-D Secure, may authorize or auto-submit an operation. Unknown outcomes require external verification before retry. secure_operation executes administrator-allowlisted, SHA-256-pinned external Python consumers with gateway privileges; consumers are trusted, not sandboxed, and none are enabled by default. Secret input is not persisted by this mode; consumers must enforce their own handling policy. Links are bearer authorization, not submitter identity; cancellation cannot stop an already-running consumer.","maintainer":"web3blind","tier":"community","category":"tools","version":"0.8.1","requires_hermes":">=0.21.7","docs_url":"https://github.com/web3blind/hermes-secure-env-plugin/blob/96fac2a1295f51d45466276276af32e6d6059c41/README.md","platforms":["linux"],"capabilities":{"provides_tools":["secure_env_vault","secure_payment_fill","secure_operation"],"provides_hooks":["pre_gateway_dispatch"],"provides_middleware":[],"requires_env":[]}},{"name":"sem-weave","repo":"https://github.com/Ataraxy-Labs/sem","sha":"631138c691817f2aa11cecdde3c400e6a0b910aa","subdir":"integrations/agent-plugin","description":"CLI-backed skills for local code discovery and entity-diff review with Sem, plus optional Weave branch-merge previews. Requires user-installed CLIs; does not apply edits or merges, install binaries, or change Git configuration.","maintainer":"rs545837","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/Ataraxy-Labs/sem/tree/631138c691817f2aa11cecdde3c400e6a0b910aa/integrations/agent-plugin","version":"0.1.0","platforms":["linux","macos"],"known_issues":["Requires Ataraxy Sem on the host terminal's PATH; Weave is optional for merge previews.","Tested with Sem 0.27.0 and Weave 0.5.4 on macOS; Windows shell instructions are not included."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sendblue","repo":"https://github.com/duoi/hermes-sendblue-plugin","sha":"3318aaa4402769ce440d43e0445ea2151ad5e73e","description":"Sendblue iMessage / SMS integration. Provides typing indicators, async daemon routing, and Active LLM Tools for SMS dispatch.","maintainer":"duoi","tier":"community","category":"platform","docs_url":"https://github.com/duoi/hermes-sendblue-plugin#readme","capabilities":{"provides_tools":["sendblue_list_messages","sendblue_send_message"],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"senler-io-user","title":"Senler.io","repo":"https://github.com/SenlerBot/senler-io-user-hermes-plugin","sha":"2294619a45f313f7c4d7c6b75bfa8e3781659253","description":"Get task-specific guidance for Senler agents, automations and knowledge, connect your account through MCP OAuth, and automate selected webhook events with an outbound Relay connection. Disclosure — Hermes installs the declared `python-socks[asyncio]` dependency for native SOCKS proxy support. First activation of the enabled plugin adds a `senler-io-user` MCP server (mcp-senler-io-user.senler.io; OAuth handled by Hermes) to the profile's config.yaml and records completion through plugin settings, which native uninstall clears. Reinstalling and enabling the plugin prepares a missing MCP again. The old durable marker from 0.5.2–0.5.3 is ignored, so upgrading restores a missing entry once, including an entry manually removed before this upgrade. Existing compatible and disabled connections are preserved; later loads in the same installation respect manual removal. Explicit chat setup can restore a removed connection. Relay setup enables a `senler-io` gateway platform in the same profile. Once you enable automation, the gateway keeps an outbound WSS connection to a Senler-supplied Relay address and runs unattended agent turns on incoming Senler events (customer messages, leads, etc.); the platform is `trusted_inbound`, so these events bypass Hermes allowlists and pairing, and customer text reaches the model as untrusted data. During those runs a hook allows the Senler MCP and native tool discovery and pins customer replies to the event's dialog, but other Senler MCP writes run without a Hermes approval prompt, limited only by your saved instructions and your Senler account permissions. Relay credentials, instructions, event payloads and reports are stored unencrypted in `<HERMES_HOME>/senler-io-relay.sqlite3`; result reports (up to 16,000 characters) and this machine's hostname (as the Relay client name) are sent to Senler. Configured monitoring also stores notification recipients, queued texts and delivery receipts in that database; the selected native Hermes messaging adapter sends summaries and delivery-test messages to the saved recipient.","maintainer":"SenlerBot","tier":"community","category":"automation","version":"0.5.6","docs_url":"https://github.com/SenlerBot/senler-io-user-hermes-plugin/blob/2294619a45f313f7c4d7c6b75bfa8e3781659253/README.md","image":"https://raw.githubusercontent.com/SenlerBot/senler-io-user-hermes-plugin/2294619a45f313f7c4d7c6b75bfa8e3781659253/assets/catalog-banner.png","readme":true,"known_issues":["After updating, restart the backend used by Desktop and the gateway; a new chat alone may still use older loaded plugin code.","Preview: Windows Desktop sign-in was previously confirmed; automatic MCP appearance still needs a Desktop UI check, and a real Senler Relay workflow needs end-to-end verification.","Requires current Hermes with native MCP OAuth and Relay transport; gateway proxy mode and multiplexed profiles are unsupported.","Monitoring notifications require a connected messaging channel; arbitrary Desktop/TUI chats are unsupported."],"capabilities":{"provides_tools":["senler_connect","senler_relay"],"provides_hooks":["pre_tool_call","on_session_end"],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.6"},{"name":"serpapi","repo":"https://github.com/serpapi/serpapi-hermes-plugin","sha":"b5049b4aa0f56836d2f88908c1c2ebca2b9dcf64","description":"SerpApi web, Maps, News, Shopping, Hotels, Flights, and Travel Explore for Hermes Agent.","maintainer":"serpapi","tier":"community","category":"web","title":"SerpApi","version":"1.1.1","docs_url":"https://github.com/serpapi/serpapi-hermes-plugin#readme","capabilities":{"provides_tools":["serpapi_maps_search","serpapi_news_search","serpapi_shopping_search","serpapi_hotels_search","serpapi_flights_search","serpapi_travel_explore_search"],"provides_hooks":[],"provides_middleware":[],"requires_env":["SERPAPI_API_KEY"]}},{"name":"session-dashboard","repo":"https://github.com/tommulkins/hermes-plugin-session-analyzer","sha":"f5a880ce8d9c4b3891c0687b4de6f30b93b5da16","image":"https://raw.githubusercontent.com/tommulkins/hermes-plugin-session-analyzer/f5a880ce8d9c4b3891c0687b4de6f30b93b5da16/assets/social-preview.png","description":"Session Analyzer — per-session analytics for the Hermes desktop app: full page at /session-dashboard with token/cache/cost aggregates, tool-call breakdown, file changes, failure groups, and Ask AI (copies a ready-to-run analysis prompt into a fresh draft chat). Read-only over state.db.","maintainer":"tommulkins","tier":"community","category":"desktop","requires_hermes":">=0.20.0","docs_url":"https://github.com/tommulkins/hermes-plugin-session-analyzer","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"session-flow","repo":"https://github.com/agantila/session-flow","sha":"359f9afecb5872fe0864eec79867a4dfa4d88d33","description":"Session pane for Hermes Desktop: Firefox-style session groups with project grouping, list/grid views, Ctrl+Scroll session cycling with a HUD, session-row styling and a built-in settings page. All timers are ctx-owned intervals disposed on unload (live-session poll ~30 s, session refresh ~45 s, project cache 60 s, activity expiry 30 s). The standalone full build in this repo (full/plugin.js, install.sh) is not part of this catalog entry. Contact: info@agantila.com. Disclosure — SDK-only Desktop plugin: reads the local Hermes gateway through public RPCs (projects.tree, projects.list, session.list, session.active_list, session.context_breakdown) and, on your actions, writes through public RPCs (projects.create/update/add_folder/remove_folder/set_primary/set_active/delete, session.create, session.cwd.set, session.title, session.branch_stored, session.archive, session.close, session.delete); captures Ctrl+mouse-wheel across the app (browser zoom suppressed except over canvases, editors and zoomable images) to cycle sessions; settings and groups stay in the app's local plugin storage; no outbound network, no shell commands, no credentials, no self-update.","maintainer":"AGANTILA — Deniz Yilmaz <info@agantila.com>","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/agantila/session-flow#readme","version":"1.29.1","image":"https://raw.githubusercontent.com/agantila/session-flow/359f9afecb5872fe0864eec79867a4dfa4d88d33/docs/marketing/sf-catalog-banner-2x1.png","screenshots":["https://raw.githubusercontent.com/agantila/session-flow/359f9afecb5872fe0864eec79867a4dfa4d88d33/docs/marketing/heroes/sf-hero-a9-sidebar-kanban-files-16x9.jpg","https://raw.githubusercontent.com/agantila/session-flow/359f9afecb5872fe0864eec79867a4dfa4d88d33/docs/marketing/heroes/sf-hero-a5-ctrlscroll-hud-16x9.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"session-lens","title":"Hermes Session Lens","repo":"https://github.com/abualnassr/hermes-session-lens","sha":"69bc2b183fd376acf27256cd9b43f578a16388ae","version":"0.53.2","description":"Read-only observability for Hermes Desktop: what each session cost and why, its full trace, recurring tool failures, every profile at a glance, provider quotas and service balances, model comparison with cheaper-route evidence, and instruction-rule grading. Disclosure — reads every profile's state.db read-only plus agent logs, cron/gateway state, config.yaml and .env (key names, and the values of keys an adapter uses); with the credentials Hermes' own resolvers return, calls only each configured vendor's usage or balance endpoint (hosts listed in the README), sending Grok CLI client headers to cli-chat-proxy.grok.com and a Claude Code user-agent to api.anthropic.com; Hermes' resolvers may renew Hermes' Codex, Nous and xAI logins and, when Hermes holds no other Anthropic credential, Claude Code's login; runs the local monid CLI when installed; an Anthropic one-token Claude Haiku probe is off by default; writes no Hermes state itself and sends no session content anywhere.","maintainer":"abualnassr","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/abualnassr/hermes-session-lens/blob/69bc2b183fd376acf27256cd9b43f578a16388ae/README.md","image":"https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/catalog-banner.png","screenshots":["https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/why-it-cost.png","https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/compare.png","https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/fleet.png","https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/recurring-failures.png","https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/ai-usage.png","https://raw.githubusercontent.com/abualnassr/hermes-session-lens/69bc2b183fd376acf27256cd9b43f578a16388ae/docs/screenshots/sessions.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"session-mirror","repo":"https://github.com/rrrrnmtsu/hermes-session-mirror","sha":"02a923f04b414f30286d31b278a3177892dd5f9f","description":"Mirrors Hermes Desktop, CLI, TUI and ACP conversations into Discord: one public thread per session in a channel you choose, one post per turn (your message and the reply), so work started on a desktop can be followed from the phone. Posting runs on a background thread and never delays or breaks a turn. Disclosure — register() adds one post_llm_call hook; every turn's text (your message and the final reply, not tool calls or outputs) is sent to the Discord REST API (discord.com) using the bot token you configure, after Hermes's redact_for_egress plus a local token-pattern filter (fail-closed: nothing is sent if the redactor is unavailable); mentions are disabled. The bot token is read only via agent.secret_scope.get_secret (an UnscopedSecretError under multiplexing skips the turn); no external command is ever run. Each turn reads the session's title and source from $HERMES_HOME/state.db read-only; session-to-thread ids are stored (mode 0600) in $HERMES_HOME/state/session-mirror.json. The optional `hermes session-mirror backfill` CLI command reads $HERMES_HOME/state.db read-only and replays past sessions through the same redaction. No other files, telemetry or long-running processes beyond one daemon sender thread.","maintainer":"rrrrnmtsu","tier":"community","category":"platform","requires_hermes":">=0.21.6","docs_url":"https://github.com/rrrrnmtsu/hermes-session-mirror","version":"0.5.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["post_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"session-ref","repo":"https://github.com/kama-dev/hermes-session-ref","sha":"468a0408a657becfcc70025d20b6ffc3bf66f8d1","description":"Reference another Hermes session in the Desktop composer with @session — type @ and pick from live session suggestions. Inserts a compact @session:\"<title>\" reference; nothing is injected into context, the agent resolves it with its own session-search. No more copying session IDs.","maintainer":"kama-dev","tier":"community","category":"desktop","requires_hermes":">=0.21.0","docs_url":"https://github.com/kama-dev/hermes-session-ref#readme","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"session-token-counter","repo":"https://github.com/Vsemagush/session-token-counter","sha":"0e69fb55f8ec11a44f32382c59746e13a30bc179","description":"Accumulated input/output token totals and context-window occupancy for the focused session, in the Hermes Desktop status bar.","maintainer":"Vsemagush","tier":"community","category":"desktop","version":"1.0.0","docs_url":"https://github.com/Vsemagush/session-token-counter#readme","requires_hermes":">=0.20.2","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"shodan","repo":"https://github.com/Adolanium/hermes-plugin-shodan","sha":"d12828e9c90654bca598d45832cee2ef6454cf30","description":"Shodan tools with complete capability declarations.","maintainer":"Adolanium","tier":"community","category":"tools","docs_url":"https://github.com/Adolanium/hermes-plugin-shodan#readme","image":"https://raw.githubusercontent.com/Adolanium/hermes-plugin-shodan/d12828e9c90654bca598d45832cee2ef6454cf30/assets/catalog-banner.png","capabilities":{"provides_tools":["shodan_host","shodan_search","shodan_count","shodan_dns","shodan_cve","shodan_account","shodan_meta","shodan_scan","shodan_alert","shodan_exploits","shodan_query","shodan_trends"],"provides_hooks":["on_session_start","on_session_reset"],"provides_middleware":[],"requires_env":["SHODAN_API_KEY"]}},{"name":"showly","title":"Showly","repo":"https://github.com/cuboteam/showly-plugin","sha":"f3872b21388fe17719f988ebe52f5115cf5d3426","subdir":"hermes","description":"Preview, publish, and manage websites hosted on Showly from Hermes Agent, through the hosted Showly MCP server (Streamable HTTP). Portable Agent Plugins v1 package (mcp.json + skills/). Disclosure — tool calls go to Showly's hosted MCP server at mcp.showly.ai. The bundled showly-hosting skill makes Showly the default for any deploy, preview or share request that names no provider, and new links default to public (anyone with the link). The showly-reports skill runs a bundled local Node.js renderer (vendored answer-me-with-html 0.4.14, upstream self-update check removed) through the shell and uploads the report directory to Showly when sharing is requested. Sign-in is out of band: `npx @showly/mcp-server login --to hermes` (unpinned) writes MCP_SHOWLY_API_KEY into ~/.hermes/config.yaml.","maintainer":"cuboteam","tier":"community","category":"tools","requires_hermes":">=0.21.6","version":"0.7.2","docs_url":"https://showly.ai/docs/mcp/overview","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["Sign-in needs one command after install, because a portable mcp.json cannot carry a credential: npx @showly/mcp-server login --to hermes"]},{"name":"sidebar-cycle","repo":"https://github.com/devseunggwan/hermes-sidebar-cycle","sha":"c42f19eeb48159e02f0e2d8c1615523529b35507","description":"Step through Hermes Desktop sidebar sessions in on-screen order with Ctrl+Cmd+] / Ctrl+Cmd+[ (rebindable), wrapping at both ends. SDK-only: session-row slot markers for order, host.state for the focused session, host.openSession for navigation.","maintainer":"devseunggwan","tier":"community","category":"desktop","requires_hermes":">=0.21.5","version":"0.1.0","docs_url":"https://github.com/devseunggwan/hermes-sidebar-cycle","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sidebar-manager","repo":"https://github.com/apoapostolov/hermes-agent-awesome-plugins","sha":"6e65021e0fa4e5de678f2dba67dda6fe097703d9","subdir":"public/sidebar-manager","description":"Hide and reorder core sidebar navigation rows from a statusbar dialog.","maintainer":"apoapostolov","tier":"community","category":"desktop","docs_url":"https://github.com/apoapostolov/hermes-agent-awesome-plugins/tree/main/public/sidebar-manager","version":"1.0.1","image":"https://raw.githubusercontent.com/apoapostolov/hermes-agent-awesome-plugins/6e65021e0fa4e5de678f2dba67dda6fe097703d9/public/sidebar-manager/docs/hero.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sigrex","repo":"https://github.com/sigrexio/agent-plugin","sha":"c1d654b09a71709c00ca205a12210d868a4ec404","image":"https://raw.githubusercontent.com/sigrexio/agent-plugin/c1d654b09a71709c00ca205a12210d868a4ec404/assets/banner.png","description":"Build, run and manage sigrex.io trading automation (code and AI strategies, trading bots, webhooks and signals across crypto exchanges, DEXs and prediction markets) through the official Sigrex MCP server (Streamable HTTP at https://mcp.sigrex.io, OAuth sign-in, no keys in config), with the sigrex workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables; needs a free Sigrex account. The connection has full account access, including actions that can place live trades. Disclosure — the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha; the bundled skill instructs the agent to confirm before any action that moves money or changes data.","maintainer":"sigrexio","tier":"community","category":"tools","docs_url":"https://docs.sigrex.io/more/mcp-server","version":"1.0.4","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sketch-pad","repo":"https://github.com/aydnOktay/hermes-sketch-pad","sha":"de7cd07ff29666ca1bcc3897f13b39f9472fab55","description":"Draw a shape on a Desktop pad and attach the PNG to the next Hermes chat message. For \"what is this shape\" when you have no photo.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-sketch-pad","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["sketch_pad_last"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"skill-integrity","version":"0.2.1","repo":"https://github.com/ZidoCode/skill-integrity","sha":"352a190b89a91246487107f016c39bb777d8466c","description":"Rug-pull detection for installed agent skills — fingerprints every file in every skill directory (SHA-256), keeps a profile-local snapshot, and reports exactly which skill files changed, appeared, or vanished since; a skill that mutates after install without the user touching it is the rug-pull signal. A skill directory made unreadable is reported as a finding, never treated as clean. Read-only observer, stdlib-only, zero network calls; blind spots (oversize files, symlinks, permission-denied) are counted and printed, never silent. The wrapper registers an hourly pre_llm_call hook that injects findings into the agent context, plus a /skill-integrity slash command (snapshot | check | show) that creates the baseline snapshot and shows the file-level diff. The CLI supports --state-dir to target the plugin's manifest directly. Skill dirs and state derive from get_hermes_home(), covering non-default profiles. Disclosure — reads (hash-only, read-only) every file under the active profile's skills directory and ~/.claude/skills, stores a mode-0600 snapshot in HERMES_HOME/plugin-data/skill-integrity, and at most hourly injects the names of changed skills into the agent's context.","maintainer":"ZidoCode","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/ZidoCode/skill-integrity#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_commands":["skill-integrity"],"provides_middleware":[],"requires_env":[]}},{"name":"skill-retrieval","repo":"https://github.com/moonlight-lupin/agent-skills","sha":"79801c69e797f5f8efd619f8f451ca89d18c7240","subdir":"plugins/skill-retrieval","description":"BM25-based skill retrieval for large skill libraries. An llm_request middleware rewrites the outgoing request's <available_skills> block to names only (the same bytes every turn, so prompt caching is unaffected), and a pre_llm_call hook appends the top-K matching skill descriptions to the current user message. Uses public plugin surfaces only (register_middleware, register_hook); reads SKILL.md frontmatter from the profile's skill roots and imports a few agent.prompt_builder / agent.skill_utils helpers read-only. pyyaml is the only dependency. Disclosure — optional Jev rerank, off by default: with SKILL_RETRIEVAL_RERANK=jev and TYPESAFE_API_KEY set (read from the environment only), each turn POSTs the user message (injection patterns stripped, capped at 2000 chars) and up to 12 shortlisted skill descriptions (400 chars each) to api.typesafe.ai (3 s timeout, no retries, BM25 order kept on error), and appends a local JSONL log (timestamp, session id, 200-char query excerpt, both orders) under $HERMES_HOME/data/jev-trial/, rotated past 5 MB. With the rerank off it makes no network calls and writes no files.","maintainer":"moonlight-lupin","tier":"community","category":"tools","requires_hermes":">=0.21.1","version":"0.6.0","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","on_skill_lifecycle"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"skill-router","repo":"https://github.com/xXLODXx/hermes-skill-router","sha":"445c32f9b274f53bf3d37ce1b37ec1b3e5530ac4","description":"Evidence-based, session-safe skill routing with auditable decisions and opt-in learning","maintainer":"xXLODXx","tier":"community","category":"general","docs_url":"https://github.com/xXLODXx/hermes-skill-router#readme","capabilities":{"provides_tools":[],"provides_hooks":["post_llm_call","post_tool_call","pre_llm_call","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"snag-shelf","repo":"https://github.com/aydnOktay/hermes-snag-shelf","sha":"da1b51c53235010ca161bfda67097bfbc74ae277","description":"Everything that snagged - cross-session shelf of failed tool calls. Full Desktop page, chip, pin, fix-prompt insert. No API keys. Disclosure — stores failed tool-call metadata (tool, truncated args with key-name redaction, error snippet) locally in plugin-data; no network.","maintainer":"aydnOktay","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/aydnOktay/hermes-snag-shelf","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":["snag_shelf_list","snag_shelf_clear"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"snyk","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"abec9e822a23089943dd1d476a104bf746f19f86","subdir":"snyk","description":"Scan code (SAST), dependencies, container images, IaC and SBOMs with Snyk through its first-party MCP server (pinned snyk@1.1306.0 over npx stdio, CLI analytics disabled), with the snyk-security-scan workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/); needs Node.js/npm on PATH and a free Snyk account (browser login via the snyk_auth tool).","maintainer":"NousResearch","tier":"official","category":"tools","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/snyk","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/abec9e822a23089943dd1d476a104bf746f19f86/assets/snyk.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"source-tray","repo":"https://github.com/aydnOktay/hermes-source-tray","sha":"e64f7d2ad56f922410071e2096a40ceab421a392","description":"Session source tray — URLs the Hermes agent opened via web_search, web_extract, or browser_navigate. Desktop pane and /sources. No search backend of its own and no API keys.","maintainer":"aydnOktay","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/aydnOktay/hermes-source-tray","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["source_tray_list","source_tray_clear"],"provides_hooks":["post_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"specstream","repo":"https://github.com/specstream/specstream-tools","sha":"d62eac8deb008f106d6df8036d2724e1a483e0d3","subdir":"plugins/hermes","description":"SpecStream gives Hermes finished lists from the live web: describe the list in plain words and get every matching row with the page it was read from, priced per match with a maximum you approve before anything runs. Portable Agent Plugins v1 package with the hosted MCP server (remote streamable-http, OAuth 2.1 with dynamic client registration) and four skills (compile, review-work, approve-work, continue-work); no Python, no executables, no stored credentials. Disclosure — your request text and your answers to the price are sent to api.specstream.ai; approving a price spends your SpecStream balance (new accounts get $10 free) and the plugin marks its server `untrusted`, so Hermes asks before every call that is not read-only and refuses those calls in unattended runs; a `specstream` server you define in config.yaml replaces the package's and drops that prompt unless you add `trust: untrusted`.","maintainer":"Specstreamai","title":"SpecStream","version":"1.2.0","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://specstream.ai/docs/mcp","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"spectator","repo":"https://github.com/Sahil-SS9/spectator-mode","sha":"a1467ded9802559b30061efe861701d8ec14bcae","description":"Harness-neutral live session sharing, summaries, and branch queries. Disclosure — reads state.db read-only and exposes masked transcripts to invite-token guests on the dashboard; host-approved guest suggestions are injected via ctx.inject_message.","maintainer":"Sahil-SS9","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/Sahil-SS9/spectator-mode","platforms":[],"capabilities":{"provides_tools":["spectator"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"speechify","title":"Speechify","repo":"https://github.com/Speechify-AI/hermes-speechify","sha":"dda896be14ce9ac2be47b006dd78f64ab1aa8870","description":"The official Speechify text-to-speech provider (tts.provider: speechify), maintained by Speechify. Simba 3 voices with low-latency streaming in voice mode, Opus voice notes for messaging platforms, and a hermes speechify command to list voices and hear a test line. Disclosure — sends the text being spoken, the chosen voice and model, the plugin's name and version (Speechify-Caller attribution headers), and your SPEECHIFY_API_KEY to api.speechify.ai (or the base_url / SPEECHIFY_BASE_URL you configure); synthesis is billed to your Speechify workspace; generated audio is written to Hermes's audio cache; no tools, hooks or middleware; no telemetry.","maintainer":"Lokeshm24","tier":"community","category":"voice","requires_hermes":">=0.21.5","docs_url":"https://github.com/Speechify-AI/hermes-speechify#readme","version":"0.1.1","known_issues":["Streaming in voice mode needs Hermes 0.21.6 or newer; 0.21.5 speaks whole sentences instead."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["SPEECHIFY_API_KEY"]}},{"name":"spotify-desktop","repo":"https://github.com/cruzlxyz/hermes-spotify-desktop","sha":"9b564d53c219f9962404dee5f84d3bbb47683897","description":"Spotify Connect remote for Hermes Desktop — status-bar mini player (now playing, transport, volume, devices, search, playlists, queue) reusing the Hermes Spotify login (Spotify Premium required for playback control). Unified agent+desktop package: Electron status-bar player plus a dashboard-API backend (desktop-focused, no web UI). No agent tools; config via plugins.entries.spotify-desktop.settings (poll intervals).","maintainer":"cruzlxyz","tier":"community","version":"0.1.2","category":"desktop","docs_url":"https://github.com/cruzlxyz/hermes-spotify-desktop","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"known_issues":["On Hermes releases where Spotify moved to the `spotify` plugin, the player needs spotify-desktop with cruzlxyz/hermes-spotify-desktop#2 plus `hermes plugins install spotify` (login: `hermes spotify login`); this pin predates that change."]},{"name":"spotify","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"c6f130d195298ace7d0e84bab8efdfa2bcdc57c8","subdir":"spotify","description":"Spotify for Hermes: seven tools (playback, devices, queue, search, playlists, albums, library) over the Spotify Web API, plus `hermes spotify login|status|logout` (loopback PKCE with your own Spotify developer app; Premium needed for playback control). Formerly built into Hermes core; existing users are migrated automatically.","maintainer":"NousResearch","tier":"official","category":"tools","requires_hermes":">=0.21.6","version":"2.0.0","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/c6f130d195298ace7d0e84bab8efdfa2bcdc57c8/assets/spotify.jpg","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/spotify","platforms":[],"capabilities":{"provides_tools":["spotify_playback","spotify_devices","spotify_queue","spotify_search","spotify_playlists","spotify_albums","spotify_library"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"stack","repo":"https://github.com/Karb-Interactive/hermes-plugin-stack-memory","sha":"3b33466a01e9ee0282730d3345937dd8de0bb5bc","version":"0.1.0","description":"Git-backed Markdown memory with background curation and model-based recall. Disclosure — runs a background curation agent with terminal, file-read and patch tools on your configured auxiliary model, fed raw conversation turns; it commits and pushes the memory store to whatever git remotes you configure, and pulls shared submodules at session start; the engine runs via uv run, which fetches pyyaml==6.0.2 from PyPI; an optional dataset file (memory.stack.dataset_enabled, off by default) stores full transcripts locally with no rotation.","maintainer":"vykhovanets","tier":"community","category":"memory","docs_url":"https://github.com/Karb-Interactive/hermes-plugin-stack-memory#readme","homepage_url":"https://github.com/Karb-Interactive/hermes-plugin-stack-memory","image":"https://raw.githubusercontent.com/Karb-Interactive/hermes-plugin-stack-memory/3b33466a01e9ee0282730d3345937dd8de0bb5bc/docs/stack-plugin-flow-banner.webp","capabilities":{"provides_tools":[],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"stalkchain","repo":"https://github.com/StalkC/stalkchain-plugin","sha":"a4db6100f1d031e5f07cd134e93600bfc70c5f78","image":"https://raw.githubusercontent.com/StalkC/stalkchain-plugin/a4db6100f1d031e5f07cd134e93600bfc70c5f78/assets/hermes-banner.png","title":"StalkChain","description":"Crypto research in plain English through the official StalkChain Data MCP server (Streamable HTTP at https://data.stalkchain.com/mcp/directory, OAuth sign-in, no keys in config): check a coin before you buy, vet a trader before you copy them, see what smart money is buying, review a wallet and set price alerts, across Solana, Ethereum, Base, BNB Chain, Monad, Hyperliquid and Robinhood Chain, plus the StonkFun launchpad. Portable Agent Plugins v1 package (mcp.json + 18 skills), no Python or executables; needs a StalkChain account with credits. Read-only: never trades, moves funds or signs anything; the only write is the user's own price alerts, after they confirm. Disclosure — the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha; each tool call sends the tool name and its inputs to data.stalkchain.com and spends the account's credits; price alerts are stored by StalkChain with their destination (account email or a user-given Discord, Slack or Telegram webhook URL, which can embed a bot token) until deleted or fired.","maintainer":"StalkC","tier":"community","category":"tools","docs_url":"https://data.stalkchain.com/docs","version":"1.1.0","screenshots":[],"readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"sticky-notes","repo":"https://github.com/VGFreakXBL/hermes-sticky-notes","sha":"54cd588fe417b9745295a916ab15dd7d2f4fee39","description":"In-window sticky notes for Hermes Desktop.","maintainer":"VGFreakXBL","tier":"community","category":"desktop","version":"0.2.0","docs_url":"https://github.com/VGFreakXBL/hermes-sticky-notes#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"stop-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"604940a4bb6754c571b7562362fe2d1ceac1d741","subdir":"stop-ledger","description":"Local ledger of the turns you stopped while Hermes was still working (/stop, or /new and /reset during a running turn, on messaging platforms, the TUI and the desktop app): /stop-log shows how many running turns were stopped, how many by /stop and by /new, in how many sessions and how long ago the last one was, per platform or per day, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /stop-log recent lists the newest stops (ten, or up to 100 with /stop-log recent 50). Disclosure — writes stop metadata (platform, /stop or /new, Hermes's label for the stop, a 12-digit hash of the session key; no session key or chat content) to plugin-data/stop-ledger/stops.jsonl, trimmed to 5,000 rows past 2 MB; observer only, cannot delay or undo a stop; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/stop-ledger","version":"1.0.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/604940a4bb6754c571b7562362fe2d1ceac1d741/docs/stop-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["agent_loop_stopped"],"provides_middleware":[],"requires_env":[]}},{"name":"storm-fusion-research","repo":"https://github.com/bmtrnavsky/storm-fusion-research-pipeline","sha":"76e322bede3d039632672b833422f0146dce15d6","description":"Human-gated perspective-panel research. One question, several seats, one judge, one human. Solo, native subagent panel, or per-seat MoA/Fusion fanout via the storm_run_panel tool. Disclosure — every seat/judge call runs through Hermes's plugin LLM lane on your own credentials; with llm.allow_provider_override / allow_model_override enabled the agent picks provider and model per seat and spend follows that choice. The human gates are skill instructions to the agent, not enforced by the tool.","maintainer":"bmtrnavsky","tier":"community","category":"tools","version":"0.4.0","requires_hermes":">=0.21","docs_url":"https://github.com/bmtrnavsky/storm-fusion-research-pipeline#readme","image":"https://raw.githubusercontent.com/bmtrnavsky/storm-fusion-research-pipeline/76e322bede3d039632672b833422f0146dce15d6/docs/social-preview.png","capabilities":{"provides_tools":["storm_run_panel"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"stream-speed","repo":"https://github.com/olric3015/hermes-plugins","sha":"d7b48bbe90d18bfdf26ccbf7bd4da6616e7645d6","subdir":"stream-speed","description":"How fast each model starts answering and how fast it writes: /speed shows the median and p90 time to first text and the median characters per second per model, provider or day, or lists the newest streams (ten, or up to 100 with /speed recent 50), for the last 24 hours, any number of hours or days, the latest session or everything recorded, from the streaming hooks. Disclosure — writes per-response stream timings (ids, model, timings, character count, no text) to plugin-data/stream-speed/streams.jsonl, trimmed to 5,000 rows past 2 MB; atexit waits up to 1 s; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/stream-speed","version":"1.4.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/d7b48bbe90d18bfdf26ccbf7bd4da6616e7645d6/docs/stream-speed-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_stream_start","on_stream_delta","on_stream_end"],"provides_middleware":[],"requires_env":[]}},{"name":"stt-vocab","repo":"https://github.com/pierrenode/hermes-stt-vocab","sha":"54e83f9289315af6d47c7c6fdeb5714a08b35262","subdir":"stt-vocab","description":"Puts the names a speech-to-text model mis-hears into the transcription prompt Hermes sends with each voice message: terms you list (globally or per surface) and names found in this profile's memories/USER.md and MEMORY.md, most important last, within the 896 characters Hermes keeps for Whisper-family backends; your stt.prompt stays in front. Notes written in German, Spanish, French, Italian, Dutch, Portuguese or Turkish can be named in the languages setting. Disclosure — register() adds one pre_transcription hook that returns a new prompt string; memory-derived names go only to local backends (faster-whisper, local_command) unless allow_remote is set, and the memory files are not read otherwise; reads at most 256 KB per memory file; no tools, network access, subprocesses or writes; Hermes uploads the prompt with the audio to the configured STT provider.","maintainer":"pierrenode","tier":"community","category":"voice","requires_hermes":">=0.21","docs_url":"https://github.com/pierrenode/hermes-stt-vocab","version":"1.1.0","image":"https://raw.githubusercontent.com/pierrenode/hermes-stt-vocab/6145d065d50f196d51b3ab80fe4a76fb2827c115/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_transcription"],"provides_middleware":[],"requires_env":[]}},{"name":"sugar","repo":"https://github.com/roboticforce/sugar","sha":"eade16940789bc1f927af090f8a3b475e537eddd","subdir":"hermes-plugin","description":"Local-first persistent memory for coding agents. SQLite on your disk - decisions, preferences, error patterns, and guidelines with project and global scopes and guideline-aware search. No cloud, no API key, nothing leaves the machine.","maintainer":"Steven Leggett","tier":"community","category":"memory","requires_hermes":">=0.19","docs_url":"https://github.com/roboticforce/sugar/tree/main/hermes-plugin","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"superlocalmemory","repo":"https://github.com/qualixar/superlocalmemory","sha":"2aeef02a3007c3bdc097b4b00e89c905f1b72289","subdir":"hermes-plugin","description":"Local-first long-term memory for Hermes, kept on your own computer: recall before each turn, tool-outcome logging, opt-in turn capture, 16 skills and /slm commands. Disclosure — talks only to the `superlocalmemory` MCP server you configure and grant in `plugins.entries.superlocalmemory.mcp_allowlist` (on this computer, or on another one with `connection: remote`): each turn's user message (redacted) is sent for recall and every tool call's arguments and result (redacted, up to 2,000 characters each) are logged to it, and with `capture_turns` on every turn is saved; `/slm` commands run the local `slm` CLI, including ones that change SLM and host settings (`/slm upgrade-hosts --apply` writes the plugin's grant into Hermes config.yaml); `slm_agent` starts a child agent that inherits the parent session's tools.","maintainer":"Qualixar","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/qualixar/superlocalmemory/blob/main/docs/hermes.md","version":"4.2.6","title":"SuperLocalMemory","known_issues":["Grant the plugin its memory server after install: slm upgrade-hosts --host hermes --apply (adds mcp_allowlist: [superlocalmemory])."],"capabilities":{"provides_tools":["slm_agent","slm_agent_status","slm_agent_cancel","slm_agent_result"],"provides_hooks":["on_session_start","pre_llm_call","post_tool_call","post_llm_call","on_session_end","on_session_finalize","on_session_reset","on_skill_lifecycle","subagent_start","subagent_stop"],"provides_middleware":[],"requires_env":[]}},{"name":"supermemory","repo":"https://github.com/supermemoryai/hermes-supermemory","sha":"91405dd00fdf2a0b3515b25c25557598f6793299","version":"1.0.1","description":"Supermemory semantic long-term memory provider — profile recall, semantic search, explicit memory tools, and per-turn conversation capture. Maintained by Supermemory; the same provider that shipped in-tree.","maintainer":"supermemoryai","tier":"community","category":"memory","docs_url":"https://github.com/supermemoryai/hermes-supermemory#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["SUPERMEMORY_API_KEY"]}},{"name":"switchbot-control","repo":"https://github.com/TakeshiTGAL/hermes-plugin-switchbot-control","sha":"d0e6f771d8bbf2bb2bfd81ff26bcf5ad93b17885","description":"SwitchBot OpenAPI v1.1, personal use. No Plug Mini on/off. Locks off unless enabled. setPosition only Curtain/Curtain3 (0=open). Disclosure — Controls real devices through the SwitchBot cloud API (api.switch-bot.com) using your SWITCHBOT_TOKEN and SWITCHBOT_SECRET. Every command asks for Hermes approval and is refused under cron, yolo, approvals off and unattended sessions. Lock and door devices stay refused unless you turn on safety_devices. The plugin has no user list of its own: anyone you allow on your Hermes gateway can request a command and approve it. Answering \"always\" adds an unused line to config.yaml each time. The optional watch is a cron job (a model turn every 5 minutes by default) that stays after uninstall until you run unschedule. Not tested on real devices.","maintainer":"TakeshiTGAL","tier":"community","category":"tools","requires_hermes":">=0.21.4","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-switchbot-control#readme","version":"0.1.1","platforms":[],"capabilities":{"provides_tools":["switchbot_devices","switchbot_command","switchbot_watch"],"provides_hooks":[],"provides_middleware":[],"requires_env":["SWITCHBOT_TOKEN","SWITCHBOT_SECRET"]}},{"name":"t3-code-theme","title":"T3 Code Theme","repo":"https://github.com/mariomondev/t3-code-theme","sha":"c84ce92c9223de1a3395e384c6404bf0e07ee2ce","description":"Unofficial port of the standard T3 Code dark theme for Hermes Desktop. Palette, T3 composer, sidebar thread cards with project and branch, model labels and confirm dialogs. Scoped to its own theme; other themes are untouched. Disclosure — unofficial T3 Code lookalike theme; its stylesheet restyles and hides some native Desktop controls, it reads local session metadata (branch, repo, provider) for sidebar cards, and it switches the active theme once on first enable.","maintainer":"mariomondev","tier":"community","category":"desktop","docs_url":"https://github.com/mariomondev/t3-code-theme#readme","version":"0.5.0","image":"https://raw.githubusercontent.com/mariomondev/t3-code-theme/c84ce92c9223de1a3395e384c6404bf0e07ee2ce/docs/banner.jpg","screenshots":["https://raw.githubusercontent.com/mariomondev/t3-code-theme/c84ce92c9223de1a3395e384c6404bf0e07ee2ce/docs/chat.png","https://raw.githubusercontent.com/mariomondev/t3-code-theme/c84ce92c9223de1a3395e384c6404bf0e07ee2ce/docs/empty-chat.png","https://raw.githubusercontent.com/mariomondev/t3-code-theme/c84ce92c9223de1a3395e384c6404bf0e07ee2ce/docs/sidebar.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tabella","repo":"https://github.com/dyiapanis/tabella","sha":"b70f2097e551d16adfc2239ed3340956577aa161","description":"Document lifecycle for agents in one package: create .docx/.xlsx/.pptx/.pdf/.odt/.ods/.odp from structured JSON or raw HTML/CSS, convert between formats via pandoc + LaTeX, and read any document — anydoc (Rust, office formats and text PDFs to Markdown, in-process) with LiteParse + Tesseract OCR fallback for scanned PDFs and images, plus PDF text editing with output-directory guards. Ships as an Agent Plugins v1 package (auto-discovered plugin.json + mcp.json declaring a stdio MCP server — the client spawns it per the v1 lifecycle, PLUGIN_ROOT/PLUGIN_DATA injected — plus an optional self-host streamable-HTTP server; first run of either bootstraps the dependency venv). The HTTP lane binds to 127.0.0.1 only and requires Bearer auth out of the box: a random token is generated into PLUGIN_DATA on first run (TABELLA_TOKEN overrides); requests with an Origin header or a non-JSON body are rejected, and model-supplied HTML cannot fetch network or local-file resources (data: URIs only — the same fetcher now also guards CSS input, not just HTML). Pandoc invocations are argument-safe: extra_args is allowlisted (--toc, --number-sections, -V key=value) and from_format/to_format are validated against the built-in format-name grammar (^[a-z0-9_]+([+-][a-z0-9_]+)*$), closing pandoc's *.lua reader/writer code-exec path; both servers re-exec into the dependency venv after bootstrap. Disclosure — Python deps (python-docx, openpyxl, python-pptx, weasyprint, odfpy, Pillow, lxml, PyMuPDF, firecrawl-anydoc, liteparse — 10 direct packages, transitives included in a 25-package closure) are pinned to exact versions with sha256 hashes in requirements-pinned.txt and installed by scripts/setup.sh with --require-hashes into a venv under PLUGIN_DATA or ~/.venvs/docs; system packages pandoc and texlive-xetex are required for PDF conversion (weasyprint for HTML->PDF); OCR needs the tesseract binary; all conversion, reading, OCR and PDF editing run locally with no network or telemetry; nothing is uploaded; read, convert, and PDF-edit tools access exactly the filesystem paths you pass; doc_create_document additionally containment-checks its output paths against the configured output directory (escape warns). Linux is the tested platform.","maintainer":"dyiapanis","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/dyiapanis/tabella#readme","version":"2.0.1","readme":true,"platforms":["linux"],"capabilities":{"provides_tools":["doc_read","doc_read_meta","doc_convert","doc_create_document","doc_edit_pdf"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tailgate","repo":"https://github.com/c0mrade/tailgate","sha":"1d497b91e249a9fb870a822126204ca055dabdfe","description":"Per-job progress updates in chat for jobs Hermes hands off to other machines (coding agents, CI, scripts), with per-job mute and follow and no model calls.","maintainer":"c0mrade","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/c0mrade/tailgate#readme","version":"0.2.0","platforms":["linux","macos"],"capabilities":{"provides_tools":["tailgate_job_id"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"talaria-webui","repo":"https://github.com/liamsmith86/talaria-webui","sha":"14dbcd48e381558643770d54f644714f89204dc3","subdir":"src/talaria/hermes_plugin","description":"Extends Hermes Agent API capabilities to deliver a richer chat interface with Talaria WebUI. Disclosure — adds API_SERVER_KEY-authenticated /talaria/v1 routes to the Hermes API server (cross-session history search, rewind/branch/compress of API sessions, runs with the profile's instructions and prefill); stores response metadata (no message bodies) in $HERMES_HOME/talaria/observations.db; relies on private api_server/AIAgent internals behind feature detection.","maintainer":"liamsmith86","tier":"community","category":"web","requires_hermes":">=0.21.5","docs_url":"https://github.com/liamsmith86/talaria-webui/tree/14dbcd48e381558643770d54f644714f89204dc3/src/talaria/hermes_plugin","version":"1.5.1","image":"https://raw.githubusercontent.com/liamsmith86/talaria-webui/14dbcd48e381558643770d54f644714f89204dc3/.github/assets/social-preview.jpg","screenshots":["https://raw.githubusercontent.com/liamsmith86/talaria-webui/14dbcd48e381558643770d54f644714f89204dc3/.github/assets/demo-desktop.gif","https://raw.githubusercontent.com/liamsmith86/talaria-webui/14dbcd48e381558643770d54f644714f89204dc3/.github/assets/demo-mobile.gif"],"readme":true,"platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":["pre_api_request","post_api_request","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"tam","repo":"https://github.com/vbcherepanov/hermes-tam-memory","sha":"9a6e51839fb0619c6e41804ac201272e857ea825","subdir":"hermes_tam_memory","version":"0.1.1","description":"Local-first long-term memory backed by total-agent-memory (TAM) over MCP — saves each completed turn (with a noise filter; TAM's quality gate applies), recalls relevant memories before each turn within a token budget, and adds tam_recall / tam_save tools; optional TAM team server for shared company memory. Disclosure — local mode starts the separately installed tam binary as a child process per session with an allowlisted environment that carries no credentials: Hermes provider keys (including HF_TOKEN and OLLAMA_API_KEY), TAM_API_TOKEN and any *_TOKEN / *_API_KEY / *_SECRET / *_PASSWORD variable are withheld, and of HF_* / OLLAMA_* only non-secret settings pass (OLLAMA_URL, OLLAMA_EMBED_MODEL, HF_HOME, HF_HUB_OFFLINE); it stores user/assistant turn text plus built-in memory additions (not tool output) in TAM's store, by default outside HERMES_HOME and shared with other agents using TAM; remote mode sends the same text to the user-configured URL with an optional TAM_API_TOKEN bearer token; hermes memory setup tam writes tam.json, TAM_API_TOKEN to .env and memory.provider in config.yaml.","maintainer":"vbcherepanov","tier":"community","category":"memory","requires_hermes":">=0.21.4","docs_url":"https://github.com/vbcherepanov/hermes-tam-memory#readme","readme":true,"platforms":["linux","macos"],"capabilities":{"provides_tools":["tam_recall","tam_save"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tamahermes","repo":"https://github.com/ahrazzle/TamaHermes","subdir":"plugins/tamahermes","sha":"d25f76fdf5d8032910ffbe1dca3ba00bf442061f","description":"Grow a local TamaHermes pet from real Hermes agent activity. Disclosure — hooks write a pet ledger and sprite atlas under $HERMES_HOME only; the optional python -m tamahermes CLI additionally reads/writes ~/.codex, ~/.petdex and ~/.evopet, runs an unauthenticated loopback preview server (127.0.0.1:8765) and on macOS compiles a Swift overlay and installs a RunAtLoad+KeepAlive LaunchAgent with no uninstall command. No network egress, no credential reads.","maintainer":"ahrazzle","tier":"community","category":"general","requires_hermes":">=0.21","docs_url":"https://github.com/ahrazzle/TamaHermes","version":"1.2.3","readme":true,"platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_start","pre_llm_call","post_tool_call","post_api_request","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"tameru","title":"Tameru","repo":"https://github.com/0xWhiteMage/hermes-tameru-plugin","sha":"5a19df4af88b848adc29d7170182e226c0700dec","subdir":"hermes_tameru_plugin","version":"1.5.0","description":"Big tool outputs, kept small, nothing lost: old tool results shrink to the lines that matter and every distinct error, and the tameru_expand tool brings back the exact original. Deterministic and local, with no LLM calls. Disclosure — Subclasses Hermes's built-in ContextCompressor and overrides its private prune/demote methods (checks their shape at startup and falls back to stock compaction when they change). Unless you set compression.proactive_prune_tokens yourself, turns on proactive tool-result pruning with a trigger scaled to the model's context window, and after each prune shortens Hermes's re-prune runway. Adds a model-callable tameru_expand tool that returns pruned tool output from memory or from this session's archive (web, browser and MCP output stays wrapped as untrusted data); complex regex greps run in a short-lived local Python child process. No network calls; the render log is off by default.","maintainer":"0xWhiteMage","tier":"community","category":"general","docs_url":"https://github.com/0xWhiteMage/hermes-tameru-plugin","image":"https://raw.githubusercontent.com/0xWhiteMage/hermes-tameru-plugin/5a19df4af88b848adc29d7170182e226c0700dec/docs/assets/hero.png","platforms":["linux"],"known_issues":["Full archive recovery requires plugins.isolation to be in_process; host mode limits recovery.","Overrides private ContextCompressor signatures and falls back when the host contract changes."],"capabilities":{"provides_tools":["tameru_expand"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.7"},{"name":"teamorouter","title":"TeamoRouter","repo":"https://github.com/2867297362mjb-sketch/hermes-provider-teamorouter","sha":"9260c9a0e7c433b7cbb51bd07128de7f2627c829","subdir":"teamorouter","description":"TeamoRouter as Hermes model providers on one key: `teamorouter` serves Claude models over TeamoRouter's native Anthropic Messages API (so Hermes' Anthropic prompt caching and thinking apply), and `teamorouter-openai` serves GPT, Gemini, DeepSeek, GLM and Grok models over its OpenAI-compatible API. Each /model picker lists that side's tool-capable chat models from TeamoRouter's public catalog, leaving out image, service-tier and free-tier variants, and context windows come from the same catalog. Maintained by TeamoRouter. Disclosure — registers two model providers at import and nothing else (no tools, hooks, commands or threads). Prompts, tool schemas and TEAMOROUTER_API_KEY go to https://api.teamorouter.com (/v1/messages and /v1/chat/completions) through Hermes' own clients, and TeamoRouter forwards each request to the upstream vendor serving the model. The plugin's own request is GET https://api.teamorouter.com/v1/models/pricing, a public endpoint, sent without the key and cached for an hour. `teamorouter-openai` requests carry a fixed `X-Client-Source: hermes-teamorouter-plugin` header (via the profile's default_headers), used only to count traffic from this plugin; Claude requests carry no header from the plugin. No telemetry, no files read or written, no stored credentials, no processes.","maintainer":"TeamoRouter","tier":"community","category":"models","requires_hermes":">=0.21.5","docs_url":"https://github.com/2867297362mjb-sketch/hermes-provider-teamorouter#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TEAMOROUTER_API_KEY"]}},{"name":"telegram-client","title":"Telegram Client","repo":"https://github.com/guberm/hermes-telegram-desktop-plugin","sha":"5c2a3f353b74b66a2e1b9b48c4be15b60bda74ac","subdir":"plugins/telegram","description":"Telegram client pane for Hermes Desktop: dialogs, message history with image previews and per-post image reload, forum topics, and reviewed send/reply/save/delete/mark-as-read actions via a dedicated Telethon user session (separate from the core gateway bot token). All history is sanitized before rendering. Disclosure — the profile dashboard backend reads dialogs and message history and downloads media for in-page previews (page byte-budgeted and cached in memory); TELEGRAM_API_ID/TELEGRAM_API_HASH come from the profile's Hermes secrets; login challenges stay in process memory; the dedicated Telethon session lives in HERMES_HOME/telegram-plugin-auth/ (directory 0700, .session and its -wal/-shm sidecars 0600), and anyone holding that session file controls the Telegram account; delete removes the selected message for everyone; mutations go prepare -> exact preview -> confirm -> commit -> readback, and the pane's \"Confirm actions\" switch (on by default) can turn the preview step off; message links open in the system browser (http and https only).","maintainer":"guberm","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/guberm/hermes-telegram-desktop-plugin","version":"1.3.1","platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"telegram-notify","repo":"https://github.com/madpower2000/hermes-telegram-notify","sha":"d7cab7dfb154425118129b0086032e873a832576","description":"Remote Telegram lifecycle notifications for the main Hermes agent: turn start, completion with a bounded final answer, interruption/failure, and user-facing approval requests. Suppresses subagent, Telegram-origin lifecycle, and automatic/smart-approval noise. Outbound-only, no input channel. Disclosure — enabled by default once installed and reuses the core Telegram gateway's TELEGRAM_BOT_TOKEN and TELEGRAM_HOME_CHANNEL when present, so each main-agent turn's final answer (up to 3,200 chars) and approval-request command text (up to 700 chars) from CLI, Desktop and eligible gateway platforms are sent to api.telegram.org for delivery to that one chat; Telegram-origin lifecycle and approval-prompt copies (and, when notify_on_approval_response is enabled, Telegram-origin approval-response copies) are suppressed because the core Telegram gateway already delivers them in that chat; token and state are stored 0600 under HERMES_HOME/telegram-notify.","maintainer":"madpower2000","tier":"community","category":"automation","requires_hermes":">=0.21.5","docs_url":"https://github.com/madpower2000/hermes-telegram-notify","version":"1.1.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_llm_call","on_session_end","pre_approval_request","post_approval_response"],"provides_middleware":[],"requires_env":[]}},{"name":"telegram-stickers","title":"Telegram Stickers","repo":"https://github.com/churnast/hermes-telegram-stickers","sha":"210ce860a06ed24b87f34d9c418f544d2afde4f0","description":"Lets your agent answer in Telegram with a sticker, the way a person reacts to a joke or good news: four default packs made by Telegram out of the box, then packs you list or send the bot in a direct chat; picked by emoji or by meaning, sent as a reply in the current chat and forum topic, paced per chat, with a per-chat off switch the agent cannot undo. Pace and packs can be set in words in your direct chat. Disclosure: calls only the Telegram Bot API (api.telegram.org or the configured api_base) with the gateway's TELEGRAM_BOT_TOKEN, read through Hermes' secret scope: getStickerSet for the packs in use (during the first-run setup also from a short background thread, only for a sender Hermes answers, at most 32 at once), sendSticker, and getFile plus one download per sticker for /stickers describe, which the owner starts and which sends each sticker image to the vision model configured in Hermes. A native Telegram handler sees stickers sent to the bot in direct chats (not in groups), skips forwarded ones and keeps pack name, sticker kind and sender id in memory for up to an hour; everyone the bot answers in a direct chat can add packs, up to max_learned_packs in all (default 100, 0 for no limit; learn_packs: false turns learning off). A pre_llm_call hook appends fixed text to the user message of Telegram turns: a sticker hint of about 540 characters, a settings note of about 310 characters when the message mentions stickers, or a setup paragraph during the first-run setup. Writes catalog.json, descriptions.json and state.json under plugin-data/telegram-stickers/ and reads Hermes' sticker_cache.json. No middleware: the sticker tools run through Hermes like any tool. Uses Hermes functions outside the plugin API (tools.vision_tools.vision_analyze_tool, gateway.session_context.get_session_env) and reads the call stack to tell the local CLI or TUI from other callers of /stickers. No shell commands, telemetry or self-update. Anyone the bot answers in a direct chat counts as the owner: they can change pacing, packs, banned stickers and per-chat on/off; the off switch the agent cannot undo holds in groups only.","maintainer":"churnast","tier":"community","category":"tools","requires_hermes":">=0.20.6","docs_url":"https://github.com/churnast/hermes-telegram-stickers#readme","version":"1.2.0","image":"https://raw.githubusercontent.com/churnast/hermes-telegram-stickers/210ce860a06ed24b87f34d9c418f544d2afde4f0/docs/card.png","screenshots":["https://raw.githubusercontent.com/churnast/hermes-telegram-stickers/210ce860a06ed24b87f34d9c418f544d2afde4f0/docs/screenshots/03-paced-like-a-person.png","https://raw.githubusercontent.com/churnast/hermes-telegram-stickers/210ce860a06ed24b87f34d9c418f544d2afde4f0/docs/screenshots/05-owner-commands.png"],"platforms":["linux","macos","windows"],"known_issues":["Needs plugins.isolation: in_process (the default). Under plugins.isolation: host it cannot see the current chat, so it sends no stickers, learns no packs and adds no hint.","Every person the bot answers in a direct chat adds packs (up to max_learned_packs, default 100), which the agent then uses in every chat. Keep the gateway allowlist to yourself, or set learn_packs: false.","Before Hermes 0.21.5, /stickers in Telegram only shows the status and reloads packs; the owner's other /stickers commands work in the Hermes CLI on the server.","Where tool progress is on, Hermes posts its progress line (such as telegram_sticker_send...) before a sticker; display.platforms.telegram.tool_progress: off hides every tool's lines in Telegram."],"capabilities":{"provides_tools":["telegram_sticker_find","telegram_sticker_send","telegram_sticker_mute","telegram_sticker_settings"],"provides_hooks":["pre_llm_call"],"requires_env":["TELEGRAM_BOT_TOKEN"]}},{"name":"telegram_dashboard_probe","title":"Telegram Dashboard","repo":"https://github.com/bablobanov/hermes-agent-telegram-dashboard","sha":"a2bac7cb336d4bd6e95c2f5f5d295317e69a5589","subdir":"plugin/telegram_dashboard_probe","description":"One pinned Telegram message with the state of your Hermes on one phone screen: gateway, backup, config drift, the cron ticker and its jobs, whether the Telegram channel is deaf, whether the agent sees its rules and whether its memory writes stand unapproved, account limits and version. Read-only, no LLM calls, nothing to press. Disclosure — Claude and Codex limits come from Hermes' own account-usage fetcher, called every tick (which, like /usage, may refresh OAuth tokens through Hermes' own auth code); at most once per limits_refresh_seconds (default 900 s) the Grok weekly pool is read from https://cli-chat-proxy.grok.com/v1/billing and /v1/settings with the xai-oauth token Hermes resolves (which, like any Hermes request to xAI, may refresh that OAuth token and save it to auth.json, or clear a dead one, through Hermes' own auth code), sending the header x-xai-token-auth xai-grok-cli that identifies the request as the Grok CLI (an undocumented xAI host Hermes itself does not use), and Kimi Code windows from the kimi-coding base URL /v1/usages with the kimi-coding key Hermes resolves (which, like any Hermes key lookup without a usable key in .env or the environment, may save Hermes' credential pool back to auth.json once when loading it changes something, e.g. a placeholder key in .env) and a User-Agent of claude-code/0.1.0 (undocumented provider surfaces), and up to four operator-configured limits_sources, if set, each with one GET to http on loopback only (127.0.0.1, localhost or ::1), with no proxy and no redirect, optionally sending Authorization: Bearer with the value of an environment variable the operator names (never a *_BOT_TOKEN one); every tick the tail of HERMES_HOME/logs/errors.log (the last 256 KB; the whole file, up to 4 MB, until the first successful read) is read for Gemini HTTP 429 lines, of which only the time, limit, retry and model are kept, and for the engine's own 'Failed to send Telegram message' lines, of which only the time is kept, never the message text; with a memory provider configured, the last 256 KB of the same log are also read for the engine's warnings about that provider, of which only the time and whether one says unavailable are kept; every tick HERMES_HOME/cron/jobs.json is read for each job's id, name, enabled flag, state, times, status and failure streak (never prompt, script, deliver, skills or the model) and the ticker's marker files for their epoch, and HERMES_HOME/cron/executions.db is opened read-only (sqlite3 mode=ro with PRAGMA query_only, in a worker under the tick's deadline) for the job_id, status, delivery_outcome and time columns of failed or undelivered runs, never the error column; the engine's error texts are reduced to the kind of the error in a word and never reach the screen or the record; the connected Telegram adapter's public property send_path_degraded is read every tick, and, as a capability and not a contract, four private attributes of the live adapter object (_updates_received_total, _polling_generation, _polling_last_progress_monotonic, _polling_generation_started_monotonic) are read as attributes, nothing is called on it, and an adapter without them shows no data for that line; every tick HERMES_HOME/state.db is opened read-only the same way for the newest saved system prompt of each platform the running gateway lists in HERMES_HOME/gateway_state.json, and the project context files the engine would load (.hermes.md or HERMES.md in that directory and each parent up to the git root, the AGENTS.override.md / AGENTS.md / agents.md chain from the git root down, CLAUDE.md, .cursorrules and .cursor/rules/*.mdc; up to 4 MB each, links followed as the engine follows them) are read from the directory that prompt names (else the engine's TERMINAL_CWD or the gateway's working directory), and .hermes.md, HERMES.md and the AGENTS names also from the gateway's working directory and HERMES_HOME, which may be outside HERMES_HOME; to tell whether the prompt carries them as they are on disk; only a verdict, the file names, sizes and times are kept, never the prompt's or a file's text; every tick HERMES_HOME/memories/MEMORY.md and USER.md (up to 4 MB each) are read to count their characters against the limits, the waiting writes in HERMES_HOME/pending/memory and pending/skills (up to 2,000 files) for their names and times and, of the memory ones (up to 256 KB each), each add's target and length, and the time of HERMES_HOME/skills/.curator_ledger.jsonl; never a notebook's, an entry's or a waiting write's text, and nothing there is written; the private hermes_cli.version_info._cached_version_info and the signature of agent.prompt_builder._read_text_with_timeout are read from modules the gateway already imported, and nothing is called or changed on them; the release check keeps only each release's version and publication time and downloads, installs or replaces nothing; config.yaml is read through Hermes' own YAML parser for the memory limits, switches, approval gate and provider name, skills.write_approval and each platform's skip_context_files; the plugin's own code never reads the Telegram bot token and never writes vendor credential files (Hermes' auth code it calls for Grok and Kimi may, as said above), and no request the plugin's own code sends with a token in a header follows a redirect; the latest Hermes release is read from api.github.com without a token at most once per 15 minutes (releases/latest with the last answer's ETag; the release list releases?per_page=100 only when Latest names another version); an operator-configured drift_command, if set, runs as a subprocess; the delivery record is written under HERMES_HOME/plugin-data/.","maintainer":"bablobanov","tier":"community","category":"automation","requires_hermes":">=0.21.1","docs_url":"https://github.com/bablobanov/hermes-agent-telegram-dashboard#readme","version":"0.11.0","image":"https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/682e20b4664c8e70f51faa9db5f89e42c24f0c0c/docs/social-preview.jpg","screenshots":["https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/8ccf906b00fa5000a12738a76808cc76315fd64a/docs/screenshots/01-healthy.png","https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/8ccf906b00fa5000a12738a76808cc76315fd64a/docs/screenshots/02-healthy-details.png","https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/8ccf906b00fa5000a12738a76808cc76315fd64a/docs/screenshots/03-memory.png","https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/8ccf906b00fa5000a12738a76808cc76315fd64a/docs/screenshots/04-new-release.png","https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/8ccf906b00fa5000a12738a76808cc76315fd64a/docs/screenshots/05-rules.png"],"platforms":[],"known_issues":["Requires in-process plugin execution: the Telegram handler factory receives the platform's native SDK client, which plugins.isolation: host does not allow; under host the plugin does not load and nothing is delivered."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"telnyx-provider","repo":"https://github.com/team-telnyx/hermes-inference-provider","sha":"f53c20e80f84b4a880a7f2b4f1ed2f8b3fa1d11c","description":"Vendor-maintained Telnyx inference provider with an authenticated live model catalog, hosted open models, frontier routes, and catalog-derived pricing.","maintainer":"team-telnyx","tier":"community","category":"models","requires_hermes":">=0.21.4","docs_url":"https://github.com/team-telnyx/hermes-inference-provider#readme","version":"0.1.0","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TELNYX_API_KEY"]}},{"name":"thomas","repo":"https://github.com/keppy/hermes-plugin-thomas","sha":"b087cf158905e62b16c02e7bb1aa38691186ea6b","description":"Fine-tune a small calibrated encoder classifier on Modal and rate it with gonogo. Every GPU launch goes through the human approval gate with the exact config shown; data checks and evaluation run locally for free. Disclosure — thomas_encoder_train spends the user's Modal GPU credits and uploads the chosen training JSONL rows to Modal after the human approval gate; the base model is downloaded from Hugging Face on the Modal side. Training and inference run in a separate Python interpreter the user configures via THOMAS_PYTHON (with the author's thomas package, torch and modal installed); the Hermes venv only gets gonogo-eval. Runs and artifacts are written under HERMES_HOME/thomas/runs; the eval tool writes report files to the path the model supplies.","maintainer":"keppy","tier":"community","category":"tools","requires_hermes":">=0.21","platforms":["linux","macos"],"version":"0.1.2","docs_url":"https://github.com/keppy/hermes-plugin-thomas#readme","capabilities":{"provides_tools":["thomas_check_data","thomas_encoder_train","thomas_run_status","thomas_encoder_eval"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"time-gap","repo":"https://github.com/Randool/time-gap","sha":"bc5e65503a412808029573a98b6008387a0ac2f6","description":"Inject an implicit time-gap sense only when a gap or a date rollover crosses.","maintainer":"Randool","tier":"community","category":"general","docs_url":"https://github.com/Randool/time-gap#readme","capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":[]}},{"name":"tinyfish","repo":"https://github.com/tinyfish-io/tinyfish-web-agent-integrations","sha":"1172d9ceac8acda0b722f8d16ce8b27422a11906","subdir":"hermes","description":"First-party TinyFish plugin: free Search and Fetch as a web provider, plus credit-gated remote Browser sessions and the tinyfish_agent web agent. Disclosure — sends search queries, URLs to fetch and tinyfish_agent goals with your TINYFISH_API_KEY to the TinyFish API (*.tinyfish.ai). Browser sessions and tinyfish_agent runs spend TinyFish credits. Under the default `request` policy each one goes through Hermes's approval prompt first (a session/always answer covers every later call; cron and unattended runs are denied unless you allow them). Setting `tinyfish.credit_policy.<feature>: allow` or YOLO skips the prompt. `hermes tinyfish setup` / `browser enable` (run by you) save the key to Hermes .env, set web.search_backend/extract_backend and browser.cloud_provider in config.yaml, enable the web/browser toolsets, and can install the agent-browser CLI after asking.","maintainer":"tinyfish-io","title":"TinyFish","version":"0.2.2","tier":"community","category":"web","requires_hermes":">=0.19","docs_url":"https://docs.tinyfish.ai","capabilities":{"provides_tools":["tinyfish_agent"],"provides_hooks":["pre_tool_call","pre_llm_call","on_session_finalize"],"provides_middleware":[],"requires_env":["TINYFISH_API_KEY"]}},{"name":"titanos-mcp","repo":"https://github.com/guilherme-vasques-ltda/hermes-plugin-titanos","sha":"ba06280cd28fdfd6029d8f58c987076fb8677745","description":"Connect Hermes to Titanos marketplace, Amazon, listings, Ads, and product research tools through the pinned Titanos OAuth MCP client. This portable Agent Plugin v1 package bundles seven operating skills, requires Node.js 20.18.1 or newer, and uses browser authorization with a Titanos account. Disclosure — starts the npm package @titanos/mcp-agents@1.47.2 via npx (fetched from npm on first run); its tools read and WRITE live marketplace/Ads accounts under your Titanos OAuth session.","maintainer":"Titanos","tier":"community","category":"tools","version":"0.3.0","docs_url":"https://github.com/guilherme-vasques-ltda/hermes-plugin-titanos","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"token-cost-meter","repo":"https://github.com/IT-dreamer/token-cost-meter","sha":"18fbc2c15d3ddd1c3784e0f83feec314ac686152","description":"Live token usage, model-aware USD cost and prompt-cache savings in the Hermes Desktop status bar, with a persistent per-day ledger that survives restarts. Disclosure — Desktop only; no network calls of its own (prices come from the gateway's model.options and a bundled models.dev rate table); stores per-day token totals, per-session counters and last-known rates in its own Desktop plugin storage; costs are list-price estimates, not billing data.","maintainer":"IT-dreamer","tier":"community","category":"desktop","version":"1.0.0","requires_hermes":">=0.21.6","docs_url":"https://github.com/IT-dreamer/token-cost-meter#readme","screenshots":["https://raw.githubusercontent.com/IT-dreamer/token-cost-meter/18fbc2c15d3ddd1c3784e0f83feec314ac686152/image/statusbar-chip-en.png","https://raw.githubusercontent.com/IT-dreamer/token-cost-meter/18fbc2c15d3ddd1c3784e0f83feec314ac686152/image/session-pane-en.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tokenwatch","repo":"https://github.com/0xBernard/tokenwatch","sha":"b06c293e254d7af6d889fdfa07934a9fc5ca38a7","description":"Monitor Hermes token usage, notify at thresholds, and freeze tool/gateway activity at configured limits.","maintainer":"0xBernard","tier":"community","category":"general","docs_url":"https://github.com/0xBernard/tokenwatch#readme","capabilities":{"provides_tools":[],"provides_hooks":["on_session_end","on_session_start","post_api_request","pre_api_request","pre_gateway_dispatch","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"tokstat","repo":"https://github.com/heerey525/tokstat","sha":"5c11db13bd8ddba5fb958f07bce564efd947ce71","description":"Live token usage in the Hermes Desktop status bar: cumulative total, a real-time this-turn counter, last-turn delta, context occupancy, and prompt-cache hit rate. Event-driven (no polling, no RPC); English and Chinese, follows the app locale.","maintainer":"heerey525","tier":"community","category":"desktop","version":"1.0.1","docs_url":"https://github.com/heerey525/tokstat#readme","requires_hermes":">=0.20.2","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tool-slimmer","repo":"https://github.com/aliasocracy/hermes-tool-slimmer","sha":"1b90aa592f7423233ea6cdfd44c7188e14ca7ccf","description":"Reduce Hermes tool-schema overhead and show selector savings in the dashboard. Disclosure — optional mode jev (off by default; needs TYPESAFE_API_KEY) sends each turn's request text and up to 32 candidate tool names and descriptions to TypeSafe (api.typesafe.ai); all other modes run locally. Optional user-run scripts can patch Hermes core on older Hermes and install a systemd user self-heal unit; the dashboard advisor edits the tool_slimmer section of config.yaml with a backup.","maintainer":"aliasocracy","tier":"community","category":"tools","requires_hermes":">=0.19","docs_url":"https://github.com/aliasocracy/hermes-tool-slimmer#readme","version":"0.8.0","capabilities":{"provides_tools":["tool_slimmer_hydrate_tools","tool_slimmer_request_full_tools","tool_slimmer_select","tool_slimmer_status"],"provides_hooks":["pre_llm_call"],"provides_middleware":["llm_request"],"requires_env":[]}},{"name":"toolaria","repo":"https://github.com/Sahil-SS9/Toolaria","sha":"667df67ef5bd23160b1b87a93ebf895c122b6b17","description":"Rescues oversized MCP and web tool results before they flood context.","maintainer":"Sahil-SS9","tier":"community","category":"tools","requires_hermes":">=0.21","docs_url":"https://github.com/Sahil-SS9/Toolaria","platforms":[],"capabilities":{"provides_tools":["rescuer_fetch"],"provides_hooks":["transform_tool_result","on_session_start","on_session_end"],"provides_middleware":["tool_request"],"requires_env":[]}},{"name":"touchdesigner","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"abec9e822a23089943dd1d476a104bf746f19f86","subdir":"touchdesigner","description":"Drive a live TouchDesigner session through the twozero MCP server (Streamable HTTP on 127.0.0.1:40404), with the touchdesigner-mcp workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/); TouchDesigner itself runs on macOS/Windows.","maintainer":"NousResearch","tier":"official","category":"tools","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/touchdesigner","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/abec9e822a23089943dd1d476a104bf746f19f86/assets/touchdesigner.jpg","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"tsubasa","repo":"https://github.com/PalmAndWand/tsubasa-integrations","sha":"ce52a9cdfae352a339ddf3ff219c6ec06f552bc3","subdir":"providers/hermes","description":"Tsubasa OpenAI-compatible model provider (tool calling not supported yet). Disclosure — sends prompts and your TSUBASA_API_KEY to api.tsubasa.sh, operated by PalmAndWand; the API currently serves Canada only and answers HTTP 451 to requests from elsewhere.","maintainer":"PalmAndWand","tier":"community","category":"models","docs_url":"https://github.com/PalmAndWand/tsubasa-integrations#readme","readme":false,"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TSUBASA_API_KEY"]}},{"name":"ttsbuddy","title":"TTS Buddy","repo":"https://github.com/ngelik/ttsbuddy-cli","sha":"cb7af8ab874ab4643041a12cb6723c24ea787a66","subdir":"plugins/hermes-ttsbuddy","description":"Native TTS Buddy speech provider using the existing TTS Buddy CLI, with offline voice selection, MP3 generation, Hermes voice-message conversion and exact-job recovery, plus terminal-only account deletion through CLI 0.16.0+. Disclosure — runs the user-installed `ttsbuddy` CLI (argument array, speech text on stdin), which sends the text and voice settings to TTS Buddy, downloads the hosted audio and uses the account's quota. Credentials come from the profile's `TTSBUDDY_API_KEY` secret or, when the user selects `cli_config_dir`, from that CLI profile's own saved login, which the CLI may read and update. The model-callable `ttsbuddy_recover` tool downloads an existing job to a new MP3 path the model chooses (never overwrites). The terminal command `hermes ttsbuddy account delete` can permanently delete the TTS Buddy account, its hosted files and identity, and cancel subscriptions, after `--yes` and a fresh email code entered at a hidden prompt or protected stdin.","maintainer":"ngelik","tier":"community","category":"voice","requires_hermes":">=0.21.7","docs_url":"https://www.ttsbuddy.com/docs/developers/hermes-plugin","version":"0.2.0","readme":true,"platforms":["linux","macos"],"known_issues":["Account deletion is terminal-only, requires CLI 0.16.0+ and an explicit persistent cli_config_dir; speech credentials do not authorize deletion.","Use fresh unique output filenames/stems: successful Hermes delivery and same-stem Opus conversion can replace files outside the provider's no-clobber checks.","MP3 source audio only; no PCM streaming. A local timeout does not cancel an accepted hosted job; use ttsbuddy_recover with the exact job ID."],"capabilities":{"provides_tools":["ttsbuddy_recover"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"turn-bell","repo":"https://github.com/BrokeSkill/turn-bell","sha":"b39808efe7eef1528679661ebda902c9b632a438","description":"A bell in the Hermes desktop composer that pings the ntfy topic Hermes already uses when a turn finishes. Click to cycle off, current turn, or all turns. Disclosure — when enabled, posts the first line of each finished reply plus model, duration, token and cost figures to the ntfy server/topic Hermes is configured with (default ntfy.sh); reads NTFY_* from the profile .env and falls back to the ntfy CLI's ~/.config/ntfy/client.yml login (read-only).","maintainer":"BrokeSkill","tier":"community","category":"desktop","version":"1.0.1","requires_hermes":">=0.21.5","image":"https://raw.githubusercontent.com/BrokeSkill/turn-bell/b39808efe7eef1528679661ebda902c9b632a438/assets/demo-modes.gif","platforms":["linux","macos","windows"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"turn-usage","repo":"https://github.com/tpte/hermes-turn-usage","sha":"728cea2b267af6f4bbc59707fb886d7df10a39e4","description":"Usage and cost footer appended to every reply — tokens, cache hit rate, cost and context occupancy, plus a per-tool time breakdown showing which tool actually consumed the wall clock. Waiting time (a blocking user prompt) is reported separately and excluded from the active-time denominator. Pure computation, never calls a model; any failure leaves the reply untouched. Disclosure — the usage footer is appended to the stored assistant reply, so it is replayed to the model on later turns and adds tokens to every turn.","maintainer":"tpte","tier":"community","category":"general","docs_url":"https://github.com/tpte/hermes-turn-usage#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"twenty-crm","repo":"https://github.com/TREE-Ind/hermes-twenty-crm","sha":"3d87c1634e4b159738b35954ac4efc15c876d46d","description":"Twenty CRM for Hermes Agent with managed self-hosting, external-instance connectivity, REST, GraphQL, and live schema introspection.","maintainer":"TREE-Ind","tier":"community","category":"tools","docs_url":"https://github.com/TREE-Ind/hermes-twenty-crm#readme","capabilities":{"provides_tools":["twenty_describe_workspace","twenty_graphql","twenty_rest","twenty_schema"],"provides_hooks":["on_session_start","pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"typesafe-skill-router","repo":"https://github.com/DECRUX9812/typesafe-skill-router","sha":"e6cdac26f9ed588b4a94b8a2f7f9f026e1b9faf3","description":"TypeSafe (Jev) skill routing: the request is routed before the model call and the one skill from the live roster that fits it is named in a single <skill_relevance> line on the user message — nothing is injected when nothing fits.","maintainer":"DECRUX9812","tier":"community","category":"automation","requires_hermes":">=0.21","docs_url":"https://github.com/DECRUX9812/typesafe-skill-router#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":["TYPESAFE_API_KEY"]}},{"name":"umt","repo":"https://github.com/Markgatcha/universal-mcp-toolkit","sha":"b6eb997c316de472318ca658d6d7b57b62ca13d0","subdir":"plugin","description":"Connect 28 production-ready MCP servers to any coding agent. Portable Agent Plugins v1 package (mcp.json + skills/): three zero-config stdio servers out of the box (Hacker News, arXiv, npm registry, each pinned to an exact npm version), plus the umt-mcp skill that drives the umt CLI to wire any of the 28 servers into Claude Code, Cursor, Codex, Windsurf, Zed and more. Needs Node.js and npm on PATH.","maintainer":"Markgatcha","tier":"community","category":"tools","docs_url":"https://github.com/Markgatcha/universal-mcp-toolkit#readme","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"unbrowse","repo":"https://github.com/unbrowse-ai/unbrowse","sha":"a82c59dfb05583836ecfa21fdc3f8a2ea73bfb76","subdir":"plugins/hermes","description":"Unbrowse: websites as APIs. Read any page as clean markdown, run tasks on sites through learned first-party APIs (no browser), and drive a cloud browser with saved logins when nothing matches. Also a web_extract backend and a guard that routes public-web browser_* calls to Unbrowse. Disclosure — hosted service: page URLs, task text and tool arguments are sent to unbrowse.ai with your API key, pages are fetched and site logins are stored on Unbrowse's side, and verified calls bill the Unbrowse account; once UNBROWSE_API_KEY is set the plugin blocks the built-in browser_* tools and web_extract on public URLs by default (settings blockBrowser/blockWebExtract, or UNBROWSE_ALLOW_BUILTIN_BROWSER=1).","maintainer":"unbrowse-ai","tier":"community","category":"web","docs_url":"https://github.com/unbrowse-ai/unbrowse/tree/main/plugins/hermes","version":"12.1.0","capabilities":{"provides_tools":["unbrowse_canvas_read","unbrowse_canvas_put","unbrowse_run","unbrowse_inspect","unbrowse_resume","unbrowse_cancel","unbrowse_learn","unbrowse_browse_open","unbrowse_browse_snapshot","unbrowse_browse_act","unbrowse_forget","unbrowse_credentials_list","unbrowse_credentials_request","unbrowse_credentials_status","unbrowse_browse_finish","unbrowse_browse_close","unbrowse_scrape","unbrowse_map","unbrowse_sites","unbrowse_credits","unbrowse_usage","unbrowse_index","unbrowse_index_status","unbrowse_discover"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":["UNBROWSE_API_KEY"]}},{"name":"unitares","repo":"https://github.com/cirwel/unitares-host-adapter","sha":"bf534cf031593f785b6022f0edf0fc594c2aa912","description":"Records each Hermes session on a UNITARES server you run: one identity per session and one check-in per completed turn, so the agent's working record carries across sessions. Fail-open; never blocks the agent. Disclosure — sends only to the server named in UNITARES_MCP_URL, which you host; there is no default server. Per session it sends your model name and platform; per completed turn a fixed check-in marker (never user, assistant or tool text). Hooks run synchronously, so an unresponsive server can delay a call by roughly 40 seconds (connection plus call timeout). After 3 consecutive failures the plugin stops reporting for that session only, until the session is finalized or reset; it stays fail-open and never blocks the agent. If UNITARES_BEARER is set, it is sent as a request header to that same server only.","maintainer":"cirwel","tier":"community","category":"automation","requires_hermes":">=0.21.0","docs_url":"https://github.com/cirwel/unitares-host-adapter#hermes-agent","version":"0.3.3","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_session_finalize","on_session_reset","on_session_start","post_llm_call","pre_llm_call"],"provides_middleware":[],"requires_env":["UNITARES_MCP_URL"]}},{"name":"unraid","title":"Unraid","repo":"https://github.com/Anunnaki-Astronaut/hermes-unraid","sha":"48deec3dfd9bbc0b00731412635fa2dc06263d03","description":"Read-only Unraid monitoring for Hermes Desktop: server metadata, array capacity, Docker containers, virtual machines, and grouped alerts. Disclosure — sends fixed GraphQL queries to the user-configured Unraid host and stores a VIEWER key through Hermes secret scope; no telemetry, background process, shell, SSH, MCP, or mutations.","maintainer":"Anunnaki-Astronaut","tier":"community","category":"desktop","requires_hermes":">=0.22.2","docs_url":"https://github.com/Anunnaki-Astronaut/hermes-unraid#readme","version":"0.2.0","image":"https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/catalog-banner.png","screenshots":["https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/overview.png","https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/array.png","https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/docker.png","https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/vms.png","https://raw.githubusercontent.com/Anunnaki-Astronaut/hermes-unraid/48deec3dfd9bbc0b00731412635fa2dc06263d03/docs/screenshots/alerts.png"],"readme":true,"platforms":[],"known_issues":["When Hermes Desktop uses a remote backend, install the Desktop part locally and the Agent/backend part on the remote Hermes host.","The Unraid GraphQL schema can vary by release; this version was manually tested with Unraid 7.3."],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["UNRAID_API_KEY"]}},{"name":"usage-flame","repo":"https://github.com/maxshafransky-a11y/hermes-usage-flame","sha":"a8602cb3d58a2b0af12b6c638aa1add785f2d449","description":"Pinned glowing chip + fire-themed panel with live subscription-quota windows (remaining %, reset countdown, burn-rate pace and run-out forecast with sparkline history) for every provider Hermes reports usage for. 12 color themes and fonts, RU/EN, zero dependencies, works on Windows. Disclosure — runs hermes usage --json through the Desktop gateway (cli.exec) every 1–15 minutes and sweeps up to 8 providers every 15 minutes; each run queries that provider's usage endpoint with the credential Hermes already holds. Reads the composer's selected provider from Desktop localStorage. No network calls of its own.","maintainer":"maxshafransky-a11y","tier":"community","category":"desktop","requires_hermes":">=0.21.4","platforms":["windows","macos","linux"],"docs_url":"https://github.com/maxshafransky-a11y/hermes-usage-flame","screenshots":["https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/01-hero-dark.png","https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/02-providers-expanded.png","https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/03-themes.png","https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/04-forecast.png","https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/05-light-theme.png","https://raw.githubusercontent.com/maxshafransky-a11y/hermes-usage-flame/a8602cb3d58a2b0af12b6c638aa1add785f2d449/screenshots/06-chips.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"usage-guard","repo":"https://github.com/mister-ideas/usage-guard","sha":"72529c744c03a71f7b5f732c3843a19634acae15","description":"Keeps an agent inside its subscription allowance: refuses a provider dispatch once a subscription usage window is exhausted, so an account that allows paid extra usage stops at the wall instead of spending overage. Reads the usage Hermes already displays, holds no credentials, and never touches account or billing settings. Disclosure — refuses main-loop provider calls (including MoA turns) for the providers in `provider_keys` (Anthropic and OpenAI Codex by default) when a subscription usage window reaches `threshold_percent`, and by default (`fail_open: false`) also refuses when usage data is missing, stale, unreadable, or the guard's own config is malformed; usage is read through Hermes's own account-usage fetcher (no credentials held, at most one read per source every 180 seconds by default) and cached in $HERMES_HOME/plugin-data/usage-guard/usage.json; a `pre_llm_call` hook adds a short usage note to the next turn's context at 80% and 90% used by default, and an opt-in (off by default) `llm_request` middleware lowers an existing output-token budget near the usage limit; both read only the cache, never the network; auxiliary calls (compression, vision, titles, MoA advisors) are not gated.","image":"https://raw.githubusercontent.com/mister-ideas/usage-guard/72529c744c03a71f7b5f732c3843a19634acae15/docs/banner.jpg","maintainer":"mister-ideas","tier":"community","category":"automation","requires_hermes":">=0.21.6","version":"0.3.6","known_issues":["Anthropic windows: Hermes's Anthropic fetcher scales any utilization <= 1 by 100, so a window at 0-1% can read as 100% and the guard will refuse. Fixed upstream by NousResearch/hermes-agent#139916; this entry's requires_hermes rises to the release carrying it."],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call"],"provides_middleware":["llm_execution","llm_request"],"requires_env":[]}},{"name":"usage-ledger","repo":"https://github.com/3DPrintPioneers/hermes-usage-ledger","sha":"3fa6a32187c943ff2f43959b3a7d258cf9fe067e","description":"Local-only content-free usage tally and native Desktop statusline (Windows and macOS beta).","maintainer":"3DPrintPioneers","tier":"community","category":"desktop","requires_hermes":">=0.21.5","docs_url":"https://github.com/3DPrintPioneers/hermes-usage-ledger/blob/3fa6a32187c943ff2f43959b3a7d258cf9fe067e/README.md","version":"0.4.4","readme":true,"platforms":["windows","macos"],"known_issues":["Native macOS validation covers macOS 14.3.1 on Apple Silicon/arm64; Intel Mac native UI is not yet verified.","If another updater owns tally.md, disable finalize_tally before enabling Agent collection; writer handoff requires quiescent, explicit baseline reconciliation."],"capabilities":{"provides_tools":[],"provides_hooks":["pre_llm_call","post_api_request","post_llm_call","on_session_finalize"],"provides_middleware":[],"requires_env":[]}},{"name":"usage-stats","repo":"https://github.com/meviusisback/usage-stats","sha":"ba0652c5cc45b18a602a087da25bc5fa293b7f99","description":"Multi-provider usage/balance for the Hermes Desktop status bar — shows live usage for OpenCode, OpenRouter, DeepSeek, Kimi, NovitaAI, ZAI, Alibaba, Arcee, plus gateway-native Claude/Codex/Cursor/Nous.","maintainer":"meviusisback","tier":"community","category":"desktop","docs_url":"https://github.com/meviusisback/usage-stats#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"vault-view","repo":"https://github.com/ergocogn/hermes-desktop-plugin-vault-view","sha":"7cc1d6f67205ece2b57c17500a198e3841215ac2","version":"0.5.0","title":"Vault View","description":"Local Markdown vault workspace for Hermes Desktop: visual editing, progressive reading, cached image previews, optional per-conversation workspaces, pinned tabs, explicit selection quoting, tag search, links, backlinks and a graph. Compatible with Obsidian vaults. File transport requires a Linux/macOS gateway; Windows Desktop requires a WSL-hosted Unix backend, not a native Windows gateway; ffmpeg thumbnails are optional. Remote images and agent guidance are independent opt-ins and disabled by default; automatic note-content sharing is disabled; direct Obsidian opening is temporarily hidden. Disclosure — reads and writes notes in the vault folder you choose through Desktop shell commands on the gateway host; remote Markdown images and agent navigation guidance stay off until you opt in.","maintainer":"ergocogn","tier":"community","category":"desktop","docs_url":"https://github.com/ergocogn/hermes-desktop-plugin-vault-view#readme","readme":true,"image":"https://raw.githubusercontent.com/ergocogn/hermes-desktop-plugin-vault-view/7cc1d6f67205ece2b57c17500a198e3841215ac2/assets/banner.png","screenshots":["https://raw.githubusercontent.com/ergocogn/hermes-desktop-plugin-vault-view/7cc1d6f67205ece2b57c17500a198e3841215ac2/screenshots/vault-view-light.png","https://raw.githubusercontent.com/ergocogn/hermes-desktop-plugin-vault-view/7cc1d6f67205ece2b57c17500a198e3841215ac2/screenshots/vault-view-settings.png"],"platforms":["linux","macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.21.5"},{"name":"vaultknox","repo":"https://github.com/Ufonik88/Hermes-VaultKnox","sha":"8aea272fd9b071615fcd0c93a38b760485673316","subdir":"src/vaultknox/_hermes_plugin","description":"Secret-leak protection for Hermes chats. Scans inbound messages and outbound replies for API keys, tokens, and passwords with a 28-pattern detector registry, redacts them before they reach session storage or the user, and injects safe secret-handling rules so the agent never asks for secrets in chat. Zero dependencies, fully offline detection; pairs with the optional hermes-vault CLI for encrypted storage. Disclosure — rewrites inbound user messages (regex secret redaction, may false-positive on password-like strings), injects a secret-handling prompt each conversation and rewrites assistant replies that ask for secrets; outbound replies are value-redacted with the same registry (regex-based, so a shape no detector covers passes through), with findings logged as detector name plus SHA-256 fingerprint and never the raw value. The vaultknox tool is inert unless the separate vaultknox pip package is installed, its write gate is a tool argument the model sets, and a vault policy that authorises raw consume_token returns the plaintext to the model.","maintainer":"Ufonik88","tier":"community","category":"tools","requires_hermes":">=0.19","docs_url":"https://github.com/Ufonik88/Hermes-VaultKnox/blob/8aea272fd9b071615fcd0c93a38b760485673316/docs/PLUGIN.md","version":"0.8.3","image":"https://raw.githubusercontent.com/Ufonik88/Hermes-VaultKnox/8aea272fd9b071615fcd0c93a38b760485673316/docs/images/banner.png","screenshots":["https://raw.githubusercontent.com/Ufonik88/Hermes-VaultKnox/8aea272fd9b071615fcd0c93a38b760485673316/docs/images/quickstart-terminal.png","https://raw.githubusercontent.com/Ufonik88/Hermes-VaultKnox/8aea272fd9b071615fcd0c93a38b760485673316/docs/images/protection-flow.png","https://raw.githubusercontent.com/Ufonik88/Hermes-VaultKnox/8aea272fd9b071615fcd0c93a38b760485673316/docs/images/plugin-verify.png"],"readme":true,"platforms":[],"capabilities":{"provides_tools":["vaultknox"],"provides_hooks":["pre_gateway_dispatch","pre_llm_call","transform_llm_output"],"provides_middleware":[],"requires_env":[]}},{"name":"vaultwarden","repo":"https://github.com/hansipie/hermes-vaultwarden","sha":"a461ecf127299a701404233cec8f097ac0450225","description":"Vaultwarden / Bitwarden Password Manager (bw CLI) secret source","maintainer":"hansipie","tier":"community","category":"general","docs_url":"https://github.com/hansipie/hermes-vaultwarden#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"vector-platform","repo":"https://github.com/BonesGit/hermes-vector-platform","sha":"94e1af49a2dcbce4952cb3d17b8591b8e3e10bed","description":"Vector (vectorapp.io) messaging platform plugin: Hermes becomes a first-class Nostr-based Vector bot (its own nsec/npub identity), relaying DMs through a local Rust sidecar that wraps vector-sdk. First run needs `hermes gateway setup`, which provisions the bot identity (create or import). Disclosure — `hermes gateway setup` downloads a prebuilt vector-bridge binary from github.com/BonesGit/hermes-vector-platform/releases (tag v<version>, sha256 checked against that release's SHA256SUMS; set vector.prebuilt.download: false to build from the bundled Rust source), merges `vector:` settings into ~/.hermes/config.yaml, writes VECTOR_* to ~/.hermes/.env, and publishes a public bot profile (kind-0, bot: true) to Nostr discovery relays.","maintainer":"BonesGit","tier":"community","category":"platform","docs_url":"https://github.com/BonesGit/hermes-vector-platform","image":"https://raw.githubusercontent.com/BonesGit/hermes-vector-platform/refs/heads/master/vector-hermes-agent-plugin.png","version":"0.5.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["VECTOR_NPUB"]}},{"name":"vet402","repo":"https://github.com/kzmttkc/vet402-hermes","sha":"72ed6e608cdd6cbc894b9d03c239883375967f95","version":"0.1.0","subdir":"vet402","description":"Look a paid x402 or MPP URL up in vet402's public record of real purchases before the agent pays it. BLOCK stops the tool call, and a WARN backed by evidence against the seller asks for approval. Disclosure — sends each guarded or model-queried URL (scheme, host and path; userinfo, query and fragment stripped) to vet402.com in up to two HTTPS GETs; fails open, so a vet402 outage or unknown URL lets the payment run unless VET402_UNKNOWN=approve.","maintainer":"kzmttkc","tier":"community","category":"tools","requires_hermes":">=0.19.0","docs_url":"https://github.com/kzmttkc/vet402-hermes/blob/main/vet402/README.md","capabilities":{"provides_tools":["vet402_check"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"vidiq","repo":"https://github.com/vid-io/vidiq-mcp","sha":"1c094797d036577519e378e3ee4856682cbe1818","description":"Grow on YouTube, Instagram, and TikTok with vidIQ. Disclosure — skills only; you add vidIQ's hosted MCP server yourself with hermes mcp add vidiq --url https://mcp.vidiq.com/mcp --auth oauth; tool calls send your prompts and authorized channel data to vidIQ and spend vidIQ account credits.","maintainer":"vid-io","tier":"community","category":"tools","docs_url":"https://github.com/vid-io/vidiq-mcp/blob/1c094797d036577519e378e3ee4856682cbe1818/README.md#hermes-agent","version":"0.1.5","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"vk-platform","repo":"https://github.com/web3blind/hermes-vk-platform","sha":"f922a0fc65bd9ccb0312fd8f394c9d38a503ad8c","version":"0.2.3","requires_hermes":">=0.21.3","description":"VK Messenger gateway with community Long Poll, media attachments, allowlists, and project-lane routing.","maintainer":"web3blind","tier":"community","category":"platform","docs_url":"https://github.com/web3blind/hermes-vk-platform/blob/f922a0fc65bd9ccb0312fd8f394c9d38a503ad8c/README.md","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["VK_GROUP_TOKEN","VK_GROUP_ID"]}},{"name":"voice-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"93080fb3cf44ce6e13ab050df64ca66b8eea0d90","subdir":"voice-ledger","description":"Local ledger of the voice messages and recordings Hermes transcribes (voice messages from messaging platforms, CLI voice mode): /voice-log shows how many recordings there were, how much audio in total and typically, and how long ago the last one was, per speech-to-text provider, model, source, language or day, for the last 24 hours, any number of hours or days or everything recorded; /voice-log recent lists the newest recordings (ten, or up to 100 with /voice-log recent 50). Disclosure — writes recording metadata (source, provider, model, language, file size read from the file system; no audio, file path, prompt or transcript) to plugin-data/voice-ledger/voice.jsonl, trimmed to 5,000 rows past 2 MB; observer only, always returns None so the transcription request is unchanged; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/voice-ledger","version":"1.0.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/93080fb3cf44ce6e13ab050df64ca66b8eea0d90/docs/voice-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_transcription"],"provides_middleware":[],"requires_env":[]}},{"name":"voicestudio","repo":"https://github.com/aska-digital/protean-voice-studio","sha":"efe5c1910ee22de7e911a9c8a8625027781f2729","subdir":"voicestudio","description":"Client for the local VoiceStudio text-to-speech app (debpalash/VoiceStudio): speak short text, design or clone voices, browse voices, render chaptered long-form audio, dub videos, and check server status. Six tools with mirrored slash commands plus a bundled skill. Disclosure — sends the text, script files, videos and voice samples you point it at to the VoiceStudio server you configure (default http://127.0.0.1:3900, plain HTTP) and saves the returned audio under HERMES_HOME/plugin-data/voicestudio; no credentials, no telemetry, no self-update.","maintainer":"aska-digital","tier":"community","category":"voice","requires_hermes":">=0.21","version":"1.0.0","docs_url":"https://github.com/aska-digital/protean-voice-studio","readme":true,"platforms":[],"capabilities":{"provides_tools":["vs_speak","vs_design_voice","vs_list_voices","vs_longform","vs_dub","vs_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"vornik-companion","repo":"https://github.com/EaseIT-cz/vornik","sha":"d49b4765a4f8173c5027afe6cd0fd6569f7b929d","subdir":"contrib/hermes-companion","description":"Vornik as Hermes's hardened broker and long-term memory: Hermes holds no credentials; privileged work runs in operator-approved workflows on your own Vornik daemon. Disclosure — talks only to the self-hosted Vornik daemon at VORNIK_URL with VORNIK_BROKER_TOKEN (and VORNIK_MEMORY_TOKEN for memory); broker tools let the agent start operator-approved workflows on that daemon (writes are approved by a person in Vornik); when selected as memory provider it sends each turn's user query for recall, mirrors MEMORY.md and USER.md writes to the daemon, and asks the daemon to stop recalling (not delete) a mirrored entry that Hermes removes or replaces (/vornik-memory lists and /vornik-forget forgets what Vornik keeps); artifact tools expose only named outputs allowed by the approved workflow from completed runs and read bounded text or return short-lived binary download links from the daemon; task diagnosis tools (offered only when the daemon advertises companion-progress) return a broker task's execution events and closed error classes as the daemon serves them to a broker key; hermes vornik approvals on writes security.approval.transport (and vornik_companion.approval_namespace) to Hermes config, after which Hermes's own dangerous-command prompts (the redacted command text) are sent through the local vornikctl agent host-approval to the daemon and answered on the paired phone, any failure or a Vornik outage denying the command unless transport_fallback: builtin is set, and the plugin never decides itself; hermes vornik connect runs the local vornikctl, which adds an MCP entry to Hermes config.","maintainer":"EaseIT Labs","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://docs.vornik.io/features/companion/","version":"0.21.6","capabilities":{"provides_tools":["vornik_catalog","vornik_delegate","vornik_result","vornik_status","vornik_cancel","vornik_list_artifacts","vornik_read_artifact","vornik_task_logs","vornik_task_explain","vornik_recall","vornik_remember"],"provides_hooks":["pre_llm_call"],"provides_middleware":[],"requires_env":["VORNIK_URL","VORNIK_BROKER_TOKEN","VORNIK_MEMORY_TOKEN"]},"requires_env":[]},{"name":"wait-ledger","repo":"https://github.com/olric3015/hermes-plugins","sha":"c44b60aa6a6621147ce5b3168b7841bf1f8ac006","subdir":"wait-ledger","description":"Local ledger of the times Hermes stopped to wait for you (approval prompts, clarify questions, password prompts): /waits shows how many waits there were, how many were answered or left unanswered, and how long Hermes stood still in total, typically and at most, per kind of prompt, per platform or per day, for the last 24 hours, any number of hours or days, the latest session or everything recorded; /waits recent lists the newest waits (ten, or up to 100 with /waits recent 50). Disclosure — writes wait metadata (session id, platform, kind of prompt, how it ended, wait time; no prompt text, answer or session key) to plugin-data/wait-ledger/waits.jsonl, trimmed to 5,000 rows past 2 MB; observer only, cannot answer, delay or change a prompt; no network","maintainer":"olric3015","tier":"community","category":"tools","requires_hermes":">=0.21.6","docs_url":"https://github.com/olric3015/hermes-plugins/tree/main/wait-ledger","version":"1.0.0","image":"https://raw.githubusercontent.com/olric3015/hermes-plugins/c44b60aa6a6621147ce5b3168b7841bf1f8ac006/docs/wait-ledger-card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["on_human_input_request","on_human_input_resolved"],"provides_middleware":[],"requires_env":[]}},{"name":"wallaby-provider","repo":"https://github.com/Dawncoral/wallaby-hermes-plugin","sha":"327e0400e041a89d6975377e5d802acb07498def","description":"Wallaby Token — curated open-weight inference (Kimi K3); adds Wallaby to the hermes model provider list.","maintainer":"Dawncoral","tier":"community","category":"models","requires_hermes":">=0.20.0","docs_url":"https://github.com/Dawncoral/wallaby-hermes-plugin#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["WALLABY_API_KEY"]}},{"name":"wallpaper-theme","repo":"https://github.com/strnadchristopher/hermes-wallpaper-theme","sha":"40ebeaac235be5751f44491540b7b41d35d41da1","description":"A Hermes Desktop theme that follows your wallpaper. Reads Pywal's ~/.cache/wal/colors.json by default, or any palette JSON you point it at (settings page or ~/.config/hermes-wallpaper-theme/config.json), derives a palette with checked contrast floors and repaints live when the file changes. Optional glass mode paints a translucent background for native window materials or compositor blur. Disclosure — the desktop half uses only @hermes/plugin-sdk; the palette file is read by the package's own backend route (dashboard/plugin_api.py, GET /api/plugins/wallpaper-theme/palette, mounted once the plugin is in plugins.enabled), polled every 3 seconds with a change stamp. That route reads only JSON files inside the user's home directory (or XDG_*_HOME) under 256 KiB and returns colour fields only, never raw file text. No network calls, no shell commands, no credentials, no telemetry.","maintainer":"strnadchristopher","tier":"community","category":"desktop","version":"1.1.0","docs_url":"https://github.com/strnadchristopher/hermes-wallpaper-theme/blob/40ebeaac235be5751f44491540b7b41d35d41da1/README.md","platforms":["linux","macos","windows"],"title":"Wallpaper Theme","screenshots":["https://raw.githubusercontent.com/strnadchristopher/hermes-wallpaper-theme/40ebeaac235be5751f44491540b7b41d35d41da1/docs/screenshots/pywal-dark.png","https://raw.githubusercontent.com/strnadchristopher/hermes-wallpaper-theme/40ebeaac235be5751f44491540b7b41d35d41da1/docs/screenshots/flat-palette-light.png","https://raw.githubusercontent.com/strnadchristopher/hermes-wallpaper-theme/40ebeaac235be5751f44491540b7b41d35d41da1/docs/screenshots/settings.png","https://raw.githubusercontent.com/strnadchristopher/hermes-wallpaper-theme/40ebeaac235be5751f44491540b7b41d35d41da1/docs/screenshots/glass.png"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]},"requires_hermes":">=0.22.1"},{"name":"watchline","repo":"https://github.com/qordinate-ai/watchline-hermes-plugin","sha":"d3d2424336af16cae94e4bbcb47e6edd07a88062","description":"Watchline delivery adapter for Hermes Agent. Polls a Watchline pull channel and forwards matched events into the Hermes gateway as inbound messages.","maintainer":"qordinate-ai","tier":"community","category":"platform","docs_url":"https://github.com/qordinate-ai/watchline-hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"waypoint","repo":"https://github.com/mochiNJ/hermes-waypoint","sha":"971bab6762466bfdf6036aeaeb35352d6308f61d","description":"Session status for Hermes Desktop: a thin bar next to every sidebar session with four states — Working (remembers your next step), Waiting on someone (who/what plus a follow-up reminder), Done (outcome plus a fresh-start handoff) and untracked. Suggests 3 next steps per session (instant quick ideas from the chat, opt-in AI ideas from the auxiliary model, priority colours) with one-click Ask, a Power up button that asks a strong model for sharper ideas on demand, and Mark complete to stop suggestions. Adds a Status Board page (columns, follow-ups due, stale sessions, archive all done), triage of untracked sessions, a resume banner above the composer, a status-bar counter, a daily summary, palette commands and English/Arabic (RTL). SDK-only: session-row slots, a route, sidebar nav, status bar, composer banner, palette. Disclosure — no network calls of its own (all model calls go through Hermes llm.oneshot); AI next-step suggestions are OFF by default; when enabled, after new replies (at most every 90 s) the plugin sends the focused session's last ~12 user/assistant messages (≤ ~7,000 chars) plus its title and the user's notes to the auxiliary task title_generation (Hermes default \"auto\" = your main model); Power up runs only when pressed — also with AI suggestions off — and sends a longer excerpt (last ~20 messages, ≤ ~12,000 chars) to the plugin's own auxiliary tasks waypoint_ideas / waypoint_ideas_2 (registered by __init__.py; unset they resolve to \"auto\" = your main model) or, for \"My chat model\", to the open session's model; an optional automatic big idea (off by default) uses the same choice at most every 10 minutes; Power up call log (2.5.0): the Python half also registers two observe-only hooks (pre_auxiliary_call, post_auxiliary_call) that ignore every auxiliary task except waypoint_ideas / waypoint_ideas_2 and, for those, write one line per call to the user's own Hermes log (logs/agent.log) and append a record to <HERMES_HOME>/plugin-data/waypoint/power-calls.jsonl (rolls over at ~1 MB): model, provider, reasoning effort, response time, token counts (logged as 'unknown' with a reason when Hermes reports none), finish reason and status — never prompt, message or reply text, nothing leaves the machine, and the hooks never modify a call; reads session history (session.history) and titles (session.list); statuses, notes and cached suggestion text are kept in desktop plugin storage; archives sessions only when you press Archive (undo offered) or confirm \"Archive N done\" on the board (no undo; sessions stay under Archived); posts in-app and native OS notifications for due reminders and a once-a-day local summary; writes composer drafts only on Ask / Insert / Start fresh session and never sends them.","maintainer":"mochiNJ","tier":"community","category":"desktop","requires_hermes":">=0.21.6","docs_url":"https://github.com/mochiNJ/hermes-waypoint","version":"2.5.0","screenshots":["https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/power-up.png","https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/suggestions.png","https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/card-waiting.png","https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/board.png","https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/card-done.png","https://raw.githubusercontent.com/mochiNJ/hermes-waypoint/971bab6762466bfdf6036aeaeb35352d6308f61d/media/banner.png"],"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":["pre_auxiliary_call","post_auxiliary_call"],"provides_middleware":[],"requires_env":[]}},{"name":"weather","repo":"https://github.com/FahrenheitResearch/hermes-weather-plugin","sha":"d474493ef4ffeefabad9dbf0188f72bce3b47b67","description":"Weather data, radar/model imagery, and verified meteorological calculations. Built on metrust, rusbie, wrf-rust, rustdar, and ecape-rs.","maintainer":"FahrenheitResearch","tier":"community","category":"tools","docs_url":"https://github.com/FahrenheitResearch/hermes-weather-plugin#readme","capabilities":{"provides_tools":["wx_alerts","wx_brief","wx_calc","wx_conditions","wx_ecape","wx_forecast","wx_global","wx_metar","wx_model_image","wx_radar_image","wx_severe","wx_sounding","wx_storm_image"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"web-defuddle","repo":"https://github.com/annalinneajohansson82/hermes-defuddle","sha":"d28bd52eed30c397a45f0b2aba869a28ca4789c4","description":"Defuddle content extraction — local, free, no API key. Shells out to the defuddle CLI for clean article markdown. Extract-only; pair with SearXNG or another search provider.","maintainer":"annalinneajohansson82","tier":"community","category":"web","docs_url":"https://github.com/annalinneajohansson82/hermes-defuddle#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"web-meta-ai","repo":"https://github.com/ajaynomics/hermes-web-meta-ai","sha":"302cc18866a6255d768a5a79b5e7cb50cd0adb09","description":"Meta web search — routes web_search through the server-side web_search tool on Meta's Responses API (Muse Spark); search-only. Disclosure — each search is a separate billed Meta Model API call (per-query web search fee plus tokens) on MODEL_API_KEY.","maintainer":"ajaynomics","tier":"community","category":"web","requires_hermes":">=0.21.3","docs_url":"https://github.com/ajaynomics/hermes-web-meta-ai#readme","version":"0.1.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["MODEL_API_KEY"]}},{"name":"web-octen","repo":"https://github.com/Octen-Team/hermes-octen-plugin","sha":"3af8a3fe200d93934c823485f66c3375a4508474","description":"Octen web search with query-focused highlights and page extraction.","maintainer":"Octen-Team","tier":"community","category":"web","docs_url":"https://github.com/Octen-Team/hermes-octen-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["OCTEN_API_KEY"]}},{"name":"web-ollama-cloud","repo":"https://github.com/rriggs/hermes-plugin-ollama-cloud-search","sha":"9c739a9ea5985e0ba86c20d7160af06382c2198e","description":"Ollama Cloud web search + content extraction via Ollama's native REST API. Search returns web results; extract fetches page content. Reuses OLLAMA_API_KEY (https://ollama.com/settings/keys).","maintainer":"rriggs","tier":"community","category":"web","docs_url":"https://github.com/rriggs/hermes-plugin-ollama-cloud-search#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"web-oxylabs","repo":"https://github.com/oxylabs/hermes-web-oxylabs","sha":"e6a5ee8fbabae43a7cd7f77610f187dbc890e76a","description":"Oxylabs AI Studio web search and extraction provider for Hermes Agent. Requires OXYLABS_API_KEY (sign up at https://aistudio.oxylabs.io/api-key).","maintainer":"oxylabs","tier":"community","category":"web","docs_url":"https://github.com/oxylabs/hermes-web-oxylabs#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"web-search-plus","repo":"https://github.com/robbyczgw-cla/hermes-web-search-plus","sha":"eee7f5174e1a84f652e4d2a00290c4c18885b9e8","description":"Multi-provider web search, URL extraction, quality reports, and opt-in research mode. Disclosure — reads the operator's HERMES_HOME/config.yaml (read-only) for its own Desktop settings block (country, language, max_results, auto_routing, provider_order, searxng_url, donsetch_bin) and, in its status command, the web backend and keyless_rescue settings; may spawn an operator-configured local donsetch CLI as a subprocess (argv, no shell).","maintainer":"robbyczgw-cla","tier":"community","category":"web","docs_url":"https://github.com/robbyczgw-cla/hermes-web-search-plus#readme","version":"5.1.2","capabilities":{"provides_tools":["web_extract_plus","web_search_plus"],"provides_hooks":["on_session_start"],"provides_middleware":[],"requires_env":[]}},{"name":"web-serply","repo":"https://github.com/serply-inc/hermes-web-serply","sha":"c6cab41471586a110e5a584061168a045f566e08","description":"Serply web search provider for Hermes Agent. Google web results via the Serply SERP API. Requires SERPLY_API_KEY (sign up at https://serply.io).","maintainer":"serply-inc","tier":"community","category":"web","docs_url":"https://github.com/serply-inc/hermes-web-serply#readme","version":"1.0.0","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["SERPLY_API_KEY"]}},{"name":"web-toon","repo":"https://github.com/drew-dot-com/hermes-toon","sha":"fb0892bd1ee6630309adeeaa68fd37454be247d3","version":"0.1.2","subdir":"src/hermes_toon","description":"Paid web extract over TOON: web_extract pays a TOON node about $0.001 per page from a local payer sidecar; the node fetches through an Anyone network exit and returns markdown with a wuzzy/crawl v1 content hash. Disclosure — with TOON_PAYER_URL set and web.extract_backend toon, every web_extract URL goes to the user's anonfetch payer sidecar and spends about $0.001 from its TOON payment channel with no per-call confirmation; the sidecar's daily cap and origin allowlist are the only spending controls; pages are fetched through Anyone network exits.","maintainer":"drew-dot-com","tier":"community","category":"web","requires_hermes":">=0.21.3","docs_url":"https://github.com/drew-dot-com/hermes-toon#install","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["TOON_PAYER_URL"]}},{"name":"web-venice","repo":"https://github.com/MnrGreg/hermes-venice-web","sha":"dcc286fc40544f4489831ff246de8030fd0417fa","description":"Venice AI web search + extract — privacy-first, zero data retention, $0.01/request.","maintainer":"MnrGreg","tier":"community","category":"web","docs_url":"https://github.com/MnrGreg/hermes-venice-web#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["name"]}},{"name":"wechat-social-assistant","repo":"https://github.com/harrylabsj/hermes-plugin-wechat-social-assistant","sha":"fbfc1bd23fc9494ad9c4433de2574954b5f5476f","description":"Local-first WeChat relationship memory assistant for macOS: captures only what is visible in the WeChat window via system OCR/Accessibility, stores everything in a local SQLite database (0600/0700 permissions, no cloud), and serves contact briefs, follow-up planning, outreach drafts and weekly relationship reports through 32 MCP tools. Engine pinned to the immutable PyPI release wechat-social-assistant==1.5.1 over uvx stdio; Portable Agent Plugins v1 package (mcp.json + skills/), needs uv on PATH. All data confined to PLUGIN_DATA via WSA_ALLOWED_ROOT + path enforcement. Never reads WeChat databases, never injects into WeChat, never sends messages — outreach is drafts for human review only. Disclosure — reads WeChat only by screenshotting/OCR-ing and walking the macOS Accessibility tree of the frontmost window (not WeChat's databases or a bot API), compiles bundled Swift helpers with swiftc into ~/Library/Caches/wechat-social-assistant/bin on first use, and needs Screen Recording (optionally Accessibility) permission for the host terminal; no network egress, never sends messages.","maintainer":"harrylabsj","tier":"community","category":"tools","docs_url":"https://github.com/harrylabsj/wechat-social-assistant","version":"1.5.1","platforms":["macos"],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"whatsapp-agent-platform","repo":"https://github.com/ahtishamdilawar/hermes-whatsapp-agent-platform","sha":"4d8fc1c482ed06a34b6609b1dcdf59e370de7d40","version":"0.2.0","requires_hermes":">=0.21.4","title":"WhatsApp Agent Platform","description":"Community platform plugin (not affiliated with Meta or Nous Research) connecting a WhatsApp Agent to Hermes through Meta's WhatsApp Agent Platform API (/agent/v1): long-poll inbound (no public URL), text and media. Disclosure — sends the API key and message content, files included, only to Meta: api.whatsapp.com, plus lookaside.fbsbx.com for downloads (per WhatsApp's Third-Party Agents Terms, agent chats are not end-to-end encrypted); stores the poll cursor, recent message ids and the creator's id under HERMES_HOME; no other network egress, no telemetry, no self-update. Exception: Hermes fetches image URLs in replies (SSRF-guarded, no key), revealing the server's IP to that host. Files go only to the creator; Meta keeps uploads up to 30 days. Received files are cached under HERMES_HOME (deleted after ~24 h while the gateway runs) and may reach the configured model, vision or speech-to-text provider. WHATSAPP_AGENT_PLATFORM_MEDIA_ENABLED=false disables media. By default only the agent's creator (verified through Meta's API) can message Hermes; WHATSAPP_AGENT_PLATFORM_ALLOWED_USERS or WHATSAPP_AGENT_PLATFORM_ALLOW_ALL_USERS widens that explicitly. The agent API key is saved to the Hermes .env; the state file under HERMES_HOME is 0600 and never contains the key.","maintainer":"ahtishamdilawar","tier":"community","category":"platform","docs_url":"https://github.com/ahtishamdilawar/hermes-whatsapp-agent-platform/blob/4d8fc1c482ed06a34b6609b1dcdf59e370de7d40/README.md","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["WHATSAPP_AGENT_PLATFORM_API_KEY"]}},{"name":"wicked-memory","repo":"https://github.com/choaticpixels/hermes-wicked-memory","sha":"3a262dcb7f6ec95966b63a66b434c8885b3dfdf2","version":"0.1.0","description":"Persistent, wallet-scoped long-term memory for Hermes: remember, semantic recall, versioned update, history and approved hard delete, backed by the hosted Wicked Memory service, plus skills for using it and for connecting the Wicked MCP server. Works with no setup (a wallet is generated on first use; search uses the service's shared free key). Disclosure — sends the memory text and search queries the agent chooses to memory.wickedapi.com (or your configured base_url), each request signed by the agent's wallet, plus one GET to /v1/status on first use to read the published community key; stores a generated private key unencrypted in the plugin data dir unless you supply WICKED_MEMORY_PRIVATE_KEY; no shell commands, no background processes, no telemetry; every wicked_memory_forget asks for human approval. The bundled wicked-suite-mcp skill walks you through adding the author's hosted Wicked MCP server (https://mcp.wickedapi.com/mcp, 75 tools, some x402-priced); that server is a separate manual step and is not covered by this pin.","maintainer":"choaticpixels","tier":"community","category":"tools","requires_hermes":">=0.21.5","docs_url":"https://github.com/choaticpixels/hermes-wicked-memory#readme","readme":true,"platforms":[],"capabilities":{"provides_tools":["wicked_memory_remember","wicked_memory_recall","wicked_memory_update","wicked_memory_history","wicked_memory_forget","wicked_memory_whoami"],"provides_hooks":["pre_tool_call"],"provides_middleware":[],"requires_env":[]}},{"name":"wiki-ref","repo":"https://github.com/EloquentBrush0x/hermes-context-refs","sha":"0154f6bfaafc837cc4af78742e6db7c087d5b5a7","subdir":"wiki-ref","description":"@wiki:<title> context references: attach the lead section of a Wikipedia article to a message, or one section with @wiki:<title>#<section>, with title autocomplete in the TUI and Desktop composer. Disclosure — sends HTTPS GET requests to <language>.wikipedia.org/w/api.php only (the referenced title and the typed autocomplete prefix leave the machine; a section is cut locally); no API key, no files written, no subprocess; register() only adds the @wiki: reference provider.","maintainer":"EloquentBrush0x","tier":"community","category":"web","requires_hermes":">=0.21","docs_url":"https://github.com/EloquentBrush0x/hermes-context-refs/tree/main/wiki-ref","version":"1.1.0","image":"https://raw.githubusercontent.com/EloquentBrush0x/hermes-context-refs/0154f6bfaafc837cc4af78742e6db7c087d5b5a7/docs/card.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"wolfmarkdown","repo":"https://github.com/WolfMarkTools/WolfMarkDown","sha":"d9c1b4a7e31df41ed1e555f5d7c0a8f27e16c5ad","description":"Create, clean, and verify standalone Markdown with conservative semantic repair and deterministic artifact checks. Disclosure — skill-only plugin that has the agent run its bundled Node.js 22+ scripts through the terminal; on first use it runs `npm ci` in the plugin folder (lockfile-pinned packages from registry.npmjs.org), and the optional `/wolfmarkdown setup` also creates skill symlinks in ~/.agents/skills and ~/.claude/skills.","maintainer":"WolfMarkTools","tier":"community","category":"tools","version":"1.0.3","title":"WolfMarkDown","readme":true,"platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"woof","repo":"https://github.com/recastsystems/hermes-woof","sha":"2c82b34eb386a490d25439757556f6bab84048af","description":"Plan, launch, watch and compare WOOF weather simulations on your own NVIDIA GPU: size runs with WOOF's own planner, launch them locally or on an ssh/WSL GPU host, get maps in the chat while the forecast runs, compare physics or resolution, run multi-arm research campaigns and score runs against radar and surface observations. Disclosure — runs need Linux x86_64 with an NVIDIA GPU (plan-only elsewhere); the user-run hermes woof install pip-installs recast-woof>=1.0.0,<1.1 into ~/woof-env and downloads WOOF tables and optional geography (about 1.6 GB); runs execute the WOOF CLI as detached background jobs writing to ~/woof-runs and fetch public weather data; run events are pushed into the chat as user-role messages; the optional serve/ scripts download llama.cpp and a Qwen GGUF and start an unauthenticated local model server.","maintainer":"recastsystems","tier":"community","category":"tools","version":"0.1.0","docs_url":"https://github.com/recastsystems/hermes-woof#readme","capabilities":{"provides_tools":["woof_doctor","woof_catalog","woof_docs","woof_plan","woof_launch","woof_status","woof_stop","woof_show","woof_compare","woof_campaign","woof_score","woof_report"],"provides_hooks":["pre_llm_call","post_llm_call","on_session_end"],"provides_middleware":[],"requires_env":[]}},{"name":"wyoming-voice-bridge","repo":"https://github.com/TakeshiTGAL/hermes-plugin-wyoming-voice-bridge","sha":"7be4db8548a82a8745981d47e79d1623a173a54b","description":"Wyoming speech-to-text and text-to-speech for a Wyoming server you run (stt/tts provider `wyoming`), plus a wyoming_voice_status tool that lists the server's models and voices. Disclosure — Audio and text to speak go to the WYOMING_* host:port you set over cleartext, unauthenticated TCP (public addresses accepted). Once selected, the providers send speech in every session, including cron and webhooks. Non-WAV audio is converted with your local ffmpeg. wyoming_voice_status asks for approval on each call and refuses under cron, yolo, approvals off, -q and unattended platforms; answering \"always\" leaves a command_allowlist line in config.yaml. It calls internal Hermes approval, config and write-guard helpers, so a Hermes update can disable the status tool or speech file writes (both fail closed).","maintainer":"TakeshiTGAL","tier":"community","category":"voice","docs_url":"https://github.com/TakeshiTGAL/hermes-plugin-wyoming-voice-bridge#readme","version":"0.1.0","requires_hermes":">=0.21.4","platforms":[],"capabilities":{"provides_tools":["wyoming_voice_status"],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"xchat","repo":"https://github.com/NousResearch/hermes-official-plugins","sha":"f98c0999c6dd4e59680addc8f3480208018ab5b0","subdir":"xchat","description":"X Chat gateway platform: talk to Hermes in X's end-to-end encrypted DMs. Hermes runs as the X account you connect: chat with it in your own self-chat (\"message yourself\"), or give it a separate account and DM that. Messages are decrypted and encrypted locally with X's official Chat XDK, so X only routes ciphertext. Encrypted media, threaded replies, group mention gating and cron delivery.","maintainer":"NousResearch","tier":"official","category":"platform","requires_hermes":">=0.21.5","version":"0.1.0","image":"https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/f98c0999c6dd4e59680addc8f3480208018ab5b0/assets/xchat.jpg","docs_url":"https://github.com/NousResearch/hermes-official-plugins/tree/main/xchat","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["XCHAT_ACCESS_TOKEN"]}},{"name":"xmemo","repo":"https://github.com/yonro/hermes-xmemo-plugin","sha":"637fc30dfe746901cd8ba3e22aed2057cf7ca6b3","subdir":"src/hermes_xmemo/xmemo","description":"Native XMemo memory provider for Hermes Agent — durable, identity-aware cross-session memory with semantic search. Disclosure — cloud memory provider: sends each user prompt (for recall), model-written memories and mirrored built-in Hermes memory writes, plus a stable install ID, to xmemo.dev (Yonro Co., Ltd.); reuses the xmemo login token from ~/.config/xmemo if present.","maintainer":"yonro","tier":"community","category":"memory","requires_hermes":">=0.19","docs_url":"https://github.com/yonro/hermes-xmemo-plugin#readme","version":"1.1.2","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["XMEMO_KEY"]}},{"name":"yantrikdb-hermes-dashboard","repo":"https://github.com/wysie/yantrikdb-hermes-dashboard","sha":"30e8fa249a28bef9cb38e62beaa98e38303a8961","description":"Local-only YantrikDB dashboard for Hermes Agent memory operations","maintainer":"wysie","tier":"community","category":"desktop","docs_url":"https://github.com/wysie/yantrikdb-hermes-dashboard#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"yantrikdb","repo":"https://github.com/yantrikos/yantrikdb-hermes-plugin","sha":"7b22578ada5bf68512461cce4765f81633291aa8","version":"0.27.0","description":"Persistent memory for Hermes. Canonicalizes duplicate memories, surfaces contradictions between structured or recognized single-valued claims for review, and returns a why_retrieved reason list with every recall. Embedded by default: no server, no token, no GPU. Optional HTTP backend for HA clusters; pluggable embedders (bundled potion-2M default).","maintainer":"yantrikos","tier":"community","category":"memory","docs_url":"https://github.com/yantrikos/yantrikdb-hermes-plugin#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"yolo-auto","repo":"https://github.com/yolo-auto-org/hermes-provider-yolo-auto","sha":"e81ef7c28cf79e8664cac6634e0e6bafb28cad3a","subdir":"yolo-auto","description":"Yolo-Auto: flat-rate OpenAI-compatible API with plan-filtered live model discovery.","maintainer":"yolo-auto-org","tier":"community","category":"models","docs_url":"https://github.com/yolo-auto-org/hermes-provider-yolo-auto#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["YOLO_AUTO_API_KEY","YOLO_AUTO_BASE_URL"]}},{"name":"you","repo":"https://github.com/youdotcom-oss/agent-skills","sha":"08f3d80e7ca9518ccc64b38b365a78cc4a762691","description":"You.com skills for live web search, URL content extraction, cited research, finance research, and integration discovery via the You.com MCP servers (api.you.com). Portable Agent Plugins v1 package (mcp.json + skills/, five skills bundled); auth via YDC_API_KEY, OAuth, or MPP/x402 — the free profile works keyless.","maintainer":"youdotcom-oss","tier":"community","category":"web","requires_hermes":">=0.20","docs_url":"https://github.com/youdotcom-oss/agent-skills#readme","version":"0.6.0","image":"https://raw.githubusercontent.com/youdotcom-oss/agent-skills/08f3d80e7ca9518ccc64b38b365a78cc4a762691/assets/logo.png","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":[]}},{"name":"zalo-platform","repo":"https://github.com/moken627-hub/hermes-plugin-zalo","sha":"5a989368d0877c930e76fcc75ea125e7af7ea872","description":"Zalo Bot Platform gateway adapter for Hermes Agent — relays messages between Zalo DMs/groups and the agent over the official Bot API (bot-api.zaloplatforms.com), long-polling or webhook mode. Adds slash commands and moderation. Zero extra dependencies (uses httpx, already a Hermes dependency). Production-tested on multiple Vietnamese deployments. Disclosure — connects to the third-party Zalo Bot API (bot-api.zaloplatforms.com) with your bot token; long-polling by default, or opt-in webhook mode with a listener on 127.0.0.1 by default that checks the X-Bot-Api-Secret-Token header; the setup wizard writes ZALO_* values to ~/.hermes/.env; group chat history is stored locally under <HERMES_HOME>/zalo-history.","maintainer":"moken627-hub","tier":"community","category":"platform","requires_hermes":">=0.19","docs_url":"https://github.com/moken627-hub/hermes-plugin-zalo#readme","version":"2.1.3","platforms":[],"capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ZALO_BOT_TOKEN"]}},{"name":"zerosignal","repo":"https://github.com/TxnLab/hermes-zerosignal-provider","sha":"ce1ba1f1603b4f191d3cd1aad284879df51a9f4a","version":"0.1.0","description":"ZeroSignal — private, pay-per-request inference through the local zs-proxy; no API key, your wallet is the credential.","maintainer":"TxnLab","tier":"community","category":"models","requires_hermes":">=0.21","docs_url":"https://github.com/TxnLab/hermes-zerosignal-provider#readme","capabilities":{"provides_tools":[],"provides_hooks":[],"provides_middleware":[],"requires_env":["ZEROSIGNAL_API_KEY"]}}],"removed":[{"name":"or-picker","reason":"Folded into openrouter-picker. Installing the provider alone left the picker broken. Install openrouter-picker.","date":"2026-09-28"}]}