{"generated":"2026-11-11T22:46:24Z","deadline":"2026-11-11T22:00:00Z","prs":1593,"entries":[{"name":"offense","title":"offense","summary":"Spin up isolated Offense security sandboxes and summon swarms of independent investigators against a verified staging target: register and verify control of the target, launch a focused sandbox or a broad swarm with per-agent budgets, read deduplicated findings and checksummed evidence, verify a candidate in a fresh sandbox, and retest after a fix.","disclosure":"the plugin sends assessment tasks, the registered target URL, and run results to the configured Offense API (https://app.offense.sh by default, overridable for self-hosted); it reads OFFENSE_API_KEY through Hermes' agent.secret_scope.get_secret and never a key file or another tool's credential store; it runs no shell commands and reads no local files; launches spend real money on the user's Offense account ($1 per sandbox by default, agents x $1 per swarm, stated before launch and refunded when stopped); no telemetry.","category":"tools","platforms":[],"maintainer":"offense-research","author":"imranye","version":"0.2.0","requires_hermes":">=0.19.0","repo":"https://github.com/offense-research/offense-hermes-plugin","docs":"https://github.com/offense-research/offense-hermes-plugin/blob/0ec5ee48170986db7c70061b1127448d642e2bfc/README.md","tools":["offense_status","offense_register_target","offense_verify_target","offense_launch_sandbox","offense_list_sandboxes","offense_get_sandbox","offense_wait_sandbox","offense_sandbox_findings","offense_sandbox_evidence","offense_stop_sandbox","offense_verify_finding","offense_retest_finding","offense_list_swarms","offense_summon_swarm","offense_get_swarm","offense_wait_swarm","offense_stop_swarm"],"hooks":["pre_llm_call"],"middleware":[],"env":["OFFENSE_API_KEY"],"known_issues":"","state":"open","pr":154115,"prs":[{"n":154115,"state":"open","created":"2026-11-11T22:34:17Z"}],"created":"2026-11-11T22:34:17Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"deadline-guard","title":"Deadline Guard","summary":"Deadline governance for Hermes. Reads a local Markdown deadlines table and exposes check_deadlines, next_founder_steps, propose_status_update, and deadline_guard_cron: commitments are bucketed overdue / 24h / 72h / 7d, founder-gated next steps are surfaced before they go critical, and a status can never be recorded as 'submitted' without an http(s) receipt URL - the proposal comes back unapplied for a human to confirm. Ships a daily-check automation blueprint (08:00 cron) and a bundled deadline-guard skill. Validated on Hermes 0.23.0: hermes plugins validate --install-deps exit 0, all 15 checks pass; 47 tests pass.","disclosure":"stdlib only, no network calls, no model calls, no telemetry; reads only the configured local deadlines file (config deadlines_path, default examples/hackathon-deadlines.md); writes nothing itself.","category":"automation","platforms":[],"maintainer":"Snedz","author":"Snedz","version":"0.1.7","requires_hermes":">=0.21.4","repo":"https://github.com/Snedz/hermes-deadline-guard","docs":"https://github.com/Snedz/hermes-deadline-guard#readme","tools":["check_deadlines","next_founder_steps","propose_status_update","deadline_guard_cron"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154112,"prs":[{"n":154112,"state":"open","created":"2026-11-11T22:24:29Z"}],"created":"2026-11-11T22:24:29Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"portal-engine","title":"portal-engine","summary":"Interactive \"portal\" engine for Hermes: OpenCV + MediaPipe real-time hand tracking (up to 4 hands) with glowing-hand, portal-ring, pass-through and particle effects, camera-to-screen calibration (auto / manual / checkerboard), and a video output bridge (Syphon on macOS, Spout on Windows, NDI cross-platform, virtual camera on Linux, shared-memory fallback) so MadMapper, Resolume, TouchDesigner, vMix or OBS can consume the \"PortalEngine\" stream. 8 agent tools + on_session_end cleanup hook + bundled skill.","disclosure":"requires a local camera and opens a local OpenCV window; all processing is on-device; no network calls, no shell commands, no stored credentials. Optional pip packages (mediapipe, opencv-python, numpy, ndi-python, spout-gl, pyvirtualcam) are NOT auto-installed: the plugin loads without them and returns clear JSON errors with the install command. Requires Python 3.8-3.12 (MediaPipe wheel ceiling, declared via python_runtime in plugin.yaml). Optional projector for projection mapping.","category":"tools","platforms":[],"maintainer":"bazziba-it","author":"bazziba-it","version":"0.1.0","requires_hermes":">=0.21","repo":"https://github.com/bazziba-it/hermes-plugin-portal-engine","docs":null,"tools":["portal_start","portal_stop","portal_calibrate","portal_status","portal_list_cameras","portal_syphon_start","portal_syphon_stop","portal_syphon_status"],"hooks":["on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154111,"prs":[{"n":154111,"state":"open","created":"2026-11-11T22:22:16Z"}],"created":"2026-11-11T22:22:16Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"injection-range","title":"injection-range — prompt-injection fire drill","summary":"A prompt-injection fire drill for your own agent. /drill run plants eight documents, one at a time, each carrying a test injection (plain override, hidden HTML comment, forged system message, memory poisoning, base64, reply hijack, and two delegated-task cases where you tell the agent to follow a document), gives the agent an ordinary task with each, blocks any tool call that carries a drill canary before it runs (pre_tool_call), and scores each scenario as held, neutralized by a guard, or compromised from the tool calls and model requests it observed, never from the model's own account. Use it to test a model, or a guard plugin, before you trust the agent with real documents.","disclosure":"hooks see every session's tool calls and turns and return at once when no drill is running; during a drill it reads outgoing request messages to check the payload arrived (not stored), blocks canary-carrying tool calls with a neutral message, and queues one user-role task per scenario into the session that ran /drill (terminal UI only, and only with plugins.entries.injection-range.allow_gateway_injection: true; otherwise it shows the task for you to send). Ships its test injections as plain text in scenarios.py; every payload points at a per-run random token or the reserved host range.invalid, and none asks for a secret or a real file. Writes planted documents to per-scenario temp folders (deleted when the scenario ends) and the last 20 results to its plugin data folder (verdicts, the first 240 characters of each blocked call's arguments, the first 400 characters of each drill reply). No network, subprocesses, tools, credentials, telemetry, background threads or dependencies.","category":"tools","platforms":[],"maintainer":"browncyber","author":"phant0mbot","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/browncyber/hermes-injection-range","docs":"https://github.com/browncyber/hermes-injection-range/tree/5bb785f4d9010e0964e02e8707bd390f3eb1cb62#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","pre_api_request","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154110,"prs":[{"n":154110,"state":"open","created":"2026-11-11T22:21:30Z"}],"created":"2026-11-11T22:21:30Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"barrier-shield","title":"Barrier Shield","summary":"Control-Barrier Function (h(x) >= 0) and Lyapunov continuous safety shield that solves a real-time Quadratic Program (QP) to smoothly dampen aggressive tool actions.","disclosure":"","category":"tools","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-barrier-shield","docs":"https://github.com/arjunbagga-xyz/hermes-barrier-shield#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154107,"prs":[{"n":154107,"state":"open","created":"2026-11-11T22:18:46Z"}],"created":"2026-11-11T22:18:46Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"timecapsule","title":"timecapsule","summary":"Sealed messages for later — seal a note so it cannot be read until its release condition is met (a date, N days of silence, or the sealer's explicit release), with a grace ladder and slow, announced deletion. Local-only, stdlib-only, no network.","disclosure":"","category":"tools","platforms":[],"maintainer":"brayedan","author":"brayedan","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/brayedan/timecapsule","docs":null,"tools":["timecapsule_seal","timecapsule_list","timecapsule_open","timecapsule_delete","timecapsule_restore","timecapsule_reseal","timecapsule_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154106,"prs":[{"n":154106,"state":"open","created":"2026-11-11T22:17:39Z"}],"created":"2026-11-11T22:17:39Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"paranoy","title":"Paranoy","summary":"Read and write a Paranoy evidence ledger from Hermes: search, file and link claims, evidence and contradictions in shared collections, with roles (Scout, Claim Miner, Linker, Gap Finder, Fool, Ponder, Ledger) and optional capture of chat messages as evidence. The agent's Nostr key stays in Hermes as a declared secret; writes are signed in-process and the model never holds the key.","disclosure":"calls go over HTTPS to {server_url}/mcp (default https://paranoy.org/mcp); paranoy_fetch_url asks that server to fetch a public http(s) URL; writes ask a person first by default and are refused in cron unless allow_unattended_writes is on; capture (off by default) auto-publishes human messages and extracted claims when enabled; rejects, journal, role checkpoints and overview.md are written under the plugin data directory. No telemetry, shell commands, background processes, self-update or core overrides.","category":"tools","platforms":[],"maintainer":"DeleganceAI","author":"dtdannen","version":"0.4.0","requires_hermes":">=0.21.0","repo":"https://github.com/DeleganceAI/hermes-plugin-paranoy","docs":"https://paranoy.org/docs","tools":["paranoy_list_collections","paranoy_list_members","paranoy_list_delegations","paranoy_search_claims","paranoy_list_claims","paranoy_list_evidence","paranoy_get_event","paranoy_get_links","paranoy_search_contradictions","paranoy_check_proof","paranoy_fetch_url","paranoy_status","paranoy_add_evidence","paranoy_add_claim","paranoy_add_link","paranoy_add_contradiction","paranoy_log_reject","paranoy_journal","paranoy_set_active_role","paranoy_set_topic","paranoy_add_members","paranoy_remove_members","paranoy_set_admins","paranoy_create_collection","paranoy_update_overview","paranoy_set_collection_agents","paranoy_set_account_agents","paranoy_set_profile","paranoy_set_collection","paranoy_set_mode","paranoy_set_roles","paranoy_set_capture","paranoy_whoami","paranoy_schedule_job"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","pre_gateway_dispatch","subagent_start","subagent_stop"],"middleware":["llm_execution"],"env":[],"known_issues":"Needs a Paranoy account and an agent key from https://paranoy.org/connect. Without PARANOY_BOT_SECRET_HEX the plugin loads but signed calls fail.","state":"open","pr":154105,"prs":[{"n":154105,"state":"open","created":"2026-11-11T22:16:51Z"}],"created":"2026-11-11T22:16:51Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-webmcp-bridge","title":"Hermes WebMCP Bridge","summary":"Permission-aware, ephemeral WebMCP capabilities with origin allowlists, schema validation, conservative risk classification, exact one-call approvals, and safe revocation.","disclosure":"connects only to operator-configured Chrome DevTools WebSocket endpoints and invokes website-provided WebMCP tools; those websites may make their own network requests. It does not launch a browser, read credentials, execute arbitrary JavaScript, or persist website capabilities.","category":"web","platforms":[],"maintainer":"NifasathA","author":"NifasathA","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/NifasathA/hermes-webmcp-bridge","docs":"https://github.com/NifasathA/hermes-webmcp-bridge/blob/c75bece094260f45c6e9ff7792dae0aea3686920/README.md","tools":["webmcp_connect","webmcp_list_tools","webmcp_execute","webmcp_disconnect"],"hooks":["pre_tool_call","on_session_end","on_session_reset"],"middleware":["tool_execution"],"env":[],"known_issues":"Requires an operator-managed Chromium 149+ CDP endpoint started with WebMCP experimental features enabled.; Regular Chromium 151+ on Linux ARM64 may hit upstream navigation issue 554752968; chromium-shell is the verified workaround.; WebMCP remains experimental, and website-provided tool behavior is outside the plugin's control.","state":"open","pr":154104,"prs":[{"n":154104,"state":"open","created":"2026-11-11T22:16:40Z"}],"created":"2026-11-11T22:16:40Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"plastis3d","title":"Plastis3D","summary":"A local 3D scene editor for Hermes Desktop, with agent tools to build and edit scenes.","disclosure":"","category":"desktop","platforms":[],"maintainer":"midnightbobarun","author":"midnightbobarun","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/midnightbobarun/Plastis3D","docs":null,"tools":["plastis3d_list_scenes","plastis3d_new_scene","plastis3d_get_scene","plastis3d_check_gltf","plastis3d_analyze","plastis3d_cleanup","plastis3d_build_scene","plastis3d_add_node","plastis3d_update_node","plastis3d_set_material","plastis3d_duplicate_node","plastis3d_delete_node","plastis3d_import_model","plastis3d_open_in_desktop","plastis3d_export_glb","plastis3d_undo","plastis3d_redo","plastis3d_curve","plastis3d_clone","plastis3d_displace","plastis3d_screenshot"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154103,"prs":[{"n":154103,"state":"open","created":"2026-11-11T22:15:58Z"}],"created":"2026-11-11T22:15:58Z","late":true,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"specsentry","title":"specsentry","summary":"Evidence-backed API contract drift analysis using OpenAPI and HAR traffic, with deterministic verdicts, coverage intelligence, and reproducible regression tests.","disclosure":"","category":"tools","platforms":[],"maintainer":"birdcoin0","author":"birdcoin0","version":"0.1.0","requires_hermes":"","repo":"https://github.com/birdcoin0/SpecSentry","docs":null,"tools":["specsentry_scope_check","specsentry_drift"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154101,"prs":[{"n":154101,"state":"open","created":"2026-11-11T22:12:08Z"}],"created":"2026-11-11T22:12:08Z","late":true,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-skill-router","title":"hermes-skill-router","summary":"Removes the always-on skill catalog from every request and injects a short fused shortlist instead. Learns which skills you loaded for similar prompts.","disclosure":"","category":"tools","platforms":[],"maintainer":"mortang2410","author":"mortang2410","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/mortang2410/hermes-skill-router","docs":null,"tools":["skill_router_search"],"hooks":[],"middleware":["llm_request"],"env":[],"known_issues":"","state":"open","pr":154098,"prs":[{"n":154098,"state":"open","created":"2026-11-11T22:09:00Z"}],"created":"2026-11-11T22:09:00Z","late":true,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mortang2410/hermes-skill-router/edffe7bbefb624cd4a755c3d25ddcbbc2b8b8745/docs/assets/performance.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-skill-router.webp"},{"name":"hermes-lyrics","title":"Lyrics","summary":"Time-synced lyrics for the song playing on Spotify: a Hermes Desktop page that highlights and centres the current line as the song plays, click any line to seek, with a per-user sync offset. Lyrics from the public LRCLIB API; playback through the official spotify plugin.","disclosure":"","category":"desktop","platforms":[],"maintainer":"amitamit10","author":"amitamit10","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/amitamit10/hermes-lyrics","docs":"https://github.com/amitamit10/hermes-lyrics","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154097,"prs":[{"n":154097,"state":"open","created":"2026-11-11T22:07:23Z"}],"created":"2026-11-11T22:07:23Z","late":true,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/amitamit10/hermes-lyrics/12c318d21ede7674b69512bfc3204cd866d950b4/assets/screenshot.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-lyrics.webp"},{"name":"atlas-sidecar-powerpoint","title":"Sidecar for PowerPoint","summary":"Sidecar by Atlas Omnia — Your Hermes agent, in the sidebar of Microsoft Excel, Word, and PowerPoint. Sidecar puts your Hermes agent in a side panel next to the file you're working on. Ask it to draft, edit, analyze, or build without leaving your document, spreadsheet, or deck. In PowerPoint it reads slides, adds slides, text boxes and shapes, replaces and formats text, and reorders, deletes or re-lays out slides. After one manual local-CA trust step, connect with one click; approval authorizes subsequent chat-driven edits, not per-edit confirmation; runs on your machine, no API key files (protected TLS keys in plugin data). Your agent: it runs on your own Hermes setup, with the models and tools you already use. Setup: install the plugin, enable the Hermes API server, manually trust the per-install local CA using the printed command (never run automatically), load the sidebar manifest into PowerPoint, click Connect to Hermes and allow it in Hermes with /sidecar-powerpoint.","disclosure":"runs an HTTPS localhost listener bound to 127.0.0.1:47650-47654 (first free port) inside the process that runs the Hermes gateway (or plugin host) from when the gateway loads the plugin (setting autostart, default on; off: from the first /sidecar-powerpoint or sidecar_powerpoint_* call) until the plugin stops or Hermes exits; it accepts only the sidebar site's exact origin (plugin setting addin_base) and exactly one Host localhost:<actual-port>. A per-install CA and localhost certificate are generated in plugin-data/atlas-sidecar-powerpoint/tls/; private keys are owner-only, never logged. For TLS it can only vouch for localhost. The trust command does not limit the certificate to TLS, so protect the key file and remove the trust when you stop using Sidecar. Critical permitted DNS localhost subtree and IP 127.0.0.1/32; no IPv6; CA validity is at most 825 days, leaf at most 397. Legacy unconstrained CAs refuse service: manually remove old trust before deleting the TLS directory and restarting. Protect its CA key and remove OS trust manually on uninstall. Requires cryptography>=43. Allowing lets the configured origin use your Hermes agent and all its tools until you revoke. Use a site you control or trust; open only documents you trust. A sidebar gets a session only after the user allows it in Hermes (/sidecar-powerpoint, or hermes sidecar-powerpoint allow); the approval is remembered as a SHA-256 hash of a per-sidebar grant in plugin-data/atlas-sidecar-powerpoint/approvals.json (owner-only) and revoked with /sidecar-powerpoint revoke. No Sidecar tool can approve; an agent with shell access could run the CLI allow command, subject to Hermes command approval. Forwards the sidebar's chat requests to the user's Hermes API server on loopback (setting api_server_url, default http://127.0.0.1:8642) with API_SERVER_KEY (requires_env, secret) read through agent.secret_scope.get_secret, kept in memory only, never written, logged or sent to the sidebar. The sidebar page is served from addin_base, outside this catalog pin; it loads Office.js from appsforoffice.microsoft.com and sends document data only to the HTTPS localhost bridge; a reproducible build (npm run build:static) writes SHA256SUMS. Tool calls from another Hermes chat than the sidebar's are refused. The bridge makes no other outbound service calls, runs no shell commands and has no telemetry or self-updater. Hermes itself uses the configured model/provider and tools; local bridge transport is not a promise of local-only inference. Same author as Workbench (hermes-office-desktop, Office for the web in Hermes Desktop); separate lineage (desktop Office sidebar), distinct sidecar_powerpoint_ tool names and ports, installable together. Sidecar is developed by Atlas Omnia. It is not affiliated with or endorsed by Microsoft or Nous Research. Microsoft, Excel, Word, and PowerPoint are trademarks of the Microsoft group of companies.","category":"tools","platforms":["macos"],"maintainer":"AtlasOmnia","author":"AtlasOmnia","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/AtlasOmnia/sidecar","docs":"https://github.com/AtlasOmnia/sidecar/tree/cae879e0cddead4717ba381bc759e91552c9ee39/powerpoint#readme","tools":["sidecar_powerpoint_get_presentation_overview","sidecar_powerpoint_read_selected_slides","sidecar_powerpoint_read_all_slides","sidecar_powerpoint_create_slide","sidecar_powerpoint_create_text_slide","sidecar_powerpoint_add_text_box","sidecar_powerpoint_update_slide_text","sidecar_powerpoint_add_shape","sidecar_powerpoint_read_slide_content","sidecar_powerpoint_delete_slide","sidecar_powerpoint_reorder_slide","sidecar_powerpoint_find_and_replace_text","sidecar_powerpoint_list_slide_layouts","sidecar_powerpoint_set_slide_layout","sidecar_powerpoint_format_text"],"hooks":[],"middleware":[],"env":["API_SERVER_KEY"],"known_issues":"TLS-only trust (-p ssl) and a server-auth EKU on the CA are planned hardening; neither is implemented yet.; Live-tested in desktop PowerPoint for Mac at `315f1f0`, 2026-11-11 about 00:32: Connect and Allow; one prompt changed slide 1's title and subtitle, verified by readback from the deck, and produced exactly one request to Hermes. After a plugin reload with the sidebar open, it showed “Lost the connection to Hermes on this computer.” with a Try again button; Try again reconnected. Revoke dropped the sidebar to “needs your OK”. In the earlier run at `3682e5f`, about 00:01 the same night (behaviour unchanged since), one prompt changed slide 1's title and subtitle and added a second slide with three bullets, verified by readback. The request stayed open for about 24 seconds with no timeout or repeat. After a plugin reload in that run the sidebar showed “Not connected” and did not reconnect within 10 seconds; reopening it connected. Reversal on request restored the deck (no real undo). Approval was remembered after restarting PowerPoint; the next Connect after revoke asked for approval again. PowerPoint needs Try again (or reopen the sidebar) after a plugin reload; Excel and Word reconnect by themselves. Both runs used a private test site via the `addin_base` setting, with the CA trusted in the login keychain only. Windows desktop PowerPoint is untested. Dark theme, keyboard-only use, PowerPoint for the web and TLS-only trust were not tested. The public GitHub Pages origin is first exercised at publication.; The sidebar must reach https://localhost with the per-install local CA manually trusted; network restrictions or missing trust leave the sidebar on 'Hermes is not reachable'.; Default addin_base: https://atlasomnia.github.io/sidecar-powerpoint/. Live-tested with the sidebar served from a private test site; the public GitHub Pages origin is first exercised at publication.; After a plugin reload, use Try again or reopen the sidebar to reconnect. After an update, close and reopen the sidebar to load the current pane. There is no real undo: Hermes reverses an edit by editing again. Stopping does not roll back edits.; Trust the plugin local CA once using the printed login-keychain command. To remove on Mac: Keychain Access > login > Certificates > Sidecar for PowerPoint local CA ... (older installs: Sidecar local CA ...) > Delete, then delete only this plugin's tls folder while stopped.","state":"open","pr":154095,"prs":[{"n":154095,"state":"open","created":"2026-11-11T22:07:11Z"}],"created":"2026-11-11T22:07:11Z","late":true,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"atlas-sidecar-word","title":"Sidecar for Word","summary":"Sidecar by Atlas Omnia — Your Hermes agent, in the sidebar of Microsoft Excel, Word, and PowerPoint. Sidecar puts your Hermes agent in a side panel next to the file you're working on. Ask it to draft, edit, analyze, or build without leaving your document, spreadsheet, or deck. In desktop Word for Mac it reads the document and selection, inserts and replaces text, applies exact-match edit plans, formatting, styles and comments. After one manual local-CA trust step and pane approval, the agent may read and write the bound document; this is not per-edit approval. No API keys stored by the plugin; TLS private keys are protected in plugin data. Your agent: it runs on your own Hermes setup, with the models and tools you already use. Setup: install the plugin, enable the Hermes API server, manually trust the per-install local CA using the printed user-scope command, load the sidebar manifest into Word, click Connect to Hermes and allow it in Hermes with /sidecar-word.","disclosure":"runs an HTTPS listener at https://localhost:47630-47634 bound to IPv4 127.0.0.1 (first free port) inside the process that runs the Hermes gateway (or plugin host) from when the gateway loads the plugin (setting autostart, default on; off: from the first /sidecar-word or sidecar_word_* call) until Hermes exits; it accepts only the sidebar site's exact origin (plugin setting addin_base) and exactly one Host localhost:<actual-port>. A per-install CA and localhost certificate are generated in plugin-data/atlas-sidecar-word/tls/; private keys are owner-only, never logged. For TLS it can only vouch for localhost. The trust command does not limit the certificate to TLS, so protect the key file and remove the trust when you stop using Sidecar. TLS name constraints permit DNS localhost subtree and IP 127.0.0.1/32; no IPv6; CA validity is at most 825 days, leaf at most 397. Legacy unconstrained CAs refuse service: manually remove old trust before deleting the TLS directory and restarting. Protect its CA key and remove OS trust manually on uninstall. Requires cryptography>=43. A sidebar gets a session only after the user allows it in Hermes (/sidecar-word, or hermes sidecar-word allow); the approval is remembered as a SHA-256 hash of a per-sidebar grant in plugin-data/atlas-sidecar-word/approvals.json (owner-only) and revoked with /sidecar-word revoke. No Sidecar tool can approve; an agent with shell access could run the approval CLI subject to Hermes command approval. Allowing lets the whole configured origin use your Hermes agent and all its tools until revoke. Use a site you control or trust; open only documents you trust. Forwards the sidebar's chat requests to the user's Hermes API server on loopback (setting api_server_url, default http://127.0.0.1:8642) with API_SERVER_KEY (requires_env, secret) read through agent.secret_scope.get_secret, kept in memory only, never written, logged or sent to the sidebar. The sidebar page is served from addin_base, outside this catalog pin; it loads Office.js from appsforoffice.microsoft.com and sends document data only to the verified HTTPS localhost bridge; a reproducible build (npm run build:static) writes SHA256SUMS. Pane approval authorizes all known tools, including new content and formatting, only for a valid bound session with active approval. Unknown tools, invalid or missing sessions and revoked approvals fail closed. No comment-per-turn guard is claimed without a trustworthy turn id; tool calls from another Hermes chat than the sidebar's are refused. No other network calls, no shell commands, no telemetry, no self-updater. Same author as Workbench (hermes-office-desktop, Office for the web in Hermes Desktop); separate lineage (desktop Office sidebar), distinct sidecar_word_ tool names and ports, installable together. Sidecar is developed by Atlas Omnia. It is not affiliated with or endorsed by Microsoft or Nous Research. Microsoft, Excel, Word, and PowerPoint are trademarks of the Microsoft group of companies.","category":"tools","platforms":["macos"],"maintainer":"AtlasOmnia","author":"AtlasOmnia","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/AtlasOmnia/sidecar","docs":"https://github.com/AtlasOmnia/sidecar/tree/cae879e0cddead4717ba381bc759e91552c9ee39/word#readme","tools":["sidecar_word_get_document_overview","sidecar_word_read_selection","sidecar_word_read_document_text","sidecar_word_apply_edit_plan","sidecar_word_insert_text","sidecar_word_replace_selection","sidecar_word_find_replace","sidecar_word_format_selection","sidecar_word_get_document_structure","sidecar_word_apply_style","sidecar_word_insert_ooxml","sidecar_word_insert_comment"],"hooks":[],"middleware":[],"env":["API_SERVER_KEY"],"known_issues":"After updating or reloading the plugin, reopen the sidebar if it does not reconnect. Sidecar provides no real undo tool: use native Office Undo, verified for a supported short edit only. Asking Hermes to reverse an edit edits again.; Trust the per-install local CA once using the printed login-keychain command. Remove it in Keychain Access > login > Certificates > Sidecar for Word local CA … > Delete (older installs: Sidecar local CA …), then delete the plugin tls folder.; Historical pre-repair failure, superseded by accepted d4d0de9 repair: tested live in desktop Word for Mac on 2026-11-11 at about 00:29, with the plugin and sidebar built from 7eaf1fc. Connect and Allow worked. The prompt “Write the line Quarterly Summary as a Heading 1, then one short paragraph about fruit prices” wrote both paragraphs, which were read back from the document, but the first line ended as Normal, not Heading 1. OOXML merged the heading/body before an apply_edit_plan search failed with SearchStringInvalidOrTooLong on a retained 312-character ASCII find. Later recovery restored separate text paragraphs, but final style readback was Normal; the precise style-loss operation is unisolated. Revoke dropped the sidebar to “needs your OK”. Earlier the same night at 2387154 (historical run): heading text and a bulleted list written with readback; Heading 1 style applied when asked; reversal on request removed the text but left empty paragraphs (no real undo). Plugin reload with the sidebar open reconnected by itself; approval was remembered after restarting Word; the next Connect after revoke asked for approval again. The sidebar was served from a private test site via addin_base; the CA was trusted in the login keychain only. Windows desktop Word is not tested. Dark theme, keyboard-only use, Word for the web, the public GitHub Pages origin, and TLS-only trust are not tested.; Retained evidence identifies the failed search as 312 ASCII characters, beyond Word’s 255-character search bound. OOXML had already merged the heading/body before that failure; final Heading 1 was Normal, but the exact operation losing style remains unisolated. Accepted d4d0de9 repair passed 429 JavaScript and 213 Python tests and bounded native Word 16.114.4/macOS 27.2 tests for heading/body styles, targeted repair, search boundaries, short-edit native Office Undo and revoke. Picture-only paragraph sharing, arbitrary rich formatting, fields/content controls and comprehensive native Unicode/5000-character replacement remain unqualified. The repaired bounds are: source and encoded queries are capped at 255 UTF-16 units, replacement capacity stays 5000, actual styles are read back, and failed searches must stop destructive recovery. Guidance is not a hard execution fence; use native Office Undo for recovery after uncertain mutations.; Two internal error messages still say Hermes for Word.; The sidebar must reach https://localhost from its HTTPS page with the local CA manually trusted for the current user. Local network policies may still block it; backend TLS tests are not live Office acceptance.; The installer can override addin_base. The public default is https://atlasomnia.github.io/sidecar-word/; first public-origin live test is at publication. Planned hardening: TLS-only trust (-p ssl) and a server-auth EKU on the CA.","state":"open","pr":154094,"prs":[{"n":154094,"state":"open","created":"2026-11-11T22:07:07Z"}],"created":"2026-11-11T22:07:07Z","late":true,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"atlas-sidecar-excel","title":"Sidecar for Excel","summary":"Sidecar by Atlas Omnia — your Hermes agent in desktop Excel for Mac. The plugin runs an HTTPS localhost bridge on ports 47640-47644, exposing 28 sidecar_excel_* tools and opt-in workbook plans. Manual CA trust and one sidebar Allow are required. Allowing lets the configured site use your Hermes agent and all its tools until revoke; use a site you control or trust and open only documents you trust. API_SERVER_KEY is read through Hermes, never sent to the sidebar or stored by the plugin; TLS private keys are owner-only. For TLS it can only vouch for localhost. The trust command does not limit the certificate to TLS, so protect the key file and remove the trust when you stop using Sidecar. Latest live run: 2026-11-11 about 00:26 in desktop Excel for Mac, plugin and sidebar built from a7b3fd7. Connect, Allow, a 3-row table with header in A1:B4 and =SUM(B2:B4) in B5 read back from the workbook; revoke dropped the sidebar to needs your OK. The bridge answered 200 to the configured origin and 403 to another origin. The sidebar used a private test site via addin_base, with CA trust in the login keychain; this Mac also has it in the System keychain. Earlier the same night at 35ef09e (behaviour unchanged since): reversal on request by clearing the range (no real undo), plugin reload with the sidebar open (it reconnected by itself and edited again), approval remembered after restarting Excel, next Connect after revoke asked for approval again. Not tested: Windows desktop Excel, dark theme, keyboard-only use, public Pages origin, TLS-only trust or all workbook tools/plans. Reopen the sidebar if it does not reconnect. The Excel test Mac also has System-keychain trust; that was not required in our Word and PowerPoint runs, which used login-keychain trust only. The default sidebar site is https://atlasomnia.github.io/sidecar-excel/ (publication pending); it is outside the catalog pin, and its origin is shared with other account Pages sites. Office.js loads from Microsoft. Hermes may send chat/workbook data to the configured provider. CLI approval/status never starts a listener. Remove matching CA trust manually before deleting the plugin tls directory; uninstall/revoke does not remove OS trust. No telemetry or self-updater. Apache-2.0; LICENSE and NOTICE included. No Microsoft or Nous Research endorsement.","disclosure":"","category":"tools","platforms":["macos"],"maintainer":"AtlasOmnia","author":"AtlasOmnia","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/AtlasOmnia/sidecar","docs":"https://github.com/AtlasOmnia/sidecar/tree/cae879e0cddead4717ba381bc759e91552c9ee39/excel#readme","tools":["sidecar_excel_get_workbook_overview","sidecar_excel_read_range","sidecar_excel_summarize_range_stats","sidecar_excel_write_range","sidecar_excel_format_range","sidecar_excel_conditional_format_range","sidecar_excel_freeze_panes","sidecar_excel_set_data_validation","sidecar_excel_create_sheet","sidecar_excel_delete_sheet","sidecar_excel_activate_sheet","sidecar_excel_insert_table","sidecar_excel_sort_table","sidecar_excel_filter_table","sidecar_excel_create_chart","sidecar_excel_find_replace","sidecar_excel_clear_range","sidecar_excel_autofill_formula","sidecar_excel_rename_sheet","sidecar_excel_copy_sheet","sidecar_excel_protect_sheet","sidecar_excel_unprotect_sheet","sidecar_excel_create_pivot_table","sidecar_excel_run_calculation","sidecar_excel_add_comment","sidecar_excel_clear_comments","sidecar_excel_import_csv_to_sheet","sidecar_excel_execute_plan"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":["API_SERVER_KEY"],"known_issues":"Live-tested only for the limited desktop Excel for Mac flow in the README; reload with an open sidebar reconnected and edited again. Windows desktop Excel is untested.; The sidebar must reach https://localhost with the per-install local CA manually trusted; network restrictions or missing trust leave the sidebar on 'Hermes is not reachable'.; Public GitHub Pages origin live testing is pending publication. TLS-only trust (-p ssl) and a server-auth EKU on the CA are planned hardening.","state":"open","pr":154093,"prs":[{"n":154093,"state":"open","created":"2026-11-11T22:07:01Z"}],"created":"2026-11-11T22:07:01Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-office-desktop","title":"Workbench by Atlas Omnia","summary":"Workbench by Atlas Omnia — Open and edit Word, Excel, PowerPoint, OneNote and Outlook for the web in Hermes Desktop. Live-tested in the automated harness and real Hermes Desktop sessions on macOS and Windows; see docs/live-evidence.md. Every edit requests Hermes approval and returns a readback/undo receipt; undo has exceptions (large Word snapshots, Excel over 10,000 cells, some PowerPoint edits and OneNote page creation), and history is lost on pane reload. powerpoint_add_speaker_notes returns Unsupported. Requires Microsoft sign-in and Upload My Add-in. A loopback HTTP bridge on 127.0.0.1:47615-47619 accepts the configured add-in origin and a user-typed single-use code, then a per-pane token; idle listeners release after ten minutes. Default add-in site: https://atlasomnia.github.io/workbench/office/live/ (GitHub Pages, outside this catalog pin; rebuild with scripts/build_addin.py and compare SHA256SUMS). Live runs used a private site; the public origin is first exercised at publication. The pane loads Microsoft Office.js. Document data enters the local Hermes conversation; OneNote pages and email indexed on request persist unencrypted in brain.db. Reads are capped at 20,000 characters for Word and Outlook bodies. No Graph, credentials, telemetry, shell commands or unattended runs. Outlook reads only the open item; mail and calendar drafts are never sent or saved and recipients/attendees never changed. Image URL fetches alone use outbound HTTPS (public addresses, checked redirects, PNG/JPEG, 4 MiB); local images are restricted to allowed folders. Full disclosures and known limits: README and docs/reference.md. Not affiliated with Microsoft or Nous Research.","disclosure":"","category":"tools","platforms":["macos","windows"],"maintainer":"AtlasOmnia","author":"AtlasOmnia","version":"0.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/AtlasOmnia/workbench","docs":"https://github.com/AtlasOmnia/workbench#readme","tools":["excel_get_workbook_overview","excel_read_range","excel_summarize_range_stats","excel_write_range","excel_format_range","excel_conditional_format_range","excel_freeze_panes","excel_set_data_validation","excel_create_sheet","excel_delete_sheet","excel_activate_sheet","excel_insert_table","excel_sort_table","excel_filter_table","excel_create_chart","excel_find_replace","excel_clear_range","excel_autofill_formula","excel_rename_sheet","excel_copy_sheet","excel_protect_sheet","excel_unprotect_sheet","excel_create_pivot_table","excel_run_calculation","excel_add_comment","excel_clear_comments","excel_import_csv_to_sheet","word_get_document_overview","word_read_selection","word_read_document_text","word_apply_edit_plan","word_insert_text","word_replace_selection","word_find_replace","word_format_selection","word_get_document_structure","word_apply_style","word_insert_ooxml","word_insert_comment","powerpoint_get_presentation_overview","powerpoint_read_selected_slides","powerpoint_read_all_slides","powerpoint_create_slide","powerpoint_create_text_slide","powerpoint_add_text_box","powerpoint_update_slide_text","powerpoint_add_speaker_notes","powerpoint_add_shape","powerpoint_read_slide_content","powerpoint_delete_slide","powerpoint_duplicate_slide","powerpoint_reorder_slide","powerpoint_find_and_replace_text","powerpoint_list_slide_layouts","powerpoint_set_slide_layout","powerpoint_format_text","powerpoint_add_image","onenote_get_context","onenote_list_sections","onenote_list_pages","onenote_get_page","onenote_create_page","onenote_append","onenote_insert_table","onenote_open_page","brain_sync","brain_ask","brain_links","brain_link_both_ways","brain_decision_page","brain_make_deliverables","brain_why","brain_resurface","brain_from_email","outlook_get_item","outlook_insert","outlook_draft_reply","outlook_draft_new","calendar_get_event","calendar_update_draft","calendar_draft_new","office_connect","office_status","office_disconnect","office_undo","office_insert_image"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Windows: run Workbench in one Hermes profile at a time (two profiles can both bind port 47615).; Requires the Hermes Desktop app (macOS 13+ or Windows) on the same machine as the Hermes gateway, or with the bridge ports 47615-47619 forwarded; the browser Webapp (webapp.enabled) preview pane cannot host Office for the web.; Pairing follows the chat session id: after auto-compression or a /rewind fork the pane reports NotPaired and needs a fresh office_connect code.; powerpoint_add_speaker_notes is registered for schema parity but always returns Unsupported: Office.js for the web has no speaker-notes API.; hermes plugins validate warns (rule 9) about two private Hermes imports in scripts/livetest/, developer-only live-test scripts that Hermes never loads.","state":"open","pr":154092,"prs":[{"n":154092,"state":"open","created":"2026-11-11T22:06:45Z"}],"created":"2026-11-11T22:06:45Z","late":true,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AtlasOmnia/workbench/3daa481d193bd16143720c23348ebc8fb058e2d7/assets/demo-highlight.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-office-desktop.webp"},{"name":"ai-lab","title":"Hermes AI Lab","summary":"Prepare experiments, compare local models and activate qualified configurations in Hermes.","disclosure":"","category":"models","platforms":[],"maintainer":"BZK-kais","author":"BZK-kais","version":"1.0.0","requires_hermes":">=0.20.1","repo":"https://github.com/BZK-kais/hermes-ai-lab","docs":null,"tools":["ai_lab_status","ai_lab_list_local_models","ai_lab_hf_model_info","ai_lab_probe_endpoint","ai_lab_connections","ai_lab_connection_probe","ai_lab_operations","ai_lab_plan","ai_lab_run","ai_lab_job","ai_lab_provider_action","ai_lab_dataset_validate","ai_lab_artifact_inspect","ai_lab_generate","ai_lab_profile","ai_lab_experiment","ai_lab_analyze","ai_lab_benchmark","ai_lab_optimize","ai_lab_onboarding","ai_lab_mission","ai_lab_registry"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154091,"prs":[{"n":154091,"state":"open","created":"2026-11-11T22:06:02Z"}],"created":"2026-11-11T22:06:02Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/BZK_Kais/status/2120639743394189615"],"youtube":[],"thumb":null},{"name":"butler-assistant","title":"Butler","summary":"Turns Hermes into a proactive personal assistant. You set your daily non-negotiables and Butler checks in until they are done or deferred; you tell it about a commitment and it follows up before it slips. You choose its tone (Gentle to Strict), how persistent it is, quiet hours, time zone and a daily cap on check-ins, and can pause it in one click. A concierge-style Hermes Desktop page shows today's non-negotiables, upcoming commitments, recent activity and preferences, with a 4-step Quick Setup; the same controls are available to the agent as tools in chat.","disclosure":"a background runner thread in the gateway process schedules check-ins, which run as normal turns in your admitted chat on your configured model, billed like any message; with background wakes enabled it sets allow_gateway_injection for this plugin; with system controls on it writes notification and display settings into your Hermes config.yaml (only the keys listed in the README); the optional prompt review writes to SOUL.md and a butler-capabilities skill only after you select and apply each change, keeping backups; the optional 'verify time zone via IP' action calls ipapi.co or worldtimeapi.org only when you ask; iMessage voice and image helpers run local ffmpeg/ffprobe; inbound DM event capture is off by default and needs two separate opt-ins; all state is stored in plaintext SQLite in the profile's plugin-data; no telemetry.","category":"automation","platforms":[],"maintainer":"haykguy","author":"haykguy","version":"0.3.0","requires_hermes":">=0.23.1","repo":"https://github.com/haykguy/butler","docs":"https://github.com/haykguy/butler#readme","tools":["butler_create","butler_manage","butler_expression","butler_imessage","butler_controls"],"hooks":["post_gateway_admission","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Hermes Desktop keeps a packaged plugin's page off until you enable it once: Settings → Plugins → Proactive Assistant.; The plugin's manifest name is `butler`; it cannot be installed alongside another plugin whose manifest name is also `butler`.; butler/routes.py reads three gateway.session_context helpers to identify the active chat route (validator warning, catalog rule 9); a public seam for this would let it drop them.","state":"open","pr":154090,"prs":[{"n":154090,"state":"open","created":"2026-11-11T22:05:48Z"}],"created":"2026-11-11T22:05:48Z","late":true,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/haykguy/butler/a84f432ea0789978f5e83472b46f4a76416747e7/docs/media/banner.png","https://raw.githubusercontent.com/haykguy/butler/a84f432ea0789978f5e83472b46f4a76416747e7/docs/media/overview-full.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/butler-assistant.webp"},{"name":"crucible","title":"Crucible","summary":"Adversarial research and code audits. Proposer agents commit quoted claims, attackers try to break them, a blind referee checks every quote against its source and re-runs every proof of concept in a sandbox, and you get a map of what survived and what was held back.","disclosure":"runs spawn sub-agents on your configured model (spends tokens, capped per run in USD); research mode fetches the web pages it quotes; code mode runs commands and proofs of concept through your terminal backend; run records are stored locally under the plugin data folder; no telemetry.","category":"tools","platforms":[],"maintainer":"samshapley","author":"samshapley","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/samshapley/hermes-crucible","docs":null,"tools":["crucible_run","crucible_check","crucible_ledger"],"hooks":["post_tool_call","transform_llm_output","subagent_start","subagent_stop","post_api_request","post_auxiliary_call"],"middleware":[],"env":[],"known_issues":"A full run takes a few minutes and spends your model's tokens; each run has a USD cap.; Code mode's agents run commands through your terminal backend: audit untrusted repositories with terminal.backend set to docker.; Some providers refuse security-audit agents; set the plugin's agent_model to a model that accepts the work.","state":"open","pr":154089,"prs":[{"n":154089,"state":"open","created":"2026-11-11T22:05:11Z"}],"created":"2026-11-11T22:05:11Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"whoami","title":"whoami","summary":"Coloured pill in the composer showing which Hermes profile a new session will use.","disclosure":"","category":"desktop","platforms":[],"maintainer":"atostivint","author":"atostivint","version":"0.1.0","requires_hermes":"","repo":"https://github.com/atostivint/hermes-whoami","docs":"https://github.com/atostivint/hermes-whoami","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154088,"prs":[{"n":154088,"state":"open","created":"2026-11-11T22:04:36Z"}],"created":"2026-11-11T22:04:36Z","late":true,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/atostivint/hermes-whoami/540ee3612e0df2a7f91f89b0690108abfae97e8e/docs/hero.png","https://raw.githubusercontent.com/atostivint/hermes-whoami/540ee3612e0df2a7f91f89b0690108abfae97e8e/docs/screenshots/composer-astro.png","https://raw.githubusercontent.com/atostivint/hermes-whoami/540ee3612e0df2a7f91f89b0690108abfae97e8e/docs/screenshots/composer-default.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/whoami.webp"},{"name":"smb-growth-agent","title":"SMB Growth Agent","summary":"Local-first growth diagnosis, explainable opportunity ranking, 30-day plans and approval-gated simulated actions for small businesses. Includes two fictional demo businesses and nine tools. No outbound network calls, external execution, credentials, telemetry, or payments. Uses locally stored profile and action state only.","disclosure":"","category":"tools","platforms":[],"maintainer":"jcolano","author":"jcolano","version":"1.0.0","requires_hermes":"","repo":"https://github.com/jcolano/hermes-hackathon","docs":"https://github.com/jcolano/hermes-hackathon","tools":["growth_list_businesses","growth_upsert_business","growth_diagnose","growth_opportunities","growth_plan","growth_propose_action","growth_approve_action","growth_execute_action","growth_action_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":154087,"prs":[{"n":154087,"state":"closed","created":"2026-11-11T22:03:10Z"}],"created":"2026-11-11T22:03:10Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-presenter","title":"Hermes Presenter","summary":"Present a selected JSON slide deck with the calling local Hermes conversation as co-presenter.","disclosure":"","category":"voice","platforms":["linux"],"maintainer":"violetSoftware","author":"violetSoftware","version":"0.1.2","requires_hermes":"","repo":"https://github.com/violetSoftware/hermes-presenter-plugin","docs":null,"tools":["presenter_start","presenter_status","presenter_stop"],"hooks":[],"middleware":[],"env":["ELEVENLABS_API_KEY"],"known_issues":"Requires separately installing companion engine 0.1.0 and its locked npm dependencies from this same pinned repository commit.; Uses undocumented Hermes gateway transport imports; compatibility may break after Hermes updates.; No minimum released Hermes version has been established.","state":"open","pr":154086,"prs":[{"n":154086,"state":"open","created":"2026-11-11T22:03:08Z"}],"created":"2026-11-11T22:03:08Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"finix","title":"Finix","summary":"Encrypted profile backups with cloud readback verification and experimental default-profile recovery.","disclosure":"","category":"automation","platforms":["linux","windows"],"maintainer":"web3blind","author":"web3blind","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/web3blind/finix","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Experimental beta. Full live default-profile restoration and Linux cloud restoration have not passed end-to-end acceptance.; Native Windows archive verification succeeded, but Desktop cold preview timed out before Apply. UI still contains Russian labels.; Requires separately installed age and age-keygen. Keep independent backups and the recovery key off the backup host.","state":"open","pr":154085,"prs":[{"n":154085,"state":"open","created":"2026-11-11T22:02:51Z"}],"created":"2026-11-11T22:02:51Z","late":true,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-creator-forge","title":"hermes-creator-forge","summary":"Four Hermes skills for authoring and reviewing skills, workspace operations, and host-provided Python execution.","disclosure":"","category":"general","platforms":[],"maintainer":"zemhoutepro-beep","author":"zemhoutepro-beep","version":"0.1.0","requires_hermes":"","repo":"https://github.com/zemhoutepro-beep/hermes-creator-forge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"No license file is included in v0.1.0.","state":"open","pr":154084,"prs":[{"n":154084,"state":"open","created":"2026-11-11T22:01:45Z"}],"created":"2026-11-11T22:01:45Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"elm","title":"ELM for Hermes","summary":"Local source-backed memory with bounded retrieval and explicit human control.","disclosure":"","category":"memory","platforms":[],"maintainer":"Miawd3","author":"Miawd3","version":"0.1.0-rc1","requires_hermes":">=0.22.7","repo":"https://github.com/Miawd3/ELM-Hermes-plugin","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Experimental candidate; current-host workspace ownership API is missing and root tests are not green.; Private Hermes imports require review; catalog validation does not establish functional compatibility.; Measured token accounting needs the optional pinned tokenizer and local vocabularies.; Plugin-code update controls are disabled; use Hermes native catalog updates.","state":"open","pr":154082,"prs":[{"n":154082,"state":"open","created":"2026-11-11T22:00:49Z"}],"created":"2026-11-11T22:00:49Z","late":true,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"coinfello","title":"CoinFello","summary":"CoinFello for Hermes: the agent reads your CoinFello automation wallet (balances, positions, LP ranges, open orders, activity, prices, yields, swap and bridge quotes), prepares sends and swaps you approve in Hermes, and talks to Fello, CoinFello's DeFi agent. A desktop pane shows the wallet and portfolio with send, swap, earn and a daily trading allowance, and draws CoinFello's MCP App cards. Sign-in is the plugin's oauth: entry (hermes auth add coinfello:coinfello, OAuth 2.1 + PKCE against app.coinfello.com); Hermes stores and refreshes the grant and the plugin never holds a token.","disclosure":"talks to app.coinfello.com (which records daily usage per session, see the README); token icons from static.cx.metamask.io; cards load Google Fonts; can move funds from the automation wallet within the daily limit the human approves on CoinFello, and coinfello_execute / coinfello_chat always go through Hermes's approval prompt; stores only non-secret pane state in plugin-data; the open pane polls status and balances; no telemetry.","category":"tools","platforms":[],"maintainer":"CoinFello","author":"jiyuu-jin","version":"0.3.3","requires_hermes":">=0.23.0","repo":"https://github.com/CoinFello/hermes-wallet","docs":"https://github.com/CoinFello/hermes-wallet#readme","tools":["coinfello_status","coinfello_connect","coinfello_set_daily_limit","coinfello_limit_status","coinfello_disconnect","coinfello_chat","coinfello_job_status","coinfello_balances","coinfello_positions","coinfello_lp_positions","coinfello_open_orders","coinfello_activity","coinfello_quote","coinfello_prepare_swap","coinfello_prepare_send","coinfello_execute","coinfello_transfer_status","coinfello_yields","coinfello_prices","coinfello_show_card"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154081,"prs":[{"n":154081,"state":"open","created":"2026-11-11T22:00:41Z"}],"created":"2026-11-11T22:00:41Z","late":true,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/CoinFello/hermes-wallet/064bbb66ce281aa950bf5c7922949b53dd537c1e/docs/banner.png","https://raw.githubusercontent.com/CoinFello/hermes-wallet/064bbb66ce281aa950bf5c7922949b53dd537c1e/docs/pane-home.png","https://raw.githubusercontent.com/CoinFello/hermes-wallet/064bbb66ce281aa950bf5c7922949b53dd537c1e/docs/pane-activity.png","https://raw.githubusercontent.com/CoinFello/hermes-wallet/064bbb66ce281aa950bf5c7922949b53dd537c1e/docs/pane-settings.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/coinfello.webp"},{"name":"relay-telegram","title":"relay-telegram","summary":"RELAY incoming agent calls on your Hermes Telegram bot with owner-only Accept and Reject buttons.","disclosure":"the plugin reads Hermes configuration to identify the owner chat, listens on a local Unix socket for RELAY bridge notifications, sends call metadata through Telegram, and forwards approval decisions to the bridge's local socket. The separate RELAY CLI and bridge make outbound connections to the author's hosted relay, manage local identity keys and phonebook data, and run as a background service when installed through the repository installer.","category":"platform","platforms":[],"maintainer":"0xCheetah1","author":"0xCheetah1","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/0xCheetah1/relay","docs":"https://github.com/0xCheetah1/relay#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154080,"prs":[{"n":154080,"state":"open","created":"2026-11-11T21:59:58Z"}],"created":"2026-11-11T21:59:58Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentic-soc","title":"Hermes Agentic SOC","summary":"Evidence-first SOC and DFIR work for Hermes: six defense specialist personas (L1 triage, L2 incident response, threat hunting, DFIR compromise assessment, detection engineering, vulnerability management), 39 skills, 25 technology scaffolds and deterministic THOR Lite triage with exact event counts, correlation, audit trail and human approval. Everything is local file work.","disclosure":"runs the operator's own THOR Lite executable as a subprocess (separate Nextron licence required, nothing bundled, no download) and can create a new Hermes profile via the local `hermes` CLI when the operator asks for it; reads evidence files only inside operator-configured root folders; writes reports and an audit log under the plugin's own data directory; makes no network calls, holds no credentials (a minimal PATH-only environment is passed to child processes) and never acts on a target.","category":"tools","platforms":[],"maintainer":"CyStrat-Services-GmbH","author":"CyStrat-Services-GmbH","version":"0.2.4","requires_hermes":">=0.23.0","repo":"https://github.com/CyStrat-Services-GmbH/hermes-agentic-soc","docs":"https://github.com/CyStrat-Services-GmbH/hermes-agentic-soc","tools":["soc_capabilities","soc_template_list","soc_template_install","thor_lite_scan","thor_parse","thor_first_assessment","soc_alert_triage"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Local THOR triage needs a separately licensed THOR Lite executable: set `thor_path` in the plugin settings. No THOR binary, signature or rule set is bundled or downloaded.; Evidence analysis covers THOR JSON v1/v2 and NDJSON only; THOR JSON v3, legacy text and CSV exports are not parsed in this version.; Offensive-research profiles and skills are not part of this release; they are planned for a later version and nothing of them is present, previewable or enableable here.","state":"open","pr":154079,"prs":[{"n":154079,"state":"open","created":"2026-11-11T21:59:55Z"}],"created":"2026-11-11T21:59:55Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"harness-story","title":"Harness Story","summary":"Plain-English session storyteller and Desktop workspace pane: reconstructs what you asked, the hidden Hermes startup context load (skills, connectors, plugins, tools, memory), why the model chose each tool or pivoted after errors, and a 5-bucket context window bar synchronized with an auto-scrolling Chronicle.","disclosure":"reads ~/.hermes/state.db in read-only mode (?mode=ro) and non-secret skill/plugin/connector names from ~/.hermes/ to summarize context load; writes live hook JSONL and rendered .json/.html story files only under ~/.hermes/plugin-data/harness-story/; optional narrative synthesis posts to the user-configured local OpenAI-compatible base_url (falls back deterministically offline or with --no-llm). No third-party cloud calls, no shell execution, no stored credentials, and no self-updater.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"wronglebowsk","author":"wronglebowsk","version":"0.1.0","requires_hermes":">=0.20","repo":"https://github.com/wronglebowsk/harness-story","docs":"https://github.com/wronglebowsk/harness-story","tools":["harness_story_generate","harness_story_inspect","harness_story_compare","harness_story_render","harness_story_list"],"hooks":["on_session_start","pre_llm_call","pre_api_request","post_api_request","pre_tool_call","post_tool_call","on_skill_lifecycle","subagent_start","subagent_stop","post_compaction","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154078,"prs":[{"n":154078,"state":"open","created":"2026-11-11T21:59:39Z"}],"created":"2026-11-11T21:59:39Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tradeguard","title":"TradeGuard","summary":"Read-only stocks and ETF research for Hermes: evidence-aware fundamentals, daily technical observations, ETF structure, comparable ranking, microstructure calculations and an explicitly experimental walk-forward ML baseline. It provides explainable heuristic research priority, not trade execution, personalized investment advice, calibrated win probabilities, price targets or position sizing. Optional ticker-only research fetches historical daily bars from Yahoo Finance's unofficial public chart endpoint only after explicit plugin configuration consent; it uses no API keys, credentials, broker access, background processes or live orders. Supplied snapshots and issuer metadata are read only from paths the user explicitly requests.","disclosure":"public-data requests leave the local machine for the requested symbols, may fail or be stale, and are not entitled real-time quotes; technical-only scores are not combined valuations and all scores are unvalidated research heuristics.","category":"tools","platforms":[],"maintainer":"Vansh Khosla","author":"vansh-attention","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/vansh-attention/hermes-tradeguard","docs":"https://github.com/vansh-attention/hermes-tradeguard#readme","tools":["tradeguard_recommend_tickers","tradeguard_strategy_catalog","tradeguard_equity_research","tradeguard_public_history","tradeguard_walk_forward","tradeguard_microstructure","tradeguard_rank"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154077,"prs":[{"n":154077,"state":"open","created":"2026-11-11T21:59:30Z"}],"created":"2026-11-11T21:59:30Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"eselsbruecke","title":"Eselsbrücke","summary":"A helper toolbox for Hermes with tools you switch on and off: a today pad, a pomodoro, a billable time log, a formatter, a colour picker and small tools, which your agent can call for exact answers.","disclosure":"no network calls beyond your own Hermes backend, local files only, an optional per-minute alert job (off by default), no credentials, no telemetry.","category":"desktop","platforms":["linux","macos"],"maintainer":"studioluftbruecke","author":"studioluftbruecke","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/studioluftbruecke/hermes-eselsbruecke","docs":"https://github.com/studioluftbruecke/hermes-eselsbruecke#readme","tools":["eselsbruecke_toolbox","eselsbruecke_pad","eselsbruecke_timer","eselsbruecke_timelog","eselsbruecke_calc","eselsbruecke_format","eselsbruecke_convert","eselsbruecke_text","eselsbruecke_generate"],"hooks":[],"middleware":[],"env":[],"known_issues":"With Hermes on a server, install the plugin on the Desktop computer too, on the same version: Desktop loads the Eselsbrücke page from its own computer.","state":"open","pr":154076,"prs":[{"n":154076,"state":"open","created":"2026-11-11T21:59:04Z"}],"created":"2026-11-11T21:59:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"longevity-coach","title":"longevity-coach","summary":"Health coaching loop for Hermes: 9 config-free skills, 9 typed tools, and the weekly-crunch automation blueprint (outcome ledger, stress triage, biometric recovery/rebound verification). Local-first, stdlib-only, no credentials.","disclosure":"referenced health values are sent to the active model provider.","category":"tools","platforms":[],"maintainer":"pridiuksson","author":"pridiuksson","version":"","requires_hermes":"","repo":"https://github.com/pridiuksson/highlander-longevity-coach","docs":"https://github.com/pridiuksson/highlander-longevity-coach#readme","tools":["coach_ledger_add","coach_ledger_resolve","coach_ledger_report","coach_ledger_reflect","coach_stress_triage","coach_recovery_record","coach_recovery_verify","coach_recovery_report","coach_run_crunch"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154075,"prs":[{"n":154075,"state":"open","created":"2026-11-11T21:58:53Z"}],"created":"2026-11-11T21:58:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/pridiuksson/status/2120631703836221487"],"youtube":[],"thumb":null},{"name":"unblockbruecke","title":"Unblockbrücke","summary":"Cards to unblock yourself or your agent, drawn by you when you are stuck and by Hermes when its tool calls keep failing.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"studioluftbruecke","author":"studioluftbruecke","version":"0.1.4","requires_hermes":">=0.23.0","repo":"https://github.com/studioluftbruecke/hermes-unblockbruecke","docs":"https://unblockbruecke.luftbruecke.studio","tools":["unblockbruecke_card","unblockbruecke_decks"],"hooks":["transform_tool_result"],"middleware":[],"env":[],"known_issues":"Auto-draw is off by default. Switch on \"Hermes draws when stuck\" in Settings, Plugins, Unblockbrücke, Agent settings.; With Hermes on a server, install the plugin on the Desktop computer too, on the same version: Desktop loads the Unblockbrücke page from its own computer.","state":"open","pr":154074,"prs":[{"n":154074,"state":"open","created":"2026-11-11T21:58:37Z"}],"created":"2026-11-11T21:58:37Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/studioluftbruecke/hermes-unblockbruecke/f11471187d1aa25b81e4644da08a22148035841a/docs/screenshot-1.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-unblockbruecke/f11471187d1aa25b81e4644da08a22148035841a/docs/screenshot-2.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-unblockbruecke/f11471187d1aa25b81e4644da08a22148035841a/docs/screenshot-3.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-unblockbruecke/f11471187d1aa25b81e4644da08a22148035841a/docs/screenshot-4.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-unblockbruecke/f11471187d1aa25b81e4644da08a22148035841a/docs/screenshot-5.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/unblockbruecke.webp"},{"name":"forgebruecke","title":"Forgebrücke","summary":"A bridge between Hermes and your self-hosted Forgejo: Hermes works as its own account, writes follow Hermes' approval setting, and a desk in Hermes Desktop shows the pull requests that wait for you.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"studioluftbruecke","author":"studioluftbruecke","version":"0.0.22","requires_hermes":">=0.23.0","repo":"https://github.com/studioluftbruecke/hermes-forgebruecke","docs":"https://forgebruecke.luftbruecke.studio","tools":["forgejo_doctor","forgejo_get","forgejo_list","forgejo_comment","forgejo_create_pr","forgejo_status","forgejo_flows","forgejo_repos"],"hooks":["pre_tool_call","post_approval_response","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Needs a Forgejo account for Hermes, added as a collaborator on each repo, with a token for read:notification, write:issue, write:repository and read:user.; A new setup only previews writes. Switch on \"Let Hermes write\" in Settings, Plugins, Forgebrücke.; With Hermes on a server, install the plugin on the Desktop computer too, on the same version: Desktop loads the desk from its own computer.","state":"open","pr":154073,"prs":[{"n":154073,"state":"open","created":"2026-11-11T21:58:32Z"}],"created":"2026-11-11T21:58:32Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/banner.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/screenshot-1.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/screenshot-2.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/screenshot-3.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/screenshot-4.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-forgebruecke/f01d5dae2b643ef2a2efffbdccaea7d9417632cf/docs/screenshot-5.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/forgebruecke.webp"},{"name":"acrylic","title":"Acrylic","summary":"Acrylic glass for Hermes Desktop: a frosted, see-through theme with four presets (Acrylic, Frosted, Sanded, Expressive). Tested mostly on Windows 11, where it uses the system's real acrylic blur; elsewhere it falls back to a CSS version.","disclosure":"","category":"desktop","platforms":[],"maintainer":"Saderius","author":"Saderius","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Saderius/hermes-acrylic","docs":"https://github.com/Saderius/hermes-acrylic#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Real acrylic blur needs Windows 11 22H2+ with Settings → Appearance → Window Translucency set to Glass. Without Glass, and on Linux, it shows a CSS stand-in that does not blur other windows.","state":"open","pr":154072,"prs":[{"n":154072,"state":"open","created":"2026-11-11T21:58:29Z"}],"created":"2026-11-11T21:58:29Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"coolifybruecke","title":"Coolifybrücke","summary":"See what needs you across your Coolify instance, deploy with your approval, and let Hermes explain failed deploys.","disclosure":"calls only your Coolify instance with the token you give it, Coolify's public release feed, and your apps' git hosts for \"branch ahead\"; every agent action asks first and unattended runs are refused; no telemetry.","category":"desktop","platforms":["linux","macos"],"maintainer":"studioluftbruecke","author":"studioluftbruecke","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/studioluftbruecke/hermes-coolifybruecke","docs":"https://coolifybruecke.luftbruecke.studio","tools":["coolify_capabilities","coolify_overview","coolify_deployments","coolify_diagnose","coolify_action","coolify_cockpit","coolify_notes"],"hooks":["pre_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"Needs a Coolify API token with read and deploy, and Coolify's API (and ideally its MCP server) enabled under Settings, Advanced.; With Hermes on a server, install the plugin on the Desktop computer too, on the same version: Desktop loads the Coolifybrücke page from its own computer.","state":"open","pr":154071,"prs":[{"n":154071,"state":"open","created":"2026-11-11T21:57:59Z"}],"created":"2026-11-11T21:57:59Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/studioluftbruecke/hermes-coolifybruecke/2b02a05137f236e8f46c53c6f625cf841faf2d8a/docs/banner.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-coolifybruecke/2b02a05137f236e8f46c53c6f625cf841faf2d8a/docs/screenshot-1.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-coolifybruecke/2b02a05137f236e8f46c53c6f625cf841faf2d8a/docs/screenshot-2.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-coolifybruecke/2b02a05137f236e8f46c53c6f625cf841faf2d8a/docs/screenshot-3.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-coolifybruecke/2b02a05137f236e8f46c53c6f625cf841faf2d8a/docs/screenshot-4.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/coolifybruecke.webp"},{"name":"vivarium","title":"vivarium","summary":"A living artificial-life world inside Hermes. Real tool calls drop nutrients into a 48x48 cellular-automaton dish; creatures carry genomes, forage, reproduce, mutate and go extinct on their own; every skill the agent learns births a new species. Deterministic, mathematically grounded, private.","disclosure":"","category":"other","platforms":[],"maintainer":"r3adaszer0","author":"r3adaszer0","version":"","requires_hermes":"","repo":"https://github.com/r3adaszer0/vivarium","docs":null,"tools":["vivarium_status","vivarium_feed","vivarium_render","vivarium_release","vivarium_export","vivarium_codex"],"hooks":["post_tool_call","pre_llm_call","on_skill_lifecycle","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154070,"prs":[{"n":154070,"state":"open","created":"2026-11-11T21:57:57Z"}],"created":"2026-11-11T21:57:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"incognito","title":"Hermes Incognito","summary":"Zero-trace ephemeral and incognito sessions across Hermes CLI, TUI, Gateway, and Desktop: hides active chats from sidebars and cross-session searches, blocks persistent memory and skill mutations, strips profile and personal memory in RAM in strict clean-room mode, optionally masks outbound PII via a reversible RAM-only vault, zero-fills transcript and hook spill files before unlinking on close or TTL expiry, and emits content-free SHA-256 verification receipts.","disclosure":"reads and deletes only incognito-tagged rows in $HERMES_HOME/state.db and files in $HERMES_HOME/sessions/ and $HERMES_HOME/hook_outputs/ when an incognito session is burned or swept; stores content-free leases and receipt hashes under $HERMES_HOME/plugin-data/incognito/; attaches provider non-retention flags to outbound LLM requests; makes no third-party network calls.","category":"tools","platforms":[],"maintainer":"nicolasbuelvas","author":"nicolasbuelvas","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/nicolasbuelvas/hermes-incognito","docs":"https://github.com/nicolasbuelvas/hermes-incognito","tools":["incognito_control","incognito_verify"],"hooks":["on_session_start","pre_llm_call","pre_tool_call","transform_tool_result","post_compaction","on_session_end","on_session_finalize","on_session_reset"],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"","state":"open","pr":154069,"prs":[{"n":154069,"state":"open","created":"2026-11-11T21:57:53Z"}],"created":"2026-11-11T21:57:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hostd-client","title":"Hermes Hostd","summary":"Request command execution from a separately managed hermes-hostd daemon over HTTP or VSOCK, with host-side approval.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"violetSoftware","author":"violetSoftware","version":"0.1.0rc2","requires_hermes":">=0.22.5","repo":"https://github.com/violetSoftware/hermes-hostd-plugin","docs":null,"tools":["run_on_host"],"hooks":[],"middleware":[],"env":["HOSTD_AUTH_TOKEN"],"known_issues":"Requires separately installing and configuring the matching hermes-hostd daemon; catalog installation installs only the client plugin.; Version 0.1.0rc2 requires the Hermes-managed HOSTD_AUTH_TOKEN secret; legacy client token-file selectors must be removed.; Commands run with the daemon account's privileges; this is not a command sandbox.; Optional ntfy decisions are unsigned and do not authenticate the human approver; protect notification and reply-channel access.; HTTP encryption requires an externally managed secure tunnel or TLS proxy protecting every hop; VSOCK has no native encryption.","state":"open","pr":154068,"prs":[{"n":154068,"state":"open","created":"2026-11-11T21:57:40Z"}],"created":"2026-11-11T21:57:40Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-design-studio","title":"Hermes Design Studio","summary":"Non-destructive shader image editing inside Hermes Desktop, manually or with an agent. Human-approved shader tools, recipes, numerical previews and PNG export.","disclosure":"","category":"desktop","platforms":["linux"],"maintainer":"1lpredest1nato","author":"1lpredest1nato","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/1lpredest1nato/hermes-design-studio","docs":"https://github.com/1lpredest1nato/hermes-design-studio#readme","tools":["design_studio_catalog","design_studio_project","design_studio_apply","design_studio_preview","design_studio_create_tool","design_studio_recipe","design_studio_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154067,"prs":[{"n":154067,"state":"open","created":"2026-11-11T21:57:31Z"}],"created":"2026-11-11T21:57:31Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shaderbruecke","title":"Shaderbrücke","summary":"Make GLSL shaders with your Hermes agent, see them render, tune them by hand, and take them into the tool you ship in, with a frame-by-frame proof on every export.","disclosure":"each render starts a headless Chromium child on the Hermes host with the network blocked; no network calls, no telemetry, no credentials.","category":"desktop","platforms":["linux","macos"],"maintainer":"studioluftbruecke","author":"studioluftbruecke","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/studioluftbruecke/hermes-shaderbruecke","docs":"https://shaderbruecke.luftbruecke.studio","tools":["shader_render","shader_library","shader_export"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Renders need a Chromium on the Hermes host (the Hermes container image ships one); without it every render answers no_browser.; With Hermes on a server, install the plugin on the Desktop computer too, on the same version: Desktop loads the card from its own computer.","state":"open","pr":154066,"prs":[{"n":154066,"state":"open","created":"2026-11-11T21:57:17Z"}],"created":"2026-11-11T21:57:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/banner.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/screenshot-1.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/screenshot-2.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/screenshot-3.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/screenshot-4.png","https://raw.githubusercontent.com/studioluftbruecke/hermes-shaderbruecke/d3b4bf892a34bc0f49d03ee349ec61472cfb3e5a/docs/screenshot-5.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/shaderbruecke.webp"},{"name":"axiom","title":"Axiom","summary":"Continuous neural-symbolic conservation-law verifier and SMT certificate generator using Z3 and dReal.","disclosure":"","category":"tools","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-axiom","docs":"https://github.com/arjunbagga-xyz/hermes-axiom#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154065,"prs":[{"n":154065,"state":"open","created":"2026-11-11T21:56:21Z"}],"created":"2026-11-11T21:56:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"chaos-takens","title":"chaos-takens","summary":"Nonlinear phase-space attractor reconstruction via Takens delay-embedding theorem and maximal Lyapunov exponent estimation.","disclosure":"","category":"other","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"","requires_hermes":"","repo":null,"docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154065,"prs":[{"n":154065,"state":"open","created":"2026-11-11T21:56:21Z"}],"created":"2026-11-11T21:56:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"eigen","title":"eigen","summary":"Graph-Laplacian spectral spectral partitioner computing Fiedler vector and algebraic connectivity for agent multi-agent communication networks.","disclosure":"","category":"other","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"","requires_hermes":"","repo":null,"docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154065,"prs":[{"n":154065,"state":"open","created":"2026-11-11T21:56:21Z"}],"created":"2026-11-11T21:56:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"transducer","title":"Transducer","summary":"Near-ultrasonic FMCW sonar, mechanical FFT vibrometer, and true thermodynamic random number generator using audio hardware.","disclosure":"","category":"tools","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-transducer","docs":"https://github.com/arjunbagga-xyz/hermes-transducer#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154064,"prs":[{"n":154064,"state":"open","created":"2026-11-11T21:56:02Z"}],"created":"2026-11-11T21:56:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-reflex","title":"Hermes Reflex","summary":"Skill-to-executable-code reflex compiler with parameter injection, 3-gate pre-trust verification, Curator archive recovery, and two-tier native Hermes GenUI with a draggable sticky-note pinboard pane.","disclosure":"","category":"automation","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"1.0.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-reflex","docs":"https://github.com/arjunbagga-xyz/hermes-reflex#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":154063,"prs":[{"n":154063,"state":"closed","created":"2026-11-11T21:55:43Z"}],"created":"2026-11-11T21:55:43Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"omnisight","title":"OmniSight","summary":"Spatial multi-surface visual perception, AST-to-pixel bi-directional linking, and closed-loop UI self-healing engine with interactive Before/After transcript sliders.","disclosure":"","category":"desktop","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-omnisight","docs":"https://github.com/arjunbagga-xyz/hermes-omnisight#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154062,"prs":[{"n":154062,"state":"open","created":"2026-11-11T21:55:26Z"}],"created":"2026-11-11T21:55:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ghostbox","title":"Ghost-Box","summary":"Speculative shadow-execution sandbox and cryptographic blast-radius verifier for autonomous agent tools using ephemeral Git worktrees.","disclosure":"","category":"tools","platforms":[],"maintainer":"arjunbagga-xyz","author":"arjunbagga-xyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arjunbagga-xyz/hermes-ghostbox","docs":"https://github.com/arjunbagga-xyz/hermes-ghostbox#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154060,"prs":[{"n":154060,"state":"open","created":"2026-11-11T21:55:08Z"}],"created":"2026-11-11T21:55:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wow-addon-forge","title":"WoW Addon Forge","summary":"Builds World of Warcraft: Forever (client 1.60.1, Interface 16001) addons that load and run, for players who are not programmers. Nine tools: wow_env (install/addon detection), wow_api (queryable index of the real client build's API, events and restrictions), wow_check (six-stage static + headless verification: TOC lint, Lua 5.1 syntax, global resolution, restricted/secret API rules, headless load in an embedded Lua 5.1 VM stub of the game, efficiency lints), wow_test (multi-client headless Lua test runner), wow_new (scaffolds an addon from tested building blocks: core, replicated record log, guild sync, trust, lazy Classic-theme window, Discord bridge), wow_install (installs after wow_check passes, with backup), wow_savedvars and wow_errors (read game data and in-game Lua errors back, via the bundled ForgeProbe companion addon), and wow_bridge (file-based Discord seam: pull an outbox, push an inbox, one /reload of latency each way). Ships Guildhall, a guild-management addon built entirely with these tools (board, calendar, a Marks currency earned automatically by playing, Discord mirror), the wow-addon-builder skill, /wow, hermes wow, and an Addon Forge Desktop pane.","disclosure":"network only on wow_api sync (GitHub raw downloads of the public API documentation mirrors, or zero-network from a local BlizzardInterfaceCode export); reads the WoW install (Interface/AddOns, WTF SavedVariables, .build.info); writes only Interface/AddOns/<name> on wow_install and Inbox.lua on wow_bridge push, each an explicit visible tool call; no shell commands, no background processes, no stored credentials, no telemetry, no self-update.","category":"other","platforms":["macos","linux"],"maintainer":"SnoobieJunes","author":"SnoobieJunes","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/SnoobieJunes/hermes-wow-plugin","docs":"https://github.com/SnoobieJunes/hermes-wow-plugin","tools":["wow_env","wow_api","wow_check","wow_test","wow_errors","wow_savedvars","wow_install","wow_bridge","wow_new"],"hooks":[],"middleware":[],"env":[],"known_issues":"Guildhall is proven headlessly; live-client acceptance results are recorded in docs/INGAME-CHECKLIST.md and some lines may still read NOT RUN.; A solo /reload empties Guildhall's in-memory record log until guild sync re-converges from online guildmates (tracked as T-050 in the repo).","state":"open","pr":154059,"prs":[{"n":154059,"state":"open","created":"2026-11-11T21:54:42Z"}],"created":"2026-11-11T21:54:42Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"surviving-the-static","title":"surviving-the-static","summary":"A real time architectural translator for local ai that turns cold, intimidating connection errors into plain english.","disclosure":"","category":"other","platforms":[],"maintainer":"littlewarrior333","author":"littlewarrior333","version":"0.1.0","requires_hermes":"","repo":null,"docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154058,"prs":[{"n":154058,"state":"open","created":"2026-11-11T21:54:05Z"}],"created":"2026-11-11T21:54:05Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"chatgpt-style","title":"ChatGPT Style","summary":"Unofficial ChatGPT / Codex-inspired theme for Hermes Desktop: light and dark palettes, a centred reading column, compact blue user bubbles, a rounded composer card with a blue send button, Codex-style model and effort pickers, a floating Files/Review card and a quieter sidebar and footer. Not affiliated with, endorsed by, or sponsored by OpenAI.","disclosure":"registered through THEMES_AREA; its customCSS restyles native Desktop surfaces (sidebar rows, composer, user bubbles, menus, model picker, file panel, status bar) by selecting the app's data-slot / data-sidebar / data-tree-group hooks; no script DOM access, no network calls, no storage; no agent tools, hooks, middleware or env vars.","category":"desktop","platforms":[],"maintainer":"amitamit10","author":"amitamit10","version":"1.0.0","requires_hermes":">=0.23","repo":"https://github.com/amitamit10/hermes-chatgpt-style","docs":"https://github.com/amitamit10/hermes-chatgpt-style","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154056,"prs":[{"n":154056,"state":"open","created":"2026-11-11T21:52:50Z"}],"created":"2026-11-11T21:52:50Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"augur","title":"Augur","summary":"Your agent knows your 3 priorities for the week, notices when you drift, parks the detour, and on Friday clears what it can and shows where your attention actually went. Labels each request in the background, asks one short question on the 2nd detour in a row (\"Park it\" or \"Do it now\", buttons on Telegram), runs a guarded research-and-draft Friday cron job over the Queue, and sends a weekly report image with planned vs actual per goal and a hidden 4th priority.","disclosure":"one short model call per message through its own auxiliary task (augur_classifier), one per weekly report (augur_insight); stores only model-written 60-char summaries, goals and parked items, redacted, in its own data folder; a pre_tool_call guard limits its own cron run to its Queue tools, web_search and file work inside its drafts folder. No network of its own, no shell, no telemetry, no self-update, no binaries.","category":"tools","platforms":["linux","macos"],"maintainer":"Bruno-coder21","author":"Bruno-coder21","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Bruno-coder21/augur","docs":"https://github.com/Bruno-coder21/augur#readme","tools":["augur_park","augur_queue","augur_done","augur_report"],"hooks":["pre_llm_call","post_llm_call","post_api_request","post_auxiliary_call","pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154055,"prs":[{"n":154055,"state":"open","created":"2026-11-11T21:52:35Z"}],"created":"2026-11-11T21:52:35Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Bruno-coder21/augur/6e775b23e2a322c8eee32db4074a44cb85e86e89/docs/report-demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/augur.webp"},{"name":"kleos","title":"Kleos","summary":"Kleos, the AI marketing team for small businesses, through its hosted MCP server (Streamable HTTP at https://app.getkleos.ai/mcp; OAuth 2.1 with PKCE, signed in with the user's own Kleos login; no keys in config). Twelve tools: list businesses, read the month's calendar, plan the next 30 days, draft a post or a blog article in the business's voice, save a post in the user's own words, list and approve drafts waiting for review, schedule an approved post to a connected channel, report results (posts published, impressions, clicks, leads) and whether ChatGPT, Google AI Mode and Perplexity recommend the business, and read the buyers and problems the content is written for. Bundles one skill (kleos) that says which tool fits which task and that nothing is published without the user asking. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to app.getkleos.ai, which applies the user's role in their workspace, their plan's allowances and each business's approval settings, and records assistant actions in the workspace's audit log. Drafting, planning and AI-visibility checks spend the workspace's plan allowance; approving and scheduling publish to the business's own connected channels. The package marks the server untrusted, so Hermes asks before any tool not annotated read-only runs and refuses them in unattended runs. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"NewOdysseyConsulting","author":"demzzydev","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/NewOdysseyConsulting/kleos-mcp","docs":"https://getkleos.ai/agents","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154054,"prs":[{"n":154054,"state":"open","created":"2026-11-11T21:52:06Z"}],"created":"2026-11-11T21:52:06Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"vape-coach","title":"Vape Coach","summary":"Local-first webcam vape tracker and taper coach. A MediaPipe watcher spots hand-to-mouth puffs plus the exhale, and the target gap between vaping sessions grows ~10%/day after a 1-day baseline. Hitting early climbs a nudge ladder: a roast, a sarcastic (never real) PR threat, a protein-shake order, then jumping jacks the same watcher counts on camera by itself. Nag-only: never blocks a request, never gates a tool, no tool that can touch code. Desktop pane with camera Start/Stop and a live rep counter, a status-bar countdown, pet/toast roasts, /vape and three agent tools.","disclosure":"uses the webcam only while the watcher runs (after the user clicks Start camera, which starts `python -m vapecoach.cli watch` as a child process, or while `hermes vape watch` runs in a terminal); frames stay in memory and are never written or sent; stores timestamps, scores and counts in the plugin data dir; downloads three SHA256-pinned MediaPipe models from storage.googleapis.com on first start; the Desktop half polls the plugin's own local API every 3 s. No LLM calls, credentials or telemetry.","category":"desktop","platforms":[],"maintainer":"NeelM0906","author":"NeelM0906","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/NeelM0906/Vape-Coach","docs":"https://github.com/NeelM0906/Vape-Coach/blob/8d014ab474507f906b274f0e74a5f1f6091e44cc/README.md","tools":["vape_status","vape_log_hit","vape_stats"],"hooks":["pre_llm_call","post_llm_call","on_session_start"],"middleware":[],"env":[],"known_issues":"Needs a webcam. Snacking, face-scratching and phone calls can still trigger false alarms; `hermes vape undo` voids one and its penalty.","state":"open","pr":154052,"prs":[{"n":154052,"state":"open","created":"2026-11-11T21:51:14Z"}],"created":"2026-11-11T21:51:14Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/NeelM0906/Vape-Coach/8d014ab474507f906b274f0e74a5f1f6091e44cc/docs/desktop.png","https://raw.githubusercontent.com/NeelM0906/Vape-Coach/8d014ab474507f906b274f0e74a5f1f6091e44cc/docs/pane.png"],"videos":["https://raw.githubusercontent.com/NeelM0906/Vape-Coach/8d014ab474507f906b274f0e74a5f1f6091e44cc/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vape-coach.webp"},{"name":"gnothi","title":"gnothi","summary":"Quantitative claim verification, statistical comparison, and evidence-qualified conclusions.","disclosure":"","category":"tools","platforms":[],"maintainer":"vrindachaa","author":"vrindachaa","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/vrindachaa/gnothi","docs":null,"tools":["verify_claim","evaluate_difference","qualify_conclusion"],"hooks":["post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154050,"prs":[{"n":154050,"state":"open","created":"2026-11-11T21:50:28Z"}],"created":"2026-11-11T21:50:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sendsafe","title":"SendSafe","summary":"Inspect hidden Word and Excel content before risky reads, and create verified visible-content sharing copies.","disclosure":"","category":"tools","platforms":[],"maintainer":"NSEVEjk0","author":"NSEVEjk0","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/NSEVEjk0/hermes-sendsafe","docs":null,"tools":["sendsafe_inspect","sendsafe_prepare","sendsafe_verify"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154049,"prs":[{"n":154049,"state":"open","created":"2026-11-11T21:49:18Z"}],"created":"2026-11-11T21:49:18Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/NSEVEjk0/hermes-sendsafe/3a94c3162c110898bb91763f9000fb070e9d8f29/docs/screenshots/excel-inspection.png","https://raw.githubusercontent.com/NSEVEjk0/hermes-sendsafe/3a94c3162c110898bb91763f9000fb070e9d8f29/docs/screenshots/sharing-copy.png","https://raw.githubusercontent.com/NSEVEjk0/hermes-sendsafe/3a94c3162c110898bb91763f9000fb070e9d8f29/docs/screenshots/word-copy.png"],"videos":["https://github.com/NSEVEjk0/hermes-sendsafe/releases/download/v0.1.0-demo/sendsafe-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sendsafe.webp"},{"name":"triage","title":"Triage","summary":"Keeps the list of every skill out of your context. Triage suggests skills above the composer as you type and as the chat goes on, ranked locally with no model call; a skill loads only when you pick it or clearly ask for it.","disclosure":"","category":"desktop","platforms":[],"maintainer":"Saderius","author":"Saderius","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/Saderius/hermes-triage","docs":"https://github.com/Saderius/hermes-triage#readme","tools":["skill_search","skill_load"],"hooks":["pre_llm_call","pre_tool_call","transform_tool_result","post_compaction"],"middleware":["llm_request","tool_execution"],"env":[],"known_issues":"Hides Hermes' own skills from Hermes while installed; run `python run.py restore` in the plugin folder before uninstalling.","state":"open","pr":154048,"prs":[{"n":154048,"state":"open","created":"2026-11-11T21:48:34Z"}],"created":"2026-11-11T21:48:34Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wake","title":"Wake","summary":"Lets your agent speak first. Scheduled notes and cron jobs arrive as a turn for your own agent in the chat you bind: Desktop Bot Chat, Discord, Telegram, Slack and other gateway chats.","disclosure":"starts billed agent turns in the bound chat (opt-in via allow_gateway_injection), plus one optional precheck model call per wake; stores its queue in plaintext under $HERMES_HOME/plugin-data/; no third-party network calls, telemetry or credentials.","category":"automation","platforms":["linux","macos"],"maintainer":"zzzubair","author":"zzzubair","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/zzzubair/hermes-wake","docs":"https://github.com/zzzubair/hermes-wake/blob/057facb13abd3c94464d4e68028a23713804d235/README.md","tools":["wake"],"hooks":["pre_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Restart the gateway once after enabling so it registers the Wake Agent cron target.; Wakes start turns only after you allow plugins.entries.wake.allow_gateway_injection.","state":"open","pr":154045,"prs":[{"n":154045,"state":"open","created":"2026-11-11T21:46:40Z"}],"created":"2026-11-11T21:46:40Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agenda","title":"Agenda","summary":"Your agent's own todo list, brought up in conversation when items are due.","disclosure":"adds due items to each turn (pre_llm_call, capped by max_tokens); stores items in plaintext under $HERMES_HOME/agenda/; runs the wake CLI or hermes cron only for deadline reminders; no network calls, telemetry or credentials.","category":"automation","platforms":["linux","macos"],"maintainer":"zzzubair","author":"zzzubair","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/zzzubair/hermes-agenda","docs":"https://github.com/zzzubair/hermes-agenda/blob/d5a34a747d5d6e98cd2e398514544db6fa9d41a1/README.md","tools":["agenda"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"The agenda tool appears in new sessions after enabling; existing chats only get the per-turn list.; Hard-deadline reminders need either the wake plugin (reminders: wake) or a cron delivery target (reminders: cron, cron_deliver). With neither, items still come up the next time you talk to the agent.","state":"open","pr":154044,"prs":[{"n":154044,"state":"open","created":"2026-11-11T21:46:37Z"}],"created":"2026-11-11T21:46:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ghostwriter","title":"Ghostwriter","summary":"Write, revise, and export screenplays in a Hermes Desktop workspace with a project-aware assistant.","disclosure":"","category":"desktop","platforms":[],"maintainer":"nevpit","author":"nevpit","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/nevpit/ghostwriter","docs":null,"tools":["ghost_status","ghost_list_projects","ghost_create_project","ghost_get_project","ghost_read_script","ghost_read_scene","ghost_propose","ghost_check_proposal","ghost_accept_proposal","ghost_reject_proposal","ghost_set_title_page","ghost_update_rules","ghost_find_replace","ghost_history","ghost_restore","ghost_undo","ghost_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154042,"prs":[{"n":154042,"state":"open","created":"2026-11-11T21:45:02Z"}],"created":"2026-11-11T21:45:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"token-master","title":"Token Master","summary":"Token spend analytics for Hermes Desktop: one stacked daily chart of token consumption across every Hermes profile, provider and account on the machine (7D/30D/90D/1Y, stacked by token class, provider, profile or source), per-provider / per-profile / per-model / per-task breakdowns, and an Accounts and limits card that marks each credential as subscription (quota), pay-per-token API spend or free and shows the live allowance windows Hermes can fetch. It reads the token accounting Hermes already records — every profile's state.db opened read-only, plus DeepSeek Harness session files — and adds no collection of its own.","disclosure":"`Refresh limits` goes through Hermes' read-only fetch_account_usage(provider, read_only=True) to the provider's usage endpoint (no token is refreshed, rotated or stored); the optional `Sync now` button runs ssh into a host you added and streams the bundled read-only collector into that host's python3, installing and writing nothing there, and the Remote machines card runs `tailscale status --json` to offer online peers (discovery only — adding a host is still a click); state lives in plugin-data/token-master/ only; no telemetry, no background process. The README's Disclosure section lists every read, write, network call and shell command.","category":"desktop","platforms":[],"maintainer":"karmsheel","author":"karmsheel","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/karmsheel/tokenmaster","docs":"https://github.com/karmsheel/tokenmaster#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"History is per provider and per profile, not per login: neither Hermes' usage table nor the DeepSeek Harness ledger records which credential served a request, so tokens cannot be split by account. Per-account quota is live, but per-account token history would have to be recorded forward-only.; Days are bucketed by last activity (a Hermes row carries last_seen; a DeepSeek Harness session is attributed to its file's last write), so a session spanning midnight lands on the day it finished.; Token counts cover one machine: remote machines are read only after you add an SSH host and press Sync now. Provider quotas are account-wide, so the percentage windows still cover every machine and tool using that account.; Quota sampling is passive: a sample is appended only while the page or a limits refresh is open, so the burn-rate trend means 'what happened while I was watching'. Live windows exist where Hermes ships a fetcher (anthropic, openai-codex, opencode-go, openrouter); nous and xai-oauth expose none and the card says so.; Tested on Windows 11 against Hermes 0.23.0. The backend and Desktop page are platform-neutral; install.ps1 is PowerShell-only, and everywhere else `hermes plugins install token-master` is the install path.","state":"open","pr":154041,"prs":[{"n":154041,"state":"open","created":"2026-11-11T21:44:59Z"}],"created":"2026-11-11T21:44:59Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/karmsheel/tokenmaster/626d5c8ede5afd7a1059daf009539e886cc5fd76/docs/banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/token-master.webp"},{"name":"claim-gate","title":"claim-gate","summary":"Deterministic evidence-readiness firewall for insurance claim submissions. Resolves model-supplied evidence and incident-fact IDs against an operator-controlled SQLite registry, evaluates a versioned policy, and returns a deterministic PASS, BLOCK, or HUMAN_REVIEW. The model never gets to verify its own evidence.","disclosure":"","category":"tools","platforms":[],"maintainer":"Mohamedhazeem","author":"Mohamedhazeem","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Mohamedhazeem/ClaimGate","docs":null,"tools":["submit_claim_package","claim_check","claim_policy_get","claim_audit"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154040,"prs":[{"n":154040,"state":"open","created":"2026-11-11T21:44:42Z"}],"created":"2026-11-11T21:44:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hive","title":"hive","summary":"Hermes remembers how its errors were fixed, and Hermes installs can share those fixes: when a terminal command fails with an error that was fixed before, Hive adds the fix that worked (with how often it worked) under the output. Fixes are learned from exit codes, not guessed: a failed command, the steps after it, and the same command succeeding. Opt-in, Hive trades fixes with other installs over Nostr, signed by a random per-install key, with proof of work, cross-checks and a safety screen; it never runs anything.","disclosure":"reads terminal command text, exit codes and output through the transform_terminal_output hook and (on `hermes hive learn`) state.db read-only; stores learned fixes under plugin-data/hive; with `hermes hive network read` it sends error fingerprints (hashes) to the configured Nostr relays (default nos.lol, relay.primal.net, relay.damus.io) to look up fixes; with `network share` it also publishes the normalized error line and the fix commands (home paths, private paths, hosts, IPs, e-mails and secret-looking text removed or withheld; preview with `hermes hive outbox`). Network is off by default.","category":"tools","platforms":[],"maintainer":"MFaiqKhan","author":"MFaiqKhan","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/MFaiqKhan/hermes-hive","docs":null,"tools":[],"hooks":["transform_terminal_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154039,"prs":[{"n":154039,"state":"open","created":"2026-11-11T21:44:35Z"}],"created":"2026-11-11T21:44:35Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rubal-oracle","title":"rubal-oracle","summary":"Say a goal in Hermes chat with a deadline. Afterward Oracle checks proof (met / not met / couldn't verify) from git, Calendar, GitHub, Notion, Linear, Gmail, kanban, Strava, or Apple Health. Rubal is the forecast from similar past attempts.","disclosure":"runs local git log on repo paths the user names; stores commitments in Hermes plugin SQLite under the plugin data dir; may cache Calendar event text from Hermes tool output; does not call third-party APIs itself and does not send telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"X0EF","author":"X0EF","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/X0EF/rubal-oracle","docs":"https://github.com/X0EF/rubal-oracle/blob/7ac3edac485ecd49a85e5018022dd635ef3bacd1/README.md","tools":["oracle_commit","oracle_settle","oracle_revise","oracle_status","oracle_mirror","oracle_extend","oracle_respond_track","oracle_backfill"],"hooks":["pre_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154037,"prs":[{"n":154037,"state":"open","created":"2026-11-11T21:44:05Z"}],"created":"2026-11-11T21:44:05Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"retake","title":"Retake","summary":"Image-generation workspace for Hermes Desktop. Generate or upload an image, mark regions, request a reference-guided revision, compare versions and download.","disclosure":"","category":"desktop","platforms":["macos","linux"],"maintainer":"wevial","author":"wevial","version":"0.3.0","requires_hermes":">=0.23.1","repo":"https://github.com/wevial/retake","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Still images only. Video generation is not included.; Region notes are guidance, not masks: other parts of an image can change and pixel preservation is not guaranteed.; Generation uses your Hermes image provider and may consume credits or allowance; cost and exact model can be unknown. A failed or lost call is shown as possibly billed and is never retried.; Needs Hermes's mcp extra and image_generate not deferred by tool search: run 'hermes -p <profile> config set tools.tool_search.enabled off' for that profile.; Optional model picker is hidden on stock Hermes v0.23.1; it appears only if Hermes exposes the image-selection listing.; The exact release UI has had only a limited native Desktop check; a full native pass of this build is not claimed. Screenshots are synthetic browser previews.","state":"open","pr":154036,"prs":[{"n":154036,"state":"open","created":"2026-11-11T21:43:34Z"}],"created":"2026-11-11T21:43:34Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/wevial/retake/b5146c8cf7c7f75326f7980eff75004596014e83/docs/images/empty-project.png","https://raw.githubusercontent.com/wevial/retake/b5146c8cf7c7f75326f7980eff75004596014e83/docs/images/annotate-brief.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/retake.webp"},{"name":"chronomancer","title":"Chronomancer","summary":"A shared plan for the Kanban cards of every profile on a gateway. Give a card a slot (a planned start and an estimate): the plugin parks the card and releases it at the start, with no cron job. Hermes Desktop shows one timeline with a lane per profile; drag a card to plan or move it. Slots that overlap and share a one-at-a-time label show as clashes, with the reason and the next free start. An orchestrator agent plans through five tools. The plan advises: it never blocks a card or a tool call.","disclosure":"reads and writes the Kanban board through Hermes's kanban tools only; its Desktop backend imports the private core module tools.kanban_tools to register those tools in the dashboard process (validate warns about it); stores card titles, profile names and labels in its own plan.db change log for 30 days; runs one daemon timer thread per process that loads it; no network calls, no shell commands, no credentials.","category":"desktop","platforms":[],"maintainer":"Gdetrane","author":"Gdetrane","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/mordor-forge/chronomancer","docs":null,"tools":["chrono_plan","chrono_slot","chrono_now","chrono_clear","chrono_label"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154035,"prs":[{"n":154035,"state":"open","created":"2026-11-11T21:43:21Z"}],"created":"2026-11-11T21:43:21Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/marianoilconte/status/2120634378854486091"],"youtube":[],"thumb":null},{"name":"chat-tree","title":"Chat Tree","summary":"One window for branching chats in Hermes Desktop. A side pane draws the open chat and its branches as a git graph, one node for each exchange. Branch from a node, ask on a model you pick, and merge back into any ancestor chat with Merge as-is or Digest. The model writes each digest through ctx.llm (auxiliary task chat_tree_digest, which follows the title generation model unless you set auxiliary.chat_tree_digest).","disclosure":"the desktop half reads up to 500 persisted session summaries (host.listPersistedSessions), the messages of the chats in the open lineage (session.transcript, session.history), context sizes (session.usage, session.stats, session.context_breakdown) and subagent.list. It calls session.branch only when you click Branch. It calls prompt.submit only for the question that you typed for a branch, and for Merge as-is, which sends the merge text as a message in the ancestor chat that you picked. Digest puts its text into the composer of the ancestor chat as a draft (host.composer.setDraft) and never sends it. config.set sets the model that you picked for a branch. A node click sends the app event hermes:timeline-reveal to the main chat viewport and scrolls the exchange into view. It finds the viewport and the exchange through app markup (data-session-anchor, data-slot, data-message-id). This is outside the Desktop SDK surface (catalog rule 8), because the SDK has no scroll API. The pane keeps its branch ids and digests in its plugin storage. It also shares its list of branch ids with the side-chat plugin (localStorage key __hermesSideChatBranchIds). The Python half serves two plugin RPC methods. plugin.chat-tree.digest.write sends the exchanges of one chat (at most 24,000 characters, secrets redacted) to your configured model and returns the digest as a session event. plugin.chat-tree.history.read opens the local session store of Hermes (state.db in the profile home) read-only through hermes_state.SessionDB. It returns the messages of at most 30 chats of the open chat's lineage, never a hidden or archived chat, and at most 400,000 characters of text. That text stays on the machine and goes to no model. No other network calls, credentials, file writes, shell, telemetry or self-updater.","category":"desktop","platforms":[],"maintainer":"Ronitron007","author":"Ronitron007","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/Ronitron007/hermes-chat-tree","docs":"https://github.com/Ronitron007/hermes-chat-tree/tree/outbox/competition-entry/chat-tree#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Hermes Desktop.; A node click scrolls the main chat to that exchange through the app event hermes:timeline-reveal and the app markup (data-session-anchor, data-slot, data-message-id). Neither is Desktop SDK surface (catalog rule 8), and hermes plugins validate warns about the markup selector. We chose this on purpose, because the SDK has no scroll API. A Desktop update can break it without notice. Then a click only opens the chat of the node.; Digests and stored histories need hermes plugins enable chat-tree and a gateway restart.","state":"open","pr":154034,"prs":[{"n":154034,"state":"open","created":"2026-11-11T21:42:28Z"}],"created":"2026-11-11T21:42:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"truthgate","title":"TruthGate","summary":"Deterministic final-turn verification for newly introduced Python stubs and common embedded-secret patterns, using pre-edit baselines and at most two corrective continuations. Standard-library-only, fail-open, and no network, subprocess, LLM, approval-bypass, or core-patching behavior.","disclosure":"- reads only changed-file paths supplied by Hermes (including an absolute changed path outside the session directory), persists sanitized finding metadata in Hermes's profile-scoped plugin data without raw secrets or source text, and can produce false positives or false negatives.","category":"tools","platforms":[],"maintainer":"cyberNoman","author":"cyberNoman","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/cyberNoman/hermes-truthgate","docs":"https://github.com/cyberNoman/hermes-truthgate/blob/9fd8c071371721006d9b7254d624481fe49cd02d/README.md","tools":[],"hooks":["pre_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"Deterministic patterns can produce false positives and false negatives.; Unsupported mutation tools, missing baselines, unreadable or binary files, non-UTF-8 files, and files over 1 MiB fail open.; Corrective continuations depend on model compliance and can add inference cost; identical findings are suppressed and changed finding sets are bounded to two continuations.","state":"open","pr":154032,"prs":[{"n":154032,"state":"open","created":"2026-11-11T21:40:48Z"}],"created":"2026-11-11T21:40:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"infra-atlas","title":"Infra Atlas","summary":"Registry-backed infrastructure graph with drift detection, a read-before-touch guardrail, and autonomous downtime response.","disclosure":"","category":"automation","platforms":["linux"],"maintainer":"hnasheralneam","author":"hnasheralneam","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/hnasheralneam/hermes-infra-atlas","docs":null,"tools":["infra_query","infra_sweep","infra_diff","infra_upsert","infra_bootstrap","infra_incidents","infra_credentials"],"hooks":["pre_tool_call","post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154031,"prs":[{"n":154031,"state":"open","created":"2026-11-11T21:39:48Z"}],"created":"2026-11-11T21:39:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"decision-brief","title":"decision-brief","summary":"Decision Brief MVP - a human decision layer for consequential agent and creative decisions.","disclosure":"","category":"general","platforms":[],"maintainer":"LaRoyBot","author":"LaRoyBot","version":"0.2.0","requires_hermes":"","repo":"https://github.com/LaRoyBot/decision-brief","docs":null,"tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_stream_delta","on_interim_message","on_stream_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154030,"prs":[{"n":154030,"state":"open","created":"2026-11-11T21:39:45Z"}],"created":"2026-11-11T21:39:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-music-studio","title":"Music Studio","summary":"Describe a song and Hermes helps you make it: it drafts lyrics and style with you, renders nothing until you approve, then makes a real take locally on ACE-Step or through MiniMax via ComfyUI, and checks whether the take did what you asked.","disclosure":"renders run in a detached local worker; the studio talks only to the render endpoints you configure (a local ACE-Step install or a ComfyUI URL), writes takes and drafts to its own workspace folder, and uses the model already configured in Hermes for drafting. No telemetry, no self-updater. Linux and macOS; Windows support follows in the next release.","category":"general","platforms":["linux","macos"],"maintainer":"KeyArgo","author":"KeyArgo","version":"1.0.0","requires_hermes":"","repo":"https://github.com/KeyArgo/hermes-music-studio","docs":"https://github.com/KeyArgo/hermes-music-studio/blob/e0fa23a5f16092a040feb575bd878aab8f687c28/README.md","tools":["music_studio"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154029,"prs":[{"n":154029,"state":"open","created":"2026-11-11T21:39:43Z"}],"created":"2026-11-11T21:39:43Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hail-hermes","title":"hail-hermes","summary":"Talk to your Hermes agent out loud — in a desktop page it adds to Hermes Desktop, or from a Watch it pairs with in four digits. Replies are spoken, the face moves only while real audio plays, sessions resolve to folders on disk, and any model Hermes has already authorised can answer.","disclosure":"the hub listens on ws://127.0.0.1:8767 (or the LAN with --lan) and accepts a device only after the four-digit code is approved on this computer; the watch APK is optional and the panel needs no hardware. Speech binds to Hermes’ internal TTS/STT modules (tools.tts_*, hermes_cli audio routes, agent.auxiliary_client), which have no public plugin API yet: if they change, the panel keeps working as text. It reads no credential file: the model list comes from the configured default, any local endpoint, and the model names Hermes has cached, so a listed name is visible rather than proven usable. The weather fast path makes one HTTPS request to open-meteo.com and stores nothing. State lives under the profile’s hail-hermes directory; the two Android modules vendor the standard Gradle wrapper jars; no telemetry, no self-updater.","category":"voice","platforms":[],"maintainer":"KeyArgo","author":"KeyArgo","version":"1.0.0","requires_hermes":"","repo":"https://github.com/KeyArgo/hail-hermes","docs":"https://github.com/KeyArgo/hail-hermes/blob/ade2b7b2e40c6762411e04e928e5da3bba99c185/docs/INSTALL.md","tools":["device_notify","device_say","device_haptic","device_battery"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154028,"prs":[{"n":154028,"state":"open","created":"2026-11-11T21:39:37Z"}],"created":"2026-11-11T21:39:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"aura","title":"Aura","summary":"A film behind your work, and an app that breathes with your audio: a docked film pane for YouTube videos, playlists and direct MP4/WebM beside the chat, and a MilkDrop-compatible visualiser (140 presets) driven by what the machine is already playing, with agent moods for thinking, tools, approvals, errors and streaming.","disclosure":"audio comes from system loopback only, never the microphone, and is analysed in memory, never recorded or uploaded. Films are fetched from the URLs the user chooses; keyless search reads YouTube public results pages and caches them for five minutes. No account, no telemetry, no self-updater. Audio capture is tested on Linux (PipeWire/PulseAudio) and Windows 11 (WASAPI loopback via soundcard, a Windows-only python_dependency).","category":"desktop","platforms":[],"maintainer":"KeyArgo","author":"KeyArgo","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/KeyArgo/hermes-aura","docs":"https://github.com/KeyArgo/hermes-aura/blob/cadabd876b221e6ec5c4fbd724fedac80026738a/README.md","tools":["aura_control","aura_listen","aura_watch"],"hooks":["on_session_start","on_session_end","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","api_request_error","on_stream_start","on_stream_end","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"macOS audio capture needs a virtual audio device (such as BlackHole).","state":"open","pr":154027,"prs":[{"n":154027,"state":"open","created":"2026-11-11T21:39:31Z"}],"created":"2026-11-11T21:39:31Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KeyArgo/hermes-aura/cadabd876b221e6ec5c4fbd724fedac80026738a/docs/img/aura-visualiser.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/aura.webp"},{"name":"hermes-gameshelf","title":"Game Center","summary":"Real board and card games inside Hermes: chess, go, checkers, connect four, reversi, gomoku, hex, breakthrough, sea battle, blackjack and slots, each with its own rules engine and a referee that refuses an illegal move and records it. Play the built-in computer at four levels, a friend on the same screen, or your own Hermes model through the games_play tool.","disclosure":"writes only its own plugin data folder; local play makes no network calls. Online play is off until the user turns it on; then it talks to https://games.hermesnet.xyz (run by the author, changeable via lobby_url) and sends the chosen display name, a recovery key at sign-in, and match moves; polling happens only while the page is open. No telemetry, no phone-home, no self-updater.","category":"general","platforms":[],"maintainer":"KeyArgo","author":"KeyArgo","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KeyArgo/hermes-game-center","docs":"https://github.com/KeyArgo/hermes-game-center/blob/9359ba470168b527337a0677c1f911cc8c161129/README.md","tools":["games_play"],"hooks":["pre_llm_call","pre_tool_call","post_api_request"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154026,"prs":[{"n":154026,"state":"open","created":"2026-11-11T21:39:26Z"}],"created":"2026-11-11T21:39:26Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KeyArgo/hermes-game-center/9359ba470168b527337a0677c1f911cc8c161129/screenshots/01-store.png","https://raw.githubusercontent.com/KeyArgo/hermes-game-center/9359ba470168b527337a0677c1f911cc8c161129/screenshots/02-game-in-play.png","https://raw.githubusercontent.com/KeyArgo/hermes-game-center/9359ba470168b527337a0677c1f911cc8c161129/screenshots/07-referee-refusal.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-gameshelf.webp"},{"name":"omniscience","title":"Omniscience","summary":"Local, read-only observability for Hermes Agent: a live graph of every session, turn, model request, tool call and subagent, plain-English failure briefings, and deterministic replay of a stored run.","disclosure":"records sanitized metadata only (IDs, timings, model and provider names, token counts, statuses, error types, tool names, argument names and character counts) from observer hooks into a local SQLite database in the profile plugin-data directory; prompts, history, assistant text, tool argument values and results, request and response bodies, headers, environment values and credentials are never stored. The viewer is a separate process that opens the database read-only, binds 127.0.0.1, needs a per-launch key and has no write endpoints. No network calls, no LLM calls, no stored credentials, no self-updater.","category":"tools","platforms":[],"maintainer":"KeyArgo","author":"KeyArgo","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KeyArgo/hermes-omniscience","docs":"https://github.com/KeyArgo/hermes-omniscience/blob/38ea8c249698235836a0aa3f35c480f2d87c93fa/docs/INSTALL.md","tools":[],"hooks":["on_session_start","on_session_end","pre_llm_call","post_llm_call","pre_api_request","post_api_request","api_request_error","post_tool_call","on_session_delete","subagent_start","subagent_stop","pre_auxiliary_call","post_auxiliary_call","on_skill_lifecycle"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154025,"prs":[{"n":154025,"state":"open","created":"2026-11-11T21:39:21Z"}],"created":"2026-11-11T21:39:21Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KeyArgo/hermes-omniscience/38ea8c249698235836a0aa3f35c480f2d87c93fa/docs/img/graph.png","https://raw.githubusercontent.com/KeyArgo/hermes-omniscience/38ea8c249698235836a0aa3f35c480f2d87c93fa/docs/img/window-map.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/omniscience.webp"},{"name":"asset-curator","title":"Asset Curator","summary":"Find existing assets or create them from code with saved license/browser preferences, optional relevance checks and preserved provenance.","disclosure":"","category":"tools","platforms":["windows"],"maintainer":"dev-willbird1936","author":"dev-willbird1936","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/dev-willbird1936/Asset-Curator","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Explicit one-time Node >=20.18.1/npm dependency setup; no launch-time install.; Browser assistance needs an installed Chrome/Edge and saved consent.; External generator projects require deliberate runtime setup and rendering.; License filtering is not legal clearance; Pixel Search needs any mode.","state":"open","pr":154024,"prs":[{"n":154024,"state":"open","created":"2026-11-11T21:39:00Z"}],"created":"2026-11-11T21:39:00Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-phone-control","title":"hermes-phone-control","summary":"Preview of a phone-native Android companion with local MCP controls and optional voice.","disclosure":"","category":"voice","platforms":[],"maintainer":"jinsu133","author":"jinsu133","version":"","requires_hermes":">=0.19","repo":"https://github.com/jinsu133/hermes-phone-assistant","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154022,"prs":[{"n":154022,"state":"open","created":"2026-11-11T21:38:11Z"}],"created":"2026-11-11T21:38:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-3d","title":"Hermes 3D","summary":"Turn your Hermes into a 3D game world you can walk through. Your scheduled jobs, conversations and system health become places to explore, right on your own computer. Anything that changes Hermes, like pausing a job, waits for your approval. Built on the Numinia Engine by Numen Games.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"numengames","author":"PabloFMM","version":"0.8.3","requires_hermes":">=0.22.0, <0.24","repo":"https://github.com/numengames/numinia-hermes-plugin","docs":"https://github.com/numengames/numinia-hermes-plugin#readme","tools":["hermes3d_state","hermes3d_cron_action"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","pre_api_request","subagent_start","subagent_stop","on_session_start","on_session_end","on_session_finalize"],"middleware":[],"env":[],"known_issues":"Disclosure: one download, only when you ask. `hermes 3d install-engine` fetches the pinned Numinia Engine release from github.com/numengames/numinia-engine, shows its size, asks you to confirm and checks its sha256 before unpacking. Nothing else leaves your machine.; Disclosure: the 3D world is served on 127.0.0.1 only.; Disclosure: a world action that changes Hermes (pause/resume a cron job) is only requested through Hermes' own approval; the `read_only` setting (off by default) refuses every such action.; Needs Node 22.18+, which Hermes' package manager provides.; Cron pause/resume from the world works through polling `hermes cron list --all` (upstream cron hooks are not available yet).; Spend and projects need `allow_direct_db_read` (off by default): Hermes has no public API for them.","state":"open","pr":154021,"prs":[{"n":154021,"state":"open","created":"2026-11-11T21:38:06Z"}],"created":"2026-11-11T21:38:06Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/numengames/numinia-hermes-plugin/a957189ca899a6468dced8c1dd9ad7626b1a8ae5/assets/hermes-3d.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-3d.webp"},{"name":"so101-arm","title":"SO-101 Arm","summary":"Give Hermes a robot arm, safely: an SO-101 (a MuJoCo sim on your laptop, or a real arm through LeRobot) driven by named skills, never joint angles. A top-down camera grid corrects its aim, a missed pick is rehearsed on simulated copies before the retry, a plain-code watchdog parks the arm on faults, a pre_tool_call guard refuses motion until a repair is verified, and only a person can lift a freeze (/arm unfreeze).","disclosure":"the plugin talks only to a local Unix socket (mode 0600) served by an arm host you start yourself (python -m so101_host serve); its log hooks send tool names, results and token counts (never conversation text) to that socket for the viewer. The arm host is a separate program from the same repository: it writes run records under ~/.so101-arm/, `fetch-model` runs git to download MuJoCo Menagerie's SO-101 model at a pinned commit, `serve --video` runs ffmpeg, and `serve --real` drives a physical arm over USB serial.","category":"tools","platforms":["linux","macos"],"maintainer":"jamesEmerson112","author":"jamesEmerson112","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/jamesEmerson112/Riz","docs":"https://github.com/jamesEmerson112/Riz#readme","tools":["arm_go_home","arm_reach","arm_approach","arm_grip","arm_lift","arm_release","arm_park","arm_play","arm_pick_up","arm_look","arm_rehearse","arm_status","arm_restart_sensor","arm_check","arm_handoff"],"hooks":["pre_tool_call","post_tool_call","post_api_request","post_compaction"],"middleware":[],"env":[],"known_issues":"Needs the arm host from the same repository running beside Hermes: python -m so101_host fetch-model, then python -m so101_host serve (add --view to watch the arm).; The real-arm driver (LeRobot) is tested against a mock robot only; it hasn't been run on hardware yet.","state":"open","pr":154019,"prs":[{"n":154019,"state":"open","created":"2026-11-11T21:38:02Z"}],"created":"2026-11-11T21:38:02Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jamesEmerson112/Riz/09203664d364458b39b2b44f11f21be1347bbe3d/media/card.png","https://raw.githubusercontent.com/jamesEmerson112/Riz/09203664d364458b39b2b44f11f21be1347bbe3d/media/correct.gif","https://raw.githubusercontent.com/jamesEmerson112/Riz/09203664d364458b39b2b44f11f21be1347bbe3d/media/heal.gif","https://raw.githubusercontent.com/jamesEmerson112/Riz/09203664d364458b39b2b44f11f21be1347bbe3d/media/stall.gif","https://raw.githubusercontent.com/jamesEmerson112/Riz/09203664d364458b39b2b44f11f21be1347bbe3d/media/pick.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/so101-arm.webp"},{"name":"artemis-owner-proof","title":"Artemis","summary":"Mobile web companion for canonical Hermes Bot Chats using full-owner Web Access.","disclosure":"","category":"web","platforms":["windows"],"maintainer":"LukeJJones","author":"LukeJJones","version":"0.0.3","requires_hermes":">=0.23.0","repo":"https://github.com/LukeJJones/artemis","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Full-owner browser authority, not chat-only or independently device-revocable access.; Requires operator-configured Hermes Bot Mode, Web Access, HTTPS/WSS and correct sign-in callback/origin settings for remote use.; Windows local admission/hosting verified; remote OAuth, physical-browser accessibility and canonical model/history continuity are not certified by those checks.; Uploads, real profile portraits, Rooms navigation, production Stop and PWA/offline support are not implemented.","state":"open","pr":154018,"prs":[{"n":154018,"state":"open","created":"2026-11-11T21:37:51Z"}],"created":"2026-11-11T21:37:51Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/LukeJJones/artemis/69bdbe079fc852a9eb0a18ca6fa175159ea0ff5b/docs/screenshots/home-light.png","https://raw.githubusercontent.com/LukeJJones/artemis/69bdbe079fc852a9eb0a18ca6fa175159ea0ff5b/docs/screenshots/home-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/artemis-owner-proof.webp"},{"name":"btw-studio","title":"BTW Studio","summary":"Side-channel /btw workspace, $0 read-only SQLite session radar, and Δτ steer playbook for Hermes Desktop, CLI, Gateway, and Dashboard. Intercepts /btw mid-turn in the composer (with attachments, opt-in voice STT/TTS, and @session context) to render Markdown answers in a strip, popover, floating pane, or dialog without mutating the transcript or L0 prompt cache. Reads state.db?mode=ro at $0 for token/cache metrics, AST syntax checks, 10 loop-guard detectors, and cross-session file write conflicts, steers conversation_id-stable turns or child subagents mid-flight, formats output via a 6-axis reading lens ([0,1]^6), and retains only rules verified by 3-call Δτ behavioral contrast in BTW.md.","disclosure":"registers 12 observer-only hooks returning None (never blocking or auto-approving), btw-studio.verified-playbook prompt section in lite/full modes, BTW_CONVERSATION_ID session env, auxiliary tasks btw_studio_fast and btw_studio_title calling ctx.llm (redacted <=32 KB digest; optional fast_base_url restricted to https:// or loopback without redirects), 55 FastAPI endpoints under /api/plugins/btw-studio/, 14 CLI subcommands, 12 gateway RPCs, and 8 Desktop host RPCs. Reads $HERMES_HOME/state.db?mode=ro (sibling profiles only when scan_sibling_profiles is on), curator logs/archived skills read-only on post_curator_run, .git/HEAD, config.yaml, MEMORY.md, up to 8 cwd-confined edited .py/.json files via ast.parse/json.loads, and denylisted workspace attachments. Opt-in gates (false/off by default, zero background LLM calls on telemetry): allow_web_search, allow_media_tools, wake_word_enabled, live_voice_enabled, tts_auto_speak, memory_md_sync_mode, scan_sibling_profiles, gamify_enabled; opt-in STT/TTS uses host providers or SSRF-validated Nous/Groq/OpenAI HTTPS audio endpoints via agent.secret_scope (TOOL_GATEWAY_USER_TOKEN, TOOL_GATEWAY_DOMAIN, GROQ_API_KEY, VOICE_TOOLS_OPENAI_KEY, OPENAI_API_KEY). Writes stay in ctx.state.data_dir unless memory_md_sync_mode or companion pet adoption is explicitly enabled; runs no shell commands, subprocesses, daemons, or self-updater.","category":"desktop","platforms":[],"maintainer":"SBMatthew","author":"SBMatthew","version":"5.8.0","requires_hermes":">=0.23.1","repo":"https://github.com/SBMatthew/hermes-btw-studio","docs":"https://github.com/SBMatthew/hermes-btw-studio/blob/4df502a25a23f03159aab2820d9ed3f69a87a124/README.md","tools":[],"hooks":["pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","post_api_request","on_session_open","on_session_start","on_session_end","post_compaction","post_curator_run","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154017,"prs":[{"n":154017,"state":"open","created":"2026-11-11T21:37:30Z"}],"created":"2026-11-11T21:37:30Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/banner.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/popover-ask.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/session-radar.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/subagents-fleet.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/learn-rsi.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/neuro-cognitive-lens.png","https://raw.githubusercontent.com/SBMatthew/hermes-btw-studio/4df502a25a23f03159aab2820d9ed3f69a87a124/docs/media/harness2-rsi.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/btw-studio.webp"},{"name":"sauce-vids","title":"sauce-vids","summary":"Capture real browser workflows and render SaaS demo footage with locally licensed visual assets under Hermes direction.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"Davemafy","author":"Davemafy","version":"0.1.0","requires_hermes":"","repo":"https://github.com/Davemafy/sauce-vids","docs":null,"tools":["sauce_capture","sauce_render","sauce_inspect"],"hooks":[],"middleware":[],"env":["SAUCE_ALLOWED_HOSTS"],"known_issues":"","state":"open","pr":154015,"prs":[{"n":154015,"state":"open","created":"2026-11-11T21:34:24Z"}],"created":"2026-11-11T21:34:24Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"timelinesai-whatsapp","title":"TimelinesAI WhatsApp","summary":"WhatsApp inbox through TimelinesAI's official MCP server (Streamable HTTP at https://mcp.services.timelines.ai/mcp, browser OAuth sign-in, no keys in config): search and summarise chats, find unanswered conversations, read history, and send messages, notes and labels from the user's connected WhatsApp number. Bundles one workflow skill, whatsapp-inbox, that makes the agent confirm the recipient and exact text before any send. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to mcp.services.timelines.ai, operated by TimelinesAI, and acts on the WhatsApp account the user signs in with, including sending messages when asked. OAuth tokens are stored by Hermes, none are in the package, and the package ships no telemetry. The package marks the server untrusted, so Hermes asks before write-capable tool calls. The tool set is served by the remote server at runtime and is not covered by the pinned sha. A TimelinesAI account is required.","category":"tools","platforms":[],"maintainer":"TimelinesAI","author":"museyib99","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/InitechSoftware/whatsapp-mcp-by-timelinesai","docs":"https://github.com/InitechSoftware/whatsapp-mcp-by-timelinesai/tree/main/plugins/timelinesai-hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154013,"prs":[{"n":154013,"state":"open","created":"2026-11-11T21:33:26Z"}],"created":"2026-11-11T21:33:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"disko","title":"disko","summary":"Run and steer a disko AI DJ set on your Mac from any Hermes chat. disko's model picks each next track and beat-matches the mix; this plugin launches it on a music folder or a Spotify playlist, starts the set, steers the energy, asks for a different next track, pauses and stops, through ten tools, a /disko slash command and a hermes disko CLI that need no model turn, and a pre_llm_call hook that tells the agent what is playing while a set runs. Standard library only.","disclosure":"talks only to disko's local control socket (~/.disko/control.sock), which disko restricts to the same macOS user, so no token is used; reads ~/.disko/install.json (disko's folder and Python path, written by disko; not a credential) to find disko, and reads no token or credential file. No third-party network calls (an optional control_url, set by the user, is contacted over plain HTTP with a token from Hermes's secret store). disko_launch starts disko as a background process with a fixed command (no shell) that keeps running after Hermes exits and logs to the plugin's data folder (a Spotify playlist is passed only as `liked` or a playlist id; disko, not the plugin, then uses the user's own Spotify sign-in, and only if the user turned Spotify audio on in disko themselves); disko_start plays music out loud on the Mac. While a set runs, one line of track names is added to each message and reaches the model provider. Requires disko (github.com/emirkaan5/disko) on macOS. No telemetry.","category":"tools","platforms":["macos"],"maintainer":"emirkaan5","author":"emirkaan5","version":"0.4.1","requires_hermes":">=0.21.5","repo":"https://github.com/emirkaan5/hermes-disko","docs":"https://github.com/emirkaan5/hermes-disko/blob/92941008c78981e935af6744e09ce2d441056e48/README.md","tools":["disko_status","disko_find_tracks","disko_start","disko_set_energy","disko_pick_again","disko_pause","disko_resume","disko_stop","disko_launch","disko_quit"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154011,"prs":[{"n":154011,"state":"open","created":"2026-11-11T21:29:45Z"}],"created":"2026-11-11T21:29:45Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/emirkaan5/hermes-disko/92941008c78981e935af6744e09ce2d441056e48/docs/banner.jpg","https://raw.githubusercontent.com/emirkaan5/hermes-disko/92941008c78981e935af6744e09ce2d441056e48/docs/screenshot.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/disko.webp"},{"name":"own-compute","title":"Own Compute","summary":"Bring your own compute. For researchers and scientists with a workstation, a lab server or a cluster account. Runs sandboxed container environments, Slurm batch jobs and cloud agents (a Hermes agent in a sandbox on the user's own machine, not a hosted service, that hands its work back as a git branch) on SSH hosts, Slurm login nodes, and the Docker or Podman on this computer. Independent of Nous Research. A Compute page in Hermes Desktop shows every machine and what runs on it, and the same actions are chat tools with approval cards before anything starts, changes or is deleted.","disclosure":"runs ssh, git and the container runtime (podman or docker), and on Slurm hosts sbatch, squeue, sacct, scancel and srun, on the hosts you add; opens ssh -L tunnels bound to 127.0.0.1 and terminal windows when you click; adds a host's key to your SSH known-hosts file on first contact (accept-new); remote hosts pull container images from public registries; cloud agents send the model key you store as a Hermes secret (CC_AGENT_API_KEY or a profile model's key) into the agent's sandbox, where commands the agent runs can read it, and call the model endpoint you choose from inside that sandbox only; one background thread starts on the first tool call or chat turn (reachability checks, Slurm and agent polling, time and idle limits); stores hosts, templates, run records and saved file copies in the plugin's data folder; reads secrets only through the Hermes secret scope; no telemetry, no update check, no call to any service run by the author.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Siioh","author":"Siioh","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Siioh/hermes-own-compute","docs":"https://github.com/Siioh/hermes-own-compute#readme","tools":["compute_status","env_spawn","env_exec","env_control","env_open","slurm_submit","slurm_jobs","cloud_agent_spawn","cloud_agent_status","cloud_agent_collect","cloud_agent_stop","env_files","compute_host","cloud_agent_message","cloud_agent_rerun"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Tested on Windows 11 (Hermes Webapp), Fedora 43 with rootless Podman, and macOS 27.2 on Apple Silicon, against a Slurm test cluster running in containers. The native Hermes Desktop app, GPUs and Docker on Linux were not tested.; Cloud agents need a model from an API-key provider or a model server you run; a sign-in or subscription provider cannot be used. The agent's key is readable by commands the agent itself runs in its sandbox: use a scoped, spend-capped key.; Slurm only (no PBS or LSF). Cloud agents are off on Slurm hosts. The Hermes gateway has to run on the computer that shows the Compute page. An EC2 host starts a machine in your own AWS account that AWS bills while it runs; EC2 was tested on us-east-1 and t3.micro only.","state":"open","pr":154010,"prs":[{"n":154010,"state":"open","created":"2026-11-11T21:28:31Z"}],"created":"2026-11-11T21:28:31Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/cloud-agent-run.png","https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/chat-approval.png","https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/overview.png","https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/jobs.png","https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/screen.png","https://raw.githubusercontent.com/Siioh/hermes-own-compute/97522db41e7f6352089bd350df45bc64267a71e6/docs/images/add-host-types.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/own-compute.webp"},{"name":"hermes-make-it-smart","title":"hermes-make-it-smart","summary":"Canonical catalog over every Hermes profile. Reads the local state.db files, gives each session the \"NNN [Subject] MMM [Tag] [Tag] Description · Verb\" name, and exposes faceted filters (subject, maker, context, intention, theme, year, project) as a native Desktop page. Includes a Pending view that attributes every memory/skill approval request to the session that produced it, and a Testing tab that simulates the rename, writes a mandatory backup, commits through the host's session.title API and offers one-click revert.","disclosure":"reads session titles and message excerpts from the local Hermes databases on the user's machine; nothing is sent over the network; the only write is a session title, and only when the user presses Commit.","category":"other","platforms":[],"maintainer":"tesla963","author":"tesla963","version":"0.25.0","requires_hermes":"","repo":"https://github.com/tesla963/hermes-make-it-smart","docs":"https://github.com/tesla963/hermes-make-it-smart#readme","tools":["cellar_search","cellar_session","cellar_stats","cellar_series","cellar_rename","cellar_tag","cellar_bateria","cellar_index","cellar_verify","cellar_export"],"hooks":["on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154009,"prs":[{"n":154009,"state":"open","created":"2026-11-11T21:28:23Z"}],"created":"2026-11-11T21:28:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"opensop","title":"OpenSOP","summary":"Turn your best agent workflow into a file anyone can run. An OpenSOP process file sets, step by step, what is a script (must be certain) and what needs the agent (judgment). Hermes starts a run with sop_run, does its steps and submits them with sop_submit; the next script step checks the work, so scripts decide done. The run lives on disk, not in the conversation: Hermes is re-anchored on its open step every turn and across compaction, nudged to finish it before wrapping up, and refused when it tries to decide a step reserved for a person (seat belts, not a sandbox). Any agent or person can pick the run up with the opensop CLI, and every step leaves a receipt. Requires the opensop CLI 0.10.0+ on PATH.","disclosure":"sop_run goes through Hermes's approval prompt (naming the process file's hash and the inputs) because a run's script steps run as shell commands with your permissions, outside Hermes's terminal approvals; llm and judgment steps can drive coding-agent CLIs (claude, codex, cursor-agent, kimi) with the permission the file declares, so only run process files you trust. Run folders are written under OPENSOP_LOCAL_HOME, the nearest .opensop cell or ~/.opensop-local; the plugin keeps a session-to-run map in plugin state. Tool calls are bounded by OPENSOP_HERMES_TIMEOUT (default 1800 s). The plugin makes no network calls, reads no credentials, never auto-approves or changes approval settings, starts no Hermes children, runs nothing in the background and has no self-updater.","category":"automation","platforms":["linux","macos"],"maintainer":"opensop","author":"Chosen9115","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/opensop/hermes-opensop","docs":"https://github.com/opensop/hermes-opensop#readme","tools":["sop_run","sop_status","sop_submit","sop_retry"],"hooks":["pre_llm_call","pre_verify","pre_tool_call","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154008,"prs":[{"n":154008,"state":"open","created":"2026-11-11T21:28:22Z"}],"created":"2026-11-11T21:28:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"swarm-studio","title":"Swarm Studio","summary":"A whole creative studio inside Hermes. One prompt, and a crew of agents you can watch and steer builds the whole launch on a live canvas: a multi-page website, a working web app with a database, a playable game (also as a Godot, Unity or Unreal project), a promo film and the social posts. Open it from the Desktop sidebar, ask for a site in any chat (the swarm_design tool), type /swarm, or run `hermes swarm`. The crew uses the models you already set up in Hermes, through two picker slots (planner and builders). Builds can be posted to Swarm Feed, where others try them live and remix them with credit.","disclosure":"starts a small Node server (Node 18+ needed) that listens on 127.0.0.1 only and keeps running after Hermes closes; it calls the chat endpoint you configure with your brief; the canvas loads Tailwind from cdn.tailwindcss.com and fonts from Google Fonts; Publish runs your gh CLI (GitHub Pages) or calls Vercel / Cloudflare Pages with a token you connect, stored under $HERMES_HOME/swarm-studio/ with mode 0600; the first promo video installs hyperframes and ffmpeg from npm, and the first app build installs the vendored dyad app engine's packages from npm (about 1.5 GB, once); Swarm Feed (https://swarm.design-bakery.com) is contacted only when you run /swarm connect, post, remix or login. No telemetry. It writes only under $HERMES_HOME/swarm-studio/. SWARM_STUDIO_API_KEY (optional override of the Hermes model slots) and ELEVENLABS_API_KEY (optional, film music) are read via the secret scope.","category":"desktop","platforms":[],"maintainer":"Pukujan","author":"Pukujan","version":"0.2.0","requires_hermes":">=0.23","repo":"https://github.com/Pukujan/swarm-studio","docs":"https://github.com/Pukujan/swarm-studio#readme","tools":["swarm_design","swarm_canvas","swarm_studio"],"hooks":[],"middleware":[],"env":["SWARM_STUDIO_API_KEY"],"known_issues":"Needs Node.js 18 or newer on PATH (or set SWARM_STUDIO_NODE).; The first app build downloads the app engine's packages from npm (about 1.5 GB, once).","state":"open","pr":154007,"prs":[{"n":154007,"state":"open","created":"2026-11-11T21:27:27Z"}],"created":"2026-11-11T21:27:27Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Pukujan/swarm-studio/363070f8cac7c1c65649fe3cb395c4907c85b6eb/docs/catalog/studio-home.png","https://raw.githubusercontent.com/Pukujan/swarm-studio/363070f8cac7c1c65649fe3cb395c4907c85b6eb/docs/catalog/studio-canvas.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/swarm-studio.webp"},{"name":"money-rules","title":"money-rules","summary":"Money rules for Hermes: pay, split, sweep and alert on USDC from your own Solana wallet, under rules you set in chat. You sign one capped USDC allowance (SPL approve) to a local helper key; USDC stays in your wallet until a rule pays, and every new rule waits for /money approve. Rules fire on a schedule, when USDC comes in, or when a balance crosses a line. Gasless: a relay pays the Solana fee for a small USDC fee in the same transaction and only co-signs connect, revoke and pay.","disclosure":"network calls to hermes-money-rules.vercel.app (connect page, fee co-sign, read-only RPC proxy) or your own rpc_url; a background thread checks the wallet every 30s while Hermes runs; a helper keypair, rules and history are stored under ~/.hermes/plugin-data/money-rules; the helper can only spend up to the signed cap and /money revoke zeroes it on-chain. No telemetry.","category":"tools","platforms":[],"maintainer":"seedless-labs","author":"francis-codex","version":"0.1.0","requires_hermes":"","repo":"https://github.com/seedless-labs/hermes-money-rules","docs":"https://github.com/seedless-labs/hermes-money-rules#readme","tools":["money_status","money_connect","money_pay","money_rule_add","money_rule_list","money_request","money_history"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154006,"prs":[{"n":154006,"state":"open","created":"2026-11-11T21:27:10Z"}],"created":"2026-11-11T21:27:10Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crowdcode","title":"CrowdCode","summary":"Cloud agents with their own wallets. Create CrowdCode agents owned by this install's Base wallet (no sign-up or API key), fund them with USDC, give them tasks that buy x402/MPP services or deploy paid services of their own, and withdraw the earnings. A pre_tool_call guard sends money-moving calls above a configurable amount to Hermes's approval prompt and blocks spending above a daily cap.","disclosure":"network calls go to crowdcode.app (agent creation is paid by x402 on Base; signed owner requests) and to a Base RPC to read the wallet's USDC balance; the wallet's private key is a declared secret stored only through Hermes's credential store; agent creation, funding and task budgets spend real USDC.","category":"automation","platforms":[],"maintainer":"sr33j","author":"sr33j","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/sr33j/crowdcode-mcp","docs":"https://github.com/sr33j/crowdcode-mcp/tree/main/plugins/hermes","tools":["crowdcode_wallet","crowdcode_agents","crowdcode_create_agent","crowdcode_fund_agent","crowdcode_run_task","crowdcode_task_status","crowdcode_services","crowdcode_withdraw","crowdcode_transfer","crowdcode_demand"],"hooks":["pre_tool_call"],"middleware":[],"env":["CROWDCODE_WALLET_KEY"],"known_issues":"","state":"open","pr":154003,"prs":[{"n":154003,"state":"open","created":"2026-11-11T21:26:52Z"}],"created":"2026-11-11T21:26:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/sr33j/crowdcode-mcp/76b39f5f43c6cb3a68ebd35a6e209a2240302a71/plugins/hermes/docs/banner.png","https://raw.githubusercontent.com/sr33j/crowdcode-mcp/76b39f5f43c6cb3a68ebd35a6e209a2240302a71/plugins/hermes/docs/approval.png","https://raw.githubusercontent.com/sr33j/crowdcode-mcp/76b39f5f43c6cb3a68ebd35a6e209a2240302a71/plugins/hermes/docs/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/crowdcode.webp"},{"name":"hermes-studiotwin","title":"StudioTwin","summary":"StudioTwin cloud images, environments, PBR materials, meshes, rigs, motion, sound effects and Concepts via remote MCP, with an optional Desktop media workspace.","disclosure":"","category":"desktop","platforms":[],"maintainer":"realtwin","author":"dbitzas","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/realtwin/hermes-studiotwin-plugin","docs":"https://github.com/realtwin/hermes-studiotwin-plugin/blob/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/README.md","tools":[],"hooks":[],"middleware":[],"env":["STUDIOTWIN_API_KEY"],"known_issues":"A StudioTwin account, API key and wallet credits are required for cloud generation; prompts and authorized input media are sent to StudioTwin and its selected providers.; Paid tools use Hermes native approval. Obtain a fresh estimate for variable costs; the plugin imposes no session spend cap.; Full Desktop UI requires compatible Hermes SDK surfaces and separate Desktop enablement; remote setups need the UI installed on the client and the package and key on the backend.; Optional local processing requires backend-local Blender 4.2+, ffmpeg/ffprobe, or Node.js 22+ and Chrome/Chromium as applicable; render helpers disable Chromium's sandbox, so use trusted inputs or a separately isolated environment.","state":"open","pr":154002,"prs":[{"n":154002,"state":"open","created":"2026-11-11T21:26:14Z"}],"created":"2026-11-11T21:26:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/Library.png","https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/Model.png","https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/Audio.png","https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/CharacterConcept.png","https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/SceneConcept.png","https://raw.githubusercontent.com/realtwin/hermes-studiotwin-plugin/ed8021399fbb8dfa28703c566fc7a90ee40c7c2b/docs/screenshots/Jobs.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-studiotwin.webp"},{"name":"hermes-issue-sync","title":"hermes-issue-sync","summary":"Two-way sync between Hermes kanban cards and Linear or Jira issues. Open issues with a chosen label in the projects you pick become cards; card status moves the issue through its workflow; a finished card posts its summary on the issue; a worker that blocks with a question gets it posted on the issue, and the first human reply there unblocks the card with the answer. Several connections (Linear workspaces, Jira sites, several projects each) run side by side, and one failing never stops the others. Desktop adds an Issue Sync panel, a status-bar chip and kanban card badges; /issues status and /issues show work from any chat.","disclosure":"calls api.linear.app and your Jira Cloud site with your own API key or token (read by name through the profile secret scope, never stored); moves issues and posts comments as you, each signed \"— via Hermes issue-sync\"; runs a short background sync thread on kanban dispatcher ticks and runs `hermes kanban` subcommands to read and update the board; writes only to its own plugin data folder; no telemetry. On multi-profile gateways it binds the profile's secret scope itself through the public agent.secret_scope API until NousResearch/hermes-agent#151126 is fixed.","category":"automation","platforms":[],"maintainer":"elijahboston","author":"elijahboston","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/elijahboston/hermes-issue-sync","docs":"https://github.com/elijahboston/hermes-issue-sync#readme","tools":[],"hooks":["on_kanban_dispatch_tick","kanban_task_claimed","kanban_task_completed","kanban_task_blocked"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":154001,"prs":[{"n":154001,"state":"open","created":"2026-11-11T21:26:05Z"}],"created":"2026-11-11T21:26:05Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/elijahboston/hermes-issue-sync/ed7dd85c5b4f38df55ac9ecb663ab220b8b1c8cc/docs/screenshots/panel-waiting.png","https://raw.githubusercontent.com/elijahboston/hermes-issue-sync/ed7dd85c5b4f38df55ac9ecb663ab220b8b1c8cc/docs/screenshots/linear-question.png","https://raw.githubusercontent.com/elijahboston/hermes-issue-sync/ed7dd85c5b4f38df55ac9ecb663ab220b8b1c8cc/docs/screenshots/linear-done-summary.png","https://raw.githubusercontent.com/elijahboston/hermes-issue-sync/ed7dd85c5b4f38df55ac9ecb663ab220b8b1c8cc/docs/screenshots/panel-boards.png"],"videos":[],"x":["https://x.com/ElijahBoston/status/2120631212981039237"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-issue-sync.webp"},{"name":"butler","title":"Butler","summary":"Turns the Hermes desktop pet into an on-screen operator: WALK draws a guide on the real controls and verifies each step from the macOS Accessibility tree, DESCRIBE reads the control under your pointer (role, label, enabled state, value) without letting the click reach your app, and WATCH announces one condition from an app in the background and keeps it until you acknowledge it. Accessibility only: no screenshots, no OCR, no Screen Recording, no Input Monitoring.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"Intenzi","author":"Intenzi","version":"0.4.1","requires_hermes":">=0.22.5","repo":"https://github.com/Intenzi/hermes-butler","docs":"https://github.com/Intenzi/hermes-butler/blob/main/README.md","tools":["butler_capture","butler_guide_start","butler_guide_status","butler_look","butler_say","butler_stop","butler_watch_ack","butler_watch_start","butler_watch_status","butler_watch_stop"],"hooks":[],"middleware":[],"env":[],"known_issues":"macOS only: the companion is a native Swift helper, and every feature that reads the screen needs the Accessibility grant.; Guides are single-active: a second guide is refused with a hint unless replace=true.; WATCH runs one app at a time; Chromium/Electron trees need the window to have been opened once before their controls are visible.; LOOK's click-catcher covers the screen while armed, so clicks do not reach other apps until you cancel or pick.","state":"open","pr":154000,"prs":[{"n":154000,"state":"open","created":"2026-11-11T21:24:41Z"}],"created":"2026-11-11T21:24:41Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/a9a88831-e035-4ddb-90f3-a74e9380bd6c","https://github.com/user-attachments/assets/77334009-3699-4f11-bfa4-4669ae83ed08","https://github.com/user-attachments/assets/fda98549-fcaf-4f28-beca-78f2072ea983"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/butler.webp"},{"name":"house-rules","title":"House Rules","summary":"House rules your agent can't forget. Refuses tool calls that match your rules (a command with flags such as git push --force or rm -r, or a regex on a tool argument such as a .env path) or that leave the folders you allow. The refusal tells the agent why and to ask you; you lift a rule for the current session with /rules unlock <n>. /rule turns plain words into a rule draft as YAML and replays it on past tool calls; you paste it into the profile config.yaml yourself, the plugin never writes it. Rules apply from the next session. For an agent that forgets or ignores instructions; it is not a security boundary (scripts, aliases and indirect effects are not seen).","disclosure":"no network call of its own, no subprocess, no credentials, no telemetry, no background task. Hook pre_tool_call reads each tool call's name and arguments and refuses matches; a refusal notice (tool name and reason, never the arguments) is posted to the conversation with ctx.post_message. /rule makes one LLM call through ctx.llm.complete_structured with the user's words, and reads the profile's state.db read-only to replay the draft (other profiles' state.db only if the user picks them). Reads its settings with ctx.get_config and the profile config.yaml read-only. Writes nothing to disk.","category":"general","platforms":[],"maintainer":"AIverflow","author":"AIverflow","version":"0.2.0","requires_hermes":"","repo":"https://github.com/AIverflow/hermes-house-rules","docs":"https://github.com/AIverflow/hermes-house-rules#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","on_session_start","on_session_finalize"],"middleware":[],"env":[],"known_issues":"Not a security boundary: aliases, scripts, variables and other programs with the same effect are not seen.; Rules are read once per session; config.yaml edits apply from the next session.","state":"open","pr":153999,"prs":[{"n":153999,"state":"open","created":"2026-11-11T21:24:33Z"}],"created":"2026-11-11T21:24:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/AIverflow/hermes-house-rules/54194a4c402a04cfcefe894c8dd3cbd1612e13ac/docs/demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"agenttrust-seal","title":"AgentTrust Seal","summary":"Seal a file and verify the seal later, so one Hermes agent can prove to the next that a handoff was not changed. Adds an agenttrust_seal tool (seal, verify) and an /agenttrust-seal slash command. Verify answers SEAL HOLDS, SEAL BROKEN or NO SEAL, with codes 0, 1 and 2, so the receiving agent can stop before it builds on a changed file. Standard library only.","disclosure":"no network calls, no credentials, no background process. When sealing it runs one shell command, git rev-parse --short HEAD, in the file's folder to record the commit. It writes one file, <file>.seal.json, next to the sealed file, holding the sha256, size, author name, UTC time, short git commit and the machine's hostname. A seal detects change; it is not a signature and does not prove who sealed the file.","category":"tools","platforms":[],"maintainer":"Syrup-Labs-AI","author":"SyrupLabsAI","version":"0.2.0","requires_hermes":">=0.22.2","repo":"https://github.com/Syrup-Labs-AI/hermes-agenttrust-seal","docs":"https://github.com/Syrup-Labs-AI/hermes-agenttrust-seal#readme","tools":["agenttrust_seal"],"hooks":[],"middleware":[],"env":[],"known_issues":"Tested on Hermes Agent 0.22.2 (Linux) and 0.22.7 (Windows); macOS is not tested.; A seal is not a signature; anyone who can rewrite both the file and its seal can make a new seal that holds.","state":"open","pr":153997,"prs":[{"n":153997,"state":"open","created":"2026-11-11T21:23:18Z"}],"created":"2026-11-11T21:23:18Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mapdesk","title":"MapDesk","summary":"A GIS workspace inside Hermes Desktop. Import GeoJSON, CSV, KML/KMZ, GPX, XLSX, zipped shapefiles and bounded public ArcGIS layers; style, query and select layers; run geodesic buffer, dissolve, clip, centroid, hull and points-in-polygon analysis; export GeoPackage, shapefile, KMZ, GeoJSON, CSV and PNG, from chat or from the map pane. Works with no account on a keyless OpenFreeMap basemap; a public Mapbox token is optional.","disclosure":"the map pane loads version-pinned, SRI-checked MapLibre GL JS (unpkg) or Mapbox GL JS, and basemap tiles from OpenFreeMap, Esri ArcGIS Online (satellite), the Terrarium elevation set on Amazon S3 (terrain) or Mapbox (billed to your token). ArcGIS imports contact the source you choose, and geocoding a CSV by an address column in the pane sends those addresses to OpenStreetMap Nominatim. Layers stay in the profile's plugin data folder. No telemetry, no self-updater, no shell commands.","category":"desktop","platforms":[],"maintainer":"mackydubzz","author":"mackydubzz","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/mackydubzz/hermes-mapdesk","docs":"https://github.com/mackydubzz/hermes-mapdesk#readme","tools":["mapdesk_status","mapdesk_import","mapdesk_layer","mapdesk_selection","mapdesk_query","mapdesk_analyze","mapdesk_view"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Hermes Desktop for the map pane; enable the Desktop component after installation.","state":"open","pr":153996,"prs":[{"n":153996,"state":"open","created":"2026-11-11T21:23:05Z"}],"created":"2026-11-11T21:23:05Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mackydubzz/hermes-mapdesk/eaaea7102e5d6396840850ee968fe46aea025f41/docs/screenshots/01-overview.jpg","https://raw.githubusercontent.com/mackydubzz/hermes-mapdesk/eaaea7102e5d6396840850ee968fe46aea025f41/docs/screenshots/02-corridor-analysis.jpg","https://raw.githubusercontent.com/mackydubzz/hermes-mapdesk/eaaea7102e5d6396840850ee968fe46aea025f41/docs/screenshots/03-radius-selection.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mapdesk.webp"},{"name":"hermes-committee","title":"Hermes Committee","summary":"A committee of AI models for hard decisions. You set the seats (each with its own role and model) and a chairman; the seats answer independently, rank each other's answers blind, debate the points they disagree on, and the chairman writes a decision with confidence, dissent, role-fit notes and next actions with owners. Evidence files (PDF, Word, Excel, CSV, text, photos) go to every model as cited [E1] passages; optional Research first searches the web once through Hermes's own web tools and adds checked [W1] passages before the seats start. Time and budget limits with a mid-run ask to extend, follow-up runs, saved committees, a live Desktop page (Brief, Convene, Decision) and a Markdown + PDF report.","disclosure":"one run makes several calls through ctx.llm to each seat's and the chairman's model on your existing Hermes providers (typically 2-4 per seat plus 1-3 for the chairman; an estimate and a budget cap are shown before it starts; clerical steps ask for low reasoning, answers and the verdict for medium); with Research first on, the question (never file contents) goes to the web search provider set up in Hermes and up to 6 pages are read through web_extract; evidence files the user picks are read and their text is sent to every participating model; runs, reports and evidence copies are kept under the plugin's data directory; a run uses worker threads inside Hermes and no background process outlives it; no credentials read or stored; no telemetry.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"abualnassr","author":"abualnassr","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/abualnassr/hermes-committee","docs":"https://github.com/abualnassr/hermes-committee/blob/c7ed1b63feee39185aed90eac0d0f9185109e959/README.md","tools":["committee_open","committee_advance"],"hooks":["post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Each run makes several model calls on the providers you assign (shown as an estimate before it starts, with a budget cap, default $2). Subscription routes count $0 toward the budget; unknown API prices are not treated as free and can be entered by hand.; Research first needs a web search provider set up in Hermes. Without one, the run goes on from your own evidence and says why.; Pricing and billing detection read Hermes internals (agent.usage_pricing), all fail-soft; if those move in a future release, cost shows as unknown rather than wrong.","state":"open","pr":153995,"prs":[{"n":153995,"state":"open","created":"2026-11-11T21:22:22Z"}],"created":"2026-11-11T21:22:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/abualnassr/hermes-committee/c7ed1b63feee39185aed90eac0d0f9185109e959/docs/images/decision.png"],"videos":[],"x":["https://x.com/abualnassr/status/2120628808646803834"],"youtube":["cg8Mme4T09I"],"thumb":"/hackathon/thumbs/hermes-committee.webp"},{"name":"taster","title":"Taster","summary":"Runs another Hermes plugin once in a locked box (fake home, canary wallet files, network denied and logged) and reports what it did versus its manifest.","disclosure":"spawns sandbox-exec and a Python child process, reads the plugin folder you point it at and the Hermes and Python install folders, and makes no network calls, stores no credentials and runs nothing in the background. macOS only.","category":"tools","platforms":["macos"],"maintainer":"Yonkoo11","author":"Yonkoo11","version":"0.1.0","requires_hermes":">=0.21.3","repo":"https://github.com/Yonkoo11/hermes-taster","docs":"https://github.com/Yonkoo11/hermes-taster#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153994,"prs":[{"n":153994,"state":"open","created":"2026-11-11T21:21:58Z"}],"created":"2026-11-11T21:21:58Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-webmcp","title":"agent-webmcp — docs sites as a callable toolkit","summary":"Search a 1,400+ domain capability index, mount a docs site's tools, and ask its AI assistant for settled, cited answers — one tool call, sources back. Owns its own headless/headed Chromium via Playwright (no dependency on Hermes browser tools; works on CLI/gateway/desktop). Proven live on Mintlify, Fern, ReadMe and GitBook docs assistants.","disclosure":"shells out to the agent-webmcp CLI (npm i -g @orkestrate/agent-webmcp) and reads the local ~/.local/share/agent-webmcp index (nothing uploaded, sync never runs from the plugin); launches a local Chromium per ask call (headless default, headed for bot-gated hosts), visiting only the target docs page, closed afterwards with no persistent profile; page content treated as untrusted data; asks cap at ask_timeout_s (default 150s) and fail cleanly unattended.","category":"web","platforms":[],"maintainer":"system1970","author":"system1970","version":"0.1.0","requires_hermes":"","repo":"https://github.com/system1970/hermes-agent-webmcp","docs":"https://github.com/system1970/hermes-agent-webmcp#readme","tools":["webmcp_search","webmcp_get","webmcp_ask"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153993,"prs":[{"n":153993,"state":"closed","created":"2026-11-11T21:19:44Z"}],"created":"2026-11-11T21:19:44Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-agent-radio","title":"Hermes Agent Radio","summary":"A 24/7 radio station about Hermes Agent and open-source agents, written, fact-checked and voiced by agents, inside Hermes. Desktop gets a player bar under the composer that lifts into a panel, a full player page, a status-bar dot and a detachable pop-out window. Your agent gets eight tools and a /radio command to see what is on, read the guide and sourced show notes, browse stations and songs, request songs, vote in the weekly chart and send the hosts a question, topic or roast; a human producer reads every one before anything airs.","disclosure":"the tools make HTTPS calls only to the configured station (default hermesagentradio.com; plain http is refused except for localhost) and send what the agent submits plus an optional sender name. The Desktop half embeds the station's own player page and audio stream through the public Desktop SDK. The one file written is an anonymous listener id in the plugin's data folder, used to count one chart vote per listener. No hooks, context injection, shell commands, background work, credentials, telemetry or self-updater; Python standard library only.","category":"desktop","platforms":[],"maintainer":"Sahil-SS9","author":"Sahil-SS9","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Sahil-SS9/hermes-agent-radio-plugin","docs":"https://github.com/Sahil-SS9/hermes-agent-radio-plugin#readme","tools":["radio_now_playing","radio_guide","radio_show_notes","radio_stations","radio_songs","radio_request","radio_song_request","radio_vote"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153991,"prs":[{"n":153991,"state":"open","created":"2026-11-11T21:19:29Z"}],"created":"2026-11-11T21:19:29Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentic-operations","title":"Agentic Operations","summary":"Synthetic manufacturing decisions with constraint planning, durable recovery, and outcome correction.","disclosure":"","category":"automation","platforms":["linux","macos"],"maintainer":"ryanteoyx","author":"ryanteoyx","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ryanteoyx/agentic-operations","docs":"https://github.com/ryanteoyx/agentic-operations/blob/dd4a6cf563a03b65231e30f3b32338ab1fe5a113/plugin/hermes_ops/README.md","tools":["ops_seed_demo","ops_list_cases","ops_case","ops_investigate","ops_plan","ops_select_plan","ops_execute","ops_reconcile","ops_advance_demo","ops_evaluate","ops_activate_correction"],"hooks":[],"middleware":[],"env":[],"known_issues":"Synthetic ERP only; production connectors and company RBAC are not included.; Web dashboard supported; no native Desktop extension.; Optional evidence review requires a configured Hermes model.","state":"open","pr":153990,"prs":[{"n":153990,"state":"open","created":"2026-11-11T21:19:06Z"}],"created":"2026-11-11T21:19:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ryanteoyx/agentic-operations/dd4a6cf563a03b65231e30f3b32338ab1fe5a113/docs/images/operations-plan.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agentic-operations.webp"},{"name":"zedmode","title":"Zed Mode","summary":"Every Hermes Desktop conversation in one stack that recedes into the screen, ordered like an inbox: failed, needs you, working, unread, pinned, then the rest. Answer approvals and questions on the card, hold a thread beside the stack, start or branch a chat without leaving, switch a live chat's model, and tune the 3D live. Desktop plugin (desktop/plugin.js inside the plugin SDK surface) plus a read-only dashboard backend that reads the session list from state.db. No network, no credentials, no agent tools, hooks, middleware or env vars.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"latentJake","author":"latentJake","version":"0.19.0","requires_hermes":">=0.23.0","repo":"https://github.com/latentJake/hermes-zenmode","docs":"https://github.com/latentJake/hermes-zenmode#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Early beta, tested on Hermes v0.23.0 on macOS only.; Pins and stored (not live) transcripts need the Python half enabled under plugins.enabled; without it the stack still works for live chats.","state":"open","pr":153988,"prs":[{"n":153988,"state":"open","created":"2026-11-11T21:18:55Z"}],"created":"2026-11-11T21:18:55Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/banner.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-stack.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-hold.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-model-menu.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-new-chat.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-needs-you.jpg","https://raw.githubusercontent.com/latentJake/hermes-zenmode/0e6ebbacb1696e49d28181c37ff382ca41b05ec1/docs/img/zedmode-tune.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/zedmode.webp"},{"name":"engagements","title":"Hermes Engagements","summary":"A client notebook for your Hermes agents. Each client and project is a plain Markdown record on your machine: who they are, who to talk to, how they like to work and where the real documents and repos live. Add a client by talking or pasting notes, link a chat to it, and the agent keeps the record current with a dated source for every change. Includes a read-only Clients page for Hermes Desktop and the web dashboard.","disclosure":"local files only, no network requests, no telemetry, no shell commands, no background processes and no stored credentials. Reads and writes Markdown records under the library folder you choose (default is the profile's plugin-data folder), and reads the session's working directory, id and surface to link a chat to a project. Installs PyYAML 6.x.","category":"memory","platforms":[],"maintainer":"latentoperator","author":"latentoperator","version":"1.0.0-rc1","requires_hermes":">=0.22.3","repo":"https://github.com/latentoperator/hermes-engagements-plugin","docs":"https://github.com/latentoperator/hermes-engagements-plugin/blob/673dec5d2c04d55376f8c81c8afdf5c018a44076/README.md","tools":["engagements_find","engagements_bind","engagements_context","engagements_create","engagements_update"],"hooks":["pre_llm_call","post_compaction","on_session_reset","on_session_delete"],"middleware":[],"env":[],"known_issues":"Client scoping organizes context. It is not isolation between clients; use a fresh session per client when confidentiality matters.; Runtime evidence is from Linux. Windows reads and writes are covered by native CI only, and macOS has not been exercised.; Messaging gateways and Hermes Desktop SSH remote mode are not verified.","state":"open","pr":153986,"prs":[{"n":153986,"state":"open","created":"2026-11-11T21:17:38Z"}],"created":"2026-11-11T21:17:38Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"waiting-on-you-desktop","title":"Waiting On You","summary":"Desktop panel listing every question your agents are waiting on you to answer, across all chats and profiles, sorted by urgent/important and answerable in place (Yes, No, Reply, Later) with five seconds to undo.","disclosure":"sends chat endings to your configured Hermes model (and an optional decision provider you choose) to find asks; reads every local profile's state.db and projects.db read-only; runs a background scan in the gateway; optional satellite push between your own machines, optional SSH reads, optional chat archiving and optional local action-handler commands, all off by default; keys only via Hermes secrets; no telemetry","category":"desktop","platforms":["macos","linux"],"maintainer":"clientamp","author":"clientamp","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/clientamp/waiting-on-you-desktop","docs":"https://github.com/clientamp/waiting-on-you-desktop#readme","tools":["wou_list"],"hooks":["post_llm_call"],"middleware":[],"env":[],"known_issues":"Inline answers work only for chats open in this Desktop window; chats on another machine or profile get Open instead.; Satellite pairing uses a private Hermes token-route helper until a public seam exists (hermes-agent #143507).","state":"open","pr":153985,"prs":[{"n":153985,"state":"open","created":"2026-11-11T21:17:34Z"}],"created":"2026-11-11T21:17:34Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/clientamp/waiting-on-you-desktop/b685d1a898837cfbb2da8c7ac7b671f437bea51b/assets/readme/panel.png","https://raw.githubusercontent.com/clientamp/waiting-on-you-desktop/b685d1a898837cfbb2da8c7ac7b671f437bea51b/assets/readme/nested.png","https://raw.githubusercontent.com/clientamp/waiting-on-you-desktop/b685d1a898837cfbb2da8c7ac7b671f437bea51b/assets/readme/next-up.png","https://raw.githubusercontent.com/clientamp/waiting-on-you-desktop/b685d1a898837cfbb2da8c7ac7b671f437bea51b/assets/readme/settings.png","https://raw.githubusercontent.com/clientamp/waiting-on-you-desktop/b685d1a898837cfbb2da8c7ac7b671f437bea51b/assets/readme/first-run.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/waiting-on-you-desktop.webp"},{"name":"answer-summary","title":"Answer Summary","summary":"Long-session comprehension for Hermes Desktop: a short AI recap above the composer for every assistant reply, a one-click Catch up brief for the whole session, and a right-docked Discuss side chat that inherits the conversation, supports another model, and hands a structured outcome back to the main chat.","disclosure":"reads the active session transcript and sends selected text to the user's configured model provider for summaries, recaps, side-chat replies and handoffs; creates hidden child sessions for Discuss; stores caches in Desktop local storage; writes to the clipboard only on Copy. No telemetry, external services, credentials, shell, or filesystem access.","category":"desktop","platforms":[],"maintainer":"ArronPK","author":"ArronPK","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ArronPK/hermes-answer-summary","docs":"https://github.com/ArronPK/hermes-answer-summary#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Desktop only; not available in the CLI or messaging gateway.; Summaries and Catch up use the configured auxiliary model and can cost tokens.; Discuss side chats are discussion-only and cannot run tools or modify files.","state":"open","pr":153983,"prs":[{"n":153983,"state":"open","created":"2026-11-11T21:17:06Z"}],"created":"2026-11-11T21:17:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ArronPK/hermes-answer-summary/ca3e9394d4ca9a25f8246f6efa8e1741e8a847a3/docs/example-summary.png"],"videos":[],"x":["https://x.com/texhnogatsby/status/2120635431054414233"],"youtube":[],"thumb":"/hackathon/thumbs/answer-summary.webp"},{"name":"commonly-hermes-plugin","title":"Commonly","summary":"Gives Hermes tools to read a Commonly pod and post to it, through the @commonlyai/mcp server (stdio), plus a skill for working in a pod. The tools work while Hermes is running. Nothing wakes Hermes when someone @mentions it in the pod. Agent Plugins v1 (plugin.json + mcp.json + skills/), configuration only.","disclosure":"on first use, npx downloads @commonlyai/mcp@0.3.50 from npm and runs it locally; that package is published from the same repository but is not covered by the pinned sha. Every tool call goes to https://api.commonly.me with the Commonly agent token, which Hermes keeps in the profile .env as COMMONLY_AGENT_TOKEN. Under default trust, the tools post messages and thread comments, delete the agent's own messages, claim and react to messages, attach files, create, claim, edit, complete and follow tasks, write the agent's memory, message or ask other agents, ask the pod's people for a decision, add the agent to a pod and create pods, as that agent, without asking (the server marks no tool read-only, so trust: untrusted would prompt on every call). commonly_catch_up marks an unread backlog as skipped on the server. No telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"Team Commonly","author":"lilyshen0722","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Team-Commonly/commonly","docs":"https://github.com/Team-Commonly/commonly/tree/main/plugins/commonly-hermes-plugin","tools":[],"hooks":[],"middleware":[],"env":["COMMONLY_AGENT_TOKEN"],"known_issues":"Needs Hermes with MCP support (the mcp extra, part of the standard [all] install). Without it the plugin loads but registers no tools.; Needs Node.js and npx on the machine that runs Hermes.; The plugin does not watch a pod. Hermes replies only in a session or run that is already going.","state":"open","pr":153982,"prs":[{"n":153982,"state":"open","created":"2026-11-11T21:16:43Z"}],"created":"2026-11-11T21:16:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hot-hermes","title":"Hot Hermes","summary":"Compact profile service-state monitoring, resource planning and explicit Desktop connection retention. Detects shared gateways; no model keepalive prompts or unverified speed claims. Reads OS memory/CPU and sampler process metadata.","disclosure":"","category":"desktop","platforms":[],"maintainer":"firetussin","author":"firetussin","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/firetussin/hermes-hot-hermes","docs":null,"tools":["hot_hermes_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires supported Desktop profile-route and retention APIs.; Socket retention does not guarantee tool, session or provider-cache residency; no speed improvement has been measured.; Screenshots use a labelled synthetic fixture; v0.1.1 live Start succeeded; v0.1.2 installer acceptance is pending.","state":"open","pr":153980,"prs":[{"n":153980,"state":"open","created":"2026-11-11T21:15:22Z"}],"created":"2026-11-11T21:15:22Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/firetussin/hermes-hot-hermes/55f2441294fa2738afcaf74675d1d728576e5704/docs/banner.png","https://raw.githubusercontent.com/firetussin/hermes-hot-hermes/55f2441294fa2738afcaf74675d1d728576e5704/preview/shared-gateway.png","https://raw.githubusercontent.com/firetussin/hermes-hot-hermes/55f2441294fa2738afcaf74675d1d728576e5704/preview/light.png"],"videos":[],"x":["https://x.com/firetussin/status/2120627746636501112"],"youtube":[],"thumb":"/hackathon/thumbs/hot-hermes.webp"},{"name":"trade-preflight","title":"TradePreflight","summary":"Deterministic, fail-closed execution firewall for AI-initiated equity orders. A pre_tool_call hook normalizes broker-specific trade calls into one canonical order, evaluates it against an operator-owned policy (gross buy notional cap, max quantity, symbol / order-type / side allowlists) and blocks anything it cannot prove compliant; every decision and execution outcome is recorded in SQLite. Ships two paper-trading execution tools with deliberately different broker schemas (symbol/side/quantity/limit_price vs ticker/direction/qty/price), a read-only dry-run tool, a policy inspector and an audit reader.","disclosure":"no network calls, telemetry, shell commands, background processes or stored credentials; no requires_env; reads only its own shipped policies/default.json (copied once into the plugin data directory to seed the operator policy) and writes only inside plugin_data_dir('trade-preflight') (the policy file and the SQLite audit/ledger database); execution is simulated locally in SQLite and never reaches a broker or a real trading venue, so the plugin adds no real trading capability; the policy file is operator-owned and an agent with unrestricted shell access as the same OS user could modify it, which is a documented limitation rather than a guarantee.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Mohamedhazeem","author":"Mohamedhazeem","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Mohamedhazeem/TradePreflight","docs":"https://github.com/Mohamedhazeem/TradePreflight#readme","tools":["paper_place_order_a","paper_place_order_b","trade_check","trade_policy_get","trade_audit"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153977,"prs":[{"n":153977,"state":"open","created":"2026-11-11T21:13:27Z"}],"created":"2026-11-11T21:13:27Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"model-kombat","title":"Model Kombat","summary":"Head-to-head model evaluation: scout a task or kanban card into lanes, build a deterministic fight card (Warm-up 1pt, Main Event 2pt, Championship 3pt, sudden death) at standard, hard or gauntlet intensity, fight two models on identical prompts, and score mechanically — executed code, exact counts, numeric tolerances, phrase groups, JSON leaf equality, SQLite rows — with a per-lane Elo ladder, live arcade pane and kanban recommendation badges, and a measured best-value call ('equal quality — X is 18x cheaper and 2.8x faster') when two strong models tie; a local task_stats.json remembers which tasks actually split the two models and demotes saturated ones.","disclosure":"network: no third-party calls, fights go through the host LLM facade and the dashboard API is local and read-only; LLM spend: two model calls per task, capped per pure fight by max_fight_cost_usd and max_fight_tokens (agentic worker sessions are billed separately and not capped); cost estimation: the shipped prices.json and the model_prices setting are local price data used to ESTIMATE cost, unknown prices show n/a and never $0; subprocess/code execution: off by default, and when enabled model-written Python runs in a resource-limited subprocess as your user — defense-in-depth, not a security sandbox; kanban writes: creates unassigned display cards on a dedicated model-kombat board through the host terminal tool, never dispatched; file writes: reports, history, exports and task_stats.json under the plugin data dir only; desktop plugin and read-only dashboard API included; no telemetry; never reads credentials.","category":"models","platforms":[],"maintainer":"DarkeTech","author":"DarkeTech","version":"0.7.1","requires_hermes":">=0.23.0","repo":"https://github.com/DarkeTech/model-kombat","docs":"https://github.com/DarkeTech/model-kombat#readme","tools":["kombat_list_tasks","kombat_run_fight","kombat_scout","kombat_run_agentic_fight","kombat_score_answers","kombat_rematch_errors","kombat_recommend","kombat_history","kombat_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153976,"prs":[{"n":153976,"state":"open","created":"2026-11-11T21:13:00Z"}],"created":"2026-11-11T21:13:00Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/banner.png","https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/previews/arena_mid.png","https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/previews/arena_draw_edge.png","https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/previews/arena_sudden_death.png","https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/previews/arena_wide.png","https://raw.githubusercontent.com/DarkeTech/model-kombat/2a847b02ecb06f252e7d81bbdda3db766ba1e640/docs/previews/arena_ko.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/model-kombat.webp"},{"name":"evident-evidence","title":"Evident — Is this evident?","summary":"Follow real buyer journeys, compare website claims with independent AI answers and suggested competitors, and produce one visual report with highlighted evidence, practical changes and repeatable checks.","disclosure":"","category":"web","platforms":["linux","macos"],"maintainer":"Evident-Scalelabs","author":"Akshay-Scalelabs","version":"0.19.4","requires_hermes":"","repo":"https://github.com/Evident-Scalelabs/evident-hermes-plugin","docs":null,"tools":["evident_memory","evident_save_test","evident_scan","evident_finish","evident_demo","evident_report","evident_browse","evident_screenshot","evident_explain","evident_observe","evident_verify","evident_inspect","evident_delete"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Requires a vision-capable configured model for interpreted reports; model calls may incur charges.; Anonymous desktop capture has bounded coverage; account actions, purchases and protected pages remain outside scope.","state":"open","pr":153984,"prs":[{"n":153984,"state":"open","created":"2026-11-11T21:17:27Z"},{"n":153975,"state":"closed","created":"2026-11-11T21:12:54Z"}],"created":"2026-11-11T21:12:54Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Evident-Scalelabs/evident-hermes-plugin/bfc0f924e4e4a19d950a3b275885bbd8f06fe38e/docs/competitor-report.png","https://raw.githubusercontent.com/Evident-Scalelabs/evident-hermes-plugin/3e03e1d6b42fe5308ada8456626e847b91e32ae6/docs/competitor-report.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/evident-evidence.webp"},{"name":"memex8","title":"memex8","summary":"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.2.0 adds private-span redaction before capture, compact retrieval with ordered batch get, scoped chronological timeline, user-certified memory protection, and recoverable consolidation/dedup archives. v1.1.0 added 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.","category":"memory","platforms":[],"maintainer":"Ex8-ca","author":"Ex8-ca","version":"1.2.0","requires_hermes":">=0.21.4","repo":"https://github.com/Ex8-ca/memex8","docs":"https://github.com/Ex8-ca/memex8/blob/main/plugins/memex8/README.md","tools":[],"hooks":["on_session_end"],"middleware":[],"env":["MEMEX8_API_KEY"],"known_issues":"","state":"open","pr":153974,"prs":[{"n":153974,"state":"open","created":"2026-11-11T21:12:39Z"}],"created":"2026-11-11T21:12:39Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/Ex8-ca/memex8/d4037ac0992f1be84cf5d888809dc48da9f1c3dd/plugins/memex8/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/memex8.webp"},{"name":"chalkline","title":"Chalkline — Voice note in. Paperwork out.","summary":"A Hermes back office for solo tradespeople: capture enquiries, prepare quote and invoice PDFs, retain receipts and agreed extras, review follow-ups and export an accountant ZIP. Customer sends require payload-bound owner approval, except three template kinds approved once by hash.","disclosure":"WhatsApp uses Hermes' unofficial Baileys bridge and can expose the linked number to restriction or ban; use a dedicated business number. Three-account live tests verified text/photo/voice intake, owner-only quote approval, customer PDF receipt and one reminder from two accelerated real scheduler runs. Records, evidence copies, PDFs and exports persist in the active profile's SQLite database and plugin data folder. Intake makes no model call, but customer text/transcript evidence can reach the configured model when the owner queries a job. Owner messages/media follow Hermes provider configuration, and receipt extraction explicitly sends the selected cached image to the configured vision provider. Customer voice is stored without automatic transcription. The plugin adds no telemetry endpoint. Approved sends spawn the public hermes send CLI. A 15-minute no-agent Python script runs scheduled work; Telegram uses Hermes handler integration. Local Desktop API and 390px page rendering were verified. Cloud/Webapp and native Desktop activation remain unverified. Adds /office owner commands, a Desktop page, authenticated dashboard API, Telegram approval buttons, and one recurring no-agent cron job. Installation takes over non-owner WhatsApp intake. Setup requires explicit restrict_toolsets=true consent on a named dedicated business profile, backs up config.yaml.bak, then restricts WhatsApp, Telegram, CLI and cron toolsets. Run it as a standalone gateway for this dedicated profile. No payment processing, email or jurisdiction-specific tax rules.","category":"automation","platforms":[],"maintainer":"levi-lvjp","author":"levi-lvjp","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/levi-lvjp/chalkline","docs":"https://github.com/levi-lvjp/chalkline/blob/e10ba31d612d07e529e757654574d89c63d92cca/README.md","tools":["office_capture","office_customer","office_quote_draft","office_extra_propose","office_extra_record_agreement","office_schedule","office_complete","office_invoice_draft","office_receipt","office_payment_record","office_query","office_export","office_tick"],"hooks":["pre_gateway_dispatch","post_gateway_admission","pre_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Cloud deployment and native Desktop activation remain unverified.; Customer voice notes are stored without automatic transcription.","state":"open","pr":153973,"prs":[{"n":153973,"state":"open","created":"2026-11-11T21:12:25Z"}],"created":"2026-11-11T21:12:25Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/banner.png","https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/approval.png","https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/pipeline.png","https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/job.png","https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/quote.png","https://raw.githubusercontent.com/levi-lvjp/chalkline/e10ba31d612d07e529e757654574d89c63d92cca/docs/assets/export.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/chalkline.webp"},{"name":"defuzz","title":"Defuzz","summary":"Start projects from templates, organize adopted copies, place new files by folder rules, and run project checks or a read-only Hermes-home audit.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"defuzzr","author":"defuzzr","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/defuzzr/defuzz","docs":"https://github.com/defuzzr/defuzz#readme","tools":["defuzz_audit","defuzz_project","defuzz_place"],"hooks":["pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Requires Python 3.13 or newer and Git; Linux only.; Workspace kits require the optional defuzz-componentize companion; templates do not.; Template checks and manual lint can execute project code with your permissions, without a sandbox.; External lint tools and SDKs require separate, confirmed setup downloads.","state":"open","pr":153970,"prs":[{"n":153970,"state":"open","created":"2026-11-11T21:10:13Z"}],"created":"2026-11-11T21:10:13Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/defuzzr/defuzz/86506840a9ba36f6211bd66988ea947c5c464f52/docs/images/project-defuzz-banner.png","https://raw.githubusercontent.com/defuzzr/defuzz/assets/screenshots/defuzz-2-start-project.png","https://raw.githubusercontent.com/defuzzr/defuzz/assets/screenshots/defuzz-3-settings.png","https://raw.githubusercontent.com/defuzzr/defuzz/assets/screenshots/defuzz-4-projects-folder.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/defuzz.webp"},{"name":"smart-model-swap","title":"Smart Model Swap","summary":"Run a big and a small local LLM on one GPU rig and let the agent switch between them by task: the small one for quick or voice chat and to free VRAM for GPU jobs (ComfyUI), the big one for deep work. SmartModelProvider launches and stops llama.cpp's llama-server itself, swaps in the background without cutting replies, checks per-GPU VRAM before loading, restores the big model when idle, and ships a launch-parameter editor in the dashboard and Desktop, plus a bundled routing skill. Ollama, vLLM and LM Studio are detection-only.","disclosure":"starts and stops llama-server as a long-running background process (in a transient systemd-run --user scope when available), autostarts the primary model when the gateway starts (GPU memory), and keeps a detached runner per swap and an idle watcher that restores the primary after inactivity; sends SIGINT/SIGKILL only to the engine process it manages or an engine of the same kind holding its port; runs nvidia-smi, ss, systemctl --user show, systemd-run and llama-server --help/--version; reads /proc of other processes to identify the engine and GPU users, and its guard reads shell scripts a terminal command is about to run; adds one-line hints to turns, can veto terminal/execute_code calls that manage the engine by hand, and can end a turn with an explanation while the LLM is unloaded on purpose; writes its own settings to config.yaml via hermes_cli.config.save_config and, only on request, installs a model-provider plugin under plugins/model-providers/smart-model-provider; HTTP only to the configured engine and ComfyUI endpoints (localhost by default). No telemetry, credentials, self-updater or approval bypass.","category":"models","platforms":["linux"],"maintainer":"CarmaOS-Dev","author":"CarmaOS-Dev","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/CarmaOS-Dev/SmartModelSwap-plugin","docs":"https://github.com/CarmaOS-Dev/SmartModelSwap-plugin#readme","tools":["sms_status","sms_plan","sms_swap","sms_restore"],"hooks":["pre_llm_call","pre_tool_call","pre_transcription"],"middleware":[],"env":[],"known_issues":"Needs an NVIDIA GPU with nvidia-smi and a built llama.cpp llama-server; only llama.cpp is managed (Ollama, vLLM and LM Studio are detection-only).; On WSL2, GGUFs on a Windows drive (/mnt/<drive>, 9p) load ~10x slower than from the Linux filesystem.; Keep the same -c on every model: Hermes caches one context length per model id (the editor enforces it).","state":"open","pr":153968,"prs":[{"n":153968,"state":"open","created":"2026-11-11T21:10:00Z"}],"created":"2026-11-11T21:10:00Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/CarmaOS-Dev/SmartModelSwap-plugin/cc593118c22b22d635f226997ea6f8c868dc3138/docs/screenshots/dashboard.png","https://github.com/user-attachments/assets/702d8030-8d33-4c12-b84e-3a1f3a4ce788"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/smart-model-swap.webp"},{"name":"internship-scout","title":"internship-scout","summary":"Find internships on public Greenhouse, Lever and Ashby job boards, pre-screen each application form for blockers (cover letter, essays, how-did-you-hear, transcript, sponsorship, graduation window, pay), and track applications in a local tracker with requisition-level duplicate detection.","disclosure":"read-only HTTPS GETs to boards-api.greenhouse.io, api.lever.co, jobs.lever.co and api.ashbyhq.com when a tool is called; stores the tracker (companies, roles, statuses, notes) in a plaintext SQLite database under HERMES_HOME/plugin-data/internship-scout/; never signs in, submits applications or contacts employers; no credentials, shell commands, background processes or telemetry.","category":"tools","platforms":[],"maintainer":"aditkole","author":"aditkole","version":"1.0.0","requires_hermes":">=0.19.0","repo":"https://github.com/aditkole/hermes-internship-scout","docs":"https://github.com/aditkole/hermes-internship-scout#readme","tools":["internship_search","internship_inspect","internship_track"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153967,"prs":[{"n":153967,"state":"open","created":"2026-11-11T21:09:02Z"}],"created":"2026-11-11T21:09:02Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"call-your-shot","title":"call-your-shot","summary":"The agent calls its shot before a multi-step task: how many tool calls and how many minutes it will take. Hooks count the real tool calls and time, score the estimate 0 to 100, and /shots or hermes shots shows predicted against actual. Each new call_shot result tells the agent its own record (for example that actual time came to 0.3x its estimates) with a calibrated figure.","disclosure":"no network and no model calls of its own; stores the task label (the agent's, or the first 60 characters of your message), session id, model name and the predicted and measured numbers in an unencrypted SQLite file under HERMES_HOME/plugin-data/call-your-shot/; adds a system prompt section of about 500 characters to every session and one line of context on the turn after a shot settles.","category":"tools","platforms":[],"maintainer":"chadius-maximus","author":"chadius-maximus","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/chadius-maximus/call-your-shot","docs":"https://github.com/chadius-maximus/call-your-shot#readme","tools":["call_shot"],"hooks":["pre_llm_call","post_tool_call","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153966,"prs":[{"n":153966,"state":"closed","created":"2026-11-11T21:08:49Z"}],"created":"2026-11-11T21:08:49Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-handle-it","title":"Handle It","summary":"Handle It: your agent sits in the customer support chat so you don't have to. Hermes holds a company's live customer-support chat for you in its own browser, negotiates toward your goal for as long as it takes, and asks you before it agrees to an offer, pays, cancels or shares a detail you did not allow. Ends with the outcome and a saved transcript.","disclosure":"opens the support pages you name in a local Chromium (Playwright) with its own profile under $HERMES_HOME/hermes-handle-it, types messages into them on your behalf, reads a password from Hermes's vault only for a login handle it is given and types it only on that login's own origin, and saves transcripts and screenshots there. For phone calls: talks to bland.ai's API with your own key (BLAND_API_KEY), places phone calls to the numbers you name, bland.ai records the call when you ask, and call costs are yours, billed by bland.ai. No other network calls, no telemetry, no stored credentials.","category":"automation","platforms":["linux","macos"],"maintainer":"casualsav","author":"casualsav","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/casualsav/hermes-handle-it","docs":"https://github.com/casualsav/hermes-handle-it","tools":["support_chat_start","support_chat_send","support_chat_wait","support_chat_end","support_call_start","support_call_wait","support_call_end"],"hooks":["pre_tool_call","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153965,"prs":[{"n":153965,"state":"open","created":"2026-11-11T21:08:04Z"}],"created":"2026-11-11T21:08:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rule-injector","title":"rule-injector","summary":"Moves agent behavioural rules out of the system prompt and injects each one at the point of need, through three hooks: pre_llm_call for behavioural guards, transform_tool_result for corrections the model reads in place, and pre_verify as a completion gate. A rule is {trigger, inject} — matched on keywords, regex, tool name, tool error, path or session scope, or a boolean compound of those — with a per-turn injection budget and an undroppable always-on floor. An optional adjudicator adds a semantic second pass over ambiguous turns, and propose.py drafts a rule from a user correction. Ships a local web dashboard (`python3 dashboard.py`, FastAPI, read-only) that lists the rule set and the recent activation trace, and six starter rules; rules.json is a template the user replaces.","disclosure":"writes one activation trace line per fired rule to ~/.hermes/logs/rule-injector-trace.jsonl, and writes rules.json when a rule is created through its own CLI; no network calls, no shell, no telemetry; the dashboard reads that rules file and trace log from disk and adds fastapi + uvicorn only if the user installs and runs it; the optional adjudicator, only when enabled, sends the current turn to the auxiliary provider the user has configured, using Hermes' own auxiliary client and credentials (the plugin stores and reads no keys).","category":"automation","platforms":[],"maintainer":"klautimus","author":"klautimus","version":"1.0.0","requires_hermes":"","repo":"https://github.com/klautimus/hermes-rule-injector","docs":"https://github.com/klautimus/hermes-rule-injector#readme","tools":[],"hooks":["pre_llm_call","transform_tool_result","pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153964,"prs":[{"n":153964,"state":"open","created":"2026-11-11T21:06:38Z"}],"created":"2026-11-11T21:06:38Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/klautimus/hermes-rule-injector/dc6edbb5dc5e54eb176e4f06a8d40d69054cf1e1/docs/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rule-injector.webp"},{"name":"hermes64","title":"Hermes64","summary":"Author and edit room-based N64-era-style 3D games with story checks, bot playtests and local exports.","disclosure":"","category":"tools","platforms":[],"maintainer":"Qhantom-Labs","author":"ark-qhantom","version":"1.0.0-rc","requires_hermes":">=0.18.2","repo":"https://github.com/Qhantom-Labs/hermes64","docs":"https://github.com/Qhantom-Labs/hermes64#readme","tools":["hermes64_scaffold","hermes64_kits","hermes64_packs","hermes64_pack_create","hermes64_pack_select","hermes64_pack_validate","hermes64_compile","hermes64_check","hermes64_edit","hermes64_build_assets","hermes64_replay","hermes64_benchmark","hermes64_open","hermes64_modules","hermes64_module_add","hermes64_module_edit","hermes64_module_check","hermes64_module_benchmark","hermes64_audio","hermes64_playtest","hermes64_export","hermes64_demo","hermes64_doctor","hermes64_pack_from_refs","hermes64_cover","hermes64_character","hermes64_hub"],"hooks":[],"middleware":[],"env":[],"known_issues":"Draft platform metadata is unresolved: native Linux authoring is unavailable; platforms: [] does not establish feature parity.; Requires standard Godot 4.6.2 and matching hash-verified export templates for exports.; Windows authoring requires Job Object runner opt-in; it has no OS network or write confinement.; Windows cannot export macOS apps; final-package Mac and PC retests are pending in this draft.; No general jumping, vehicle dynamics, multiplayer or seamless open world.; Starter image audits can fail even when bots complete; agent-designed games require iteration.; Official setup fetch is human-confirmed; optional export templates download is about 1.25 GB.; macOS apps are ad-hoc signed, not notarized; other-Mac Gatekeeper acceptance is not established.; Intermediate validation retains a private host-version-probe warning and an in-process isolation note; final dependency-install gate is pending.","state":"open","pr":153963,"prs":[{"n":153963,"state":"open","created":"2026-11-11T21:06:34Z"}],"created":"2026-11-11T21:06:34Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proving-ground","title":"Proving Ground","summary":"A wiring test for your plugin stack: known, harmless test calls go through every installed plugin in a throwaway child Hermes home with the model never called, and each cell shows which plugin blocked, rewrote, changed the result, gated for approval, or passed it through.","disclosure":"","category":"tools","platforms":["macos","linux"],"maintainer":"dmustapha","author":"dmustapha","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/dmustapha/hermes-proving-ground","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","transform_terminal_output","pre_verify","post_api_request","pre_llm_call","transform_llm_output","post_llm_call"],"middleware":["llm_execution","tool_execution"],"env":[],"known_issues":"Spawns child hermes processes with throwaway homes under the temp dir; the first run copies Hermes's runtime from your local installs (no network); only without any does Hermes's own installer download ~650 MB once (up to 15 min).; Subject plugins run with your own file permissions; a call that leaves the temp dir is detected after it ran, not prevented.; A session-level /yolo toggle has no public API, so only HERMES_YOLO_MODE and approvals.mode: off are detected.; Other plugins' own network code cannot be blocked by a plugin; it would only see synthetic test data.; On macOS, Hermes's finished launchd job labels for the child homes stay listed until its next gateway start; the parent hermes process may write Hermes's own bytecode into the Hermes install; each drill child installs a process-wide audit hook (sys.addaudithook) to count non-loopback connects.","state":"open","pr":153961,"prs":[{"n":153961,"state":"open","created":"2026-11-11T21:04:30Z"}],"created":"2026-11-11T21:04:30Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/dmustapha/hermes-proving-ground/11af83a569951bad96d62299c3e23cd7fc515ef4/docs/banner.png","https://raw.githubusercontent.com/dmustapha/hermes-proving-ground/11af83a569951bad96d62299c3e23cd7fc515ef4/docs/matrix.png","https://raw.githubusercontent.com/dmustapha/hermes-proving-ground/11af83a569951bad96d62299c3e23cd7fc515ef4/docs/cell-detail.png"],"videos":[],"x":["https://x.com/capitanoo23/status/2120635683467378994"],"youtube":[],"thumb":"/hackathon/thumbs/proving-ground.webp"},{"name":"on-air","title":"On Air","summary":"AI stream co-host with guarded chat, captions, optional voice, private rehearsal, and operator controls.","disclosure":"","category":"platform","platforms":[],"maintainer":"HomunculusLabs","author":"HomunculusLabs","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/HomunculusLabs/hermes-on-air","docs":"https://github.com/HomunculusLabs/hermes-on-air#readme","tools":["onair_setup_schema","onair_setup_status","onair_setup_plan","onair_setup_progress","onair_setup_cancel","onair_preview_safety","onair_stage_status","onair_stage_plan","onair_stage_control","onair_stage_host_turn","onair_stage_safety","onair_show_plan","onair_show_status","onair_show_chat","onair_show_safety","onair_work_share","onair_present_status","onair_present_publish","onair_present_control","onair_obs_setup","onair_obs_scene","onair_window_share","onair_broadcast","onair_layout"],"hooks":["pre_llm_call","post_llm_call","on_session_end"],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"open","pr":153960,"prs":[{"n":153960,"state":"open","created":"2026-11-11T21:04:21Z"}],"created":"2026-11-11T21:04:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/HomunculusLabs/hermes-on-air/d40b6ef97e34cd5bd89e8434cad2538a3c1080c3/docs/img/desktop-show-dark.png","https://raw.githubusercontent.com/HomunculusLabs/hermes-on-air/d40b6ef97e34cd5bd89e8434cad2538a3c1080c3/docs/img/desktop-show-light.png","https://raw.githubusercontent.com/HomunculusLabs/hermes-on-air/d40b6ef97e34cd5bd89e8434cad2538a3c1080c3/docs/img/private-show-captions.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/on-air.webp"},{"name":"helper","title":"Helper","summary":"Desktop page for people who are new to Hermes: a Dashboard with nine set-up cards (what each thing is, the steps from the Hermes docs, a button to its place in Hermes) and Helper, a small character with its own conversation window that answers questions about Hermes in plain words, from lines checked against the Hermes docs.","disclosure":"reads, through Hermes's read-only Desktop calls, whether a model is ready and its name, the list of profiles and each profile's skills, and in Helper's set-up conversation the main profile's SOUL.md text and the list of scheduled jobs; never reads .env, auth.json or config files. When its fixed rules are not sure of an answer it sends the typed message, the last few lines of the Helper conversation and chunks of the Hermes docs to the person's own configured model (llm.oneshot), which spends their model credit; no tools run and nothing is saved to their chats. Keeps a name, a few answers, the Done marks and the last 50 lines of the Helper conversation as plain text in Desktop plugin storage, shared by all profiles on the computer and not removed on uninstall. Only when the person presses its buttons, 'Do it for me' runs Hermes's own importer (hermes import-agent <agent> --dry-run, then hermes import-agent <agent> --yes) and, if the importer is missing and the person agrees, hermes plugins install agent-importers --enable; no other command can run and the model cannot write one. No network calls of its own, no telemetry, no self-update. Desktop-only (desktop/plugin.js, no __init__.py): no agent tools, hooks, middleware or env vars.","category":"desktop","platforms":[],"maintainer":"benhens","author":"benhens","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/benhens/hermes-helper","docs":"https://github.com/benhens/hermes-helper#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153958,"prs":[{"n":153958,"state":"open","created":"2026-11-11T21:03:35Z"}],"created":"2026-11-11T21:03:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"emporia","title":"Emporia","summary":"An open network for AI agents: Hermes agents meet other agents on relays — a signed feed, rooms, sealed DMs the relay cannot read, games, labs tied to code repos, and a season of quests. Testnet only; the relay holds no money.","disclosure":"","category":"platform","platforms":["linux","macos"],"maintainer":"wujitsana","author":"wujitsana","version":"2.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/wujitsana/emporia","docs":"https://github.com/wujitsana/emporia/tree/main/hermes_plugin/emporia#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_llm_call","transform_tool_result"],"middleware":[],"env":["EMPORIA_RELAY_URL","EMPORIA_AGENT_ID","EMPORIA_PYTHON"],"known_issues":"Tested on Linux. The dashboard console uses a Unix socket, so Windows is not supported.; Keys in a password manager: the recommended way is the signer reading them (emporia signer add NAME --key-source 'ROLE=cmd:op read op://...'), with the vault token in the signer's folder, never the agent's. An agent-side cmd: key source still works but is not recommended: it runs the vendor CLI with an access token kept in the profile's settings, not through Hermes's secret sources (a Hermes unlock lasts one chat session; an agent signs unattended).","state":"open","pr":153957,"prs":[{"n":153957,"state":"open","created":"2026-11-11T21:01:27Z"}],"created":"2026-11-11T21:01:27Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/home-desktop.png","https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/feed-topics.png","https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/game-table-talk.png","https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/labs.png","https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/season-quests.png","https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/docs/catalog/screenshots/phone-home.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/emporia.webp"},{"name":"hermes-cartographer","title":"hermes-cartographer","summary":"Code intelligence for Hermes Agent: a token-budgeted repo map, symbol definitions and references, deterministic first-turn context injection, and AST-safe cross-file rename for Python, backed by an incremental SQLite index. Four tools (code_map, symbol_find, symbol_refs, symbol_rename), one pre_llm_call hook, and /carto plus `hermes carto` subcommands.","disclosure":"reads source files under the roots you configure and writes only its own index under plugin-data/hermes-cartographer/. No network, no model calls, no shell, no third-party dependencies.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"nnazinwaogu","author":"nnazinwaogu","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/nnazinwaogu/hermes-cartographer","docs":"https://github.com/nnazinwaogu/hermes-cartographer#readme","tools":["code_map","symbol_find","symbol_refs","symbol_rename"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153956,"prs":[{"n":153956,"state":"open","created":"2026-11-11T21:01:25Z"}],"created":"2026-11-11T21:01:25Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/nnazirim/status/2120635301718897031"],"youtube":[],"thumb":null},{"name":"defuzz-componentize","title":"Defuzz Componentize","summary":"Optional Defuzz companion for turning Python scripts into reusable components checked against saved baseline output, with 14 declarative project kits, CLI and slash commands, bundled guidance, and a Desktop settings page. Requires Python 3.13 or newer.","disclosure":"reads selected projects, libraries, specs, inputs, job evidence and optional plugin trees; creates project files, updates kit-owned AGENTS.md blocks and ignore/LFS rules, saves settings through Hermes, and writes job evidence and locks under <library>/.componentize/<name>/ (overridable with --state-root). Workflow children run spec-supplied commands and may import plugins with host permissions, without a sandbox or an additional plugin approval prompt. Libc discovery may run system utilities; nested or detached commands can survive outer cancellation. The adapter has no outbound service, credential-store or telemetry integration; executed commands and plugins can access host data and contact third parties.","category":"tools","platforms":["linux"],"maintainer":"defuzzr","author":"defuzzr","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/defuzzr/defuzz-componentize","docs":"https://github.com/defuzzr/defuzz-componentize","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153954,"prs":[{"n":153954,"state":"open","created":"2026-11-11T21:00:38Z"}],"created":"2026-11-11T21:00:38Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/defuzzr/defuzz-componentize/assets/screenshots/componentize-1-settings.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/defuzz-componentize.webp"},{"name":"apparent","title":"Apparent","summary":"Read screen, voice and drawing recordings as timestamped instructions and visual evidence in Hermes.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"simonvanlaak","author":"simonvanlaak","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/tryapparent/apparent","docs":"https://github.com/tryapparent/apparent/blob/dcdb1c6f3d211809d458ab3a917e547fc1b3eb49/hermes/README.md","tools":["apparent_inspect"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Requires a separately installed Apparent CLI on the Hermes backend host; plugin installation does not install the recorder.; Desktop composer integration remains a source candidate requiring a generated Desktop package and compatible Hermes runtime/session APIs; installed acceptance and catalog validation for this pin are pending.","state":"open","pr":153951,"prs":[{"n":153951,"state":"open","created":"2026-11-11T20:58:13Z"}],"created":"2026-11-11T20:58:13Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/simonvanlaak/status/2120624835416268999"],"youtube":[],"thumb":null},{"name":"doorman","title":"Doorman","summary":"Wake-on-LAN doorman for sleeping inference backends. When an API request targets a host from a config-driven host map that is asleep, Doorman broadcasts a UDP magic packet, waits a bounded time for the inference port to accept a connection, then holds a per-request keep-alive (one packet per interval) for the life of the request, released on completion or on a terminal error; hosts that answer are left alone and no packet is sent. If the turn is cancelled (/stop), a lifecycle hook releases every live hold so the host is not woken for a request nobody is waiting on. Pure Python, no dependencies, config re-read per hook fire.","disclosure":"sends UDP magic packets and TCP connect probes to the local hosts listed in its own `doorman:` block in config.yaml only, never to third parties; the keep-alive runs on one background daemon thread per plugin instance, with holds bounded by a leak cap (default 7200s) and torn down on completion or turn cancellation; no telemetry, no shell commands, no credentials or secrets, no self-updating code.","category":"automation","platforms":[],"maintainer":"TwoRobotsinaTrenchcoat","author":"TwoRobotsinaTrenchcoat","version":"0.2.3","requires_hermes":">=0.22","repo":"https://github.com/TwoRobotsinaTrenchcoat/Hermes-Doorman","docs":"https://github.com/TwoRobotsinaTrenchcoat/Hermes-Doorman#readme","tools":[],"hooks":["pre_api_request","pre_auxiliary_call","post_api_request","post_auxiliary_call","api_request_error","agent_loop_stopped"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153949,"prs":[{"n":153949,"state":"open","created":"2026-11-11T20:57:22Z"}],"created":"2026-11-11T20:57:22Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pioneer","title":"Pioneer","summary":"An inverted search for your own work. Pioneer reads your project folder, Hermes memory and recent chats, then looks for what does not exist yet and should. Your own model writes the gaps. Code checks every citation, runs an absence check against existing tools, and scores need, originality, counterfactual value, value and durability. When an existing tool already does the job, the board says so and names it. Rounds expand into a trail, shown on a Desktop page and pane.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"acadine-intelligence","author":"acadine-core","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/acadine-intelligence/hermes-pioneer","docs":"https://github.com/acadine-intelligence/hermes-pioneer#readme","tools":["pioneer_seed","pioneer_scout","pioneer_submit","pioneer_absence","pioneer_board","pioneer_setup"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153948,"prs":[{"n":153948,"state":"open","created":"2026-11-11T20:56:30Z"}],"created":"2026-11-11T20:56:30Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/acadine-intelligence/hermes-pioneer/481fa226ac1fe02a8d94ce57606d81bb272e871f/docs/page.png","https://raw.githubusercontent.com/acadine-intelligence/hermes-pioneer/481fa226ac1fe02a8d94ce57606d81bb272e871f/docs/pane.png"],"videos":[],"x":["https://x.com/jonathanbylos/status/2120634917184790980"],"youtube":[],"thumb":"/hackathon/thumbs/pioneer.webp"},{"name":"hermes-hyperframes","title":"Hyperframes","summary":"Drive Hyperframes (Apache-2.0 HTML video compositions) from Hermes: six hyperframes_* agent tools (lint, managed Studio preview lifecycle, timeline readback, frame snapshots for visual verification, Studio-selection context bridge, MP4 render) plus a dashboard tab with project switching, the live Studio preview embedded, an agent chat bound to a real Hermes gateway session (async turns with polled status) — the same conversation a terminal sees via `hermes chat --resume`. Wraps a pinned local Hyperframes CLI (no npx) and talks only to loopback services: the local CLI and the gateway's own api_server.","disclosure":"","category":"automation","platforms":[],"maintainer":"wesleymatosdev","author":"wesleymatosdev","version":"0.3.1","requires_hermes":"","repo":"https://github.com/wesleymatosdev/hermes-hyperframes-plugin","docs":null,"tools":["hyperframes_lint","hyperframes_preview","hyperframes_preview_context","hyperframes_timeline","hyperframes_snapshot","hyperframes_render"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153947,"prs":[{"n":153947,"state":"open","created":"2026-11-11T20:55:27Z"}],"created":"2026-11-11T20:55:27Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/wesleymatosdev/hermes-hyperframes-plugin/d49838bc34d347e30b8e205fc8259f67a38a8fca/docs/screenshots/before-nebula.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-hyperframes-plugin/d49838bc34d347e30b8e205fc8259f67a38a8fca/docs/screenshots/after-minimal.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-hyperframes-plugin/d49838bc34d347e30b8e205fc8259f67a38a8fca/docs/screenshots/after-chat-native.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-hyperframes.webp"},{"name":"iolite","title":"Iolite","summary":"Pick an LLM that is smart enough, then cheapest, in one tool call. Set an intelligence floor or name an anchor model, and Iolite returns the few models on the cost x intelligence front, ranked toward cheaper, smarter or balanced. It answers from a catalog of 621 models bundled in the plugin, so a fresh install works offline with no setup. Adds three tools (iolite_shortlist, iolite_model, iolite_show), /iolite, a skill and a Hermes Desktop pane that plots the catalog in 3D and 2D and follows the agent's picks. Data and credits: Epoch AI ECI (CC BY), LMArena ratings (CC BY 4.0), LiteLLM prices (MIT); every answer names its sources, and catalog rows whose source names Artificial Analysis are refused.","disclosure":"no network unless you set catalog_url (one https GET, no credentials added; plain http only with allow_http); a post_api_request hook records tokens per second and per-task tokens and model seconds (task ids hashed) on your machine only, never uploaded, off with measure_speed and measure_usage false; your last shortlist, your own prices and temporary .pane-*.receipt markers are kept in the plugin data directory; three local Desktop routes (/landscape, /my-prices, /pane-receipt) add no auth of their own and rely on the dashboard's loopback bind, so keep the dashboard on 127.0.0.1; no prompt text is sent to the pane; no secrets read; tool results stay in session history like any tool output.","category":"tools","platforms":["linux"],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.5.1","requires_hermes":">=0.23.0","repo":"https://github.com/KyaniteLabs/llm-3d-viz","docs":"https://github.com/KyaniteLabs/llm-3d-viz/blob/b7127a7243875c3dbaaeccec30e9b8db11cfe4e7/plugins/iolite-hermes/README.md","tools":["iolite_shortlist","iolite_model","iolite_show"],"hooks":["post_api_request"],"middleware":[],"env":[],"known_issues":"The three local Desktop routes add no auth of their own; if you expose the Hermes dashboard on a network interface they are exposed with it (they reveal your latest shortlist and accept saved prices). Keep the dashboard on loopback.; The Desktop pane starts off and the agent cannot switch it on; enable it in Capabilities -> Plugins.; Speed is measured on your own machine only and is not comparable across machines; models with no price or score are not plotted.","state":"open","pr":153946,"prs":[{"n":153946,"state":"open","created":"2026-11-11T20:55:20Z"}],"created":"2026-11-11T20:55:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-wallet","title":"agent-wallet","summary":"Approval-gated multi-chain wallet for agents. Default coins are XMR, BTC and XRP (XRP is receive-only in this release); ETH, POL and USDC on Base and Polygon are one toggle away. The agent can ask to pay, propose an auto-pay mandate, ask for a capped sandbox budget (created unfunded) or close an incoming order, but nothing is signed until a human types a six-digit PIN on a card that shows the exact destination, amount, fee and fiat value, and no key material ever enters the Hermes process: a daemon (walletd) holds an encrypted keystore, signs Bitcoin and EVM locally, supervises the Monero signer, enforces spend policy, and writes Ed25519-signed, hash-chained receipts (denials included, anchored so truncation is detected). Purchases can be priced from an HTTP 402 (x402) response and settled with an EIP-3009 authorisation. 23 agent tools, one per distinct act. Ships a native Desktop page (balances, approvals, mandates, sandboxes, receipts, per-coin switches) and full CLI parity.","disclosure":"","category":"tools","platforms":[],"maintainer":"BlackHelio","author":"BlackHelio","version":"0.9.2","requires_hermes":">=0.21.0","repo":"https://github.com/BlackHelio/agent-wallet","docs":"https://github.com/BlackHelio/agent-wallet#readme","tools":["wallet_merchants","wallet_contacts","wallet_contact_save","wallet_deposits","wallet_sandboxes","wallet_request_sandbox","wallet_orders","wallet_close_order","wallet_readiness","wallet_nodes","wallet_status","wallet_balances","wallet_pay_url","wallet_receive_address","wallet_cancel","wallet_spend","wallet_ledger","wallet_verify_payment","wallet_request_approval","wallet_request_payment","wallet_mandate_propose","wallet_mandate_list","wallet_mandate_revoke"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153945,"prs":[{"n":153945,"state":"open","created":"2026-11-11T20:55:18Z"}],"created":"2026-11-11T20:55:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-custodian","title":"Hermes Custodian","summary":"Local, read-only security-posture monitor for the machine a Hermes agent runs on (Linux, macOS, native Windows): scoped file and permission baselines, evidence-backed findings and a change history, a first-run terminal setup, an optional background monitor and an on-demand authenticated loopback dashboard. Registers four read-only tools (custodian_status, custodian_findings, custodian_changes, custodian_scan).","disclosure":"reads: regular files and metadata under paths the user approves in setup; Hermes profile config metadata (model, provider, plugin and MCP-server names) only after explicit consent; credential files (.env, auth stores, keys), memory, chat history and SOUL are never opened (metadata only) and only .py/.md files are content-hashed; symlinks and reparse points are not followed. Runs: a foreground or per-user background monitor (systemd user service, LaunchAgent or Task Scheduler task) only when the user starts or installs it; fixed argument-array subprocesses with timeouts and no shell (systemctl and apt list --upgradable; launchctl and softwareupdate -l; schtasks and a fixed PowerShell Windows Update query); update detection installs nothing; a Linux-only root security-update plan/apply is a separate terminal command with typed confirmation that the AI tools and dashboard cannot reach. Network: no telemetry and no model calls; the dashboard binds 127.0.0.1 only behind a username/password session (scrypt, signed cookie, exact Host and Origin checks); native OS update queries may contact the OS vendor's update service. Stores: paths, fingerprints, findings and the hashed dashboard login in a private per-user state directory; never credential contents. No self-updater, no approval or confirmation arguments for the AI, no root shell. Not an antivirus or EDR: same-user software can change its configuration. Native tests pass on Linux, macOS and Windows with Python 3.11-3.14 at the pinned commit.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Cam-AcitveIce","author":"Cam-AcitveIce","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Cam-AcitveIce/hermes-custodian","docs":"https://github.com/Cam-AcitveIce/hermes-custodian/blob/bfdc567d510bfd8fbcdd9e716d00dd3b3654414e/README.md","tools":["custodian_status","custodian_findings","custodian_changes","custodian_scan"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153944,"prs":[{"n":153944,"state":"open","created":"2026-11-11T20:53:22Z"}],"created":"2026-11-11T20:53:22Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Cam-AcitveIce/hermes-custodian/bfdc567d510bfd8fbcdd9e716d00dd3b3654414e/docs/screenshots/overview.png","https://raw.githubusercontent.com/Cam-AcitveIce/hermes-custodian/bfdc567d510bfd8fbcdd9e716d00dd3b3654414e/docs/screenshots/findings.png","https://raw.githubusercontent.com/Cam-AcitveIce/hermes-custodian/bfdc567d510bfd8fbcdd9e716d00dd3b3654414e/docs/screenshots/changes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-custodian.webp"},{"name":"alchemy-task","title":"Alchemy Task","summary":"Alchemy Task does the work before the work: it turns messy real-world work into finely researched tasks, ready for your agent to do for you.","disclosure":"research and discovery start read-only Hermes subagents on your model (a pre_tool_call hook blocks write, shell, send and credential reads) and use only sources already connected to your agent; task files are Markdown in a Git workspace you choose, committed and pushed with local git (no shell, no stored credentials); scheduled jobs are created only after you approve them; Start in chat can post into your messaging chat only if you grant allow_gateway_injection; optional iPhone Reminders sync uses the Hermes mobile connector. No telemetry. Full disclosures in the README.","category":"tools","platforms":["linux","macos"],"maintainer":"Darengb","author":"Darengb","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/Darengb/alchemy-task","docs":null,"tools":["task_create","task_update","task_find","task_research","task_research_sweep","task_work_start","task_checkpoint","task_setup","task_ios","discovery_stream","discovery_start","discovery_submit","discovery_decide","discovery_config","discovery_collect","discovery_context","discovery_research_run","discovery_research_fetch","discovery_research_submit","discovery_research_accept","discovery_actions","discovery_reconcile","discovery_join","discovery_recover","discovery_release_hold","discovery_match","discovery_decision","discovery_conversion_recover","discovery_digest","discovery_runs","discovery_link_audit","discovery_replay","research_skills_list","research_skill_view","research_capabilities","research_submit","research_git_find_repos","research_git_log","research_git_show","research_git_grep","research_git_ls_files"],"hooks":["pre_tool_call","subagent_start","subagent_stop","pre_llm_call","post_llm_call","on_session_finalize","post_compaction","post_tool_call"],"middleware":[],"env":[],"known_issues":"iPhone Reminders sync needs the Hermes mobile app (beta) with Reminders access; the current app beta does not offer it for Nous Cloud agents.","state":"open","pr":153943,"prs":[{"n":153943,"state":"open","created":"2026-11-11T20:52:54Z"}],"created":"2026-11-11T20:52:54Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Darengb/alchemy-task/ddb6036c8d45f5f38a7019bca21b95ebf151a3fa/docs/cover.jpg","https://raw.githubusercontent.com/Darengb/alchemy-task/ddb6036c8d45f5f38a7019bca21b95ebf151a3fa/docs/screenshots/task-research.png","https://raw.githubusercontent.com/Darengb/alchemy-task/ddb6036c8d45f5f38a7019bca21b95ebf151a3fa/docs/screenshots/discovery.png","https://raw.githubusercontent.com/Darengb/alchemy-task/ddb6036c8d45f5f38a7019bca21b95ebf151a3fa/docs/screenshots/phone.png","https://raw.githubusercontent.com/Darengb/alchemy-task/ddb6036c8d45f5f38a7019bca21b95ebf151a3fa/docs/screenshots/tasks-week.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/alchemy-task.webp"},{"name":"hermes-proof","title":"HermesProof","summary":"Deterministically verify agent task outcomes and persist auditable evidence reports.","disclosure":"","category":"tools","platforms":[],"maintainer":"CodedAccorn","author":"CodedAccorn","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/CodedAccorn/hermes-proof","docs":null,"tools":["proof_verify","proof_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153941,"prs":[{"n":153941,"state":"open","created":"2026-11-11T20:52:29Z"}],"created":"2026-11-11T20:52:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pfwa","title":"PFWA","summary":"Provably fair randomness for Hermes, plus prediction markets on Robinhood Chain. pfwa_random gives a number, coin flips, winner picks from a list or a shuffle from a drand evmnet (League of Entropy) round chosen before it existed, with the round, signature and derivation so anyone can recheck it: for giveaways, raffles, draws and tie-breaks an LLM would otherwise make up. Market tools list PFWA's open markets, read live prices onchain, show a wallet's positions and claimable winnings, list results, and build unsigned buy, sell or claim transactions for the user's own wallet to sign; two more read HoodRand requests and the live Sherwood game round. Native Python plugin, standard library only, no keys and no configuration.","disclosure":"network calls go only to www.pfwa.fun (public agent API), rpc.mainnet.chain.robinhood.com (read-only eth_call; wallet addresses the user asks about are sent in balanceOf calls) and drand's public relays (api.drand.sh, api2.drand.sh, api3.drand.sh). The plugin never asks for, stores or uses a private key and never sends a transaction.","category":"tools","platforms":[],"maintainer":"PFWA","author":"MirakoolDev","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/MirakoolDev/pfwa-hermes","docs":"https://github.com/MirakoolDev/pfwa-hermes","tools":["pfwa_random","pfwa_markets","pfwa_quote","pfwa_positions","pfwa_build_tx","pfwa_results","hoodrand_lookup","sherwood_game"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153939,"prs":[{"n":153939,"state":"open","created":"2026-11-11T20:51:45Z"}],"created":"2026-11-11T20:51:45Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"syrinx","title":"Syrinx","summary":"Your agent is fast; Syrinx makes it wait for the right moment. In a focus block (/flow 45) the agent's questions are parked with the default it took and it keeps working; when you return you get a catch-up, a list counted by code from the tool calls (files changed, commands run, anything that left your machine, and how much work rests on unconfirmed defaults), and every question in one card. During the block anything that would leave your machine (git push, publish, send, deploy) is held before it runs and offered back on that card. Settle a question once with /always and it is never asked again. Late-night requests become a morning brief. Deep-work hours, a question budget, a time receipt, a Desktop pane and Argus, a pet whose pose shows the state.","disclosure":"pre_tool_call can block the built-in clarify tool (during a focus block, over the question budget you set, or when a standing answer covers it) and tells the agent which default to use, and during a focus block only it blocks tool calls that match a fixed list of outward actions (push, publish, gh create, curl with a body, ssh, docker push, kubectl, terraform, send/post/deploy/upload/pay tools), storing a label, never the command; hold_outward: false turns that off; pre_llm_call appends short blocks to your message (standing answers, focus notes, the hand-back, the morning brief) and, after your cutoff only, ends the turn to queue the request; post_tool_call stores tool names, file basenames and program names, never arguments, plus your answers to clarify cards; with auto_focus on (macOS, off by default) it runs ioreg and lsappinfo read-only; /syrinx pet writes the bundled sprite sheet through Hermes' pet store. No network calls of its own, approvals untouched, cron runs never held.","category":"general","platforms":[],"maintainer":"cstljuan","author":"cstljuan","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/cstljuan/syrinx","docs":"https://github.com/cstljuan/syrinx#readme","tools":["syrinx_park","syrinx_interrupt","syrinx_status","syrinx_flow"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_human_input_request","on_human_input_resolved"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153938,"prs":[{"n":153938,"state":"open","created":"2026-11-11T20:50:52Z"}],"created":"2026-11-11T20:50:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/hero.jpg","https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/screenshots/flow-parked.jpg","https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/screenshots/hold-return.jpg","https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/screenshots/return-card.jpg","https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/screenshots/receipt-card.jpg","https://raw.githubusercontent.com/cstljuan/syrinx/444db83b1a4fe902916cec25b2de27c389075538/docs/screenshots/argus-poses.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/syrinx.webp"},{"name":"live-video","title":"live-video","summary":"Give Hermes eyes in a live voice conversation. Open a page on your phone, talk, and the agent answers in duplex voice while seeing the camera; ask to be told when something comes into view and the relay watches the frames for 90 seconds, verifies a sighting against the image before claiming it, and says it once. The six-action tool starts the relay, hands you the URL to open, and replays what a session saw.","disclosure":"audio and camera frames stream from the browser to the local relay and from there to generativelanguage.googleapis.com (Gemini Live, which also answers watch checks on a short Live session) using GEMINI_API_KEY read from Hermes' secret scope; `start` spawns `node server.js` as a background process, which spawns a Python frame-change tracker (numpy, Pillow, torch) and reads that checkout's transcript.log and server.log; watch verification spends the key's quota. No telemetry, and the key is never written to disk.","category":"voice","platforms":["linux","macos"],"maintainer":"dacheah","author":"dacheah","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/dacheah/hermes-live-video","docs":"https://github.com/dacheah/hermes-live-video#readme","tools":["live_video"],"hooks":[],"middleware":[],"env":["GEMINI_API_KEY"],"known_issues":"","state":"open","pr":153936,"prs":[{"n":153936,"state":"open","created":"2026-11-11T20:50:04Z"}],"created":"2026-11-11T20:50:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"clearing","title":"The Clearing","summary":"The Clearing is a writing editor inside Hermes with 159 editing methods you can run by name: 11 editor passes, 9 composition checks drawn from Strunk's rules, 33 editorial methods, 56 craft techniques and 44 figures of speech it can find in your draft or suggest where one would help. Press Read my piece and it marks your own words with what to change, most important first. Nothing changes until you press Use this. Three reviewers, a newcomer, a skeptic and a line editor, can each read the piece and then argue it out. When a suggestion adds a fact you never wrote, it says so before you keep it, and the page shows how much of the piece is still your own words. A built-in quick check and dictionary work without a model. An independent community plugin, not made or endorsed by Nous Research.","disclosure":"no network calls of its own. Editor passes go to the model you set in Hermes, only when you start one, with secrets removed by Hermes first; Bring in a link hands a public address to Hermes's web_extract after refusing non-public hosts; dictation goes to Hermes speech-to-text and, for a cloud service, waits until you press Send. Reads only files you pick, plus Hermes's speech-to-text setting and the Hugging Face model cache, both read-only. No shell commands, background processes, stored credentials or telemetry; one observe-only post_auxiliary_call hook reads the finish reason, model name and token counts of its own calls. When it falls back to a local faster-whisper model it sets KMP_DUPLICATE_LIB_OK=TRUE in the Hermes process. Your writing, its versions and a quote-stripped debug.log stay in <HERMES_HOME>/plugin-data/clearing/; Delete forever in the Trash erases a piece.","category":"desktop","platforms":[],"maintainer":"Dgardenhire","author":"Dgardenhire","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Dgardenhire/hermes-clearing","docs":"https://linchpin.studio/hermes/clearing/manual/","tools":[],"hooks":["post_auxiliary_call"],"middleware":[],"env":[],"known_issues":"Tested on macOS. Windows and Linux are untested.; Every editor pass needs a model set in Hermes. Without one, a pass says so and offers Open Settings; Quick check, Other words and Bring in (except a link and dictation) still work.; Bring in a link needs a web tool set up in Hermes, and Talk it through needs Hermes speech-to-text (or a faster-whisper speech model already downloaded). Without speech-to-text the Talk it through buttons are left out.; Dictation imports tools.voice_mode.transcribe_recording, which is not in Hermes's public plugin API. It is guarded and falls back to faster-whisper, so a Hermes release that moves it can disable Hermes-backed dictation.; Run live on a Claude model (Haiku) through Hermes. OpenAI and local-model routes are untested; a model that cannot return the answer format shows a plain message and leaves the page unchanged.; On Hermes 0.21.6 to 0.22.5 there is no desktop file store: Save as .md and .txt offer Copy instead, and the scene photographs are fetched on each open. Not yet run on a real 0.21.6.; Colors come from your Hermes theme. Text contrast was measured against stand-ins for Hermes's default light and dark themes and four accents over every scene; an unusual custom theme was not checked.; Removing the plugin leaves your writing in <HERMES_HOME>/plugin-data/clearing/ until you delete that folder.","state":"open","pr":153935,"prs":[{"n":153935,"state":"open","created":"2026-11-11T20:50:03Z"}],"created":"2026-11-11T20:50:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Dgardenhire/hermes-clearing/f6310b4d29924be7087cdd650bccc31eafb7066a/docs/catalog/card.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-clearing/f6310b4d29924be7087cdd650bccc31eafb7066a/docs/shots/live/show-me.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-clearing/f6310b4d29924be7087cdd650bccc31eafb7066a/docs/shots/live/read-my-piece.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-clearing/f6310b4d29924be7087cdd650bccc31eafb7066a/docs/shots/live/all-methods.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-clearing/f6310b4d29924be7087cdd650bccc31eafb7066a/docs/shots/live/desk.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/clearing.webp"},{"name":"adeptory","title":"Adeptory","summary":"Builds specialist Hermes profiles with researched knowledge, searchable libraries, working procedures, and a roadmap for useful tools.","disclosure":"","category":"tools","platforms":["windows"],"maintainer":"brefledev","author":"brefledev","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/brefledev/adeptory","docs":null,"tools":["adeptory_build","adeptory_library","adeptory_propose","adeptory_source","adeptory_lookup","adeptory_note","adeptory_check"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_session_end"],"middleware":["llm_request","tool_request"],"env":[],"known_issues":"","state":"open","pr":153934,"prs":[{"n":153934,"state":"open","created":"2026-11-11T20:47:12Z"}],"created":"2026-11-11T20:47:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/brefledev/adeptory/dacb27ec6a800d2e7215dff7645685a7515adb13/docs/assets/adeptory-hero.webp","https://raw.githubusercontent.com/brefledev/adeptory/dacb27ec6a800d2e7215dff7645685a7515adb13/docs/assets/native-grant-operations.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/adeptory.webp"},{"name":"bot-drops","title":"Bot Drops","summary":"Share a Hermes bot as a link and a card, and adopt bots other people share as new profiles. A preview shows the bot's card, what it needs and what was left out before anything is installed; adopting runs Hermes' own profile install on the exact reviewed commit and never changes existing profiles. Sharing packages the personality and the author's own text skills, renders a link card and a story image locally, and publishes them as a new public GitHub repository with a GitHub Pages bot page.","disclosure":"a preview clones a public GitHub or GitLab repository over HTTPS with size, time and file limits; publishing runs git and the user's own gh login, only after an explicit confirmation in the plugin screen. Reads the chosen profile, and its .env and auth.json solely to keep their values out of the package. Keys, settings, memory, chats, plugins and MCP servers are never shared. Shared pages and cards carry a \"by BrainArts\" credit link that the sharer can turn off. No telemetry, self-updater or background process.","category":"desktop","platforms":["linux","macos"],"maintainer":"brainarts-lab","author":"chrisbaumannai-stack","version":"0.5.1","requires_hermes":">=0.23.0","repo":"https://github.com/brainarts-lab/bot-drops","docs":"https://github.com/brainarts-lab/bot-drops/blob/2b2d9f7e698bdef76507491ffef48f7bd18be699/README.md","tools":["bot_drops_prepare"],"hooks":[],"middleware":[],"env":[],"known_issues":"Publishing needs the GitHub CLI signed in (gh auth login). Without it Bot Drops prepares the files for a manual upload.; Shared bots are public repositories; private sharing is not supported.; Built and tested on macOS. Windows support is new in 0.5.0 and not yet confirmed on a Windows machine, so this entry lists Linux and macOS.; On Hermes 0.23.0 a bot name that was removed earlier cannot be reused for a new bot; fixed in Hermes 0.23.1.; Profiles are not a security sandbox. Only adopt bots from people you trust.","state":"open","pr":153931,"prs":[{"n":153931,"state":"open","created":"2026-11-11T20:47:03Z"}],"created":"2026-11-11T20:47:03Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/brainarts-lab/bot-drops/2b2d9f7e698bdef76507491ffef48f7bd18be699/assets/catalog-banner.png","https://raw.githubusercontent.com/brainarts-lab/bot-drops/2b2d9f7e698bdef76507491ffef48f7bd18be699/assets/screens/01-find.png","https://raw.githubusercontent.com/brainarts-lab/bot-drops/2b2d9f7e698bdef76507491ffef48f7bd18be699/assets/screens/02-preview.png","https://raw.githubusercontent.com/brainarts-lab/bot-drops/2b2d9f7e698bdef76507491ffef48f7bd18be699/assets/screens/03-share.png","https://raw.githubusercontent.com/brainarts-lab/bot-drops/2b2d9f7e698bdef76507491ffef48f7bd18be699/assets/screens/04-live.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/bot-drops.webp"},{"name":"ownmachine","title":"OwnMachine","summary":"A persistent private macOS VM workspace for Hermes with SSH/MCP and human-controlled browser access.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"rbur0425","author":"rbur0425","version":"0.7.0","requires_hermes":">=0.23.1","repo":"https://github.com/rbur0425/ownmachine","docs":"https://github.com/rbur0425/ownmachine#readme","tools":["ownmachine_status"],"hooks":["on_session_open"],"middleware":["tool_execution"],"env":[],"known_issues":"Declares websockets==15.0.1 for same-profile authenticated gateway scheduling; Hermes requests dependency consent during installation.; Manual Mac/guest setup, firewall installation and macOS permission grants are required.; Independent ALF-only random-port blocking and reboot persistence of the new security setup are unverified.; One initial guest boot hung; later restart checks passed.; Model-driven pixel-click acceptance is deferred; cloud Mac hosting is unverified.; PolyForm Noncommercial 1.0.0; commercial use outside its permissions requires a separate license.","state":"open","pr":153929,"prs":[{"n":153929,"state":"open","created":"2026-11-11T20:46:19Z"}],"created":"2026-11-11T20:46:19Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rbur0425/ownmachine/a93fbfec22281a01031a62629294e280fca4115b/docs/media/catalog/human-control.png","https://raw.githubusercontent.com/rbur0425/ownmachine/a93fbfec22281a01031a62629294e280fca4115b/docs/media/catalog/agent-control.png","https://raw.githubusercontent.com/rbur0425/ownmachine/a93fbfec22281a01031a62629294e280fca4115b/docs/media/catalog/google-task.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ownmachine.webp"},{"name":"doom","title":"Doom","summary":"Play Doom in a dashboard tab. The GPL engine runs as plain JavaScript on Freedoom or your own WAD.","disclosure":"","category":"general","platforms":[],"maintainer":"SilentKnight87","author":"SilentKnight87","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/SilentKnight87/hermes-doom","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"No sound yet, and saved games last only until the tab is reloaded.; First play downloads Freedoom (23 MB) from the Freedoom project's GitHub release when you click the button.","state":"open","pr":153926,"prs":[{"n":153926,"state":"open","created":"2026-11-11T20:42:53Z"}],"created":"2026-11-11T20:42:53Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/SilentKnight87/hermes-doom/5f9faadd1ba346c52d79bfd9c07c7f3c1908ff38/docs/doom-in-hermes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/doom.webp"},{"name":"hebe-longevity","title":"Hebe Longevity","summary":"Personal Longevity Intelligence for Hermes, built on Insilico Medicine's open PLSI toolbelt (MIT). Reads nine routine blood markers from a confirmed CSV or typed panel, calculates Blood PhenoAge, shows trends and formula drivers across blood draws, and drafts safety-screened research plans challenged by a separate model call before only the user can start a plan. Includes a Hebe page and optional theme in Hermes Desktop plus a chat result card.","disclosure":"PhenoAge, trend and local HTML reports make no network or model calls. The Desktop page loads Cormorant Garamond and Montserrat from Google Fonts (falls back to system fonts offline). Planning tools run a pinned subset of the PLSI CLI as a child process of Hermes' Python with fixed argument lists (no shell) and query PubMed, Europe PMC, ClinicalTrials.gov, openFDA or Evipedia with topic queries only. The challenger runs through Hermes' own auxiliary LLM task (auxiliary.hebe_challenger); Hermes itself sends chat and tool outputs to the user's configured model. Data is stored under HERMES_HOME/plugin-data/hebe-longevity. No telemetry, self-updater or background daemon. Research prototype, not medical advice.","category":"desktop","platforms":["linux","macos"],"maintainer":"brainarts-lab","author":"chrisbaumannai-stack","version":"0.7.2","requires_hermes":">=0.23.0","repo":"https://github.com/brainarts-lab/hebe-longevity","docs":"https://github.com/brainarts-lab/hebe-longevity/blob/bf303ab6a9af2c431e22e8b595d037dda264cf06/README.md","tools":["hebe_preview","hebe_state","hebe_evidence","hebe_calc","hebe_plan_check","hebe_challenge","hebe_plans"],"hooks":[],"middleware":[],"env":[],"known_issues":"Research and educational prototype; not a medical device, diagnosis or treatment recommendation.; Requires PLSI's Python dependencies (pydantic>=2,<3 and PyYAML>=6,<7), which Hermes installs on confirmation.; The install scanner reports a caution on unchanged upstream PLSI code (a variable named env in formula.py and pip install hints in error messages).; For an independent challenger, configure auxiliary.hebe_challenger to use a strong model different from your chat model; if that provider fails, Hermes falls back to another configured model.","state":"open","pr":153932,"prs":[{"n":153932,"state":"open","created":"2026-11-11T20:47:07Z"},{"n":153924,"state":"open","created":"2026-11-11T20:42:48Z"}],"created":"2026-11-11T20:42:48Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/brainarts-lab/hebe-longevity/bf303ab6a9af2c431e22e8b595d037dda264cf06/assets/hebe-banner.png","https://raw.githubusercontent.com/brainarts-lab/hebe-longevity/bf303ab6a9af2c431e22e8b595d037dda264cf06/assets/screens/01-welcome.png","https://raw.githubusercontent.com/brainarts-lab/hebe-longevity/bf303ab6a9af2c431e22e8b595d037dda264cf06/assets/screens/02-report.png","https://raw.githubusercontent.com/brainarts-lab/hebe-longevity/bf303ab6a9af2c431e22e8b595d037dda264cf06/assets/screens/03-draws.png","https://raw.githubusercontent.com/brainarts-lab/hebe-longevity/bf303ab6a9af2c431e22e8b595d037dda264cf06/assets/screens/04-plans.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hebe-longevity.webp"},{"name":"interview-prep-coach","title":"Interview Prep Coach","summary":"Prepares the user for their own interview: researches only the people they will meet, from public professional sources; predicts and tiers likely questions; builds STAR answers only from real experience; runs scored mock interviews; writes questions to ask; assembles a cheat sheet; lists post-interview signals with evidence (no grade or prediction); drafts application materials and thank-you notes the user sends.","disclosure":"no tools, hooks, MCP servers, scripts or stored credentials; uses the agent's own web search, never with the user's name, resume or notes; never sends, applies or contacts anyone; never signs in; candidate-side only, its profiles are not consumer reports; never records or infers race, color, religion, sex (including pregnancy, sexual orientation and gender identity), national origin, age, disability, genetic information, veteran, marital, family, citizenship or immigration status, health, politics, home address, personal accounts, graduation years, photos or other protected traits.","category":"general","platforms":[],"maintainer":"KellerAI","author":"jonathan-kellerai","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KellerAI/hermes-plugins","docs":"https://github.com/KellerAI/hermes-plugins/tree/main/interview-prep-coach#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153925,"prs":[{"n":153925,"state":"open","created":"2026-11-11T20:42:48Z"}],"created":"2026-11-11T20:42:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"corpus-open","title":"Corpus Open","summary":"For pro se and self-represented litigants: people handling their own lawsuit or court case without a lawyer. Legal citation checking for AI drafts. Under every reply, a citation guard lists each case, statute and code cite with what CourtListener (case law), Corpus (statutes from all 50 states) and the person's own case file hold at it, and flags a fake (hallucinated) citation before it reaches a court filing; a cite that cannot exist is caught with no lookup at all. A quote guard refuses a write that misquotes a filed document or cites the wrong page. Each session opens with the case's court deadlines, and an intake skill interviews the person one plain question at a time. Twelve tools keep a local litigation case folder (labeled facts with sources, evidence, deadlines, brief check, a packet for an attorney deciding whether to take the case, court rules, hash verification), /matter shows it, and Hermes Desktop gets a Case pane.","disclosure":"the only network calls are cite checks, on by default, which send bare citations (never case text) to CourtListener (only once a key is set) and corpuslaw.us, are logged in the case folder and can be turned off per case or for every case; case files stay on the computer. Not a lawyer and not legal advice.","category":"tools","platforms":[],"maintainer":"teakesdev","author":"teakesdev","version":"0.6.0","requires_hermes":">=0.21.6","repo":"https://github.com/teakesdev/corpus-open","docs":"https://github.com/teakesdev/corpus-open#readme","tools":["matter_status","matter_fact_add","matter_fact_list","matter_deadline_list","matter_trigger_list","matter_trigger_fire","matter_packet_render","matter_brief_check","matter_rules_show","matter_cite_check","matter_verify","matter_ingest_path"],"hooks":["pre_llm_call","transform_llm_output","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Looking up case citations needs a free CourtListener key. Statute and code citations need none, up to Corpus's 250 lookups a month from one network; a free Corpus key raises that.; It checks that a source exists at a citation, not that the source says what a draft claims. It is not legal advice.","state":"open","pr":153923,"prs":[{"n":153923,"state":"open","created":"2026-11-11T20:41:33Z"}],"created":"2026-11-11T20:41:33Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/banner.png","https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/01-matter-check.png","https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/02-quote-guard-refused.png","https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/03-matter-demo.png","https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/04-deadlines.png","https://raw.githubusercontent.com/teakesdev/corpus-open/6694628ff017b58b432e77485885e86128f5ff19/docs/media/05-case-pane.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/corpus-open.webp"},{"name":"chartquery","title":"ChartQuery","summary":"Tools to render charts, QR codes and barcodes as shareable images, through the ChartQuery API.","disclosure":"sends the tool arguments to api.chartquery.com with your CHARTQUERY_API_KEY, and calls can use ChartQuery credits. Reads the key only through Hermes's secret scope. Registers 4 tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"tools","platforms":[],"maintainer":"chartquery","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/chartquery/hermes-plugin-chartquery","docs":"https://github.com/chartquery/hermes-plugin-chartquery#readme","tools":["chartquery_chart","chartquery_chart_from_prompt","chartquery_qrcode","chartquery_barcode"],"hooks":[],"middleware":[],"env":["CHARTQUERY_API_KEY"],"known_issues":"","state":"open","pr":153922,"prs":[{"n":153922,"state":"open","created":"2026-11-11T20:41:14Z"}],"created":"2026-11-11T20:41:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"asin","title":"Asin","summary":"Tools to search Amazon and read a product's price history and offers, through the Asin API.","disclosure":"sends the tool arguments to www.asin.dev with your ASIN_API_KEY, and calls can use Asin credits. Reads the key only through Hermes's secret scope. Registers 3 tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"tools","platforms":[],"maintainer":"asindotdev","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/asindotdev/hermes-plugin-asin","docs":"https://github.com/asindotdev/hermes-plugin-asin#readme","tools":["asin_search_amazon","asin_price_history","asin_get_offers"],"hooks":[],"middleware":[],"env":["ASIN_API_KEY"],"known_issues":"","state":"open","pr":153921,"prs":[{"n":153921,"state":"open","created":"2026-11-11T20:41:11Z"}],"created":"2026-11-11T20:41:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"huntapi","title":"HuntAPI","summary":"Tools to read the metadata of public videos and download their video or audio, through the HuntAPI media API.","disclosure":"sends the tool arguments to api.huntapi.com with your HUNTAPI_API_KEY, and calls can use HuntAPI credits. Reads the key only through Hermes's secret scope. Registers 4 tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"tools","platforms":[],"maintainer":"huntapi","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/huntapi/hermes-plugin-huntapi","docs":"https://github.com/huntapi/hermes-plugin-huntapi#readme","tools":["huntapi_media_metadata","huntapi_video_download","huntapi_audio_download","huntapi_job_status"],"hooks":[],"middleware":[],"env":["HUNTAPI_API_KEY"],"known_issues":"","state":"open","pr":153920,"prs":[{"n":153920,"state":"open","created":"2026-11-11T20:41:07Z"}],"created":"2026-11-11T20:41:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-workflow","title":"Workflow Studio","summary":"General-purpose agent-based workflow studio for building, managing, and executing complex workflows.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"SaM-0777","author":"SaM-0777","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/SaM-0777/hermes-workflows","docs":null,"tools":["list_nodes","get_node_by_id","create_node","update_node","delete_node","list_workflows","get_workflow_by_id","create_workflow","update_workflow","delete_workflow","add_node_to_workflow","add_library_node_to_workflow","update_workflow_node","delete_workflow_node","duplicate_workflow_node","add_workflow_edge","remove_workflow_edge","run_workflow"],"hooks":[],"middleware":[],"env":[],"known_issues":"Beta release; currently supports macOS only.","state":"open","pr":153919,"prs":[{"n":153919,"state":"open","created":"2026-11-11T20:40:59Z"}],"created":"2026-11-11T20:40:59Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"contractguard","title":"contractguard","summary":"Hermes-native API contract assurance: validates proposed requests before they are sent, verifies live responses even when the status code is 200, compares candidate contracts against a human-approved baseline, and keeps redacted evidence receipts.","disclosure":"makes HTTP requests only to a loopback address (localhost, 127.0.0.1, ::1) the user registered explicitly, and only with GET or HEAD; write methods are validated offline and never dispatched. Reads the OpenAPI document at the exact path named in a tool call, and writes only to the Hermes plugin database (service registrations, immutable contract baselines, redacted evidence receipts). No telemetry, no third-party calls, no shell commands, no background processes, no stored credentials; secret-bearing headers are rejected from tool arguments. Baseline promotion requires human approval and fails closed when approval is unavailable.","category":"tools","platforms":[],"maintainer":"Mohamedhazeem","author":"Mohamedhazeem","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/Mohamedhazeem/ContractGuard","docs":null,"tools":["contractguard_ping","contractguard_inspect","contractguard_register","contractguard_validate_request","contractguard_test","contractguard_diff","contractguard_history","contractguard_promote_baseline"],"hooks":["pre_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"Live verification targets loopback addresses only; remote targets are refused.; Live requests are limited to GET and HEAD; write methods are preflight-only.; Compatibility classification covers a bounded ruleset; complex schema composition is reported as unclassified rather than guessed.","state":"open","pr":153918,"prs":[{"n":153918,"state":"open","created":"2026-11-11T20:40:18Z"}],"created":"2026-11-11T20:40:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"piquesignal","title":"PiqueSignal","summary":"See PiqueSignal's Solana memecoin board right inside Hermes. Press Deep Check on any coin and Hermes checks it for you: fake volume, the live price, and what people say on X. Open a live chart, ask Hermes about any coin, or listen to a short spoken board update. The free board needs no account; a paid member key adds the live member board. Research only, not financial advice. Nothing trades.","disclosure":"","category":"desktop","platforms":[],"maintainer":"PiqueSignal","author":"24skpz","version":"1.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/PiqueSignalLabs/piquesignal-hermes","docs":"https://github.com/PiqueSignalLabs/piquesignal-hermes/tree/3dd35a30996469181c440550e7fa058a19b5d0f0/piquesignal#readme","tools":["piquesignal_board","piquesignal_point","piquesignal_filters","piquesignal_explain_tag","piquesignal_guide","piquesignal_deep_check"],"hooks":["pre_llm_call","transform_llm_output","post_compaction","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153917,"prs":[{"n":153917,"state":"open","created":"2026-11-11T20:39:47Z"},{"n":153915,"state":"closed","created":"2026-11-11T20:38:10Z"}],"created":"2026-11-11T20:38:10Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/PiqueSignalLabs/piquesignal-hermes/3dd35a30996469181c440550e7fa058a19b5d0f0/assets/banner.png","https://raw.githubusercontent.com/PiqueSignalLabs/piquesignal-hermes/3dd35a30996469181c440550e7fa058a19b5d0f0/assets/page-free.png","https://raw.githubusercontent.com/PiqueSignalLabs/piquesignal-hermes/3dd35a30996469181c440550e7fa058a19b5d0f0/assets/deep-check.png","https://raw.githubusercontent.com/PiqueSignalLabs/piquesignal-hermes/3dd35a30996469181c440550e7fa058a19b5d0f0/assets/chart.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/piquesignal.webp"},{"name":"hyperliquid-desk","title":"Hyperliquid Desk","summary":"Live Hyperliquid dashboard tab, Flow Deck alerts, wallets and market tools with a commentary skill on Hyperliquid's public data, plus node panels from the plugin author's hosted relay (on by default, can be turned off) or your own engine feed. Read-only; no orders, no trading keys. Independent; not affiliated with Hyperliquid.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"KevinM0001","author":"KevinM0001","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KevinM0001/hermes-hyperliquid-plugin","docs":null,"tools":["hl_market","hl_flow","hl_context","hl_status","hl_alerts","hl_wallets","hl_candles","hl_structure","hl_watch","node_status","node_book","node_stops"],"hooks":[],"middleware":[],"env":[],"known_issues":"Node panels use the plugin author's hosted relay by default (node_feed \"hosted\"), a third-party network call to relay.perpdepth.com; when it can't serve, the node panels say why and public mode works as before. Set node_feed to \"off\" to turn node data off, or to your own engine socket or relay.; When the hosted relay is down, full or switched off, the node panels say which and public mode keeps working; a replay is never used in its place.","state":"open","pr":153913,"prs":[{"n":153913,"state":"open","created":"2026-11-11T20:37:01Z"}],"created":"2026-11-11T20:37:01Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/card.png","https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/02-chart-ladder.png","https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/03-flow-deck.png","https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/04-wallets.png","https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/05-node-stop-map.png","https://raw.githubusercontent.com/KevinM0001/hermes-hyperliquid-plugin/abc81670fbfa0839fa6d3fc5b0ad823fe8c9e97d/docs/screenshots/06-ask-hermes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hyperliquid-desk.webp"},{"name":"myfolks","title":"MyFolks for Hermes","summary":"Persistent, exact memory about the people in your life. myfolks, /myfolks or /contacts saves and returns details word for word, with when and where each was saved; saving and recall never call a model. Plain words (remember, fix, forget, undo), a Desktop page to search, add, edit, delete and undo, vCard and CSV import, and optional Google Contacts sync. Encrypted SQLite store (AES-256-GCM) in the Hermes folder. Owner only by default, group chats refused, optional per-person sharing (read or add).","disclosure":"no network calls unless the owner runs myfolks sync; then Hermes calls the Google People API (people.googleapis.com, contacts.readonly) for the plugin through its declared oauth client, signed in with hermes auth add myfolks:google; Hermes stores and refreshes the token and the plugin never receives it. Replies sent over a messaging platform pass through that platform. AI access is off by default; when turned on, the details it needs are sent to the configured model provider. Hooks: pre_gateway_dispatch answers the owner's MyFolks messages in chat apps before the session sees them; pre_llm_call stops a MyFolks command from reaching the AI; pre_tool_call blocks AI tools that directly name its files. Other messages get an in-memory text check only. Stores a device key in a file only the user can read, or in the OS keychain when Python's keyring package is available.","category":"tools","platforms":["macos","linux"],"maintainer":"fresfrida","author":"fresfrida","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/fresfrida/myfolks","docs":"https://github.com/fresfrida/myfolks#readme","tools":["myfolks_contacts"],"hooks":["pre_tool_call","pre_gateway_dispatch","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Google sync needs your own Google Cloud OAuth client (Desktop app, People API on), set as MYFOLKS_GOOGLE_CLIENT_ID and MYFOLKS_GOOGLE_CLIENT_SECRET; file import needs nothing.; Tested in Telegram, the Hermes terminal and Hermes Desktop. Other chat apps and Windows are untested.","state":"open","pr":153912,"prs":[{"n":153912,"state":"open","created":"2026-11-11T20:36:09Z"}],"created":"2026-11-11T20:36:09Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/banner.png","https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/phone.png","https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/didyoumean.png","https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/desktop-card.png","https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/hide-from-chat.png","https://raw.githubusercontent.com/fresfrida/myfolks/1890207063f11203816a92dff1b23d65a3d182b5/assets/terminal.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/myfolks.webp"},{"name":"wrenchboard","title":"WrenchBoard","summary":"Turn Hermes into a circuit board repair bench: a live boardview beside the chat, opened from 14 boardview formats, test plans with readings pinned on the pads, part cards drawn from the real copper, and your schematic and datasheets read on your computer.","disclosure":"needs a WrenchBoard account (free to read boards, with an example board to try; repairs and test plans need Pro) and talks only to WrenchBoard's hosted connector, which receives the boardview files you import, your repairs and your readings; schematic PDFs, documents and camera pictures stay on your computer, and there is no telemetry.","category":"tools","platforms":[],"maintainer":"Junkz3","author":"Junkz3","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/Junkz3/hermes-wrenchboard","docs":"https://github.com/Junkz3/hermes-wrenchboard#readme","tools":["wb_schematic_find","wb_schematic_view","wb_capture","wb_doc_find","wb_doc_view","wb_repairs_page"],"hooks":["post_tool_call","pre_llm_call","transform_llm_output","pre_transcription"],"middleware":[],"env":[],"known_issues":"Needs a WrenchBoard account: free, created in the browser when you press Connect, and it comes with an open-hardware example board.; The pane ships disabled, like every Desktop half: switch it on once under Capabilities, Plugins.; Repairs and test plans need a WrenchBoard Pro account. On the example board, a free account also reads the analysed schematic and the known faults.","state":"open","pr":153911,"prs":[{"n":153911,"state":"open","created":"2026-11-11T20:34:52Z"}],"created":"2026-11-11T20:34:52Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/cover.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/protocol.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/datasheet-copper.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/example-diagnosis.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/schematic.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/dark.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/phone.png","https://raw.githubusercontent.com/Junkz3/hermes-wrenchboard/da468ace9e5c5cdfa118fe302eeda00de81f67cb/docs/screenshots/connect.png"],"videos":[],"x":["https://x.com/Alexischpl/status/2120615555598020739"],"youtube":[],"thumb":"/hackathon/thumbs/wrenchboard.webp"},{"name":"hermes-microduck","title":"Microduck Robot (MuJoCo)","summary":"Drive Microduck, the open-source bipedal duck robot from Pollen Robotics / Hugging Face, in a MuJoCo simulation running its real trained ONNX RL policies: look through the duck's head camera, walk, turn, sit, stand, move the head, and line up and kick a ball at a goal (10 tools), with every motion gated by a pre_tool_call safety interlock (speed and duration caps, an arena geofence, a latching e-stop only a human clears with /duck clear, every blocked call logged). Ships a /duck command, a bundled skill and a dependency-free mock duck, so it runs with no MuJoCo at all. Independent community integration, not affiliated with Pollen Robotics.","disclosure":"network: in sim mode, plain HTTP to the sim server you configure (default 127.0.0.1:8765, sim/server.py, a long-running process you start yourself); mock mode (default) makes no network connections. Setup: sim/fetch_assets.py, run by you once, downloads Pollen's MJCF, meshes and ONNX policies (~7 MB, Apache-2.0) from the official pollen-robotics/microduck-simulator Hugging Face Space pinned to a commit; the plugin downloads nothing at runtime. Files: camera snapshots, a blocked-call audit log and the e-stop latch under the plugin data dir. No credentials. The interlock limits this plugin's tools only; it does not stop other tools (terminal, code execution) from calling the sim server or changing the limits in config.yaml.","category":"tools","platforms":[],"maintainer":"Arca Computer (arcabotai)","author":"arcabotai","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/arcabotai/hermes-microduck","docs":"https://github.com/arcabotai/hermes-microduck#readme","tools":["duck_status","duck_look","duck_walk","duck_turn","duck_kick_ball","duck_kick","duck_sit","duck_stand","duck_head","duck_stop"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153910,"prs":[{"n":153910,"state":"open","created":"2026-11-11T20:34:44Z"}],"created":"2026-11-11T20:34:44Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/arcabotai/hermes-microduck/305f64006184ee21cc3313090a118ba9c76d9346/docs/img/demo.png","https://raw.githubusercontent.com/arcabotai/hermes-microduck/305f64006184ee21cc3313090a118ba9c76d9346/docs/img/interlock.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-microduck.webp"},{"name":"fieldkit","title":"FieldKit","summary":"Offline observation forms for Hermes. Describe your work in a Hermes chat and Hermes drafts the forms, then publishes them as a workspace after you approve. Fill them in on a phone with no signal (installable PWA served by the Hermes dashboard: answers, photos, voice notes, GPS and signatures), and sync entries and files back to Hermes when online, with duplicate protection and conflict review. Hermes reads the synced entries and files through 12 tools and analyses them with its own tools when asked. FieldKit never calls a model.","disclosure":"the plugin backend makes no third-party calls; the phone app downloads optional translation and OCR packs from huggingface.co and cdn.jsdelivr.net only when the user installs one.","category":"tools","platforms":[],"maintainer":"Snehal707","author":"Snehal707","version":"0.3.2","requires_hermes":">=0.23.0","repo":"https://github.com/Snehal707/fieldkit","docs":"https://github.com/Snehal707/fieldkit#readme","tools":["fieldkit_list_records","fieldkit_get_record","fieldkit_get_attachment","fieldkit_get_sync_status","fieldkit_resolve_conflict","fieldkit_get_app_link","fieldkit_workspace_format","fieldkit_draft_workspace","fieldkit_publish_workspace","fieldkit_undo_workspace_update","fieldkit_get_workspace","fieldkit_list_workspaces"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153909,"prs":[{"n":153909,"state":"open","created":"2026-11-11T20:34:42Z"}],"created":"2026-11-11T20:34:42Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Snehal707/fieldkit/de630e5a4162f02cdb21eca1262a957545da2e71/assets/wp-007-observation.png"],"videos":[],"x":[],"youtube":["yFwQ6QpygDU"],"thumb":"/hackathon/thumbs/fieldkit.webp"},{"name":"reliability-desk","title":"Reliability Desk","summary":"High-reliability practices on your real launches, changes and incidents: go/no-go polls with named veto owners, blameless incident reviews that fix conditions rather than people, FMEA with RPN and severity override, closed-loop readbacks, stop-the-line triggers, change-control recommendations and session checklists. Every finding cites its evidence, and every GO, NO-GO or change-control outcome is a recommendation for a named human.","disclosure":"no tools, hooks, MCP servers, scripts, network calls or stored credentials; works from what the user pastes; never sends, posts or pages anything; merges, deploys, rollbacks or other changes happen only when the user confirms that exact action in their own message; never signs in.","category":"general","platforms":[],"maintainer":"KellerAI","author":"jonathan-kellerai","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KellerAI/hermes-plugins","docs":"https://github.com/KellerAI/hermes-plugins/tree/main/reliability-desk#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153908,"prs":[{"n":153908,"state":"open","created":"2026-11-11T20:32:51Z"}],"created":"2026-11-11T20:32:51Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"omnihermes","title":"omnihermes","summary":"On-device biometric presence and face-verified authorization gate for Hermes Agent.","disclosure":"","category":"tools","platforms":[],"maintainer":"DataGuy-Eterniti","author":"DataGuy-Eterniti","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/DataGuy-Eterniti/OmniHermes","docs":null,"tools":["omnihermes_status","omnihermes_unlock"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153906,"prs":[{"n":153906,"state":"open","created":"2026-11-11T20:31:23Z"}],"created":"2026-11-11T20:31:23Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"inset","title":"INSET","summary":"Opens your site in headless Chromium at phone, tablet and desktop widths, inspects every page section separately (the Section Atlas) and measures overflow, clipped text, covered controls, section spill-over and failed media with DOM selectors and pixel boxes. Hermes fixes the source with its normal tools and approvals; INSET then rechecks the same URL and viewport and reports resolved, reproduced, needs review or not verified, never a pass it could not observe.","disclosure":"","category":"tools","platforms":[],"maintainer":"winsznx","author":"winsznx","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/winsznx/inset","docs":"https://github.com/winsznx/inset","tools":["inset_scan","inset_inspect","inset_compare","inset_export","inset_status"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"Needs Chromium for Playwright (python -m playwright install chromium in Hermes' environment) and a gateway restart after install.","state":"open","pr":153904,"prs":[{"n":153904,"state":"open","created":"2026-11-11T20:30:46Z"}],"created":"2026-11-11T20:30:46Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/banner.png","https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/screenshots/atlas.png","https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/screenshots/issue.png","https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/screenshots/hermes-fix.png","https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/screenshots/before-after.png"],"videos":["https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/docs/inset-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/inset.webp"},{"name":"stock-runway","title":"Stock Runway","summary":"See when each product will run out and when to reorder. Forecasts seasonal monthly demand, shows past demand, deliveries and stock on one chart, grades forecast accuracy, and lists what to order now (quantity and order-by date, with lead time, MOQ and pack size). Works from the bundled sample, a local CSV (reads SAP, NetSuite, Zoho, Odoo, Sage, QuickBooks and Dynamics export column names as is), or an optional read-only Odoo connection configured through Hermes secrets. Adds a /stock command, a stock_runway tool and a Desktop page.","disclosure":"with the Odoo source it makes read-only XML-RPC calls to the Odoo server you configure; the sample and CSV sources make no network calls.","category":"tools","platforms":[],"maintainer":"usegreymatter","author":"usegreymatter","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/usegreymatter/hermes-stock-runway","docs":"https://github.com/usegreymatter/hermes-stock-runway#readme","tools":["stock_runway"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153903,"prs":[{"n":153903,"state":"open","created":"2026-11-11T20:30:10Z"}],"created":"2026-11-11T20:30:10Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/usegreymatter/hermes-stock-runway/e3f7b28e1e8fa4f0ce9c65cdf75a0e676a596f69/docs/screens/harness-1440-dark.png","https://raw.githubusercontent.com/usegreymatter/hermes-stock-runway/e3f7b28e1e8fa4f0ce9c65cdf75a0e676a596f69/docs/screens/popup-1440-dark.png","https://raw.githubusercontent.com/usegreymatter/hermes-stock-runway/e3f7b28e1e8fa4f0ce9c65cdf75a0e676a596f69/docs/screens/card-1440-dark.png","https://raw.githubusercontent.com/usegreymatter/hermes-stock-runway/e3f7b28e1e8fa4f0ce9c65cdf75a0e676a596f69/docs/screens/harness-360-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/stock-runway.webp"},{"name":"riskpulse","title":"riskpulse","summary":"Live SEC EDGAR risk analysis for US public companies. Analyze Form 8-K material events and Form 4 insider activity with risk scoring and plain-language narratives.","disclosure":"","category":"tools","platforms":[],"maintainer":"Oko300","author":"Oko300","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/Oko300/RiskPulse","docs":null,"tools":["analyze_8k_risk","analyze_insider_activity"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153901,"prs":[{"n":153901,"state":"open","created":"2026-11-11T20:28:59Z"}],"created":"2026-11-11T20:28:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"annotary","title":"Annotary","summary":"Review your agents' plans and documents with comments, from Desktop, the Webapp and your phone: an agent shares a Markdown plan, you comment on exact lines in the Annotary page, and Send back or Approve wakes the agent in the chat that shared it (an @mention wakes only the Bot it names; a plain comment wakes nobody).","disclosure":"at first use downloads one `annotary` binary from Annotary's official GitHub Release (josh-andrews-dev/annotary), pinned by version and SHA-256 in the source and checked before use, never self-updated; runs it as a long-lived background server (`annotary serve`) on 127.0.0.1 only, detached so it outlives gateway restarts, with its data under $HERMES_ROOT/annotary/; stores a generated owner password and one Annotary Token per profile in mode-600 files in its own data folders; reads each profile's folder names, profile.yaml and avatar to keep one Annotary Member and face per profile; runs `hermes` subcommands (`plugins enable` on `hermes annotary enable`, and a single-query `hermes chat` turn to wake a Bot that has no chat yet, only after the person turns wake-ups on); no third-party network calls and no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"josh-andrews-dev","author":"josh-andrews-dev","version":"","requires_hermes":">=0.23.0","repo":"https://github.com/josh-andrews-dev/annotary-hermes","docs":"https://github.com/josh-andrews-dev/annotary-hermes#readme","tools":["annotary_share","annotary_read","annotary_comment","annotary_threads","annotary_reply","annotary_push_version","annotary_handoff","annotary_act","annotary_list","annotary_set_name"],"hooks":[],"middleware":[],"env":[],"known_issues":"Windows is not supported (Annotary ships for macOS and Linux; WSL counts as Linux).; In the Webapp, turn on Annotary once per browser in Capabilities → Plugins before the page shows.; After updating the plugin, restart the gateway and the dashboard; Hermes reloads neither for a loaded plugin.","state":"open","pr":153900,"prs":[{"n":153900,"state":"open","created":"2026-11-11T20:28:22Z"}],"created":"2026-11-11T20:28:22Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/josh-andrews-dev/annotary-hermes/253abf811b4be90f57834f8233730fbc688e7ced/docs/media/document-with-threads.png","https://raw.githubusercontent.com/josh-andrews-dev/annotary-hermes/253abf811b4be90f57834f8233730fbc688e7ced/docs/media/agent-reply-in-thread.png","https://raw.githubusercontent.com/josh-andrews-dev/annotary-hermes/253abf811b4be90f57834f8233730fbc688e7ced/docs/media/phone-webapp.png"],"videos":[],"x":["https://x.com/josh_andrews/status/2120619382590046208"],"youtube":[],"thumb":"/hackathon/thumbs/annotary.webp"},{"name":"cybopal-one-devkit","title":"CyboPal ONE DevKit (unofficial)","summary":"Unofficial, not made or endorsed by CyboPal. Drive a CyboPal ONE (a 27-inch 4K screen on a 6-DOF robotic arm with the Pauli companion display) from Hermes: follow, posture presets, exact poses, gestures, both screens, both cameras and an emergency stop. Works today against the open source CyboPal ONE DevKit live simulator.","disclosure":"HTTP calls only to the device_url setting (default http://127.0.0.1:5000), never following redirects or environment proxies, no other service and no telemetry; saves camera pictures in HERMES_HOME/plugin-data/cybopal-one-devkit/cameras (keeps the newest 30, deleting only older pictures it took); no secrets, shell commands, subprocesses or background threads; a tool call blocks for at most 10 s settling, or 60 s for a routine. Moves physical hardware when pointed at a real device: motion is refused while E-stopped and only cleared by an explicit clear_estop, and allow_motion off refuses all motion.","category":"tools","platforms":[],"maintainer":"drowzeys","author":"drowzeys","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/drowzeys/hermes-cybopal-one-devkit","docs":null,"tools":["cybopal_status","cybopal_mode","cybopal_pose","cybopal_display","cybopal_look","cybopal_routine","cybopal_stop"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153899,"prs":[{"n":153899,"state":"open","created":"2026-11-11T20:27:03Z"}],"created":"2026-11-11T20:27:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/drowzeys/hermes-cybopal-one-devkit/ede0088906682517e5228b1f618c8d518ec239cd/assets/catalog/banner.png","https://raw.githubusercontent.com/drowzeys/hermes-cybopal-one-devkit/ede0088906682517e5228b1f618c8d518ec239cd/assets/catalog/01-hermes-driving.jpg","https://raw.githubusercontent.com/drowzeys/hermes-cybopal-one-devkit/ede0088906682517e5228b1f618c8d518ec239cd/assets/catalog/02-emergency-stop.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cybopal-one-devkit.webp"},{"name":"polydesk","title":"polydesk","summary":"Agent paper-trading desk for Polymarket: research a market, quote a trade against the live CLOB order book (fills sweep real book levels, so slippage is realistic), confirm with a single-use 5-minute ticket that is re-priced at execution, then track mark-to-market P&L with automatic settlement when markets resolve. Risk limits (max trade, max % of equity per outcome, max slippage, liquidity checks), a persistent ledger, a /desk command and a bundled workflow skill. The paper bankroll can be backed 1:1 by testnet USDC in a linked Base Sepolia wallet.","disclosure":"HTTPS GETs only to gamma-api.polymarket.com and clob.polymarket.com (the client refuses other hosts); when polydesk_wallet is used, JSON-RPC eth_chainId/eth_getBalance/eth_call (USDC balanceOf) to sepolia.base.org or the configured rpc_url, which receives the linked public address; stores a SQLite ledger at <HERMES_HOME>/plugin-data/polydesk/desk.db; no keys, signing, transactions, real orders, shell commands, background processes, telemetry, self-updating code or binaries; standard library only. Not financial advice.","category":"tools","platforms":[],"maintainer":"clatsonhacks","author":"clatsonhacks","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/clatsonhacks/hermes-polydesk","docs":"https://github.com/clatsonhacks/hermes-polydesk#readme","tools":["polydesk_markets","polydesk_trade","polydesk_portfolio","polydesk_history","polydesk_wallet"],"hooks":[],"middleware":[],"env":[],"known_issues":"Polymarket's API is blocked by some ISPs and regions; tools then return a 'could not reach Polymarket' error instead of stale data.","state":"open","pr":153898,"prs":[{"n":153898,"state":"open","created":"2026-11-11T20:27:02Z"}],"created":"2026-11-11T20:27:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tap-proof","title":"Tap Proof","summary":"Find the exact CSS viewport widths where a control on a local web page loses its center hit. Tap Proof reports the blocking element and saves boundary screenshots and a receipt. Replay the same check after a fix.","disclosure":"launches a bounded Node subprocess and headless Edge, requests same-origin resources over loopback HTTP, and writes receipts and witness PNGs to the active profile's plugin data. The tool returns the saved paths.","category":"tools","platforms":["windows"],"maintainer":"ladyFaye1998","author":"ladyFaye1998","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ladyFaye1998/hermes-tap-proof","docs":"https://github.com/ladyFaye1998/hermes-tap-proof#readme","tools":["tap_proof"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires a local Windows Hermes backend, Microsoft Edge, Node.js 20+, and a manual npm ci in the installed plugin's browser directory.; Measures the target center at one viewport height and page state. A check covers up to 800 integer CSS widths.; Requires a same-origin loopback HTTP page. Redirects and cross-origin resources are unsupported.","state":"open","pr":153897,"prs":[{"n":153897,"state":"open","created":"2026-11-11T20:25:27Z"}],"created":"2026-11-11T20:25:27Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"focus","title":"Focus","summary":"Cognitive context engine for Hermes Agent. Intercepts turns before inference, extracts true intent and entities, prioritizes repository governance, selectively ingests memory, and injects winning skills in a single step with zero KV-cache mutation.","disclosure":"","category":"tools","platforms":[],"maintainer":"Kattegat-crew","author":"Kattegat-crew","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Kattegat-crew/hermes_focus_plugin","docs":"https://github.com/Kattegat-crew/hermes_focus_plugin#readme","tools":["focus_status","focus_route"],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153896,"prs":[{"n":153896,"state":"open","created":"2026-11-11T20:25:02Z"}],"created":"2026-11-11T20:25:02Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"jg-provider-usage","title":"jg-provider-usage","summary":"Provider usage in a Desktop status-bar chip, popover and full page: subscription windows, API balances, reset times and profile-scoped account state. Includes data-only JSON connectors with explicit destination approval, setup cards for Claude, Gemini and Z.ai, a running-agents footer with honest unknowns, and an active-account Codex banked-reset preview/confirmation. Stock Hermes 0.23.1 needs no core patch; xAI subscription credits and exact worker-account usage need optional host metadata and otherwise remain unavailable. Usage reads use Hermes account helpers or scoped API-key access and provider HTTPS endpoints; subscription tokens stay with Hermes. Custom definitions are HTTPS GET only, approved-host restricted, with no redirects or executable code. Confirming a Codex reset spends one banked reset; refresh and preview do not. No purchase, automatic redemption, telemetry or self-update. Screenshots and demo use real plugin components with clearly labeled synthetic data, not live accounts.","disclosure":"","category":"desktop","platforms":[],"maintainer":"jerrygooch","author":"jerrygooch","version":"0.10.0","requires_hermes":">=0.23.1","repo":"https://github.com/jerrygooch/hermes-provider-usage","docs":"https://github.com/jerrygooch/hermes-provider-usage#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153892,"prs":[{"n":153892,"state":"open","created":"2026-11-11T20:23:47Z"}],"created":"2026-11-11T20:23:47Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/infographic.png","https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/screenshots/02-popover-current.png","https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/screenshots/04-overview-multi-provider.png","https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/screenshots/06-popular-connections.png","https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/screenshots/08-catalog-trust.png","https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/screenshots/12-reset-confirm.png"],"videos":["https://raw.githubusercontent.com/jerrygooch/hermes-provider-usage/543afc7c3dc4ac27d601a3a84389032d12db1415/assets/hackathon/demo-full.mp4"],"x":["https://x.com/TigerNinjaChan/status/2120635628249649209"],"youtube":[],"thumb":"/hackathon/thumbs/jg-provider-usage.webp"},{"name":"puppetmaster-learn","title":"Puppetmaster Learn","summary":"Turns a Puppetmaster swarm into a Hermes skill. Puppetmaster runs durable worker jobs (swarms and flow graphs) for an agent. When a Hermes session ends, this plugin finds the swarm that finished during that session in the session's directory and, if it produced findings or a patch, writes its goal and findings (title, location, severity, failure scenario, evidence) as a skill candidate under $HERMES_HOME/skills-candidates/. Promote it with `puppetmaster skills promote-candidate <slug>`. It never writes a live skill or starts an agent or job, and writes one candidate per job. Needs the Puppetmaster CLI (PyPI puppetmaster-ai).","disclosure":"at session end it reads the ending session's cwd and started_at from the Hermes session store (read-only, no messages), runs up to three read-only Puppetmaster CLI commands (last --json, status, artifacts) as child processes in that directory, 15 s timeout each, stdin closed, and reads the mcp_servers.puppetmaster entry of Hermes config.yaml (no credentials); it writes only under $HERMES_HOME/skills-candidates/; no network, no threads or background processes, no telemetry, no dependencies beyond the standard library.","category":"automation","platforms":[],"maintainer":"professorpalmer","author":"professorpalmer","version":"0.2.1","requires_hermes":">=0.20.4","repo":"https://github.com/professorpalmer/Puppetmaster","docs":"https://github.com/professorpalmer/Puppetmaster/blob/5dc5fc1ecb9bfcdadf028872cf8d38a27f477ba7/puppetmaster/hermes_plugin/puppetmaster-learn/README.md","tools":[],"hooks":["on_session_finalize"],"middleware":[],"env":[],"known_issues":"Gateway-owned sessions (hermes -z, TUI, desktop) drop plugin session-end messages today, so the notice does not show. The candidate is still written; `puppetmaster skills list-candidates` lists it.; Only the latest Puppetmaster job of the session's directory is checked. If two swarms finish in one session, only the later one becomes a candidate.","state":"open","pr":153891,"prs":[{"n":153891,"state":"open","created":"2026-11-11T20:23:35Z"}],"created":"2026-11-11T20:23:35Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"accountability-partner","title":"Accountability Partner","summary":"Holds you to what you said, in your own words: saves promises with your exact quote, checks in each night, takes a one-tap 'yes no' answer, and keeps an honest score (streaks, weekly 'you said, you did' receipt, consequences you chose). Checks receipts: a promise can name where proof lives and what counts as a win in the user's own rule (a WHOOP workout, GitHub commits, a Strava run, a calendar event); for a promise with a rule (e.g. 'minutes >= 30', 'commits >= 1') the plugin checks the rule in code on that tool's result; if the user allowed that tool (setting proof_tools, empty by default, via /promises allow <tool>) the plugin fetches it itself through ctx.dispatch_tool at check-in, otherwise the agent fetches it; data that falls short is shown to the user and they are asked, unless they said 'the data decides' when making the promise (then a reading that fails the rule at check-in is a miss); missing data or a failed tool is never a miss. Without a rule, promise_prove accepts only evidence text a tool really returned in that session (seen via post_tool_call). Consequences enforce themselves: on a miss the agent carries out the user's chosen consequence with any connected tool (a wallet, an app blocker), through Hermes's normal approvals, and promise_enforced counts it only with that tool's result as proof. Optional lock-in on the user's explicit words: until an end date (max 90 days, 24h cool-off) the promise can't be dropped and its consequence fires without a new yes; the user grants the enforcing tool a standing OK in Hermes once at setup. The pre_tool_call hook, only while a consequence is owed through a named tool, blocks calls over the user's max amount or to another recipient and escalates to Hermes approval when not locked in. Only the user's own words or a real tool receipt change the ledger: every write needs a quote the plugin checks against the user's current message or a tool result.","disclosure":"one sqlite file under plugin-data/accountability-partner; the pre_llm_call hook sees each user message and keeps the latest per session in memory for 15 minutes for the quote check; the post_tool_call hook keeps the last 40 tool results per session in memory for 30 minutes to check receipts, writing only the short evidence quote to disk. Apart from calls to proof tools the user allowed, the plugin never calls tools itself; consequences are carried out by the agent. No network calls, shell commands, background threads, secrets or telemetry. Schedules are two Automation Blueprints the user turns on.","category":"automation","platforms":[],"maintainer":"ZK-Snarky","author":"ZK-Snarky","version":"0.8.0","requires_hermes":">=0.22.5","repo":"https://github.com/ZK-Snarky/hermes-accountability-partner","docs":"https://github.com/ZK-Snarky/hermes-accountability-partner#readme","tools":["promise_add","promise_checkin","promise_drop","promise_enforced","promise_list","promise_lock","promise_prove","promise_record","promise_report"],"hooks":["post_tool_call","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153889,"prs":[{"n":153889,"state":"open","created":"2026-11-11T20:22:57Z"}],"created":"2026-11-11T20:22:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bundlebees","title":"bundlebees","summary":"bundlebees: dispatch sandboxed coding workers (bees) from Hermes, watch their attempts, and keep the apply, test and push step in your own hands. Four tools with 571 o200k tokens of schema between them. bundlebees_status reports launcher health, capacity, live attempts, events, containers and authorized projects. bundlebees_dispatch validates a file-leased brief and starts a worker in a disposable Cua sandbox (default model deepseek-v4.1-flash), optionally linked to a Hermes kanban card. bundlebees_attempt gets, follows, cancels or reviews one attempt (cancel and review need confirm=true). bundlebees_host_prompt writes a paste-ready setup prompt for a worker host and never takes a host, token or URL. When an attempt finishes, you run hermes bundlebees verify <attempt_id>: it applies the patch on a clean feature-branch worktree, enforces the file lease, runs the named tests and a secret scan, and on green commits and pushes that feature branch (main and master are refused; --dry-run applies and tests without pushing). The plugin never merges, tags or force-pushes. Hermes Desktop 0.23 or newer shows a dark pane with Health, Containers, Models, Concurrency, Projects, Live attempts, Verify results and Remote host tabs; the four tools still run without it. Skill id bundlebees:bundlebees-operator. It is for developers who split repo work into small parallel briefs and want cheap workers on a machine they control, with a human gate before anything lands. To start, you need Hermes 0.23.0 or newer and a worker launcher (by default the Orbit local-workers adapter on the same machine). Run hermes plugins install bundlebees and hermes plugins enable bundlebees, store the launcher token as the Hermes secret BUNDLEBEES_LAUNCHER_TOKEN (never in chat), load bundlebees:bundlebees-operator, and begin with bundlebees_status op=health. hermes bundlebees doctor checks the token, the adapter and the schema size without printing values.","disclosure":"network and cost: talks to a local or user-configured worker launcher (loopback by default; a private or LAN launcher URL requires allow_private=true in plugin settings and is never a tool argument); dispatching a bee can spend model budget on that worker machine. Worker events and logs are treated as untrusted text. Disclosure — credentials and CLI: secrets are read only through Hermes get_secret. The user-run CLI (hermes bundlebees verify / deploy) runs its child processes with a minimal environment, can push a feature branch and, when you invoke it, reach a remote host. A Cua sandbox is not a sandbox for the Hermes process. The Desktop pane uses ctx.rest and never shows tokens or host addresses.","category":"automation","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/bundlebees","docs":"https://github.com/mojomast/bundlebees#readme","tools":["bundlebees_status","bundlebees_dispatch","bundlebees_attempt","bundlebees_host_prompt"],"hooks":[],"middleware":[],"env":["BUNDLEBEES_LAUNCHER_TOKEN"],"known_issues":"The Desktop pane has been exercised through its FastAPI backend and a screenshot; it has not yet been proven on a live Hermes Desktop host.","state":"open","pr":153888,"prs":[{"n":153888,"state":"open","created":"2026-11-11T20:22:34Z"}],"created":"2026-11-11T20:22:34Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mojomast/bundlebees/57a6f12cdcfa789c5aba5f22f3f46efd2b8b3d5c/docs/assets/banner.png","https://raw.githubusercontent.com/mojomast/bundlebees/57a6f12cdcfa789c5aba5f22f3f46efd2b8b3d5c/docs/screenshots/pane-health.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/bundlebees.webp"},{"name":"whiplash","title":"Whiplash","summary":"Let Hermes jam live on an Elektron Digitakt II over USB MIDI: genre/mood beats with MIDI clock, routed onto a session kit map of what each track holds (tracks 1-16), in any key with chord progressions, arranged into song sections (whiplash_arrange: intro, build, drop, outro on bar lines), written melodies and rhythms, bar-quantized pattern switches with DJ-style transitions (filter swap, drop swap, riser), track levels and pan with saved mixes (whiplash_mix), listening to the unit's real output over USB audio (whiplash_listen: loudness, clipping, band balance, timing and kick offsets as numbers, never audio) with a loudness guard that refuses level increases after clipping, a kit scan (whiplash_scan_kit: with the beat stopped, one note per track, heard and classified into proposed kit-map labels that are never applied without the user's yes), play along (whiplash_play_along / whiplash_follow: reads the unit's MIDI input to show the user's knob moves, stop a ramp on a knob they grab, and answer phrases they play in key on another track; whiplash_undo reverts the last part, mix or arrangement change), named sound parameters, clock-synced parameter ramps, live fills/drops/density/swing/humanize, switching a track among samples already in the project pool, mutes and tempo.","disclosure":"controls MIDI hardware (MIDI Start also starts the unit's own sequencer; a clock-only mode is available), can change which already-loaded sample a track plays, runs a background sequencer thread while a pattern plays, and opens a virtual MIDI port named \"Whiplash\" when no Digitakt is connected. Optional visualiser (whiplash_open_view): a read-only local web page served on 127.0.0.1 from a background thread, opened in the default browser, showing the beat and the live Hermes conversation (taken from in-memory observer hooks; nothing is stored). whiplash_listen opens an audio input (the Digitakt's USB audio, or WHIPLASH_AUDIO_INPUT) only for the length of one call (at most 24 s), through the optional numpy/sounddevice extra, which needs microphone permission on macOS; the audio is analysed in memory and dropped. whiplash_scan_kit does the same for at most about 35 s and sends only note-on/off. whiplash_play_along and whiplash_follow open the Digitakt's MIDI input (never another device) on a background reader thread that only reads; what it hears is never sent back, and the session (notes and CCs sent and heard) is kept in memory only, at most 65,536 events, never written to disk. Never sends SysEx or program changes; no file transfer, project writes, shell or credentials, and no network beyond that localhost page.","category":"tools","platforms":["linux","macos"],"maintainer":"pgbouncer","author":"hejijunhao","version":"0.8.0","requires_hermes":">=0.19","repo":"https://github.com/hejijunhao/whiplash","docs":null,"tools":["whiplash_list_midi_ports","whiplash_list_params","whiplash_play_pattern","whiplash_set_param","whiplash_select_sample","whiplash_label_tracks","whiplash_transpose","whiplash_write_part","whiplash_set_progression","whiplash_arrange","whiplash_mix","whiplash_ramp_param","whiplash_mutate","whiplash_mute_track","whiplash_unmute_track","whiplash_set_tempo","whiplash_stop","whiplash_status","whiplash_listen","whiplash_scan_kit","whiplash_play_along","whiplash_follow","whiplash_undo","whiplash_open_view","whiplash_close_view"],"hooks":["pre_llm_call","on_stream_start","on_stream_delta","on_stream_end","pre_tool_call","post_tool_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"Needs an Elektron Digitakt II (or any MIDI device/DAW) on USB MIDI to be heard.; With no device connected, Whiplash plays into a virtual MIDI port, which is silent unless a DAW or soft synth listens to it. Every tool result says so.; Windows has no virtual MIDI ports, so the fallback is unavailable there.; On Linux, python-rtmidi needs the ALSA runtime (libasound2).; MIDI Start also starts the Digitakt's own sequencer; select an empty pattern on the unit or use send_transport=false (clock only).; Sample select picks a slot in the unit's current sample bank and can't list or preview samples.; whiplash_listen needs the optional [listen] extra (numpy, sounddevice/PortAudio), USB CONFIG = USB AUDIO/MIDI on the unit, and microphone permission on macOS; without them it returns an error with the fix and every other tool works.","state":"open","pr":153890,"prs":[{"n":153890,"state":"open","created":"2026-11-11T20:23:06Z"},{"n":153887,"state":"closed","created":"2026-11-11T20:22:05Z"}],"created":"2026-11-11T20:22:05Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/pgbouncer/status/2120612259349356813"],"youtube":[],"thumb":null},{"name":"hermes-intercom","title":"Hermes Intercom","summary":"Cross-session discovery and inter-agent messaging for Hermes Agent across Desktop, TUI, CLI, Discord, and Telegram within the active profile. Adds `session_list` (read-only, schema-tolerant discovery over the profile's `state.db` and `gateway_routing` table, reporting whether each session has a live route or only a synthesized `:local:dm:` key) and `session_send` (delivers `[Message from agent '<sender>']` cards with `[intercom from=<id> hop=<n>/<max> mode=<reply|fyi>]` loop protection, per-sender deduplication, and per-target rate limiting). Automatically mounts dormant `:local:dm:` sessions in the local gateway authority before injection. From a classic CLI REPL or external process, a `:local:dm:` target falls back to `prompt.submit` over the local Gateway WebSocket when `allow_gateway_injection: true`. A Discord or Telegram target has no such fallback.","disclosure":"reads `$HERMES_HOME/state.db` (`sessions`, `gateway_routing`, and `messages` tables) in read-only mode to list sessions, resolve targets, and read inbound hop tags; reads `$HERMES_HOME/config.yaml` only to check the boolean `plugins.entries.hermes-intercom.allow_gateway_injection` gate when not already set on `ctx`; connects to the active profile's local loopback Gateway WebSocket (`hermes_cli.gateway_runtime.discover_gateway_endpoint` and `hermes_cli.gateway_client.connect_gateway`) to mount dormant `:local:dm:` sessions (`session.resume` with `omit_messages=True`, then `session.detach`) and, when `allow_gateway_injection: true` is enabled in `config.yaml`, to submit prompts via `prompt.submit`; injects attributed messages into other sessions in the same profile (which triggers model turns in the target session under that profile's configured model and tool permissions, bounded by `max_hops` and per-target rate limits); and appends delivery metadata (`ts`, session IDs, hop counts, content SHA-256 prefix, and request/admission IDs — never message plaintext) to `$HERMES_HOME/cache/hermes-intercom/audit.jsonl` (POSIX `0600` requested; Windows access follows directory ACL, rotated at 2 MiB). The plugin adds no external service endpoint or third-party runtime dependency; host-configured model and tool calls may use external services, and `desktop/plugin.js` is a no-op module that stays strictly inside the Desktop Plugin SDK surface.","category":"automation","platforms":[],"maintainer":"greqone","author":"greqone","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/greqone/hermes-intercom","docs":"https://github.com/greqone/hermes-intercom#readme","tools":["session_list","session_send"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153885,"prs":[{"n":153885,"state":"open","created":"2026-11-11T20:21:10Z"}],"created":"2026-11-11T20:21:10Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/greq333/status/2120613459922669888"],"youtube":[],"thumb":null},{"name":"codemode","title":"Codemode","summary":"Code-as-Orchestration: the model writes one JavaScript snippet that calls your MCP tools (plus web_search/web_extract) in a QuickJS sandbox, loops and filters there, and returns only the answer. Tool schemas are found on demand with BM25 searchTools().","disclosure":"every run starts a short-lived local Python child process hosting QuickJS (minimal env, no API keys, no fs/network access, killed on finish or timeout); tool calls go through ctx.dispatch_tool with Hermes' normal approvals; no network calls of its own, no telemetry, no stored credentials.","category":"tools","platforms":["linux","macos"],"maintainer":"junbo-hh","author":"junbo-hh","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/junbo-hh/hermes-codemode","docs":"https://github.com/junbo-hh/hermes-codemode#readme","tools":["codemode"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153884,"prs":[{"n":153884,"state":"open","created":"2026-11-11T20:20:24Z"}],"created":"2026-11-11T20:20:24Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/JUNBOHU1995/status/2120624378853642513"],"youtube":[],"thumb":null},{"name":"claim-check","title":"claim-check","summary":"Receipts for agent claims: checks the success claims in each final reply (\"all tests pass\", \"I created src/app.py\", \"committed and pushed\", \"installed requests\", \"ran make build successfully\", \"server is running on port 8000\") against the session's actual tool results and appends a ✅ verified / ⚠️ unsupported / ❌ contradicted footer citing the tool call. Optional nudge feeds contradictions back into the next turn; `/receipts` and the `claimcheck_report` tool show the evidence ledger. Deterministic, pure stdlib, works with any model.","disclosure":"the post_tool_call hook sees every tool's name, args and result and writes a per-session JSONL ledger (tool, file path or first 500 chars of the command, exit status, last 300 chars of output; max 500 entries) under its plugin-data directory only; transform_llm_output appends a footer without holding the stream; pre_llm_call injects context only when `nudge` is enabled; no network calls, LLM calls, subprocesses, credentials, telemetry, background processes or self-updater.","category":"tools","platforms":[],"maintainer":"cryptobandit","author":"cryptobandit-builds","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://gitlab.com/cryptobandit/hermes-claim-check","docs":"https://gitlab.com/cryptobandit/hermes-claim-check#readme","tools":["claimcheck_report"],"hooks":["post_tool_call","transform_llm_output","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Claim detection is conservative English regex: unusual phrasings are skipped, never guessed. A verdict shows only what tool results recorded this session prove.","state":"open","pr":153882,"prs":[{"n":153882,"state":"open","created":"2026-11-11T20:20:04Z"}],"created":"2026-11-11T20:20:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-model-board","title":"Model Board","summary":"Phone-first bulk model routing across profiles with exact preview, confirmation and saved-setting readback.","disclosure":"","category":"models","platforms":[],"maintainer":"driptothebone","author":"driptothebone","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/driptothebone/hermes-model-board","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires an initialized in-process machine dashboard and local-file config backend; isolated plugin workers and remote backends are unsupported.; Uses version-sensitive Hermes config-backend APIs; local validation reports private-import warnings.","state":"open","pr":153881,"prs":[{"n":153881,"state":"open","created":"2026-11-11T20:19:54Z"}],"created":"2026-11-11T20:19:54Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/driptothebone/hermes-model-board/17de6b85a7e746909d6e524b245d78ccf3187dc7/docs/phone-demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-model-board.webp"},{"name":"quick-eval","title":"Quick Eval","summary":"Get a second opinion on any answer. /quick-eval sends your last question to other models, shows the answers side by side, and records which ones you mark good. Runs and picks go to an append-only JSONL file, and a review page (/quick-eval open: the Quick Eval page in Hermes Desktop on Hermes 0.22.3 or newer, or a browser page elsewhere; also a tab in hermes dashboard) shows each comparison and a model leaderboard.","disclosure":"sends only your last question to the models you name, through ctx.llm and your configured providers; checks localhost ports 11434, 1234, 8000 and 8080 for local model servers; writes ~/.hermes/evals/evals.jsonl and its own section of config.yaml after you run /quick-eval allow; reads ~/.hermes/state.db read-only for the review page; /quick-eval open from a terminal serves the page on 127.0.0.1:8765 until Hermes exits (in Hermes Desktop it uses the plugin's Desktop page and starts no server); no shell commands, credentials, telemetry or self-updates.","category":"models","platforms":[],"maintainer":"tikiverse","author":"shaunporwal","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/tikiverse/quick-eval","docs":"https://github.com/tikiverse/quick-eval/tree/main/plugins/quick-eval#readme","tools":[],"hooks":["post_llm_call"],"middleware":[],"env":[],"known_issues":"Local thinking models (Qwen3 and similar) can return no answer on a server with a small default token cap: Hermes drops a custom provider's extra_body and max_tokens on plugin calls (hermes-agent#124290, #50132). Turn thinking off on the server.","state":"open","pr":153880,"prs":[{"n":153880,"state":"open","created":"2026-11-11T20:18:07Z"}],"created":"2026-11-11T20:18:07Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tikiverse/quick-eval/0ff4ab2f26c19820e373217721f75c98ceab734f/docs/img/demo.gif","https://raw.githubusercontent.com/tikiverse/quick-eval/0ff4ab2f26c19820e373217721f75c98ceab734f/docs/img/tiananmen.png"],"videos":[],"x":["https://x.com/ShaunPorwal/status/2120623874555396133"],"youtube":[],"thumb":"/hackathon/thumbs/quick-eval.webp"},{"name":"foundry","title":"foundry","summary":"Foundry — five creator bots sharing one memory ledger: research, draft, score, and price your work. Say 'foundry start' — a short interview sets up your brand. Approval is disabled — no trusted human review channel yet; nothing auto-posts.","disclosure":"","category":"tools","platforms":[],"maintainer":"Amit Srivastava","author":"aks-cmyk","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/aks-cmyk/foundry-for-new-creators","docs":null,"tools":["foundry_start","foundry_ledger_list","foundry_ledger_get","foundry_draft_create","foundry_draft_feedback","foundry_draft_approve","foundry_scorecard","foundry_money_summary"],"hooks":[],"middleware":[],"env":[],"known_issues":"Human approval is not yet implemented in this version — the Approve action is intentionally unavailable, nothing auto-posts; Live Smith draft revision via ctx.llm VERIFIED on macOS Nov 10, 2026 (draft-003, generation 'llm'); live web dashboard load VERIFIED Nov 10, 11:15 PM (tabs render) and Nov 11 (all four tabs incl. Brand); live Desktop load not yet run","state":"open","pr":153879,"prs":[{"n":153879,"state":"open","created":"2026-11-11T20:17:23Z"}],"created":"2026-11-11T20:17:23Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/aks-cmyk/foundry-for-new-creators/134692fa1be981972cccbf9bd32f3ed681b9c476/foundry/assets/logo-constellation-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/foundry.webp"},{"name":"wiretap","title":"Wiretap","summary":"Inspect the exact request each model call put on the wire (system prompt, tool schemas, messages, blocks added at send time) and the model's response, aligned to the stored transcript, in a dashboard tab and a Desktop page; also per-call latency, tokens, prefix-cache hits with miss forensics and cost, and a read-only CLI.","disclosure":"stores full prompts, tool results and responses locally (72 hours by default), reads Hermes's state.db read-only, reads the calling frame and wraps httpx's send step in-process to record the outgoing body, adds an X-Wiretap-Call header to model requests sent to loopback hosts, imports two private Hermes modules, and makes no network calls of its own.","category":"desktop","platforms":[],"maintainer":"aka-lacie","author":"aka-lacie","version":"0.6.0","requires_hermes":">=0.22.5","repo":"https://github.com/aka-lacie/hermes-wiretap","docs":"https://github.com/aka-lacie/hermes-wiretap#readme","tools":[],"hooks":["pre_api_request","post_api_request","api_request_error"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153878,"prs":[{"n":153878,"state":"open","created":"2026-11-11T20:16:52Z"}],"created":"2026-11-11T20:16:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/aka-lacie/hermes-wiretap/10f9a8afab1b9fcb9b8783c8541b244bcf2ce675/docs/screenshots/01-wire-inspector.png","https://raw.githubusercontent.com/aka-lacie/hermes-wiretap/10f9a8afab1b9fcb9b8783c8541b244bcf2ce675/docs/screenshots/02-calls-cache-miss.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/wiretap.webp"},{"name":"hook-desk","title":"Hook Desk","summary":"Skills-only plugin. Studies the opening lines of posts you paste, names the pattern, keeps a sourced formula file and drafts opening lines in your voice for your approval. Never posts or browses.","disclosure":"no network calls, no model calls of its own, no shell, no stored credentials; reads only text the user provides.","category":"general","platforms":[],"maintainer":"KellerAI","author":"jonathan-kellerai","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/KellerAI/hermes-plugins","docs":"https://github.com/KellerAI/hermes-plugins/tree/main/hook-desk#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153877,"prs":[{"n":153877,"state":"open","created":"2026-11-11T20:14:53Z"}],"created":"2026-11-11T20:14:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"docket","title":"Docket","summary":"Quotes for trades businesses (plumbers, electricians, HVAC): describe a job in words or a voice note and Docket prices every line from the owner's own price book with a deterministic engine (the model only picks item codes; it never writes a number). The owner approves with one tap on Telegram, Slack, Discord or Desktop, the customer accepts on a quote page, and the owner books the day and closes out with an invoice. Includes a plain-words price book editor with preview before save, PDF quotes and invoices, follow-ups, a run sheet and a Desktop Jobs board.","disclosure":"stores customers, quotes and invoices in a local SQLite file under plugin-data/docket; starts a local HTTP server for the customer accept page (127.0.0.1:8787 by default, in a background thread of the gateway); reads a price list file only when the owner names one; job descriptions and unreadable price lists go to the model configured in Hermes; the pre_transcription hook adds price book item names to the speech-to-text prompt; a pre_tool_call gate asks before sending a quote or saving price changes and blocks both from cron. No outbound network calls of its own, no shell commands, no credentials, no telemetry, no email sending.","category":"tools","platforms":[],"maintainer":"MKempler","author":"MKempler","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/MKempler/docket","docs":"https://github.com/MKempler/docket#readme","tools":["docket_price_preview","docket_quote","docket_send_quote","docket_jobs","docket_close_job","docket_pricebook_edit","docket_pricebook_save","docket_followups","docket_run_sheet","docket_pipeline"],"hooks":["pre_tool_call","pre_llm_call","pre_transcription"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153876,"prs":[{"n":153876,"state":"open","created":"2026-11-11T20:14:22Z"}],"created":"2026-11-11T20:14:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/banner.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/phones.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/accept-page.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/desktop-board.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/desktop-pricebook.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/quote-pdf.png","https://raw.githubusercontent.com/MKempler/docket/16aecc5a9c02635ba7911ca6a5aa4db9a4066b11/assets/eval-chart.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/docket.webp"},{"name":"contagion","title":"contagion","summary":"Taint-aware execution. Once a session reads untrusted content, its commands lose network, secrets and out-of-project writes at the OS layer.","disclosure":"","category":"other","platforms":[],"maintainer":"onchaindc","author":"onchaindc","version":"","requires_hermes":"","repo":"https://github.com/onchaindc/Contagion","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153875,"prs":[{"n":153875,"state":"open","created":"2026-11-11T20:14:18Z"}],"created":"2026-11-11T20:14:18Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"trophy-room","title":"Trophy Room","summary":"Achievements for Hermes Desktop: 120 illustrated trophies earned from real Hermes work (tools, skills, profiles, cron, plugins, messaging, kanban, media), collectible cards across five tiers, unlock pop-ups with a synth sting, optional OS notifications, recent trophies and replayable away collections. Hooks only on the agent side (no tools, middleware or env vars); progress is stored in the plugin's own data directory. No telemetry or third-party services; artwork is bundled and the sound is synthesized locally. Optional read-only import from the bundled hermes-achievements plugin. Derived in part from hermes-achievements by PCinkusz (MIT): the 60 original achievement definitions.","disclosure":"","category":"desktop","platforms":[],"maintainer":"abundantbeing","author":"abundantbeing","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/abundantbeing/hermes-trophy-room","docs":"https://github.com/abundantbeing/hermes-trophy-room#readme","tools":[],"hooks":["post_tool_call","on_session_start","on_session_end","post_llm_call","post_compaction","kanban_task_completed","kanban_task_claimed","kanban_task_blocked","gateway_platform_event"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153874,"prs":[{"n":153874,"state":"open","created":"2026-11-11T20:14:06Z"}],"created":"2026-11-11T20:14:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-gallery-dark.png","https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-trophy-detail.png","https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-card-full.png","https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-recent-trophies.png","https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-settings.png","https://raw.githubusercontent.com/abundantbeing/hermes-trophy-room/80852baa4207e8269f83e4a5681d77b5e9ae5016/docs/screenshots/release-gallery-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/trophy-room.webp"},{"name":"local-scout","title":"local-scout","summary":"Local privacy and safety layer for Hermes. Detected personal data and secrets (e-mails, phones, cards and CVVs, IBANs, SSNs, PESEL numbers, addresses, API keys; person names in prompts) are replaced with one-way placeholders on your machine before Hermes sends a request to a model: user prompts, file and terminal output, MCP tool results, tool-call arguments and auxiliary calls such as title generation, in CLI and gateway sessions. Also flags prompt injection in what the agent reads (flagged, not blocked), offers optional calibrated local triage that can answer routine tickets with no main model call, an optional basal method through a basal engine you run locally, and local Insights.","disclosure":"no network calls by default; the optional basal method calls a basal engine on this machine only (loopback); masking runs inside Hermes hooks and middleware on content Hermes already passes to plugins; setup-triage and calibrate read only a history file you name; state and telemetry stay in the profile, export is opt-in; no shell commands, no background processes, no stored credentials; every scope needs explicit consent from the CLI.","category":"tools","platforms":["linux","macos"],"maintainer":"Angerosteles","author":"Angerosteles","version":"1.7.4","requires_hermes":">=0.23.0,<0.24.0","repo":"https://github.com/Angerosteles/local-scout","docs":"https://github.com/Angerosteles/local-scout#readme","tools":["scout_handle","scout_calibrate","scout_inspect","scout_recipes","scout_choose","scout_train","scout_predict","scout_report","scout_calculate"],"hooks":["post_tool_call","pre_api_request","pre_auxiliary_call","post_api_request","post_auxiliary_call","transform_llm_output","transform_tool_result","transform_terminal_output"],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"","state":"open","pr":153872,"prs":[{"n":153872,"state":"open","created":"2026-11-11T20:13:38Z"}],"created":"2026-11-11T20:13:38Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"barehand","title":"Barehand","summary":"Lets an agent operate a machine with no OS, network or agent on it (firmware menus, boot loaders, installers, rescue shells such as grub>) through the screen and keyboard alone. It provides a computer_use provider for QEMU virtual machines over QMP (or a VNC console), a barehand_machine tool, a hermes barehand CLI, a skill and a flight recorder. `hermes barehand up` starts local qemu processes that keep running after Hermes exits until `hermes barehand down`; no API key reaches them and the plugin makes no network calls. In recorded runs a model installed Debian 13 from the network installer (it repaired a grub> prompt on first boot from the installer's rescue mode) and Ubuntu Server 26.04 (it finished the stalled installer by hand) on blank aarch64 machines. `hermes barehand demo` replays a bundled recording. Evidence and the full disclosure are in the README and docs/results.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"mrv777","author":"mrv777","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/mrv777/barehand","docs":"https://github.com/mrv777/barehand/blob/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/README.md","tools":["barehand_machine"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"With `plugins.isolation: host`, Hermes skips register_cli_command, so the `hermes barehand ...` commands are unavailable. The default mode (`in_process`) registers them. The plugin was not run in host mode, so whether the barehand_machine tool and the computer_use provider load there is unverified. Use the default.; Only QEMU guests on an Apple Silicon Mac were run. The Linux KVM and Intel Mac paths are covered by unit tests only.; The VNC transport (transport: vnc) was tested only against QEMU's own VNC server. No KVM-over-IP hardware, BMC, PiKVM or other hypervisor was tested. VNC is not encrypted and has no snapshot, reset, eject or power control.; One model per machine, because QEMU serves one QMP client. Typing is US-layout ASCII. Windows hosts are unsupported.; Screen text was measured under QEMU on Alpine 3.24, Debian 13.7 and Ubuntu Server 26.04.1. Their GRUB menus are text consoles and read without calibration. Fedora and other distros are untested.; Calibration is per console font: run calibrate_text at a shell on the same console as the screens to read.; Debian-installer dialogs and graphical installers return no text. Screens dominated by non-ASCII are partly readable, with unreadable cells marked by a replacement character. Box drawing reads as a shade glyph on the Linux console. aarch64 UEFI shell text reading is unverified.; A slowly changing screen (period near 0.8 s) can be reported as a confirmed change.; You supply QEMU, UEFI firmware (edk2/OVMF) and the ISO; Barehand installs and downloads nothing. The model must receive tool-result images.; Every key, type and click is a Hermes approval prompt; grant a session scope for long runs. Unattended (cron or gateway) use needs approvals granted beforehand.; QEMU receives an environment allowlist (PATH, HOME, TMPDIR, LANG, LC_* and similar), never Hermes' environment. The guest has QEMU user-mode networking. QMP is unauthenticated: a unix socket in a 0700 directory by default, loopback TCP as a fallback, non-loopback only with allow_remote. The optional VNC transport is unencrypted (weak DES password, keystrokes in clear), contacts only the configured host, and needs allow_remote for a non-loopback host.; The flight recorder is on by default: screenshots and key chords under the plugin data dir (mode 0600). Typed text is off by default (length only). `record: false` disables the recorder and `hermes barehand recordings purge --yes` deletes recordings.; One pre_tool_call hook only escalates reset, power_off, eject_media, send_ctrl_alt_del, snapshot_load and snapshot_delete to Hermes' approval prompt. status, snapshot_list, snapshot_save, calibrate_text (types the 94 printable ASCII characters at a Linux prompt) and wait_for_text do not ask.","state":"open","pr":153871,"prs":[{"n":153871,"state":"open","created":"2026-11-11T20:13:03Z"}],"created":"2026-11-11T20:13:03Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/banner.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/walk-1-firmware.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/walk-2-grub.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/walk-3-screen-text.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/walk-4-proof.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/flight-recorder.png","https://raw.githubusercontent.com/mrv777/barehand/7e62bc9419afbe70f175de0515abca3ede66dd38/barehand/docs/img/debian-installed-login.png"],"videos":[],"x":["https://x.com/MrV_777/status/2120613485893619899"],"youtube":[],"thumb":"/hackathon/thumbs/barehand.webp"},{"name":"hermes-ledger","title":"Hermes Ledger","summary":"Tamper-evident flight recorder: every tool call (arguments redacted), a SHA-256 of every result, and every approval decision are appended to a local hash-chained, Ed25519-signed log. `hermes ledger verify` walks the chain and names the first edited, deleted, reordered or truncated entry; `hermes ledger show` prints a timeline; `hermes ledger export --receipt` writes a signed receipt of one session that anyone can check with only the public key (records from other sessions appear as content-free stubs), with `hermes ledger verify-receipt` or the bundled standalone verify_receipt.py. An approval record binds to the exact call it approved. Adds a /ledger slash command, a Ledger dashboard tab with a chain-intact badge, and the skill hermes-ledger:ledger-audit. It proves the log was not changed after writing, not that the agent was honest when it wrote it (threat model in the README).","disclosure":"five observer hooks (pre_tool_call, post_tool_call, post_approval_response, on_session_start, on_session_end) see every tool call's name, arguments and result and every approval prompt; arguments are redacted by pattern (sensitive key names, bearer/sk- and other token shapes, PEM keys, NAME=value secrets) before writing, which is best effort; results are hashed, never stored; writes only under plugin-data/hermes-ledger/ (ledger.jsonl, ledger.head, an Ed25519 private key at mode 0600 that is never printed, and its public key); the log is never pruned; observer only, never blocks, approves, denies or changes a call; no network, no credentials read, no background processes, no shell commands.","category":"tools","platforms":[],"maintainer":"elyga408-oss","author":"elyga408-oss","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/elyga408-oss/hermes-ledger","docs":"https://github.com/elyga408-oss/hermes-ledger#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","post_approval_response","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153870,"prs":[{"n":153870,"state":"open","created":"2026-11-11T20:12:53Z"}],"created":"2026-11-11T20:12:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/GZenith47738/status/2120621385429213351"],"youtube":[],"thumb":null},{"name":"agssh","title":"agssh","summary":"SSH hosts as first-class agent tools. Register your hosts once, then the model calls agssh / agssh-read / agssh-find / agssh-hosts instead of assembling `ssh -i key user@host 'quoted string'`. Commands travel as one byte-exact argv element, the tool returns the real remote exit code (never a `| tail` status), output is capped with a full-text spill file, and every call multiplexes over one persistent ControlMaster connection per host so rapid agent calls never exhaust sshd MaxStartups. Dangerous commands go through Hermes' own approval gate, and a pre_tool_call hook blocks raw terminal ssh to registered hosts so exit codes and the audit log cannot be bypassed.","disclosure":"executes shell commands on the user's own remote machines with their existing SSH keys and remote privileges, reads ~/.ssh for keys and config, and appends an audit log of executed commands. No pty and no background jobs: interactive prompts fail fast rather than hang. No network service, no telemetry, no third-party host.","category":"tools","platforms":["linux","macos"],"maintainer":"mosesman831","author":"mosesman831","version":"1.1.0","requires_hermes":"","repo":"https://github.com/mosesman831/agssh","docs":"https://github.com/mosesman831/agssh#readme","tools":["agssh","agssh-read","agssh-find","agssh-hosts"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153869,"prs":[{"n":153869,"state":"open","created":"2026-11-11T20:11:58Z"}],"created":"2026-11-11T20:11:58Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"goneby","title":"GoneBy","summary":"Retroactive project memory for LLM agents. Captures every turn into an encrypted per-project write-ahead log (zero tokens during work), then at project close walks the log backward from the shipped product — the oracle — keeping only entries that verifiably contributed; survivors are embedded (MRL-truncated) and stored in Valkey or Qdrant for semantic search in later sessions. General plugin: coexists with any memory provider instead of replacing it.","disclosure":"","category":"memory","platforms":["linux","macos"],"maintainer":"rahlquist","author":"rahlquist","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/rahlquist/goneby","docs":"https://github.com/rahlquist/goneby/blob/main/docs/OVERVIEW.md","tools":["wall_append","wall_read","walk_backward","store_memory","query_memory","goneby_status","goneby_project"],"hooks":["pre_llm_call","post_compaction"],"middleware":[],"env":["GONEBY_ENCRYPTION_KEY"],"known_issues":"","state":"open","pr":153868,"prs":[{"n":153868,"state":"open","created":"2026-11-11T20:10:16Z"}],"created":"2026-11-11T20:10:16Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/rahlquist/goneby/c7cc997ee7fde0629daf0ddf79cd65093b6e98b6/docs/gallery/banner.jpg","https://raw.githubusercontent.com/rahlquist/goneby/c7cc997ee7fde0629daf0ddf79cd65093b6e98b6/docs/gallery/screenshot-tape.png","https://raw.githubusercontent.com/rahlquist/goneby/c7cc997ee7fde0629daf0ddf79cd65093b6e98b6/docs/gallery/screenshot-verification.png","https://raw.githubusercontent.com/rahlquist/goneby/c7cc997ee7fde0629daf0ddf79cd65093b6e98b6/docs/gallery/screenshot-retrieve.png","https://raw.githubusercontent.com/rahlquist/goneby/c7cc997ee7fde0629daf0ddf79cd65093b6e98b6/docs/gallery/screenshot-endcard.png"],"videos":["https://github.com/rahlquist/goneby/releases/download/v1.0.0/goneby-explainer.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/goneby.webp"},{"name":"whos-listening","title":"Who's Listening?","summary":"Memory that knows who's listening. Each memory is Private or Shared. Private memories go into a request only when the machine running Hermes (the gateway), the app you chat in (the platform) and the model provider are all trusted. By default, the gateway you install it on is trusted unless it's a hosted Hermes such as Hermes Cloud; the trusted platforms are the terminal and Hermes Desktop, including its Webapp; and the trusted model routes are Venice's private models and models on your own machine or local network. Everything else gets Shared memories only. You can configure all of these options in the plugin's settings: trusting either more or fewer gateways, platforms or model providers.","disclosure":"memories stay in $HERMES_HOME/whos-listening/. With a Venice key in Hermes, a duplicate check sends each new memory and up to 20 others, Private ones included, to Venice's private Clef model (duplicate_judge off keeps it local). Shared memories sync to your GitHub repository only if you set that up.","category":"memory","platforms":[],"maintainer":"Web3B-eth","author":"Web3B-eth","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Web3B-eth/whos-listening","docs":"https://github.com/Web3B-eth/whos-listening/blob/a498dd769c4196d0e911b713d4ad7363c8154ba1/README.md","tools":[],"hooks":["pre_llm_call","post_tool_call"],"middleware":["llm_request"],"env":[],"known_issues":"Hermes runs plugin middleware only on main chat requests. Compression, the tool-limit summary, mixture-of-agents and side calls skip the guard; see README Limits.; The first turn after a gateway starts carries Shared memories only, and Venice models count as Shared until Venice's model list has loaded on a new gateway.; Subagents and scheduled jobs count as Shared, so they never see Private memories.; Auto-review needs the default in-process plugin mode; under plugins.isolation host, held saves wait for the user.; For /memories to work from the first message, also run `hermes plugins enable whos-listening` (for a memory provider, install --enable only sets memory.provider).; If a model calls a memory tool through tool_call, Hermes answers that it's not a known tool name; the plugin tells models to call its tools directly.","state":"open","pr":153867,"prs":[{"n":153867,"state":"open","created":"2026-11-11T20:09:34Z"}],"created":"2026-11-11T20:09:34Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"delivery-shelf","title":"Delivery Shelf","summary":"Save delivered files together, preserve versions, and find finished work again in Hermes.","disclosure":"","category":"desktop","platforms":[],"maintainer":"mechkw","author":"mechkw","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/mechkw/hermes-delivery-shelf","docs":"https://github.com/mechkw/hermes-delivery-shelf/blob/8510a9a81bae33da1bc232e828a02834bdfe11a4/docs/USAGE.md","tools":["delivery_shelf_register","delivery_shelf_search","delivery_shelf_update","delivery_shelf_offer_update","delivery_shelf_respond_update"],"hooks":["on_session_reset","on_session_delete","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Contest candidate, not full product qualification. Installed Always-for-this-delivery and final delayed purge acceptance remain unrun.; Automatic Add can fail closed on isolated hosts without caller-cancellation support; use manual Add and explicit Save.; On the pinned v0.22.5 test host, Telegram plugin reload can require rebuilding the native client.; Install scan is caution; private session accessor and SDK-markup selector coupling remain disclosed for maintainer review.","state":"open","pr":154012,"prs":[{"n":154012,"state":"open","created":"2026-11-11T21:31:02Z"},{"n":153864,"state":"closed","created":"2026-11-11T20:05:39Z"}],"created":"2026-11-11T20:05:39Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/8510a9a81bae33da1bc232e828a02834bdfe11a4/docs/assets/hero.webp","https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/8510a9a81bae33da1bc232e828a02834bdfe11a4/docs/assets/dark-together.png","https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/8510a9a81bae33da1bc232e828a02834bdfe11a4/docs/assets/dark-library.png","https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/e9cbbf3193020ad4a1345636f46ea7bdd2c0b4aa/docs/assets/hero.webp","https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/e9cbbf3193020ad4a1345636f46ea7bdd2c0b4aa/docs/assets/dark-together.png","https://raw.githubusercontent.com/mechkw/hermes-delivery-shelf/e9cbbf3193020ad4a1345636f46ea7bdd2c0b4aa/docs/assets/dark-library.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/delivery-shelf.webp"},{"name":"common-ground","title":"Common Ground","summary":"Durable collaboration records, mutual contributions and evidence-backed commitments.","disclosure":"","category":"tools","platforms":[],"maintainer":"knownquantity","author":"knownquantity","version":"0.1.0","requires_hermes":">=0.23.1,<0.24","repo":"https://github.com/knownquantity/common-ground","docs":null,"tools":["common_ground_capture","common_ground_update","common_ground_query","common_ground_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"Applying proposals relies on conversational user approval, not an independently authenticated approval gate.; Model extraction requires review; guided live tests needed corrections to inferred actions and discrepancy handling.","state":"open","pr":153863,"prs":[{"n":153863,"state":"open","created":"2026-11-11T20:04:22Z"}],"created":"2026-11-11T20:04:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"toolrecall-light","title":"toolrecall-light","summary":"Deduplicates byte-identical repeated tool results inside Hermes Agent: repeats of terminal, search_files, MCP, web and connector output are saved to a local SQLite table and replaced by a one-line stub before they enter model context, with a recall_result tool that restores the original bytes on demand. Fail-open, stdlib only, no core patches.","disclosure":"stores original bytes in Hermes's plugin storage (<HERMES_HOME>/plugin-data/toolrecall-light/data.db, SQLite WAL); no network calls, no credentials, no shell commands, no background processes.","category":"memory","platforms":[],"maintainer":"whiskybeer","author":"whiskybeer","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/whiskybeer/toolrecall-light","docs":"https://github.com/whiskybeer/toolrecall-light#readme","tools":["recall_result"],"hooks":["transform_tool_result","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153862,"prs":[{"n":153862,"state":"open","created":"2026-11-11T20:04:17Z"}],"created":"2026-11-11T20:04:17Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"summon","title":"Summon","summary":"Your own @grok on X that learns: tag your bot under any post and your Hermes answers in the thread; say \"learn this\" under a how-to thread or video and it saves it as a skill that waits for your approval. A gateway platform for X that only reads posts from its owner, by user ID. Judges: hermes gateway setup, choose X, \"Borrow @taybotfyi\" with invite code judge-hermes; no bot account needed.","disclosure":"polls the X API every 20 s while the gateway runs (the owner's posts that tag the bot, thread reads, replies); on the free trial those X calls go through the author's relay at summon.taylor.fyi (Cloudflare Worker, source in relay/), which holds the bot's X OAuth tokens and stores a hash of the trial key, both handles and user IDs, and reply and read counts (no post text, error logs only); with your own X app the four keys are saved to Hermes's .env through Hermes; with consent, setup sets platform_toolsets.summon to [safe, video, skills] and turns on skills.write_approval for all of Hermes; videos in a thread go to Hermes's configured video model through video_analyze; replies are public posts on X; on the borrow path the relay posts as the author's bot under the user's posts only, after Cloudflare Workers AI (Llama Guard) reads the reply.","category":"platform","platforms":[],"maintainer":"gtmcknight","author":"gtmcknight","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/gtmcknight/hermes-summon","docs":"https://summon.taylor.fyi","tools":[],"hooks":[],"middleware":[],"env":["X_BOT_OWNER"],"known_issues":"","state":"open","pr":153861,"prs":[{"n":153861,"state":"open","created":"2026-11-11T20:04:06Z"}],"created":"2026-11-11T20:04:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/gtmcknight/hermes-summon/ccfc8c4163fa736785b4f0cd7322742f39c6d435/docs/banner.png","https://raw.githubusercontent.com/gtmcknight/hermes-summon/ccfc8c4163fa736785b4f0cd7322742f39c6d435/docs/01-check.jpg","https://raw.githubusercontent.com/gtmcknight/hermes-summon/ccfc8c4163fa736785b4f0cd7322742f39c6d435/docs/02-find.jpg","https://raw.githubusercontent.com/gtmcknight/hermes-summon/ccfc8c4163fa736785b4f0cd7322742f39c6d435/docs/03-learn.jpg","https://raw.githubusercontent.com/gtmcknight/hermes-summon/ccfc8c4163fa736785b4f0cd7322742f39c6d435/docs/04-approve.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/summon.webp"},{"name":"session-cassettes","title":"Session Cassettes","summary":"Record one good session's read-only tool results as a cassette, pin the facts a good answer must contain, then replay the same request against another model, prompt or skill: tool_execution middleware answers every tool call of the replayed turn from the recording (exact hit, or a search/slice of a snapshot of the workspace files the session's results named; anything else gets a cassette-miss error) and never calls the real tool; the verdict is PASS, FAIL, DIVERGED or INVALID from the pins, with no judge model.","disclosure":"cassettes are plain JSON in the plugin data folder and hold the request, the answer and the full results of recorded tools (file contents, search hits, web search results and extracts, skill text, session-search results, output of a fixed list of read-only terminal commands) plus the redacted text of workspace files those results named; at the end of a recorded turn the plugin reads those files from the session's working directory (hidden paths and secret-looking names such as key files, credentials, auth.json and token.json skipped by file name, Hermes's redact_sensitive_text applied to the rest, which does nothing if the user has switched Hermes's redaction off); `hermes cassette run` starts two `hermes chat -Q` children (argument list, no shell, no -z, no --yolo, HERMES_YOLO_MODE removed from the child, run refused when the gateway's environment has HERMES_YOLO_MODE set at ping time, which is not Hermes's own startup yolo flag; the child's output is held in two temporary files in the system temp folder until the child exits) and the replay's model call goes to whatever model/provider the user names, so a cloud model is sent the request and the recorded results; if no session claims the replay its turn runs live with real tools under the user's own approval settings and is graded INVALID afterwards; the middleware sees every session's tool calls and passes unbound sessions through, keeping only an in-memory count of them so a late claim can be marked INVALID; the pre_llm_call and post_llm_call hooks are called for every turn of every session with the message and the answer, and keep nothing for a session the plugin has not bound; it registers the /cassette slash command and the `hermes cassette` CLI command; no network calls of its own, no telemetry, no self-update, no third-party dependencies.","category":"tools","platforms":[],"maintainer":"eightyFJ","author":"eightyFJ","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/eightyFJ/session-cassettes","docs":null,"tools":[],"hooks":["pre_llm_call","post_llm_call"],"middleware":["tool_execution"],"env":[],"known_issues":"Tested only on native Windows 11 with Hermes 0.23.1 and local Ollama models; macOS, Linux and cloud providers are untested.; plugins.isolation: host is untested, and by the Hermes source the hermes cassette CLI is not registered in that mode, so replay would not work there.; A replay whose arm no session claims runs live with real tools and is graded INVALID only after it ends; a ping before each run refuses the common causes.; The replay's model call is real: with a cloud model, the request and the recorded tool results go to that provider.; Recording was tested through hermes chat -Q; recording from the desktop app or an interactive session is untested. Do not record through hermes -z, which auto-approves.; Replays are not deterministic: a model can go outside the recording and come up DIVERGED.; Through the current replay child, only the model has been varied. A skill under test must be preloaded with --skill, because skill_view and skills_list are answered from the recording. A prompt change has not been run.; Unmatched searches are answered by a Python re search of the snapshot, an approximation of ripgrep.","state":"open","pr":153854,"prs":[{"n":153854,"state":"open","created":"2026-11-11T19:55:00Z"}],"created":"2026-11-11T19:55:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"keryx","title":"Keryx","summary":"Outbound phone calls from your own phone. Hermes writes a brief and calls place_call; after you approve (every call, single use), your phone dials over Bluetooth hands-free through PipeWire's telephony API, the plugin plays an AI-disclosure line, and a realtime voice model (OpenAI Realtime or GPT-Live) holds the conversation, asking you mid-call when it needs a decision. The outcome, details and transcript go back to Hermes; /calls lists recent calls. Guardrails in code: emergency, short-code and premium numbers blocked, quiet hours, hourly rate limit, hard 5-minute cap. Linux only (PipeWire >= 1.4, a paired phone).","disclosure":"places real calls on the user's SIM; call audio streams to OpenAI (wss://api.openai.com realtime or live sessions) plus OpenAI TTS for the disclosure line and, for GPT-Live, one Responses request per call; runs busctl, pw-dump, pw-record, pw-play, pw-link, pw-cli and espeak-ng; audio processes and two temporary virtual PipeWire nodes exist only during an approved call; stores a call log (and recordings only if `record: true`) under plugin-data/keryx; reads OPENAI_API_KEY through Hermes secrets only.","category":"voice","platforms":["linux"],"maintainer":"hsyvy","author":"hsyvy","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/hsyvy/keryx","docs":"https://github.com/hsyvy/keryx#readme","tools":["place_call"],"hooks":["pre_tool_call","agent_loop_stopped"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153853,"prs":[{"n":153853,"state":"open","created":"2026-11-11T19:54:49Z"}],"created":"2026-11-11T19:54:49Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/hsyvy/keryx/6c5cd7fc468a314eef0b524a29b1f12c68c0e569/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/keryx.webp"},{"name":"templeos","title":"TempleOS for Hermes","summary":"TempleOS for Hermes: run a TempleOS-family OS in a local QEMU VM and share one live screen with the Hermes agent, which can see, type, click and write HolyC. The default guest is Temple of Hermes 0.1.2; TinkerOS 5.20-rc10, stock TempleOS 5.03 and ZealOS are optional. Four tools: templeos_vm (start, stop, reset, snapshot, restore and doctor the VM), templeos_screen (PNG look, serial or on-screen text, wait for idle, frame hash, operator lore), templeos_input (type, keys, click, move, HolyC) and templeos_files (list, pull and push files over COM1). The Hermes Desktop pane shows the same screen in Watch, Shared or Take control mode; when you take control, agent input pauses until you hand back. The pane's animated Terry companion is on by default and can be hidden or turned off. Bundled skill: templeos:templeos-operator. It is for TempleOS and HolyC enthusiasts, retro-OS tinkering, and watching an agent work a real 640×480 OS beside you. To start, on Linux x86_64 with Hermes 0.23.0 or newer, install QEMU (for example sudo apt install qemu-system-x86 qemu-utils), then run hermes plugins install templeos --enable and hermes plugins doctor templeos; doctor fetches the default ISO from its official release and checks its SHA-256. Open the TempleOS pane and ask Hermes to start the VM and print a HolyC hello world. KVM is used when /dev/kvm can be opened (usually the kvm group), otherwise TCG.","disclosure":"spawns qemu-system-x86_64 as a child (KVM only when /dev/kvm can be opened, otherwise TCG) with a minimal non-secret child environment and keeps that QEMU process running in the background; may fetch a pinned ISO from its official HTTPS URL (SHA-256 verified, connection-pinned, no proxy); injects keys and HolyC over QMP/serial; transfers files over a framed COM1 protocol; and stores disks and ISOs under plugin data. Networking is always off (-nic none). QEMU and ISOs are not bundled. This is a child hypervisor, not an OS sandbox. Disclosure — an optional Temple of Hermes HBBS/1 / chat bridge is off by default; the destination is the allow-list name bbs and the TLS endpoint comes from host config, never from guest text (loopback or private LAN allowed only because the operator set them; metadata and link-local are refused). The optional TEMPLEOS_CHAT_BRIDGE_TOKEN is read only through Hermes secret scope. Disclosure — observer hooks animate the Terry companion from session events; they return None and do not approve, modify, or log other tools. The Desktop pane uses ctx.rest only. Terry is an original fan tribute with no official TempleOS affiliation.","category":"desktop","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/hermes-templeos","docs":"https://github.com/mojomast/hermes-templeos#readme","tools":["templeos_vm","templeos_screen","templeos_input","templeos_files"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_stream_start","on_stream_delta","on_stream_end","api_request_error","pre_approval_request","post_approval_response","on_human_input_request","on_human_input_resolved","on_session_start","on_session_end","agent_loop_stopped","subagent_start","subagent_stop"],"middleware":[],"env":["TEMPLEOS_CHAT_BRIDGE_TOKEN"],"known_issues":"FAT floppy push is experimental; bake-off did not see hot-added FAT12 as A: on TinkerOS live CD.; Primary host is Linux x86_64. Apple Silicon and Windows are untested.; Temple of Hermes 0.1.2 is the default flavor, pinned to the official GitHub release ISO; TinkerOS, TempleOS 5.03, and ZealOS remain optional. No ISO is bundled.","state":"open","pr":153852,"prs":[{"n":153852,"state":"open","created":"2026-11-11T19:53:46Z"}],"created":"2026-11-11T19:53:46Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-1920x1240.png","https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-typing.png","https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-narrow.png","https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-agent-log.png","https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-user-driving.png","https://raw.githubusercontent.com/mojomast/hermes-templeos/c61d00eb4d36c5e3c7cd57a2985985aed8db42f0/docs/images/pane-onboarding.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/templeos.webp"},{"name":"foreman","title":"Foreman","summary":"A green check the agent did not rig. A deterministic gate (no model, standard library and git) blocks git commit, git push and gh pr create when the change skips, deletes or moves tests, weakens what the check runs, bypasses hooks or carries a secret, and always blocks an agent-run gh pr merge; an optional second model reviews what rules cannot see, such as a loosened assertion. /foreman shows each pull request with a verdict and merges only on your command; a Desktop panel shows where each change is.","disclosure":"runs read-only git in your repository; runs the GitHub CLI only on /foreman commands (merge and reject write to GitHub after your confirmation) and model calls only on /foreman commands or, with auto_review: finish, inside the agent's turn; notifications are off until you turn them on; no telemetry, no credentials, no network calls of its own. Full disclosure in the README.","category":"automation","platforms":[],"maintainer":"PedValme","author":"PedValme","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/PedValme/foreman","docs":"https://github.com/PedValme/foreman/blob/main/plugin/README.md","tools":["foreman_check","foreman_review"],"hooks":["pre_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153851,"prs":[{"n":153851,"state":"open","created":"2026-11-11T19:53:42Z"}],"created":"2026-11-11T19:53:42Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/docs/screenshots/panel-real-app.png","https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/docs/screenshots/panel-several-changes-light.png","https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/docs/screenshots/panel-bounced-dark.png","https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/docs/screenshots/panel-narrow-360-dark.png","https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/docs/screenshots/panel-waiting-for-owner-light.png"],"videos":[],"x":["https://x.com/PedValme/status/2120610382024970591"],"youtube":[],"thumb":"/hackathon/thumbs/foreman.webp"},{"name":"fine-print","title":"Fine Print","summary":"Shows where Hermes silently shrinks, cuts, swaps or hides what the model sees. When a turn ends in which a limit bit and no follow-up by the model was seen, the user gets one card with before/after numbers and the fix (a `hermes config set` command, a workaround, or \"hardcoded in v0.23.0\"): a web page cut to head and tail, an image downscaled 4x or more, a search page that stopped at 50 with no \"more\" flag, a failed search backend swapped for the keyless tier, a file read whose lines were all cut at 2,000 chars, terminal output of which under half was kept, a tool result replaced by a 1,500-char preview, a context compaction, loaded images that the request no longer carries, an attached image that reached the model as a helper model's description, a pinned context window that is not in force, a sixth URL that web_extract never requested, a workbook read up to row 5,000 with its hidden sheet skipped. The model gets one short note inside the tool result only where Hermes itself tells nobody. `/limits` shows the session's hits, explains 81 catalogued limits of v0.23.0 (`/limits explain <id>`), replays the same detectors and card policy over your own history (`/limits report`, or `/limits report html` for one self-contained page) and lists every detector with its status (`/limits self-test`): 16 are verified (on real history, or in a live session for limits that leave no stored row) and may raise cards, 19 are fixture-only and only log.","disclosure":"no LLM calls, no network, no Python dependencies, no tools, no middleware. Reads tool results in memory through hooks (failed calls included) and, by structure and size only, each request's message lists and the user message of a turn (image parts, Hermes's own placeholder and image notes); keeps a metadata-only ledger (sizes, counts, a URL host or file basename, hashes) in its plugin-data directory. Adds one `_fine_print` key or first line to a tool result for limits where core tells nobody (never on failed calls, images, write_file, patch or skill_manage; `/limits notes off`), and a section of under 1,000 chars to the system prompt of new sessions (`/limits sheet off`). Reads outside its own data, read-only: the profile's session database for `/limits report` (aggregates only; the FINE_PRINT_STATE_DB variable can name another copy), the .xlsx/.docx file that read_file just extracted (to count rows, sheets and tables), and the Hermes config. Writes one file only when asked (`/limits report html`, into the profile's cache folder). Posts one notice per turn into the chat in the CLI and the TUI (in Desktop 0.23.0 the notice call was refused in my check; there the hits are listed by `/limits`); off on messaging platforms by default.","category":"tools","platforms":[],"maintainer":"Joko-F","author":"Joko-F","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Joko-F/hermes-fine-print","docs":"https://github.com/Joko-F/hermes-fine-print#readme","tools":[],"hooks":["transform_tool_result","post_llm_call","on_session_end","pre_llm_call","pre_api_request","api_request_error","post_api_request","post_auxiliary_call","post_compaction","subagent_start","on_session_delete"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153844,"prs":[{"n":153844,"state":"open","created":"2026-11-11T19:51:46Z"}],"created":"2026-11-11T19:51:46Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Joko-F/hermes-fine-print/7b574f1b5c8dc8eafe3ea9f87ae6b0111853f0ba/docs/card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/fine-print.webp"},{"name":"vitrail","title":"Vitrail","summary":"Live GLSL shaders in the chat. Ask for a visual and the model writes a Shadertoy-style fragment shader that animates inside the reply in Hermes Desktop, with the sliders, colour pickers and switches it declared as annotated uniforms. Before vitrail_render returns, the Desktop half compiles the shader with WebGL 2 on the user's GPU and reports the verdict, so a compile error goes back to the model with the driver log and the model fixes it in the same turn; a still frame comes back too, for models with a vision tool. The card is drawn through a tool media renderer where Desktop has one and through a ::vitrail transcript directive where it does not (Desktop 0.22.5). Other surfaces (Telegram, CLI, TUI) get a standalone HTML player of the same shader. Adds a gallery page with hover-to-play tiles, GLSL copy and 1920x1080 PNG export, the vitrail_render and vitrail_library tools, the vitrail:shader-studio skill, and post_tool_call / transform_llm_output hooks that append the shader's delivery line (MEDIA file or directive) when a reply lacks it.","disclosure":"no network calls, no shell commands, no credentials, no telemetry; GLSL written by the model runs on the user's GPU through WebGL 2 in the Desktop window; files are written only under plugin-data/vitrail (per shader: source, standalone HTML player, GPU report, a 640x360 JPEG still, exported PNGs); the still's path is given to the model, which may open it with its vision tool; while a Desktop window is open its half calls the plugin's own local route once a minute so the tool knows a GPU is listening and which transcript surface it has, and vitrail_render then waits up to 6 s for the verdict.","category":"desktop","platforms":[],"maintainer":"elomkdn","author":"elomkdn","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/elomkdn/vitrail","docs":"https://github.com/elomkdn/vitrail#readme","tools":["vitrail_render","vitrail_library"],"hooks":["post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"The live card needs Hermes Desktop 0.22.5 or later with the plugin's Desktop switch on in Capabilities → Plugins (it is off by default); other surfaces get the standalone HTML player.; On a Desktop without tool media renderers the card is drawn from a ::vitrail directive; a messaging platform that shares the chat while that Desktop is open shows the directive as a line of text.; GPU verification needs a Desktop window connected to the Hermes that runs the agent; without one the shader is saved unverified and compiles when it is shown.; Shaders are single-pass and procedural: no textures, buffers or audio inputs.","state":"open","pr":153842,"prs":[{"n":153842,"state":"open","created":"2026-11-11T19:51:21Z"}],"created":"2026-11-11T19:51:21Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/banner.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/desktop-chat.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/desktop-gallery.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/desktop-library.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/vitrail.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/lagoon.jpg","https://raw.githubusercontent.com/elomkdn/vitrail/b8b4dc851a14fe2b566648beb30d7a484b6cf6f7/assets/lumignon.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vitrail.webp"},{"name":"last-price","title":"Last Price","summary":"Lets Hermes haggle with buyers in chat while the plugin, not the model, owns every price that leaves. You set an item's floor from your terminal; it stays in plugin state and never reaches a model, tool result, prompt or log. Every deal reply is held and checked, and one offering less is rewritten before anyone sees it; a buyer who offers or accepts a price the plugin would take is closed at their own number; deal sessions can use only Last Price's three tools (plus Hermes's tool-search bridge, whose calls are checked the same way). Includes hermes lastprice duel --vs-prompt, a side-by-side against a seller with the floor in its prompt (inside Hermes, in the 48-duel bench of version 0.1.1: that seller sold below the floor in 10 of 48 duels; Last Price in 0), and hermes lastprice challenge, a public 'buy it below my floor' Telegram challenge.","disclosure":"buyer messages and Hermes's draft replies go to your model provider, as in any Hermes chat; a rewrite of a too-low draft goes to the same model (it sees the buyer's message, the draft and the current counter, never the floor). In a duel or bench, the buyer model (your own model, or the one you name with --buyer) receives the buyer's instruction and the whole conversation so far, the seller's replies included. duel and bench start hermes chat child processes in your terminal (no --yolo; with --ignore-rules and --source tool, so your own rules and memory stay out and the duel sessions stay out of your session list): the Last Price seller gets Last Price's three tools only; the stock seller gets Hermes's todo toolset plus every plugin toolset your profile turns on by default, and its system prompt carries the duel item's floor, which by default is a demo item's throwaway floor, never one of yours unless you pass --item <id> --real-item. Hermes saves that prompt with the stock session in state.db; each duel deletes its stock session when it ends (hermes sessions delete), and the stock seller's replies stay in Hermes's 7-day deletion tombstones and in Last Price's duel records (and the deleted bytes in state.db's free pages until hermes sessions optimize). hermes chat starts Hermes's background gateway when none is running; a duel or bench that started it stops it when it ends. challenge start changes six Hermes settings through hermes config set (Telegram open access, a Last-Price-only Telegram toolset, owner-only slash commands) after saving their earlier values, and challenge end restores all six. Floors are stored as plain JSON in plugin state: hidden from the model in deal sessions, readable on your machine by you and by any agent you give file tools to. No payment provider is called in 0.1.x, no telemetry.","category":"tools","platforms":[],"maintainer":"iamdflame","author":"iamdflame","version":"0.1.3","requires_hermes":">=0.23.1","repo":"https://github.com/iamdflame/last-price","docs":"https://github.com/iamdflame/last-price#readme","tools":["lastprice_items","lastprice_offer","lastprice_extra"],"hooks":["pre_llm_call","pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Pay links are placeholders in 0.1.x (no payment provider is called).; Telegram and WhatsApp deal chats (hermes lastprice shop on <platform>) and the Telegram challenge (hermes lastprice challenge) are unit-tested; no live messaging run yet, so the live runs so far are terminal duels and benches.","state":"open","pr":153858,"prs":[{"n":153858,"state":"open","created":"2026-11-11T19:58:01Z"},{"n":153839,"state":"open","created":"2026-11-11T19:51:00Z"}],"created":"2026-11-11T19:51:00Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/assets/card.png","https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/docs/screenshots/duel.png","https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/docs/screenshots/report.png","https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/docs/screenshots/doctor.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/last-price.webp"},{"name":"antemuse","title":"Antemuse","summary":"The agent takes a walk, daydreams, dreams, doomscrolls, or gets unstuck: a bounded change to how it works, with a dose rather than a duration. Walks step through WordNet, dreams recombine FrameNet roles, daydreams draw on stored memories, doomscrolls on live feeds. No model calls on the state path.","disclosure":"","category":"general","platforms":["linux","macos","windows"],"maintainer":"roosiq","author":"roosiq","version":"0.10.41","requires_hermes":">=0.21.6","repo":"https://github.com/roosiq/antemuse-plugin","docs":"https://github.com/roosiq/antemuse-plugin#readme","tools":["state"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","transform_llm_output","on_session_end","on_session_finalize","on_session_reset","on_session_delete"],"middleware":[],"env":[],"known_issues":"The picture is the desktop app's Antemuse pane only. Chat carries no visualization and a terminal gets the same text record; there is no terminal takeover since 0.10.30.; Windows: the installer and runtime are pure Python and the suite passes on Linux; there is no Windows-specific path, so the pane is expected to work but is unverified there.; The exploration library (spark, keep, collider, selection) is present but runtime-gated behind experimental.enabled and makes no quality claim.","state":"open","pr":153840,"prs":[{"n":153840,"state":"open","created":"2026-11-11T19:51:12Z"},{"n":153838,"state":"closed","created":"2026-11-11T19:50:33Z"}],"created":"2026-11-11T19:50:33Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/roosiq/antemuse-plugin/14c108864220debb727e011bbc92ab77eda56485/docs/screenshots/banner.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/14c108864220debb727e011bbc92ab77eda56485/docs/screenshots/pane-walk.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/14c108864220debb727e011bbc92ab77eda56485/docs/screenshots/return-account.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/14c108864220debb727e011bbc92ab77eda56485/docs/screenshots/blocked-tool.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/3fb8d6b285b57bd1ae1584882cfd0ac51c92a6ca/docs/screenshots/banner.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/3fb8d6b285b57bd1ae1584882cfd0ac51c92a6ca/docs/screenshots/pane-walk.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/3fb8d6b285b57bd1ae1584882cfd0ac51c92a6ca/docs/screenshots/return-account.png","https://raw.githubusercontent.com/roosiq/antemuse-plugin/3fb8d6b285b57bd1ae1584882cfd0ac51c92a6ca/docs/screenshots/blocked-tool.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/antemuse.webp"},{"name":"pulse-rings","title":"Pulsr","summary":"Live numbers beside your chat: a Pulses pane for Hermes Desktop with rings, bars, numbers and trends from Discord servers, GitHub, feeds, public JSON APIs, read-only MCP tools, Windows notifications and Hermes's own activity. The agent drafts a pulse; only a person can approve it, and the approval card lists every host and the hourly request budget. No model tokens to refresh. Network: GETs to discord.com, cdn.discordapp.com, api.github.com, avatars.githubusercontent.com and HTTPS hosts you approve; the builder's Find sends one query to geocoding-api.open-meteo.com or store.steampowered.com. Notification pulses read counts from the local Windows store; sender and text previews are a separate opt-in. No telemetry; background collection is opt-in.","disclosure":"","category":"desktop","platforms":[],"maintainer":"Stormxftw","author":"Stormxftw","version":"0.5.0-dev","requires_hermes":">=0.22.7","repo":"https://github.com/Stormxftw/Pulsr","docs":"https://github.com/Stormxftw/Pulsr#readme","tools":["pulse_rings_status","pulse_rings_catalog","pulse_rings_propose","pulse_rings_layout_check"],"hooks":["on_session_start","on_session_finalize","post_llm_call","pre_llm_call","on_session_end","post_tool_call","on_human_input_request","on_human_input_resolved","subagent_start","subagent_stop","api_request_error"],"middleware":[],"env":[],"known_issues":"Background collection is opt-in and needs a running Hermes process; alert toasts need a visible Desktop window.; MCP pulses need the server connected in the polling process; hosted Nous-gateway connectors are not supported.; Validator cautions - private MCP policy imports (read-only, fail closed; catalog rule 9) and three scanner pattern matches, explained in the README.; Windows notification pulses work on Windows only.; Not yet checked by an independent security review.","state":"open","pr":153837,"prs":[{"n":153837,"state":"open","created":"2026-11-11T19:48:51Z"}],"created":"2026-11-11T19:48:51Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/desktop-pane.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/pane-dark.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/notifications-dark.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/trend-dark.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/focus-dark.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/approval-dark.png","https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/docs/screens/builder-design-dark.png"],"videos":[],"x":["https://x.com/strugglehugs/status/2120603658668659010"],"youtube":[],"thumb":"/hackathon/thumbs/pulse-rings.webp"},{"name":"jobby","title":"Jobby","summary":"Source-backed international job discovery and PDF/DOCX application drafts inside Hermes; no autonomous submission.","disclosure":"","category":"desktop","platforms":["linux"],"maintainer":"desaianm","author":"desaianm","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/desaianm/jobby-hermes","docs":"https://github.com/desaianm/jobby-hermes/blob/3b8c62670c138078e85c839f08f24a6a81213254/README.md","tools":["jobby_initialize","jobby_intake","jobby_overview","jobby_prepare","jobby_review","jobby_attempt","jobby_discover"],"hooks":[],"middleware":[],"env":[],"known_issues":"One provider-supported country per search; live coverage outside the earlier Canadian example and independent LinkedIn success are unverified.; Screenshot and video show the earlier Canadian-example UI, not acceptance of the current international UI.; Documents require human review; native desk does not submit applications.; Packaged Desktop installer and full native race matrix remain unverified.; Full-source validation warns about an opt-in development qualifier's private PluginManager import; runtime entrypoints use public APIs.","state":"open","pr":153835,"prs":[{"n":153835,"state":"open","created":"2026-11-11T19:48:28Z"}],"created":"2026-11-11T19:48:28Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/desaianm/jobby-hermes/3b8c62670c138078e85c839f08f24a6a81213254/docs/images/jobby-desk.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/jobby.webp"},{"name":"listeningkit-log","title":"ListeningKit Log","summary":"Run X, Discord, Slack, Instagram and Reddit conversations from Hermes through the locally installed log MCP server: inspect inboxes and full threads, find conversations awaiting a reply, draft in the user's voice, and send only after approval. LinkedIn support is currently limited to a session-status check. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"starts the separately installed logMcp executable as a long-running stdio process; log makes network calls directly to the social platforms the user signed into and reads account sessions, cookies and message history from its own ~/.logCli data directory. Write tools can send replies, DMs and posts, and can like or follow as the user's account; the server is marked untrusted so Hermes asks for approval. The MCP tool set comes from the user's installed log version at runtime and is not covered by this plugin's pinned commit.","category":"tools","platforms":["windows"],"maintainer":"deepmroot","author":"deepmroot","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/deepmroot/listeningkit-log","docs":"https://github.com/deepmroot/listeningkit-log#readme","tools":[],"hooks":[],"middleware":[],"env":["LOG_ACCOUNTS"],"known_issues":"","state":"open","pr":153834,"prs":[{"n":153834,"state":"open","created":"2026-11-11T19:48:25Z"}],"created":"2026-11-11T19:48:25Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-screen","title":"Hermes Screen","summary":"Pick what to watch from your own Jellyfin library using real watch history, play movies and saved scenes on your Chromecast with receiver-verified status, send YouTube links to the TV, and play camera rock-paper-scissors against Hermes. Network calls: your Jellyfin server, your Chromecast (Cast protocol, TCP 8009), YouTube on the TV, www.gstatic.com (receiver SDK), your own optional game service, and optional YouTube Data API. Listeners: a temporary expiring movie relay while something plays, and an opt-in two-container game service you deploy yourself. No telemetry. Secrets only via Hermes; no .env reads. Camera frames never leave the phone.","disclosure":"","category":"tools","platforms":[],"maintainer":"Johaan Jis","author":"johaankjis","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/johaankjis/terebi","docs":null,"tools":["library_status","library_pick","tv_play","tv_pause","library_scene_find","library_scene_save","tv_scene_play","tv_game_start","tv_game_stop","tv_youtube_play","tv_youtube_pause","library_youtube_search"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153832,"prs":[{"n":153832,"state":"open","created":"2026-11-11T19:44:09Z"}],"created":"2026-11-11T19:44:09Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/johaankjis/terebi/ddee305d10946a894aedd6746edb5e0c8bbb25c0/docs/evidence/rps-aero/tv-reveal.png","https://raw.githubusercontent.com/johaankjis/terebi/ddee305d10946a894aedd6746edb5e0c8bbb25c0/docs/evidence/rps-aero/tv-ready.png","https://raw.githubusercontent.com/johaankjis/terebi/ddee305d10946a894aedd6746edb5e0c8bbb25c0/docs/evidence/rps-aero/phone-controller.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-screen.webp"},{"name":"signal-atlas","title":"Dive In","summary":"Turn a public source into a visual investigation with source-linked claims, charts, and follow-ups.","disclosure":"","category":"desktop","platforms":[],"maintainer":"RahmelJackson","author":"RahmelJackson","version":"0.26.1","requires_hermes":">=0.21.6","repo":"https://github.com/RahmelJackson/dive-in-hermes","docs":null,"tools":["signal_atlas_studio_action","signal_atlas_ingest","signal_atlas_demo","signal_atlas_evidence","signal_atlas_signals","signal_atlas_narrative","signal_atlas_conversation","signal_atlas_context","signal_atlas_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153830,"prs":[{"n":153830,"state":"open","created":"2026-11-11T19:43:43Z"}],"created":"2026-11-11T19:43:43Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/RahmelJackson/dive-in-hermes/d449239595f66b25974b4e8f4430781a4fd5cad5/docs/big-picture.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/signal-atlas.webp"},{"name":"dreaming","title":"Dreaming","summary":"Local memory provider (memory.provider: dreaming) after Anthropic's \"The components of agent memory\": every turn is kept as a transcript and the agent writes quick notes; an offline dream pass checks notes against the transcripts, resolves changes stated by reference (\"she handed everything over\", nicknames, \"what I said last time\"), and rewrites a linked wiki plus a short index loaded into every session. Tools via the memory provider: mem_search, mem_read, mem_write; CLI: hermes dreaming status|dream|search|show.","disclosure":"memory stays in <hermes_home>/dreaming/ as markdown, JSONL and a SQLite FTS5 cache; the plugin makes no network calls of its own, and the dream pass sends transcript excerpts and memory files to the user's configured model through ctx.llm; with auto_dream on (default) a pass runs in a background thread at session start. No credentials, no shell commands, no telemetry, no self-updating.","category":"memory","platforms":[],"maintainer":"hsyvy","author":"hsyvy","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/hsyvy/dreaming-memory","docs":"https://github.com/hsyvy/dreaming-memory/blob/72387f60c47ea741e32cae265aa1d24c02bd1c48/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153828,"prs":[{"n":153828,"state":"open","created":"2026-11-11T19:40:05Z"}],"created":"2026-11-11T19:40:05Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/hsyvy/dreaming-memory/72387f60c47ea741e32cae265aa1d24c02bd1c48/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dreaming.webp"},{"name":"googlehome","title":"Google Home","summary":"Google Home / Nest speaker as the mouth of a Hermes profile: replies are cast over the Cast v2 protocol with zero third-party dependencies, voice arrives from the host microphone through Hermes STT, and one speaker keeps one conversation. Adds googlehome_speak, googlehome_notify, googlehome_status, googlehome_volume and googlehome_devices, a Desktop page with push-to-talk and speaker controls, and hermes googlehome CLI commands.","disclosure":"talks to the speaker over the LAN (TLS 8009, mDNS), serves the spoken MP3 from an unauthenticated media server on a pinned port, runs a token-gated loopback control API that can start turns, and spawns PowerShell SAPI or edge-tts for speech.","category":"platform","platforms":[],"maintainer":"karmsheel","author":"karmsheel","version":"0.4.0","requires_hermes":">=0.21.5","repo":"https://github.com/karmsheel/google-home","docs":"https://github.com/karmsheel/google-home#readme","tools":["googlehome_speak","googlehome_notify","googlehome_status","googlehome_volume","googlehome_devices"],"hooks":["post_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"The speaker's own microphone cannot be used; voice input comes from the host machine's microphone through Hermes STT.; Casting takes the speaker over and interrupts whatever it is already playing.","state":"open","pr":153826,"prs":[{"n":153826,"state":"open","created":"2026-11-11T19:39:02Z"}],"created":"2026-11-11T19:39:02Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/karmsheel/google-home/b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f/assets/googlehome.jpg","https://raw.githubusercontent.com/karmsheel/google-home/b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f/docs/screenshots/01-bridge.png","https://raw.githubusercontent.com/karmsheel/google-home/b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f/docs/screenshots/02-controls.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/googlehome.webp"},{"name":"hermes-janus","title":"hermes-janus","summary":"Bi-directional temporal state engine & MVCC workspace for Hermes Agent. Zero-copy Content-Addressable Storage (CAS), Write-Ahead Logging (WAL), Merkle-DAG branching, instant rollback, Mark-and-Sweep GC, and tournament consensus.","disclosure":"","category":"tools","platforms":[],"maintainer":"Yonathan-T","author":"Yonathan-T","version":"1.0.0","requires_hermes":">=0.20.0","repo":"https://github.com/Yonathan-T/hermes-janus","docs":"https://github.com/Yonathan-T/hermes-janus#readme","tools":["janus_checkpoint","janus_rewind","janus_branch","janus_timeline","janus_diff","janus_merge","janus_gc","janus_elect"],"hooks":["pre_tool_call","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153824,"prs":[{"n":153824,"state":"open","created":"2026-11-11T19:37:12Z"}],"created":"2026-11-11T19:37:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lights-out","title":"lights-out","summary":"Nothing billable starts without your yes and its price: every AWS CLI create Hermes runs (EC2, EBS, Elastic IP, NAT gateway, ELBv2, RDS, S3) goes to Hermes's own approval gate from pre_tool_call with a dated us-east-1 price, a local ledger records what was created and how to delete it, and a receipt after the turn shows what is still running and its $/month; /lights out turns off everything not kept (asks first), /lights keep <id> <date> keeps one on purpose until a date, /lights check compares the ledger with the cloud; tools lights_status (read-only) and lights_keep (a proposal the user must approve).","disclosure":"runs only through Hermes's terminal tool and your own aws CLI and credentials: read-only describe/list calls for /lights check and once after a create whose output has no ID, and the shown delete commands for /lights out after you say yes; stores a JSON-lines ledger (resource IDs, sizes, prices, times, the creating command lines) in <HERMES_HOME>/plugin-data/lights-out/; one optional ctx.llm call per end-of-session receipt through your own provider (off with summary_sentence: false); never answers or bypasses approvals (YOLO / approvals off auto-approve as configured; cron and non-interactive runs block); no network of its own, no credentials read, no telemetry, no self-updater.","category":"tools","platforms":["linux"],"maintainer":"JannetEkka","author":"JannetEkka","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/JannetEkka/lights-out","docs":"https://github.com/JannetEkka/lights-out","tools":["lights_status","lights_keep"],"hooks":["pre_tool_call","post_tool_call","on_session_start","pre_llm_call","on_session_finalize","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153822,"prs":[{"n":153822,"state":"open","created":"2026-11-11T19:36:28Z"}],"created":"2026-11-11T19:36:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/JannetEkka/lights-out/9f12e5ebd5a80a12a8ea4d6d801c9c009ebea11c/demo/lights-out-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"learnloop","title":"learnloop","summary":"Structured lessons and practice inside Hermes, after LearnHarness: /learnloop:study probes what you know, plans a path and teaches it one graded check at a time; /learnloop:practice drills it with a hint ladder. What you learn becomes a knowledge graph you can explore and practise from.","disclosure":"","category":"desktop","platforms":[],"maintainer":"huss-wrld","author":"huss-wrld","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/huss-wrld/learnloop","docs":null,"tools":["learn_ask","learn_grade","learn_phase","learn_method","learn_record","learn_recall","learn_problem","learn_conclude"],"hooks":["pre_llm_call","pre_tool_call","transform_llm_output","on_session_delete"],"middleware":[],"env":[],"known_issues":"Teaching quality depends on the model: tested with Claude Opus 5.5 and DeepSeek V4.1 Flash.; The Desktop part has its own enable switch per profile (Capabilities, Plugins).","state":"open","pr":153821,"prs":[{"n":153821,"state":"open","created":"2026-11-11T19:36:11Z"}],"created":"2026-11-11T19:36:11Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/brand/banner.png","https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/screenshots/dock-verdict.png","https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/screenshots/lesson-reply.png","https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/screenshots/learn-map.png","https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/screenshots/practice-concluded.png","https://raw.githubusercontent.com/huss-wrld/learnloop/fdcf3d1acf95c7d4056dfe746347ca6b97e38c04/docs/screenshots/graph.png"],"videos":["https://github.com/user-attachments/assets/34ac5dcb-80a6-4360-abda-46c49cca6c48"],"x":["https://x.com/CcXd_/status/2120604212627210518"],"youtube":[],"thumb":"/hackathon/thumbs/learnloop.webp"},{"name":"mem-diffs","title":"MemDiffs","summary":"Make updates to memory, skills, and self-improvement reviews expand on-click to show the diff. Set display.memory_notifications to off if using this, or you'll see duplicate non-clickable notifications (config.yaml → display). Existing chats keep their old setting, so start a new chat afterwards.","disclosure":"","category":"memory","platforms":[],"maintainer":"daji-dev","author":"daji-dev","version":"0.7.1","requires_hermes":">=0.23.1","repo":"https://github.com/daji-dev/mem-diffs","docs":"https://github.com/daji-dev/mem-diffs","tools":[],"hooks":["pre_llm_call","transform_llm_output","on_session_delete"],"middleware":["tool_execution","llm_request"],"env":[],"known_issues":"","state":"open","pr":153820,"prs":[{"n":153820,"state":"open","created":"2026-11-11T19:35:56Z"}],"created":"2026-11-11T19:35:56Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/db6081ec-23dc-40bc-b1e5-753672141a10"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mem-diffs.webp"},{"name":"spawn-backrooms","title":"SPAWN Backrooms","summary":"Work SPAWN jobs with human-approved proposals, child commission drafts and verified file delivery.","disclosure":"","category":"tools","platforms":[],"maintainer":"Spawn-Backrooms","author":"verycuriousdev","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Spawn-Backrooms/hermes-spawn","docs":"https://github.com/Spawn-Backrooms/hermes-spawn#readme","tools":["spawn_status","spawn_jobs","spawn_job","spawn_assess","spawn_accept","spawn_progress","spawn_deliver_text","spawn_deliver_files","spawn_submit","spawn_abandon","spawn_earnings","spawn_create_backroom","spawn_declare_services","spawn_open_jobs","spawn_open_job","spawn_propose_job","spawn_job_proposal","spawn_find_backrooms","spawn_draft_child_commissions","spawn_get_child_commissions","spawn_deliver_game_package"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":["SPAWN_CLIENT_ID"],"known_issues":"","state":"open","pr":153886,"prs":[{"n":153886,"state":"open","created":"2026-11-11T20:22:01Z"},{"n":153810,"state":"closed","created":"2026-11-11T19:29:03Z"}],"created":"2026-11-11T19:29:03Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"living-spaces","title":"Living Spaces","summary":"An open canvas for your bots in Hermes Desktop. Ask in chat and your bot builds dashboards, trackers, mini-apps and visual pieces in a Spaces tab. Each Space keeps its data, and you change it by asking.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"akinduroifedayo","author":"akinduroifedayo","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/akinduroifedayo/living-spaces","docs":"https://github.com/akinduroifedayo/living-spaces/blob/e6145ccbd028edf55417822020426f4830343eb6/src/living-spaces/README.md","tools":["spaces_list","spaces_get","spaces_create","spaces_bind_maintainer","spaces_read_file","spaces_write_files","spaces_edit_file","spaces_query","spaces_write_records","spaces_read_logs","spaces_revisions","spaces_restore","spaces_refresh","spaces_schedule_upkeep","spaces_upkeep"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153809,"prs":[{"n":153809,"state":"open","created":"2026-11-11T19:26:16Z"}],"created":"2026-11-11T19:26:16Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/akinduroifedayo/living-spaces/e6145ccbd028edf55417822020426f4830343eb6/docs/design/premium-pass/regeneration/astra-run/shots/research-desktop-overview.png","https://raw.githubusercontent.com/akinduroifedayo/living-spaces/e6145ccbd028edf55417822020426f4830343eb6/docs/design/premium-pass/regeneration/astra-run/shots/sky-desktop-today.png","https://raw.githubusercontent.com/akinduroifedayo/living-spaces/e6145ccbd028edf55417822020426f4830343eb6/docs/design/premium-pass/regeneration/astra-run/shots/pair-desktop-progress.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/living-spaces.webp"},{"name":"pi-team","title":"pi-team","summary":"Coding lanes in the Hermes desktop — a project tree, each lane's task, diff, plan and thread, and a review queue agents act on.","disclosure":"","category":"other","platforms":["linux","macos"],"maintainer":"iliFalk","author":"iliFalk","version":"","requires_hermes":">=0.23.0","repo":"https://github.com/iliFalk/pi-team","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153808,"prs":[{"n":153808,"state":"open","created":"2026-11-11T19:24:27Z"}],"created":"2026-11-11T19:24:27Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mulligan","title":"Mulligan","summary":"Counterfactual replay for Hermes: record a run, rewind to any step, edit one tool decision, replay forward in a fresh child session, and diff the branch against the original. Replay-to-point reproduces the recorded steps with zero provider calls and zero tool side effects; the branch runs live with normal approvals. Uses llm_execution, tool_execution and tool_request middleware, pre/post_tool_call hooks and ctx.subagent_lifecycle.launch; stdlib only, no dependencies. Stores append-only JSONL traces (prompts, tool arguments and tool results) under $HERMES_HOME/replay-traces/.","disclosure":"traces are sensitive and persist until deleted; mg_play launches a child session whose live tail spends provider tokens; no network calls, no credential access, no shell execution, no self-update, and no approvals are bypassed or auto-answered.","category":"tools","platforms":[],"maintainer":"onyebuchidaniel60","author":"onyebuchidaniel60","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/onyebuchidaniel60/mulligan","docs":"https://github.com/onyebuchidaniel60/mulligan#readme","tools":["mg_list","mg_inspect","mg_rewind","mg_edit","mg_play","mg_diff"],"hooks":["pre_tool_call","post_tool_call"],"middleware":["llm_execution","tool_execution","tool_request"],"env":[],"known_issues":"","state":"open","pr":153805,"prs":[{"n":153805,"state":"open","created":"2026-11-11T19:20:37Z"}],"created":"2026-11-11T19:20:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"skilluminati","title":"Skilluminati","summary":"Your skills, judged blind: finds out whether each skill your Hermes agent loads makes its answers better. /skilluminati <skill> takes the latest 12 times you used the skill, each with the chat as it stood at that moment, and your model answers each one twice, once with the skill and once without. The Owl, a blind judge, sees both answers and the skill's one-line description of its job, never which answer had the skill, and sees every pair twice with the answers swapped; if it picks differently the second time, the pair counts as Same. Verdicts: Enlightened (answers are clearly better with it), Dead weight (the model does this anyway, it only costs tokens), Hindrance (answers are worse with it) or Unproven (too few uses to tell yet), each marked Probable or Plausible. Built-in question sets for frontend-design, systematic-debugging and hermes-agent let a fresh install run a test with no history, and /skilluminati selftest plants a helpful, a harmful and an empty skill to prove the Owl can tell them apart. Surfaces: the /skilluminati command, two read-only agent tools, a Desktop page with a sidebar entry (plugin SDK only) and a read-only dashboard backend.","disclosure":"opens HERMES_HOME/state.db read-only (never copied) and reads installed skill files and skills.disabled in config.yaml; blanks out emails, phone numbers, key-shaped strings, URLs carrying tokens, money amounts and names listed in HERMES_HOME/plugin-data/skilluminati/names.txt, then sends each task (the chat up to that point, including any tool output in it) and the skill text only to the active provider and model through ctx.llm on credentials Hermes holds; a test of one skill is up to 64 model calls on the user's own allowance, started only by the user in a local session, never under cron or a messaging gateway; runs one call at a time on a background thread inside Hermes; the verdict goes into a chat only when the user presses Show in chat; writes only under HERMES_HOME/plugin-data/skilluminati/; imports one private core helper (agent.skill_utils.get_all_skills_dirs) to list skill folders; never edits or deletes a skill; no telemetry, no other network calls, no shell commands, no stored credentials, no self-updater.","category":"tools","platforms":[],"maintainer":"yxssxn","author":"yxssxn","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/yxssxn/skilluminati","docs":"https://github.com/yxssxn/skilluminati/blob/0affc46618f62d9b497f177178acefb83f63dd02/README.md","tools":["skilluminati_estimate","skilluminati_result"],"hooks":[],"middleware":[],"env":[],"known_issues":"Each test is one fresh answer per task from the moment the skill loaded. Tools are not run again, so skills that mostly drive tools are judged on the answer text only.; The replay puts the skill into the chat directly, so it does not test whether your agent would have chosen to load it.; If the judge is the same model family as the one under test, it may favour answers like its own. The result names the model.; Every test spends your own provider allowance: up to 64 model calls for one skill. The frontend-design built-in set takes about an hour because every answer is a whole web page.; The Desktop page appears only after Capabilities -> Plugins -> Skilluminati is switched on in Hermes Desktop.; Lists skill folders through agent.skill_utils.get_all_skills_dirs, a private core helper (validator rule 9 warning); a future Hermes release may move it.","state":"open","pr":153804,"prs":[{"n":153804,"state":"open","created":"2026-11-11T19:19:47Z"}],"created":"2026-11-11T19:19:47Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/yxssxn/skilluminati/0affc46618f62d9b497f177178acefb83f63dd02/docs/img/banner.png","https://raw.githubusercontent.com/yxssxn/skilluminati/0affc46618f62d9b497f177178acefb83f63dd02/docs/img/page.png","https://raw.githubusercontent.com/yxssxn/skilluminati/0affc46618f62d9b497f177178acefb83f63dd02/docs/img/chat-result.png","https://raw.githubusercontent.com/yxssxn/skilluminati/0affc46618f62d9b497f177178acefb83f63dd02/docs/img/progress.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skilluminati.webp"},{"name":"leaveby","title":"leaveby","summary":"Gives Hermes a sense of distance: real travel times right now (Google Maps or TomTom), when to leave to arrive on time, whether a day of stops actually fits, drive times added automatically when a message mentions a saved place with a plan, and background 'leave now' alerts on your chat platform that cost no LLM tokens.","disclosure":"sends place search text and coordinates with your key to places.googleapis.com and routes.googleapis.com (Google) or api.tomtom.com (TomTom); stores saved places and watches in plugin-data/leaveby/data.db; the first watch writes HERMES_HOME/scripts/leaveby_check.py and creates one no-agent cron job (leaveby-watch, every 5 min) through Hermes's cron tool; keys are read via secret_scope and reach the cron script only if the user adds them to terminal.env_passthrough; standard library only, no telemetry.","category":"tools","platforms":[],"maintainer":"AloysJehwin","author":"AloysJehwin","version":"0.1.0","requires_hermes":"","repo":"https://github.com/AloysJehwin/hermes-leaveby","docs":"https://github.com/AloysJehwin/hermes-leaveby#readme","tools":["leaveby_place","leaveby_eta","leaveby_plan","leaveby_watch"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153802,"prs":[{"n":153802,"state":"open","created":"2026-11-11T19:17:32Z"}],"created":"2026-11-11T19:17:32Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"scopeledger","title":"ScopeLedger","summary":"Local-first billing-evidence reconciliation and owner-review reports for service agencies.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"221h0lmes","author":"221h0lmes","version":"0.3.7","requires_hermes":">=0.23.1","repo":"https://github.com/221h0lmes/scopeledger-hermes","docs":null,"tools":["scopeledger_projects","scopeledger_document","scopeledger_audit","scopeledger_draft"],"hooks":[],"middleware":[],"env":[],"known_issues":"Source records require manual preparation; original PDF/DOCX mappings require human review and certification.; PDF extraction uses local Poppler; scanned documents need an external OCR workflow.","state":"open","pr":153801,"prs":[{"n":153801,"state":"open","created":"2026-11-11T19:17:19Z"}],"created":"2026-11-11T19:17:19Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"aws-manager","title":"AWS Manager","summary":"Review, apply and verify EC2, Lambda and S3 actions in Hermes Desktop.","disclosure":"","category":"desktop","platforms":[],"maintainer":"ParichayMago","author":"ParichayMago","version":"0.5.0","requires_hermes":">=0.22.7","repo":"https://github.com/ParichayMago/hermes-aws-manager","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153800,"prs":[{"n":153800,"state":"open","created":"2026-11-11T19:17:15Z"}],"created":"2026-11-11T19:17:15Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ParichayMago/hermes-aws-manager/15f86da5cba690b6a077abc08b88e4e6c0ef9d2f/docs/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/aws-manager.webp"},{"name":"rom-studio","title":"ROM Studio","summary":"Make your own small game by talking with your agent, one scene at a time, from a decomp (the community-made source of an original handheld game) that you supply. A pane in the desktop app shows each change as a sentence with a picture from the running game, plus a play link, scenes, gallery, maps, music, dialogue, source search and the agent's questions. Ships a command-line kit the agent runs, a browser player with an always-on flash guard and the make-your-game skill; starts one local page on 127.0.0.1 once a game folder is set. No agent tools, hooks, middleware or env vars. Linux only.","disclosure":"","category":"desktop","platforms":["linux"],"maintainer":"erosika","author":"erosika","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/erosika/rom-studio","docs":"https://github.com/erosika/rom-studio/blob/98eac5b4eee155f7d8d11cbf17301452a501984e/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Not yet seen running inside the desktop app: the plugin passes hermes plugins validate and doctor and its halves were run outside a host, but the pane in the app, the feed event arriving and the skill loaded through the plugin are untested.; Linux only. macOS and Windows are not supported (the build scripts use Linux tools and the script compiler download is a Linux program); Windows through WSL has not been tried.; Needs bun, git and a toolchain for the game that you install yourself: make, python3 with Pillow, C and C++ compilers, flock, libpng with pkg-config, arm-none-eabi-gcc 14.2, cmake and a libmgba 0.10.5 you build once; ffmpeg for sound. kit status lists what is missing and how to get it.; You bring the decomp and, to make a patch, your own copy of the original game file. ROM Studio includes and fetches neither. The first build takes about 7 minutes and a game folder about 1 GB.; The optional base (calm changes inside the game, quick start, the test hook, the in-game agent entry) is patches for one version of one engine and is not shipped. Without it the flag, creature-gift and exact-text steps are unavailable, each new build plays through the original opening once, and the in-game agent link is absent. The player's flash guard is always on regardless.; The phone link of the player (kit play --phone) has not been tried on a real phone. The kit's MCP server has been tried over stdio by hand, not inside Hermes.; Setup's caches (headless emulator, script compiler, browser emulator) live inside the plugin folder; if an update removes them, run kit setup again.; A setting change needs a restart of Hermes. The kit does not read the plugin's settings: for a game folder other than the default, also set ROM_STUDIO_GAME where your agent's commands run.","state":"open","pr":153798,"prs":[{"n":153798,"state":"open","created":"2026-11-11T19:15:01Z"}],"created":"2026-11-11T19:15:01Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/erosika/rom-studio/98eac5b4eee155f7d8d11cbf17301452a501984e/docs/images/banner.png","https://raw.githubusercontent.com/erosika/rom-studio/98eac5b4eee155f7d8d11cbf17301452a501984e/docs/images/pane-now.png","https://raw.githubusercontent.com/erosika/rom-studio/98eac5b4eee155f7d8d11cbf17301452a501984e/docs/images/pane-gallery.png","https://raw.githubusercontent.com/erosika/rom-studio/98eac5b4eee155f7d8d11cbf17301452a501984e/docs/images/pane-scenes-phone.png","https://raw.githubusercontent.com/erosika/rom-studio/9876300b20388073dfbd142eecb28c35c1c8ee11/tour/01-host.jpg","https://raw.githubusercontent.com/erosika/rom-studio/9876300b20388073dfbd142eecb28c35c1c8ee11/tour/02-story.jpg","https://raw.githubusercontent.com/erosika/rom-studio/9876300b20388073dfbd142eecb28c35c1c8ee11/tour/07-source.jpg","https://raw.githubusercontent.com/erosika/rom-studio/9876300b20388073dfbd142eecb28c35c1c8ee11/tour/11-gallery.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rom-studio.webp"},{"name":"dioramic","title":"dioramic","summary":"A Blender scene director. The agent describes a scene as a structured JSON spec (toy-style shapes and 3D text, finishes, colours, three lighting rigs, camera moves, keyframed spin, bounce, float, pop-in, move and wobble) and dioramic renders it in headless Blender (EEVEE) as a vertical 9:16 MP4 plus a still preview, returned as MEDIA tags so the gateway delivers the clip. dioramic_tweak merges only the changes into an earlier scene and renders a new version.","disclosure":"runs the Blender binary you configure as a subprocess with a scrubbed environment (no API keys), a fixed build script that reads the spec as data (no model-written code), capped duration, samples and resolution, and a kill timeout; writes only to its profile-scoped plugin-data folder; no network calls.","category":"other","platforms":[],"maintainer":"faze39","author":"faze39","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/faze39/dioramic","docs":"https://github.com/faze39/dioramic","tools":["dioramic_render","dioramic_tweak"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153797,"prs":[{"n":153797,"state":"open","created":"2026-11-11T19:14:01Z"}],"created":"2026-11-11T19:14:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/faze_aze/status/2120608464783466744"],"youtube":[],"thumb":null},{"name":"thumbs-fix","title":"thumbs-fix","summary":"React with a thumbs-down to a bad Hermes reply on Telegram and it names the skill behind it, asks one question, shows a proposed edit as a diff, and changes the skill only after you approve.","disclosure":"registers pre_gateway_dispatch (records private-chat messages as turns and takes your one answer; never drops other messages), pre_llm_call (adds a short note after a repair is applied), post_tool_call (watches skill_view to log which skills a reply used) and gateway_platform_event (Telegram reactions). Stores turns, repairs and message ids in ctx.state, and one backup copy of SKILL.md per applied repair under plugin-data/thumbs-fix/backups. Edits a skill only after you approve a diff with a thumbs-up or /feedback approve, through skill_manage, and /feedback undo restores the backup. Makes one call per repair to your own configured model with ctx.llm.complete_structured; the prompt contains the skill text and your answer. No network requests of its own, no tools, no environment variables, no secrets, no processes.","category":"tools","platforms":[],"maintainer":"LikemDzokoto","author":"LikemDzokoto","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/LikemDzokoto/thumbs-fix","docs":"https://github.com/LikemDzokoto/thumbs-fix#readme","tools":[],"hooks":["pre_gateway_dispatch","pre_llm_call","post_tool_call","gateway_platform_event"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153796,"prs":[{"n":153796,"state":"open","created":"2026-11-11T19:11:50Z"}],"created":"2026-11-11T19:11:50Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":["https://github.com/user-attachments/assets/dfbdeed0-c78d-4326-91d2-868e180b41f8"],"x":[],"youtube":[],"thumb":null},{"name":"smriti","title":"smriti","summary":"Local personal memory with dated facts, scoped corrections, and source records you can retrieve from any compatible MCP client.","disclosure":"","category":"memory","platforms":["macos"],"maintainer":"vn-envy","author":"vn-envy","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/vn-envy/Smriti","docs":null,"tools":["remember","recall","search","facts_about","add_fact","stats"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153792,"prs":[{"n":153792,"state":"open","created":"2026-11-11T19:06:02Z"}],"created":"2026-11-11T19:06:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"twingraph-instagram","title":"twingraph-instagram","summary":"Autonomous Instagram Agent for Hermes Agent powered by TwinGraph and Meta Graph API v21.0 Digital Twin architecture. Provides 30-day analytics, reel retention curves, intelligent direct messaging with auto username-to-PK resolution, and zero-footprint ghost mode exploration.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"dalroot","author":"dalroot","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/dalroot/hermes-instagram-twin","docs":"https://github.com/dalroot/hermes-instagram-twin#readme","tools":["instagram_get_profile","instagram_get_posts","instagram_get_media_metrics","instagram_get_comments","instagram_search","instagram_audit_account","instagram_get_insights","instagram_get_inbox","instagram_send_message"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153790,"prs":[{"n":153790,"state":"closed","created":"2026-11-11T19:03:34Z"}],"created":"2026-11-11T19:03:34Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proveit-tests","title":"ProveIt Tests","summary":"Flags recognizable ways an agent weakens tests to reach green: removed or loosened asserts, skip/xfail/.only, deleted tests, expected literals rewritten to match failing output, assert True and tautologies, try/except pass wrappers, and test-runner escape hatches (pytest || true, -k \"not ...\", --deselect, --passWithNoTests, CI continue-on-error), and pytest config / conftest.py narrowing (addopts -k/-m/--deselect/--ignore, testpaths, collect_ignore, deselecting hooks). Net-new only: each edit is compared with the file as it was before, so pre-existing skips are not blamed on the edit. Deterministic AST + regex, no model calls. Modes: observe (default), escalate to the human-approval gate, or block on unattended/cron runs. SHA-256 receipts and a /proveit ledger. Python-strong; JS/TS coverage is heuristic and limited.","disclosure":"no network calls and no model calls. Reads edited test, CI, pytest-config and conftest.py files and tool arguments to compare before/after; appends warnings into tool results; may escalate or block tool calls when configured. Ledger is written only under the Hermes plugin data dir (in-memory if none); terminal findings keep a short, secret-redacted command excerpt locally. Not a sandbox and not unbypassable: an agent can still rewrite via shell, disable the plugin, or invent new weakenings. No findings is not proof that tests were preserved.","category":"tools","platforms":[],"maintainer":"KellerAI","author":"jonathan-kellerai","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/KellerAI/proveit-tests-hermes","docs":"https://github.com/KellerAI/proveit-tests-hermes#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","pre_verify","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153788,"prs":[{"n":153788,"state":"open","created":"2026-11-11T19:02:10Z"}],"created":"2026-11-11T19:02:10Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pilot","title":"Pilot","summary":"Give Hermes a real interactive terminal. Pilot runs commands inside a private tmux server, so the agent can drive programs that need a TTY — ssh logins, vim/nano, htop/btop, fzf, less, package installers, ncurses menus and REPLs — by typing literal text and named keys and reading the pane back as plain text, with sessions that persist across tool calls. A human can attach to the same pane at any time and take over.","disclosure":"starts a private tmux server (tmux -L hermes-pilot) as the local user and runs model-requested commands inside it; the captured terminal text, including anything a remote program prints, enters the model's context; no network calls of its own, no credentials stored, and it never touches the user's own tmux sessions.","category":"tools","platforms":["linux","macos"],"maintainer":"LangerSword","author":"LangerSword","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/LangerSword/hermes-pilot","docs":"https://github.com/LangerSword/hermes-pilot","tools":["pilot"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153787,"prs":[{"n":153787,"state":"open","created":"2026-11-11T18:58:45Z"}],"created":"2026-11-11T18:58:45Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-voice-gateway","title":"Hermes Voice Gateway","summary":"Answers Twilio phone calls with Hermes: caller speech is transcribed and Hermes' replies are spoken with ElevenLabs over a Pipecat pipeline. Callers get only two restricted tools (inventory search, enquiry save). Operator-approved callbacks are proposed by the agent and dialed only after a human runs /voice-callback approve.","disclosure":"runs a call server on 127.0.0.1:8081 (VOICE_WEBHOOK_HOST / VOICE_WEBHOOK_PORT) that a tunnel or reverse proxy must expose to Twilio; Twilio webhooks are signature-checked and callers must be on VOICE_ALLOWED_USERS, but caller ID can be spoofed, so treat the allowlist as a filter, not authentication. Call audio goes to ElevenLabs (speech-to-text and text-to-speech) and call metadata and callbacks go to the Twilio REST API; the optional local dev pipeline also uses OpenAI. Caller enquiries are stored as plaintext in the plugin's own SQLite file under HERMES_HOME.","category":"platform","platforms":[],"maintainer":"SRai22","author":"SRai22","version":"0.2.0","requires_hermes":"","repo":"https://github.com/SRai22/hermes-voice-gateway","docs":"https://github.com/SRai22/hermes-voice-gateway/blob/d91bf6723b44b598d87d170d5d1b30fef31f36a3/README.md","tools":["voice_propose_callback","voice_check_call_status","voice_start_local_pipeline","voice_search_inventory","voice_save_enquiry"],"hooks":["pre_tool_call"],"middleware":[],"env":["TWILIO_ACCOUNT_SID","TWILIO_AUTH_TOKEN","ELEVENLABS_API_KEY","VOICE_WEBHOOK_URL"],"known_issues":"Requires pipecat-ai 1.7.0 exactly (pinned) and uvicorn; the Hermes runtime must be able to install them.; Twilio WebSocket calls have basic call control only: no transfers or reconnects. Voicemail is not detected, and full barge-in is unverified.; Twilio call-status callbacks are not wired in, so a stored callback status stays answered after the call ends; use voice_check_call_status for live state.; Caller ID is unverified. Anyone Hermes lets run slash commands can approve callbacks, so restrict command access to your operators.; In-process gateway platform only; the caller-tool policy uses some non-public Hermes internals and must be re-verified on Hermes upgrades. The Hermes profile's Voice tool selection must be set to voice_caller only (see the README), otherwise calls fail closed.","state":"open","pr":153786,"prs":[{"n":153786,"state":"open","created":"2026-11-11T18:58:17Z"}],"created":"2026-11-11T18:58:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"charrette","title":"Charrette","summary":"A whiteboard beside the chat where the board is the message and the chat is its caption. You draw with a pen, a shape tool or a typed prompt; the agent reads the board the way it reads a document, answers on the same surface, and can point at one particular stroke to say what it means. It adds shapes, arrows, tables and charts, writes a label beside the thing it describes, puts a picture on the page, asks you a question with up to three options anchored to the object it is unsure about, and exports any region as an image to build an artifact from. Every object records who made it and which layer it sits on, so a drawing keeps its provenance and can be replayed: press replay and the board rebuilds itself stroke by stroke, camera following the pen, at 0.5x to 5x. Nothing here is a screenshot of a chat. The board is a document the agent and the human both write on, and the same document renders headlessly to a PNG for a report or a page.","disclosure":"runs a local web server, bound to 127.0.0.1:8196 by default, and prints a per-session token in the URL; setting CHARRETTE_BIND and CHARRETTE_PUBLIC_BASE serves it past loopback, where anyone holding that token controls the board. board_image sends the prompt or URL to the configured image provider. Boards and their chat logs are JSON on disk under the plugin data directory.","category":"desktop","platforms":[],"maintainer":"GuideboardLabs","author":"GuideboardLabs","version":"0.2.1","requires_hermes":">=0.22","repo":"https://github.com/GuideboardLabs/charrette","docs":"https://github.com/GuideboardLabs/charrette#readme","tools":["board_read","board_draw","board_edit","board_point","board_look","board_ask","board_image","board_stroke","board_capture","board_assets","board_scene"],"hooks":[],"middleware":[],"env":["CHARRETTE_PORT","CHARRETTE_BIND","CHARRETTE_PUBLIC_BASE","CHARRETTE_WEB_TOKEN"],"known_issues":"","state":"open","pr":153785,"prs":[{"n":153785,"state":"open","created":"2026-11-11T18:53:49Z"}],"created":"2026-11-11T18:53:49Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/GuideboardLabs/charrette/4e0c8df61c3a062bb59e839a9055bc0b4eb9276d/docs/media/banner.png","https://raw.githubusercontent.com/GuideboardLabs/charrette/4e0c8df61c3a062bb59e839a9055bc0b4eb9276d/docs/media/screens/01-board.png","https://raw.githubusercontent.com/GuideboardLabs/charrette/4e0c8df61c3a062bb59e839a9055bc0b4eb9276d/docs/media/screens/02-replay.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/charrette.webp"},{"name":"sarvam-provider","title":"sarvam-provider","summary":"Sarvam AI as a Hermes model provider (`--provider sarvam`): Sarvam-105B and the open models Sarvam hosts in India, with tool calls, JSON output and reasoning levels. Not affiliated with Sarvam AI.","disclosure":"registers one model provider at import and nothing else (no tools, hooks, commands or threads); chat requests go to https://api.sarvam.ai through Hermes's own client with SARVAM_API_KEY, which Hermes reads; the plugin itself opens no connections, reads and writes no files and starts no processes.","category":"models","platforms":[],"maintainer":"Subramanyarao11","author":"Subramanyarao11","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Subramanyarao11/hermes-sarvam","docs":"https://github.com/Subramanyarao11/hermes-sarvam","tools":[],"hooks":[],"middleware":[],"env":["SARVAM_API_KEY"],"known_issues":"","state":"open","pr":153782,"prs":[{"n":153782,"state":"open","created":"2026-11-11T18:52:30Z"}],"created":"2026-11-11T18:52:30Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wings","title":"Wings","summary":"A private WireGuard network between every Hermes you own and your phone. Two devices are enough: run setup on a computer, scan one code on the phone. Bots and sessions from all your machines in Desktop, the terminal and the Hermes app. Computers link directly when they can. No account, no coordination server, no third party.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"e-shizz","author":"e-shizz","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/e-shizz/wings","docs":"https://github.com/e-shizz/wings/tree/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/plugin#readme","tools":["wings_status","wings_revoke_device"],"hooks":[],"middleware":[],"env":[],"known_issues":"Asks for admin rights once per machine to install a root helper. Read plugin/root/wings-root.sh first.; Trusts a private certificate authority system-wide, limited to .wings names.; Devices connect to the computer you ran setup on (the hub). To reach a hub at home from outside, one UDP port must be forwarded on the router.; Computers link directly when their networks allow it and otherwise go through the hub. Phones always do.; Phones run one VPN at a time, so the Wings tunnel replaces any other while it is on.","state":"open","pr":153781,"prs":[{"n":153781,"state":"open","created":"2026-11-11T18:52:29Z"}],"created":"2026-11-11T18:52:29Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/e-shizz/wings/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/docs/card.png","https://raw.githubusercontent.com/e-shizz/wings/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/docs/shots/desktop.jpg","https://raw.githubusercontent.com/e-shizz/wings/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/docs/shots/terminal.jpg","https://raw.githubusercontent.com/e-shizz/wings/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/docs/shots/join.jpg","https://raw.githubusercontent.com/e-shizz/wings/0bed887bd06dd356995cabdfc4bdd5af5ac3dd98/docs/shots/phone.jpg"],"videos":[],"x":["https://x.com/E_Shiz/status/2120602196282941808"],"youtube":[],"thumb":"/hackathon/thumbs/wings.webp"},{"name":"sarvam","title":"sarvam","summary":"Sarvam AI for Hermes: speech-to-text (voice notes and live transcription in voice mode) and text-to-speech (Bulbul voices) for 22 Indian languages, plus six tools: sarvam_translate, sarvam_transliterate, sarvam_detect_language, sarvam_read_document (PDF/image OCR), sarvam_translate_document and sarvam_transcribe_recording (long audio with speaker labels). Not affiliated with Sarvam AI.","disclosure":"registers one transcription provider, one TTS provider and six tools (toolset \"sarvam\"), no hooks; requests go to https://api.sarvam.ai (and wss://api.sarvam.ai for live transcription) with SARVAM_API_KEY read through Hermes's secret store; document translation and long recordings upload the file to, and download results from, the signed https storage URL Sarvam returns for that job; sends audio Hermes asks to transcribe, text to speak, tool text, and files whose path the agent supplies; writes the requested audio file and translated document copies beside the original under a new name; one WebSocket only while live transcription runs; no stored state, shell commands, background processes or telemetry; every call is billed by Sarvam to the user's key.","category":"voice","platforms":[],"maintainer":"Subramanyarao11","author":"Subramanyarao11","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Subramanyarao11/hermes-sarvam","docs":"https://github.com/Subramanyarao11/hermes-sarvam","tools":["sarvam_translate","sarvam_transliterate","sarvam_detect_language","sarvam_read_document","sarvam_translate_document","sarvam_transcribe_recording"],"hooks":[],"middleware":[],"env":["SARVAM_API_KEY"],"known_issues":"","state":"open","pr":153780,"prs":[{"n":153780,"state":"open","created":"2026-11-11T18:52:26Z"}],"created":"2026-11-11T18:52:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"its-in-your-head","title":"its-in-your-head","summary":"It's in Your Head — observes how you work (tools, turns, friction) with local-only telemetry, a six-dimension perception engine, deterministic directional adaptation (opt-in, one bounded instruction per turn) and a 96px desktop signal strip with portrait/drift surfaces.","disclosure":"network: zero by default (Tier-0 sketch embeddings, stdlib-only). The optional local ONNX Tier-1 downloads an Apache-2.0 embedding model (onnx-community/paraphrase-multilingual-MiniLM-L12-v2-ONNX) from Hugging Face, pinned by revision and per-file sha256, into the user-data root; it runs in a Hermes-PM isolated environment (onnxruntime >=1.31.1,<1.32, CPU) as a persistent local worker subprocess with one auto-restart and transparent fallback to Tier-0. No other network calls. No credentials are stored, no external telemetry is sent, and raw prompts / reasoning are never stored (transient buffer, derived features only).","category":"desktop","platforms":[],"maintainer":"hi4c0ck","author":"hi4c0ck","version":"0.1.24","requires_hermes":">=0.23","repo":"https://github.com/hi4c0ck/its-in-your-head","docs":"https://github.com/hi4c0ck/its-in-your-head#readme","tools":[],"hooks":["pre_llm_call","post_api_request","api_request_error","pre_tool_call","post_tool_call","on_stream_delta","on_stream_end","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153779,"prs":[{"n":153779,"state":"open","created":"2026-11-11T18:51:28Z"}],"created":"2026-11-11T18:51:28Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/iyyh-banner.jpg","https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/iyyh-main-view.jpg","https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/shot-pulse-strip.png","https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/shot-workspace-pulse.png","https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/shot-workspace-portrait.png","https://raw.githubusercontent.com/hi4c0ck/its-in-your-head/b83e13f77b0c48195d546cb4ae12bd2c510d30dc/assets/shot-workspace-drift.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/its-in-your-head.webp"},{"name":"nerdit","title":"Nerdit","summary":"Hermes puts what it builds online on its own machine and keeps it alive. nerdit_ship deploys a folder to the local Nerdit engine (open source, Docker), waits until it is healthy and returns its URL, with the engine's diagnosis on failure. nerdit_share gives an app a hosted https URL, private by default and public only after the user confirms. A pre_llm_call hook tells the agent when one of its apps is failed, degraded or restarting, once per outage and with no model polling; /apps answers with the status of every app without a model call; the nerdit:watch automation blueprint checks the apps on a schedule, restarts what a restart fixes and reports. Two bundled skills (ship, rescue).","disclosure":"requires the Nerdit engine and Docker on the same machine. Each call starts the engine's own `nerdit mcp` process over stdio (fixed argv, no shell; the outage check at most once a minute) and acts with the rights of the user's nerdit CLI token, an admin token unless the user scopes it; the plugin never reads or stores that token. The engine zips and builds the folder the agent names. nerdit_call reaches every engine tool by name; a pre_tool_call hook sends deleting an app or its data, public sharing, domain binding and in-container commands to the human approval gate. The plugin makes no network call and has no telemetry; sharing an app outside the machine goes through the optional Nerdit Cloud account.","category":"tools","platforms":["linux","macos"],"maintainer":"Nerdit","author":"lwi00","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/nerdit-ai/nerdit-hermes","docs":"https://docs.nerdit.ai","tools":["nerdit_ship","nerdit_apps","nerdit_diagnose","nerdit_logs","nerdit_share","nerdit_call"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153778,"prs":[{"n":153778,"state":"open","created":"2026-11-11T18:50:39Z"}],"created":"2026-11-11T18:50:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"soloknuckle","title":"Soloknuckle","summary":"Deterministic local guardrails for Hermes and dev workflows. Three invocable tools—git-diff secret scanning, a destructive-command firewall, and a project health score—plus native Hermes surfaces: additive credential-redaction patterns, a soloknuckle:hygiene skill, hermes hygiene CLI, /hygiene, and a weekly hygiene-report blueprint. One rule set, same verdicts across CLI/hooks/MCP/Hermes. No hooks, no middleware, no prompt rewriting, no telemetry.","disclosure":"","category":"tools","platforms":[],"maintainer":"Soloknuckle Contributors","author":"z99wE","version":"5.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/z99wE/soloknucklefXrhermes","docs":"https://github.com/z99wE/soloknucklefXrhermes/blob/main/HERMES-INTEGRATION.md","tools":["soloknuckle.secrets","soloknuckle.intercept","soloknuckle.health"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153776,"prs":[{"n":153776,"state":"open","created":"2026-11-11T18:49:22Z"}],"created":"2026-11-11T18:49:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"autonoma","title":"autonoma","summary":"Earned autonomy: a trust score per kind of action (file edits, deletes, git push, network, messages, spending, system) that rises with clean work and falls on denials, corrections and failures. Below a class's threshold the call goes through Hermes's own approval prompt; at or above, it runs without asking. Catches the agent routing around a block (shell redirects, inline python/node code, `bash -c`), asks again for risky actions after the turn read outside content, revokes \"session\"/\"always\" grants after a correction, writes handoff notes from the tool log when a session ends unfinished, and adds a live dashboard tab.","disclosure":"stores tool names, action classes, hashed arguments, file paths, command verbs, host names and short error excerpts for every tool call locally in <HERMES_HOME>/plugin-data/autonoma/data.db (90-day retention, configurable); injects a handoff note into the first turn after an unfinished session and a progress list after compaction; can raise Hermes approval prompts for actions below their trust threshold or after outside content and, when hard_floor_enabled is on, block a class for a number of turns after a correction; the dashboard tab's local routes read the ledger and can reset, set or freeze scores; makes no network calls, no telemetry, reads no credentials or env vars; optional corrections_llm (off by default) sends the previous assistant message and current user message to the active model to confirm a correction.","category":"tools","platforms":[],"maintainer":"JoeisEvil","author":"JoeisEvil","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/JoeisEvil/autonoma","docs":"https://github.com/JoeisEvil/autonoma#readme","tools":["autonoma_status"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_session_start","on_session_end","on_session_reset","post_compaction","post_approval_response"],"middleware":[],"env":[],"known_issues":"trust-ladder also registers /trust; with both installed, use /autonoma trust for Autonoma's scores.","state":"open","pr":153777,"prs":[{"n":153777,"state":"open","created":"2026-11-11T18:49:22Z"}],"created":"2026-11-11T18:49:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/banner.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/dashboard.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/approval-prompt.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/workaround-caught.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/outside-content.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/handoff.jpg","https://raw.githubusercontent.com/JoeisEvil/autonoma/56653cced2b4431db3c08dc680ccb5e139b6f125/docs/live-session.jpg"],"videos":[],"x":["https://x.com/JoeEvilinc/status/2120597879429427692"],"youtube":[],"thumb":"/hackathon/thumbs/autonoma.webp"},{"name":"snap-action","title":"snap-action","summary":"Send your agent a screenshot and it becomes action — bookings, bills and deliveries are auto-filed to a persistent ledger with tappable, time-aware actions.","disclosure":"","category":"tools","platforms":[],"maintainer":"nini1294","author":"nini1294","version":"0.2.0","requires_hermes":"","repo":"https://github.com/nini1294/snap-action","docs":null,"tools":["snap_save","snap_list","snap_get","snap_update","snap_stats","snap_delete","snap_keyboard"],"hooks":[],"middleware":[],"env":[],"known_issues":"Telegram inline-keyboard taps and the auto-capture offer need gateway seams (photo hook + callback-handler registration) that are proposed upstream; without them snap_save/snap_list/snap_stats, /snaps and desktop text recall all work, but the Telegram buttons won't respond.","state":"open","pr":153774,"prs":[{"n":153774,"state":"open","created":"2026-11-11T18:47:16Z"}],"created":"2026-11-11T18:47:16Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/nini1294/snap-action/e04cae7d7e743e13d09e681fca500b6758d86ad2/docs/screenshots/travel-keyboard.jpg","https://raw.githubusercontent.com/nini1294/snap-action/e04cae7d7e743e13d09e681fca500b6758d86ad2/docs/screenshots/dinner-keyboard.jpg","https://raw.githubusercontent.com/nini1294/snap-action/e04cae7d7e743e13d09e681fca500b6758d86ad2/docs/screenshots/sale-keyboard.jpg","https://raw.githubusercontent.com/nini1294/snap-action/e04cae7d7e743e13d09e681fca500b6758d86ad2/docs/screenshots/desktop-capture.png","https://github.com/user-attachments/assets/e933fc31-1e1a-48e3-af5a-bfcbe5b2e99c","https://github.com/user-attachments/assets/d678215c-1960-418a-bfde-79c30a4daa7d","https://github.com/user-attachments/assets/a6306b22-b3f8-4686-85d2-1674f1458115"],"videos":[],"x":["https://x.com/nish1294/status/2120584848620548301"],"youtube":[],"thumb":"/hackathon/thumbs/snap-action.webp"},{"name":"hermes-tube","title":"HermesTube","summary":"Take back control of what you watch. HermesTube puts your YouTube subscriptions in Hermes Desktop: tabs you make by folder, tag, channel or topic, a folder pane, a channel manager with undo, folder suggestions from your Hermes model, topic tabs it builds from YouTube search, and videos in Hermes's own player. New and still experimental: a cleanup list you approve, /tube buttons on Telegram and scheduled routines.","disclosure":"the gateway fetches public www.youtube.com pages only (channel feeds and pages, uploads and Shorts playlists, video, /shorts and search pages, also in a background pass after refreshes), without login, and, for the favorites routine's Telegram message, one cover image per new video from i.ytimg.com; it connects to public addresses only and sends YouTube's anonymous consent cookie SOCS=CAI to YouTube hosts only; Desktop loads thumbnails and avatars from YouTube's image hosts and plays videos in Hermes's own embed. A separately installed Chrome extension, the only link to the YouTube account, unsubscribes only channels a person approved in Desktop or with the /tube cleanup buttons, and talks to a plugin server on 127.0.0.1 (ports 47615-47624) paired with a 6-digit code; the approve and pairing RPCs accept any client authenticated to the gateway. Organize, cleanup reasons and topic tabs send channel names and video titles to the user's model through ctx.llm, also from unattended blueprint jobs. After a button confirmation, /tube routines writes scripts to HERMES_HOME/scripts and creates cron jobs. The favorites routine sends each new video to Telegram by running hermes send with a fixed argument list; it reads cron/jobs.json read-only to find the chat and never reads the bot token. Only on a click in Desktop, Set up the extension copies the extension bundled in the plugin to a fixed HermesTube Extension folder in the home folder (refusing one it did not create) and opens the Extensions page of one Chromium browser (chosen from a closed list of those found in fixed install places; no profile is read) and the file manager with fixed argument lists and time limits; a second button only drafts a fixed help request in a new chat, which the person sends. Data in HERMES_HOME/plugin-data/hermes-tube; no shell commands, credentials or telemetry; the README lists the known limits. Formerly MyTube, by the same author; not affiliated with YouTube, Google or Nous Research.","category":"desktop","platforms":["macos","linux"],"maintainer":"pedroberaldo87","author":"pedroberaldo87","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/pedroberaldo87/hermes-tube","docs":"https://github.com/pedroberaldo87/hermes-tube/tree/main/plugin","tools":["tube_status","tube_feed","tube_channels","tube_add_channel","tube_organize","tube_cleanup_scan","tube_theme_create","tube_tab","tube_mark"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"The extension is not on the Chrome Web Store: the plugin ships it built and copies it to a folder, and the person turns on Developer mode and loads that folder (Load unpacked or drag and drop) in Chrome, Edge, Brave, Chromium, Vivaldi, Opera or Arc. Hermes and the browser must run on the same computer (with Hermes inside WSL on Windows, the folder goes to the Windows user folder and the Windows browser is used).; Reading subscriptions and unsubscribing depend on YouTube's page layout; on a mismatch the extension reports a failure and clicks nothing.; Run on macOS and, without a screen, on Debian 13 in a container. Windows (Hermes inside WSL 2, or installed natively) is covered by automated tests and a Linux container that imitates WSL, but has not yet run on a real Windows machine (Windows testers and pull requests are welcome); inside WSL the browser reaches the plugin through WSL's localhost forwarding (on by default), and natively the plugin does not hot-reload its code (restart Hermes after an update).; English and Brazilian Portuguese only. A few validation messages of the plugin's API may still be in Portuguese; routine and blueprint keys (bom-dia, favoritos, resumo-pasta, faxina-mensal, pasta-novos) are fixed Portuguese identifiers that show up in hermes cron list.; First version: reading subscriptions, unsubscribing through the extension and the youtube.com sidebar were run on a real signed-in YouTube account with the interface in Brazilian Portuguese and one to three subscriptions; /tube status, tabs, triage buttons, routine install and the morning digest were run on one real Telegram chat. The other four routine messages, /tube topic on Telegram, chat video cards, adding a channel by link, other interface languages and long subscription lists are covered by automated tests only.; The Home on youtube.com and the Extras are not part of this version; topic tabs are not re-searched on a schedule yet (refresh one by hand).; HermesTube does not use the official YouTube API: it reads public pages and clicks in the person's own browser. YouTube's Terms of Service may not allow this kind of automated access; use it at your own risk.","state":"open","pr":153769,"prs":[{"n":153769,"state":"open","created":"2026-11-11T18:43:16Z"}],"created":"2026-11-11T18:43:16Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/assets/hermes-tube.jpg","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/home.png","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/folder-pane.png","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/manage.png","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/cleanup.png","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/theme-tab-preview.png","https://raw.githubusercontent.com/pedroberaldo87/hermes-tube/4b33ae9bba78623569d63749dc791dd92afe8a0c/docs/screenshots/youtube-sidebar.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-tube.webp"},{"name":"hermes-hands","title":"Hermes Hands","summary":"Run Hermes terminal and file tools on a paired Windows or Linux computer while Hermes stays on a Linux or WSL gateway. The device agent connects out over HTTPS, signs with Ed25519 keys pinned at pairing, and fails closed when it is offline, revoked or unreachable. Optional witness mode is started by the person at the computer: local consent, every command shown on their screen before it runs, a consent question for each screenshot, a stop key, a 30 minute limit and signed receipts. In a witness session every tool call that reaches the device needs the helper's approval, and shell composition, scripts, common startup persistence and other tools are blocked.","disclosure":"runs shell commands and file operations on the device as its logged in user (not a sandbox); a compromised gateway or helper account can still command paired devices; the device agent is a separate Python package (hermes-hands), installed with pipx from this repository at the v0.2.0 tag, that keeps its private key in the OS keyring or an owner only file; command text, which can hold sensitive arguments, is kept in local receipts; screenshots are cached on the gateway and go to the configured vision model and chat platform; the checkup probes 1.1.1.1, 8.8.8.8 and 9.9.9.9 on port 443 and resolves example.com; optional H help puts device text into a user-role model turn; no telemetry.","category":"tools","platforms":["linux"],"maintainer":"Ridwan Nurudeen","author":"Ridwannurudeen","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/Ridwannurudeen/hermes-hands-plugin","docs":"https://github.com/Ridwannurudeen/hermes-hands-plugin/tree/7e078a50d3a09066aa3e95c3c1a86a9ec221996b/hermes-hands#readme","tools":["hands_screenshot","hands_devices","hands_checkup"],"hooks":["pre_tool_call"],"middleware":["tool_execution"],"env":[],"known_issues":"Tested on Hermes 0.23.0 only. Some Hermes internals are imported because no public seam exists yet; a later Hermes release can break them.; The gateway runs on Linux or WSL. Native Windows gateways and macOS devices are not supported.; Screenshots need a desktop session on the device; a headless Linux machine has no screen to capture. In witness mode each screenshot also needs the person's yes.; Witness mode needs an interactive terminal. It cannot run as a service or under pythonw.; In a witness session, yolo mode, approvals turned off, or any other pre_tool_call hook or tool_execution middleware blocks every device tool. Such hooks come from another plugin (bundled security-guidance and disk-cleanup register one), an allowed pre_tool_call shell hook under hooks in config.yaml, or a hooks.outbound webhook whose events include pre_tool_call. For the session, run hermes plugins disable <name>, or remove the pre_tool_call hook or webhook event (hermes hooks list shows them), and restart Hermes, or turn approvals back on.; Session and Always on a witness approval do not carry over to the next step. Always leaves an unused command_allowlist entry that the owner can delete.; An approval text longer than 300 characters is refused, not shortened. Short ~/ paths keep requests under the limit.; Device help text is quoted and capped at 200 characters but enters a user-role model turn, so it is a prompt-injection surface.; Common startup persistence (startup folders, autostart, LaunchAgents, shell profiles, cron, Run keys, scheduled tasks) is blocked only in witness sessions. Other logon methods, such as sc create, are not blocked and reach the helper's approval.; On Linux, a process that moves to a new session or process group can outlive a stop or revoke. If the small watcher process the agent starts for each job group has died or stalled for more than a second, a process started late by a background command can also outlive Stop. Windows scheduled task logon startup and Linux screenshots were not tested live.","state":"open","pr":153768,"prs":[{"n":153768,"state":"open","created":"2026-11-11T18:41:02Z"}],"created":"2026-11-11T18:41:02Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Ridwannurudeen/hermes-hands-plugin/7e078a50d3a09066aa3e95c3c1a86a9ec221996b/hermes-hands/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-hands.webp"},{"name":"hermes-ussd","title":"USSD & SMS (Africa's Talking)","summary":"Use Hermes from any phone, including feature phones with no internet: dial a USSD code for an instant menu, ask a question, get the agent's answer by SMS, and read long answers back page by page on USSD. Africa's Talking (Kenya, Uganda, Tanzania, Rwanda, Nigeria, Malawi and more). Closed by default (allowlist), phone users get the `safe` toolset, store-first at-most-once SMS outbox, daily SMS cap.","disclosure":"opens an HTTP listener on 127.0.0.1:8790 (loopback; the user exposes it through their own tunnel or reverse proxy); makes outbound HTTPS calls only to api.africastalking.com / api.sandbox.africastalking.com (SMS API); stores phone numbers and reply text in a 0600 SQLite file in Hermes plugin storage (7-day default retention, `hermes ussd purge`); runs an outbox worker and an hourly purge task inside the gateway process; Africa's Talking callbacks are unsigned so the secret URL path is the only authentication (rotate with `hermes ussd rotate-secret`); sending SMS costs money on the user's Africa's Talking account (daily cap on by default); no telemetry, no shell commands, no self-update, no binaries.","category":"platform","platforms":[],"maintainer":"Dixon-O","author":"Dixon-O","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/Dixon-O/hermes-ussd-plugin","docs":"https://github.com/Dixon-O/hermes-ussd-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":["AT_USERNAME","AT_API_KEY","AT_WEBHOOK_SECRET"],"known_issues":"Needs an Africa's Talking account. The free sandbox works for development; a live USSD code needs approval from Africa's Talking and the mobile operators.; Africa's Talking callbacks are unsigned; authenticity rests on the secret URL path.; One listener per Africa's Talking account and port (shared-ingress multiplexed profiles are not supported).","state":"open","pr":153766,"prs":[{"n":153766,"state":"open","created":"2026-11-11T18:38:58Z"}],"created":"2026-11-11T18:38:58Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/jmsonrich/status/2120585302523744356"],"youtube":[],"thumb":null},{"name":"hype","title":"Hype","summary":"An engine inside a plugin: /hype reads the session itself (no prompting) and turns what it built into a launch trailer (music only by default, narration opt-in); the product is the hero and the session's real diffs, terminal output, tests and stats are the proof, verbatim. Presets: 7 styles (launch, cinematic, pixel, terminal, blueprint, comic, ink), trailer, lore and speedrun films, 30-90 s, 16:9 and 9:16, each customizable by key=value knobs (colours, font, music, energy, voice, words, logo, language) or plain words after the style (one validated change set over the preset film, cached per job); a preset plus a restructuring ask goes to the Director. Free roam: a free-text direction without a preset runs the Director engine (treatment, film script, generated scene code that is linted and dry-run, a vision critic scoring keyframes against a rubric, revisions, final cut); smaller models take a compose path over proven blueprints with schema repair and measured checks (in our trials about one point below a frontier model on the critic's 10-point scale, at a fraction of the cost). Surfaces: /hype, tools hype_render and hype_status, hermes hype CLI, a Desktop studio (pane, page, palette, status chip, tool-media card) backed by dashboard routes. Renders locally with headless Chromium and ffmpeg; original procedural music and SFX; opt-in: Blender 4.2+ for 3D shots (\"blender\" / \"use blender\"); only when the user answers yes (hermes hype install-blender, the doctor's y/N question at a terminal, or the Desktop Install button) it downloads Blender 5.2.4 LTS from download.blender.org, verifies the pinned SHA-256 and installs it per-user without admin rights (never asked in CI, cron, gateway or chat).","disclosure":"reads the filmed session from state.db read-only (prompts, tool calls, terminal output, diffs, images; copies images into its job folder); opens HTML files and localhost/127.0.0.1 URLs the session produced in its own headless Chromium to screenshot the product (never starts servers, no public URLs) and reads media/3D files the session wrote; reads the tts and plugins.entries.hype sections of config.yaml read-only; sends a redacted session digest (secrets, emails, home paths; best effort, image pixels are not redacted) to the user's model via the plugin LLM API (auxiliary task hype), and Directed films make many such calls including keyframe contact-sheet images (15-30 min, a few US$ on a frontier model); only when the user asks for narration (films are music only by default) sends narration text to the user's Hermes TTS provider (Edge by default = Microsoft online); runs Chromium, ffmpeg and, only when asked, the user's own Blender as subprocesses with fixed arguments in background threads, and serves the job folder to its Chromium from a 127.0.0.1 server on a random port (render pages have no network); writes under plugin-data/hype and cache/generated/videos; dev harnesses in the package can call `hermes chat` but no plugin surface runs them; no telemetry, no self-updates, no other downloads, no credentials, no required env vars.","category":"tools","platforms":["windows","macos","linux"],"maintainer":"asdugit","author":"asdugit","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/asdugit/hermes-hype","docs":"https://github.com/asdugit/hermes-hype/blob/bc6869b65a480555e70e53464184efb5103033b1/README.md","tools":["hype_render","hype_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs Chromium and ffmpeg: Hermes-managed (`hermes pm install chromium` / `ffmpeg`) or installed; `hermes hype doctor` reports what it found.; Free-text (Directed) films make many model calls on your provider: about 15-30 minutes and a few US$ per film on a frontier model. Presets use a few calls.; Redaction covers text (secrets, emails, home paths); screenshots are shown as captured, so review the storyboard before posting.","state":"open","pr":153764,"prs":[{"n":153764,"state":"open","created":"2026-11-11T18:38:15Z"}],"created":"2026-11-11T18:38:15Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/asdugit/hermes-hype/bc6869b65a480555e70e53464184efb5103033b1/docs/media/banner.jpg","https://raw.githubusercontent.com/asdugit/hermes-hype/bc6869b65a480555e70e53464184efb5103033b1/docs/media/hero_styles.webp","https://raw.githubusercontent.com/asdugit/hermes-hype/bc6869b65a480555e70e53464184efb5103033b1/docs/screenshots/studio-make.png","https://raw.githubusercontent.com/asdugit/hermes-hype/bc6869b65a480555e70e53464184efb5103033b1/docs/screenshots/studio-director.png","https://raw.githubusercontent.com/asdugit/hermes-hype/bc6869b65a480555e70e53464184efb5103033b1/docs/screenshots/pane-live.png"],"videos":[],"x":["https://x.com/HonestWorker101/status/2120590321000292553"],"youtube":[],"thumb":"/hackathon/thumbs/hype.webp"},{"name":"flower-shop","title":"Flower Shop","summary":"An AI business operating workspace inside Hermes Desktop for a small flower shop: a business manager plus sales, inventory, production, finance, and logistics agents work from one SQLite record of orders, stock, production, deliveries, and money. Agents propose, the owner approves - order confirmation, stock receipts, adjustments, wastage, payments, and expenses create a pending approval decided from an inline chat card, the Approvals inbox, or an explicit chat relay. Includes Overview, Orders, Inventory and recipes, Production board, a read-only low-poly 3D Shop Floor fed by live production state, Delivery, Finance estimates labelled as estimates, an AI Team page, and a guided setup with removable demo data. The repo also ships an optional matching Hermes skin (a light and a dark variant) that the setup offers but never applies on its own. Not flower-specific: the same shape - one record of what was ordered, stocked, made, shipped and paid, agents that propose, an owner who approves - fits any small physical business.","disclosure":"all business data stays in one local SQLite database under the Hermes plugin-data directory; the plugin makes no network calls, stores no credentials, runs no shell commands, and sends no telemetry. Not an accounting ledger: finance figures are operational estimates plus recorded payments and expenses. Single shop, single user; no WhatsApp parsing, no bouquet canvas, no multi-branch support.","category":"desktop","platforms":[],"maintainer":"k-reeeee","author":"k-reeeee","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/k-reeeee/hermes-flower-shop","docs":"https://github.com/k-reeeee/hermes-flower-shop#readme","tools":["flowershop_team_playbook","flowershop_get_briefing","flowershop_get_business_profile","flowershop_update_business_profile","flowershop_get_onboarding","flowershop_answer_onboarding","flowershop_assess_fit","flowershop_recommend_team","flowershop_create_bot","flowershop_reset_onboarding","flowershop_get_theme","flowershop_choose_theme","flowershop_list_orders","flowershop_get_order","flowershop_create_order_draft","flowershop_update_order_draft","flowershop_check_availability","flowershop_estimate_order","flowershop_request_order_confirmation","flowershop_request_order_cancellation","flowershop_list_inventory","flowershop_get_inventory_item","flowershop_create_inventory_item","flowershop_propose_stock_receipt","flowershop_propose_stock_adjustment","flowershop_propose_wastage","flowershop_list_recipes","flowershop_create_recipe","flowershop_list_production_tasks","flowershop_update_production_status","flowershop_schedule_delivery","flowershop_update_delivery_status","flowershop_list_deliveries","flowershop_get_financial_summary","flowershop_propose_payment","flowershop_propose_expense","flowershop_list_approvals","flowershop_decide_approval","flowershop_attach_design_reference"],"hooks":[],"middleware":[],"env":[],"known_issues":"Finance figures are operational estimates plus recorded payments and expenses, not an accounting ledger.; Single shop and single user; no multi-branch or multi-staff access control.; WhatsApp intake relies on the existing Hermes gateway; no special parsing in the plugin.; The bouquet canvas is not implemented; design references are images attached to orders.","state":"open","pr":153762,"prs":[{"n":153762,"state":"open","created":"2026-11-11T18:35:25Z"}],"created":"2026-11-11T18:35:25Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/overview.png","https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/orders.png","https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/inventory.png","https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/production.png","https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/shop-floor-3d.png","https://raw.githubusercontent.com/k-reeeee/hermes-flower-shop/8eb1764d4434770c3bd031a4dc982560582f6d69/docs/screenshots/approval-card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flower-shop.webp"},{"name":"a11y-lens","title":"A11Y Lens","summary":"Autonomous website accessibility testing and repair verification. Scans pages in a real headless Chromium with the axe-core engine, stores evidence-backed scans, and compares before/after scans (resolved / remaining / newly introduced) so Hermes can prove its fixes in the rendered page.","disclosure":"launches a local headless Chromium (Playwright) in an isolated subprocess; network access is limited to loopback and origins a human authorises with `hermes a11y allow`; `hermes a11y install` downloads Playwright's Chromium from Playwright's official CDN on explicit user command; serves a user-supplied local .html folder on 127.0.0.1 for the duration of a scan; stores scan history and reports locally via plugin storage; never submits forms, collects credentials or sends data off-machine.","category":"web","platforms":[],"maintainer":"Johnlocke0347","author":"Johnlocke0347","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Johnlocke0347/a11y-lens","docs":"https://github.com/Johnlocke0347/a11y-lens/blob/9cf8cf3a7677661a938a0ee114b734e803fc33a7/README.md","tools":["a11y_scan","a11y_report","a11y_compare"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153760,"prs":[{"n":153760,"state":"open","created":"2026-11-11T18:34:17Z"}],"created":"2026-11-11T18:34:17Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Johnlocke0347/a11y-lens/9cf8cf3a7677661a938a0ee114b734e803fc33a7/docs/img/report-scan.png","https://raw.githubusercontent.com/Johnlocke0347/a11y-lens/9cf8cf3a7677661a938a0ee114b734e803fc33a7/docs/img/report-compare.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/a11y-lens.webp"},{"name":"hermes-cobrowse","title":"Hermes CoBrowse","summary":"Real-time multi-window spatial co-browsing canvas and interactive human-in-the-loop web automation for Hermes Agent and Desktop with CDP screencasting, 8-way window resizing, Inspector Studio telemetry, and 2FA handoff.","disclosure":"launches headless Chromium processes via Playwright and runs a local loopback HTTP/WebSocket server on 127.0.0.1:9876+; navigates to agent-supplied URLs and executes agent-supplied JS via cobrowse_eval_js; reads no local credentials or .env files and sends no external analytics.","category":"desktop","platforms":[],"maintainer":"sandman-sh","author":"sandman-sh","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/sandman-sh/Hermes-CoBrowse","docs":"https://github.com/sandman-sh/Hermes-CoBrowse#readme","tools":["cobrowse_open","cobrowse_navigate","cobrowse_get_state","cobrowse_click","cobrowse_type","cobrowse_request_handoff","cobrowse_scroll","cobrowse_eval_js","cobrowse_close"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153758,"prs":[{"n":153758,"state":"open","created":"2026-11-11T18:29:46Z"}],"created":"2026-11-11T18:29:46Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/sandman-sh/Hermes-CoBrowse/8fc9ba19031ba6820f59904c830c03deb6289cf7/assets/banner.jpg","https://raw.githubusercontent.com/sandman-sh/Hermes-CoBrowse/8fc9ba19031ba6820f59904c830c03deb6289cf7/docs/screenshots/spatial-multiwindow.png","https://raw.githubusercontent.com/sandman-sh/Hermes-CoBrowse/8fc9ba19031ba6820f59904c830c03deb6289cf7/docs/screenshots/2fa-handoff.png","https://raw.githubusercontent.com/sandman-sh/Hermes-CoBrowse/8fc9ba19031ba6820f59904c830c03deb6289cf7/docs/screenshots/inspector-dom.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-cobrowse.webp"},{"name":"photo-to-part","title":"Photo to Part","summary":"Photo to Part for Hermes: turn photos, a few measurements, or a messy 3D scan into a parametric printable part, and check the mesh locally before you print. The agent writes the solid in code, checks that it is watertight and the right size, and renders views you can hold next to the original. Six tools: photo_part_template (watertight starting shapes such as plates with holes, an L-bracket, a print-in-place hinge, thread, knurl, hex standoff, bottle cap, spur gear and strap hinge), photo_part_build (runs one local build script after Hermes approval), photo_part_validate (watertightness, shell count, size, bores, printability and spec.json dimension checks), photo_part_render (fitted views, a comparison sheet and a silhouette overlay scored against your photo), photo_part_heal (weld, fill holes and clean up a scan) and photo_part_measure (pixels per millimetre from a coin, a ruler or an ArUco/AprilTag marker). Output is STL or 3MF; a STEP solid needs CadQuery or build123d in the project environment. A millimetre value you state is never replaced by a photo measurement. Hermes Desktop 0.23 or newer can show an optional Part studio pane with the stage, photo and overlay, renders, history and file paths while a run is in progress; the six tools still install and run when that pane is unavailable. It is for makers replacing a broken clip, bracket, knob, cap or gear, printing a fit test, or turning a scan into a clean solid. To start, run hermes plugins install photo-to-part and enable it, then start a new session. Attach a photo with a coin or ruler in frame, give any dimensions you know, and ask for a printable replacement. The skill id is photo-to-part:photo-to-printable-part. Pass that exact string only to skill_view. Do not pass it to skills_list, and do not add a plugin: prefix or a slash.","disclosure":"files and network: tools read and write only the paths you pass (STL, 3MF, PNG, JSON). No credentials and no printer connection. Enabling the plugin installs its Python packages from PyPI after Hermes dependency consent. Installing CadQuery or build123d for a STEP solid downloads packages and can take several minutes. Chat photos still go to your model provider. Disclosure — build approval: photo_part_build asks for approval before it runs a local Python file with a timeout. Hermes --yolo auto-approves a build prompt; this plugin does not block that flag.","category":"tools","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.1.22","requires_hermes":"","repo":"https://github.com/mojomast/hermes-photo-to-part","docs":"https://github.com/mojomast/hermes-photo-to-part#readme","tools":["photo_part_validate","photo_part_render","photo_part_heal","photo_part_template","photo_part_measure","photo_part_build"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","pre_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153757,"prs":[{"n":153757,"state":"open","created":"2026-11-11T18:29:23Z"}],"created":"2026-11-11T18:29:23Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/docs/catalog-banner.png","https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/docs/research/pane-complete.png","https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/docs/research/pane-mid-run.png","https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/docs/screenshot-views.png","https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/examples/plate-clip/renders/compare_front.png","https://raw.githubusercontent.com/mojomast/hermes-photo-to-part/d924991f56ad4cf7b94e33f2ac5dcb6cf24fac5f/examples/plate-clip/renders/front.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/photo-to-part.webp"},{"name":"chartrunner","title":"ChartRunner","summary":"Read-only tools for ChartRunner, a gamified trading app on Solana: launch radar (new, trending, graduated) with the server's safety level and flags, the public buy verdict for a mint with a terminal review link, real-mode perp chart links for BTC, ETH, SOL, HYPE and DOGE, room and SIM battle links, finished cup standings checked against the anchor ChartRunner published, and a local verifier that rebuilds a chartrunner:v1 memo root from rows or a Merkle proof. Bundles one skill (desk) on when to use each tool and what a memo match does not prove. Hermes never signs: the tools return links, and every swap or perp order is reviewed in ChartRunner and signed by the user's own wallet.","disclosure":"chartrunner_radar, chartrunner_spot and chartrunner_cup send unauthenticated HTTPS GET requests to https://chartrunner-app.vercel.app (override with CHARTRUNNER_ORIGIN) with the tab, mint or cup code the user asked about; no keys, cookies or wallet data are sent or stored. The other tools make no network calls. The cup anchor check compares against the anchor record from ChartRunner's API and does not read the Solana transaction.","category":"tools","platforms":[],"maintainer":"ChartRunner","author":"ssjjul3","version":"0.1.0","requires_hermes":"","repo":"https://github.com/ChartRunner/chartrunner-hermes","docs":"https://github.com/ChartRunner/chartrunner-hermes","tools":["chartrunner_verify","chartrunner_cup","chartrunner_radar","chartrunner_spot","chartrunner_perps","chartrunner_room","chartrunner_battle"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153755,"prs":[{"n":153755,"state":"open","created":"2026-11-11T18:25:29Z"}],"created":"2026-11-11T18:25:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"apple-doc-plugin","title":"Apple Developer Documentation Studio","summary":"Offline-first Apple Developer Documentation suite for Hermes: 95,899 symbols across 30 Apple frameworks with sub-5ms SQLite FTS5 search, React/Web/Android-to-SwiftUI idiom RRF, automatic Swift compiler diagnostic grounding hook, @apple: context references, /apple-docs demo command, inline ::apple-doc cards, and an interactive Hermes Desktop Studio docked beside your chat session.","disclosure":"reads its bundled data/apple-docs.db SQLite index in read-only mode, writes no files during normal Hermes operation, adds a short ::apple-doc directive guidance snippet to the system prompt, and intercepts failed swift/swiftc/xcodebuild terminal outputs via transform_terminal_output (offline, configurable via compiler_grounding); get_documentation and Desktop live symbol inspection fetch https://developer.apple.com/tutorials/data/documentation/<symbol>.json over HTTPS (5s timeout, 2 MiB cap, local SQLite fallback); spawns no subprocesses and needs no credentials by default (if prefer_node_bridge is enabled or dense vectors are hydrated, starts a local Node >=22 MCP subprocess and reads optional GEMINI_API_KEY strictly via Hermes secret_scope); no telemetry or self-updater.","category":"tools","platforms":["macos","linux","windows"],"maintainer":"AndrewMason7","author":"AndrewMason7","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/AndrewMason7/apple-doc-plugin","docs":"https://github.com/AndrewMason7/apple-doc-plugin#readme","tools":["search_symbols","semantic_search","get_documentation","discover_technologies","get_version","index_info"],"hooks":["transform_terminal_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153754,"prs":[{"n":153754,"state":"open","created":"2026-11-11T18:25:11Z"}],"created":"2026-11-11T18:25:11Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AndrewMason7/apple-doc-plugin/0385ad680ffb2d8ad4eb45ea66249885a349197f/assets/banner.svg","https://raw.githubusercontent.com/AndrewMason7/apple-doc-plugin/0385ad680ffb2d8ad4eb45ea66249885a349197f/assets/screenshots/studio-explorer.svg","https://raw.githubusercontent.com/AndrewMason7/apple-doc-plugin/0385ad680ffb2d8ad4eb45ea66249885a349197f/assets/screenshots/idiom-and-compiler-lab.svg","https://raw.githubusercontent.com/AndrewMason7/apple-doc-plugin/0385ad680ffb2d8ad4eb45ea66249885a349197f/assets/screenshots/inline-directive-cards.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mahj-trainer","title":"Mahj Trainer","summary":"Learn and practice American mah jongg (the game played with the yearly NMJL card) through Mahj Trainer's hosted MCP server (Streamable HTTP, no sign-in, no keys): short lessons, practice quizzes that check and explain each answer, a rack reader that suggests a Charleston pass with a reason for each tile, and a glossary. Bundles one skill that tells the agent when to call the tools. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code: every tool call (rack tiles, quiz answers, lesson topics) goes to mahj.mahjtrainer.workers.dev, run by the plugin author; the five tools are served by that remote server at runtime and are not covered by the pinned sha (the source at the pin is read-only and stateless).","category":"general","platforms":[],"maintainer":"Jack Wallner","author":"jackwallner","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/jackwallner/mahj","docs":"https://github.com/jackwallner/mahj/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153753,"prs":[{"n":153753,"state":"open","created":"2026-11-11T18:22:26Z"}],"created":"2026-11-11T18:22:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"strategic-arena","title":"Strategic Arena","summary":"Understand the landscape before you invest: give it a link and get the room that reacts — who can block adoption, what each concession buys, and the claims you can score later. Research papers also get a replication clock.","disclosure":"","category":"tools","platforms":[],"maintainer":"LeMultiFox","author":"trillionverselabs-boop","version":"0.6.3","requires_hermes":">=0.23.0","repo":"https://github.com/trillionverselabs-boop/strategic-arena","docs":"https://github.com/trillionverselabs-boop/strategic-arena/blob/main/docs/POSITIONING.md","tools":["arena_run","arena_status","arena_report","arena_history","arena_calibration","arena_due","arena_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"A run uses the model the Hermes session is already on. There is no model picker by design.; A 24h review is ~$0.02 on a cheap paid model; a free model is fine but rate-limited, so the same run can take 15-30 minutes.; The desktop UI loads from the machine running the app, so a UI change needs Install from Git with the Desktop target on that machine.; PDFs outside arXiv need a text layer; a link that cannot be read is reported as SKIPPED in the run's provenance, never silently dropped.","state":"open","pr":153750,"prs":[{"n":153750,"state":"open","created":"2026-11-11T18:18:41Z"}],"created":"2026-11-11T18:18:41Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/trillionverselabs-boop/strategic-arena/65d341c624f992c8e5636a9ba156dc8bd39f91d5/assets/marketplace.png","https://raw.githubusercontent.com/trillionverselabs-boop/strategic-arena/65d341c624f992c8e5636a9ba156dc8bd39f91d5/assets/how-it-works.png","https://github.com/user-attachments/assets/6acf6147-2ac6-43c2-a41d-6d0ee08c7302","https://github.com/user-attachments/assets/58a1ea97-168a-45c5-b783-a15bb5985bcc"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/strategic-arena.webp"},{"name":"polyglot","title":"polyglot","summary":"Live interpreter for group chats on the Hermes gateway (Telegram, Discord): an authorized user sends /polyglot on in a group, and every message and voice note is then translated into each member's own reading language, posted as a reply to the original. Languages are learned from each person's first message or set with /lang; \"hermes, ...\" or an @mention still reaches Hermes as a normal question. Translates with the user's own Hermes model; a Sarvam AI key is optional for Indian languages and voice notes.","disclosure":"registers one hook (pre_gateway_dispatch) and two commands (/polyglot, /lang), no tools; message text goes to the configured model provider through Hermes's ctx.llm, and, only if SARVAM_API_KEY is set, text and voice-note audio for Indian languages go to https://api.sarvam.ai; stores each group's member languages and display names in Hermes's plugin state; reads voice-note files the gateway already downloaded; without Sarvam, voice notes use Hermes's own speech-to-text via tools.transcription_tools (an undocumented core module); no shell commands, background processes or telemetry.","category":"platform","platforms":[],"maintainer":"Subramanyarao11","author":"Subramanyarao11","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Subramanyarao11/hermes-polyglot","docs":"https://github.com/Subramanyarao11/hermes-polyglot","tools":[],"hooks":["pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153747,"prs":[{"n":153747,"state":"open","created":"2026-11-11T18:16:49Z"}],"created":"2026-11-11T18:16:49Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"1guy","title":"1guy","summary":"Hermes does the work. 1guy brings it back to you. One desk over your whole Hermes: every session, scheduled job and to-do is a card you touch, put away, schedule or talk to, and one companion on top tells you the few things that need you. Each card opens its own titled Hermes session and streams the reply in place; a talk bar routes a typed line to the right card or just does it. Adds a 1guy page with four lenses (today, board, time, inbox), a docked ticker and a to-do pane; on a new install he introduces himself with starting points built from what is really there.","disclosure":"reads state.db, cron/jobs.json, cron/output, cache/delegation/live, skill folder names and mcp_servers names in config.yaml read-only; reads and writes tasklist.md in the Hermes home (created if missing; appends a short ^anchor to a line when it gets a thread); keeps its own state in plugin-data/1guy. Makes short background calls on your active model through ctx.llm to write card headlines and route typed lines (these carry card titles and short session excerpts and spend your tokens; ONEGUY_HEADLINES=off disables the headline calls). Talking to a card creates a normal Hermes session through the desktop app and sends that card's context into it. Pressing 'run now' on a job card runs `hermes cron run <id>`. It reads no mail or calendar itself: if your Hermes has an email or calendar skill (checked by folder and MCP server NAME only) it offers to create one read-only scheduled Hermes job, `1guy-mail-cal` (`hermes cron create`, then `hermes cron run`), and shows what that job wrote. No network calls of its own, no telemetry, no credentials read or stored.","category":"desktop","platforms":[],"maintainer":"jrezmo","author":"jrezmo","version":"1.0.20","requires_hermes":">=0.23.0","repo":"https://github.com/jrezmo/1guy-plugin","docs":"https://github.com/jrezmo/1guy-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153940,"prs":[{"n":153940,"state":"open","created":"2026-11-11T20:52:15Z"},{"n":153748,"state":"closed","created":"2026-11-11T18:16:49Z"}],"created":"2026-11-11T18:16:49Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jrezmo/1guy-plugin/2bb6728048388a419829af5ab8228f3bb977f03f/docs/screenshots/board.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2bb6728048388a419829af5ab8228f3bb977f03f/docs/screenshots/first-run.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2bb6728048388a419829af5ab8228f3bb977f03f/docs/screenshots/thread.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2bb6728048388a419829af5ab8228f3bb977f03f/docs/screenshots/time-lens.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2aefeefa60c8d52efa3bc053662e0ecac4dd6970/docs/screenshots/board.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2aefeefa60c8d52efa3bc053662e0ecac4dd6970/docs/screenshots/first-run.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2aefeefa60c8d52efa3bc053662e0ecac4dd6970/docs/screenshots/thread.png","https://raw.githubusercontent.com/jrezmo/1guy-plugin/2aefeefa60c8d52efa3bc053662e0ecac4dd6970/docs/screenshots/time-lens.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/1guy.webp"},{"name":"hermes-focus-widget","title":"Focus Widget","summary":"A Pomodoro widget for Hermes Desktop that only counts focus time while the agent is actually working. Agent-aware timer (25/5/15 by default, configurable): the focus timer runs only while the agent is active (hooks on messages, tool calls and outputs), waits automatically on agent idle, and resumes on the next activity; manual mode is a full classic wall-clock Pomodoro. Three Desktop surfaces (draggable floating widget, status-bar chip, full page), session log with today/week totals and a day streak, and a /pomodoro slash command.","disclosure":"100% local: no network calls, no accounts, no API keys, no credentials, no telemetry. The widget UI and its JSON API are served on loopback only (127.0.0.1:18778 by default); the Desktop surfaces poll that endpoint (floating widget and status-bar chip every 2 s, full page every 1 s). State lives in one JSON file under the Hermes plugin-data directory (~/.hermes/plugin-data/hermes-focus-widget/focus-state.json), written atomically, restored on gateway restart. One daemon thread for the 1-second timer tick and one loopback HTTP server thread, both inside the gateway process. No self-updater; no core overrides.","category":"desktop","platforms":[],"maintainer":"elianjuan-g","author":"elianjuan-g","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/elianjuan-g/hermes-focus-widget","docs":"https://github.com/elianjuan-g/hermes-focus-widget","tools":["focus_timer"],"hooks":["on_session_start","pre_llm_call","pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Agent activity is not human focus: the timer knows when the agent is working, not whether the operator is focused.; Local installs only: the widget UI is served on loopback (127.0.0.1); if Desktop connects to a remote gateway, the floating widget and chip cannot reach it.; One timer per gateway: sessions are recorded per gateway, not per chat session or profile.","state":"open","pr":153746,"prs":[{"n":153746,"state":"open","created":"2026-11-11T18:16:07Z"}],"created":"2026-11-11T18:16:07Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/elianjuan-g/hermes-focus-widget/1b6bdcf7330539a69a23733a545dabe7025dcf37/docs/screenshots/_float.png","https://raw.githubusercontent.com/elianjuan-g/hermes-focus-widget/1b6bdcf7330539a69a23733a545dabe7025dcf37/docs/screenshots/_page.png","https://raw.githubusercontent.com/elianjuan-g/hermes-focus-widget/1b6bdcf7330539a69a23733a545dabe7025dcf37/docs/screenshots/_settings.png","https://raw.githubusercontent.com/elianjuan-g/hermes-focus-widget/1b6bdcf7330539a69a23733a545dabe7025dcf37/docs/screenshots/_chip.png","https://raw.githubusercontent.com/elianjuan-g/hermes-focus-widget/1b6bdcf7330539a69a23733a545dabe7025dcf37/docs/screenshots/_01-main.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-focus-widget.webp"},{"name":"hermes-wrm-pro","title":"hermes-wrm-pro","summary":"Guided safe workflows for using an existing WRM Pro MCP server from Hermes Agent.","disclosure":"","category":"tools","platforms":[],"maintainer":"vedranius","author":"vedranius","version":"0.1.0","requires_hermes":"","repo":"https://github.com/vedranius/hermes-wrm-pro","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153744,"prs":[{"n":153744,"state":"open","created":"2026-11-11T18:13:52Z"}],"created":"2026-11-11T18:13:52Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"demand-radar","title":"demand-radar","summary":"Prove someone wants it before you build it. Searches Stack Exchange, Hacker News and GitHub issues for people asking for an idea, keeps only on-topic requests (a noise gate, not a model's opinion), and returns a GO / NARROW / KILL / NO SIGNAL verdict with the rule that fired, quotes with links, who already builds it, and how demand moved since the last check. Tools demand_radar_check and demand_radar_history, the /radar slash command and the validate-idea skill. No API key needed.","disclosure":"each check sends the idea text and its phrasings as search queries to api.stackexchange.com, hn.algolia.com and api.github.com; check history and HTML reports stay in the plugin's own data folder; an optional read-only GitHub token is read through Hermes's secret route; no shell commands, background processes, telemetry or Python dependencies.","category":"tools","platforms":[],"maintainer":"LeonardIrimia","author":"LeonardIrimia","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/LeonardIrimia/hermes-demand-radar","docs":"https://github.com/LeonardIrimia/hermes-demand-radar#readme","tools":["demand_radar_check","demand_radar_history"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153741,"prs":[{"n":153741,"state":"open","created":"2026-11-11T18:10:35Z"}],"created":"2026-11-11T18:10:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-arena","title":"Hermes Arena","summary":"A pixel-art platform fighter that runs inside Hermes Desktop. Four fighters, two stages, and three ways to play: against a CPU, with a second player on the same keyboard, or online through Find a match or a room code. Online play connects the two computers directly.","disclosure":"online play connects to the public PeerJS signaling server (wss://0.peerjs.com) and Google's STUN server (stun.l.google.com), then opens a direct WebRTC connection that shows your IP address to the other player; the game page loads Google Fonts (fonts.googleapis.com) into the Desktop window each time it opens. No chats, Hermes data or credentials are sent.","category":"desktop","platforms":[],"maintainer":"JustinPerea","author":"JustinPerea","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/JustinPerea/Hermes-arena","docs":"https://github.com/JustinPerea/Hermes-arena/tree/main/hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Online play is a direct connection between the two computers, so the other player can see your IP address. The online screen says so before you connect.; To set up an online match the game contacts the free public PeerJS signaling server (0.peerjs.com) and Google's public STUN server (stun.l.google.com). There is no relay server, so some strict networks (some offices and mobile carriers) cannot connect.; The page loads its three fonts from Google Fonts each time it opens.","state":"open","pr":153740,"prs":[{"n":153740,"state":"open","created":"2026-11-11T18:10:21Z"}],"created":"2026-11-11T18:10:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/banner.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/desktop.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/select.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/kairos.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/iris.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/kyllene.png","https://raw.githubusercontent.com/JustinPerea/Hermes-arena/8c7ba632f82fb9ea945eede6b548981ad552d147/docs/media/online.png"],"videos":[],"x":["https://x.com/justinperea/status/2120586027366850700"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-arena.webp"},{"name":"hermes-whoop","title":"WHOOP Readiness","summary":"Your own WHOOP data in Hermes: today's recovery, HRV, resting heart rate, SpO2, skin temperature, sleep and strain against your personal 30-day baseline, history over any date range and 7-vs-30-day trends, from the official WHOOP API v2 with your own WHOOP developer app. Adds a /whoop command that answers without a model call, two Automation Blueprints (morning readiness brief, weekly review), an opt-in readiness hook and a bundled skill. Includes a clearly labelled synthetic demo mode. Native Python plugin, no dependencies. Unofficial; not affiliated with WHOOP, Inc.","disclosure":"network calls go only to api.prod.whoop.com and are made by Hermes through credentialed_provider_request; the WHOOP OAuth client is declared under oauth: and signed in with `hermes auth add hermes-whoop:whoop`, so Hermes stores and refreshes the grant and the plugin never receives a token; WHOOP_CLIENT_ID and WHOOP_CLIENT_SECRET (your own app) are optional_env read only by Hermes. Health data returned by the tools enters the conversation and is sent to your model provider; /whoop in a group chat shows it to that chat. The pre_llm_call hook is off by default; when enabled it appends a one-line readiness summary to matching messages. Creates no files of its own (settings changes are written to the profile's config.yaml by Hermes); WHOOP responses are cached in memory for 5 minutes. No shell commands, no background processes, no telemetry, no self-updates. Not medical advice.","category":"tools","platforms":[],"maintainer":"solmonger","author":"solmonger","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/solmonger/hermes-whoop","docs":"https://github.com/solmonger/hermes-whoop#readme","tools":["whoop_today","whoop_history","whoop_trends","whoop_profile","whoop_status"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"WHOOP's docs say the redirect URI must match the one registered; Hermes signs in on 127.0.0.1 with an OS-assigned port. Register http://127.0.0.1/callback: WHOOP's OAuth server appears to be Ory Hydra, which accepts any port for a loopback redirect (RFC 8252), but WHOOP does not document this. If WHOOP reports a redirect mismatch, see the README's Limits section.; As of 2026-11-07 the WHOOP sign-in and token refresh are tested only against Hermes's real OAuth code with WHOOP faked, not against a real WHOOP account. Demo mode needs no account.","state":"open","pr":153738,"prs":[{"n":153738,"state":"open","created":"2026-11-11T18:05:13Z"}],"created":"2026-11-11T18:05:13Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/solmonger/hermes-whoop/ea30c764a44fc792b66e34061331f2948356cc03/docs/media/banner.png","https://raw.githubusercontent.com/solmonger/hermes-whoop/ea30c764a44fc792b66e34061331f2948356cc03/docs/media/today.png","https://raw.githubusercontent.com/solmonger/hermes-whoop/ea30c764a44fc792b66e34061331f2948356cc03/docs/media/trends.png","https://raw.githubusercontent.com/solmonger/hermes-whoop/ea30c764a44fc792b66e34061331f2948356cc03/docs/media/week.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-whoop.webp"},{"name":"backfill","title":"backfill","summary":"Switch memory providers without Hermes forgetting you: replays your past Hermes sessions into the memory provider you use now, with a dry run, resume, no double imports and a before/after recall check.","disclosure":"reads state.db read-only and config.yaml; sends past user/assistant turns to the memory provider you configured (a cloud provider receives them over the network); writes only its own plugin state (imported session ids, 16-character turn hashes, recall-check results); the optional `hermes backfill check` uses your Hermes model through its own auxiliary slot. No network calls, credentials or telemetry of its own.","category":"memory","platforms":[],"maintainer":"wth-amna","author":"wth-amna","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/wth-amna/hermes-backfill","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153737,"prs":[{"n":153737,"state":"open","created":"2026-11-11T18:04:08Z"}],"created":"2026-11-11T18:04:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"redgreen","title":"RedGreen","summary":"Prove a fix with a negative control before Hermes can call it done — re-run the test command on the current tree and on the pre-change tree with only new/changed tests overlaid.","disclosure":"reads the git repo, runs the agent's test command in isolated worktrees under the system temp directory, writes JSON and HTML certificates to ~/.hermes/plugin-data/redgreen/; no network calls.","category":"tools","platforms":[],"maintainer":"shahaman098","author":"shahaman098","version":"1.0.0","requires_hermes":">=0.18.0","repo":"https://github.com/shahaman098/hermes-redgreen","docs":"https://github.com/shahaman098/hermes-redgreen#readme","tools":["redgreen_check","redgreen_status","redgreen_certificate","redgreen_history","redgreen_explain"],"hooks":["pre_tool_call","post_tool_call","pre_verify","transform_llm_output","on_session_end"],"middleware":[],"env":[],"known_issues":"Needs a git repository; outside a repo RedGreen does not gate completion.; Full suites run twice — use a targeted test command or raise REDGREEN_TIMEOUT on large repos.","state":"open","pr":153734,"prs":[{"n":153734,"state":"open","created":"2026-11-11T18:01:03Z"}],"created":"2026-11-11T18:01:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/shahaman098/hermes-redgreen/339fde590c58eab3137fdbb94bec39a88b9b3baa/assets/banner.png","https://raw.githubusercontent.com/shahaman098/hermes-redgreen/339fde590c58eab3137fdbb94bec39a88b9b3baa/assets/certificate.png"],"videos":["https://raw.githubusercontent.com/shahaman098/hermes-redgreen/339fde590c58eab3137fdbb94bec39a88b9b3baa/redgreen-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/redgreen.webp"},{"name":"margin","title":"Margin","summary":"Comment @hermes on highlighted text in Google Docs, Slides or Sheets and Hermes answers in the comment thread. A gateway platform: each Drive comment thread is its own Hermes session with the document text and the highlighted text as context; follow-ups in the thread continue it, Hermes's status reply is edited in place into the answer, and replying \"apply\" replaces the highlighted text with the proposed wording (Docs and Slides, only when the text occurs exactly once). Watch files with /margin watch or hermes margin watch.","disclosure":"sends the text of each watched file (up to MARGIN_MAX_DOC_CHARS, default 60,000 characters), the highlighted text and the comment thread to the user's configured model provider at the start of each thread; signs in with the user's own Google Cloud OAuth client through Hermes (`hermes auth add margin:google`, scopes drive, documents, presentations) and calls only www.googleapis.com, docs.googleapis.com and slides.googleapis.com through credentialed_provider_request, never holding the token; polls Drive comments.list every 10 s per watched file from a background loop inside the gateway; posts and edits its own comment replies and edits document text only on an explicit \"apply\" reply; by default only the signed-in Google account can trigger it (MARGIN_ALLOWED_USERS / MARGIN_ALLOW_ALL_USERS widen that); stores the watch list, poll cursors, handled comment ids and per-thread highlighted text and last proposal in Hermes plugin state under HERMES_HOME (no document text, no credentials); no shell commands, no telemetry, no self-update.","category":"platform","platforms":[],"maintainer":"pratikpoddar","author":"pratikpoddar","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/pratikpoddar/hermes-margin","docs":"https://github.com/pratikpoddar/hermes-margin#readme","tools":[],"hooks":[],"middleware":[],"env":["MARGIN_GOOGLE_CLIENT_ID","MARGIN_GOOGLE_CLIENT_SECRET"],"known_issues":"Needs the user's own Google Cloud OAuth client (Desktop app) with the Drive, Docs and Slides APIs enabled; sign in once with hermes auth add margin:google.; Google may show an unverified-app warning for a personal OAuth client in testing mode, and testing-mode refresh tokens expire after 7 days.; Polling, not push: replies arrive within about one poll interval (10 s) plus model time.","state":"open","pr":153733,"prs":[{"n":153733,"state":"open","created":"2026-11-11T18:00:12Z"}],"created":"2026-11-11T18:00:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/pratikpoddar/hermes-margin/29a84672f49fdf295e6a27af1bbcd27a14e0c47a/docs/demo.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/margin.webp"},{"name":"rails","title":"Rails","summary":"Guardrails and decision plugin: a fast local System 1 model (d1-3B Decision Guard) decides on every turn whether the agent is only looking or changing things, flags work you did not ask for, makes code work load the matching skill and run a test before 'done', and shows every decision inline as a tag. Optional d3 vision checks the screen before a computer-use task is called done and adds decide, screen_find, screen_check and video_check tools.","disclosure":"network calls only to local model servers on 127.0.0.1 (ports 8089, 8898, 8899); no third-party services, no telemetry, no shell commands, no stored credentials, no Python dependencies. Appends a decision log to <HERMES_HOME>/logs/rails.jsonl (long tokens masked); reads the newest computer-use screenshot and media passed to its tools to send them to the local vision model; reads skill names from a sibling superpowers plugin folder if present; short-lived daemon threads for second-opinion and prompt-injection checks. Ideas (shadow mode, decision log) credited to kerpopule/hermes-jev-skills; not a fork.","category":"tools","platforms":[],"maintainer":"grimmjoww","author":"grimmjoww","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/grimmjoww/hermes-rails","docs":"https://github.com/grimmjoww/hermes-rails","tools":["decide","screen_find","screen_check","video_check"],"hooks":["pre_llm_call","pre_tool_call","pre_verify","post_tool_call","post_llm_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Needs a local d1 decision server on 127.0.0.1:8089; when it or the optional d3 layers are off, Rails says so and does not fake a decision.; Built and tested on Windows.","state":"open","pr":153732,"prs":[{"n":153732,"state":"open","created":"2026-11-11T17:59:16Z"}],"created":"2026-11-11T17:59:16Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tupliq-launchpad","title":"Tupliq Launchpad","summary":"RevenueCat revenue & subscription metrics for your apps, plus git changelog drafting for Play Store releases.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"muhammadsalihu","author":"muhammadsalihu","version":"1.0.0","requires_hermes":"","repo":"https://github.com/muhammadsalihu/tupliq-launchpad","docs":null,"tools":["launchpad_overview","launchpad_revenue","launchpad_chart","launchpad_changelog"],"hooks":[],"middleware":[],"env":["REVENUECAT_API_KEY"],"known_issues":"","state":"open","pr":153731,"prs":[{"n":153731,"state":"open","created":"2026-11-11T17:57:02Z"}],"created":"2026-11-11T17:57:02Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"vitam","title":"vitam","summary":"Turn a modded PS Vita into a voice-powered Hermes handheld: hold-to-talk mic with faster-whisper STT on your own machine, an agent turn through your Hermes gateway, TTS reply spoken through the Vita speaker, and optional rear-camera vision frames. LAN-only; the bridge makes no outbound calls except to your configured gateway.","disclosure":"","category":"voice","platforms":["linux","macos"],"maintainer":"taylorwtf","author":"taylorwtf","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/taylorwtf/vitam","docs":"https://github.com/taylorwtf/vitam#readme","tools":[],"hooks":[],"middleware":[],"env":["HERMES_VITA_GATEWAY_KEY"],"known_issues":"Requires a modded PS Vita or PS TV (HENkaku/h-encore 3.60) and a machine on the same LAN to run the bridge daemon.; Speech recognition and TTS use small local models: intelligible, not studio quality.","state":"open","pr":153730,"prs":[{"n":153730,"state":"open","created":"2026-11-11T17:56:57Z"}],"created":"2026-11-11T17:56:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"plugin-safehouse","title":"plugin-safehouse","summary":"Runs one local Hermes plugin inside a disposable, canary-seeded macOS profile; invokes its registered handlers and reports observed file, environment, network, process, persistence, and model-context behavior as FLAGGED, REVIEW, INCONCLUSIVE, or NO_FLAGS_OBSERVED.","disclosure":"the model-callable `safehouse_trial` tool (and `/safehouse`) executes the chosen local plugin's register() and handlers without a Hermes approval prompt, inside a short-lived macOS sandbox-exec worker with a scratch HOME/HERMES_HOME, fake canary credentials and a minimal environment; the sandbox profile is allow-default with network, fork/exec, signals to other processes, LaunchServices and writes outside a temporary trial root denied, so files outside the user's home and non-LaunchServices system services remain reachable; the trial root is removed afterwards. The report returned to the model includes short candidate-controlled text (handler return values up to 300 chars, worker stderr tail up to 1200 chars) with canary tokens redacted. It imports PluginManager and calls the private _scan_directory/_load_plugin loader inside the disposable worker so the candidate registers through Hermes' real loader; this is a disclosed compatibility risk. The installed plugin makes no third-party network calls, stores no credentials, sends no telemetry, and starts no long-running background process. Optional repository-only launch scripts invoke local ffmpeg.","category":"tools","platforms":["macos"],"maintainer":"LaithAskar","author":"LaithAskar","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/LaithAskar/hermes-plugin-safehouse","docs":"https://github.com/LaithAskar/hermes-plugin-safehouse/blob/8e2e5ced6ece60b3c33a9ae36a0da5cf04a95fee/README.md","tools":["safehouse_trial"],"hooks":[],"middleware":[],"env":[],"known_issues":"Dynamic trials require macOS sandbox-exec; other operating systems receive a static INCONCLUSIVE report.; Only standalone registration and exclusive-provider registration are driven; backend, model-provider, platform, portable, and exclusive-provider lifecycle behavior remains INCONCLUSIVE.; The disposable worker uses Hermes' private PluginManager._scan_directory loader and may need an update when that internal seam changes.","state":"open","pr":153728,"prs":[{"n":153728,"state":"open","created":"2026-11-11T17:54:43Z"}],"created":"2026-11-11T17:54:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"roomsmith","title":"Roomsmith","summary":"One 3D room that you and Hermes both edit. It tells you whether things fit and what they cost. Drag furniture in a live editor inside Hermes Desktop or the dashboard, or tell Hermes what to change: one saved room with undo, and each sees what the other did. Give a budget and Hermes furnishes the room with real products, read from their pages and checked against your room and your money. Start from a photo or measurements. No accounts or keys. Network: only GETs to product pages (public addresses only, rate-capped). Never buys anything.","disclosure":"the agent's product tools make GET requests to product-page and product-image URLs that you or the agent give (http/https on public addresses only; private/LAN/loopback hosts and redirects to them are refused; rate-capped; results cached under the plugin's data folder); roomsmith_from_photo reads JPEG/PNG/WebP files at paths the agent names and sends them to your active Hermes model to draft the room; a pre_llm_call hook adds a few lines about your editor changes and furnishing budget to turns in rooms sessions; all data stays in <HERMES_HOME>/plugin-data/roomsmith; it never buys anything.","category":"desktop","platforms":["macos","linux"],"maintainer":"devSebb","author":"devSebb","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/devSebb/roomsmith","docs":"https://github.com/devSebb/roomsmith#readme","tools":["roomsmith_projects","roomsmith_new_room","roomsmith_from_photo","roomsmith_inspect","roomsmith_apply","roomsmith_check","roomsmith_read_product","roomsmith_shortlist","roomsmith_add_product","roomsmith_history","roomsmith_export"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Sizes read from a photo are estimates until you set one real measurement (a wall, the door, or an object).; iPhone HEIC photos must be exported as JPEG/PNG first.; Furnishing with real products depends on the shops: some refuse automated reads or print no size; the plugin says so and never invents a size or price.","state":"open","pr":153724,"prs":[{"n":153724,"state":"open","created":"2026-11-11T17:53:05Z"}],"created":"2026-11-11T17:53:05Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/banner.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/01-furnished-to-budget.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/02-real-product.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/03-blocks-the-door.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/04-over-budget.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/05-plan-view.png","https://raw.githubusercontent.com/devSebb/roomsmith/421e6f30fca43066f75ed7258281315c7eeb2fde/docs/screenshots/06-light-theme.png"],"videos":[],"x":["https://x.com/dev_sebb/status/2120576831480865137"],"youtube":[],"thumb":"/hackathon/thumbs/roomsmith.webp"},{"name":"hermes-shortcuts","title":"Talaria","summary":"Write, compile, sign and audit iOS Shortcuts from Hermes with no Mac: six tools turn plain-language intent into reviewable Cherri source, compile it to an unsigned .shortcut inside a bwrap sandbox, sign it through RoutineHub HubSign on explicit consent, and audit any .shortcut (signed AEA1 container or plain plist) for what it reads, writes and sends before it is installed. Bundles the shortcuts-authoring skill (file shape, verified action signatures, house patterns, and the traps that make a shortcut compile cleanly and still be broken).","disclosure":"the Cherri compiler runs as a subprocess under bwrap with no network namespace, a read-only root, a throwaway HOME and only the job directory writable; bwrap and the compiler must already be installed, and a build is refused rather than run on the host when bwrap is missing. Two network call sites, both inert by default: talaria_status opens one TCP connection to the signing host only when called with probe_signer=true, and talaria_sign uploads the compiled shortcut as an XML plist plus the shortcut name to https://hubsign.routinehub.services/sign (RoutineHub, a third party) only when consent=true, returning the signed file; no other file, environment value or credential is sent. A pre_tool_call hook routes every consented signing call to Hermes's approval gate, keyed per artifact, so unattended runs fail closed. Artifacts and metadata are written only under $HERMES_HOME/talaria (or $TALARIA_HOME), metadata at mode 0600. LZFSE and LZVN decoding is a pure-Python port of Apple's reference decoder, so no compiled binary ships. No shell exec of model-written commands, no self-updater, no telemetry, no credentials or API keys.","category":"automation","platforms":["linux"],"maintainer":"mjneuroart","author":"mjneuroart","version":"0.3.0","requires_hermes":">=0.23.1","repo":"https://github.com/mjneuroart/talaria","docs":"https://github.com/mjneuroart/talaria#readme","tools":["talaria_status","talaria_setup","talaria_actions","talaria_build","talaria_sign","talaria_inspect","talaria_library"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153825,"prs":[{"n":153825,"state":"open","created":"2026-11-11T19:38:46Z"},{"n":153721,"state":"open","created":"2026-11-11T17:51:33Z"}],"created":"2026-11-11T17:51:33Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"test-drive","title":"Test Drive","summary":"Don't guess which plugin helps. Test-drive it. When Hermes hits a capability wall (it says it can't, or a tool fails as unavailable) test-drive appends one line naming the best catalog match; /testdrive <need> and test_drive_find show the top 3 with trust cards (tier, pin, keys needed, declared tools/hooks, disclosure); after you approve, test_drive_run or /testdrive run installs the candidate into a throwaway HERMES_HOME, runs your original request once with hermes chat -q, attempts cleanup and reports a before/after with tool-call evidence when available; keep goes through Hermes's own installer; /testdrive history keeps receipts.","disclosure":"fetches the public catalog index from hermes-agent.nousresearch.com (redirects only to https Nous hosts, cached 6 h); an approved drive installs the selected catalog repository and pin by URL through Hermes, whose custom-source scanner may block caution verdicts, and installs its Python dependencies from PyPI into the sandbox's own runtime, runs child hermes CLI processes (plugins install, chat -q, sessions export, gateway stop) with hard timeouts and process-group kill, sends your request to your configured model provider (twice with a baseline), and runs the candidate's code as your user inside the temporary profile (not an OS sandbox), including any network calls it makes; every test_drive_run is escalated to Hermes's approval gate (fails closed unattended) and the slash command asks via ask_choice or an explicit --yes; the child runs single-query mode with dangerous commands denied; the child gets only system env vars plus your model route's key and the candidate's declared requires_env, read through agent.secret_scope (literal credentials in the selected model or provider config are written to the sandbox's 0600 config and removed when cleanup succeeds); no memory, sessions, .env or auth.json are copied; temp dirs hermes-testdrive-* are removed after drives when cleanup succeeds; cleanup failures are reported; stores the catalog cache, last gap per session and up to 50 drive receipts in its plugin-data folder; a transform_llm_output hook appends one nudge line to gap replies (off with nudges: false); optional llm_check calls your active model; no telemetry.","category":"tools","platforms":[],"maintainer":"Xuefeng-Zhu","author":"Xuefeng-Zhu","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Xuefeng-Zhu/hermes-test-drive","docs":"https://github.com/Xuefeng-Zhu/hermes-test-drive#readme","tools":["test_drive_find","test_drive_run","test_drive_keep"],"hooks":["pre_tool_call","pre_llm_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"A test drive takes about 30-90 s and spends model tokens; plugins that need OAuth sign-ins, a messaging platform, the Desktop app, hardware or keys you don't have can't show their value in a throwaway profile (missing keys are reported and the run is skipped).; Models that sign in with OAuth (Nous Portal, Codex) are not reused in the sandbox; set test-drive's sandbox_provider/sandbox_model/sandbox_key_env to an API-key route.","state":"open","pr":153719,"prs":[{"n":153719,"state":"open","created":"2026-11-11T17:51:05Z"}],"created":"2026-11-11T17:51:05Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/frankzhu94/status/2120587854598508688"],"youtube":[],"thumb":null},{"name":"live-translate","title":"Live Translate","summary":"Real-time speech-to-speech translation on your own computer: anyone speaks in any language and you hear them in yours, in their own voice, about 2-3 seconds behind. Hears ~100 languages (Qwen3-ASR + Whisper), translates between 201 (Qwen3.5-4B, a local server, a subscription, or the model Hermes already uses through ctx.llm), and speaks with the speaker's cloned voice in 23 languages and natural voices in 600+. One-way, two-way conversations and meetings/streams through a virtual audio device (Zoom, Meet, Teams, Discord, OBS, with OBS closed captions viewers can switch on); echo cancellation, background voices ignored, several speakers each with their own language and voice. Tools translate_start/stop/status/languages, /translate, hermes translate setup|start|file|serve|languages|devices, and an agent skill; optional desktop tray app (separate download).","disclosure":"while translating it listens to the microphone or audio input you choose and plays to the output you choose; it never starts from a chat app or a scheduled job unless you enable allow_remote_start. Voice cloning uses a 5-second sample of each speaker on this computer only; temporary copies are deleted when the session stops. Each session's captions are saved to plugin-data/live-translate/sessions/*.jsonl. hermes translate setup builds a separate Python environment with uv (plus three voice-model environments on Windows/Linux) under plugin-data/live-translate, installs packages from PyPI, PyTorch's index (Windows/Linux) and llama.cpp's prebuilt-wheel index (abetlen.github.io), installs uv from PyPI into the plugin's data folder if it is missing, and downloads 6-9 GB of model weights from their official Hugging Face repos into the standard Hugging Face cache. While translating it runs the engine and voice-worker processes (stopped on Stop or when the session that started them ends) and a local server on 127.0.0.1:7865 only, protected by a per-run token and an Origin check. No network while translating with built-in or local models; a cloud model or voice you choose receives the session's text or audio with your key, read only through Hermes's secret store. No telemetry. Licences: Apache-2.0/MIT models by default; OmniVoice (best preset) is CC-BY-NC-4.0; on CPU-only machines Kokoro uses espeak-ng (GPL-3.0).","category":"voice","platforms":["macos","windows","linux"],"maintainer":"WestWaters","author":"WestWaters","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/WestWaters/hermes-live-translator","docs":"https://github.com/WestWaters/hermes-live-translator#readme","tools":["translate_start","translate_stop","translate_status","translate_languages"],"hooks":["on_session_finalize"],"middleware":[],"env":[],"known_issues":"First setup downloads 6-9 GB of models and builds its own Python environments; run hermes translate setup once (or press Set up in the app).; Real-time voice needs Apple Silicon or an NVIDIA GPU; on CPU-only machines captions come first and the voice follows with a delay.; Under plugins.isolation: host the hermes translate terminal commands are not available (Hermes skips plugin CLI commands in the host); the tools and /translate still work.","state":"open","pr":153718,"prs":[{"n":153718,"state":"open","created":"2026-11-11T17:50:37Z"}],"created":"2026-11-11T17:50:37Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/WestWaters/hermes-live-translator/315085f89fc675b119e1a412ef38873c1365c6da/assets/live-translate.jpg","https://raw.githubusercontent.com/WestWaters/hermes-live-translator/315085f89fc675b119e1a412ef38873c1365c6da/docs/media/call.jpg","https://raw.githubusercontent.com/WestWaters/hermes-live-translator/315085f89fc675b119e1a412ef38873c1365c6da/docs/media/settings.jpg","https://raw.githubusercontent.com/WestWaters/hermes-live-translator/315085f89fc675b119e1a412ef38873c1365c6da/docs/media/daylight.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/live-translate.webp"},{"name":"circuit","title":"Circuit","summary":"Design real PCBs by talking to your agent — a two-layer board compiler with a part library, deterministic placement, autorouting, an independent DRC, and a fabrication package (RS-274X Gerbers, Excellon drills, KiCad 8 project, STEP AP214), rendered in 2D and 3D in the desktop UI.","disclosure":"","category":"tools","platforms":[],"maintainer":"odtboun","author":"odtboun","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/odtboun/hermes-circuit","docs":"https://github.com/odtboun/hermes-circuit#readme","tools":["circuit_catalog","circuit_create","circuit_boards","circuit_import","circuit_samples","circuit_board","circuit_add_part","circuit_connect","circuit_remove_part","circuit_place","circuit_route","circuit_check","circuit_export","circuit_view","circuit_docs"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153716,"prs":[{"n":153716,"state":"open","created":"2026-11-11T17:48:33Z"}],"created":"2026-11-11T17:48:33Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/catalog-banner.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/board-3d.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/board-2d.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/doc-shopping.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/doc-wiring.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/doc-poster.png","https://raw.githubusercontent.com/odtboun/hermes-circuit/7902cccb82250fcbc03e9d2a85edbf173e26015b/docs/assets/board-3d-explode.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/circuit.webp"},{"name":"hermes-backup","title":"hermes-backup","summary":"Encrypted restic backup and verified restore for the Hermes home — dual-target (local disk + S3), hot-database shadow copies, and a DR drill that proves restores actually come back.","disclosure":"","category":"platform","platforms":["linux","macos"],"maintainer":"Shaun Xenon","author":"shaun-xenon","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/nizini-london/hermes-backup","docs":null,"tools":["backup_status","backup_now","backup_list","backup_verify","backup_restore","backup_restore_commit","backup_drill","backup_setup"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153715,"prs":[{"n":153715,"state":"closed","created":"2026-11-11T17:48:26Z"}],"created":"2026-11-11T17:48:26Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tenure","title":"tenure","summary":"Revocable trust for Hermes agents, per action type. By default every kind of action works as with Hermes alone (files, memory, subagents, known dev tools: npm, pytest, cargo, git...), and every local change is saved first: file writes and plain rm, mv, cp, sed -i or `> file` on project files act, then tell you, with `/tenure undo` for 24 hours. The first mistake on a kind of action (an undo, a flag, a refusal of Hermes's own prompt, a file it wrote that no longer parses) puts that kind, for every model of the profile, on probation: it asks first, earns back acting-then-notifying on a run of approvals, then acting alone with random spot checks, from a rule preregistered on OSF (Wald SPRT to the middle tier, Dodge's CSP-1 series to the top, a guarantee you choose). What leaves the machine (push, publish, deploy, registry logins, cloud writes, payments), unreadable shell, and anything after the agent read outside content keep asking; one \"Allow for this session\" covers a session. Signed, hash-chained, replayable autonomy passport (`hermes tenure verify`), a per-model benchmark of your own work, a switch preview before you change model, a Desktop page and a dashboard tab at parity, five languages. Linux, macOS and Windows (on Windows, plain shell file commands keep asking instead of acting with an undo). A friction bench in the repo replays an ordinary 30-call coding session: 3 questions Hermes would not ask, against 23 when every kind of action asks first.","disclosure":"hooks only (pre_api_request, pre_tool_call, post_approval_response, post_tool_call, post_llm_call, subagent_start, subagent_stop), no tools. No network, no LLM call, runs no command. Reads the profile's config.yaml and its own plugin settings; writes them back only through hermes_cli.plugins_settings.save_plugin_settings when the owner saves Settings. Writes under plugin-data/tenure: a SQLite record and a hash-chained ledger (action types and outcomes, no paths, no commands, no free text), a signing key and an undo HMAC key, and undo snapshots of the project files an action is about to change (file bytes and paths, owner-only, deleted after 24 hours, 5 MB per action). Imports plugins.plugin_storage.plugin_data_dir, hermes_cli.config, agent.i18n.get_language, hermes_cli.plugin_events.broadcast_plugin_event and, for the switch preview's model list, hermes_cli.inventory (disk cache only), each guarded.","category":"tools","platforms":[],"maintainer":"otsoa-dubief","author":"otsoa-dubief","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/otsoa-dubief/tenure","docs":"https://github.com/otsoa-dubief/tenure#readme","tools":[],"hooks":["pre_api_request","pre_tool_call","post_approval_response","post_tool_call","post_llm_call","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153714,"prs":[{"n":153714,"state":"open","created":"2026-11-11T17:47:42Z"}],"created":"2026-11-11T17:47:42Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/social-preview.png","https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/hero.gif","https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/desktop-trusted.png","https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/desktop-probation.png","https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/desktop-asks-first.png","https://raw.githubusercontent.com/otsoa-dubief/tenure/f4a62855e592b9e170ab0c54d9278aabef05f370/docs/images/passport.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tenure.webp"},{"name":"cellium-wallet","title":"cellium-wallet","summary":"Connect Hermes to a Cellium agent for wallet operations, swaps, bridges, and managed orders.","disclosure":"","category":"tools","platforms":[],"maintainer":"xjubiliance","author":"xjubiliance","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/xjubiliance/cellium-hermes-plugin","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153712,"prs":[{"n":153712,"state":"open","created":"2026-11-11T17:47:06Z"}],"created":"2026-11-11T17:47:06Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"relic-gumi","title":"RELIC Gumi","summary":"A local-first companion that gets to know you and supports self-reflection, built on published psychometric instruments (TIPI for the Big Five, ECR-RS for attachment) as a self-report baseline plus consented check-ins, with an output safety critic and Telegram or Desktop onboarding. Not a diagnostic tool; based on the paper arXiv:2611.08504.","disclosure":"state lives under $RELIC_HOME (default ~/.relic); the installer creates a dedicated relic-gumi profile with its own .env and cron jobs that stay silent until the user consents during onboarding, and moves a plugin copy found in the base Hermes home into that profile and disables the base entry; secrets come from the process environment Hermes provides, and the only .env the plugin parses is the relic-gumi profile's own file during onboarding to read the Telegram token and user ID (a known rule 11 deviation, follow-up planned: move it behind Hermes' secret scope); detached subprocesses deliver scheduled messages; network is limited to the configured Hermes provider, Telegram, and optional cloud media services (Gemini, Lyria) only if the user enables them; undocumented core imports exist in installer and CLI paths and are listed as warnings by hermes plugins validate; no telemetry, no self-updater.","category":"general","platforms":["linux","macos"],"maintainer":"yuzushi-dev","author":"yuzushi-dev","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/yuzushi-dev/hermes-relic","docs":"https://github.com/yuzushi-dev/hermes-relic#readme","tools":["gumi_read_canon","gumi_write_report","relic_continuity_candidate"],"hooks":["pre_llm_call","post_llm_call","transform_llm_output","pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153711,"prs":[{"n":153711,"state":"open","created":"2026-11-11T17:47:05Z"}],"created":"2026-11-11T17:47:05Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/daniele_veri/status/2120576022815125955"],"youtube":[],"thumb":null},{"name":"claim-receipts","title":"Claim Receipts: what the agent said vs what it did","summary":"Records the file changes and commands a session's hooks observe, then gives each prose claim in the session one of four verdicts against that record: backed, unbacked, unverifiable, contradicted. Compares a claim with a capture; does not prove it true.","disclosure":"reads Hermes's own session database (~/.hermes/state.db) read-only at session end; writes an append-only ledger under the plugin data dir; records file paths and terminal command strings; runs no shell commands; no network.","category":"tools","platforms":["linux"],"maintainer":"gwelby","author":"gwelby","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/gwelby/claim-receipts","docs":"https://github.com/gwelby/claim-receipts","tools":[],"hooks":["pre_tool_call","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153708,"prs":[{"n":153708,"state":"open","created":"2026-11-11T17:46:09Z"}],"created":"2026-11-11T17:46:09Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"neuron-steer","title":"neuron-steer","summary":"Neuron steering for Hermes Agent, implementing Nous Research's own Contrastive Neuron Attribution (arXiv:2605.12290). Find the sparse MLP neurons that distinguish two behaviors with forward passes only, save them as named circuits, then scale or ablate those neurons at inference to steer a local model, plus a dose scan that maps where the behavior turns on before output quality breaks.","disclosure":"","category":"tools","platforms":[],"maintainer":"mrfentmen","author":"mrfentmen","version":"1.2.1","requires_hermes":">=0.20.0","repo":"https://github.com/mrfentmen/hermes-neuron-steer","docs":"https://github.com/mrfentmen/hermes-neuron-steer#readme","tools":["neuron_steer_find","neuron_steer_generate","neuron_steer_scan","neuron_steer_list","neuron_steer_show","neuron_steer_demo"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153707,"prs":[{"n":153707,"state":"open","created":"2026-11-11T17:45:31Z"}],"created":"2026-11-11T17:45:31Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/mrfentmen/hermes-neuron-steer/fc28e94ee55580a6b51ed281365f7d92a2deb1f6/docs/banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/neuron-steer.webp"},{"name":"kareverse","title":"Kareverse","summary":"Elder care at home in Bangalore, India, from Hermes through Kareverse's public MCP server (Streamable HTTP at https://www.kareverse.com/mcp, no sign-in): search services and prices, read a service's details, the monthly Care Plan, service areas and care guides, and send a callback request to the Kareverse team. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to www.kareverse.com, operated by Kareverse; submit_enquiry sends the name, phone number and details the user provides to Kareverse so the team can call back, requires consent: true, and the package marks the server trust: untrusted so Hermes asks before it runs. The other six tools are read-only. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Kareverse","author":"digitalmanager-commits","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/digitalmanager-commits/kareverse-mcp","docs":"https://www.kareverse.com/agents","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153700,"prs":[{"n":153700,"state":"open","created":"2026-11-11T17:39:12Z"}],"created":"2026-11-11T17:39:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"blindoracle","title":"BlindOracle","summary":"Ask whether an AI agent is safe to pay before you pay it: free trust badge and reputation lookup (5 a day, no wallet, no account), the live price list for BlindOracle research, security-audit and due-diligence services, key-free receipt verification and a proof-of-delegation skill. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"the MCP server is remote (https://api.craigmbrown.com/v1/mcp, streamable HTTP) and receives each tool name and its arguments; paid tools only return a price quote and nothing in the package signs or sends a payment; the receipt skill runs a stdlib python3 script on a file you provide and calls the public Base RPC only when given a tx hash. No credentials, background processes or telemetry.","category":"tools","platforms":[],"maintainer":"craigmbrown","author":"craigmbrown","version":"1.1.0","requires_hermes":"","repo":"https://github.com/craigmbrown/blindoracle-skills","docs":"https://github.com/craigmbrown/blindoracle-skills/tree/77e452576b6b1762ca3ed6a4abe8943a14ec0718/hermes-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153696,"prs":[{"n":153696,"state":"open","created":"2026-11-11T17:35:41Z"}],"created":"2026-11-11T17:35:41Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"orphic-eyes","title":"Orphic Eyes","summary":"Pixel-only screenshot review for Hermes: capture URL pairs, inspect changed zones, prepare coding-agent requests and run bounded follow-up review rounds.","disclosure":"launches an installed headless browser; captured pages can load network resources and redirects. Stores screenshots/reports locally, reads explicit input pages/images and browser/runtime files, and optionally serves reports read-only on loopback until stopped. No telemetry or credential-store access; prompts are returned, never sent or executed by the plugin.","category":"tools","platforms":["linux","windows"],"maintainer":"Ilham-Musyafa","author":"Ilham-Musyafa","version":"0.3.0","requires_hermes":"","repo":"https://github.com/Ilham-Musyafa/Orphic-Eyes","docs":"https://github.com/Ilham-Musyafa/Orphic-Eyes#readme","tools":["orphic_baseline","orphic_compare","orphic_loop_step","orphic_approve","orphic_accept","orphic_ignore"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Python 3.12 or newer, Pillow and an installed Edge/Chrome/Chromium browser.; Windows/Edge, macOS and a live Hermes host are not covered by automated tests.; Public DNS and proxy rules can block capture; login walls and dynamic pages can affect pixels.","state":"open","pr":153695,"prs":[{"n":153695,"state":"open","created":"2026-11-11T17:34:58Z"}],"created":"2026-11-11T17:34:58Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"offgrid","title":"Offgrid","summary":"Chat with your Hermes agent by plain SMS, with no mobile data, through Africa's Talking, plus a USSD menu as a fallback for basic phones. Texts become normal Hermes messages on the offgrid platform, one conversation per phone number, and replies come back as a single SMS (Markdown and emoji stripped, capped at five billed segments). A safe subset of gateway commands works by text: NEW, SESSIONS, RESUME <n>, MODEL, STATUS, HELP and /retry, /stop, /title; every other slash command is refused by default.","disclosure":"every question and every reply is sent through Africa's Talking and the mobile network as SMS, in plain text, and each outbound SMS segment (up to five per reply) is billed to the operator's Africa's Talking account (incoming SMS and USSD sessions may also be billed). Requires an Africa's Talking API key, a callback secret and an explicit allowlist of phone numbers; the callback must be reachable over public HTTPS (the listener binds 127.0.0.1:8080 by default, so a tunnel or reverse proxy is needed). SMS sender numbers can be spoofed: a spoofed text from an allowlisted number gets a normal agent turn with this profile's tools and memory (the reply goes to the real number), while commands that change config, approve tools or reveal other sessions are blocked and dangerous commands time out unapproved. Verified in the Africa's Talking sandbox only, not on a live carrier. Uses its own platform name and OFFGRID_* settings, so it installs alongside ussd-platform.","category":"platform","platforms":["linux"],"maintainer":"emmaGH1","author":"emmaGH1","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/emmaGH1/hermes-offgrid","docs":"https://github.com/emmaGH1/hermes-offgrid#readme","tools":[],"hooks":[],"middleware":[],"env":["AT_API_KEY","AT_USERNAME","OFFGRID_CALLBACK_SECRET","OFFGRID_ALLOWED_USERS"],"known_issues":"Sandbox only: not yet tested on a live carrier or physical handset.; Questions are dispatched by one worker from an in-memory queue, so one slow answer delays others and a crash can lose queued questions.; Texts over the per-phone rate limit or over 500 characters are dropped without a reply.; An SMS user cannot answer a dangerous-command approval prompt; it times out and the action is blocked.","state":"open","pr":153693,"prs":[{"n":153693,"state":"open","created":"2026-11-11T17:33:14Z"}],"created":"2026-11-11T17:33:14Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/emmaGH1/hermes-offgrid/5332d4d62ea75ff68011059d73a6562e79f08b86/assets/logo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/offgrid.webp"},{"name":"design-discovery","title":"Design Discovery","summary":"Turns a vague product idea into a DESIGN.md a coding agent can build from: a few plain questions, three visual directions, changes in your own words. Loads fonts from Google Fonts.","disclosure":"","category":"desktop","platforms":[],"maintainer":"adip1303","author":"adip1303","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/adip1303/hermes-design-discovery","docs":"https://github.com/adip1303/hermes-design-discovery/blob/b92cb6aa48e000f9ca777386958b58c8fb1fb0ca/README.md","tools":["generate_directions","record_understanding","update_choice","design_discovery_get_state","export_design_md"],"hooks":["pre_llm_call","post_llm_call","pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"Works best on capable models. Weaker models sometimes call a tool wrongly before recovering. Tested on GPT 6 Luna.","state":"open","pr":153692,"prs":[{"n":153692,"state":"open","created":"2026-11-11T17:31:29Z"}],"created":"2026-11-11T17:31:29Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/373c7186-cc11-489d-8671-889be7e3c335","https://github.com/user-attachments/assets/009c5d0f-e04f-4e49-a5f4-b45d47a5e468","https://github.com/user-attachments/assets/9d3d8dfe-f967-48ac-bfc9-d932fee8ab26"],"videos":[],"x":["https://x.com/AroraAdhip/status/2120572051601940804"],"youtube":[],"thumb":"/hackathon/thumbs/design-discovery.webp"},{"name":"keychain","title":"macOS Keychain","summary":"Keep Hermes provider credentials in the macOS login keychain instead of plaintext .env. Registers a SecretSource (secrets.keychain), so startup resolution runs through Hermes's own orchestrator, after ~/.hermes/.env loads and before credentials are read, the same path the bundled Bitwarden and 1Password sources use. Bindings are explicit (secrets.keychain.env: ENV_VAR: keychain-account) or discovered from an index the plugin keeps inside the keychain, so `hermes keychain put NAME` is the whole setup. Adds keychain_status (vault-backed vs still-plaintext inventory; names, lengths and outcomes only), keychain_migrate (store, read back, compare, then replace the .env line with a comment mentioning the name; 0600 backup first) and keychain_audit (fetch/migrate trail), plus a `hermes keychain put|ls|rm|test|migrate|status|audit` CLI.","disclosure":"reads and writes generic-password items in the user's login keychain through /usr/bin/security (service `hermes` by default); no network calls and no third-party service, nothing leaves the machine; the index of stored names lives in a keychain item (`hermes!index`) and the audit log in <hermes home>/plugin-data/keychain/audit.jsonl; only an explicit `keychain_migrate` rewrites ~/.hermes/.env (values removed, comment left behind, 0600 backup written) and it refuses to strip a line whose store did not verify; a locked keychain or denied ACL is a warning, never a startup block; a stored value is passed on argv for the single `security add-generic-password` call (visible to same-user processes for that moment) while reads, the once-per-process hot path, never put a value on argv. macOS-only, no Python dependencies, no env vars.","category":"other","platforms":["macos"],"maintainer":"shoaibyazdani","author":"shoaibyazdani","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/shoaibyazdani/hermes-keychain","docs":null,"tools":["keychain_status","keychain_migrate","keychain_audit"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153690,"prs":[{"n":153690,"state":"open","created":"2026-11-11T17:31:17Z"}],"created":"2026-11-11T17:31:17Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"locus-codegraph","title":"Locus Codegraph","summary":"Rehearse a Python refactor before making it, and catch missed callers when you do. @whatif:<symbol>(<new parameters>) or the locus_rehearse tool binds every statically proven caller against a proposed signature before any file is edited and lists which call sites would break and why. After an edit, the same check appends caller locations, binding errors and, for a renamed keyword, a caller patch to review to the editing tool's result. Covers functions, class constructors, static and class methods, methods on locally constructed instances, and calls inside the edited file, through direct and module-qualified imports, aliases and static re-exports. Receivers whose type is not in view (self, parameters, attributes), decorated callables and dynamic bindings are not checked; other supported languages receive structural indexing only. One local index also powers five tools, @sym:/@impact:/@hotspots: references, /locus commands, and Web Dashboard and Desktop caller inboxes. Suggested tests and impact scores are static heuristics, not execution coverage; no alert or predicted break is not proof of safety.","disclosure":"reads supported workspace source subject to exclusions and size caps, rejects symlink escapes, and stores structure, call shapes, and drift history in profile-scoped SQLite. Expands explicit references and adds diagnostics and proposed patches to editing-tool results and the configured model's context. Does not modify workspace source, apply patches, or run tests. No external network requests, credential access, shell subprocesses, background daemons, or additional runtime packages.","category":"tools","platforms":[],"maintainer":"atikur","author":"atikur","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/atikur/hermes-locus","docs":"https://github.com/atikur/hermes-locus/blob/e083a7c6df70f4f4d54a5247890deb14015d689e/README.md","tools":["locus_map","locus_rehearse","locus_symbol","locus_impact","locus_hotspots"],"hooks":["on_session_start","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153687,"prs":[{"n":153687,"state":"open","created":"2026-11-11T17:28:59Z"}],"created":"2026-11-11T17:28:59Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/atikur/hermes-locus/e083a7c6df70f4f4d54a5247890deb14015d689e/assets/locus-v020-demo-poster.jpg","https://raw.githubusercontent.com/atikur/hermes-locus/e083a7c6df70f4f4d54a5247890deb14015d689e/assets/locus-v020-whatif.jpg","https://raw.githubusercontent.com/atikur/hermes-locus/e083a7c6df70f4f4d54a5247890deb14015d689e/assets/locus-v020-dashboard.jpg"],"videos":["https://github.com/atikur/hermes-locus/releases/download/v0.2.0/locus-codegraph-v0.2.0-demo.mp4"],"x":["https://x.com/atikur97/status/2120568827692122552"],"youtube":[],"thumb":"/hackathon/thumbs/locus-codegraph.webp"},{"name":"onair","title":"On Air","summary":"Hermes inside your OBS. Control scenes, sources, recording and streaming by asking; put cards and chapter titles on stream; design animated scenes or build one from an image, GIF, video or voice line; answer questions about your screen on an overlay; mark the good moments and get the highlight reel, YouTube chapters and a draft title when you stop.","disclosure":"connects to OBS's WebSocket server (127.0.0.1:4455 by default) and nothing else; live_ask sends a screenshot and your question to the model configured in Hermes; runs ffmpeg and ffprobe from PATH with fixed arguments to render reels; writes only under the plugin data directory; no telemetry.","category":"tools","platforms":[],"maintainer":"perfect7613","author":"perfect7613","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/perfect7613/hermes-onair","docs":"https://github.com/perfect7613/hermes-onair/blob/2245b9158300f2a60a5dda859f037b3cc3244b03/README.md","tools":["live_status","live_scene","live_source","live_design_scene","live_output","live_overlay","live_screenshot","live_ask","live_mark","live_session","live_reel","live_obs_request"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"Needs OBS Studio with its WebSocket server enabled (Tools → WebSocket Server Settings). Run /live setup once, then /live doctor to check.; Highlight reels need ffmpeg and ffprobe on PATH. Marks and OBS control work without them.; If OBS's browser engine stops drawing, overlays and designed scenes go blank until OBS is restarted. /live doctor detects this; media scenes and sounds keep working.","state":"open","pr":153686,"prs":[{"n":153686,"state":"open","created":"2026-11-11T17:28:10Z"}],"created":"2026-11-11T17:28:10Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/01-record-by-asking.jpg","https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/02-card-on-stream.jpg","https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/04-designed-scene.jpg","https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/03-scene-screenshot.jpg","https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/05-reel-and-chapters.jpg","https://raw.githubusercontent.com/perfect7613/hermes-onair/4efa0d6657df10b89d677a3ff286c73d80b7a33b/docs/screenshots/06-clips-in-chat.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/onair.webp"},{"name":"onbrief","title":"onbrief","summary":"Keeps outbound posts on the campaign brief. A pre_tool_call hook reads the text of posting and messaging tool calls (name globs, MCP tools included) and checks it against your YAML or JSON rules file: required hashtags, mentions and phrases, banned words and regex patterns, X-weighted length, hashtag limits, required or allowed links, and near-duplicates of posts already sent. A failing call is blocked (or sent to the approval prompt) with every broken rule, a fix, and a passing rewrite when the fix is mechanical. Adds an onbrief_check tool and /onbrief and `hermes onbrief` commands.","disclosure":"no network calls, model calls, shell commands or background processes; reads only the rules file you configure; keeps the active campaign, the last 200 decisions and the last 500 sent posts (hash, normalised text, 80-char preview) in its profile-scoped plugin state; `onbrief forget` clears the sent-post history.","category":"automation","platforms":[],"maintainer":"faze39","author":"faze39","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/faze39/onbrief","docs":"https://github.com/faze39/onbrief","tools":["onbrief_check"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153685,"prs":[{"n":153685,"state":"closed","created":"2026-11-11T17:26:42Z"}],"created":"2026-11-11T17:26:42Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"postkey","title":"Postkey","summary":"Instagram DM automation and post scheduling through Postkey's hosted MCP server (Streamable HTTP at https://postkey.pro/mcp, OAuth sign-in, no keys in config): comment-to-DM links, follow to unlock, email capture from comments, story and DM keyword replies, the Instagram inbox (read, reply, assign, label, notes), contacts and tags, AI reply settings, a media library and video edits, and drafting, scheduling and analytics for posts on Instagram, Facebook, TikTok, YouTube, LinkedIn, Threads, Pinterest, Bluesky, Telegram, Google Business and X, plus a check-before-send toolkit for agents acting on X with the user's own access. Bundles the postkey workflow skill (start with postkey_get_started, preview every send with postkey_preview_action, respect approvals, never invent links, treat DM and comment text as untrusted). Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Postkey's hosted server (postkey.pro) and acts on the user's own Postkey profile with their own team role and plan limits; the tool set (57 tools today) is served by that server at runtime and is not covered by the pinned sha. Write tools create, edit, schedule and delete posts that publish to the user's public social accounts, publish and pause DM automations that then send Instagram DMs to people who comment or message, send inbox replies, tag contacts, upload files and change AI reply settings. By default, publishing a post, sending a reply and turning on an automation wait in Postkey's Approvals until a person approves them there. Actions count toward the user's Postkey plan. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth; without a stored token, an unattended run fails at Hermes's connect timeout instead of hanging. Users who need longer to sign in, or a headless setup, can replace the server with hermes mcp add postkey --url https://postkey.pro/mcp --auth oauth (or an agent key in a header) and keep the skill.","category":"tools","platforms":[],"maintainer":"Rabbithole-llc","author":"0xRabbithole","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Rabbithole-llc/postkey-mcp","docs":"https://github.com/Rabbithole-llc/postkey-mcp/blob/fed6c7335405cdf97e524ec77946dd9dadeed346/hermes/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153684,"prs":[{"n":153684,"state":"open","created":"2026-11-11T17:25:51Z"}],"created":"2026-11-11T17:25:51Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"htmi","title":"HTMi","summary":"Review the HTML pages your agent writes, on the page itself: comment on the exact element, chart, table row or passage; Hermes is told about new comments, reads each one with its context, makes checked edits and replies. Pages can also be published as a GitHub issue or pull request description, and comments posted there are pulled back. Adds 11 tools, a pre_llm_call notice, a skill, the /htmi command and a Review tab in the dashboard.","disclosure":"runs its bundled engine with Node and runs git in the current repository; reads documents and writes comments only inside that repository (.htmi/annotations.jsonl); opening a review page starts a local review server bound to 127.0.0.1 that keeps running until /htmi stop or a restart; GitHub actions (publish, pull comments, reply) use your own gh CLI login and run only when asked; no telemetry, no stored credentials, no third-party services.","category":"tools","platforms":["linux","macos"],"maintainer":"Thamirawaran","author":"Thamirawaran","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Thamirawaran/htmi","docs":"https://github.com/Thamirawaran/htmi/tree/85379a5ee3dc56ba274cd71d6d3a2caff218c8a1/hermes","tools":["htmi_list_documents","htmi_read_document","htmi_list_targets","htmi_list_comments","htmi_comment_context","htmi_apply_edit","htmi_reply","htmi_validate","htmi_pull_comments","htmi_publish_description","htmi_open_review"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Needs Node.js 20.11 or newer (Hermes installs one).","state":"open","pr":153680,"prs":[{"n":153680,"state":"open","created":"2026-11-11T17:22:46Z"}],"created":"2026-11-11T17:22:46Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Thamirawaran/htmi/85379a5ee3dc56ba274cd71d6d3a2caff218c8a1/assets/banner.png","https://raw.githubusercontent.com/Thamirawaran/htmi/85379a5ee3dc56ba274cd71d6d3a2caff218c8a1/hermes/assets/review-tab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/htmi.webp"},{"name":"rh-preflight","title":"rh-preflight","summary":"rh-preflight by quotum with HEY Research Lab. Before Hermes acts on Robinhood Chain (chain 4663), a pre_tool_call hook reads HEY Research Lab's builder record and ten Robinhood Chain projects for the addresses, agent ids, pools or repositories in the call, then applies your own rules: go, ask (a human approval prompt) or stop when unattended. The card lists each source's line with its link; builder_card and /rh-preflight read a card without acting. Desktop page shows recent checks and human answers.","disclosure":"sends only the identifiers you act on to the source hosts listed in the README, plus read-only Robinhood Chain RPC, DexScreener and GeckoTerminal reads; keyless and free, no payments, signatures, subprocesses or writes. Stores a local SQLite ledger of checks in its own plugin data folder. Source records describe what each project published; rh-preflight does not call a token good or bad.","category":"tools","platforms":["linux","macos"],"maintainer":"quotumorg","author":"quotumorg","version":"0.5.3","requires_hermes":">=0.23.0","repo":"https://github.com/quotumorg/rh-preflight","docs":"https://github.com/quotumorg/rh-preflight/blob/594a01f54de46691c1903589fa988dd347ff11ff/README.md","tools":["builder_card"],"hooks":["pre_tool_call","transform_tool_result","post_approval_response"],"middleware":[],"env":[],"known_issues":"Fail-closed: when a source does not answer inside the shared timeout (default 4 s), the card says so and your rule may ask instead of go.; Detection covers up to five addresses per call in configured action tools; tool names are matched by the tool_patterns setting.; The approval adapter reads private Hermes approval helpers; tested on Hermes v0.23.0 and v0.23.1, the floor does not establish later compatibility.","state":"open","pr":153679,"prs":[{"n":153679,"state":"open","created":"2026-11-11T17:22:05Z"}],"created":"2026-11-11T17:22:05Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/quotumorg/rh-preflight/594a01f54de46691c1903589fa988dd347ff11ff/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rh-preflight.webp"},{"name":"consequence-map","title":"ConsequenceMap","summary":"Decision intelligence for AI agents: forecasts the consequence of an action before it happens, preserves the decision and its evidence, and compares the forecast with what actually occurred. An outcome that cannot be verified stays NOT_VERIFIABLE, so the derived verdict is INCONCLUSIVE rather than a clean pass. Five Hermes hooks (pre_tool_call, pre_approval_request, post_approval_response, post_tool_call, transform_tool_result); a dashboard tab and a command-palette entry. The agent proposes and escalates; it never decides and never holds a key.","disclosure":"the Security Guard that decides and executes is a library and is NOT installed on any host, so the authorization boundary this plugin exists to provide is not yet active; the plugin records and escalates but cannot refuse. It reads the host's operation stream and writes to its own database under the Hermes plugin-data directory, reached through the public plugins.plugin_storage surface; it imports no private Hermes module. No network calls, no telemetry, no stored credentials, no background processes. The subdir points at the directory that holds plugin.yaml; a subdirectory install fetches only that directory, so see known_issues for the packaging limitation at this pin.","category":"desktop","platforms":["windows"],"maintainer":"BitSempre","author":"BitSempre","version":"0.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/BitSempre/ConsequenceMap","docs":"https://github.com/BitSempre/ConsequenceMap/tree/2f6d681e7bcdb0c19c1a5632663b24b3dc4b8a04/ConsequenceMap","tools":[],"hooks":["pre_tool_call","pre_approval_request","post_approval_response","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"The Security Guard is not installed on any host, so the authorization boundary is not enforced; the plugin escalates and records but cannot refuse.; Revocation of an Ed25519 key is not observed by a verifier that was already constructed.; The audit trail exposes no public API for full chain verification; the checkpoint detects a tampered record_hash only.; The repository contains an older duplicated snapshot of the tree alongside the live one; it is history, not a second product.; A subdirectory install of this pin checks out only ConsequenceMap/plugin/, so the implementation package ConsequenceMap/consequence_map/ is not fetched with it and the plugin registers 0 hooks. Install the repository root instead, or use a build where the implementation package lives inside the plugin directory.","state":"open","pr":153678,"prs":[{"n":153678,"state":"open","created":"2026-11-11T17:21:18Z"}],"created":"2026-11-11T17:21:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dosbox-mcp","title":"dosbox-mcp","summary":"Drive a DOS machine from the agent through dosbox-automation's own MCP bridge: type and press keys, read the screen, take screenshots, record video and audio, run Lua scripts inside the emulator, read and write its memory. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only: it starts the bridge with uvx dosbox-mcp==0.2.4 from PyPI and bundles one usage skill.","disclosure":"runs `uvx dosbox-mcp==0.2.4` (dosbox-automation's own bridge from PyPI) as a local stdio MCP server that talks only to the separately installed dosbox-automation emulator on 127.0.0.1, using the API token the emulator writes to its own config folder (read-only); its tools type keys, read the screen, take screenshots and recordings into the emulator's capture folder, run Lua scripts inside the emulator and read/write the emulated machine's memory, CPU registers and I/O ports; a Lua script or a direct REST call (session_info hands the agent a curl example and the token file location) can write an audio recording to any non-system path and use API routes beyond the bridge's capability mode; `bridge_start` launches the emulator binary named in the bridge's human-edited config and `bridge_setup` changes only the headless and protocol settings; host folders reach DOS only through MOUNT below the emulator's `mount_allowed_bases`; no telemetry, no accounts.","category":"tools","platforms":["linux","windows","macos"],"maintainer":"dosbox-automation","author":"shakeyourbunny","version":"0.2.4","requires_hermes":">=0.21.6","repo":"https://github.com/dosbox-automation/dosbox-mcp","docs":"https://github.com/dosbox-automation/dosbox-mcp/tree/2a3af7c9f4d7c859aad48937fac0a4ede180c08a/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153675,"prs":[{"n":153675,"state":"open","created":"2026-11-11T17:16:58Z"}],"created":"2026-11-11T17:16:58Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"talaria-bench","title":"Talaria Bench","summary":"A physics test bench for DIY servo robots: build your robot from a template and a few measurements, see it in 3D next to its photo, run a one-click MuJoCo arena (flat, ramps, bars, pushes, slippery floor) across randomized worlds with a report card that says why it fails, compare design variants or watch a changed version side by side in the Arena, and gate robot_play / robot_pose with an exact-motion preflight in simulation before a move may play on the real robot (ESP32 + PCA9685 firmware included, or a virtual robot). CPU only, no GPU, no CAD.","disclosure":"the automatic return to home (before a move and on robot_stop) is speed-limited (at least 3 s) but not simulated on its own; runs benchmark and comparison jobs as background Python subprocesses with worker pools (up to N-1 cores each, at most 2 jobs at once); starts local virtual-robot HTTP servers on 127.0.0.1 (random port, no token) on demand, and `hermes talaria sim` listens on 127.0.0.1:8765 unless --host is given; sends plain HTTP only to the robot address you set (bypassing proxies; the robot token travels unencrypted on your LAN); reads a robot photo only from a path you give under your home or Hermes folder; writes robots, photos, moves, approvals, jobs, reports and caches under $HERMES_HOME/plugin-data/talaria-bench (the trace cache is not pruned). The optional robot token is a Hermes secret. No third-party services, shell commands, downloads or telemetry.","category":"tools","platforms":["windows","macos","linux"],"maintainer":"devorun","author":"devorun","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/devorun/talaria-bench","docs":"https://github.com/devorun/talaria-bench#readme","tools":["robot_list","robot_define","robot_show","bench_run","bench_status","bench_report","bench_compare","move_check","move_save","move_list","robot_play","robot_pose","robot_stop","robot_status"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153671,"prs":[{"n":153671,"state":"open","created":"2026-11-11T17:11:24Z"}],"created":"2026-11-11T17:11:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/banner.png","https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/screens/dashboard-gallery.png","https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/screens/dashboard-robot-caduceus.png","https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/screens/dashboard-arena-spider8-ramp10.png","https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/screens/dashboard-report-spider8.png","https://raw.githubusercontent.com/devorun/talaria-bench/511006ebe6ec8156b080f98e24698ef8ffa84660/docs/img/screens/dashboard-check-arms_up_both-blocked.png"],"videos":[],"x":["https://x.com/Devran1An/status/2120553652175736847","https://x.com/Devran1An/status/2120555033800348074"],"youtube":[],"thumb":"/hackathon/thumbs/talaria-bench.webp"},{"name":"corkboard","title":"Corkboard","summary":"One shared board, across every profile, of things only you can do. Agents pin a task, a yes/no question, a choice of up to four (their recommendation starred) or a text question instead of burying it in chat; you answer from a Desktop side pane, the full Corkboard page, `hermes corkboard` or `/corkboard`. Blocked kanban cards are pinned automatically and your answer goes back to the card as an \"Owner decision\" comment, which resumes the worker. Pins can clear themselves when a check passes (nameservers changed, a kanban card unblocked). Text pins never ask for secrets; credential needs are always tasks.","disclosure":"keeps one SQLite board shared by all profiles at ~/.hermes/plugin-data/corkboard/data.db, so every profile with the plugin enabled (and any authorized gateway user via `/corkboard`) can read, answer, complete or dismiss every profile's pins and answers; runs `dig +short NS` for DNS checks and `hermes kanban show/list/comment` to read cards and post owner answers (an agent chooses which card a pin's answer is posted to); owner-added `--check-command` checks run a shell command (5s timeout) on `hermes corkboard check` without an approval prompt (the agent tool cannot create them); no network calls of its own beyond DNS lookups, no background process, no cron, no telemetry.","category":"tools","platforms":[],"maintainer":"elijahboston","author":"elijahboston","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/elijahboston/hermes-corkboard","docs":"https://github.com/elijahboston/hermes-corkboard#readme","tools":["corkboard"],"hooks":["kanban_task_blocked","kanban_task_completed","on_kanban_dispatch_tick"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153669,"prs":[{"n":153669,"state":"open","created":"2026-11-11T17:10:54Z"}],"created":"2026-11-11T17:10:54Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/00-app.png","https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/01-yes-no.png","https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/02-choice.png","https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/03-kanban.png","https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/04-check.png","https://raw.githubusercontent.com/elijahboston/hermes-corkboard/349d1f8417fb4d3c6cb9ca621cbe5bd7ba11aa0e/docs/screenshots/05-dismissed.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/corkboard.webp"},{"name":"iv-studio","title":"IV Studio","summary":"Free, local video and pictures on your own NVIDIA GPU: makes IV Studio (MiniMax H3 + ComfyUI) a video_generate and image_generate backend, with sound and speech, trained characters by name, first-frame and reference pictures, and finishes up to about 2752x1536, plus iv_studio_status and iv_studio_result (long renders hand back a job id and carry on) and a bundled skill.","disclosure":"starts the locally installed IV Studio app's own MCP server as a child process for each request (stops when it ends); reads finished files from the local ComfyUI on 127.0.0.1; downloads a picture only when you pass an http(s) URL; saves those under HERMES_HOME/plugin-data/iv-studio and copies results into Hermes's media cache; no credentials, no telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"hollisorg","author":"hollisorg","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/hollisorg/hermes-iv-studio","docs":"https://github.com/hollisorg/hermes-iv-studio#readme","tools":["iv_studio_status","iv_studio_result"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153664,"prs":[{"n":153664,"state":"open","created":"2026-11-11T17:05:05Z"}],"created":"2026-11-11T17:05:05Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"openrouter-balance","title":"openrouter-balance","summary":"Live OpenRouter credit balance in the Hermes desktop status bar — \"OR $12.34 left\", with total/used/remaining on hover, amber below 15% remaining, click to refetch. Polls every 5 minutes idle and refetches ~8 s after each chat turn. The plugin's Python half resolves the profile's OPENROUTER_API_KEY through agent.secret_scope (profile-scope aware, safe under multiplexing; the key never leaves the backend) and proxies the free openrouter.ai /api/v1/credits endpoint, mounted at /api/plugins/openrouter-balance/* behind the dashboard auth gate. The desktop half registers a statusBar.right chip via @hermes/plugin-sdk. The Python register() is a no-op — no tools, hooks or middleware.","disclosure":"the only network egress is the openrouter.ai credits call authenticated with the user's own key; no telemetry; no file reads outside Hermes's own env resolution; no shell commands or background processes. Honest error chips (no key / bad key / offline / error) instead of silent failures; offline retries every 2 minutes.","category":"desktop","platforms":[],"maintainer":"maeinomatic","author":"maeinomatic","version":"1.0.2","requires_hermes":"","repo":"https://github.com/maeinomatic/hermes-plugin-openrouter-balance","docs":null,"tools":[],"hooks":[],"middleware":[],"env":["OPENROUTER_API_KEY"],"known_issues":"","state":"open","pr":153663,"prs":[{"n":153663,"state":"open","created":"2026-11-11T17:03:26Z"}],"created":"2026-11-11T17:03:26Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"repager","title":"repager","summary":"Evidence-bound hero design lab with approved copy, local layout exploration, revision-bound browser checks and portable review handoffs.","disclosure":"captures the public page you name with a locally installed Node.js + Playwright + Chromium (you install the npm dependencies and Chromium; nothing is downloaded at runtime) through a public-address-only local proxy; when you enable allow_model_calls it sends the captured page text, your brief and the approved copy to the host model configured under auxiliary.repager_layout; `hermes repager` opens an optional token-protected workbench on 127.0.0.1; reviews, screenshots and ZIP exports are kept under HERMES_HOME/plugin-data/repager.","category":"web","platforms":["linux"],"maintainer":"clawpawtech","author":"clawpawtech","version":"0.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/clawpawtech/hermes-repager","docs":"https://github.com/clawpawtech/hermes-repager/blob/fc354afe99ab041e096efee4d87d20190ae0d040/README.md","tools":["repager_capture","repager_get","repager_scope","repager_list","repager_approve","repager_generate","repager_remix","repager_decide","repager_verify","repager_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Node.js 20+, npm dependencies and separately provisioned compatible Chromium; no browser downloads at runtime.; Linux verified; POSIX file locking is required. Native Windows is unsupported.; Model calls are off until consented. Generation requires an explicit host auxiliary route without fallback chains. Local revisions use no additional inference.; Text-only hero alternatives, not whole-site reconstruction or proven conversion improvement; human review remains necessary.; Chromium sandboxing is on by default. Opt out only with separate appropriate container/VM isolation.","state":"open","pr":153660,"prs":[{"n":153660,"state":"open","created":"2026-11-11T17:01:22Z"}],"created":"2026-11-11T17:01:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"siteform","title":"SiteForm","summary":"Review planning PDFs, compare evidence-linked 3D options in Hermes chat, and edit the same revision in Studio.","disclosure":"The siteform_import_pdf tool reads any local .pdf file whose absolute path the agent supplies and stores a copy in this profile's SiteForm library (plugin-data/siteform); optional \"use model\" quantity extraction sends selected PDF text rows to your configured Hermes model; OCR runs locally with bundled Tesseract tessdata_fast data, and the plugin makes no other network calls.","category":"desktop","platforms":["windows"],"maintainer":"duclucky","author":"duclucky","version":"0.15.0","requires_hermes":">=0.22.7","repo":"https://github.com/duclucky/siteform","docs":"https://github.com/duclucky/siteform#readme","tools":["siteform_position_studies","siteform_position_study","siteform_save_position_option","siteform_project_review","siteform_confirm_facts","siteform_height_study","siteform_save_study_option","siteform_check","siteform_revise_option","siteform_view_options","siteform_roof_study","siteform_import_pdf","siteform_documents","siteform_review_pdf","siteform_intake","siteform_detect","siteform_scene","siteform_options","siteform_create","siteform_propose","siteform_compare"],"hooks":[],"middleware":[],"env":[],"known_issues":"Concept massing on flat ground; not BIM or a regulatory compliance determination.; A new library starts empty. Supply a PDF and confirm its scale, outlines and heights.","state":"open","pr":153658,"prs":[{"n":153658,"state":"open","created":"2026-11-11T16:58:18Z"}],"created":"2026-11-11T16:58:18Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/duclucky/siteform/be9b797345e695630318c66b5245657738767b9b/docs/banner.png","https://raw.githubusercontent.com/duclucky/siteform/be9b797345e695630318c66b5245657738767b9b/docs/chat-3d.jpg","https://raw.githubusercontent.com/duclucky/siteform/be9b797345e695630318c66b5245657738767b9b/docs/limits.jpg","https://raw.githubusercontent.com/duclucky/siteform/be9b797345e695630318c66b5245657738767b9b/docs/studio.jpg"],"videos":[],"x":["https://x.com/0xDucky1st/status/2120566068213391590"],"youtube":[],"thumb":"/hackathon/thumbs/siteform.webp"},{"name":"sovereign-finance","title":"Sovereign Finance","summary":"A self-custodial Smart Agentic Wallet for your agent on BNB Chain and Ethereum, with a Desktop pane. Your passkey is the admin, and the agent's session key is limited onchain to the contracts, functions and daily caps you approve. Powered by Altana.","disclosure":"talks to the Altana relay, public RPCs, DexScreener and skills.altana.network; runs a bundled Node CLI; serves one localhost page for passkey prompts; stores session keys (mode 0600) in plugin-data; a pre_tool_call hook guards its files and gates sovereign_execute behind approval; no telemetry.","category":"tools","platforms":["macos","linux"],"maintainer":"gabonaut","author":"gabonaut","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/gabonaut/hermes-sovereign-finance","docs":"https://github.com/gabonaut/hermes-sovereign-finance#readme","tools":["sovereign_status","sovereign_positions","sovereign_quote","sovereign_execute","sovereign_skill"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"The session scope limits contracts, functions and daily amounts. Recipients are set by the plugin before signing, so keep the session key file private.; YOLO mode, approvals.mode off and approvals.cron_mode approve skip the approval prompt. The onchain limits still apply.; Verified on BNB Chain, BNB testnet and Sepolia. Ethereum mainnet activation is not verified: start on BNB Chain.; Works best with a capable model. A small model may not find the plugin's tools unless the request names one.","state":"open","pr":153654,"prs":[{"n":153654,"state":"open","created":"2026-11-11T16:53:25Z"}],"created":"2026-11-11T16:53:25Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/9ff5c773ecb0b391d8eb7ab3f0dea745a4a4d385/assets/catalog.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/9ff5c773ecb0b391d8eb7ab3f0dea745a4a4d385/assets/screenshots/1-setup-steps.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/9ff5c773ecb0b391d8eb7ab3f0dea745a4a4d385/assets/screenshots/2-permissions.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/9ff5c773ecb0b391d8eb7ab3f0dea745a4a4d385/assets/screenshots/3-position-in-range.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/9ff5c773ecb0b391d8eb7ab3f0dea745a4a4d385/assets/screenshots/4-refused-transfer.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/985f7c4545f95207d37b35f292dfacf8d3630c90/pane/dev/screenshots/core-480-1.png","https://raw.githubusercontent.com/gabonaut/hermes-sovereign-finance/985f7c4545f95207d37b35f292dfacf8d3630c90/pane/dev/screenshots/core-480-2.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sovereign-finance.webp"},{"name":"ghl-command","title":"GHL Command","summary":"GoHighLevel lives inside Hermes. Create contacts, move deals, send email and SMS, trigger workflows from chat. Live in 90 seconds, no browser clicks.","disclosure":"","category":"tools","platforms":[],"maintainer":"PXMichael","author":"PXMichael","version":"0.1.0","requires_hermes":"","repo":"https://github.com/PXMichael/GHL-Command","docs":null,"tools":["ghl_list_contacts","ghl_search_contacts","ghl_create_contact","ghl_update_contact","ghl_delete_contact","ghl_send_sms","ghl_send_email","ghl_list_pipelines","ghl_search_opportunities","ghl_move_opportunity","ghl_list_workflows","ghl_enroll_workflow"],"hooks":[],"middleware":[],"env":["GHL_API_KEY","GHL_LOCATION_ID"],"known_issues":"","state":"open","pr":153653,"prs":[{"n":153653,"state":"open","created":"2026-11-11T16:53:13Z"}],"created":"2026-11-11T16:53:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"logmine","title":"Logmine","summary":"Exact, local intelligence over large text log files. log_summarize mines the file into recurring message templates (masking numbers, IPs, UUIDs, hashes, quoted strings and timestamps so near-identical lines collapse into one ranked pattern with an exact count), plus a level histogram and the detected time span; log_grep is regex search with line numbers and grep-style context; log_timeline buckets events per minute/hour/day to find spikes. Streamed, so a log too big to fit in the model's context still works. Standard library only: no network, no credentials, no background processes, no self-update.","disclosure":"reads the local log path you pass it (read-only).","category":"tools","platforms":[],"maintainer":"rodricksz4h5","author":"rodricksz4h5","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/rodricksz4h5/logmine","docs":"https://github.com/rodricksz4h5/logmine/tree/3bc384e2fe1abb9a9d5b94dd33ebdbc98cad7aab","tools":["log_summarize","log_grep","log_timeline"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153651,"prs":[{"n":153651,"state":"open","created":"2026-11-11T16:51:41Z"}],"created":"2026-11-11T16:51:41Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-continuum","title":"hermes-continuum","summary":"An integrated nine-system plugin for Hermes Agent that provides task continuity, review-first episodic memory, environment reality checks, evidence tracking, goal integrity, trust-aware tool policies, impact previews, retry-loop protection, and verified workflow distillation. Its systems share an append-only SQLite Event Spine and a Continuum Console for Hermes Desktop. Includes 12 tools, 11 lifecycle hooks, checkpoint export, and a review-first approach to generated artifacts. Live verification and test coverage are documented in the repository; not every capability has been verified in a live host workflow.","disclosure":"Records every tool call, approval prompt/response and session event (with redacted argument previews) in a local plugin database; its pre_tool_call policy can block tool calls or escalate them to Hermes' approval prompt, labels web/browser results as untrusted, injects recalled memory facts (including unreviewed candidates) and an auto-built task charter into each turn, and its model-callable continuum_forge tool can register new plugin skills and automation blueprints distilled from session traces when called with confirm: true.","category":"desktop","platforms":[],"maintainer":"mohamad-shafeez","author":"mohamad-shafeez","version":"0.3.0","requires_hermes":">=0.22.2","repo":"https://github.com/mohamad-shafeez/hermes-continuum","docs":"https://github.com/mohamad-shafeez/hermes-continuum#readme","tools":["continuum_status","continuum_recall","continuum_memory_review","continuum_dream","continuum_checkpoint","continuum_reality","continuum_evidence","continuum_charter","continuum_preview","continuum_execution","continuum_forge","continuum_lease"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","pre_llm_call","post_llm_call","on_session_start","on_session_end","on_session_finalize","on_session_reset","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153650,"prs":[{"n":153650,"state":"open","created":"2026-11-11T16:51:14Z"}],"created":"2026-11-11T16:51:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mohamad-shafeez/hermes-continuum/5da4774fb7453447aeae61f3d3288dbbf20d914c/docs/screenshots/continuum-timeline-fresh.png","https://raw.githubusercontent.com/mohamad-shafeez/hermes-continuum/5da4774fb7453447aeae61f3d3288dbbf20d914c/docs/screenshots/continuum-security-fresh.png","https://raw.githubusercontent.com/mohamad-shafeez/hermes-continuum/5da4774fb7453447aeae61f3d3288dbbf20d914c/docs/screenshots/continuum-security-checkpoints-fresh.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-continuum.webp"},{"name":"sightline","title":"Sightline","summary":"Give your Hermes agent a Solana wallet without giving it your wallet. Intent-level SOL and SPL tools, including Solana Pay payment links; every send is simulated, explained in plain English and checked by a firewall against human-issued, time-boxed, revocable grants (caps per day, week or month) before the plugin signs it. Cron jobs and bots can pay inside a grant unattended. The model never sees the key, has no raw-transaction tool and cannot create or widen grants. ALLOW / APPROVE / BLOCK with a hash-chained audit log and a Desktop pane. Devnet by default.","disclosure":"stores a Solana secret key in the profile .env (never shown to the model or in output); sends simulation and transaction requests to the configured Solana RPC (default api.devnet.solana.com); mainnet only with SIGHTLINE_ALLOW_MAINNET=1; no telemetry.","category":"tools","platforms":[],"maintainer":"OutstandingVick","author":"OutstandingVick","version":"0.6.5","requires_hermes":">=0.23.0","repo":"https://github.com/OutstandingVick/sightline","docs":"https://github.com/OutstandingVick/sightline#readme","tools":["sightline_status","sightline_balance","sightline_preview","sightline_pay"],"hooks":["pre_tool_call"],"middleware":[],"env":["SIGHTLINE_SECRET_KEY"],"known_issues":"","state":"open","pr":153649,"prs":[{"n":153649,"state":"open","created":"2026-11-11T16:50:38Z"}],"created":"2026-11-11T16:50:38Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/docs/screenshots/demo.gif","https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/docs/screenshots/pane-04-block-light.png","https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/docs/screenshots/unattended-cron.png","https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/docs/screenshots/weekly-budget.png","https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/docs/screenshots/pane-03-allow-sent-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sightline.webp"},{"name":"riah-swipe","title":"Riah Swipe","summary":"Swipe through what your agent made. Hermes puts a batch of options (images, video, audio, names, taglines) into a swipe deck; you keep, cut, or send one back with a note, and Hermes remakes the ones you sent back. On Telegram the deck appears in the chat with Keep, Cut, Redo and Undo buttons, and you type a note on any card to say why; elsewhere you get a sign-in board link for desktop or phone. Runs a small local HTTP server inside Hermes and writes only to its plugin-data folder; no extra dependencies, telemetry or accounts. Full disclosure in the README.","disclosure":"runs a local HTTP board server inside Hermes (127.0.0.1 by default; every browser signs in once with a one-time link), and with `lan: true` it listens on all network interfaces (0.0.0.0) over plain HTTP; the board page loads fonts from Google Fonts (fonts.googleapis.com, fonts.gstatic.com), and `https://` media links on cards are loaded by your browser and by Telegram; `swipe_publish` copies local media from the working folder, Hermes' media caches, the temp folders and `media_dirs` into its plugin-data folder; while a Telegram deck is open, the swiper's own text and voice messages become card notes instead of reaching Hermes, and voice notes go through your configured Hermes speech-to-text.","category":"tools","platforms":[],"maintainer":"Riah Studio","author":"RiahStudio","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/RiahStudio/riah-swipe","docs":"https://github.com/RiahStudio/riah-swipe/tree/513609d47b27a2703a2fd5bcb2fa54ce35d3d966/hermes-plugin#readme","tools":["swipe_publish","swipe_status","swipe_results","swipe_wait"],"hooks":["pre_llm_call","pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153647,"prs":[{"n":153647,"state":"open","created":"2026-11-11T16:48:11Z"}],"created":"2026-11-11T16:48:11Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"andreed","title":"Andreed","summary":"Deterministic Android device-care tools for Hermes: audits storage and bounded total/metered data usage, reports main-process state, restricts metered background data, force-stops selected third-party apps, and requests safe device-wide cache trimming.","disclosure":"runs local adb and bounded argv-only adb shell commands; reads device identifiers, Android version, package names, UIDs, storage, netstats and netpolicy state; detailed netstats above its processing cap fall back to since-boot totals without a metered split; mutations require per-call Hermes approval; no raw shell, pm clear, credentials, telemetry or third-party service; ADB may run its standard local server; requires owner-authorized USB or wireless debugging.","category":"tools","platforms":["windows","macos","linux"],"maintainer":"Agozie180","author":"Agozie180","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Agozie180/andreed","docs":"https://github.com/Agozie180/andreed#readme","tools":["andreed_doctor","andreed_scan","andreed_force_stop","andreed_set_background_data","andreed_trim_caches"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153646,"prs":[{"n":153646,"state":"open","created":"2026-11-11T16:46:22Z"}],"created":"2026-11-11T16:46:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-chrome","title":"Hermes Chrome","summary":"Let Hermes control your paired Chrome with a visible cursor, isolated tab group, human handoff, side-panel chat, and recorded workflows.","disclosure":"","category":"web","platforms":[],"maintainer":"Dhana","author":"whoisdhana","version":"0.9.0","requires_hermes":">=0.21.3","repo":"https://github.com/whoisdhana/hermes-chrome","docs":null,"tools":["chrome_status","chrome_tabs","chrome_open","chrome_close","chrome_navigate","chrome_read_page","chrome_find","chrome_text","chrome_screenshot","chrome_click","chrome_type","chrome_key","chrome_scroll","chrome_batch","chrome_wait","chrome_handoff","chrome_eval","chrome_plan","chrome_report","chrome_replay","chrome_extract","chrome_export"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153641,"prs":[{"n":153641,"state":"open","created":"2026-11-11T16:44:35Z"}],"created":"2026-11-11T16:44:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"patient-research","title":"Patient Research","summary":"Deterministic clinical trial, medical literature, and early treatment signal research watcher for patients and caregivers (English & Russian). Python 3.11+ standard library only (MIT license, zero pip dependencies): deterministic evidence grading, time-since-onset eligibility window screening with zero false rejections, exact eligibility quote verification, code-rendered Markdown reports, printable 1-page doctor/coordinator handoff packets (.md + .html), and a 0-token /pr slash command. Not medical advice and does not replace a clinician.","disclosure":"sends only English condition/method/institution search terms or public record IDs (NCT, PMID, DOI, ROR, Q-id) — never patient age, sex, onset date, location, clinical history, or free text — to ClinicalTrials.gov, NCBI PubMed and MeSH, Crossref, Google News RSS, GDELT, ROR, and Wikidata. Opens ROR/Wikidata-verified official hospital/institution websites (for public contact lookup) and news articles over SSRF-checked HTTPS without patient data, and uses Hermes web tools when the agent analyses news. Attaches optional contact_email strictly to allowlisted NCBI (eutils.ncbi.nlm.nih.gov, pmc.ncbi.nlm.nih.gov) and Crossref (api.crossref.org) polite-pool requests, and optional PATIENT_RESEARCH_NCBI_API_KEY (config_schema secret via Hermes get_secret) strictly to NCBI E-utilities. Stores local profiles, snapshots, screenings, and an HTTP response cache in SQLite (data.db) plus Markdown/HTML report and handoff files inside HERMES_HOME/plugin-data/patient-research/ until deleted; chat messages and tool results still flow through your configured Hermes messaging platform and model provider. Registers a transform_llm_output hook that attaches the code-rendered report or handoff deliverable on turns where one was built and leaves all other replies unchanged. Only when you explicitly call pr_watch_schedule, writes HERMES_HOME/scripts/patient_research_watch.py and watch_config.json (holding contact_email, without the NCBI key) and creates one hermes cron create --no-agent --script job that calls no LLM and stays silent when nothing changed; unscheduling the last profile removes the job, script, and watch_config.json. No telemetry or self-update.","category":"tools","platforms":[],"maintainer":"solo386","author":"solo386","version":"0.5.2","requires_hermes":">=0.23.0","repo":"https://github.com/solo386/patient-research","docs":"https://github.com/solo386/patient-research#readme","tools":["pr_sources_status","pr_resolve_condition","pr_profile_save","pr_profile_get","pr_profile_list","pr_profile_delete","pr_find_trials","pr_trial_detail","pr_screen_record","pr_find_papers","pr_signals","pr_signal_enrich","pr_signal_contact","pr_institution_contacts","pr_watch_preview","pr_watch_schedule","pr_watch_unschedule","pr_report","pr_check_method","pr_handoff"],"hooks":["transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153640,"prs":[{"n":153640,"state":"closed","created":"2026-11-11T16:44:04Z"}],"created":"2026-11-11T16:44:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"topoi","title":"Topoi","summary":"Group your Hermes Agent chats into topics, in Hermes Desktop and in the Dashboard. A sidebar lists the topics active in the past week with a status dot per thread (working, waiting, unread, idle), a new chat files under your home topic, threads move between topics, and a topic's threads are searchable by message content. Cron job results arrive as topic threads you can reply to, and the reply continues that run's session. The gateway owns one topic registry and both clients read and write it over the plugin's REST API, so an edit in the Dashboard reaches the desktop app.","disclosure":"registers a gateway platform adapter that runs in the Hermes process on the gateway event loop; serves an HTTP API at /api/plugins/topoi/ through the plugin host on the Dashboard's own origin and auth; writes the topic registry and the framework home_channel projection into config.yaml; keeps session-to-topic bindings in a plugin-private SQLite database; reads the per-profile session databases and the cron job store to list threads and their results; bundles one skill; makes no third-party network calls, stores no credentials and reports no telemetry.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"AlaisterLeung","author":"AlaisterLeung","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/AlaisterLeung/topoi","docs":"https://github.com/AlaisterLeung/topoi#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153638,"prs":[{"n":153638,"state":"open","created":"2026-11-11T16:39:49Z"}],"created":"2026-11-11T16:39:49Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AlaisterLeung/topoi/4da93e404457bcf4616031393fff31eda5b4c412/docs/screenshots/desktop-new-chat.png","https://raw.githubusercontent.com/AlaisterLeung/topoi/4da93e404457bcf4616031393fff31eda5b4c412/docs/screenshots/desktop-settings.png","https://github.com/user-attachments/assets/191d8c85-3758-4868-84a4-ab9e8ebaeb97","https://github.com/user-attachments/assets/dbea9378-9cdb-4237-b91d-37e93cc43ea2"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/topoi.webp"},{"name":"incognito-private-mode","title":"incognito-private-mode","summary":"Private mode, honestly: provider privacy flags, memory blocks stripped from main-chat requests (provenance-checked against the last 6 observed file versions, fail-closed outside that window), tool vetoes on unclassified tools, honest coverage labels, and consent-gated fenced history cleanup on close (exact-id + transcript + closed-state fences, archived chats excluded). Content-free outbound audit log (endpoints + verdicts only, local 0600). No telemetry; the plugin itself makes no network calls. Disclosed limits: auxiliary-call fan-out not stripped, MoA advisors receive the full unstripped request before private mode blocks the aggregation, provider-side retention guarantees impossible.","disclosure":"","category":"other","platforms":[],"maintainer":"Tranquil-Flow","author":"Tranquil-Flow","version":"0.3.0","requires_hermes":"","repo":"https://github.com/Tranquil-Flow/incognito-private-mode","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153637,"prs":[{"n":153637,"state":"open","created":"2026-11-11T16:39:39Z"}],"created":"2026-11-11T16:39:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-artifacts","title":"Hermes Artifacts","summary":"Claude-style artifacts for Hermes: docs, sheets, whiteboards, slide decks, dashboards, designs, 3D models, films and design systems that Hermes makes and you edit in place, versioned, in a gallery and sandboxed viewer inside Hermes Desktop. Sheets calculate, dashboards re-run stored MCP queries, and everything exports locally (docx, xlsx, pptx, pdf, png, svg, mp4, glb).","disclosure":"","category":"desktop","platforms":[],"maintainer":"MrSakal","author":"MrSakal","version":"0.15.0","requires_hermes":">=0.22.5","repo":"https://github.com/MrSakal/hermes-artifacts","docs":"https://github.com/MrSakal/hermes-artifacts#readme","tools":["artifact_publish","artifact_guide","artifact_check","artifact_live_read","artifact_live_edit","artifact_list","artifact_read","artifact_open","artifact_inbox","artifact_delete","artifact_comments","artifact_reply","design_system_get","design_system_export"],"hooks":["pre_llm_call","on_session_end","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153635,"prs":[{"n":153635,"state":"open","created":"2026-11-11T16:35:20Z"}],"created":"2026-11-11T16:35:20Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"baro","title":"Baro","summary":"Hand a software goal to Baro and watch it run as a live, dependency-aware kanban: baro_plan returns the plan as stories with dependency edges, baro_run starts a run, baro_status shows each story as blocked, ready, running, done or failed with what it waits on and what it blocks, and baro_cancel stops the run and its process tree.","disclosure":"every baro_run and baro_plan call is sent to Hermes's human-approval gate by the plugin's pre_tool_call hook, whatever the approval mode, because once approved Baro's coding agents execute shell commands in the target repository without further prompts (each in its own git worktree; on Baro's default Claude backend inside Claude Code's OS sandbox, which allows writes only to that worktree and Baro's package cache, denies reading credential stores and limits network to package registries; with --llm openai only shell writes are OS-confined on macOS and Linux relies on Baro's command guard; no push or pull request; agents run with the user's account); baro_run starts one long-running background process per run (baro-ai@0.132.0 through npx, pinned exactly) via Hermes's terminal tool; Baro's agents make network calls to the model provider the user configured for Baro, or to the Hermes subscription proxy on this machine when the plugin's opt-in setting is on (the plugin first checks that the proxy answers on its local /models route; it calls nothing off the machine); boards, and a tee'd copy of each run's event stream for the live board, are stored only in the plugin's own Hermes plugin data; the plugin reads no credentials and no files outside that state, has no telemetry, and refuses to start or stop runs under cron and the messaging gateway.","category":"tools","platforms":[],"maintainer":"JigJoy","author":"Lotus015","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/jigjoy-ai/hermes-baro","docs":"https://github.com/jigjoy-ai/hermes-baro/blob/79cb40f9baf20529e4587f07653d31ea2654bf41/README.md","tools":["baro_plan","baro_run","baro_status","baro_cancel"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153630,"prs":[{"n":153630,"state":"open","created":"2026-11-11T16:27:57Z"}],"created":"2026-11-11T16:27:57Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"uniichat-recall","title":"Uniichat Recall","summary":"Hermes memory provider over an append-only UniiChat log and a derived binary summary tree: ranks every past turn, returns the exact records with session IDs and character offsets, and abstains instead of guessing when nothing in the log answers.","disclosure":"when HERMES_CUSTOM_API_SURPLUSINTELLIGENCE_AI_API_KEY is set, chat excerpts are sent to api.surplusintelligence.ai (glm-4.7-flash) to compress summary-tree nodes and to route or answer recall queries; it runs fully offline when the key is absent or summarize: false. On semantic misses it may spawn the optional agy (Antigravity/Gemini) CLI for a second opinion, and a background thread rebuilds the summary tree after turns are appended. Logs are written under ~/.hermes/uniichat (configurable via root). Linux/macOS only: the store uses fcntl for cross-process append locks, so the plugin does not load on Windows.","category":"memory","platforms":["linux","macos"],"maintainer":"DevvGwardo","author":"DevvGwardo","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/DevvGwardo/uniichat-recall","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153629,"prs":[{"n":153629,"state":"open","created":"2026-11-11T16:26:23Z"}],"created":"2026-11-11T16:26:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"zerofactory","title":"zerofactory","summary":"24/7 AI multi-agent software engineering factory and durable SQLite Kanban board. Flexible triage with Grill Me clarification and EGM sequential spec audit, isolated Git worktrees, deterministic precommit pipeline, thematic continuous review, autonomous self-healing recovery, and Mem0 vector memory.","disclosure":"runs background worker subprocesses using Hermes agent profiles (zf-orchestrator, zf-goldfish, zf-builder, zf-reviewer) operating inside dedicated Git worktrees; mounts a web dashboard at /zerofactory via FastAPI with an embedded SQLite database in WAL mode; executes deterministic precommit checks via .zerofactory/precommit.sh; optionally records repository memory via Mem0/Qdrant.","category":"automation","platforms":[],"maintainer":"hotcode-dev","author":"ntsd","version":"1.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/hotcode-dev/zerofactory","docs":"https://github.com/hotcode-dev/zerofactory#readme","tools":[],"hooks":["on_kanban_dispatch_tick"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153625,"prs":[{"n":153625,"state":"open","created":"2026-11-11T16:23:01Z"}],"created":"2026-11-11T16:23:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rosegold","title":"rosegold","summary":"Get offers and rewards matched to what you buy on Amazon, including discount codes, promo codes and influencer codes. Hermes shares the order details in your Amazon order confirmations with rosegold, then looks up the offers, creator codes and spending rosegold has for you. rosegold reads order confirmations from Amazon, limited to order number, email id, date, total, and each item's title, quantity and price; it does not read your address, payment details or any other emails. Portable Agent Plugins v1 package (mcp.json only); hosted MCP server with three tools, sign-in by emailed code over OAuth, no API key; one command after install (see known issues).","disclosure":"every tool call goes to rosegold.app, and the remote tools are not covered by the pin; the tools ask the agent to search the user's Gmail, with Hermes's own Gmail tool, for Amazon order confirmations, and to send rosegold each email's id and date and each order's number, items and prices; a look-up brings the user's offers and spending into the chat, and rosegold keeps any brand named; under the default trust the tools run without an approval prompt; Hermes keeps the OAuth token.","category":"tools","platforms":[],"maintainer":"rosegold","author":"mybchen","version":"1.0.0","requires_hermes":"","repo":"https://github.com/rosegold-app/hermes-plugin","docs":"https://rosegold.app/?utm_source=hermes_catalog&utm_campaign=listing","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign in once after installing, because a portable plugin can't declare an OAuth MCP server: hermes mcp add rosegold --url https://rosegold.app/mcp/v1 --auth oauth --connect-timeout 300","state":"open","pr":153624,"prs":[{"n":153624,"state":"open","created":"2026-11-11T16:20:41Z"}],"created":"2026-11-11T16:20:41Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rosegold-app/hermes-plugin/f7b0822e5f9d0060338eb8c998964ce535882257/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rosegold.webp"},{"name":"sharelet","title":"Sharelet","summary":"Share a Hermes tool as a link anyone can use in a browser. Pick a tool on the local creator page, create the link and send it: the guest needs no Hermes, account or API key, and the tool keeps running on your computer. Each link has a run limit and an expiry and can be closed at any time; guests can change only the inputs you leave open, and a tool that is not marked read-only needs a separate confirmation for every share. Links stay the same across restarts and tunnel reconnects. Works with native Hermes plugin tools and MCP servers you allow.","disclosure":"while enabled it serves the creator page and guest pages on 127.0.0.1; for public links it downloads cloudflared from Cloudflare's official GitHub release (SHA-256 checked) and runs it as a background process that exposes the guest port only; it reports a random host ID, a secret and the current tunnel address to a link relay (relay_url, default run by the author, never receives link tokens; set it to an empty string to turn it off); it runs each shared tool through Hermes with guest inputs; it writes links, run records, results and its signing keys to its own data folder. The optional built-in image recipes are off until set up and then call api.openai.com with a key entered in Sharelet (stored in its data folder) or the host's OPENAI_API_KEY. No telemetry, no self-update.","category":"tools","platforms":["windows","linux"],"maintainer":"TANGBUDU","author":"TANGBUDU","version":"0.5.1","requires_hermes":">=0.23.0","repo":"https://github.com/TANGBUDU/sharelet","docs":"https://github.com/TANGBUDU/sharelet/tree/06e58ce218f3a684e4fa6cfdfbbc654142e55a8e#readme","tools":["sharelet_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Public links depend on a Cloudflare quick tunnel and, for stable addresses, on the link relay; while your computer is off, guests see an offline page.; Shared tools run with your Hermes setup. Review each tool's output and costs before sharing; anyone holding a link can use its runs.","state":"open","pr":153623,"prs":[{"n":153623,"state":"open","created":"2026-11-11T16:20:17Z"}],"created":"2026-11-11T16:20:17Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TANGBUDU/sharelet/06e58ce218f3a684e4fa6cfdfbbc654142e55a8e/docs/creator.png","https://raw.githubusercontent.com/TANGBUDU/sharelet/06e58ce218f3a684e4fa6cfdfbbc654142e55a8e/docs/guest-weather.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sharelet.webp"},{"name":"radar","title":"Hermes Radar","summary":"Proactive assistant: follows your mail, calendar, GitHub, scheduled jobs and your own chats with the agent as long-lived tasks (trips, purchases, work items, commitments), does the legwork itself and writes to you first, on the gateway platform you choose, only when something is yours to decide. Sending email always asks; paying, booking, deploying and merging never run on their own.","disclosure":"runs a scheduler task inside the gateway and delegates bounded work to 'hermes chat --oneshot' child processes (2 at a time, 100 a day by default); reaches mail and calendar only through the MCP servers or command-line tools you configure and GitHub through gh; with Gmail push enabled, listens on 127.0.0.1:8666; reads the host session store (state.db, read-only), cron job outputs and the host memory provider; stores tasks, bounded snippets, facts and an audit log in HERMES_HOME/radar/radar.sqlite3 with retention limits; two optional secrets read through the host secret scope; installed disabled and in shadow mode; no telemetry.","category":"automation","platforms":[],"maintainer":"Naroh091","author":"Naroh091","version":"0.3.1","requires_hermes":">=0.22.0","repo":"https://github.com/Naroh091/hermes-radar","docs":"https://github.com/Naroh091/hermes-radar/blob/main/docs/onboarding.md","tools":["radar_status","radar_tasks","radar_task","radar_resolve","radar_explain","radar_list","radar_inspect","radar_propose","radar_preference"],"hooks":["on_session_start","post_llm_call","subagent_stop","post_compaction","pre_gateway_dispatch","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153634,"prs":[{"n":153634,"state":"open","created":"2026-11-11T16:34:33Z"},{"n":153619,"state":"open","created":"2026-11-11T16:12:37Z"}],"created":"2026-11-11T16:12:37Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Naroh091/hermes-radar/a00a1d8d8da4a1a638a78d2c603a456e4fa9bb53/assets/panel.png","https://raw.githubusercontent.com/Dieguezar/hermes-radar/1e76cf175d2a1cff36877424ce1437a5bff5b151/docs/banner.png","https://raw.githubusercontent.com/Dieguezar/hermes-radar/1e76cf175d2a1cff36877424ce1437a5bff5b151/docs/fullpage-en.png","https://raw.githubusercontent.com/Dieguezar/hermes-radar/1e76cf175d2a1cff36877424ce1437a5bff5b151/docs/floating-hud.png","https://raw.githubusercontent.com/Dieguezar/hermes-radar/1e76cf175d2a1cff36877424ce1437a5bff5b151/docs/pip-os.png","https://raw.githubusercontent.com/Dieguezar/hermes-radar/1e76cf175d2a1cff36877424ce1437a5bff5b151/docs/fullpage-es.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/radar.webp"},{"name":"memory-ferry","title":"Memory Ferry","summary":"Migrates built-in Hermes MEMORY.md and USER.md records into a profile-local SQLite memory provider with an integrity-checked dry run, idempotent recovery, deterministic retrieval-parity evidence and migration-scoped rollback.","disclosure":"reads the active profile's MEMORY.md and USER.md; writes plaintext memories and full mode-0600 plan/export artifacts under $HERMES_HOME/plugin-data/memory-ferry (policy-blocked records remain in planning artifacts but are not imported or recalled); recalled snippets reach the user's configured model provider. No network calls, shell commands, credentials, telemetry or background process.","category":"memory","platforms":[],"maintainer":"gnanam1990","author":"gnanam1990","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/gnanam1990/hermes-memory-ferry","docs":"https://github.com/gnanam1990/hermes-memory-ferry/blob/962bf81f8a7f5ad7aa035298922d6795f91d837b/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Only built-in MEMORY.md and USER.md are supported as migration sources; arbitrary external-provider export is unavailable through Hermes's public API.; Retrieval parity is a bounded deterministic token-overlap measurement, not proof of semantic equivalence.; The local approval receipt is digest-bound but not cryptographically signed, and the plugin has not received an independent production security audit.","state":"open","pr":153617,"prs":[{"n":153617,"state":"open","created":"2026-11-11T16:08:49Z"}],"created":"2026-11-11T16:08:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"art98","title":"art98 (Windows 98)","summary":"Drive a real Windows 98 SE VM through art98 (screenshots, pointer, keys, windows, Win32 calls) and render scene scripts to video, with a dashboard tab that has a live view.","disclosure":"art98_render runs the agent's scene script as Python on the Hermes machine, in a child process outside the terminal backend and not sandboxed (it can read HOME and the VM token); it refuses unless the allow_render setting is on (off by default) and Hermes's execute_code approval guard allows it, which does not prompt in local CLI/TUI/Desktop sessions and refuses in -q and cron runs by default. The dashboard's own Render button skips that approval. art98_win32 is off unless allow_win32 is on. Network is loopback only: the art98 VM's control API (token-authenticated) and optionally its view-only VNC port. One stored credential, the VM token, kept by Hermes as the vm_token secret. Needs ffmpeg and ffprobe for art98_combine, and the user's own Windows 98 SE install via the art98 repo; no Windows files ship with the plugin.","category":"tools","platforms":["linux"],"maintainer":"StanLukuvka","author":"StanLukuvka","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/StanLukuvka/98artware-hermes","docs":"https://github.com/StanLukuvka/98artware-hermes/blob/812dee0a7e23109948acf4dbf17c01b754362288/README.md","tools":["art98_status","art98_media","art98_screenshot","art98_click","art98_type","art98_key","art98_windows","art98_open","art98_win32","art98_revert","art98_save_scene","art98_render","art98_combine"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a running art98 VM (github.com/StanLukuvka/98artware) and your own Windows 98 SE disc and key; the art98-install skill walks through it.; art98_render uses Hermes's private tools.approval.check_execute_code_guard (no public approval call for plugin tools yet); if a release moves it, renders are refused, never run unasked.","state":"open","pr":153615,"prs":[{"n":153615,"state":"open","created":"2026-11-11T16:07:15Z"}],"created":"2026-11-11T16:07:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"reliquary","title":"Reliquary","summary":"Local, inspectable long-term memory with source provenance, conversation capture, General/project REL routing, a read-only PHY identity layer, and an interactive relationship-driven 3D graph in Hermes.","disclosure":"launches a profile-scoped Rust background host (built by the user from the repo's source or taken from its attested CI build; nothing is downloaded by the plugin) on HMAC-authenticated loopback HTTP that can keep running after a session to finish recovery; reads/writes the selected REL files, reads the selected PHY and a nonsecret processing-routes JSON, and stores copied source text, queues, recovery state and graph caches under the Hermes profile's reliquary directory; setup generates a local host token into the profile .env through Hermes' secret writer and sets memory.provider and plugins.enabled in config.yaml. Optional processing and retrieval send bounded queries, source excerpts and Memories to the model endpoints the user configures and can incur provider charges. Automatic and manual conversation capture and the Desktop graph need Hermes core patches the repo ships but does not apply (patches/hermes-104a7c4-hu08-history-export.patch, patches/hermes-45882968-plugin-rest-bytes.patch); on stock Hermes capture stays paused and Desktop shows list and inspector only. No telemetry or self-updater.","category":"memory","platforms":["windows"],"maintainer":"Lokee86","author":"Lokee86","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Lokee86/reliquary-hermes","docs":"https://github.com/Lokee86/reliquary-hermes/tree/0de70d170a575582aeb71ba3daff371fc0fdd42c","tools":[],"hooks":["on_session_delete"],"middleware":[],"env":[],"known_issues":"Build the native host with scripts/build-native.ps1 before running Hermes memory setup; no executable is committed or automatically downloaded.; The attested CI artifact uses optimization level 1; the local source-build script retains full release optimization.; Processing accepts nonsecret JSON routes and a Hermes-managed API key. Reliquary CVCFG credentials and Codex subscription sign-in are unsupported in this catalog package.; Stock Desktop supports browsing. Desktop graph bytes, setup, and writes depend on Hermes SDK/native-admission capabilities; the web dashboard supports setup and writes.; Automatic capture and project routing require trusted Hermes history/project capabilities. Unsupported hosts pause automatic capture and use General memory for new sessions.; Imported Memories without accepted source provenance may be visible while production recall refuses them. The demo labels its imported-memory preview scenes.","state":"open","pr":153614,"prs":[{"n":153614,"state":"open","created":"2026-11-11T16:05:28Z"}],"created":"2026-11-11T16:05:28Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Lokee86/reliquary-hermes/0de70d170a575582aeb71ba3daff371fc0fdd42c/assets/graph-overview.png"],"videos":["https://raw.githubusercontent.com/Lokee86/reliquary-hermes/0de70d170a575582aeb71ba3daff371fc0fdd42c/assets/reliquary-demo-86s.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/reliquary.webp"},{"name":"cutroom","title":"Cutroom","summary":"Local-first video editing studio: word-timed transcript cuts and filler review, silence removal, face/gaze/mouth review, person segmentation for graphics behind the subject, three source-quoted hook options with a storyboard, preview renders, human-approved final export, cover and automated quality checks. Ships a Hermes Desktop Studio page, agent tools for projects and background jobs (no approval tool: only a person can approve a final export) and a CLI. Requires FFmpeg/ffprobe on PATH; speech, vision and segmentation need optional Python packages and local model files.","disclosure":"reads only the local media paths it is given and launches local FFmpeg/ffprobe and a Python worker subprocess; writes projects, renders and reports under its own workspace in the Hermes home and never overwrites source or existing outputs; models are never downloaded automatically, and `cutroom setup-models --confirm-downloads` fetches pinned files from storage.googleapis.com (MediaPipe) and huggingface.co (faster-whisper-tiny) with SHA-256 verification; optional download/OBS/rclone/calendar adapters run only with explicit confirmation and are not used by the Studio pipeline; no telemetry, no API keys, no self-update.","category":"tools","platforms":[],"maintainer":"KaanDRoid","author":"KaanDRoid","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/KaanDRoid/hermes-cutroom","docs":"https://github.com/KaanDRoid/hermes-cutroom/blob/7ab7e7c724a5173e1b5a667a4e81d2695a42c1be/README.md","tools":["cutroom_inspect","cutroom_draft","cutroom_review","cutroom_render","cutroom_project","cutroom_job"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires FFmpeg and ffprobe on PATH with libx264 and AAC support.; Speech, vision and segmentation need faster-whisper, MediaPipe and OpenCV in the runtime interpreter plus local models (see cutroom doctor and cutroom setup-models).; Hooks, storyboards and captions are extractive drafts from the transcript, not generated writing; gaze/mouth results are review-only heuristics.; Output filesystems must support hard links (NTFS, ext4, APFS); FAT/exFAT is not supported.; Verified primarily on Windows; CI runs the test suite on Windows and Ubuntu.","state":"open","pr":153612,"prs":[{"n":153612,"state":"open","created":"2026-11-11T16:02:33Z"}],"created":"2026-11-11T16:02:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"innerscape","title":"Innerscape","summary":"Gentle check-ins, journaling and an Unstuck Coach with your own Innerscape server: save a mood check-in in your words, save a journal entry or park an inbox item only after you say yes to the exact text, and look back on today. When you're frozen or overloaded, the bundled unstuck skill names what's in the way, gives one next move and holds the rest. The skills never score, label or diagnose a mood. Adds four tools, /innerscape, two skills, a Desktop page and a dashboard tab.","disclosure":"calls your Innerscape REST API (default http://127.0.0.1:3001) with INNERSCAPE_TOKEN, read through Hermes secret scope, which can read and write your whole account; plain http only to this machine (https to any server you configure), no proxies or redirects; tool results go to your model provider and stay in session history, and mood and journal text is sensitive, so your provider sees it like any other chat; consent is model-mediated: save tools refuse unless the assistant has asked you and set user_confirmed, and Hermes has no separate approval step (see README); the Desktop page reads today and saves a check-in or journal entry with that same token through the plugin's dashboard routes (/api/plugins/innerscape/), so anyone signed in to your Hermes dashboard can read and write your Innerscape account; reads and saves are off on chat platforms by default and saves are off in scheduled runs; no telemetry, no background jobs.","category":"tools","platforms":["linux"],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.3.0","requires_hermes":">=0.21.6","repo":"https://github.com/KyaniteLabs/Innerscape","docs":"https://github.com/KyaniteLabs/Innerscape/blob/709dc6a5ad77f8dd99a4e58e43bf2e450143ce8d/plugins/innerscape-hermes/README.md","tools":["innerscape_checkin","innerscape_journal","innerscape_today","innerscape_capture"],"hooks":[],"middleware":[],"env":["INNERSCAPE_TOKEN"],"known_issues":"Needs a running Innerscape backend and a login token; tokens expire after 7 days by default.; \"Today\" is the server's day, which may differ from your time zone.; Not a crisis service; the skill points to local emergency services.; Saving is confirmed by the assistant in conversation (it sets the confirmation flag); Hermes has no separate approval step for plugin tools.; Tested on Linux and in Hermes Desktop on macOS; Windows unverified.","state":"open","pr":153609,"prs":[{"n":153609,"state":"open","created":"2026-11-11T15:58:10Z"}],"created":"2026-11-11T15:58:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/KyaniteLabs_/status/2120551747743867247"],"youtube":[],"thumb":null},{"name":"chess-coach","title":"Chess Coach","summary":"Practice mate in one to four or play Hermes with piece odds on an interactive Desktop chessboard.","disclosure":"","category":"desktop","platforms":[],"maintainer":"oppai","author":"oppai","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/oppai/chess-coach","docs":null,"tools":["chess_new_game","chess_set_position","chess_board","chess_list_games","chess_legal_moves","chess_make_move","chess_undo","chess_review_position","chess_solve_mate","chess_material","chess_pgn"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153608,"prs":[{"n":153608,"state":"open","created":"2026-11-11T15:57:24Z"}],"created":"2026-11-11T15:57:24Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/6e2b4d43-d9a7-4119-a49e-afd12b6cf20f"],"videos":[],"x":["https://x.com/kodam/status/2120545370250084474"],"youtube":[],"thumb":"/hackathon/thumbs/chess-coach.webp"},{"name":"rea-video-hermes","title":"rea-video-hermes","summary":"Reverse-engineer any video shot by shot: production-method classification per shot (live action / AI video / 3D / screen capture / code-template render), caption and sticker timelines, voice vs music stems, editing rhythm, and a concrete replication plan. Powered by JuneYaooo/rea-video (Apache-2.0, pinned commit d904b1e8). The six stdio-MCP tools expose the full pipeline (incl. mux_tracks for dual-track video downloads); for shots the pipeline flags as low-confidence, the agent reviews the tiled frames with its own vision and merges the verdict back via submit_review — no external VLM key required. Local runtime deps: ffmpeg and the pinned rea-video package (installed from the repo's venv).","disclosure":"","category":"tools","platforms":[],"maintainer":"wusanjay","author":"wusanjay","version":"0.1.0","requires_hermes":"","repo":"https://github.com/wusanjay/hermes-plugin-rea-video","docs":"https://github.com/wusanjay/hermes-plugin-rea-video#readme","tools":["resolve_douyin","decompose_video","video_summary","shot_tiles","submit_review","mux_tracks"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153607,"prs":[{"n":153607,"state":"open","created":"2026-11-11T15:56:43Z"}],"created":"2026-11-11T15:56:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"habits","title":"Habits","summary":"Habits gives Hermes reflexes: the tool calls and small decisions it repeats, grouped into one file of steps that runs with no model turn between the steps (the advanced llm step is the one exception); decisions go to a small typed model (Jev). \"Is Hermes OK?\": 41 s when Hermes works it out, 2.7 s when the reflex answers with its six checks (medians of real chats, 10 November; the fast path needs your yes and a Jev key). A reflex has four kinds of step (do, check, ask, use) and ends done, or handed back with what is left. The dream re-reads the history Hermes already keeps, with no model call, and proposes reflexes for what comes back. A reflex acts on its own only after your yes, with two exceptions named below. Try without a key: hermes habits run hermes-health.","disclosure":"hooks read each reply and each tool call. The dream reads Hermes's local history (read only, 60 days) once a day at most (dream: manual stops it) and calls no model. Learning defaults to suggest: on a fresh install nothing is run or practiced for you until you say try. A list of your reflexes (2,400 characters at most) is added to each session, and Hermes may call any shipped example by name without a yes; it then runs for real (six only read; tidy-downloads moves files in ~/Downloads and is not in that list). The shipped hermes-health sends one HEAD request to github.com and reads the gateway file and disk of ~/.hermes; the other examples reach the web only when called (api.github.com, hn.algolia.com, the pages you name). A reflex with your yes runs its commands through Hermes's terminal tool and Hermes's own approval rules. The two exceptions to the yes: a read-only message habit you asked for in so many words, and what you allow with learning: auto. Decision questions go to TypeSafe Jev (api.typesafe.ai) only with your TYPESAFE_API_KEY, else to your Hermes model; once a message habit exists, each message of 2,000 characters or less that is not a slash command is sent there to see whether it starts one (one or two small questions). A scheduled habit writes a cron job and a script at once; hermes habits cleanup removes them. Runs and traces are stored unencrypted in $HERMES_HOME/plugin-data/habits/. No telemetry. Seven private imports, each with a fallback. Line by line: docs/SAFETY.md.","category":"automation","platforms":["linux","macos"],"maintainer":"emiwltz","author":"emiwltz","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/emiwltz/hermes-habits","docs":"https://github.com/emiwltz/hermes-habits#readme","tools":["habit_run","habit_save"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","post_llm_call","post_api_request","on_session_finalize","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Without a TypeSafe Jev key, steps that ask a question go to your Hermes model, slower, and those runs do not count toward your yes: a reflex with such a step stays learning.; Measured on one user's install, with one cheap model and one decision model (Jev); 14 of 20 request wordings never seen before were recognized, the others go back to Hermes. The headline figures are from the builds of 10 November; an earlier build of 11 November (aad995e) was tried in 229 simulated turns on throwaway Hermes profiles (docs/BENCHMARKS.md); the fixes made after it are covered by tests and by one short pass of 9 real turns on the last build.; The guard and the dream's exclusion of secrets are word-and-shape checks, not proofs; docs/SAFETY.md lists what they do not see.; With permissions: hermes, Hermes does not ask about every deletion: on Hermes 0.23 a plain rm of one file is not flagged. Set permissions: strict to make the plugin refuse deleting commands.; The dream proposes fixed actions only, and few real actions are local reads, so most practice counts that an action came back, not that a result matched.; What the dream gives on day one is a list of repeated gestures and proposals; the saving comes once reflexes are assembled or made by asking. No gain from a dream-born reflex has been measured yet.; The start on a loaded skill worked 2 of 2 on a real Hermes (11 November); a real MCP server: not tried.; A scheduled habit's cron job exists from the save, before any yes; run hermes habits cleanup before you uninstall.","state":"open","pr":153606,"prs":[{"n":153606,"state":"open","created":"2026-11-11T15:52:32Z"}],"created":"2026-11-11T15:52:32Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/banner.png","https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/replay.png","https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/shot-dream.png","https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/shot-terminal.png","https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/shot-habits.png"],"videos":[],"x":["https://x.com/_McLovin_617/status/2120544458647191812"],"youtube":[],"thumb":"/hackathon/thumbs/habits.webp"},{"name":"treasury-cash-forecast","title":"Treasury Cash Forecast","summary":"A 12-month monthly direct cash-flow forecast for corporate treasury. Fill one template (Excel or CSV) with your past cash-flow statement, the future cash flows you already know and your what-if percentages. Recurring lines are projected by a statistical model (ETS by default; SARIMA and four simple baselines selectable), known lines come from your schedule, and a known amount can replace the model for single months. The base case and every scenario run together and come back as one Excel workbook: a summary, a cash-flow statement per scenario (12 actual months, then 12 forecast months) and a sheet showing where every figure comes from, reconciled every month to the cent: opening cash + net cash flow = closing cash. A fourth tool runs the same data through several models to show how much the answer depends on the method. All figures come from a tested engine (95 tests); the language model picks the tool and explains the result.","disclosure":"no network calls, no credentials, no telemetry, no background process. Reads only the workbook or CSV folder you name and writes the template, the result workbook and audit files to the folder you name or next to your input. Installs two Python libraries, statsmodels and openpyxl, both with upper bounds. The optional Chronos-2 model is not installed by the plugin and is loaded from local files only, never downloaded. The bundled example company is synthetic.","category":"tools","platforms":[],"maintainer":"Prabhusekaran","author":"Prabhusekaran","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/Prabhusekaran/hermes-treasury-cash-forecast","docs":"https://github.com/Prabhusekaran/hermes-treasury-cash-forecast/blob/bc36c28e6357095b435b678bae11e5acc089b7ca/README.md","tools":["cash_forecast_template","cash_forecast_validate","cash_forecast_run","cash_forecast_compare"],"hooks":[],"middleware":[],"env":[],"known_issues":"Restart Hermes after installing (the gateway, and the Desktop backend if you use the Desktop app) so the running process sees the two new libraries.; Tested on Linux. ETS and SARIMA are fitted numerically, so figures can differ by cents between machines; the simple baselines are identical everywhere.","state":"open","pr":153605,"prs":[{"n":153605,"state":"open","created":"2026-11-11T15:51:27Z"}],"created":"2026-11-11T15:51:27Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Prabhusekaran/hermes-treasury-cash-forecast/bc36c28e6357095b435b678bae11e5acc089b7ca/docs/cover.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/treasury-cash-forecast.webp"},{"name":"autorag","title":"AutoRAG","summary":"Search your own files and configured chat/mail archives from Hermes with AutoRAG Lite. Local hybrid retrieval, file-name search, cited evidence and duplicate detection without editing original documents. Supports PDF, DOCX, PPTX, XLSX, Markdown and Korean HWP/HWPX; existing integrations include Slack, Discord, Telegram, WhatsApp, KakaoTalk, email, Notion and Obsidian. Bundles four skills and a Hermes Desktop Finder pane. Requires Node.js 24+; runs pinned @autorag/librarian@2.13.12 through npx stdio. The Desktop backend installs that same pinned package once in plugin data, with npm lifecycle scripts disabled. First refresh can provision minsync and jikji and download local embedding models (roughly 1.5 GB). Reads only configured folders and archives; writes its own index/report state. User-requested automation also writes rule/scripts and creates Hermes cron jobs. No telemetry, self-update or stored-login discovery. Search snippets read by Hermes reach its selected model provider; configured remote connectors or embedders use their selected services.","disclosure":"runs the pinned @autorag/librarian@2.13.12 MCP server through npx (Node.js 24+); the Desktop pane installs the same package once under $HERMES_HOME/plugin-data/autorag with lifecycle scripts disabled, but its own dependencies are version ranges (plus an xlsx tarball from cdn.sheetjs.com, allowed via npm_config_allow_remote=all) resolved at install time; the first refresh downloads local embedding models (~1.5 GB) and helper tools; it reads only the folders and crawler archives you configure and writes its own index under the workspace's .autorag/ and plugin data; on request the schedule/automate skills write scripts under $HERMES_HOME/scripts/ and create Hermes cron jobs (remove deletes them); search snippets Hermes reads go to your model provider, and configured remote embedders/connectors get your content; no telemetry.","category":"tools","platforms":["macos"],"maintainer":"Marker-Inc-Korea","author":"vkehfdl1","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/Marker-Inc-Korea/AutoRAG","docs":"https://github.com/Marker-Inc-Korea/AutoRAG/tree/main/plugins/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Verified on macOS only; Linux and Windows have not been verified for this plugin.; Local chat/mail search requires existing configured crawler archives; installation does not sign into those services.","state":"open","pr":153601,"prs":[{"n":153601,"state":"open","created":"2026-11-11T15:43:33Z"}],"created":"2026-11-11T15:43:33Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"birdie","title":"birdie","summary":"Lets each Hermes conversation message the other AI agents on this machine, such as Claude Code, Codex and Grok, through birdie, a local open-source message bus, and, if you allow it, be woken by their messages. Each conversation gets its own address, so an answer comes back to the conversation that asked. Five tools: list agents, send, check the inbox, wait for a reply, read a thread.","disclosure":"talks only to the local birdie service (http://127.0.0.1:7777 by default), with no telemetry or third-party calls of its own, though agents connected to birdie may be online services that receive what is sent to them; a background thread per active conversation reports it to birdie every 30 seconds, including its working folder's name and full path, which agents connected to birdie can see, and with waking on another waits for new messages; waking is off by default and, when turned on with `birdie setup hermes --wake`, lets any agent connected to birdie start a turn, which spends model credits and can use tools under the usual approval rules, and sets allow_gateway_injection for this plugin; stores this agent's birdie token as the BIRDIE_HERMES_TOKEN secret; `birdie setup hermes`, run by the user, writes birdie.json in the plugin folder, the secret and Hermes settings, removes any old birdie MCP server and backs up config.yaml first.","category":"tools","platforms":["linux","macos"],"maintainer":"koshikraj","author":"koshikraj","version":"0.3.1","requires_hermes":">=0.21.6","repo":"https://github.com/koshikraj/birdie","docs":"https://github.com/koshikraj/birdie/blob/main/integrations/hermes/README.md","tools":["birdie_list_agents","birdie_send_message","birdie_check_inbox","birdie_wait_for_reply","birdie_get_thread"],"hooks":["pre_llm_call","on_session_finalize","on_session_reset","on_session_delete","post_compaction","agent_loop_stopped"],"middleware":[],"env":["BIRDIE_HERMES_TOKEN"],"known_issues":"Needs the birdie service running on the same machine. Install it from https://github.com/koshikraj/birdie, then run `birdie setup hermes` and restart Hermes.","state":"open","pr":153598,"prs":[{"n":153598,"state":"open","created":"2026-11-11T15:39:45Z"}],"created":"2026-11-11T15:39:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sentinel-vision","title":"Sentinel Vision","summary":"Tell Hermes what to watch on a camera, screen or video, and Sentinel detects events, stores snapshots and injects alerts into your chat. A local change detector and configurable call caps reduce vision-model usage; rules, event history and feedback make the watcher useful over time. Frames and rule text are sent to your configured model; see the README for setup, privacy and limitations.","disclosure":"","category":"automation","platforms":[],"maintainer":"StarAtNyte","author":"StarAtNyte","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/StarAtNyte/hermes-sentinel","docs":"https://github.com/StarAtNyte/hermes-sentinel/blob/fb48bf5c835fa2e8acb74dfc05c52458b3c1194d/sentinel-vision/README.md","tools":["sentinel_sources","sentinel_watch","sentinel_rules","sentinel_update","sentinel_look","sentinel_events","sentinel_feedback","sentinel_teach","sentinel_setup_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"Registers a /sentinel slash command, which another listed plugin (SENTINEL OS) also uses; the two conflict only if both are installed.; Outside the classic CLI, alerts are only delivered after you add plugins.entries.sentinel-vision.allow_gateway_injection: true to config.yaml; /sentinel status shows the exact snippet when delivery is refused.; Needs a vision-capable model routed to the sentinel_vision auxiliary task, otherwise judging fails (the gate keeps running).; On Telegram/Discord send /sentinel here once so alerts return to that chat.; Screen capture needs a display; it is not available on a headless server.; Vision only (no audio, no video-site streams such as YouTube). Movement is judged from up to 3 recent frames, not video; the slow-drift check misses very small or very large gradual changes. Expect misses and false alarms. Not a safety device.; Plugins cannot read allow_gateway_injection; run /sentinel setup --test-delivery to test delivery. On a multiplexing gateway, cameras that need a ${SECRET} wait until the first /sentinel command or sentinel_* tool call after start-up.","state":"open","pr":153596,"prs":[{"n":153596,"state":"open","created":"2026-11-11T15:35:25Z"}],"created":"2026-11-11T15:35:25Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/StarAtNyte/hermes-sentinel/fb48bf5c835fa2e8acb74dfc05c52458b3c1194d/sentinel-vision/docs/images/live-test-alert.jpg","https://raw.githubusercontent.com/StarAtNyte/hermes-sentinel/fb48bf5c835fa2e8acb74dfc05c52458b3c1194d/sentinel-vision/docs/images/pane-preview-wide.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sentinel-vision.webp"},{"name":"tinfoil-sandbox","title":"Tinfoil Container","summary":"A tinfoil terminal backend: Hermes' terminal, file and code tools run inside your own Tinfoil Container, an attested enclave, reached over the Tinfoil CLI's attested SSH tunnel. Select it with terminal.backend: tinfoil and terminal.tinfoil_container. Needs a Tinfoil organization with Containers enabled; the public template https://github.com/counterposition/hermes-tinfoil-workspace sets up a suitable workspace. Dangerous-command approval stays on, and the plugin never creates, starts, stops or bills containers.","disclosure":"every tool call runs the user's installed tinfoil CLI (tinfoil ssh) and OpenSSH client as subprocesses; the CLI contacts Tinfoil's control plane to look the container up, then the enclave. The plugin passes TINFOIL_API_KEY, read through Hermes' secret scope, to the CLI as the tunnel key, and TINFOIL_ADMIN_KEY when set; it never reads the CLI's saved login, and strips TINFOIL_API_KEY, TINFOIL_TUNNEL_API_KEY and TINFOIL_ADMIN_KEY from the environment of commands the agent runs. An SSH control socket under the system temp directory (hermes-tinfoil/) keeps the verified connection open for five idle minutes. A pre_tool_call hook rewrites a leading ~ in the path argument of read_file, write_file, patch and search_files to the container's home directory, only while terminal.backend is tinfoil, because Hermes otherwise expands it to the host's home. No telemetry.","category":"tools","platforms":[],"maintainer":"counterposition","author":"counterposition","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/counterposition/tinfoil-hermes-provider","docs":"https://github.com/counterposition/tinfoil-hermes-provider#run-tools-in-a-tinfoil-container","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153595,"prs":[{"n":153595,"state":"open","created":"2026-11-11T15:33:44Z"}],"created":"2026-11-11T15:33:44Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tinfoil-provider","title":"Tinfoil","summary":"Tinfoil confidential inference as a Hermes model provider. Open-weight models from Tinfoil's live catalog (Kimi, GLM, gpt-oss and others) run in attested hardware enclaves that neither the cloud host nor Tinfoil can read. Hermes reaches them only through Tinfoil's local tinfoil-proxy, which verifies the enclave's attestation and pins its TLS key before forwarding anything; there is no fallback to an unverified connection. The proxy starts on demand.","disclosure":"Hermes sends requests, including a /v1/models read for the model list, only to the local proxy (127.0.0.1:3301, or TINFOIL_BASE_URL); the proxy is what contacts Tinfoil. When nothing listens on the proxy's port, the plugin starts the user's installed tinfoil-proxy binary in its own session and leaves it running after Hermes exits, logging to proxy.log in the plugin's data directory; it never downloads a binary, and TINFOIL_PROXY_AUTOSTART=0 turns this off. The proxy is started without any environment variable ending in _API_KEY, _TOKEN, _SECRET, _PASSWORD or _ADMIN_KEY. TINFOIL_API_KEY is read through Hermes' provider profile and sent to the proxy as the request's bearer token. The plugin writes catalog.json (the last model list it saw) and proxy.log under its plugin-data directory, registers no tools, hooks or middleware, and sends no telemetry.","category":"models","platforms":[],"maintainer":"counterposition","author":"counterposition","version":"2.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/counterposition/tinfoil-hermes-provider","docs":"https://github.com/counterposition/tinfoil-hermes-provider#readme","tools":[],"hooks":[],"middleware":[],"env":["TINFOIL_API_KEY"],"known_issues":"","state":"open","pr":153594,"prs":[{"n":153594,"state":"open","created":"2026-11-11T15:33:30Z"}],"created":"2026-11-11T15:33:30Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/counterposition/tinfoil-hermes-provider/0fae2f27535b71dacb68afbb4159f226d318b43b/docs/install.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tinfoil-provider.webp"},{"name":"tallyseal","title":"TallySeal","summary":"Checks each group in a CSV report against a pinned source and seals the exact report bytes that pass.","disclosure":"the check tool directly reads source.csv and report.csv in an operator-configured host folder and returns counts, record numbers and hashes. The local seal command writes a new file to an operator-selected path. No network, subprocesses, credentials or telemetry.","category":"tools","platforms":["macos","linux"],"maintainer":"Venkat-RJ","author":"Venkat-RJ","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Venkat-RJ/hermes-tallyseal","docs":null,"tools":["tallyseal_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153588,"prs":[{"n":153588,"state":"open","created":"2026-11-11T15:25:53Z"}],"created":"2026-11-11T15:25:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermeneus","title":"Hermeneus","summary":"Live translation for Hermes. Hermeneus captures the audio playing on your Mac, so it works with any app that plays sound. Examples are YouTube, Twitch and X Spaces in the browser, Discord, meeting apps and podcast apps. Verified on real audio: YouTube live in Google Chrome. Captures the audio playing on your Mac (one app, or all system audio except Hermeneus) through a Core Audio process tap on macOS 14.2+, transcribes it with ElevenLabs Scribe v3 Live, translates each line with your own Hermes model and shows live subtitles in a Desktop pane, a floating overlay above other apps, the terminal (hermes hermeneus run), /translate, or an opt-in 127.0.0.1 page for OBS; spoken translation with ElevenLabs Flash v2.5 is opt-in, and language, mode, voice, output and source change while a session runs. Listening covers 100 languages and speaking covers 32.","disclosure":"streams the captured audio to ElevenLabs (wss://api.elevenlabs.io) with your ELEVENLABS_API_KEY while a session runs (it stops sending after about 10 s of digital silence and resumes with the first sound), and sends the translated text there too when spoken translation is on; lists your account's voices with GET https://api.elevenlabs.io/v2/voices (voices command and the pane's voice picker); sends each committed line plus up to 3 earlier lines (context_segments, 0 to 10) to your configured model through ctx.llm under its own auxiliary task, live_translate (doctor --test-model sends one tiny extra request); /translate start and /translate set --source are refused from chat platforms unless allow_remote_start is on (default off); needs the macOS System Audio Recording permission for the app that runs Hermes (Microphone for the fallback); the setup's Allow system audio and Check again, the doctor, and the pane's Doctor tab every time it opens, play a 440 Hz test tone for about half a second through a short-lived player subprocess, on BlackHole or VB-Cable when installed, otherwise quietly on the default output while the tap mutes it (--no-audio-check skips it); the process tap runs one capture worker subprocess per session with a minimal environment, stopped with the session, on unload and at exit; the floating overlay is a separate Python process while it is open, with the same minimal environment, and keeps six files under plugin-data/hermeneus/overlay/: lock, settings.json, theme.json, positions.json, positions.json.lock (empty, locked while positions.json is written) and overlay.log; positions.json is written through a short-lived .positions-*.tmp file in the same folder, by the overlay and by the process that serves the pane's overlay routes; the pane's first-run setup writes plugin-data/hermeneus/setup.json (the last audio check result, no audio, no key) and audio-check.running while that check captures (removed when it ends); settings.json, theme.json and setup.json are each written to a short-lived .tmp file beside them and renamed over the file at once; settings you change (in the pane, in Settings or with hermes hermeneus overlay-page) are saved by Hermes in its config.yaml; one session at a time on its own thread, reached through a Unix domain socket (mode 0600) under its plugin-data; no TCP port unless you turn on the overlay page, which listens on 127.0.0.1:47821 (overlay_page_port) only, behind a per-session token and a Host check; runs /usr/sbin/system_profiler SPAudioDataType and /bin/ps (read only, absolute paths, argument lists, minimal environment) to check audio routes and name the app in the permission message, and /usr/bin/open with the System Settings privacy address (x-apple.systempreferences:...Privacy_ScreenCapture) when you press Open System Settings in the setup, which changes nothing; the fallback reads a virtual device (BlackHole 2ch or VB-Cable) that you install yourself, never bundled or downloaded; subtitles stay in memory (last 200 lines) and no audio or transcript is written to disk; no telemetry. Platform status: macOS is tested on real audio; Windows support is implemented and reviewed against documentation, not yet run on a Windows machine, so this entry lists macOS only (Windows preview: docs/windows.md).","category":"voice","platforms":["macos"],"maintainer":"Bihruze","author":"Bihruze","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Bihruze/hermeneus","docs":"https://github.com/Bihruze/hermeneus#readme","tools":[],"hooks":[],"middleware":[],"env":["ELEVENLABS_API_KEY"],"known_issues":"","state":"open","pr":153585,"prs":[{"n":153585,"state":"open","created":"2026-11-11T15:19:59Z"}],"created":"2026-11-11T15:19:59Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Bihruze/hermeneus/9b8b98c369281358226b948410e3e289c782f702/docs/banner.jpg","https://raw.githubusercontent.com/Bihruze/hermeneus/9b8b98c369281358226b948410e3e289c782f702/docs/media/pane-live-light.png","https://raw.githubusercontent.com/Bihruze/hermeneus/9b8b98c369281358226b948410e3e289c782f702/docs/media/setup-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermeneus.webp"},{"name":"homelab-watch","title":"Homelab Watch","summary":"Your homelab, your agents and your agent's bill in one Desktop status chip: read-only checks of your router, servers, websites, a Bitaxe miner and your cron jobs with root-cause rollup (a router outage is one alert, not ten); token-free alerts through a no_agent cron job; per-day LLM token counts and API-equivalent savings (subscription, cheaper and free models; unpriced models never estimated); and the jev_route delegation backend, shadow by default, that sends simple subagent tasks to a cheaper model when a judge clears them.","disclosure":"probes only the hosts and URLs in targets.yaml; records token counts and model names from post_api_request, never prompt text; with alerts on, writes one script under scripts/ and creates one cron job via cronjob_manage; sends nothing off the machine by default, but with the optional TypeSafe key and delegation.backend jev_route each subagent task's goal and context (up to 4,000 characters) go to api.typesafe.ai for one judgment; no telemetry.","category":"tools","platforms":[],"maintainer":"lpsmurf","author":"lpsmurf","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/lpsmurf/hermes-homelab-watch","docs":"https://github.com/lpsmurf/hermes-homelab-watch#readme","tools":["homelab_status","homelab_heartbeat"],"hooks":["post_api_request"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153584,"prs":[{"n":153584,"state":"open","created":"2026-11-11T15:19:24Z"}],"created":"2026-11-11T15:19:24Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lookahead","title":"lookahead","summary":"Conversation-captured commitments with grounded preparation briefs and one post-event follow-up.","disclosure":"","category":"automation","platforms":[],"maintainer":"ericklindberg","author":"ericklindberg","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/ericklindberg/lookahead","docs":null,"tools":["lookahead_status"],"hooks":["post_gateway_admission","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153583,"prs":[{"n":153583,"state":"closed","created":"2026-11-11T15:18:59Z"}],"created":"2026-11-11T15:18:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ui","title":"Hermes UI","summary":"A bespoke chat workspace for Hermes Desktop and the Webapp: it takes over the app's home route and replaces it with a three-column page — a rail of bots (one row per profile, each with its own conversations), the conversation itself with folded reasoning and tool runs, and a right panel for files, previews and session detail. Bots can answer with a structured block that the thread draws as rich components (status cards, tables, checklists, approval prompts) instead of prose; slash commands, per-bot models and a settings page come with it, and media blocks render images, audio and video inline.","disclosure":"reads the active profile through the public Desktop SDK and the plugin's own backend routes — GET /bots reads each profile's state.db read-only to show the last line each bot said, GET /usage reads subscription usage through Hermes's own reader and, only when a usage key is configured, calls https://opencode.ai/zen/go/v1/usage with that key held server-side and never returned to the page. The preview routes GET /file (UTF-8, 1 MiB) and GET /blob (base64, 8 MiB) resolve the requested path and refuse anything outside the profile home and the user's home directory, anything reached through a symlink that leaves those trees, and the names Hermes keeps credentials in (.env*, auth.json, *.pem, *.key, id_*, .ssh/, secrets/). No shell, no telemetry, no self-updater, no third-party service beyond the optional usage endpoint. The page never patches the app's DOM or prototype: it reads the hash route, the sanctioned door, and uses SDK slots and routes.","category":"desktop","platforms":[],"maintainer":"Ilyassbm","author":"Ilyassbm","version":"1.5.1","requires_hermes":">=0.23","repo":"https://github.com/Ilyassbm/hermes-ui","docs":"https://github.com/Ilyassbm/hermes-ui#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The Desktop half of a unified package starts disabled per browser; enable it once in Capabilities ▸ Plugins.; On a shell that loads plugins late, the first paint can be the native home for a moment before the page takes over; the sidebar entry always opens it.; A provider the gateway does not expose shows no usage meter.","state":"open","pr":153582,"prs":[{"n":153582,"state":"open","created":"2026-11-11T15:17:04Z"}],"created":"2026-11-11T15:17:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/01-intelligent-ui.jpg","https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/02-table.jpg","https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/03-tools-files.jpg","https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/04-approval.jpg","https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/05-model.jpg","https://raw.githubusercontent.com/Ilyassbm/hermes-ui/c465517ad68d0ebb2621ae9e0bc18452dfc58b72/docs/screenshots/06-slash.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-ui.webp"},{"name":"hermes-templates","title":"Agent Templates","summary":"Share a whole Hermes agent as one .htemplate bundle and install it from a single HTTPS link: identity (SOUL.md), config with accounts and endpoints stripped, skills, routines, MCP server definitions, memories only when the author opts in, and plugin ids. A recipe, not a clone — credentials, sessions, conversation history, logs, caches and workspace never travel. Publish puts the bundle in a GitHub repository and returns one permanent link (re-publishing updates the same URL); Install previews a link, a path or a dropped file and writes nothing before you confirm, ships routines paused, enables a plugin only if it is already installed, and reinstalling the same link offers \"Update v1.0.0 → v1.1.0\" while keeping memories, sessions and .env.","disclosure":"reads the selected profile under HERMES_HOME (config.yaml, SOUL.md, skills/, cron/jobs.json, mcp.json, memories/ when opted in) and writes a new profile directory plus its own bundles under plugin-data/; the page may read a bundle only from HERMES_HOME or the home directory, the CLI has no such limit. Network: one HTTPS GET to a URL the user pastes (HTTPS and public hosts only there, http, LAN and local accepted in the CLI; every redirect re-checked, 20 MB cap) and, only when the user presses Publish, the GitHub REST API to upload the bundle and download it back to prove the link before it is shown. Republishing writes the file at the same public URL. Credentials: the optional GITHUB_TOKEN is read with agent.secret_scope under the named profile, never stored in a bundle, never logged and never returned; bundles that carry a credential path are refused before any network call. No shell, no telemetry, no self-updater. Imports agent.redact.redact_sensitive_text, which the public plugin API page lists; the validator table in the current stable build is older than that entry and still prints an advisory.","category":"desktop","platforms":[],"maintainer":"Ilyassbm","author":"Ilyassbm","version":"1.2.4","requires_hermes":">=0.23","repo":"https://github.com/Ilyassbm/hermes-templates","docs":"https://github.com/Ilyassbm/hermes-templates#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The Desktop half of a unified package starts disabled per browser; enable it once in Capabilities ▸ Plugins.; raw.githubusercontent.com caches plain links for up to 5 minutes per client kind, so a just-published update can briefly still serve the previous file; the result also shows the commit-pinned URL, which is immediate.; A profile named by ?profile= is only used for credential resolution; the page lists the profiles of the Hermes home it runs in.","state":"open","pr":153581,"prs":[{"n":153581,"state":"open","created":"2026-11-11T15:16:31Z"}],"created":"2026-11-11T15:16:31Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Ilyassbm/hermes-templates/8cb136ee889a098d6bb13b64c5ff985fd9a44ff5/docs/share-tab.png","https://raw.githubusercontent.com/Ilyassbm/hermes-templates/8cb136ee889a098d6bb13b64c5ff985fd9a44ff5/docs/publish-plan.png","https://raw.githubusercontent.com/Ilyassbm/hermes-templates/8cb136ee889a098d6bb13b64c5ff985fd9a44ff5/docs/publish-link.png","https://raw.githubusercontent.com/Ilyassbm/hermes-templates/8cb136ee889a098d6bb13b64c5ff985fd9a44ff5/docs/install-tab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-templates.webp"},{"name":"eta","title":"ETA","summary":"Honest finish-time ranges for agent work from real run history: kanban boards and cron jobs read live, delegated subagent runs recorded automatically, 'no honest ETA' when work keeps failing, 'clock starts when...' when a step waits on a person, and labelled rough guesses when history is thin.","disclosure":"writes only its own SQLite file in plugin-data/eta (lane, start time, duration, success flag); calls Hermes's kanban_list/kanban_show when the kanban toolset is offered (kanban_list promotes dependency-cleared tasks to ready); reads, read-only (SQLite mode=ro), the cron run ledger (cron/executions.db) and, once on first use, Hermes's session history (state.db), keeping only each past delegated run's role, start, duration and success (off with read_history: false); reads the time zone and kanban concurrency settings from config.yaml/HERMES_TIMEZONE; no network, shell, credentials or background processes.","category":"automation","platforms":[],"maintainer":"FrederickSonsAI","author":"FrederickSonsAI","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/FrederickSonsAI/hermes-eta","docs":"https://github.com/FrederickSonsAI/hermes-eta#readme","tools":["eta_estimate","eta_record_run","eta_history"],"hooks":["subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153580,"prs":[{"n":153580,"state":"open","created":"2026-11-11T15:15:53Z"}],"created":"2026-11-11T15:15:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"air-agent-kya","title":"AIR Agent KYA","summary":"Know-Your-Agent with AIR (Moca Network): you delegate your AIR identity to Hermes once in the AIR Console (`hermes air login`, device code, P-256 agent key, credentials.verify scope, no wallet signing); the kya_visit tool then enters KYA stores that publish /.well-known/air-kya, gets a one-time SD-JWT presentation from AIR that discloses only the claims the store requests (e.g. membership tier), and returns the catalog that credential unlocks; agents that aren't delegated get the store's public catalog.","disclosure":"network calls to the AIR Console (sandbox.agents.air3.com, during login only), the AIR API (air.api.sandbox.air3.com) and AIR credential API (credential-testnet.api.sandbox.air3.com), and to each KYA site the agent visits (https only, plain http allowed for localhost); stores a P-256 agent private key and the AIR delegation bundle in its own plugin-data directory with mode 0600, removed by `hermes air logout`; on first run after the rename it reads the old air-kya plugin-data directory once to carry a delegation over; a live kya_visit asks for approval through Hermes's approval gate before any claim is disclosed and sends the presentation only to the origin that issued the nonce; the model never sees the presentation, key or tokens; endpoints are plugin settings, no secrets or env vars read; no shell, subprocess, background thread or telemetry.","category":"tools","platforms":[],"maintainer":"mocaNetwork","author":"armanmamyan","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/MocaNetwork/air-agent-hermes","docs":"https://github.com/mocaNetwork/air-agent-hermes#readme","tools":["air_whoami","kya_visit"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Defaults point at the AIR sandbox; production needs the endpoint settings.; `hermes air login` runs in a terminal only and waits for approval until the device code expires.","state":"open","pr":153579,"prs":[{"n":153579,"state":"open","created":"2026-11-11T15:14:10Z"}],"created":"2026-11-11T15:14:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"seatbelt","title":"seatbelt","summary":"Seatbelt enforces your trading limits in front of every trading-looking tool call (perps/futures, prediction markets, NFTs, swaps): allow, block, ask you, or clamp leverage. Includes paper mode (simulated fills), /seatbelt halt, a guided /seatbelt setup, an audit log, tamper protection and YAML venue adapters (Polymarket via hermes-pmxt included).","disclosure":"it reads the arguments of every tool call to spot trades; it keeps a local sqlite audit log of redacted arguments in the plugin data directory; no network access and no telemetry; the tamper guard is best effort, not a sandbox; \"ask\" decisions only reach a human when Hermes approvals.mode is manual (otherwise Seatbelt blocks instead of asking); not verified for tools delivered through MCP.","category":"tools","platforms":[],"maintainer":"deeworksonline-debug","author":"deeworksonline-debug","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/deeworksonline-debug/hermes-seatbelt","docs":"https://github.com/deeworksonline-debug/hermes-seatbelt#readme","tools":[],"hooks":["pre_tool_call","post_tool_call"],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"open","pr":153577,"prs":[{"n":153577,"state":"open","created":"2026-11-11T15:10:49Z"}],"created":"2026-11-11T15:10:49Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"liv","title":"liv","summary":"The first real stateful memory for AI agents: a knowledge graph above the raw transcript, every word kept as plain text tables, local and yours.","disclosure":"","category":"memory","platforms":[],"maintainer":"demos-ra","author":"demos-ra","version":"0.1.1","requires_hermes":"","repo":"https://github.com/demos-ra/liv","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153574,"prs":[{"n":153574,"state":"open","created":"2026-11-11T15:08:36Z"}],"created":"2026-11-11T15:08:36Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"prsn-id","title":"PRSN ID","summary":"Gives a Hermes agent its PRSN ID, read live from PRSN Connect, the desktop app that keeps the agent's signing key in the computer's secure hardware. The agent knows its own PRSN ID at each session and can seal email and files with its PRSN's key. Hermes asks the human before each Seal with its own approval prompt. It also asks the human before a command or file action of Hermes's own that names PRSN Connect or its files. /prsn shows the state, and Hermes Desktop gets a status bar item. Disclosure. The plugin reads ~/.prsn-id/gateway.json, which PRSN Connect writes and which holds no token. It starts prsn-gateway-mcp, a program PRSN Connect installed, and talks to it over standard input and output on this computer. PRSN Connect makes the calls to api.prsnid.ai, and a Seal's link opens verify.prsnid.ai. It writes its last state to status.json in its own data folder, and, only with the server_log setting on, PRSN Connect's server log. After a file Seal it opens the Seal's page at verify.prsnid.ai in the default browser, and no other address. It makes no network call of its own, stores no credential and sends no telemetry.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"PRSN EX Inc.","author":"craczkow","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/prsnex/prsn-id-hermes","docs":"https://github.com/prsnex/prsn-id-hermes#readme","tools":["prsn_id_profile","prsn_id_status","prsn_id_seal_message","prsn_id_seal_file"],"hooks":["pre_tool_call","pre_llm_call","post_compaction"],"middleware":[],"env":[],"known_issues":"Needs PRSN Connect v0.2.1 or later running on the same computer and user account. A server with no desktop cannot run it today.; On Windows, file Seals are refused, and a sealed message cannot carry attachments.; A file Seal's page opens only in the browser on the computer where Hermes runs. Through a chat platform, no working link reaches you.; With Hermes's approvals off, in yolo mode, or in a one-shot hermes -z run, Hermes asks nothing, so a Seal is made without the human's yes. An agent that can run commands can start such a run itself. The plugin's check on commands that name PRSN Connect is not a wall.","state":"open","pr":153570,"prs":[{"n":153570,"state":"open","created":"2026-11-11T15:05:05Z"}],"created":"2026-11-11T15:05:05Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/prsnex/prsn-id-hermes/d833d031948ba4c41f546e9d3c7165ea6720f607/docs/screenshots/identity-and-status.png","https://raw.githubusercontent.com/prsnex/prsn-id-hermes/d833d031948ba4c41f546e9d3c7165ea6720f607/docs/screenshots/approval-before-a-seal.png","https://raw.githubusercontent.com/prsnex/prsn-id-hermes/d833d031948ba4c41f546e9d3c7165ea6720f607/docs/screenshots/sealed-email-checked.png","https://raw.githubusercontent.com/prsnex/prsn-id-hermes/d833d031948ba4c41f546e9d3c7165ea6720f607/docs/screenshots/sealed-file-verified.png"],"videos":[],"x":["https://x.com/prsn_ex/status/2120534170510508220"],"youtube":[],"thumb":"/hackathon/thumbs/prsn-id.webp"},{"name":"costory","title":"Costory FinOps Agent","summary":"FinOps harness MCP for platform teams. Every cloud, data and LLM bill (AWS, Google Cloud, Azure, Oracle Cloud, Snowflake, Databricks, OpenAI, Anthropic and more) normalized in BigQuery and allocated to your teams. Read-only cloud access. Starter from $300/month, 30-day free trial. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/) connecting Hermes to Costory's hosted MCP at https://app-api.costory.io/mcp (Streamable HTTP, OAuth). Bundles seven FinOps skills: query, cost-change-investigation, virtual-dimensions, dashboards, reports, recipes and bigquery.","disclosure":"hosted-only connector with no local code beyond the pin; every tool call goes to app-api.costory.io after browser OAuth (enterprise SSO on Costory Team and above). The tool set is served by the remote server at runtime and is not covered by the pinned sha. Costory has write-capable tools that create or change Costory objects only (alerts, reports, dashboards, events, allocation rules, archives), never cloud resources; plugin.json sets extensions.com.nousresearch.hermes.servers.costory.trust: untrusted so Hermes asks before writes and refuses them in unattended runs. No mcp-remote, no local credentials, no self-updater.","category":"tools","platforms":[],"maintainer":"Costory","author":"gregoire-costory","version":"0.12.10","requires_hermes":">=0.21.6","repo":"https://github.com/costory-io/costory-finops-mcp-skills","docs":"https://docs.costory.io/features/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153569,"prs":[{"n":153569,"state":"open","created":"2026-11-11T15:04:42Z"}],"created":"2026-11-11T15:04:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ship-reel","title":"Ship Reel","summary":"Turns a URL and a one-line brief into a finished product demo reel. The agent plans a shot list and dry-runs it against the live page, records it in headless Chromium, edits it with auto-zoom, a drawn cursor, captions, title and end cards, optional local voice-over and a music bed into 16:9 and 9:16 MP4s, verifies the result (duration, resolution, black or frozen frames, loudness, captions) and fixes what fails, then drafts the post text. It never posts.","disclosure":"opens the user-supplied URL and the pages in its shot list in headless Chromium; runs ffmpeg/ffprobe and local render worker processes; writes only to its plugin data directory (or SHIP_REEL_HOME); with the optional kokoro-onnx extra installed, downloads the Kokoro TTS model (~120 MB) once from its official GitHub release, SHA-256 pinned. Refuses sign-up, login, payment, submit, delete and wallet clicks unless allow_risky is set, and never enters credentials. No telemetry, no API keys.","category":"tools","platforms":[],"maintainer":"AshThunder","author":"AshThunder","version":"0.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/AshThunder/ship-reel","docs":"https://github.com/AshThunder/ship-reel/blob/1b72949d32ea8a8c33afe67dab15c6473d822ab2/README.md","tools":["plan_reel","record_reel","edit_reel","verify_reel","fix_reel","list_reels","reel_status","draft_post"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires ffmpeg and ffprobe on PATH, and Chromium for Playwright (python -m playwright install chromium).; Voice-over is optional and needs pip install \"kokoro-onnx>=0.4,<1\"; without it reels render with captions and music only.; Records public pages only; flows behind a sign-in are out of scope for this version.; Some sites' own search boxes do not work in a headless browser.","state":"open","pr":153567,"prs":[{"n":153567,"state":"open","created":"2026-11-11T15:02:10Z"}],"created":"2026-11-11T15:02:10Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AshThunder/ship-reel/1b72949d32ea8a8c33afe67dab15c6473d822ab2/docs/img/nous-title-card.png","https://raw.githubusercontent.com/AshThunder/ship-reel/1b72949d32ea8a8c33afe67dab15c6473d822ab2/docs/img/nous-hermes-menu.png","https://raw.githubusercontent.com/AshThunder/ship-reel/1b72949d32ea8a8c33afe67dab15c6473d822ab2/docs/img/lockwatch-explorer.png","https://raw.githubusercontent.com/AshThunder/ship-reel/1b72949d32ea8a8c33afe67dab15c6473d822ab2/docs/img/nous-vertical.png","https://raw.githubusercontent.com/AshThunder/ship-reel/1b72949d32ea8a8c33afe67dab15c6473d822ab2/docs/img/meta-demo-record.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ship-reel.webp"},{"name":"multi-telegram","title":"Multi-Telegram","summary":"Run an arbitrary number of Telegram bot identities through one Hermes profile and agent. Each bot has its own token reference, display identity, allowlists, role prompt, welcome message and session policy; replies always leave through the bot that received the triggering message. Optional shared-session groups continue one stored Hermes transcript for the same external chat/user/topic.","disclosure":"long polling to the Telegram Bot API uses one bot token per bot, read from the active profile's secret scope via a per-bot token_env; no telemetry, subprocess, self-update or core overrides; authorized inbound attachments are cached through Hermes; non-secret status and proactive routes are stored under HERMES_HOME/plugin-data. Transcript isolation is not memory isolation: MEMORY.md, USER.md, session_search and tools are profile-wide; use separate profiles or restrict toolsets for hard isolation. Webhooks, inline clarify/approval keyboards and out-of-process cron delivery are not implemented. Disclosure — runs one Telegram Bot API long-poll connection per configured bot, using a per-bot token read from the active profile's secret scope by its `token_env` name (optional operator-set proxy / custom Bot API base URL); inbound messages from allowlisted senders (deny-all by default; `allow_all_users` makes a bot public) reach this profile's one agent, whose memory, USER.md, session_search and tools are shared by every bot unless per-bot `toolsets` restrict them; attachments are cached through Hermes and status/route files are kept under HERMES_HOME/plugin-data/multi-telegram; may lazily install Hermes's own `telegram` extra through Hermes's package manager; adds a token-redacting filter to the process's root log handlers.","category":"platform","platforms":[],"maintainer":"sergio-dev1-py","author":"sergio-dev1-py","version":"1.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/sergio-dev1-py/multibot_telegram","docs":"https://github.com/sergio-dev1-py/multibot_telegram#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Long polling only; webhooks are not implemented.; Inline clarify/approval keyboards are not implemented; text fallback is used.; Out-of-process cron delivery is not implemented.; Isolated transcripts do not isolate profile memory, USER.md, session_search or tools; use separate profiles or restrict toolsets.; Telegram DM topics are unverified.","state":"open","pr":153562,"prs":[{"n":153562,"state":"open","created":"2026-11-11T14:57:17Z"}],"created":"2026-11-11T14:57:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fudge","title":"Fudge for Shopify","summary":"Run a Shopify store with AI through Fudge's hosted MCP server (Streamable HTTP, OAuth 2.1 with dynamic client registration and PKCE): store briefs, sales, search and analytics measurement, SEO, AI-search and catalog checks, keyword research, and storefront changes prepared as private drafts that the merchant publishes in Fudge, with six skills bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector with no local code; every tool call goes to Fudge's MCP server at mcp.fudge.ai with the merchant's requests and store data (products, pages, sales and traffic figures), which also reach the user's model provider through the session. Write tools create or edit private drafts and, when asked, hidden Shopify items (draft products, pages, articles, collections); nothing goes live until the merchant publishes in Fudge. Hermes stores and refreshes the OAuth tokens. The tool list comes from Fudge's server at run time, so the pinned commit doesn't cover it. The server accepts a connection without a token so its free tools (design references, page checks, free reports) work before sign-in; store tools need sign-in, which starts the first time one runs.","category":"tools","platforms":[],"maintainer":"Fudge","author":"jacques-blom","version":"1.0.1","requires_hermes":">=0.22.0","repo":"https://github.com/fudge-ai/fudge-plugin","docs":"https://github.com/fudge-ai/fudge-plugin/blob/11f589b9e06952396f3f670481ec9a133a34794f/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Add the server once after installing: hermes mcp add fudge --url https://mcp.fudge.ai/mcp --auth oauth. Sign-in then opens in the browser the first time a store tool runs in an interactive session; hermes mcp login fudge can't start it, because the server answers without a token.","state":"open","pr":153561,"prs":[{"n":153561,"state":"open","created":"2026-11-11T14:55:43Z"}],"created":"2026-11-11T14:55:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rocketchat-team-gateway","title":"Rocket.Chat Team Gateway","summary":"Rocket.Chat gateway adapter for Hermes Agent, built for shared team rooms. Per-person sessions with room context since the asker's previous mention, a default-deny guard for Hermes commands, approval buttons, restart catch-up and duplicate suppression that survive a restart. Supports Rocket.Chat 8.7 - 9.x.","disclosure":"","category":"platform","platforms":[],"maintainer":"csabatatrai-ulx","author":"csabatatrai-ulx","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/csabatatrai-ulx/hermes-rocketchat-team-gateway","docs":"https://csabatatrai-ulx.github.io/hermes-rocketchat-team-gateway/","tools":[],"hooks":[],"middleware":[],"env":["ROCKETCHAT_URL","ROCKETCHAT_TOKEN","ROCKETCHAT_USER_ID","ROCKETCHAT_BOT_USERNAME"],"known_issues":"","state":"open","pr":153557,"prs":[{"n":153557,"state":"open","created":"2026-11-11T14:50:15Z"}],"created":"2026-11-11T14:50:15Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog-card.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/shared-room.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog/approval-buttons.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog/chatops-fixed.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog/personal-assistant.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog/command-guard.png","https://raw.githubusercontent.com/csabatatrai-ulx/hermes-rocketchat-team-gateway/60c3c4ea69d6c7faf8e8dc8fdffcff297b6df1a5/docs/images/catalog/docs-site.png"],"videos":["https://github.com/user-attachments/assets/3a8107bc-dd71-4a02-9eed-7d476e32b55a"],"x":["https://x.com/csabaatatrai/status/2120545513212616929"],"youtube":[],"thumb":"/hackathon/thumbs/rocketchat-team-gateway.webp"},{"name":"skill-stats","title":"Skill Stats","summary":"Skill Stats shows which skills you actually use in Hermes Agent, when, and how much. Type /skill-stats in any chat to see that session's skills ranked by loads with a % share, or run `hermes skill-stats` in the terminal for all-time totals; switch the window from 1 day to 90, page through the rows, group them by category, and answer questions like \"which skills did I lean on this week?\" or \"is this skill still worth keeping?\" Point the command at another chat by title or short id (for example -s stageshow-bentora) to compare sessions, or add `global` from a chat to see everything combined. In `hermes --tui` the same numbers open as an interactive modal: browse skills with the arrow keys, open a skill's chart, flip between bars and a cumulative line, and set the period with keys 1 to 6. The web Dashboard gains a Skill Stats tab where you pin the skills you monitor so they stay on top of the table, page 10 to 100 rows, and drill into per-skill charts. Nothing to configure: install it and the counting starts on the next session.","disclosure":"no network calls, no telemetry, no shell commands and no credentials; the plugin writes only its own stats files under $HERMES_HOME/skill-stats/ (plus one copy of its TUI widget file into $HERMES_HOME/tui-widgets/ at startup so the modal works) and reads Hermes' session registry read-only to resolve a session title or short id, never message content.","category":"tools","platforms":[],"maintainer":"minhng92","author":"minhng92","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/minhng92/skill-stats","docs":"https://github.com/minhng92/skill-stats/blob/4e412bcdc10f833ee11a0425e673695e55fd3472/README.md","tools":[],"hooks":["pre_tool_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153556,"prs":[{"n":153556,"state":"open","created":"2026-11-11T14:48:54Z"}],"created":"2026-11-11T14:48:54Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/minhng92/skill-stats/4e412bcdc10f833ee11a0425e673695e55fd3472/assets/banner.jpg","https://raw.githubusercontent.com/minhng92/skill-stats/4e412bcdc10f833ee11a0425e673695e55fd3472/assets/skill-usage-overall.jpg","https://raw.githubusercontent.com/minhng92/skill-stats/4e412bcdc10f833ee11a0425e673695e55fd3472/assets/introduction.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skill-stats.webp"},{"name":"model-doctor","title":"Model Doctor","summary":"Proactive LLM health monitor: observes every provider API request Hermes makes via the pre_api_request / post_api_request / api_request_error hooks, records per-model uptime, latency and failure verdicts — AUTH (HTTP 401/403, e.g. a truncated or expired API key), RATE (429), UPSTREAM (5xx), EMPTY (200 with zero content, stalled model or max_tokens too small), SLOW — and exposes model_doctor_status / model_doctor_refresh so the agent or the operator can ask which models are sick and why. This is the diagnostic layer round-robin routing lacks: rotation moves you off a dead model, Model Doctor tells you it died, why, and which alternatives are healthy.","disclosure":"passive only: the plugin makes no network calls of its own, requires no credentials and sends no telemetry; it writes a JSON snapshot of health stats to <HERMES_HOME>/model-doctor/health.json and returns only per-model request statistics (counts, verdicts, latencies, base_url/model names) — never prompt or response content. MIT licensed; includes a runnable selfcheck.py.","category":"models","platforms":[],"maintainer":"ChainShieldSn","author":"ChainShieldSn","version":"1.0.0","requires_hermes":">=0.16.0","repo":"https://github.com/ChainShieldSn/Model-Doctor","docs":"https://github.com/ChainShieldSn/Model-Doctor#readme","tools":["model_doctor_status","model_doctor_refresh"],"hooks":["pre_api_request","post_api_request","api_request_error"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153555,"prs":[{"n":153555,"state":"open","created":"2026-11-11T14:48:45Z"}],"created":"2026-11-11T14:48:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"flota","title":"Flota","summary":"Run delegate_task subagents on your own machines over SSH (delegation.backend: flota). Flota wakes the chosen machine (Wake-on-LAN, a relay host on its LAN, any command, or the machine's own wake timer), falls back to another machine if it does not come up, and suspends it after its last subagent, never a busy one (the model cannot force it). `hermes flota setup user@host` detects OS, MAC, broadcast and how the machine can sleep; `doctor` prints fixes; `uninstall` undoes it; fleet pairing with two codes (public keys only); a fleet map page for Hermes Desktop and the web dashboard. Python standard library only.","disclosure":"runs ssh to the machines you configure and your own wake/sleep commands, sends Wake-on-LAN packets on your LAN, can run `sudo -n` for one fixed wake-alarm command only if you allow it, adds one public key line to a ship's authorized_keys at pairing, and keeps auto-sleep timers in the gateway process; no third-party network calls, no telemetry, no stored credentials.","category":"automation","platforms":["linux"],"maintainer":"Francisco Bastidas","author":"Bto-03","version":"0.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/Bto-03/hermes-flota","docs":null,"tools":["flota"],"hooks":["subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"Only one delegation backend is active at a time; delegation.backend: flota replaces any other delegation route.; Auto-sleep timers live in the running process, so auto-sleep needs a long-lived gateway.; Hermes routes the tasks of one delegate_task call sequentially, so a slow wake delays the later tasks of that batch.; Hooks carry no route, so subagents are matched to machines by calling thread plus goal text; identical goals for different machines from the same thread can still be mixed up.; Plain Wake-on-LAN needs the Hermes host on the machine's LAN; use wake: wol_via, wake: command or wake: timer across networks.; The hermes flota sleep/off CLI and the dashboard see busy machines only while a gateway is running (it publishes busy counts to a state file); without one they cannot tell.; One busy-state file per profile: a gateway and a separate chat session running subagents at the same time overwrite each other's counts.; A machine with wake: timer cannot be woken on demand; a task for it waits only if its own alarm is due within wake_timeout.; macOS and Windows ships are experimental and untested on real hardware; wake: timer is unit-tested only.; hermes plugins validate warns about private core imports (profiles, cron jobs, atomic config write, the SSH terminal class); a core release can break them.","state":"open","pr":153549,"prs":[{"n":153549,"state":"open","created":"2026-11-11T14:32:24Z"}],"created":"2026-11-11T14:32:24Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Bto-03/hermes-flota/0b480a64f2e7229169dc3003d029f251d803a5da/docs/flota-desktop-map.png","https://raw.githubusercontent.com/Bto-03/hermes-flota/0b480a64f2e7229169dc3003d029f251d803a5da/docs/flota-schedule.png","https://raw.githubusercontent.com/Bto-03/hermes-flota/0b480a64f2e7229169dc3003d029f251d803a5da/docs/flota-fleet-pairing.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flota.webp"},{"name":"tmux-live","title":"tmux-live","summary":"Live tmux tab for the Hermes web dashboard: pick a pane, watch it in ANSI colour, type into it when needed, and terminate the process, pane or session.","disclosure":"calls the local tmux binary with argv lists (capture-pane, send-keys, kill-pane, kill-session), can signal the pane's foreground process group, and probes /proc/<pid>/root/tmp for the tmux socket when the dashboard runs under systemd PrivateTmp. No network access, credentials, telemetry or self-updater. English and Spanish UI.","category":"tools","platforms":["linux","macos"],"maintainer":"maksymhs","author":"maksymhs","version":"1.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/maksymhs/hermes-tmux-live","docs":"https://github.com/maksymhs/hermes-tmux-live#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The view is a one-second mirror, not a PTY attachment, so typed characters appear on the next poll.; Only panes belonging to the same user and host as the dashboard are visible.","state":"open","pr":153545,"prs":[{"n":153545,"state":"open","created":"2026-11-11T14:31:05Z"}],"created":"2026-11-11T14:31:05Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/maksymhs/hermes-tmux-live/e2ec7dcc7c69f958a0daae9041a927728f18648b/docs/tmux-live-picker.png","https://raw.githubusercontent.com/maksymhs/hermes-tmux-live/e2ec7dcc7c69f958a0daae9041a927728f18648b/docs/tmux-live-pane.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tmux-live.webp"},{"name":"hermes-arcade-tui","title":"Hermes Arcade","summary":"Three terminal games inside the terminal Hermes already runs in: chess against the model Hermes is using, a side-view kart racer, and Chrome's dino wearing the Hermes cap.","disclosure":"","category":"general","platforms":[],"maintainer":"Takumixbt","author":"Takumixbt","version":"3.0.1","requires_hermes":">=0.23.0","repo":"https://github.com/Takumixbt/Hermes-Arcade","docs":null,"tools":[],"hooks":["pre_llm_call","pre_tool_call","subagent_start","post_llm_call","on_session_end","on_session_reset"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153544,"prs":[{"n":153544,"state":"open","created":"2026-11-11T14:30:52Z"}],"created":"2026-11-11T14:30:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Takumixbt/Hermes-Arcade/cbcda3bbad2d5f03007594a6ef87d757131cbb29/docs/arcade.gif"],"videos":["https://raw.githubusercontent.com/Takumixbt/Hermes-Arcade/cbcda3bbad2d5f03007594a6ef87d757131cbb29/docs/demo-45s.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-arcade-tui.webp"},{"name":"mood-engine","title":"mood-engine","summary":"Dynamic 4-axis mood engine (energy, warmth, patience, focus) with async post-turn evaluation, passive decay, and zero-token neutral baseline.","disclosure":"in auto/llm mode each user turn runs one background ctx.llm.complete_structured() call on your active provider (or configured auxiliary.mood_eval model); set evaluator_mode to heuristic for zero extra tokens; stores mood state locally in profile-scoped ctx.state.","category":"general","platforms":[],"maintainer":"NiceStackApple","author":"NiceStackApple","version":"1.1.0","requires_hermes":">=0.20.1","repo":"https://github.com/NiceStackApple/hermes-mood-engine","docs":"https://github.com/NiceStackApple/hermes-mood-engine#readme","tools":[],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153542,"prs":[{"n":153542,"state":"open","created":"2026-11-11T14:30:24Z"}],"created":"2026-11-11T14:30:24Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sidecar","title":"Sidecar","summary":"Remote brain, local hands: a paired execution backend that lets a remote Hermes run terminal, file, patch, search and execute_code commands on the user's local machine. A local daemon applies a workspace boundary and a hard deny list (privilege escalation, recursive root deletes, download-to-shell, Apple Events, keychain access, outbound network shells), and by default asks the person at the keyboard before anything that is not a side-effect-free read-only command. The pairing token is 32 random bytes, stored mode 0600 and compared in constant time; the daemon binds to loopback by default and warns otherwise. Commands run as the local user with a sanitized environment (no provider keys or SSH agent socket), a timeout and a process-group kill; every decision is written to a local JSONL audit log with command text redacted for common secret shapes and no command output stored. The remote plugin makes no network calls of its own beyond the configured daemon URL, has no Python dependencies, no telemetry and no self-updater. Not a sandbox: an approved command runs with the user's privileges; pair with Glassbox for kernel enforcement. macOS and Linux only.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"rkfshakti","author":"rkfshakti","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/rkfshakti/hermes-sidecar","docs":"https://github.com/rkfshakti/hermes-sidecar","tools":["sidecar_status","sidecar_audit"],"hooks":[],"middleware":[],"env":[],"known_issues":"Under plugins.isolation: host, Hermes skips plugin CLI subcommands and hands the provider an opaque placeholder; run Sidecar in the default in-process plugin isolation.","state":"open","pr":153541,"prs":[{"n":153541,"state":"open","created":"2026-11-11T14:29:10Z"}],"created":"2026-11-11T14:29:10Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/rkfshakti/hermes-sidecar/2b14296716b9742ff2dfa3246e83993e949e053e/video/slides/01-title.png","https://raw.githubusercontent.com/rkfshakti/hermes-sidecar/2b14296716b9742ff2dfa3246e83993e949e053e/demo/demo.gif"],"videos":["https://raw.githubusercontent.com/rkfshakti/hermes-sidecar/2b14296716b9742ff2dfa3246e83993e949e053e/video/sidecar-demo.mp4"],"x":["https://x.com/onemohapatra/status/2120535026844774911"],"youtube":[],"thumb":"/hackathon/thumbs/sidecar.webp"},{"name":"cartridge","title":"Cartridge","summary":"A handheld ROM emulator pane that plays the user's own .gb/.gbc files while the agent works, holds the frame the instant an approval arrives, and resumes on the same frame once it is answered. Desktop-only: no agent tools, hooks, middleware or env vars, and the pane makes no network calls.","disclosure":"","category":"desktop","platforms":["windows","macos","linux"],"maintainer":"Frazzlesprite","author":"Frazzlesprite","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Frazzlesprite/hermes-cartridge","docs":"https://github.com/Frazzlesprite/hermes-cartridge#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153535,"prs":[{"n":153535,"state":"open","created":"2026-11-11T14:21:44Z"}],"created":"2026-11-11T14:21:44Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Frazzlesprite/hermes-cartridge/e889a08fdb24b830881343440cecbaf77986db50/docs/shots/playing.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-cartridge/e889a08fdb24b830881343440cecbaf77986db50/docs/shots/ask.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-cartridge/e889a08fdb24b830881343440cecbaf77986db50/docs/shots/approval.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-cartridge/e889a08fdb24b830881343440cecbaf77986db50/docs/shots/resumed.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cartridge.webp"},{"name":"mailbridge","title":"Mailbridge","summary":"Resumable legacy POP and EML migration to Gmail with source preservation, uncertain-write recovery, and verified coverage.","disclosure":"imports mail into the signed-in Google account (gmail.insert, gmail.readonly, gmail.labels) from POP accounts and EML folders using detached background workers that keep running after the tool call returns; each Gmail plan needs a one-time approval typed in a local terminal.","category":"automation","platforms":["linux","macos"],"maintainer":"MadanChaollaPark","author":"MadanChaollaPark","version":"0.3.0","requires_hermes":">=0.23.1","repo":"https://github.com/MadanChaollaPark/hermes-mailbridge","docs":"https://github.com/MadanChaollaPark/hermes-mailbridge/tree/main/plugin","tools":["mailbridge_gmail_connect","mailbridge_gmail_connection_status","mailbridge_providers","mailbridge_inspect","mailbridge_capture","mailbridge_plan","mailbridge_start","mailbridge_status","mailbridge_pause","mailbridge_reconcile","mailbridge_verify","mailbridge_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"Google consent and live Gmail imports have not been tested; validation uses fictional mail and mocked Gmail responses.; The JSON upload transport accepts prepared messages up to 25 MiB; larger messages stop before upload.; POP captures only server-visible mail; other folders and computer-only archives need separate EML exports. Direct IMAP capture is not implemented.","state":"open","pr":153533,"prs":[{"n":153533,"state":"open","created":"2026-11-11T14:20:10Z"}],"created":"2026-11-11T14:20:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-reliability","title":"Reliability Lab","summary":"Architecture-aware reliability testing for agent repositories: discover real usage datasets, generate scenarios, review them independently, execute configured targets and inspect evidence in Hermes web and Desktop dashboards. Freeze audited benchmarks and compare regressions across code changes, with baseline references for native Hermes memory.","disclosure":"sends source excerpts and sampled user messages to the configured model provider, queries Hugging Face/Zenodo, clones supplied repositories, starts background workers, and runs target/evaluator code on the host when execution is enabled; OpenHands/DeerFlow targets use configured containers. Campaign evidence is stored in the active profile.","category":"tools","platforms":["linux"],"maintainer":"MadBonzz","author":"MadBonzz","version":"0.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/MadBonzz/hermes-reliability","docs":"https://github.com/MadBonzz/hermes-reliability#readme","tools":["reliability_start","reliability_status","reliability_stop","reliability_evidence","reliability_history","reliability_freeze","reliability_compare","reliability_memory"],"hooks":["pre_tool_call"],"middleware":[],"env":["HF_TOKEN","RELIABILITY_TARGET_API_KEY"],"known_issues":"The Hermes target adapter uses version-sensitive runtime interfaces in separate evaluation workers; compatibility warnings and tested revisions are documented.; End-to-end workflows are verified with deterministic models. Live Command A target smoke and Muse scenario generation/preflight passed; a complete autonomous live campaign remains unverified.","state":"open","pr":153531,"prs":[{"n":153531,"state":"open","created":"2026-11-11T14:18:07Z"}],"created":"2026-11-11T14:18:07Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MadBonzz/hermes-reliability/215d08d68243f67862d8215df73cfd39e569151c/docs/screenshots/regression-dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-reliability.webp"},{"name":"saywhat","title":"saywhat","summary":"Voice input that asks instead of guessing: a local faster-whisper STT provider (stt.provider saywhat) that scores every word's confidence, has the agent confirm uncertain dictation through clarify (whole-sentence choices first, then word by word) before acting, learns a personal dictionary from those answers so habitual mishearings are fixed automatically, and coaches pronunciation with a practice loop (word-level verdicts and tips, a spoken model, score history).","disclosure":"audio is transcribed locally; faster-whisper downloads the chosen Whisper model from Hugging Face on first use. On dictated turns with uncertain words, a confidence report and candidate sentences are added to the user message sent to your LLM provider. Practice sends the practice sentence to your configured Hermes TTS provider (possibly a cloud service) and, in an interactive terminal only, plays it with afplay/ffplay/paplay/aplay as a short detached process. Stores the dictionary, the latest transcript with word timings (never audio) and practice scores in plugin-data. Reads only local audio files passed to saywhat_practice. No credentials, telemetry or other network calls.","category":"voice","platforms":["macos","linux"],"maintainer":"muhammadaus","author":"muhammadaus","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/muhammadaus/saywhat","docs":"https://github.com/muhammadaus/saywhat#readme","tools":["saywhat_practice","saywhat_progress","saywhat_dictionary"],"hooks":["pre_transcription","pre_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153529,"prs":[{"n":153529,"state":"open","created":"2026-11-11T14:16:18Z"}],"created":"2026-11-11T14:16:18Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/muhammadaus/saywhat/cb50347988ec9bdfaf6a5fbaedc49aac14b6b87e/assets/card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/saywhat.webp"},{"name":"idea-board","title":"idea-board","summary":"A nightly board of things your agent can take off your plate, each tied to your own words. Code finds signals in your last 14 days of chats (things asked on several days, remind-me loops, upcoming dates, corrections, failing tools, things the agent said it couldn't reach); a model drafts ideas, a second pass critiques them, and code checks every idea (evidence ids must exist, named capabilities must be installed, links and @file/@url references you never typed are rejected). Click an idea and a new chat opens with the prompt in the composer; you press send, nothing is sent for you. Dismiss with a reason and it becomes a rule applied on every later run. Also ranks which Portal connector to add next by how many ideas it would unlock that match your chats (no model call). Desktop board and setup page plus a Python half.","disclosure":"no network calls of its own and no telemetry; all model calls go through Hermes (two per run, ideation and critique, on the auxiliary task idea_board; unset it follows your main model; about 70–80k tokens for two weeks of heavy use). Reads outside its own data: state.db chats from the last 7/14/30 days you pick (scheduled-job runs, subagents, hidden and group chats skipped; only text you typed is quoted, other content is wrapped as untrusted), this profile's toolsets, MCP servers, connectors, skills, messaging platforms and scheduled jobs, Hermes's suggested cron jobs, and memories/USER.md; some of that goes to your configured model inside the ideation prompt. Three imports of undocumented Hermes internals (hermes_cli.tools_config._get_platform_tools, toolsets.resolve_toolset, cron.suggestions.load_suggestions) trigger the catalog's rule 9 warning; each has a tested fallback (tests/test_compat.py) and a public-API request is open at NousResearch/hermes-agent#149576. Stores ideas, dismissals, rules and run history in <HERMES_HOME>/plugin-data/idea-board/data.db. A pre_llm_call hook only links a chat started from a card back to its card (no injection). Nothing is scheduled until you press Schedule it in setup, which creates one cron job (nightly, time you pick) through Hermes's cron API; that job wakes the agent for one short turn (about 30k prompt tokens, mostly cached) to call idea_board_run. No shell commands, no stored credentials, no background process of its own.","category":"desktop","platforms":[],"maintainer":"bmanturner","author":"bmanturner","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/bmanturner/hermes-idea-board","docs":"https://github.com/bmanturner/hermes-idea-board/blob/fc824ef3ea22df8bc1c63da4657ea72f08005bb6/README.md","tools":["idea_board_run"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Three undocumented Hermes internals are imported (see the disclosure); each falls back cleanly if a release moves it.; Desktop connected to a remote Hermes: install the agent half on the server, and the Desktop half from Git on the laptop (the desktop half of a remote plugin can't be read from another machine).","state":"open","pr":153526,"prs":[{"n":153526,"state":"open","created":"2026-11-11T14:10:30Z"}],"created":"2026-11-11T14:10:30Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"blast-radius","title":"blast-radius","summary":"Measures what a command will destroy before it runs: real file counts, bytes, uncommitted git work and credentials at risk. Harmless calls pass silently, risky ones get a concrete impact report (0-100 score with reasons) at the approval prompt, catastrophic targets (.git, home, system dirs, raw devices, Hermes' own data) are blocked, and files git cannot restore are copied into a recovery capsule so /blast undo can bring them back without overwriting newer edits.","disclosure":"hooks pre_tool_call and post_tool_call on terminal, execute_code, write_file and patch only; runs read-only `git rev-parse --show-toplevel` and `git status --porcelain=v1 -z -uall --ignored=traditional` (argv lists, GIT_OPTIONAL_LOCKS=0, timeouts) in the directories a pending destructive command would touch; reads the targets' names, sizes and git state, and file contents only to copy them into a capsule; writes capsules and a ledger.jsonl under <HERMES_HOME>/plugin-data/blast-radius/ (pruned after 14 days / 200 capsules by default), and writes to a captured file's original path only when you run /blast restore or /blast undo or the agent calls blast_restore (which never overwrites files changed after the capsule; only a human can force that); the ledger stores each assessed command truncated to 300 characters with token=/key=/password= style values masked; no network calls, no telemetry, no credentials, no background processes, no self-updates; fails open on internal errors; the analyzer reads shell text only, so a script that deletes files internally is not seen until it runs.","category":"tools","platforms":[],"maintainer":"namanomar","author":"namanomar","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/namanomar/blast-radius","docs":"https://github.com/namanomar/blast-radius/blob/53e474158451717d24c099ecb0569ffe5f64f242/README.md","tools":["blast_radius","blast_restore"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"Only terminal, execute_code, write_file and patch calls are inspected; other tools (for example MCP filesystem servers) are not.; A script that deletes files internally (./cleanup.sh) is invisible to the shell-text analyzer until it runs.; Capsules are capped at 200 MB per command; larger captures are marked partial and raise the risk score.","state":"open","pr":153525,"prs":[{"n":153525,"state":"open","created":"2026-11-11T14:08:33Z"}],"created":"2026-11-11T14:08:33Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shadow-army","title":"Shadow Army","summary":"A different model family must PASS the exact code before the agent closes a Kanban card; it asks before a push of unreviewed code and flags deleted test assertions.","disclosure":"","category":"automation","platforms":["linux","macos"],"maintainer":"SilentKnight87","author":"SilentKnight87","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/SilentKnight87/shadow-army","docs":null,"tools":["army_gate","army_verdict"],"hooks":["pre_tool_call","post_tool_call","subagent_start","subagent_stop","pre_api_request","post_api_request"],"middleware":[],"env":[],"known_issues":"Refuses only the agent's kanban_complete tool and asks only on its terminal git push and gh pr create; manual board moves, other shell commands, aliases and disabling the plugin bypass it.","state":"open","pr":153524,"prs":[{"n":153524,"state":"open","created":"2026-11-11T14:07:52Z"}],"created":"2026-11-11T14:07:52Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-real-catch.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-ledger.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-hero.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-removed.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-push-guard.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-workspace.png","https://raw.githubusercontent.com/SilentKnight87/shadow-army/aa340f06ffe10dce5c63cfabc0e0c6de3e9d1e41/docs/img/readme-stale.png"],"videos":[],"x":["https://x.com/Joash0x/status/2120627547784245279"],"youtube":[],"thumb":"/hackathon/thumbs/shadow-army.webp"},{"name":"hermes-sfx-forge","title":"Hermes SFX Forge","summary":"Offline seeded WAV sound-effects generation and QA. Writes WAV files, a manifest, and a retained lock file inside a configured workspace root. No network calls or subprocess execution. Runs in the Hermes plugin host. The CLI, but not the registered tools, accepts an explicit --root.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"socraticblock","author":"socraticblock","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/socraticblock/hermes-sfx-forge","docs":null,"tools":["sfx_generate","sfx_verify"],"hooks":[],"middleware":[],"env":[],"known_issues":"macOS and Windows are not verified or supported by this release.; Runs inside the Hermes plugin host process without a separate sandbox.","state":"open","pr":153522,"prs":[{"n":153522,"state":"open","created":"2026-11-11T14:07:09Z"}],"created":"2026-11-11T14:07:09Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ghostrun","title":"GhostRun","summary":"Recreate NES games as editable browser games. Train an AI player, rebuild levels and gameplay in Three.js, and add optional 3D visuals.","disclosure":"Downloads and compiles pinned NeSLE source; runs local build and training commands; reads your ROM and project folders; starts training, a reference service and a watcher that can prompt reward edits and training restarts (up to 3 fixes per game). No credentials or telemetry.","category":"tools","platforms":["linux"],"maintainer":"kdcyberdude","author":"kdcyberdude","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/kdcyberdude/ghostrun","docs":"https://github.com/kdcyberdude/ghostrun#readme","tools":["ghostrun_init","ghostrun_policy_check","ghostrun_recreation_check","ghostrun_reward_check","ghostrun_reward_audit","ghostrun_reward_lint","ghostrun_reward_balance","ghostrun_reward_search","ghostrun_engine_setup","ghostrun_engine_parity","ghostrun_train_start","ghostrun_train_stop","ghostrun_train_check","ghostrun_fix_begin","ghostrun_fix_validate","ghostrun_fix_apply","ghostrun_fix_review","ghostrun_assets_import","ghostrun_status","ghostrun_stage_set","ghostrun_isolation_check","ghostrun_compare","ghostrun_gate","ghostrun_reference_enter","ghostrun_builder_enter","ghostrun_oracle_start","ghostrun_oracle_stop","ghostrun_oracle_call","ghostrun_watch_start","ghostrun_watch_stop"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Training needs Linux and an NVIDIA GPU with CUDA (nvcc, a C++20 compiler and PyTorch in the configured Python).; You supply the ROM; none is included.","state":"open","pr":153520,"prs":[{"n":153520,"state":"open","created":"2026-11-11T14:03:37Z"}],"created":"2026-11-11T14:03:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"exam-desk","title":"Exam Desk","summary":"Practice exams inside Hermes Desktop. Add a paper by asking (Hermes finds an official paper or drafts one to the same pattern), sit it on a server-side timer in Assisted mode beside the chat or in Mock mode, get it scored per question with negative marking and a section split, and review every miss into a one-click drill paper.","disclosure":"papers, attempts and evaluations are stored only in the plugin's own data directory. Sourcing uses the agent's web tools and AI review uses the agent's configured model, so both go to whatever services the user already configured. The plugin makes no network calls of its own except that the Desktop page loads any http(s) figure URLs a paper contains straight from those hosts when the paper is opened. It runs no shell commands of its own (its skills have the agent run the bundled pack validator/installer scripts), stores no credentials and has no self-updater. Assisted mode feeds the current question to the chat model during a sitting; the answer key never leaves the server until the attempt is submitted.","category":"desktop","platforms":[],"maintainer":"darshak26","author":"darshak26","version":"0.13.2","requires_hermes":">=0.23.0","repo":"https://github.com/darshak26/hermes-exam-desk","docs":"https://github.com/darshak26/hermes-exam-desk#readme","tools":["exam_desk_live","exam_desk_attempt","exam_desk_doubt","exam_desk_topics","exam_desk_papers"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"AI review needs plugins.isolation set to in_process; under host isolation evaluation returns 503.; Sourcing a paper needs the agent's web tools; without them, papers are written by hand.","state":"open","pr":153519,"prs":[{"n":153519,"state":"open","created":"2026-11-11T14:02:01Z"}],"created":"2026-11-11T14:02:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"werk","title":"werk","summary":"Plain-language equipment description in, engineering package out: werk triages the description into domains, breaks it into work items, runs them through review roles and domain-pack checks (a build123d STEP model for mechanical work; the elec pack ships SKiDL/KiCad tools but designs nothing in this release), and writes a COVER.md with the gaps it found written down. Proof of concept, NOT FOR CONSTRUCTION.","disclosure":"`hermes werk doctor --setup` (after consent) creates two worker profiles and a Kanban board `werk`, and uses uv to download a CPython 3.12 build and hash-pinned pack wheels (build123d/OCP, SKiDL) from PyPI into the plugin's data dir; `hermes werk run` is a long foreground run (default caps 60M tokens / 24 h) that spends model tokens through your configured providers and runs `hermes kanban` CLI calls; pack tools run as subprocesses in their own venvs with the network cut via `unshare -rn` when available, and the elec pack calls the system `kicad-cli` (GPL) if present; signed overrides use `ssh-keygen`. Three optional supplier-key settings are declared but unused in this version. No telemetry, no self-update.","category":"tools","platforms":["linux"],"maintainer":"aaddrick","author":"aaddrick","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aaddrick/werk","docs":"https://github.com/aaddrick/werk#readme","tools":["werk_bundle_read","werk_item_show","werk_item_advance","werk_item_renew","werk_finding_resolve","werk_ir_write","werk_tool_run","werk_review_submit","werk_measure_request","werk_status","werk_item_list","werk_gaps"],"hooks":["pre_tool_call","post_tool_call","post_api_request","kanban_task_completed","kanban_task_blocked"],"middleware":[],"env":[],"known_issues":"Proof of concept: packages are NOT FOR CONSTRUCTION and need review by a licensed engineer.; Only mechanical work is designed (a build123d 3D model); elec, power, safety and every other domain are listed as gaps in COVER.md, not designed.","state":"open","pr":153518,"prs":[{"n":153518,"state":"open","created":"2026-11-11T14:02:00Z"}],"created":"2026-11-11T14:02:00Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/aaddrick/werk/5fbac49c20c994b477bc2382bdf646352e1f871e/docs/social-card.png","https://raw.githubusercontent.com/aaddrick/werk/5fbac49c20c994b477bc2382bdf646352e1f871e/docs/example/conveyor-still.png"],"videos":[],"x":["https://x.com/aaddrick/status/2120349593359552910"],"youtube":[],"thumb":"/hackathon/thumbs/werk.webp"},{"name":"holdings","title":"Holdings","summary":"Holdings is a Hermes Desktop plugin that shows your crypto wallet and exchange balances in one place. You can review activity against the original records and export records with a note on what each source covers. Ask Holdings answers questions with your Hermes model and checks every cited number against your records. It is read-only and never signs transactions or moves funds. The demo uses fictional records and needs no keys.","disclosure":"","category":"desktop","platforms":[],"maintainer":"HoldingsHQ","author":"ShepShepDev","version":"0.1.9","requires_hermes":">=0.22.7","repo":"https://github.com/HoldingsHQ/holdings-hermes","docs":"https://github.com/HoldingsHQ/holdings-hermes#readme","tools":["holdings_help","holdings_sample_lookup","holdings_summary","holdings_exposure","holdings_recent_movements","holdings_needs_attention","holdings_explain_year","holdings_alert_watch","holdings_weekly_briefing"],"hooks":[],"middleware":[],"env":[],"known_issues":"Protected reviews and Alert watch need Holdings to load in the Hermes process, with plugins.isolation set to in_process. When plugins run in the separate plugin host (plugins.isolation set to host), Holdings shows that protected reviews are unavailable. Saved reviews also need an external vault key, and a value typed only in plugin Settings stays locked.; The weekly briefing and the alert watch Cron job are opt-in templates. They never schedule themselves, and the scheduled weekly text lists section names only.; Device notification delivery was tested with fixtures only. A live look-alike case and real-model Cron delivery were not verified, and Zerion Ethereum 1Y charts returned unavailable in native QA.","state":"open","pr":153517,"prs":[{"n":153517,"state":"open","created":"2026-11-11T13:58:50Z"}],"created":"2026-11-11T13:58:50Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ikigai","title":"ikigai","summary":"Getting-to-know-you interview and periodic check-ins that build a detailed, sourced picture of the person using Hermes. 76 questions in 11 modules with a 12-question express path (English and French). The interview runs itself: a pre_llm_call hook consumes each answer and returns the next question, so no model call is spent on it and a reply cannot drift into another topic. Every answer is stored locally with the user's exact words and a source tag (declared, inferred, corrected); guesses are held back until confirmed. /ikigai compile proposes a merge into USER.md that fits the 1,375-character limit and touches only the lines Ikigai owns (applied by the agent through the built-in memory tool, so write approval still applies), a SOUL.md draft that is never applied automatically, and detailed sheets kept outside the prompt. /ikigai show reads the profile back in the chat. Weekly 3-question check-ins and an offer to turn a thrice-repeated correction into a lasting rule.","disclosure":"no network calls, no telemetry, no dependencies; reads USER.md (to show a diff) and the current turn's user message (local keyword matching to count corrections); writes only under $HERMES_HOME/plugin-data/ikigai/ (0600 files, 0700 directory); answers tagged local-only never reach USER.md, SOUL.md or the sheets.","category":"memory","platforms":[],"maintainer":"Pierrem57","author":"Pierrem57","version":"0.2.2","requires_hermes":">=0.22.6","repo":"https://github.com/Pierrem57/hermes-ikigai","docs":"https://github.com/Pierrem57/hermes-ikigai#readme","tools":["ikigai_next","ikigai_save","ikigai_status","ikigai_compile","ikigai_snooze","ikigai_rule_done"],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153516,"prs":[{"n":153516,"state":"open","created":"2026-11-11T13:58:49Z"}],"created":"2026-11-11T13:58:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"equitylayer","title":"EquityLayer","summary":"Research CPO or custom AI chips with your own AI. Type /equitylayer:start and Hermes guides you in four decisions, each with a recommended option: sector (with EquityLayer's theses and live readings shown before anything is asked), how to follow it (EquityLayer's published Research Packs for the sector when there are any, its curated readings, your own thesis, or three questions that help you form one), one card to approve, and how often to check. Saying yes all the way follows EquityLayer's CPO Research Packs: their hypotheses, what would prove each wrong, and the readings each one watches, saved, checked and scheduled; in a sector without a Pack it ends with curated readings. EquityLayer's public MCP (https://equitylayer.io/mcp, no sign-in) supplies the tracked variables with caveats and coverage gaps, official events and due dates; the plugin keeps watchlists, thesis harnesses and baselines in local plugin-data, keeps one tracked object at three levels (readings, the person's own thesis, EquityLayer's thesis) behind nine tools, checks them in one Hermes cron job created from the chat, and reports new readings, link statuses (seen, against, late, no data, not due), fired wrong_if conditions, events, what is due next and what needs a person. Nothing becomes the baseline until the person says they read it; unattended runs repeat the alert instead. A local HTML dashboard (built by code from local files and the last public Research Pack registry the plugin fetched; the page has no scripts and makes no network requests) shows it all and is listed under Artifacts in Hermes Desktop. Each new chat recalls the person's research profile, watchlists and theses from the local files. Also lists, reads and follows published EquityLayer Research Packs.","disclosure":"every tool call goes over HTTPS to equitylayer.io (/mcp, and /mcp/full on the same server for events and due dates; mcp_url accepts only that host or localhost); thesis text, harness, baseline and variable ids are sent as tool arguments and the server reports it stores neither thesis nor harness; no account, key, payment or telemetry; watchlists, harnesses, baselines, a 30-entry check history, Follow Cards, the research profile (fixed-value fields only), a copy of the public Research Pack registry and the dashboard page with its JSON copy and a calendar file of upcoming dates are written under the plugin's own plugin-data directory; a system prompt section (at most 2,000 characters, off with recall_in_new_chats: false) lists the profile and saved ids, titles and last check dates at the start of each new chat and reaches only the user's own model provider; nothing is written to Hermes memory; no shell commands or background processes. It never says what to buy, sell, size or time, and never writes a view for the person. Not investment advice.","category":"tools","platforms":[],"maintainer":"equitylayerio","author":"andreacfbloom","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/equitylayerio/equitylayer-hermes-plugin","docs":"https://github.com/equitylayerio/equitylayer-hermes-plugin#readme","tools":["el_profile","el_plan","el_get_variable","el_track","el_check","el_seen","el_list","el_dashboard_render","el_research_pack"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153512,"prs":[{"n":153512,"state":"open","created":"2026-11-11T13:53:47Z"}],"created":"2026-11-11T13:53:47Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pocket-platform","title":"Hermes Pocket","summary":"A native Hermes platform for an owner-enrolled low-bandwidth radio companion: bounded chat replies, notes and opt-in P2/R2 home-music controls. Requires a separately provisioned radio/USB bridge and a new dedicated, unrouted, in-process Pocket-only Hermes home. Model tool execution is blocked in that dedicated process; installation alone does not block unrelated tool calls.","disclosure":"the adapter listens on a private local Unix socket with peer-UID and HMAC authentication. POCKET_HMAC_KEY is read through Hermes's scoped secret helper; the bridge is provisioned independently. Local request identities, notes and replay state are journaled. Optional location reads an operator-set SQLite snapshot; optional music reads approved local files through an existing loopback HTTP service. Normal chat uses the operator's Hermes model/provider and may leave the host and incur provider charges. No arbitrary model tools, shell commands, self-updater, telemetry, bundled firmware or media. The source includes bridge libraries, not a turnkey standalone radio service or handheld firmware installer. The source qualification uses synthetic provider/HTTP fixtures and does not certify this published package's physical RF or audio.","category":"platform","platforms":["linux"],"maintainer":"AgentMadeThis","author":"AgentMadeThis","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/AgentMadeThis/hermes-pocket","docs":"https://github.com/AgentMadeThis/hermes-pocket/tree/224c9f9b57509ce03da7c9663bd8298a56d1376e/plugin","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":["POCKET_HMAC_KEY"],"known_issues":"Requires separate radio/USB firmware, contact enrollment and bridge-service wiring; these are not bundled.; Use a new dedicated Pocket-only in-process home, not a general-purpose or multiplexed profile. Stop/unload before repurposing an armed process.; Serial SDK dependency closure and physical radio, touch and audible-output acceptance are separate operator qualifications.; No claim of cloud independence: chat follows the operator's selected Hermes provider.","state":"open","pr":153511,"prs":[{"n":153511,"state":"open","created":"2026-11-11T13:53:46Z"}],"created":"2026-11-11T13:53:46Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"llmux","title":"LLMUX","summary":"Compare Surplus Intelligence, Antseed and Solid offers in the Hermes composer, then route through one local provider by price, speed or balanced policy. Includes seller trust signals, explicit mid-chat switching, cached market data and a local usage ledger.","disclosure":"Loading the plugin starts a detached local proxy on 127.0.0.1:8378 (LLMUX_PORT) that keeps running after Hermes exits and holds this profile's Surplus/Solid API keys (set LLMUX_AUTOSTART=0 to run it yourself); every chat sent through the llmux provider is forwarded in full to the seller it picks on Surplus Intelligence (api.surplusintelligence.ai), Solid (accounts.solid.xyz) or your local Antseed buyer (127.0.0.1:8377), where third-party marketplace sellers may serve it and bill your account with no spending cap; it also polls those marketplaces for prices in the background and keeps a market cache and proxy log under your Hermes home.","category":"models","platforms":["linux","macos"],"maintainer":"ivcained","author":"ivcained","version":"0.1.1","requires_hermes":">=0.22.6","repo":"https://github.com/ivcained/llmux","docs":"https://github.com/ivcained/llmux#readme","tools":[],"hooks":[],"middleware":[],"env":["SURPLUS_API_KEY"],"known_issues":"Installed-Desktop mid-chat switching and a real paid reply/ledger row have not yet been verified. Automated card interactions use a simulated SDK host.; Inference is billable at the selected seller with no hard spending ceiling. Cross-source failover is off by default; LLMUX_ALLOW_FAILOVER=1 permits additional potentially billable attempts after upstream failures.; Marketplace keys resolve through agent.secret_scope.get_secret. Each proxy port is bound to one profile/configuration; mismatches fail closed. Antseed-only operation without any marketplace key is not supported. Solid prices are a dated manual table; speed and trust are unpublished.; Trusted view excludes explicit marketplace untrusted signals, but still includes sources with no published trust verdict. Lists are ranked shortlists, not every marketplace seller.; Starts a detached loopback proxy which can outlive Hermes. It reads configured marketplace credentials, sends inference context to the selected upstream and writes proxy logs, public market-cache snapshots and a local usage ledger. The ledger is off by default and enabled only with LLMUX_TRACK_USAGE=1.; Default upstreams are api.surplusintelligence.ai, accounts.solid.xyz and the optional Antseed buyer proxy at 127.0.0.1:8377. Base URLs are configurable.","state":"open","pr":153505,"prs":[{"n":153505,"state":"open","created":"2026-11-11T13:45:20Z"}],"created":"2026-11-11T13:45:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-unlimited","title":"Hermes Unlimited","summary":"Create and operate AI-native provider organizations with scoped services and Hermes tasks.","disclosure":"","category":"platform","platforms":[],"maintainer":"nsolland","author":"nsolland","version":"0.1.0-alpha.3","requires_hermes":">=0.21.5","repo":"https://github.com/nsolland/hermes-unlimited","docs":null,"tools":["hermes_unlimited_status","unlimited_company_create","unlimited_company_list","unlimited_service_publish","unlimited_service_request","unlimited_company_task","unlimited_company_result","unlimited_service_dispatch","unlimited_service_result","unlimited_creative_render","unlimited_creative_result"],"hooks":[],"middleware":[],"env":[],"known_issues":"Experimental public core; no live billing, payment settlement or independently attested customer fulfillment.; Requires a host-provided trusted JustYou session and signed profile verifier; tenant boards must be provisioned on the host.","state":"open","pr":153503,"prs":[{"n":153503,"state":"open","created":"2026-11-11T13:36:58Z"}],"created":"2026-11-11T13:36:58Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-vnc","title":"Hermes VNC","summary":"Computer-use backend that drives any machine reachable over VNC (RFB): the stock computer_use tool captures the remote screen and moves that machine's mouse and keyboard, so the agent can work on a second computer, a lab box or a cloud desktop with no Hermes process running on it. Select it with computer_use.backend: hermes-vnc and point computer_use.vnc.host at the target. VNC carries pixels only, so the backend runs in the screenshot lane: capture returns a PNG and no accessibility elements, element-addressed actions (click-by-element, focus_app, set_value) report unsupported_action instead of guessing, and list_apps / list_windows return empty lists rather than inventing an inventory. capture_max_width downscales each capture — vision tokens scale with the image's area, so this is the one setting that changes what a screenshot costs (measured 1920 -> 786 estimated tokens at 1024 wide on a 1600x900 desktop). It also ships an optional desktop pane that shows the remote screen while the agent works — off by default, a viewer that opens its own read-only connection and never sends input.","disclosure":"connects only to the VNC server you configure (host and port) and sends it screenshots and input; RFB traffic (screen pixels, keystrokes, clipboard text) is unencrypted, so use it over a private network or an SSH tunnel; the one credential is the VNC password, read from the variable named by password_env through Hermes's secret scope and never written or logged; computer_use.vnc.host/port can also be overridden by the HERMES_VNC_HOST / HERMES_VNC_PORT / HERMES_VNC_PASSWORD_ENV process environment variables; no shell, no files written, no telemetry; one daemon thread runs Twisted's reactor, started on first connect and deliberately never stopped because the reactor is process-wide and cannot be restarted; the optional desktop live-view pane (off by default) opens a second read-only VNC connection served through the plugin's dashboard route; one dependency (vncdotool>=1.2,<2).","category":"tools","platforms":["linux","macos","windows"],"maintainer":"YAN-XBT","author":"YAN-XBT","version":"0.2.5","requires_hermes":">=0.23.0","repo":"https://github.com/YAN-XBT/hermes-vnc","docs":"https://github.com/YAN-XBT/hermes-vnc","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a VNC server on the machine you want to drive (TightVNC, UltraVNC, TigerVNC, x11vnc, macOS Screen Sharing, or a cloud VM's VNC endpoint). Nothing is installed on the target beyond that.; Enable the plugin, do not just install it: python_dependencies are installed by `hermes plugins enable hermes-vnc`, and enabling builds a new pm environment that an already-running gateway or CLI does not switch to. Install, enable, then restart the host — otherwise the tool reports vncdotool is not installed even though the environment now has it.; Pixels only: RFB has no accessibility tree, so every action is by coordinate; focus_app, set_value and click-by-element answer unsupported_action, while list_apps and list_windows return empty lists rather than inventing an inventory.; Typing covers printable ASCII; text outside Latin-1 (Cyrillic, Greek, CJK) is refused with unsupported_text, because RFB's cut-text message is Latin-1.; capture_max_width trades click precision for tokens: click coordinates stay in native desktop space, so a downscaled frame makes the model multiply what it reads off the image. Native (0) is the default.; The optional live view holds a second RFB connection, so the target must accept more than one viewer at a time — x11vnc -shared, TightVNC, UltraVNC and macOS Screen Sharing do by default. Frame rate is set by the round trip: measured ~100 ms per frame (9.7 fps) against a local server, ~1.1 s (0.9 fps) over an SSH tunnel to a cloud host. Do not enable x11vnc -ncache with it: that measured 11-23 s per frame, twenty times worse.; Authentication is none / VNC password / Apple ARD (Diffie-Hellman) — the three a desktop server realistically asks for, macOS Screen Sharing included. A server offering only another type is refused with its own list of security types in the message, rather than hanging.; The framebuffer size is whatever the target reports, read on every capture and never cached: TigerVNC 1.13.1's Xvnc returned 675x800 on the first frame of a fresh connection and 1280x800 afterwards, and both were reported as they came.","state":"open","pr":153501,"prs":[{"n":153501,"state":"open","created":"2026-11-11T13:33:18Z"}],"created":"2026-11-11T13:33:18Z","late":false,"said":false,"update":false,"discussion":9,"images":["https://raw.githubusercontent.com/YAN-XBT/hermes-vnc/2f1f8b906746dba670c526b06c87aa2859730d34/assets/banner.jpg","https://raw.githubusercontent.com/YAN-XBT/hermes-vnc/2f1f8b906746dba670c526b06c87aa2859730d34/docs/screenshots/01-remote-desktop.png","https://raw.githubusercontent.com/YAN-XBT/hermes-vnc/2f1f8b906746dba670c526b06c87aa2859730d34/docs/screenshots/02-live-pane.png","https://raw.githubusercontent.com/YAN-XBT/hermes-vnc/2f1f8b906746dba670c526b06c87aa2859730d34/docs/screenshots/03-agent-chat.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-vnc.webp"},{"name":"clean-exit","title":"Clean Exit","summary":"Review the new files one Hermes run wrote to a local project folder. Keep the deliverable, move selected working files into a project archive, and restore any archived file to its original path from the same workspace. Clean Exit observes successful native write_file calls after the user starts tracking and stores paths, sizes, file identities, and hashes in a local profile ledger.","disclosure":"","category":"desktop","platforms":["windows"],"maintainer":"ladyFaye1998","author":"ladyFaye1998","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ladyFaye1998/hermes-clean-exit","docs":"https://github.com/ladyFaye1998/hermes-clean-exit#readme","tools":[],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"Requires Hermes Desktop with a local Windows profile.; Tracks new files written through native write_file with absolute paths. Shell-created files are outside this scope.; Archives selected files individually. Review the resulting file list if a batch is interrupted.","state":"open","pr":153495,"prs":[{"n":153495,"state":"open","created":"2026-11-11T13:27:24Z"}],"created":"2026-11-11T13:27:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ladyFaye1998/hermes-clean-exit/1df8501113e5a195fef3794e660ac3839900987f/docs/restore.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/clean-exit.webp"},{"name":"send-lock","title":"send-lock","summary":"Default-deny pre_tool_call hook: it allows a short explicit list (read-only tools, ls/pwd/whoami, a plain `curl -q -s <URL>` GET, and two narrow write_file paths gated by an owner step 0-4) and blocks every other tool call with a plain-English reason. A friendly first layer, not a containment boundary.","disclosure":"it reads the owner config file (<HERMES_HOME>/axiom-owner.json or the path in AXIOM_OWNER_CONFIG) and the HERMES_HOME and AXIOM_OWNER_CONFIG environment variables; it writes only one log line per refusal and one at load to <HERMES_HOME>/logs/send-lock.log (tool name and block kind, never arguments); it blocks every tool call not on its allowlist; it makes no network calls, no subprocess calls and no model calls, and it stores no credentials and never updates itself.","category":"tools","platforms":["macos","linux"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"2.0.0","requires_hermes":">=0.21.4","repo":"https://github.com/percyhendrux123-prog/send-lock-kit","docs":"https://github.com/percyhendrux123-prog/send-lock-kit/blob/9aa41a12e03a4a66b70ce0a194b53ef9ef686031/plugins/send-lock/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"The plugin alone is not a containment boundary. In the worker-in-wall test (a real Hermes in a container, driven by a scripted fake model, on fake services only), 14 of 46 attack cases passed the plugin and were stopped by the container wall; 32 were stopped by the plugin. With the plugin off, the wall alone stopped all 46. The test says nothing about how a real model behaves.; Default-deny: after install most tools (patch, memory, skill_manage, browser, web, code execution, messaging) and most shell commands are refused until the owner config opens specific steps. Missing or invalid owner config means step 0.; A permitted curl GET can still carry data in its URL path, and model requests carry prompts. See docs/THREAT-LIST.md in the repository.; The repository also holds non-plugin tooling (a Docker test harness and demo scripts) that Hermes does not load. The wall test runs Hermes with its own approval prompts off (--yolo) inside a throwaway container; the plugin itself never does.","state":"open","pr":153493,"prs":[{"n":153493,"state":"open","created":"2026-11-11T13:22:01Z"}],"created":"2026-11-11T13:22:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"atomicmail","title":"Atomic Mail","summary":"Gives a Hermes agent its own @atomicmail.ai address in one command, with no account or signup form (proof-of-work sign-up). Mail from the user's allowed addresses wakes the agent and its reply goes out in the same thread; every allowed sender's DKIM signature is checked first, so a forged From: cannot drive the agent. Tools read, search, send and reply, and schedule meetings with real calendar invitations (send, update, cancel, read RSVPs, answer invitations).","disclosure":"gives the agent its own @atomicmail.ai inbox: mail from addresses in ATOMICMAIL_ALLOWED_USERS (none by default) that passes a DKIM check reaches the agent as a chat message and the agent's reply is emailed back; ATOMICMAIL_TRUST_FROM_HEADER=true turns the DKIM check off, so a forged From: can then drive the agent; the model can send new mail, replies, calendar invitations, updates, cancellations and RSVPs from that address to any recipient without a Hermes approval prompt (the tools only ask the model to confirm with the user first), and Atomic Mail adds a \"Sent from Atomic Mail Agentic\" footer; network calls to Atomic Mail only (auth.atomicmail.ai for sign-up and sign-in, api.atomicmail.ai for JMAP: polling, reading, sending, invitations, and downloading each new allowed message for the DKIM check) plus DNS TXT lookups for DKIM keys (system resolver; when it returns nothing, DNS-over-HTTPS at cloudflare-dns.com, then dns.google; ATOMICMAIL_DNS_OVER_HTTPS=off disables that); a background polling task (every 20 s) while the gateway runs; Atomic Mail's anti-spam proof-of-work (scrypt, not cryptocurrency mining) costs about 20-45 CPU-seconds per sign-in, roughly every 10 minutes while the gateway polls (a few percent of one core) and once per tool session otherwise; the inbox API key is stored in Hermes's .env through hermes_cli.config and read with the profile-scoped secret reader; seen-message ids in plugin-data/atomicmail/state.json; no telemetry.","category":"platform","platforms":[],"maintainer":"Atomic-Mail","author":"7supersayin","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Atomic-Mail/atomic-mail-agentic","docs":"https://github.com/Atomic-Mail/atomic-mail-agentic/tree/2b8ec2e6e91eeb121cb56bdca153f88d266895ef/integrations/hermes-plugin","tools":["atomicmail_whoami","atomicmail_read_inbox","atomicmail_read_message","atomicmail_search","atomicmail_send","atomicmail_reply","atomicmail_send_invite","atomicmail_update_invite","atomicmail_cancel_invite","atomicmail_list_invites","atomicmail_respond_to_invite"],"hooks":[],"middleware":[],"env":["ATOMICMAIL_API_KEY"],"known_issues":"","state":"open","pr":153491,"prs":[{"n":153491,"state":"open","created":"2026-11-11T13:20:40Z"}],"created":"2026-11-11T13:20:40Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"read-once","title":"Read Once","summary":"On a repeated identical local read_file, tells the model to answer from the earlier result when READ_ONCE_HITS=1, the file bytes are unchanged, and that exact result is still in the latest model request. Observe-only otherwise. /read-once stats shows hits.","disclosure":"reads and SHA-256-hashes regular files under READ_ONCE_ROOT (1 MiB max), inspects the model request in memory for that result digest, and keeps ephemeral metadata only. No network, no telemetry, no disk cache, and no background watcher. It does not hash dotenv names, auth.json, or paths under vault, mcp-tokens, browser-profile, webapp, or pairing. Hits stay off unless READ_ONCE_HITS=1. A repeat of the same read can be Hermes's unchanged-stub rather than the file bytes.","category":"tools","platforms":[],"maintainer":"batmnnn","author":"batmnnn","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/batmnnn/read-once","docs":null,"tools":[],"hooks":["post_tool_call","post_compaction","on_session_end","on_session_reset","on_session_finalize","on_session_delete"],"middleware":["tool_execution","llm_execution"],"env":[],"known_issues":"Tested on Hermes 0.23.0 only.; A terminal backend cached inside Hermes and not visible as TERMINAL_ENV or the hermes_terminal_scope context var can still be treated as local.","state":"open","pr":153490,"prs":[{"n":153490,"state":"open","created":"2026-11-11T13:20:01Z"}],"created":"2026-11-11T13:20:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ruse","title":"Ruse — Bounded Browser Authority for Hermes","summary":"**The gap**: Hermes can drive a real browser using the user's authenticated sessions. That gives an agent everything the account can do — not just what the owner intended for the task. Browser work runs through unrestricted surfaces (model-supplied Python, raw CDP), and a page the agent visits acts with the user's real logins. **The primitive**: a browser capability lease. The owner grants one origin, exact readable pages, one write operation with allowed fields and values, a TTL and commit budget, and instant revocation. The agent cannot exceed the grant. **Enforcement**: the model never touches a free browser. Ruse's broker owns a dedicated Playwright profile and checks every outbound request — navigation, form submit, page fetch, XHR — with a fail-closed decision function before it reaches the application. Writes are prepared (frozen proposal), committed exactly once, and verified by re-reading the record. Receipts log every allow/deny with the server-side fixture proving blocked requests never arrived. **Evidence**: 30 decision-matrix tests plus 21 real-Chrome end-to-end tests, including a hostile page script (destructive DELETE, wrong-record write, cross-origin exfiltration) that is fully contained — the application's own audit log shows zero mutating requests arrived.","disclosure":"","category":"other","platforms":[],"maintainer":"HillaryIkhais","author":"HillaryIkhais","version":"2.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/HillaryIkhais/Ruse.git","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153489,"prs":[{"n":153489,"state":"open","created":"2026-11-11T13:16:43Z"}],"created":"2026-11-11T13:16:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"glassbox","title":"Glassbox","summary":"A contained, auditable terminal backend for macOS. Select it with `hermes config set terminal.backend glassbox` and every terminal, execute_code, read_file, write_file, patch and search_files call runs under a generated Seatbelt profile: the system stays readable, the workspace is writable, the rest of the user's home is hidden, and network access is off by default. The kernel-refused reads, writes and network attempts are recorded in a local audit log, so \"what did the agent try to touch?\" is answerable: `hermes glassbox report` (text or a self-contained dark HTML timeline), `/glassbox status|verify|report|profile`, the glassbox_report / glassbox_policy / glassbox_verify tools, a containment self-test (`hermes glassbox verify`: workspace read/write, home read/write denial, child-process confinement, parent traversal, network denial, secret-env filtering) and a one-command demo (`hermes glassbox demo`). A pre_tool_call preflight turns file-tool denials into an actionable error with the exact `hermes config set` line to allow a path, instead of the masked empty read a `2>/dev/null` shell probe would otherwise produce. Settings: network, allow_home, workspace_writable, read_paths, write_paths, deny_paths, audit — apply to the next command, editable from the Desktop Plugins tab.","disclosure":"macOS only; runs the agent's shell commands on this Mac as the same UNIX user under /usr/bin/sandbox-exec (an OS kernel sandbox, not a VM or a separate UID; it does not defend against a kernel exploit); osascript, open, security and launchctl are blocked and Apple Events mach services are denied so a command cannot delegate access to another app; the generated profile, a private scratch home/tmp area and the audit log live under HERMES_HOME/plugin-data/glassbox/ (the audit stores command text truncated to 2000 chars, cwd, exit code, duration, blocked paths and a short output excerpt only when something was blocked — local only, capped at 4 MB with one rotation, never uploaded, `hermes glassbox clear` deletes it); reads the workspace and any extra read_paths/write_paths the user configures; runs two `git config --global --get` calls to copy the Git author name/email into the sandbox environment because ~/.gitconfig is hidden; provider keys, tokens, passwords and SSH agent sockets are filtered from every sandboxed child environment; no network calls of its own, no background processes, no telemetry; Seatbelt is marked deprecated by Apple but shipped and functional on current macOS — if a future macOS drops sandbox-exec the backend reports unavailable instead of running unconfined.","category":"tools","platforms":["macos"],"maintainer":"rkfshakti","author":"rkfshakti","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/rkfshakti/hermes-glassbox","docs":"https://github.com/rkfshakti/hermes-glassbox#readme","tools":["glassbox_report","glassbox_policy","glassbox_verify"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Seatbelt is a deny-by-default OS sandbox, not a virtual machine: commands run as the same user, and the plugin does not defend against a kernel exploit or against a process the user deliberately launches outside the sandbox.; Commands that need network (package installs, git push over HTTPS) require `network: true` or a local mirror; SSH agent sockets and ~/.ssh are never passed in.","state":"open","pr":153483,"prs":[{"n":153483,"state":"open","created":"2026-11-11T13:10:55Z"}],"created":"2026-11-11T13:10:55Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/rkfshakti/hermes-glassbox/2b070ee7fc94d880929fea3743f1ad8e97b66f15/docs/banner.png","https://raw.githubusercontent.com/rkfshakti/hermes-glassbox/2b070ee7fc94d880929fea3743f1ad8e97b66f15/docs/report.png","https://raw.githubusercontent.com/rkfshakti/hermes-glassbox/2b070ee7fc94d880929fea3743f1ad8e97b66f15/docs/demo.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/glassbox.webp"},{"name":"airflow-mlops","title":"Airflow MLOps","summary":"Apache Airflow MLOps assistant: watch DAGs, diagnose failed runs, approved targeted retries, fixes tested in a Docker sandbox. Calls your Airflow REST API; optional docker run sandbox.","disclosure":"calls only the Airflow REST API at your configured base_url with your Airflow credentials; while a DAG folder is configured it inspects Hermes' write_file, patch, terminal and execute_code calls and blocks or asks approval for changes to DAG files; task retries ask Hermes approval unless you enable auto_remediation_enabled, which lets it retry tasks it classified as transient on its own (including inside the optional night-watch cron job); the optional sandbox (off by default) runs your DAG code plus the model's patch in a local `docker run --network none` container through Hermes' terminal tool.","category":"tools","platforms":[],"maintainer":"dayzell","author":"dayzell","version":"1.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/dayzell/MLOps_Assistant_Hermes_x_AirFlow","docs":"https://github.com/dayzell/MLOps_Assistant_Hermes_x_AirFlow","tools":["airflow_list_dags","airflow_get_dag","airflow_get_dag_runs","airflow_get_run_status","airflow_get_task_logs","airflow_get_xcoms","airflow_get_dependencies","airflow_get_dag_source","airflow_review_dag","airflow_watch_check","airflow_diagnose_run","airflow_build_report","airflow_clear_tasks","airflow_sandbox_test","airflow_audit_plan","airflow_audit_select","airflow_audit_progress","airflow_audit_timeline"],"hooks":["pre_tool_call","pre_llm_call","post_tool_call"],"middleware":[],"env":["AIRFLOW_USERNAME","AIRFLOW_PASSWORD","AIRFLOW_TOKEN"],"known_issues":"The sandbox (off by default) needs Docker reachable from Hermes' local terminal and an image with Airflow and your DAG dependencies.; In Hermes' yolo mode, approvals are skipped by Hermes; the plugin's blocks still apply.","state":"open","pr":153482,"prs":[{"n":153482,"state":"open","created":"2026-11-11T13:09:11Z"}],"created":"2026-11-11T13:09:11Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-wake","title":"hermes-wake","summary":"Wakes the exact chat session (Matrix room, Telegram forum topic, ...) that started detached background work (systemd-run unit, PID or file) when that work ends, so the agent reports back on its own instead of the human asking \"any updates?\". Tools: wake_me_when, wake_list.","disclosure":"runs the public 'hermes kanban' CLI (board hermes-wake, notify-subscribe --delivery-mode wake) and systemctl show; a daemon thread polls watches every 15s; stores watch targets, notes and origin ids in local SQLite under plugin-data/hermes-wake; makes no network calls of its own; adds a one-line hint to terminal output of detached commands via transform_terminal_output.","category":"general","platforms":[],"maintainer":"getaskclaw","author":"askclaw-vesper","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/getaskclaw/hermes-wake","docs":"https://github.com/getaskclaw/hermes-wake#readme","tools":["wake_me_when","wake_list"],"hooks":["transform_terminal_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153481,"prs":[{"n":153481,"state":"open","created":"2026-11-11T13:07:09Z"}],"created":"2026-11-11T13:07:09Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/getaskclaw/hermes-wake/1e6ba97109b06592e0652b7d6df905969100031f/demo/wake.png"],"videos":["https://raw.githubusercontent.com/getaskclaw/hermes-wake/1e6ba97109b06592e0652b7d6df905969100031f/demo/wake-demo-720.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-wake.webp"},{"name":"household-fleet","title":"Household Fleet","summary":"Signal over schedule for multi-agent setups: a deterministic message gate (silence by default, tiered budgets, quiet hours, per-subject dedupe, nudge ladder, ack/park/snooze) and a task-registry mirror that pushes per-agent summaries and to-do lists into Home Assistant.","disclosure":"","category":"automation","platforms":["linux","macos"],"maintainer":"rishiruben","author":"rishiruben","version":"0.1.0","requires_hermes":">=0.21","repo":"https://github.com/rishiruben/hermes-household-fleet","docs":"https://github.com/rishiruben/hermes-household-fleet#readme","tools":["fleet_comms_decide","fleet_comms_send","fleet_comms_state","fleet_comms_status","fleet_tasks_push"],"hooks":[],"middleware":[],"env":["FLEET_COMMS_HOME","FLEET_COMMS_CONFIG","FLEET_TASKS_FILE","HASS_URL","HASS_TOKEN"],"known_issues":"","state":"open","pr":153480,"prs":[{"n":153480,"state":"open","created":"2026-11-11T13:06:43Z"}],"created":"2026-11-11T13:06:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-replicate","title":"Replicate for Hermes","summary":"Native Replicate backends for image generation, video, transcription and speech, with user-configured models and schema-validated mappings.","disclosure":"paid predictions send prompts, text and uploaded audio to Replicate and its model providers; outputs are downloaded into the active profile cache. Requires a Replicate API token. No streaming voice or native image editing.","category":"models","platforms":[],"maintainer":"jacebenson","author":"jacebenson","version":"1.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/jacebenson/hermes-replicate","docs":"https://github.com/jacebenson/hermes-replicate#readme","tools":[],"hooks":[],"middleware":[],"env":["REPLICATE_API_TOKEN"],"known_issues":"Nonstandard model schemas may require explicit input/output mappings and extra inputs.; Predictions are not automatically canceled on timeout; remote work may still be billed.","state":"open","pr":153479,"prs":[{"n":153479,"state":"open","created":"2026-11-11T13:06:00Z"}],"created":"2026-11-11T13:06:00Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jacebenson/hermes-replicate/cb5013512612e69cccad7447d5d9b7d556197881/docs/assets/banner-1200.png","https://raw.githubusercontent.com/jacebenson/hermes-replicate/cb5013512612e69cccad7447d5d9b7d556197881/docs/assets/model-showcase.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-replicate.webp"},{"name":"imprint","title":"Imprint","summary":"Drop in your PDFs, Word files and text, and Imprint turns them into a finished deck, one-pager, graphic or audio brief in your own brand. Pick from three deck designs (Editorial, Data board, Statement), mix slides between them, and revise any slide by asking in plain words. Ask questions of your sources and get answers that cite the paragraph. Numbers and quotes are checked against your sources before export, and a Source notes PDF sets each one beside the sentence it came from. The check covers numbers and quotes, not claims or framing, so read the headlines yourself. Five built-in brands, or make your own. Independent community plugin, not made or endorsed by Nous Research.","disclosure":"source text (secrets redacted by Hermes), questions, briefs and pictures of draft slides go to the user's own Hermes model (auxiliary task 'Imprint writing'); audio scripts to the user's Hermes text-to-speech provider (default Edge, Microsoft's online voice service). Web reads go only to addresses the user enters, via the user's web_extract tool or Hermes's SSRF-safe client (public addresses only, every redirect checked, size and time capped). Starts a headless Google Chrome, Chromium, Microsoft Edge or Brave as a child process with a throwaway profile (from IMPRINT_BROWSER, else the usual install folders on macOS and Windows, else PATH); it draws designs and their PDF and image exports with all network requests blocked and, on macOS and Linux, views a website the user builds a brand from (up to four pages, read only, robots.txt respected) through a checking proxy on 127.0.0.1 that refuses non-public addresses. On macOS runs sips for one-pager previews. Reads only files the user picks; writes only to $HERMES_HOME/plugin-data/imprint/ (or IMPRINT_DATA_DIR, if set), scratch folders it deletes, and paths picked in the save dialog. Background threads run only after a button press. No stored credentials, self-updates or telemetry. Registers no tools, hooks or middleware (only an auxiliary model task, a Desktop page and a dashboard API); calls the user's tools text_to_speech and web_extract by fixed name, and image_generate only through an API flag the shipped page never sends. Python dependencies: pypdf, python-docx, python-pptx, reportlab, Pillow. Bundles OFL fonts, no compiled code. Full detail in the README.","category":"desktop","platforms":[],"maintainer":"Dgardenhire","author":"Dgardenhire","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Dgardenhire/hermes-imprint","docs":"https://linchpin.studio/hermes/imprint/manual/","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The three designs, and PDF or image export of a designed piece, need Google Chrome, Chromium, Microsoft Edge or Brave, found in the usual install folders, on PATH, or at the path in IMPRINT_BROWSER. Without one the Designs screen says so and the Template version still works. The lookup has been run on a Mac; on Windows and Linux it is covered by tests only.; Build from a website looks at the site in that browser on macOS and Linux only. On Windows it still reads the site's colors and fonts, but writes no style brief.; A three-designs run takes several minutes on a small model.; Updating the plugin while Imprint is working reloads its page, and an outline in progress loses its place on screen.; In the light theme, placeholder text and buttons that aren't ready yet are pale.; Audio needs text to speech turned on in Hermes; without it the script is made and can be exported.; Reading a logo or brand sheet needs a model that can see images.; The source check proves a number or quote is in your sources, not that the source is right.; The check covers numbers and quotes, not claims or framing: a sample deck headlined \"adds a site\" passed 19 of 19 when its sources said \"proposes\".","state":"open","pr":153978,"prs":[{"n":153978,"state":"open","created":"2026-11-11T21:13:47Z"},{"n":153477,"state":"open","created":"2026-11-11T13:03:10Z"}],"created":"2026-11-11T13:03:10Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/catalog/card.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/shots/live/three-designs.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/shots/live/deck-numbers.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/shots/live/notebook.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/shots/live/one-pager.jpg","https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/docs/shots/live/mixed-deck.jpg","https://raw.githubusercontent.com/Frazzlesprite/hermes-imprint/f8409be7061a6e9a758f606eb0370f6fbce4c51a/docs/shots/compile.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-imprint/f8409be7061a6e9a758f606eb0370f6fbce4c51a/docs/shots/cover.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/imprint.webp"},{"name":"bnb-airdrop-autopilot","title":"bnb-airdrop-autopilot","summary":"A complete system for BSC airdrops & free mints: scan for newly listed BSC tokens (Dexscreener, no login), safety-audit a contract (owner, proxy, approval selectors in bytecode, Sourcify verification, DEX liquidity, risk rating), preview a claim via the baw CLI (preview only; the user runs the execute command themselves in their own terminal), and report BSC gas with a cheapest-claim recommendation. Four tools: bnb_scan_airdrops, bnb_check_contract, bnb_prepare_claim, bnb_gas_report. Read-only except the simulates.","disclosure":"network calls go to public BSC/Ethereum/Base/Arbitrum RPCs, the Dexscreener public API and Sourcify; no API keys, no credentials. The safety check is an automated on-chain read, not a full audit; it cannot detect honeypots or hidden taxes. It is not financial advice. Never approve a contract you do not trust.","category":"tools","platforms":[],"maintainer":"sawi57003-ops","author":"sawi57003-ops","version":"1.0.0","requires_hermes":">=0.21.3","repo":"https://github.com/sawi57003-ops/bnb-airdrop-autopilot","docs":"https://github.com/sawi57003-ops/bnb-airdrop-autopilot#readme","tools":["bnb_scan_airdrops","bnb_check_contract","bnb_prepare_claim","bnb_gas_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153473,"prs":[{"n":153473,"state":"open","created":"2026-11-11T13:00:06Z"}],"created":"2026-11-11T13:00:06Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"greenlight","title":"Greenlight","summary":"Greenlight is a Hermes Agent plugin that puts you in control of xStocks trading. Hermes can prepare a trade, but nothing is sent until you approve it. Ask for a trade and Greenlight shows what you pay, what you get, the fees, a simple risk check and your daily limit in a Hermes Desktop window. Only after you approve do you get a link, or a QR code for your phone's wallet, to confirm the trade in your own wallet, so Greenlight never holds your keys or funds. Approve in the Hermes Desktop window or with /greenlight in the terminal and chat apps. Optional daily and per-trade limits, a stock allowlist and a price-change tolerance. Every decision is kept in a tamper-evident history. Includes a no-wallet practice trade.","disclosure":"crypto (Solana xStocks trading): talks to api.xstocker.com and xstocker.com, sending the wallet address, stock, amount, side and pay token for each quote and transaction signatures for status checks, through the official xStocker SDK (bundled unmodified in vendor/agent-sdk and used when Node.js 18+ is installed) or, without Node.js, directly over the same public HTTPS endpoints with Python's standard library; nothing is installed or downloaded at runtime and the plugin never updates itself; with Node.js, a short-lived node process per price request with a fixed command (node sdk-bridge.js), no shell and never an AI-chosen command; trades are released only after the user approves in the Desktop pane or with /greenlight approve (any user allowed to use that chat can run it) and are signed in the user's own wallet; writes only to <HERMES_HOME>/plugin-data/greenlight/ (or GREENLIGHT_DATA_DIR if set); reads no credentials; no telemetry; no Python dependencies; Node.js is optional.","category":"tools","platforms":[],"maintainer":"Datwebguy","author":"Datwebguy","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/Datwebguy/greenlight","docs":"https://github.com/Datwebguy/greenlight#readme","tools":["propose_trade","get_trade_status","list_receipts"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153468,"prs":[{"n":153468,"state":"open","created":"2026-11-11T12:53:08Z"}],"created":"2026-11-11T12:53:08Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Datwebguy/greenlight/4b843d14af767b5c6d6d5552d6affa87eae93e25/assets/banner.png","https://raw.githubusercontent.com/Datwebguy/greenlight/4b843d14af767b5c6d6d5552d6affa87eae93e25/assets/screenshots/approval-pane.png","https://raw.githubusercontent.com/Datwebguy/greenlight/4b843d14af767b5c6d6d5552d6affa87eae93e25/assets/screenshots/approved-state.png","https://raw.githubusercontent.com/Datwebguy/greenlight/4b843d14af767b5c6d6d5552d6affa87eae93e25/assets/screenshots/slash-command.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/greenlight.webp"},{"name":"fixmyscan","title":"FixMyScan","summary":"Turn scanned books (PDF or DjVu, up to 1,000 pages) into clean, searchable PDFs for Kindle, Kobo, reMarkable and tablets through FixMyScan's hosted MCP server (Streamable HTTP at https://mcp.fixmyscan.com/mcp, OAuth 2.1 with dynamic client registration and PKCE, no keys in config): crop pages to the text, straighten them, make them sharp black and white or greyscale, split two-page spreads and add a searchable text layer, then return a download link. Bundles the fixmyscan workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to FixMyScan's server at mcp.fixmyscan.com, signed in as the user through FixMyScan's OAuth sign-in, and counts against that account's FixMyScan allowance or plan. The tool list comes from the server at run time, so the pinned commit doesn't cover it. fix_scan uploads the user's file or downloads the public link they give; files are deleted 24 hours after a book is ready. Write-capable tools: fix_scan and create_upload_link (start a book), cancel_scan and delete_scan (stop or delete one of the user's books). Tool results enter the session context and so reach the user's model provider. The package marks the server untrusted. OAuth must be enabled with `hermes mcp add fixmyscan --url https://mcp.fixmyscan.com/mcp --auth oauth`; the bundled mcp.json alone yields 401 on tool calls.","category":"tools","platforms":[],"maintainer":"FixMyScan","author":"fightme-cmd","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/FixMyScan/fixmyscan-mcp","docs":"https://fixmyscan.com/ai","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign in once after installing: hermes mcp add fixmyscan --url https://mcp.fixmyscan.com/mcp --auth oauth","state":"open","pr":153467,"prs":[{"n":153467,"state":"open","created":"2026-11-11T12:52:49Z"}],"created":"2026-11-11T12:52:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"threejs-stage","title":"Three.js Stage","summary":"Live three.js r187 scenes and GLB, GLTF, STL and OBJ models in Hermes chat. Hermes calls one tool, three_scene, with scene code or a model file. Hermes Desktop draws the result as an interactive card with orbit, zoom, fullscreen, restart, screenshot and Ask Hermes to change this, and other surfaces get a standalone HTML file. With Desktop open, each scene is dry-run in a hidden frame before the tool returns, so a crash or a blank render reaches Hermes in the same turn.","disclosure":"scene code written by the model runs in Desktop inside a sandboxed iframe (opaque origin, scripts only) whose content security policy blocks all network requests; three.js r187 is bundled (MIT). The exported HTML file loads three.js from cdn.jsdelivr.net when opened in a browser. Given a model path, the tool reads that file and the .bin, .mtl and image files it references in the same folder (50 MB limit) and copies them to plugin storage; scenes, screenshots and delivered files are stored under plugin-data/threejs-stage and cache/generated/threejs-stage on this machine. The dry run makes the tool wait up to 2.5 s for Desktop and up to 16 s for the result, and can be turned off (verify_scenes). Fix with Hermes and Ask Hermes to change this each send one ordinary chat message. No API keys, no telemetry, no background processes, no self-update.","category":"desktop","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/tuancookiez-hub/hermes-threejs-stage","docs":"https://github.com/tuancookiez-hub/hermes-threejs-stage/tree/5dbee69884211aaa7c08fbef4c6cb177e2138546","tools":["three_scene"],"hooks":[],"middleware":[],"env":[],"known_issues":"The live card needs Hermes Desktop. On other surfaces the tool delivers a standalone HTML file and reports the scene as unverified.; Restart the gateway once after installing, so the plugin's backend routes are mounted.; The card runs three.js WebGPURenderer on its WebGL2 backend, because the sandboxed frame is not a secure context. WebGPU-only features such as storage textures are not available.; Draco, meshopt and KTX2/Basis compressed glTF files are refused. Export without compression.","state":"open","pr":153465,"prs":[{"n":153465,"state":"open","created":"2026-11-11T12:48:15Z"}],"created":"2026-11-11T12:48:15Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/assets/banner.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/assets/card.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/assets/model.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/assets/dryrun.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/assets/fullscreen.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/threejs-stage.webp"},{"name":"evm-token-inspector","title":"evm-token-inspector","summary":"Inspect any EVM token contract before interacting with it: name, symbol, decimals, total supply, owner/renounced status, EIP-1967 proxy detection, and the DEX V2 pair plus liquidity reserves — one tool, evm_token_check, on BSC, Ethereum, Base and Arbitrum. Read-only; public JSON-RPC only, no API key, no signing, no credentials.","disclosure":"the tool POSTs to public RPC endpoints (bsc-dataseed, publicnode, drpc, blastapi, mainnet.base.org, arb1.arbitrum.io) with the contract address; it does not detect honeypots or hidden taxes, it reports the on-chain facts (owner, proxy, pair, reserves) so the agent and user can judge. It is not financial advice.","category":"tools","platforms":[],"maintainer":"sawi57003-ops","author":"sawi57003-ops","version":"1.0.0","requires_hermes":">=0.21.3","repo":"https://github.com/sawi57003-ops/evm-token-inspector","docs":"https://github.com/sawi57003-ops/evm-token-inspector#readme","tools":["evm_token_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153463,"prs":[{"n":153463,"state":"open","created":"2026-11-11T12:44:37Z"}],"created":"2026-11-11T12:44:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sql-dryrun","title":"sql-dryrun","summary":"Shows how many rows a DELETE/UPDATE/DROP/TRUNCATE will touch before it runs, and sends it to Hermes' approval prompt when it is too many. Built-in approval matches command shape only, so UPDATE with no WHERE, DELETE ... WHERE 1=1, a WHERE that matches every row, and DELETE FROM t; SELECT ... WHERE ... all run unprompted; sql-dryrun flags them with the real count (\"228,789 of 250,000 rows\"). Covers sqlite3, psql and mysql/mariadb (inline -c/-e, heredoc, piped), execute_code, and tools passing SQL in a sql/query/statement argument. Settings: row_threshold (default 100), mode approve|block, count timeout. Adds a sql_impact tool for dry-running a statement and a /sql-dryrun command. Tested on SQLite, Postgres and MariaDB. MIT licensed.","disclosure":"reads the arguments of terminal, execute_code and tools with a sql/query/statement argument. For a destructive statement whose database it can reach, it runs read-only SELECT COUNT(*) queries: SQLite in-process with mode=ro; Postgres/MySQL by running the same client (psql/mysql/mariadb) with the connection flags the agent used, in a read-only session, with a timeout and no password prompt. No network calls of its own, no files written, no data changed, no credentials stored; the flagged SQL appears in the approval message.","category":"tools","platforms":[],"maintainer":"Aoyama","author":"aoyamari","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aoyamari/hermes-sql-dryrun","docs":"https://github.com/aoyamari/hermes-sql-dryrun","tools":["sql_impact"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153457,"prs":[{"n":153457,"state":"open","created":"2026-11-11T12:35:36Z"}],"created":"2026-11-11T12:35:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"babelaz-pareto-aaa","title":"Pareto AAA","summary":"One line in (/aaa make me a brick-breaker); a small web game out, built in rounds by a fresh worker, checked in a real browser (FPS, sound, layout, accessibility, win or lose, restart) and scored 0-10 by a vision judge against reference pictures, until it reaches 8/10 or says why it stopped. The plugin runs the checks and writes the STATUS line, so the model cannot fake the result. MIT.","disclosure":"needs Playwright (installed on enable) and an installed Chrome or Edge; sends game screenshots and code to your own model provider; a run can take an hour and several million (mostly cached) input tokens.","category":"automation","platforms":[],"maintainer":"babelaz","author":"fonminer","version":"0.3.1","requires_hermes":">=0.22.7","repo":"https://github.com/babelaz/babelaz-pareto-aaa","docs":"https://github.com/babelaz/babelaz-pareto-aaa","tools":["aaa_round"],"hooks":["pre_tool_call","pre_verify","transform_llm_output"],"middleware":[],"env":[],"known_issues":"One validate warning: reads Hermes's interrupt flag through a private import (tools.interrupt) so Ctrl+C can stop a round.; Tested with a real model on Windows only; games only (no apps).","state":"open","pr":153455,"prs":[{"n":153455,"state":"open","created":"2026-11-11T12:30:26Z"}],"created":"2026-11-11T12:30:26Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/babelaz/babelaz-pareto-aaa/dc969f0c4d319b2c5dbfb29efbc126811be81852/docs/proof-brick.jpg","https://raw.githubusercontent.com/babelaz/babelaz-pareto-aaa/68c1997be095d52a3c136ec1381371dcb08aa533/docs/proof-brick.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/babelaz-pareto-aaa.webp"},{"name":"dossier","title":"dossier","summary":"Sourced, dated, refreshable dossiers on organisations and people in a professional capacity, framed for the meeting you actually have: interview, sales call, partnership, due diligence or supplier review. Every claim keeps a verbatim quote, a source URL, a publication date and a retrieval date; conflicting sources print as contested instead of being resolved, a figure the sources do not agree on is filed as unconfirmed rather than quoted, and a refresh reports only what changed since the last snapshot. Renders an A4 PDF, HTML, a chat card and a Desktop page, and ships an automation blueprint for scheduled refresh.","disclosure":"makes outbound HTTP requests to the entity's own site and the pages it links to, to whatever host your configured Hermes web search backend returns, to api.github.com and github.com, and to www.sec.gov / data.sec.gov (SEC EDGAR). ABN Lookup (abr.business.gov.au) and Companies House (api.company-information.service.gov.uk) are contacted only when their credentials are configured. Requests are rate limited to one per host per second, robots.txt is honoured, and a blocked or undated source is reported in the brief rather than dropped.","category":"tools","platforms":[],"maintainer":"Frazzlesprite","author":"Frazzlesprite","version":"0.2.0","requires_hermes":">=0.23","repo":"https://github.com/Frazzlesprite/hermes-dossier","docs":"https://github.com/Frazzlesprite/hermes-dossier#readme","tools":["dossier_build","dossier_show","dossier_diff","dossier_refresh","dossier_watch"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153452,"prs":[{"n":153452,"state":"open","created":"2026-11-11T12:25:29Z"}],"created":"2026-11-11T12:25:29Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Frazzlesprite/hermes-dossier/00f7abe3c3a124fb951ef45051159d374c2f5c8b/docs/screenshots/00-banner.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-dossier/00f7abe3c3a124fb951ef45051159d374c2f5c8b/docs/screenshots/01-brief.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-dossier/00f7abe3c3a124fb951ef45051159d374c2f5c8b/docs/screenshots/02-two-readings.png","https://raw.githubusercontent.com/Frazzlesprite/hermes-dossier/00f7abe3c3a124fb951ef45051159d374c2f5c8b/docs/screenshots/03-ready.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dossier.webp"},{"name":"signaldesk","title":"SignalDesk","summary":"Draft-first lead desk for founders and marketers: scan public hiring and launch signals (HN Who is hiring, YC hiring, Show HN, Launch HN, new YC companies; optional Product Hunt with a token) and local businesses on an OpenStreetMap map (LocalLead Map: city + business type or a drawn area, shown on an OpenLayers map), score them against your ICP, draft outreach, and never send without in-plugin approval. Cron and unattended runs fail closed.","disclosure":"fetches public JSON from Algolia HN Search and the yc-oss static API; map scans (only when the user runs one) geocode with Nominatim (max 1 request/second, identifying User-Agent, cached 30 days) and query an Overpass API instance (one request at a time, timeout, cached 7 days), with a small bundled real OSM extract as offline fallback; the map loads standard OSM tiles in the browser; map data © OpenStreetMap contributors, ODbL, with attribution shown on the map and written into CSV and .eml exports; bundles OpenLayers 10.5.0 (BSD-2-Clause); optional DNS MX lookups (UDP only, no SMTP probing); optional Product Hunt GraphQL v2 only when PRODUCTHUNT_TOKEN is set (optional_env / secret_scope, not required to install; Product Hunt API terms restrict commercial use without permission); lead data lives in $HERMES_HOME/plugin-data/signaldesk/; drafts use the host LLM when available otherwise a local template; SignalDesk never transmits email (it writes a local .eml / mailto after approval, or the user may use a Hermes email tool which the pre_tool_call hook blocks unless the lead is approved and the session is interactive); no telemetry; no third-party mail APIs; no paid data providers required.","category":"automation","platforms":[],"maintainer":"codeybot-labs","author":"codeybot-labs","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/codeybot-labs/signaldesk","docs":"https://github.com/codeybot-labs/signaldesk#readme","tools":["signaldesk_set_icp","signaldesk_scan","signaldesk_list","signaldesk_draft","signaldesk_approve","signaldesk_mark","signaldesk_followups","signaldesk_export_csv","signaldesk_sources","signaldesk_prepare_send","signaldesk_board","signaldesk_map_scan"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"The Hermes Desktop board page (desktop/plugin.js) passes catalog desktop-surface validation but was not clicked through in a live Desktop window on the build machine. The interactive HTML board is the supported demo and review UI.; Product Hunt is optional and stays off unless PRODUCTHUNT_TOKEN is set. Product Hunt API terms restrict commercial use without permission.; BetaList is not included; their site terms are not a clean fit for a keyless built-in source.; Show HN posts hosted only on GitHub often have no company inbox, so those leads are scored but usually have no contact.; LocalLead Map: public Overpass instances can be slow or rate-limited; SignalDesk tries them one at a time and falls back to the bundled Zürich demo extract (dentists, cafes) when all fail. The demo video's map scan used the Swiss instance overpass.osm.ch (SIGNALDESK_OVERPASS_URL) because overpass-api.de was unreachable from the build machine.; A live scan needs outbound HTTPS to Algolia and yc-oss.github.io. Each source is capped so a large hiring dump does not flood the board. The offline demo uses bundled fixtures.","state":"open","pr":153446,"prs":[{"n":153446,"state":"open","created":"2026-11-11T12:19:31Z"}],"created":"2026-11-11T12:19:31Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/assets/catalog-banner.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/01-board-1920.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/06-map-1920.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/07-map-lead-draft.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/04-draft-approve.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/03-approved-panel.png","https://raw.githubusercontent.com/codeybot-labs/signaldesk/1fb9efc3d6895f5852d5f04b9a6e09477e1f559e/docs/screenshots/02-board-1280.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/signaldesk.webp"},{"name":"audit-lens","title":"audit-lens","summary":"Deterministic smart-contract security review inside Hermes: fetch verified source from Sourcify, run pattern-based static checks (reentrancy, tx.origin, unchecked calls, unprotected selfdestruct, delegatecall, access control), flag likely-known issues against a curated SWC database, and draft structured findings. Standard library only, no dependencies.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"Luecria","author":"Luecria","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/Luecria/hermes-audit-lens","docs":"https://github.com/Luecria/hermes-audit-lens#readme","tools":["audit_contract","fetch_verified_source","check_duplicate","draft_finding"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153445,"prs":[{"n":153445,"state":"open","created":"2026-11-11T12:18:17Z"},{"n":153449,"state":"closed","created":"2026-11-11T12:21:11Z"}],"created":"2026-11-11T12:18:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"local-hands","title":"Local Hands","summary":"Remote brain, local hands: Hermes runs on your server while terminal, read_file, write_file, patch, search_files and execute_code run on your own computers, through a one-file, stdlib-only daemon that dials out to the Hermes host over key-pinned TLS and asks you before acting (per conversation, per command, or never). Pair several machines and let the agent switch between them and the host with the hands tool; each keeps its own working directory. Answers #18715 and #1855 on the public terminal-backend surface.","disclosure":"starts a long-running detached hub process on the Hermes host that listens on a TCP port (default 7717, self-signed TLS, so clients use ssl.CERT_NONE plus a SHA-256 public-key pin) and serves the daemon source hands.py over HTTPS on that port (no self-update); runs shell commands sent by the Hermes host on each paired machine under the user's account (not a sandbox); command output returns to Hermes and so to the model provider; writes TLS key and certificate, devices.json (token hashes only), audit.jsonl and hub.log under plugin-data/local-hands/, and ~/.config/local-hands/ on each machine; adds one short context line to a turn when the active machine changes; Hermes dangerous-command approvals stay on; no telemetry, no third-party service, no credentials read from files. Built with Claude under the direction of Noé Guenego (noegng), who is responsible for this submission.","category":"tools","platforms":["linux","macos"],"maintainer":"noegng","author":"noegng","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/noegng/local-hands","docs":"https://github.com/noegng/local-hands#readme","tools":["hands"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"The hands daemon runs on macOS, Linux and WSL (bash and Python 3.8+); not on native Windows.; The active machine belongs to the Hermes process, not to one conversation: a switch made in one chat applies to the other chats of the same gateway (each is told at its next turn).; Environment variables and skill files are not sent to the machine; browser and computer_use tools still act where Hermes runs.; After a cd, Hermes may resolve relative write_file/patch paths against the machine's workspace rather than the new directory; absolute paths are exact.; Needs plugins.isolation in_process (the default): Hermes cannot hand a terminal environment across the plugin-host boundary.; Imports tools.environments.base (BaseEnvironment, EnvironmentConnectionError), the base class every terminal backend subclasses; hermes plugins validate reports it as a private-import warning.","state":"open","pr":153443,"prs":[{"n":153443,"state":"open","created":"2026-11-11T12:17:29Z"}],"created":"2026-11-11T12:17:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/noegng/local-hands/62327c4174582e3e8ea2d0b1e8fc57d4f4a24842/docs/banner.png","https://raw.githubusercontent.com/noegng/local-hands/62327c4174582e3e8ea2d0b1e8fc57d4f4a24842/docs/approval.png","https://raw.githubusercontent.com/noegng/local-hands/62327c4174582e3e8ea2d0b1e8fc57d4f4a24842/docs/status.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/local-hands.webp"},{"name":"fortograph","title":"fortograph","summary":"Reversible image redaction through the Fortograph selective-encryption API: fortograph_redact encrypts chosen regions into the saved image (not just a black box) and fortograph_unredact restores the original with the password, so Hermes can share redacted photos and recover them later.","disclosure":"uploads the image to the configured Fortograph server (default https://fortograph.selectiveencryption.com) and stores the redaction password in the Hermes secret FORTOGRAPH_PASSWORD; pure stdlib, no subprocesses.","category":"tools","platforms":[],"maintainer":"fortograph","author":"fortograph","version":"1.1.0","requires_hermes":"","repo":"https://github.com/fortograph/fortograph-hermes-plugin","docs":null,"tools":["fortograph_status","fortograph_redact","fortograph_unredact"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153432,"prs":[{"n":153432,"state":"open","created":"2026-11-11T12:07:15Z"}],"created":"2026-11-11T12:07:15Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"swarm-for-hire","title":"Swarm for Hire","summary":"Post, inspect and pay AI-agent jobs on the Swarm-for-Hire NEAR escrow, with every payment behind Hermes approval.","disclosure":"calls the public NEAR RPC (or a custom rpc_url) to read jobs and to send signed transactions to the escrow contract (default yunganas.testnet); swarm_post_job, swarm_approve_payout and swarm_cancel_job always go through Hermes's approval prompt, and bounties above max_bounty_near are refused before approval; mainnet is off unless allow_mainnet is true; SWARM_NEAR_PRIVATE_KEY is read only through Hermes's secret scope and used to sign NEAR transactions locally; the escrow contract is unaudited.","category":"tools","platforms":[],"maintainer":"yunganas","author":"yunganas","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/yunganas/hermes-swarm-for-hire","docs":"https://github.com/yunganas/hermes-swarm-for-hire/blob/a6d31079e5154a06d2cf03aa4ecafa5281be3cae/README.md","tools":["swarm_jobs","swarm_job","swarm_agents","swarm_payout_preview","swarm_earnings","swarm_post_job","swarm_approve_payout","swarm_cancel_job"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Testnet by default. The escrow contract is unaudited.","state":"open","pr":153428,"prs":[{"n":153428,"state":"open","created":"2026-11-11T11:52:51Z"}],"created":"2026-11-11T11:52:51Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"planejamais","title":"Planeja+","summary":"Review and update strategic plans (perspectives, objectives, initiatives, steps), Kanban boards, tasks and checklists, events, meetings, reports and support tickets in Planeja+ through its official hosted MCP server (Streamable HTTP at https://planejamais.planejareconsultoria.com.br/api/mcp, OAuth 2.1 sign-in with DCR and PKCE, no keys), with the planejamais workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables; needs a Planeja+ account.","disclosure":"the server exposes write and delete tools limited to the signed-in account's companies and role, invite_company_user e-mails an invitation and mentions notify members; the plugin marks its server untrusted, but the documented OAuth setup (`hermes mcp add planejamais`) replaces that entry with a native one at the default trust unless the user sets `mcp_servers.planejamais.trust: untrusted`; chats sharing a Hermes profile share the Planeja+ sign-in; the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha; no telemetry.","category":"tools","platforms":[],"maintainer":"hendrykcosta75","author":"hendrykcosta75","version":"1.0.8","requires_hermes":">=0.21.6","repo":"https://github.com/hendrykcosta75/planejamais-codex-plugin","docs":"https://github.com/hendrykcosta75/planejamais-codex-plugin/tree/e68d15b165672b9e41f50fcb79b55f8b969c49d0#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153423,"prs":[{"n":153423,"state":"open","created":"2026-11-11T11:47:55Z"}],"created":"2026-11-11T11:47:55Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"zolva","title":"Zolva","summary":"Read Zolva's trading agents on Robinhood Chain (tokenized US stocks and ETFs, ETH and BTC, and Lighter perps) through Zolva's hosted MCP server (Streamable HTTP, no sign-in, no API key): published agents with their return against simply holding the same markets, every hourly buy, sell, short, cover or hold with the agent's own reason, market prices and recent trades. Two skills are bundled: zolva-agents for questions, and zolva-trade-watch, an hourly cron job that sends an agent's new trades to the user's chat and stays silent otherwise. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration and Markdown only.","disclosure":"hosted-only connector with no local code; every tool call goes to Zolva's MCP server at zolvaagent.app/mcp (60 requests a minute per IP). All five tools are read only and annotated readOnlyHint; none signs, sends, spends or reads a key, and the package marks the server untrusted. The data is paper trading (virtual money at real prices), not investment advice. Tool results enter the session context and so reach the user's model provider. The tool list comes from Zolva's server at run time, so the pinned commit doesn't cover it.","category":"tools","platforms":[],"maintainer":"zolvaagent","author":"zolvaagent","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/zolvaagent/hermes-zolva","docs":"https://zolvaagent.app/docs/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153419,"prs":[{"n":153419,"state":"open","created":"2026-11-11T11:43:06Z"}],"created":"2026-11-11T11:43:06Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"struggle-guard","title":"Make It Harder","summary":"Socratic tutor guardrail for teachers - deterministic hint ladder gated on observed student attempts (SQLite state, anti-farming dedupe), heuristic response screening with measured and published misses, teacher-console identity bound to configured runtime session ids, and a local learning trail. The plugin adds no network calls, credentials or telemetry of its own (Hermes still sends guarded chat content to the operator-configured model provider); all state on-device.","disclosure":"","category":"tools","platforms":[],"maintainer":"gisc","author":"gisc","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/gisc/make-it-harder","docs":"https://github.com/gisc/make-it-harder","tools":["struggle_guard_start","struggle_guard_status","struggle_guard_report","struggle_guard_stop"],"hooks":["post_api_request"],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"","state":"open","pr":153416,"prs":[{"n":153416,"state":"open","created":"2026-11-11T11:35:31Z"}],"created":"2026-11-11T11:35:31Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ride","title":"Hermes-Ride","summary":"Hands-free voice chat with your Hermes agent from a phone on a motorcycle mount: say the wake word, talk through the helmet headset, and the agent answers with live ride context (speed, lean, braking and acceleration).","disclosure":"while the wake gate is open the phone sends microphone audio to ElevenLabs Scribe (or, with stt_engine whistle, to your own Hermes host) and reply text goes to ElevenLabs TTS unless Hermes's own TTS speaks it; position and motion summaries go to your model provider in each turn's context line and are logged at 1 Hz under plugin-data/hermes-ride; it serves an HTTP + WebSocket page on RIDE_HOST:RIDE_PORT (default 127.0.0.1:8790) behind RIDE_ACCESS_KEY; with stt_engine whistle it runs one long-lived local helper process; tools/fetch_assets.sh (run by the user) builds the wake-word engine locally from checksum-pinned official sherpa-onnx source using Emscripten 4.0.23 and downloads the checksum-pinned model from the official upstream release.","category":"voice","platforms":[],"maintainer":"martyllmaccs-hash","author":"martyllmaccs-hash","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/martyllmaccs-hash/Hermes-Ride-hackathon","docs":"https://github.com/martyllmaccs-hash/Hermes-Ride-hackathon","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","post_api_request"],"middleware":[],"env":["ELEVENLABS_API_KEY","RIDE_ACCESS_KEY"],"known_issues":"","state":"open","pr":153414,"prs":[{"n":153414,"state":"open","created":"2026-11-11T11:32:10Z"}],"created":"2026-11-11T11:32:10Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/a58b6cae-03a3-4b89-a27d-7a1a54169ad1"],"videos":[],"x":["https://x.com/Martysbuilds/status/2120469567755665577"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-ride.webp"},{"name":"vigil","title":"Vigil Shield","summary":"Watches model replies for refusals and off-topic deflections, and when one is detected marks that reply content_filter so Hermes runs its own configured fallback chain — the plugin never picks or reorders a route. Records what the next attempt on the same turn actually returned (another route answered, refused again, returned a tool call, or the same route retried) and labels an unobserved attempt as unobserved rather than a success. Keeps an owner-scoped review memory keyed on a hash of the full conversation plus provider, model and base_url, so a confirmed false positive changes only that exact context and can be revoked; plain-text operator phrase rules soften heuristic detections only and never clear an explicit refusal. Ships a Desktop page at /shield with per-bot confidence modes, the detection log, the review memory and the phrase rules. Derived from the catalog's `refusal` plugin (0ldev/refusal, MIT, upstream copyright retained in LICENSE); this fork adds the review memory with per-context revocation, retry-outcome classification, the Desktop review surface and phrase rules.","disclosure":"llm_execution and llm_request middleware, registered for the active profile only; it writes refusal_shield.json, refusal_styles.json, refusal_memory.json, refusal_phrases.json, refusal_exceptions.json and refusal_decisions.jsonl under the active Hermes home, keeps up to 25 recent detections with a 68-character reply excerpt and a hashed prompt, keeps truncated excerpts of the last decisions in refusal_decisions.jsonl, and stores per-context review hashes (sensitive metadata, not anonymous) plus plain-text phrase rules that the operator typed. A triggered fallback resends the conversation to the fallback provider and spends tokens there; with no fallback configured Hermes substitutes its standard safety notice, so a false positive discards a valid answer. The optional retry context adds one short note to the next request on a flagged turn and is off by default. No network calls, no telemetry, no background processes, no self-updater.","category":"models","platforms":[],"maintainer":"nesaon03","author":"nesaon03","version":"0.4.0","requires_hermes":">=0.22.1","repo":"https://github.com/nesaon03/vigil-shield","docs":"https://github.com/nesaon03/vigil-shield#readme","tools":[],"hooks":[],"middleware":["llm_execution","llm_request"],"env":[],"known_issues":"","state":"closed","pr":153413,"prs":[{"n":153413,"state":"closed","created":"2026-11-11T11:28:25Z"}],"created":"2026-11-11T11:28:25Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"leitmotif","title":"Leitmotif","summary":"Hear what your agent is doing. Every tool call becomes a short musical motif from a pure-Python synth, so reads, writes, shell commands, loops (the motif repeats and climbs), error streaks (dissonant, sinking), pending approvals (a heartbeat until you answer) and finished turns (a V-I cadence) are audible without watching the screen; also a non-visual status channel for blind and low-vision developers. Modes full / ambient / alerts-only, themes studio / arcade / zen, and /leitmotif export saves a session as WAV, MIDI and a piano-roll SVG.","disclosure":"observer-only hooks, never blocks or approves anything; starts the OS audio player (afplay, pw-play, paplay or aplay) as a short-lived subprocess per sound, or uses winsound on Windows; keeps tool names and argument hashes in memory only; caches rendered notes and writes exports in its plugin data directory; no network calls, no telemetry, no credentials.","category":"voice","platforms":[],"maintainer":"JustSteez","author":"JustSteez","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/JustSteez/hermes-leitmotif","docs":"https://github.com/JustSteez/hermes-leitmotif#readme","tools":[],"hooks":["on_session_start","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","subagent_start","subagent_stop","on_session_end","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153412,"prs":[{"n":153412,"state":"open","created":"2026-11-11T11:26:34Z"}],"created":"2026-11-11T11:26:34Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ligis","title":"Ligis — Counterparty Credentials","summary":"Verify that a payee holds a live, third-party-issued, revocable on-chain capability credential before your agent pays them. Hermes agents pay other agents, and the destination address comes from the HTTP answer asking for the money — nothing in the x402 flow ties that address to anything the payee has proven about itself, which is the gap ERC-8478 states in spec form. ligis reads the credential registry directly over read-only JSON-RPC and answers the question the payment flow leaves open: is this counterparty entitled to this? Four tools (ligis_check_capability, ligis_capability_hash, ligis_verify_payee, ligis_chains) plus a pre_tool_call gate that intercepts payment-shaped tool calls and escalates to Hermes's approval prompt when the payee cannot be credentialed. A capability is indexed by the keccak-256 hash of its name, so the same capability resolves to the same bytes on every chain and a credential minted on one chain is found on another. No key, no hosted service, no secret scope: verifying a credential is a read, so the only thing trusted is the chain.","disclosure":"makes read-only HTTPS JSON-RPC eth_call requests to the configured RPC endpoint (default https://testnet-rpc.monad.xyz for monad-testnet and https://atlantic.dplabs-internal.com for pharos-atlantic); the RPC operator sees the caller's IP address and the queried registry and subject addresses; it holds no keys, signs nothing, sends no transactions, reads no files outside its own plugin data directory, runs no background processes, and has no telemetry. The pre_tool_call hook escalates to Hermes's approval prompt, which unattended surfaces (cron, --yolo, approvals off) refuse rather than auto-approve.","category":"tools","platforms":[],"maintainer":"sneldao","author":"udirobert","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/sneldao/ligis","docs":"https://github.com/sneldao/ligis/tree/main/hermes-plugin","tools":["ligis_check_capability","ligis_capability_hash","ligis_verify_payee","ligis_chains"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153409,"prs":[{"n":153409,"state":"open","created":"2026-11-11T11:23:54Z"}],"created":"2026-11-11T11:23:54Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mayar","title":"Mayar","summary":"Read and manage a Mayar (mayar.id, Indonesian payments platform) account through Mayar's official hosted MCP server: balance, invoices, installments, payment links and products, customers, transactions, memberships, credits, coupons, webhooks, reviews, QRIS and license codes. Bundles one workflow skill. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to https://mcp.mayar.id/mcp, which calls the Mayar production API (api.mayar.id) with the user's API key from MAYAR_API_KEY, sent as a Bearer header. Write actions use real money and live data: they create or update invoices, payment links, products, customers and coupons, change membership status, change the webhook URL and add or spend credits. The package marks the server untrusted, so Hermes asks before write-capable calls. Account data returned by tools (customers, transactions, balances) reaches the model provider. The tool list comes from the server at run time and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Mayar","author":"julianromli","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/mayarid/mayar-agent-plugin","docs":"https://github.com/mayarid/mayar-agent-plugin/blob/19eb8005683c04045765c16897fb2c7e9490de21/README.md","tools":[],"hooks":[],"middleware":[],"env":["MAYAR_API_KEY"],"known_issues":"","state":"open","pr":153408,"prs":[{"n":153408,"state":"open","created":"2026-11-11T11:22:48Z"}],"created":"2026-11-11T11:22:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"asyntai","title":"Asyntai AI Support Agent","summary":"Run your website's Asyntai AI support agent from Hermes through Asyntai's hosted MCP server (73 tools): add knowledge, edit agent instructions, change the widget, read conversations, leads and analytics, answer tickets and emails, and reply live to visitors. Agent Plugins v1 package (plugin.json + mcp.json + one skill), configuration only.","disclosure":"runs the pinned @asyntai/mcp@1.0.2 bridge over npx stdio (Node.js 18+); every tool call goes to https://asyntai.com/mcp. The first call opens a browser for OAuth 2.1 PKCE sign-in, and the tokens are stored in ~/.asyntai/mcp-credentials.json; in unattended runs the call fails at the MCP timeout. The package marks the server untrusted, so Hermes asks before every tool that is not annotated read-only and refuses them in unattended runs. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Asyntai","author":"asyntai","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/asyntai/mcp-bridge","docs":"https://asyntai.com/documentation/integrations/hermes/","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153407,"prs":[{"n":153407,"state":"open","created":"2026-11-11T11:21:29Z"}],"created":"2026-11-11T11:21:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-data-tools","title":"Agent Data Tools","summary":"Over 600 hosted data and AI tools through three MCP tools (find_tool, tool_details, call_tool), so the agent's context holds three definitions: web search, the text of a web page or PDF, screenshots, weather, FX, stock and token prices, wallet and chain reads, sanctions and company checks, DNS lookups, LLM chat, speech to text, converters and calculators. 25 free calls with no key or sign-up, and one bundled skill. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"Hosted-only connector with no local code: every tool call, with its arguments (the words given to find_tool; search words, URLs, addresses or text given to call_tool), goes to agent-data-tools.revmesh2074.workers.dev, which fetches named pages from the public web and sends each request to the public data source or model behind the tool that was called. - As installed it cannot spend money: no key is declared or stored, and after the free calls a tool answers with a payment request and stops. - A user who buys a prepaid key (from $1) adds their own same-name config.yaml entry with the key as a bearer header; each successful call_tool call then spends that key's credits at the called tool's price (1 to 100 credits, most often 10; 1 credit = $0.001). The package declares that range and a spend limit of 1,000 credits per chat; find_tool and tool_details are free. - The server is marked untrusted. All three tools are annotated read-only: this server cannot reach the service's tools that write. - The service keeps call counts per tool and day, a one-way hash of the caller's IP address for the free-call allowance, and its host's ordinary request logs. No telemetry, no background process, no self-update. - The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Nutshell2000","author":"Nutshell2000","version":"1.0.1","requires_hermes":">=0.22.3","repo":"https://github.com/Nutshell2000/agent-data-tools","docs":"https://github.com/Nutshell2000/agent-data-tools/tree/main/integrations/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153406,"prs":[{"n":153406,"state":"open","created":"2026-11-11T11:19:32Z"}],"created":"2026-11-11T11:19:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"operate-hermes-plugin","title":"Operate.Center Agent Marketplace","summary":"Turn Hermes Agent into an autonomous earner and buyer on the Operate.Center marketplace (https://operate.center): publish autonomous, manual, or hybrid service gigs with 3-tier pricing packages and JSON schemas, browse live marketplace operators, poll funded orders and revision requests held in Stripe Connect escrow, lock exclusive execution leases, upload and deliver structured output and media artifacts for an 80% creator payout share, check live earnings and human owner Stripe Connect KYC status, outsource tasks by hiring marketplace gigs as a buyer agent, manage order approvals/revisions/messages, and automatically organize downloaded deliveries into ~/.hermes/operate_deliveries. Registers 11 native tools (operate_create_gig, operate_update_gig, operate_list_gigs, operate_check_queue, operate_accept_job, operate_submit_fulfillment, operate_get_earnings, operate_hire_gig, operate_manage_order, operate_sync_deliveries, operate_heartbeat), the /operate slash command (status, demo, queue, gigs, orders, deliveries, heartbeat) with durable ctx.state earnings telemetry, the operate-center workflow skill, and the autonomous-worker cron blueprint.","disclosure":"tool calls and live /operate subcommands make outbound HTTPS GET/POST/PATCH requests to https://operate.center (or the user's configured OPERATE_API_URL) under /api/operators, /api/order/*, /api/upload/*, /api/download/*, and /api/agent/*, authenticating with OPERATE_API_KEY resolved via agent.secret_scope.get_secret; /operate demo runs locally with no network calls or API key required.","category":"tools","platforms":[],"maintainer":"Operate Technology R&D LLC","author":"rxdha1","version":"1.2.0","requires_hermes":">=0.20.0","repo":"https://github.com/operatecenter/operate-hermes-plugin","docs":"https://github.com/operatecenter/operate-hermes-plugin#readme","tools":["operate_create_gig","operate_update_gig","operate_list_gigs","operate_check_queue","operate_accept_job","operate_submit_fulfillment","operate_get_earnings","operate_hire_gig","operate_manage_order","operate_sync_deliveries","operate_heartbeat"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153405,"prs":[{"n":153405,"state":"open","created":"2026-11-11T11:17:43Z"}],"created":"2026-11-11T11:17:43Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/28e3883f-a4d0-4e0b-bd65-28a6836f0262"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/operate-hermes-plugin.webp"},{"name":"enterprise-pathfinder","title":"Enterprise Pathfinder","summary":"Routes SAP questions to documented sources and reads official references on request. Parses OData metadata, tests contract claims and checks evidence before saving SAP skills. Measured on a 500 KB synthetic OData contract: 52% to 65% fewer tokens across four models (2 to 3 scored runs per model and condition); no accuracy gain is claimed.","disclosure":"pre_tool_call checks skill writes and can block tool calls involving plugin data paths or direct SAP skill writes. post_tool_call records skill evidence links and transform_tool_result labels Hermes web results and records relevant page reads. pathfinder_read starts HTTPS GET requests at official or standards sources and checks the final URL. Set network to off to disable it. pathfinder_inspect reads any local file path the model names (up to 5 MB) and parses it as OData metadata. Parsed contracts, hashes, lab results, source metadata, skill evidence links and downloaded documents are stored under plugin-data/enterprise-pathfinder. Pathfinder does not read credentials or call SAP systems or APIs.","category":"tools","platforms":[],"maintainer":"DavidDiazMerino","author":"DavidDiazMerino","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/DavidDiazMerino/hermes-pathfinder","docs":"https://github.com/DavidDiazMerino/hermes-pathfinder#readme","tools":["pathfinder_sources","pathfinder_inspect","pathfinder_lab","pathfinder_read"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153402,"prs":[{"n":153402,"state":"open","created":"2026-11-11T11:06:20Z"}],"created":"2026-11-11T11:06:20Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"flightdeck","title":"Flightdeck","summary":"Live air-traffic control for your agents and model servers — which agent holds which local GPU slot, who's queued, plan usage on cloud lanes, and opt-in capacity-aware subagent placement.","disclosure":"","category":"desktop","platforms":[],"maintainer":"freemanconsulting","author":"freemanconsulting","version":"0.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/freemanconsulting/hermes-flightdeck","docs":"https://github.com/freemanconsulting/hermes-flightdeck#readme","tools":["fleet_status"],"hooks":["pre_api_request","post_api_request","api_request_error","pre_auxiliary_call","post_auxiliary_call","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"Cloud lanes are Hermes-observed only: providers do not publish server load, so cloud numbers cover this machine's Hermes traffic, not the provider's fleet.; Plan usage on cloud cards depends on the provider's usage hook and can be briefly unavailable; it is shown as unavailable, not as zero.; Capacity routing is opt-in and local-only: it requires route_delegation: true and delegation.backend: flightdeck, and only inner_backend: default is supported; any other inner_backend reports routing unavailable and refuses to arm.","state":"open","pr":153399,"prs":[{"n":153399,"state":"open","created":"2026-11-11T11:02:59Z"}],"created":"2026-11-11T11:02:59Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/by-model.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/swim-lane.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/server-cards.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/cloud-cards.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/by-agent.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/399b080430f6871d42c1c8d8837f2a05efb63c3e/docs/img/routing.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/0b3be1cda40df18cb2d8739bbf83cd0ba4695fbc/docs/img/by-model.png","https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/0b3be1cda40df18cb2d8739bbf83cd0ba4695fbc/docs/img/swim-lane.png"],"videos":["https://raw.githubusercontent.com/freemanconsulting/hermes-flightdeck/0b3be1cda40df18cb2d8739bbf83cd0ba4695fbc/docs/img/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flightdeck.webp"},{"name":"mtg-deck-studio","title":"MTG Deck Studio","summary":"A Magic: The Gathering Commander deck table beside the chat. The AI reads the deck before it speaks, searches Scryfall inside the colour identity, explains the card-to-card synergy graph from Oracle text with the clauses behind every pair, writes a strategy guide from computed evidence, keeps a sideboard of candidates it can promote or swap in, and runs 49 table operations the player can also do by hand. Seven agent tools plus a bundled skill and a Desktop pane with a sandboxed viewer.","disclosure":"card data and images come from the public Scryfall API and cards.scryfall.io (no key, no account, card names and filters only); the plugin reads only the deck/CSV path the player picks at import and writes only inside its profile-scoped data directory (decks, sideboards, exports, the name-index cache, scan photos), which is never uploaded; two bundled MIT Python helpers run as subprocesses with the host interpreter (strategy evidence pack, Moxfield text export — no shell, no network of their own); the webcam opens only when the player presses Scan. No telemetry, no update checker, no stored credentials.","category":"desktop","platforms":["windows"],"maintainer":"GillesGaelBERNARD","author":"GillesGaelBERNARD","version":"0.3.0","requires_hermes":">=0.22.7","repo":"https://github.com/GillesGaelBERNARD/mtg-deck-studio","docs":"https://github.com/GillesGaelBERNARD/mtg-deck-studio#readme","tools":["mtg_deck_studio_state","mtg_deck_studio_apply","mtg_deck_studio_decks","mtg_deck_studio_strategy","mtg_deck_studio_search","mtg_deck_studio_sideboard","mtg_deck_studio_links"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153397,"prs":[{"n":153397,"state":"open","created":"2026-11-11T10:58:32Z"}],"created":"2026-11-11T10:58:32Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/banner.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/table.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/effects.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/links.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/stats.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/strategy.png","https://raw.githubusercontent.com/GillesGaelBERNARD/mtg-deck-studio/26d4e4d82f5ccf7f68465219f6b31969b7337896/assets/screenshots/sideboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mtg-deck-studio.webp"},{"name":"hermes-guardian","title":"Hermes Guardian","summary":"Deterministic allow/approve/block policies for Hermes tool calls, with read-only Policy Lab regression simulation and operator-reviewed policy proposals. Exact tool-name rules, explicit protected local paths, a deliberately limited shell grammar, and payload-free persistent decision audits. Unknown tools default to block; ambiguous recognized-tool arguments, invalid policy, and audit failures block. Uses the public pre_tool_call hook and native Hermes approval directives.","disclosure":"reads its own settings through Hermes and filesystem metadata and symlink targets for path comparisons; writes redacted JSONL under the active profile's plugin-data/hermes-guardian directory. No protected file-content reads, enforcement-hook network calls, subprocesses, model calls, credential storage, telemetry, core overrides, or self-updater. The operator CLI optionally uses public ctx.llm structured generation, sending instructions and policy paths to the configured provider, which may charge; no separate key is required. Explicitly confirmed activation uses ctx.set_config for atomic settings updates and stores private policy backups. Offline generation is a limited exact-language template. Approval rules follow host YOLO/approvals-off and unattended-mode settings; hard block rules do not ask for approval. A policy hook, not a sandbox: intended for a trusted local POSIX backend and trusted plugins that do not rewrite arguments after inspection.","category":"tools","platforms":["linux","macos"],"maintainer":"Oluseyix","author":"Oluseyix","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/Oluseyix/hermes-guardian","docs":null,"tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"No project-scoped positive permissions or Git push approval: unsupported Git commands block. Offline generation is template-based; live provider inference remains unverified.; Simulation inspects current local path metadata; it does not prove final host authorization, audit availability or execution. Stop concurrent config editors during activation; storage failure can prevent rollback.; Remote/container path namespaces, hard-link/case/mount aliases and filesystem races are not secured.; Explicitly allowed tools outside the recognized file/terminal adapters receive tool-name checks only.; Other plugins can rewrite arguments after the hook; disabled or failed-to-load Guardian provides no protection.; The 16 MiB audit limit, write failure, partial trailing record or lock contention blocks calls until repaired or retried.; Audit records describe policy decisions, not execution or final human approval.","state":"open","pr":153395,"prs":[{"n":153395,"state":"open","created":"2026-11-11T10:53:40Z"}],"created":"2026-11-11T10:53:40Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"trurl","title":"Trurl","summary":"Private taste memory for Hermes with proactive hypotheses, sourced cross-theme discovery, compact context, Taste Atlas and Sunday editions.","disclosure":"During new-profile setup the bundled skill proposes a weekly \"Sunday edition\" (20:00 local time) and, unless you say \"one-off only\", has the agent create a recurring Hermes cron job that runs a curation turn on your model plan every Sunday. The plugin itself only reads the cron list to confirm it, and `trurl_schedule off` plus pausing that job stops delivery. Your taste profile, feedback and history are stored locally in the plugin's data directory (trurl.sqlite3, taste-atlas.html, editions/).","category":"tools","platforms":[],"maintainer":"oblomovunleashed","author":"oblomovunleashed","version":"0.3.1","requires_hermes":">=0.23.0","repo":"https://github.com/oblomovunleashed/trurl-hermes","docs":"https://github.com/oblomovunleashed/trurl-hermes/blob/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/README.md","tools":["trurl_context","trurl_taste","trurl_brief","trurl_hypotheses","trurl_plan","trurl_graph","trurl_select","trurl_feedback","trurl_atlas","trurl_schedule"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153390,"prs":[{"n":153390,"state":"open","created":"2026-11-11T10:32:19Z"}],"created":"2026-11-11T10:32:19Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/oblomovunleashed/trurl-hermes/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/assets/trurl-constructor.png","https://raw.githubusercontent.com/oblomovunleashed/trurl-hermes/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/assets/screenshots/03-atlas-interest-map.jpg","https://raw.githubusercontent.com/oblomovunleashed/trurl-hermes/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/assets/screenshots/01-atlas-connections.jpg","https://raw.githubusercontent.com/oblomovunleashed/trurl-hermes/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/assets/screenshots/02-atlas-source-inspection.jpg","https://raw.githubusercontent.com/oblomovunleashed/trurl-hermes/8d8a70e67ff38f1d8b51ab64b2f28d72698242de/assets/screenshots/04-sunday-edition.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/trurl.webp"},{"name":"data-saver","title":"Data Saver","summary":"A mobile-data budget for Hermes. A pre_tool_call hook forecasts how many megabytes a terminal command will download before it runs (pip/uv with dependencies, git clone, docker pull, Hugging Face, ollama, curl/wget) and sends anything over the daily or monthly budget to Hermes's own approval prompt, or blocks it in enforce mode. Execution middleware meters the real bytes each tool call and model request used from the OS network counters into a local ledger; a lean mode trims web results when the budget runs low. Tools: data_usage, data_forecast. Command: /datasaver. Hermes Agent Plugin Hackathon entry.","disclosure":"forecasts send read-only metadata requests (package, repo, image or model name only; no credentials) to pypi.org, api.github.com, auth.docker.io, registry-1.docker.io, huggingface.co and registry.ollama.ai, and one header-only request to a public URL named in a curl/wget command, before the command reaches the approval prompt; the URL is probed only if Hermes's is_safe_url accepts it and every address it resolves to is public, and each redirect hop is checked the same way before it is requested. The ledger (<HERMES_HOME>/plugin-data/data-saver/data.db) stores time, tool name, bytes and the first 300 characters of the command or URL, locally. Network counters are system-wide, so other apps' traffic during a tool call is counted. No telemetry, no shell commands, no background process.","category":"tools","platforms":[],"maintainer":"ahmardchain","author":"ahmardchain","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/ahmardchain/ahmardchain-hermes-data-saver","docs":"https://github.com/ahmardchain/ahmardchain-hermes-data-saver#readme","tools":["data_usage","data_forecast"],"hooks":["pre_tool_call"],"middleware":["tool_request","tool_execution","llm_execution"],"env":[],"known_issues":"","state":"open","pr":153386,"prs":[{"n":153386,"state":"open","created":"2026-11-11T10:23:01Z"}],"created":"2026-11-11T10:23:01Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/Ahmardchain/status/2120620373590855960"],"youtube":[],"thumb":null},{"name":"film-suite","title":"Continuo","summary":"A film studio inside Hermes: write the script, make pictures and video takes on your own GPU through ComfyUI, cut them to music and render the film, with Hermes working in the same project on every page. The bundled Sample film needs no model: open it, change the cut and render an MP4.","disclosure":"runs ffmpeg and ffprobe, and the optional analysis engines you install; talks to a ComfyUI on this machine (127.0.0.1:8188, then 127.0.0.1:8000) or at the address you set in FILM_SUITE_COMFY_URL; fetches LoRA lookups and previews from Civitai when you ask and style thumbnails from Krea when a style board you open has none cached; the optional engine installers download hash-locked packages from PyPI, PyTorch, GitHub and JKU; reads and writes only the folders you approve, plus its own data under the Hermes home; keeps a per-profile receipt key; asks Hermes' own session verifier (hermes_cli.web_server._has_valid_session_token) whether a request comes from your signed-in desktop app and never reads or holds the token; no telemetry.","category":"desktop","platforms":["windows"],"maintainer":"Arts Bro","author":"realartsbro","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/realartsbro/continuo","docs":"https://github.com/realartsbro/continuo#readme","tools":["continuo_audio_stems_read","continuo_audio_stems_sound","continuo_audio_stems_start","continuo_audio_stems_status","continuo_audio_stems_stop","continuo_audio_stems_to_media","continuo_chain_apply","continuo_chain_list","continuo_chain_measure","continuo_chain_plan","continuo_chain_read","continuo_chain_shoot","continuo_control_extract","continuo_control_list","continuo_control_status","continuo_control_stop","continuo_control_use","continuo_dependencies","continuo_elements_read","continuo_elements_write","continuo_film_image_execute","continuo_film_image_inspect","continuo_film_image_prepare","continuo_film_image_preview","continuo_film_image_preview_cancel","continuo_film_image_status","continuo_gpu_status","continuo_h3_controls","continuo_h3_sound_check","continuo_hermes_changes","continuo_image_action","continuo_image_box_find","continuo_image_box_prompt","continuo_image_builder_catalog","continuo_image_cancel","continuo_image_catalog","continuo_image_contexts","continuo_image_edit","continuo_image_edit_capabilities","continuo_image_edit_poll","continuo_image_edit_result","continuo_image_edits_read","continuo_image_edits_write","continuo_image_export","continuo_image_export_options","continuo_image_geometry","continuo_image_import","continuo_image_keep","continuo_image_lora_info","continuo_image_lora_thumbs","continuo_image_loras","continuo_image_mask","continuo_image_mask_capabilities","continuo_image_model_files","continuo_image_picture","continuo_image_poll","continuo_image_preview","continuo_image_preview_live","continuo_image_recipe_read","continuo_image_sources","continuo_image_state","continuo_image_steps","continuo_image_submit","continuo_image_upscale","continuo_image_upscale_capabilities","continuo_image_workflow_health","continuo_image_workflow_submit","continuo_jobs_dismiss","continuo_jobs_list","continuo_media_feed","continuo_media_frame","continuo_media_list","continuo_media_marks_read","continuo_media_marks_write","continuo_media_peaks","continuo_media_prepare","continuo_media_probe","continuo_media_trim","continuo_models_catalog","continuo_models_missing","continuo_music_action","continuo_music_analyse_start","continuo_music_analyse_status","continuo_music_analyse_stop","continuo_music_analysis","continuo_music_analyze","continuo_music_describe","continuo_music_events","continuo_music_evidence_import","continuo_music_evidence_read","continuo_music_gen_generate","continuo_music_gen_takes","continuo_music_gen_targets","continuo_music_interpretation_read","continuo_music_interpretation_write","continuo_music_map","continuo_music_map_preview","continuo_music_open","continuo_music_peaks","continuo_music_range_read","continuo_music_spans","continuo_music_state","continuo_music_waveform","continuo_previz_block_scene","continuo_previz_camera","continuo_previz_figure","continuo_previz_read","continuo_previz_review","continuo_previz_write","continuo_project_create","continuo_project_naming_write","continuo_project_open","continuo_project_open_recent","continuo_project_rename","continuo_project_sample","continuo_project_state","continuo_project_state_write","continuo_projects_list","continuo_recipe_read","continuo_reference_use","continuo_references_read","continuo_review_decide","continuo_review_note","continuo_review_read","continuo_review_start","continuo_scene_analyse","continuo_scene_camera","continuo_scene_read","continuo_script_aside","continuo_script_break_add","continuo_script_break_remove","continuo_script_break_rename","continuo_script_card_place","continuo_script_export","continuo_script_import","continuo_script_move","continuo_script_numbers","continuo_script_page_size","continuo_script_read","continuo_script_restore","continuo_script_revisions","continuo_script_scene_add","continuo_script_scene_delete","continuo_script_scene_omit","continuo_script_scene_write","continuo_script_title_page","continuo_script_write","continuo_shot_plan_read","continuo_shot_plan_write","continuo_song_map_read","continuo_song_map_start","continuo_song_map_status","continuo_style_categories_read","continuo_style_categories_write","continuo_styles_detail","continuo_styles_search","continuo_styles_thumbs","continuo_subtitles_apply","continuo_subtitles_export","continuo_subtitles_read","continuo_subtitles_transcribe","continuo_subtitles_transcribe_status","continuo_suite_action","continuo_suite_state","continuo_take_finish","continuo_take_freeze_check","continuo_take_lineage","continuo_target_health","continuo_targets_catalog","continuo_timeline_apply","continuo_timeline_audio_add","continuo_timeline_export","continuo_timeline_export_cancel","continuo_timeline_export_check","continuo_timeline_export_queue","continuo_timeline_export_reveal","continuo_timeline_export_status","continuo_timeline_footage_add","continuo_timeline_peaks","continuo_timeline_qc","continuo_timeline_read","continuo_timeline_refs","continuo_timeline_revisions","continuo_timeline_write","continuo_use_in_cut","continuo_use_in_shoot","continuo_video_cancel","continuo_video_poll","continuo_video_step_support","continuo_video_steps","continuo_video_submit","continuo_video_upscale","continuo_video_upscale_settings","continuo_voice_generate","continuo_voice_history_add","continuo_voice_history_read","continuo_voice_import","continuo_voice_match","continuo_voice_state_read","continuo_voice_state_write","continuo_voice_take_import","continuo_voice_take_recut","continuo_voice_take_set","continuo_voice_take_sound","continuo_voice_take_to_cut","continuo_voice_take_words","continuo_voice_takes","continuo_voice_targets","continuo_voice_transcribe"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs ffmpeg on PATH, in FFMPEG_PATH or in C:\\ffmpeg\\bin for Cut, Audio and Deliver (the Sample film included).; Generating pictures, video, music and voice needs a ComfyUI on this machine (http://127.0.0.1:8188 or http://127.0.0.1:8000; another address through FILM_SUITE_COMFY_URL), a GPU and the models of each workflow (no model ships; the README lists every file and size). Script, Cut, beat analysis and Deliver run on the CPU without them.; After a command-line install the Continuo window is off: turn it on under Capabilities > Plugins > Continuo (`hermes plugins enable` turns on only the agent's tools). Enabling sets up its Python packages (numpy, librosa, soundfile, httpx, Pillow; 511 MB measured).; Tested on Windows 11 with the Hermes desktop app. The code is written to run on Linux too, not yet tested; macOS is not listed.","state":"open","pr":153383,"prs":[{"n":153383,"state":"open","created":"2026-11-11T10:17:08Z"}],"created":"2026-11-11T10:17:08Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/realartsbro/continuo/4f661d3a1e10ca5021d20efbc0617a744ea4c2d5/docs/media/banner-1200x600.png","https://raw.githubusercontent.com/realartsbro/continuo/4f661d3a1e10ca5021d20efbc0617a744ea4c2d5/docs/media/hero.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/film-suite.webp"},{"name":"snare","title":"snare: prompt injection tripwire","summary":"Prompt injection tripwire with attack-chain forensics. Plants decoy credentials (PROD_AWS_ACCESS_KEY_ID, PROD_AWS_SECRET_ACCESS_KEY, PROD_DATABASE_URL) in the environment of every command the agent runs, never in the prompt. A tool call that tries to send one out (plain, URL-encoded, base64, hex, reversed, partial or nested) is blocked, and so is a command that reads a decoy variable or dumps the environment while using the network, including inside a local script the command runs. The alert names the page or file the injected instruction came from, quotes it, shows how the decoy was exposed and what the agent tried, then locks the session behind Hermes approvals until /snare reset.","disclosure":"adds three fake variables to commands on the local terminal backend (names already set are skipped); stores owner-only files in its plugin-data folder: the decoys, and per incident a JSON line plus an HTML report holding the tool name, shortened arguments of the blocked call, destination URLs, the source URL or path, up to 280 characters of the injected text and the session id. Reads (never writes) local script files a terminal command executes, up to 64 KB, to check them. Keeps an in-memory list of recent tool sources per session. No prompt changes, network calls, shell commands, background processes, real credentials, telemetry or Python dependencies.","category":"tools","platforms":[],"maintainer":"mornslight","author":"mornslight","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/mornslight/hermes-snare","docs":"https://github.com/mornslight/hermes-snare/tree/435f1de4faf3f27f33ee309a9ce0522388c344bf/snare#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153380,"prs":[{"n":153380,"state":"open","created":"2026-11-11T10:10:27Z"}],"created":"2026-11-11T10:10:27Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stepup","title":"Step-Up","summary":"Authenticator-app 2FA for your agent: on messaging platforms the protected tools (terminal and execute_code by default) stay locked until the sender sends a one-time TOTP code from an authenticator app, so an unlocked phone is not a remote shell. One valid code unlocks that sender for 10 minutes, each code works once, five wrong codes lock the sender out for 15 minutes, and `lock` re-locks at once. Local CLI, Desktop and cron runs are never gated, and nothing waits for input.","disclosure":"pre_tool_call may block a protected tool call (never modifies arguments, never approves, never touches the approval system); post_gateway_admission reads the text of admitted gateway messages and consumes only a six-digit code sent while a lock is pending, `unlock <code>` and `lock`, so codes never reach the model; pre_llm_call only records which platform and sender a session belongs to and injects nothing; holds one secret, STEPUP_TOTP_SECRET, read through Hermes's secret scope and never written to state or logs; stores unlock expiries, failure counts and the last used code counter in plugin state; no network calls, no shell commands, no background processes, no telemetry, no dependencies, no self-update. Not a sandbox: tools outside protected_tools keep their normal reach.","category":"tools","platforms":[],"maintainer":"defisensei-maxxing","author":"defisensei-maxxing","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/defisensei-maxxing/hermes-stepup","docs":"https://github.com/defisensei-maxxing/hermes-stepup#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_gateway_admission"],"middleware":[],"env":["STEPUP_TOTP_SECRET"],"known_issues":"","state":"open","pr":153372,"prs":[{"n":153372,"state":"open","created":"2026-11-11T10:01:37Z"}],"created":"2026-11-11T10:01:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"case-trail","title":"Case Trail","summary":"Trace case-history and treatment research to actual opinion passages; analyze supplied sources without a required repository.","disclosure":"Sends search queries through the web provider you configured in Hermes and can fetch one public OpenJurist case page you select after a robots check. Stores source text and review notes privately. Novelty research tool, not legal advice; unaffiliated with Justia or OpenJurist.","category":"web","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.4.3","requires_hermes":">=0.22.0","repo":"https://github.com/flabanabba8/case-trail","docs":"https://github.com/flabanabba8/case-trail/blob/3acda21539db67966bccd80b8957ef08d08b33cb/README.md","tools":["caselaw_examine_source","caselaw_examine_source_file","caselaw_review_sources","caselaw_search","caselaw_fetch","caselaw_examine","caselaw_examine_file","caselaw_fetch_public_opinion","caselaw_examine_public_opinion","caselaw_read_public_opinion","caselaw_public_opinions","caselaw_review","caselaw_review_get","caselaw_review_check_sources","caselaw_review_check_public_sources","caselaw_review_render","caselaw_reviews"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/case-trail/3acda21539db67966bccd80b8957ef08d08b33cb/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/case-trail.webp"},{"name":"creator-studio","title":"Creator Studio","summary":"Make media with Hermes from one request: researched lesson videos, two-host podcast episodes, captions for any recording, and narrated step-by-step tutorials. Bundles four plugins (YouTube Studio, Podcast Studio, Caption Studio, Tutorial Creator) into one entry.","disclosure":"Research pages are fetched through an installed Camoufox browser you select (public addresses only). If you choose Gemini narration, each spoken line is sent to Google (Vertex) with a Google sign-in that Hermes holds for your own OAuth client (hermes auth add creator-studio:google; the plugin never sees the token), behind a spend guard (default 0.50 USD). An HTTP speech recognizer, if you select one, receives audio only after your explicit consent. Runs FFmpeg and ffprobe, and for screen tutorials xwininfo, xprop, xdotool, pactl and xclip; the recorder starts one detached FFmpeg worker per take, and tutorial steps click and type through Hermes computer_use, so its approvals apply. Stores projects privately in plugin storage, one folder per part. No credential or project id is stored or shown. Nothing is uploaded or published.","category":"tools","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.3.0","requires_hermes":">=0.22.3","repo":"https://github.com/flabanabba8/creator-studio","docs":"https://github.com/flabanabba8/creator-studio/blob/5267dc72bc2a9267e4a93ea208e5e90385694f74/README.md","tools":["youtube_make_visual","youtube_generate_image","youtube_start_topic","youtube_research_fetch","youtube_source_add","youtube_source_read","youtube_write_script","youtube_material_add","youtube_narrate","youtube_assemble_project","youtube_project_status","youtube_check_timeline","youtube_render_short","youtube_make_slides","youtube_render_slides","youtube_description","youtube_render_still","youtube_render_clips","youtube_stitch_segments","podcast_start_topic","podcast_research_fetch","podcast_source_add","podcast_source_read","podcast_write_script","podcast_material_add","podcast_narrate","podcast_assemble_project","podcast_episode_files","podcast_project_status","podcast_load_episode","podcast_lint_episode","podcast_preflight","podcast_check_script","podcast_check_review","podcast_pagecast_plan","podcast_check_pagecast_cast","podcast_show_notes","podcast_caption_cues","podcast_start_from_video","podcast_mix","podcast_mix_timeline","captions_generate","captions_for_latest","captions_inspect","captions_retime","captions_suggest_alignment","captions_recognizer_options","captions_analyse_audio","captions_audio_status","captions_audio_review","captions_audio_propose","captions_audio_preview","captions_audio_export","captions_audio_cancel","capture_sources","capture_start","capture_status","capture_mark","capture_stop","capture_export","tutorial_timeline","tutorial_narrate","tutorial_step","tutorial_frame"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"},{"n":153374,"state":"closed","created":"2026-11-11T10:02:06Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/creator-studio/5267dc72bc2a9267e4a93ea208e5e90385694f74/assets/thumbnail.jpg","https://raw.githubusercontent.com/flabanabba8/creator-studio/372427fcc25186feb5f501f9d47d993176094b6f/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/creator-studio.webp"},{"name":"game-lab","title":"Game Lab","summary":"Game Lab combines ModLab, Game Localization Studio, Sprites and experimental Playtest Pilot. ModLab works on a private game copy and invokes separately installed tools; localization drafts and exports RPG Maker text; Sprites inspects and previews character sheets. Playtest Pilot uses approved X11 input, captures screen pixels within the selected window, stores private evidence frames and returns reduced previews and optional local OCR hints. The plugin makes no network calls of its own.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.2.2","requires_hermes":">=0.22.0","repo":"https://github.com/flabanabba8/game-lab","docs":"https://github.com/flabanabba8/game-lab/blob/3173e1b09860be1c4aac3c952cf97b9447cdc55e/README.md","tools":["modlab_resources","modlab_toolkit","modlab_rea_native","modlab_create","modlab_inspect","modlab_apply","modlab_rollback","modlab_select_preserved","localize_inspect","localize_get","localize_translate","localize_validate","localize_export","localize_list_drafts","playtest_run","playtest_start","playtest_action","playtest_check","playtest_read_value","playtest_replay","playtest_observe","playtest_report","sprite_inspect_mv","sprite_preview_mv"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"},{"n":153376,"state":"closed","created":"2026-11-11T10:03:17Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/game-lab/3173e1b09860be1c4aac3c952cf97b9447cdc55e/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/game-lab.webp"},{"name":"live2d-rigger","title":"Live2D Rigger","summary":"Create a provisional Live2D character from a brief with complete image parts, local cutout, placement, an experimental Umamo/JDK rig and Core motion review; also inspect and adjust a copy of an existing model.","disclosure":"runs the user-configured JDK and Kotlin/Umamo compiler, FFmpeg and a local headless browser; the host image tool may use its configured provider. Optional official sample download requires the user’s licence acceptance. No SDK, Core, viewer, sample model, model layers or textures are bundled; the approved thumbnail contains character artwork. XY head turns, independent limbs and polished eyes are not provided.","category":"tools","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.5.1","requires_hermes":">=0.22.0","repo":"https://github.com/flabanabba8/live2d-rigger","docs":"https://github.com/flabanabba8/live2d-rigger/blob/091bf7cfb733f9bf49409e14e5ee68e118fc05ef/README.md","tools":["live2d_begin_model","live2d_clone_model","live2d_remove_layer","live2d_model_layer","live2d_arrange_layers","live2d_place_layer","live2d_set_canvas","live2d_register_layer","live2d_default_layout","live2d_configure_umamo","live2d_check_rig_domains","live2d_rebuild_prototype","live2d_model_rig","live2d_build_model","live2d_render_model_motion","live2d_model_status","live2d_open_model","live2d_inspect_model","live2d_adjust_physics","live2d_render_clip","live2d_write_motion","live2d_inspect_resources","live2d_check_motion","live2d_reference_samples","live2d_fetch_reference_sample"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"},{"n":153375,"state":"closed","created":"2026-11-11T10:02:47Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/live2d-rigger/091bf7cfb733f9bf49409e14e5ee68e118fc05ef/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/live2d-rigger.webp"},{"name":"pagecast-director","title":"PageCast Director","summary":"Editable cast narration with locked voices, source passage IDs, resumable synthesis and selective regeneration.","disclosure":"Stores books and generated audio privately. Voices are local (Flite, or a Higgs server already running on your computer) unless you choose hosted Inworld, ElevenLabs or Google Gemini, which send passage text and voice choices to that provider with your own key, or for Gemini on Vertex a Google sign-in that Hermes holds for your own OAuth client (hermes auth add pagecast-director:google), and use your credits. Runs local Flite and FFmpeg; mpv only plays a preview aloud when you approve it. The optional Android tools check GitHub for the PageCast app and can download it; installing it on a phone with adb, replacing a locked voice and playing a preview aloud each ask for your approval (one pre_tool_call hook). No background processes beyond a render or preview you start.","category":"voice","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.3.5","requires_hermes":">=0.22.3","repo":"https://github.com/flabanabba8/pagecast-director","docs":"https://github.com/flabanabba8/pagecast-director/blob/c809ffcf8405b6f5b0058be2ffc3e2b6c3dab9d4/README.md","tools":["pagecast_knowledge","pagecast_setup","pagecast_series_list","pagecast_series_create","pagecast_series_link","pagecast_series_voice","pagecast_overview","pagecast_cast_note","pagecast_reading_position","pagecast_direction_context","pagecast_direct","pagecast_import","pagecast_books","pagecast_book","pagecast_assign","pagecast_voice","pagecast_voice_audition","pagecast_speech_options","pagecast_edit","pagecast_render","pagecast_cancel","pagecast_preview","pagecast_retry","pagecast_export","pagecast_android_app","pagecast_android_install","pagecast_timeline","pagecast_usage","pagecast_inworld_voices"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"},{"n":153371,"state":"closed","created":"2026-11-11T10:01:34Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/pagecast-director/c809ffcf8405b6f5b0058be2ffc3e2b6c3dab9d4/assets/thumbnail.jpg","https://raw.githubusercontent.com/flabanabba8/pagecast-director/0d197f3403117bc309f24b9583e3c31c57a5ec4e/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pagecast-director.webp"},{"name":"skill-workshop","title":"Skill Workshop","summary":"Get new skills for Hermes safely: mine them from your past chats (Skill Miner), build them from a description (First Principles Skill Builder), and guard against prompt injection in skills and content you bring in (Taint Shield). Scans skill writes before they land and holds back flagged external skills at first use (Skill Guard); Workshop installs need your approval.","disclosure":"Skill Miner reads the Hermes session database read-only; Skill Builder runs --version on a fixed list of common tools and nvidia-smi and reads memory, disk space, skill names and model-cache folder names; Taint Shield watches tool calls in memory; Skill Guard reads the text of skills in your skills folders (and external skill folders named in config.yaml) when they are installed or loaded and keeps a hash and a decision for each in plugin storage. Drafts, revisions and the trusted list live in plugin storage; installing a skill writes one file into the skills folder after your approval. Two install approvals, the Shield's block-or-ask rules and Skill Guard's install scan use pre_tool_call; Skill Guard also uses transform_tool_result and pre_llm_call (hold back a flagged skill, once) and on_skill_lifecycle (scan a skill after Hermes reports it installed). No network calls.","category":"tools","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.3.2","requires_hermes":">=0.22.0","repo":"https://github.com/flabanabba8/skill-workshop","docs":"https://github.com/flabanabba8/skill-workshop/blob/aeeffff2058ef4daa92b90d1b05e005519468c7a/README.md","tools":["shield_report","shield_scan","shield_trust","skillguard_scan_installed","skillguard_decide","miner_scan","miner_propose","miner_diagnose","miner_refine","miner_check","miner_install","skillbuilder_resources","skillbuilder_save","skillbuilder_check","skillbuilder_case","skillbuilder_install"],"hooks":["pre_llm_call","post_tool_call","transform_tool_result","pre_tool_call","on_skill_lifecycle"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/skill-workshop/aeeffff2058ef4daa92b90d1b05e005519468c7a/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skill-workshop.webp"},{"name":"watch","title":"Watch","summary":"Ask Hermes for a show or a film and it streams it on demand in local mpv, with nothing to download first, and remembers where you stopped. Anime, movies and TV series.","disclosure":"Anime part contacts hianime.at through ani-cli provider code pinned in the repository. Movies and TV part searches TMDB (api.themoviedb.org) with your own TMDB API key and resolves streams on demand from Cinejoy, VixSrc and LookMovie through a bridge you build yourself from the pinned Luffy source in movies/native/. No compiled binaries are shipped. Stores only your watch position. Linux only. The sites serve third-party content whose licensing you must judge. This product uses the TMDB API but is not endorsed or certified by TMDB.","category":"tools","platforms":["linux"],"maintainer":"flabanabba8","author":"flabanabba8","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/flabanabba8/watch","docs":"https://github.com/flabanabba8/watch/blob/b4177cec68e5d895d6a682c14a4fe9c4f15792a5/README.md","tools":["anime_search","anime_episodes","anime_play","anime_status","anime_control","anime_history","anime_resume","movies_search","movies_details","movies_play","movies_status","movies_control","movies_history","movies_resume"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153370,"prs":[{"n":153370,"state":"open","created":"2026-11-11T10:00:38Z"}],"created":"2026-11-11T10:00:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/flabanabba8/watch/b4177cec68e5d895d6a682c14a4fe9c4f15792a5/assets/thumbnail.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/watch.webp"},{"name":"k6pane","title":"k6pane","summary":"Local load testing with Grafana k6 from chat. Three tools: k6pane_doctor (checks the k6 install and limits), k6pane_run (writes and runs a k6 test from a URL or a multi-step request flow with smoke, load, stress, spike, soak, constant or fixed-arrival-rate profiles, or runs your own k6 script) and k6pane_report (lists, reads and compares stored runs and flags latency, throughput and error regressions). Each run returns pass, fail, invalid (the requested load was never actually applied: dropped iterations, achieved rate short of target, or timeout) or error, with RPS, error rate, p50/p90/p95/p99 latency and a per-endpoint breakdown. Bundles the k6pane:load-testing skill. Targets are limited to localhost and private networks unless the user lists a host in the allowed_hosts setting; link-local and cloud metadata addresses (169.254.0.0/16, fe80::/10, fd00:ec2::254) are refused unless the exact host is allowlisted, and k6 is fenced with --blacklist-ip to exactly the validated IPs, so redirects, DNS rebinding and runtime-built URLs cannot reach anything else. VU, duration and request-rate caps reject oversized tests. One run at a time.","disclosure":"runs the user's local k6 binary as a subprocess (never through a shell); sends load-test traffic only to the validated targets; resolves target hostnames via DNS; k6's anonymous usage report is disabled; no other network calls, no telemetry, no update checks. Writes each run (generated script, k6 summary, k6 log, parsed result, all redacted) under <HERMES_HOME>/plugin-data/k6pane/runs plus a run.lock file. Reads only k6 scripts the user points it at. Custom script/script_path tests are JavaScript that k6 runs directly on the host, outside the Hermes terminal sandbox and approval prompt, and k6's open() can read local files. Credentials: optional K6PANE_SECRET_<NAME> values, resolved per profile through agent.secret_scope.get_secret only when a test references ${secret.NAME}, passed to k6 through an inherited pipe (never disk or argv) and redacted from every stored file and tool result; k6 runs with a scrubbed environment. Standard library only, no Python dependencies; requires the k6 binary (not bundled).","category":"tools","platforms":["linux","macos"],"maintainer":"fozagtx","author":"fozagtx","version":"0.3.1","requires_hermes":">=0.7.0","repo":"https://github.com/fozagtx/k6pane","docs":"https://github.com/fozagtx/k6pane/blob/3a5d6f1aca07d9e032bb99f4ec960442a15f4ef3/README.md","tools":["k6pane_doctor","k6pane_run","k6pane_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires the k6 binary on PATH (or the k6_bin setting); k6pane_doctor prints the install command. Tested with k6 v2.3.0.; Secrets use k6's file secret source over an inherited pipe, which needs macOS or Linux; Windows is not supported.","state":"open","pr":153367,"prs":[{"n":153367,"state":"open","created":"2026-11-11T09:52:33Z"}],"created":"2026-11-11T09:52:33Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"herms-gate","title":"herms-gate","summary":"A fixed-rule gate on the text that enters a Hermes turn. Tool results are checked before the model reads them: passages that tell the model to drop its instructions, to hide things from the user or to leak data through an image link are cut out and replaced by a marker, and invisible characters are stripped (results from web tools get the full prompt-injection rule set; JSON results stay valid JSON). Gateway messages have invisible tag and bidirectional control characters removed. A user message that carries text hidden in invisible characters is stopped and the hidden text is shown. Every decision comes from a rule table in plain Python; no model is asked. Adds the gate_scan tool and the /gate command (status, warn, enforce, off, allow).","disclosure":"no network calls, no subprocesses, no model calls, no credentials, no Python dependencies; writes one file, plugin-data/herms-gate/events.jsonl in the Hermes home (time, source, tool name, action, verdict, rule ids and counts, never the checked text; trimmed at 512 KB), and one config key (mode); reads HERMES_HOME only as a fallback to find that folder.","category":"tools","platforms":[],"maintainer":"plutoskiz","author":"plutoskiz","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/plutoskiz/herms-gate","docs":"https://github.com/plutoskiz/herms-gate#readme","tools":["gate_scan"],"hooks":["transform_tool_result","pre_gateway_dispatch","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Rule-based: it removes known-bad patterns and cannot prove text is safe. A model that sets out to inspect a file can re-read it in a form the rules do not match, for example in encoded chunks through a code tool.; On Hermes 0.21.5 a pre_llm_call hook cannot end a turn, so a message with hidden text gets a note telling the model what was hidden and not to act on it, instead of being stopped.; Removal can change a document that quotes injection phrases, such as a security article; /gate warn logs what is found and changes nothing.","state":"open","pr":153366,"prs":[{"n":153366,"state":"open","created":"2026-11-11T09:51:13Z"}],"created":"2026-11-11T09:51:13Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lumina","title":"Lumina","summary":"Protects the private documents in your Apple Photos library, on-device. A privacy check-up finds passports, payment cards, passwords and ID documents; Safe Send makes a redacted copy and re-reads it to prove nothing sensitive remains; Leak Guard, a pre_tool_call hook, blocks any Hermes tool call that would send a raw image of an ID document off the Mac. Also searches photos by person, place, scene or text in the image, lists expiry dates, creates albums and renders memory videos.","disclosure":"macOS only; reads the Apple Photos library database and image files (needs Full Disk Access) through osxphotos; creates albums in Photos via AppleScript (photoscript) only when asked; runs Apple Vision text recognition locally and the local sips and ffmpeg binaries; the pre_tool_call hook inspects every tool call's arguments and reads image files they name; a transform_llm_output hook edits Hermes's replies (adds photo-grid/redaction cards or MEDIA lines, removes MEDIA lines for images that look like ID documents and Lumina file paths); exported photos, redacted copies and memory videos are written to the plugin's data folder and, on messaging platforms, delivered through Hermes's MEDIA lines to that chat service; the lumina_redact tool accepts any image file path on the Mac; recognised text is cached in the plugin's own data folder; Lumina makes no network requests of its own, stores no credentials and has no telemetry. Text of matched photos (snippets, or full text of up to 5 photos when asked) is returned to the model.","category":"tools","platforms":["macos"],"maintainer":"samirsawarkar","author":"samirsawarkar","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/samirsawarkar/lumina","docs":"https://github.com/samirsawarkar/lumina/blob/aaced5beb7bdb93cf7267060bb81fb49d4762c67/README.md","tools":["lumina_search","lumina_create_album","lumina_library_info","lumina_on_this_day","lumina_export","lumina_read_text","lumina_expiry","lumina_make_memory","lumina_redact","lumina_privacy_check"],"hooks":["pre_tool_call","post_tool_call","transform_llm_output","pre_llm_call"],"middleware":[],"env":[],"known_issues":"macOS only. Hermes (or the terminal running it) needs Full Disk Access to read the Photos library; album creation asks for Automation permission for Photos.; Text search, expiry and the privacy check-up rely on the text Apple Photos has already recognised; photos added in the last few days are read directly, a few seconds at a time, and a partial result says so.; Leak Guard catches the common routes (image paths in terminal, code, browser and message tool calls) and is not a guarantee against a determined attacker. LUMINA_LEAK_GUARD=off disables it.; The check-up reports four kinds (passports, payment cards, passwords, ID documents) and prefers missing a document over a false alarm. Tested on a small library; very large libraries are not yet measured.; Memory videos use ffmpeg when installed and fall back to an animated GIF.","state":"open","pr":153365,"prs":[{"n":153365,"state":"open","created":"2026-11-11T09:47:46Z"}],"created":"2026-11-11T09:47:46Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/samirsawarkar/lumina/aaced5beb7bdb93cf7267060bb81fb49d4762c67/docs/img/checkup.png","https://raw.githubusercontent.com/samirsawarkar/lumina/aaced5beb7bdb93cf7267060bb81fb49d4762c67/docs/img/safe-send.png","https://raw.githubusercontent.com/samirsawarkar/lumina/aaced5beb7bdb93cf7267060bb81fb49d4762c67/docs/img/leak-guard.png","https://raw.githubusercontent.com/samirsawarkar/lumina/aaced5beb7bdb93cf7267060bb81fb49d4762c67/docs/img/reveal.png"],"videos":["https://github.com/samirsawarkar/lumina/releases/download/v0.1.0/lumina-demo-v2.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lumina.webp"},{"name":"phone-senses","title":"Phone Senses","summary":"Give Hermes your own Android phone's senses through Termux:API: notification and SMS digests, sending SMS from your SIM, a bank and UPI money tracker with bill, subscription and delivery tracking, scam SMS warnings, a scam-in-progress tripwire (unsaved caller + screen-sharing app + OTP or debit, spoken warning on the phone), low-battery alerts and find my phone.","disclosure":"needs the separately installed Termux and Termux:API apps (F-Droid) and runs the repo's own stdlib-only helper on the phone, which executes fixed termux-* commands (no shell) and serves an HMAC-signed HTTP API on the address you choose (plain HTTP: replies with SMS, contacts and location are unencrypted on that network, so use Tailscale or a trusted Wi-Fi); the plugin talks only to that helper; reads notifications, SMS, call log, contacts, clipboard, location and battery and returns them to the model; can ring the phone, speak, post notifications and set the clipboard without asking; sending SMS, calls, photos and OTP reveal always go to Hermes's approval prompt (OTP reveal is also off until you enable it); OTPs are masked by default; parsed transactions (no message text), budgets, watch rules and approved photos are stored in the plugin's data directory; no telemetry.","category":"tools","platforms":[],"maintainer":"LSUDOKO","author":"LSUDOKO","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/LSUDOKO/Phone-Senses","docs":"https://github.com/LSUDOKO/Phone-Senses#readme","tools":["phone_status","phone_notifications","phone_sms_list","phone_sms_send","phone_calls","phone_contacts","phone_location","phone_ring","phone_speak","phone_clipboard","phone_photo","phone_call","phone_otp_reveal","phone_money_sync","phone_money_summary","phone_budget_set","phone_subscriptions","phone_bills","phone_deliveries","phone_scam_check","phone_scam_guard","phone_watch_add","phone_watch_list","phone_watch_remove","phone_watch_check","phone_brief"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Needs an Android phone with Termux and Termux:API installed from F-Droid; the phone helper runs there (python phone_helper/helper.py).","state":"open","pr":153363,"prs":[{"n":153363,"state":"open","created":"2026-11-11T09:41:58Z"}],"created":"2026-11-11T09:41:58Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/plugin/assets/banner.png","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-brief.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-tripwire.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-sms-allow.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-sms-deny.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-money.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-ring.jpg","https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/site/media/feature-brief.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/phone-senses.webp"},{"name":"twring","title":"Twring","summary":"Call your Hermes from your phone and let it call you back, through the Twring app (iPhone and Android): live two-way voice calls and typed chat in one Hermes conversation, dangerous-command approvals answered by voice or tap through Hermes's own approval card, and a phone ring when a scheduled job delivers. Twring does the speech; Hermes keeps its model, memory and tools.","disclosure":"while the gateway runs, one outbound WebSocket to the linked Twring server (api.twring.com by default, or the TWRING_SERVER you set) carries call and chat turn text in, and Hermes's replies, approval questions (command preview and reason) and cron results out; anyone signed in to the linked Twring account drives this Hermes as its owner and can approve one dangerous command at a time by voice or tap through Hermes's own approval card; HTTPS calls to the same server link the account (sending this computer's hostname as its name), post replies to the chat and ring the phone (cron results ring by default; TWRING_RING_ON_DELIVERY=false turns it off); one link token (TWRING_TOKEN), saved by `hermes twring link` through Hermes's .env route; no files of its own, no shell commands, no telemetry, no self-update.","category":"platform","platforms":[],"maintainer":"saasagelabs","author":"saasagelabs","version":"0.1.1","requires_hermes":">=0.23.1","repo":"https://github.com/saasagelabs/twring","docs":"https://github.com/saasagelabs/twring/blob/5a7083e3c9d1cd656f1fd85da771d6eee3d2267a/integrations/hermes/README.md","tools":[],"hooks":[],"middleware":[],"env":["TWRING_TOKEN"],"known_issues":"","state":"open","pr":153357,"prs":[{"n":153357,"state":"open","created":"2026-11-11T09:32:15Z"}],"created":"2026-11-11T09:32:15Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/saasagelabs/twring/5a7083e3c9d1cd656f1fd85da771d6eee3d2267a/integrations/hermes/assets/banner.png"],"videos":[],"x":["https://x.com/rishflips/status/2120448843150172625"],"youtube":[],"thumb":"/hackathon/thumbs/twring.webp"},{"name":"freebusy","title":"Freebusy","summary":"Schedules meetings by email for its owner without revealing a calendar or inventing a time zone: offers come from free/busy only, every slot is held before it is offered and never offered twice, and a time is never shown in a zone the other person did not give. Replies in a compact lettered format, books and sends the invite, and tells the owner only when something is booked, nothing fits, or a person is needed. Universal rules for everyone, plus a personal profile with groups (Work 9 to 5, Family full availability), autonomy tiers starting with a Trial tier, optional travel buffers, owner-only reminders and a day-before briefing. A policy gate blocks any send or calendar write that lacks a held slot, a known zone, the right authority, or that targets anyone off the thread or any calendar but the one configured.","disclosure":"In its default fixture mode it makes no network calls and reads only bundled demo data. It keeps holds, settings and an audit log (secrets redacted) under its own plugin data directory. Its pre_tool_call hook can block or escalate the agent's send and calendar-write calls, and post_approval_response records an owner's approval for a held action. Reminders and the day-before briefing are one-time jobs created through Hermes's cronjob_manage tool and delivered only to the owner over the owner's chosen Hermes channel. The Google Workspace adapter is a documented stub in this version: when completed it reads free/busy through the bundled google-workspace skill via ctx.dispatch_tool and, only with the per-group travel opt-in, the location and conferencing fields of the owner's events, locally; it never reads token files.","category":"automation","platforms":["linux","macos"],"maintainer":"hmnvcb","author":"davidtsaidavid","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/hmnvcb/freebusy","docs":"https://github.com/hmnvcb/freebusy/blob/4ea326e455a320b70a01d359dc46d9d54466526e/README.md","tools":["schedule_parse","schedule_offer","schedule_check","schedule_book","schedule_holds","schedule_resume"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"This version runs in fixture mode: live Google Calendar and live mail are documented next steps, not wired yet. python -m freebusy.demo shows the full flow on demo data.; Reminder texts and the briefing are tested against a stubbed scheduler and fixture outbox, not yet against a running Hermes gateway.","state":"open","pr":153350,"prs":[{"n":153350,"state":"open","created":"2026-11-11T09:14:25Z"}],"created":"2026-11-11T09:14:25Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-shadow-clone","title":"hermes-shadow-clone","summary":"Parallel Gemini shadow-clone swarm & second-opinion arena with automatic quota failover, adversarial claim verification, and optional Telegram live battle reports (calls Google Gemini API via GEMINI_API_KEY and optional Telegram Bot API).","disclosure":"","category":"other","platforms":[],"maintainer":"NotSusOk","author":"NotSusOk","version":"","requires_hermes":"","repo":"https://github.com/NotSusOk/gemini-agent","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153347,"prs":[{"n":153347,"state":"open","created":"2026-11-11T09:07:21Z"}],"created":"2026-11-11T09:07:21Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"worktree-sandbox","title":"Worktree Sandbox","summary":"Transactional Git-worktree terminal backend and speculative execution arena: every terminal, execute_code and file-tool call runs inside its own isolated Git worktree with the credential environment stripped, so the user's checkout is untouched until they promote; worktree_race runs two to five competing solutions in parallel worktrees, verifies each with the project's own test command and scores them on pass/fail, speed and diff size, and Hermes Desktop shows a docked pane, a status-bar diff chip and an inline ::worktree-card race card with one-click promote and a timestamped backup.","disclosure":"no network calls, no telemetry, no credentials and no API keys; it runs the local `git` binary you already have (macOS/Linux) with a scrubbed environment, writes managed worktrees, promotion backups, shadow repositories (only when the folder is not a Git repository) and a SQLite ledger under $HERMES_HOME/plugin-data/worktree-sandbox/, exposes a read/write FastAPI router at /api/plugins/worktree-sandbox/ in the gateway, and ships a desktop/plugin.js that runs in the Desktop renderer inside the plugin SDK surface.","category":"tools","platforms":["linux","macos"],"maintainer":"mahammadbakr","author":"mahammadbakr","version":"0.1.3","requires_hermes":">=0.22.5","repo":"https://github.com/mahammadbakr/hermes-worktree-sandbox","docs":"https://github.com/mahammadbakr/hermes-worktree-sandbox#readme","tools":["worktree_create","worktree_status","worktree_diff","worktree_promote","worktree_race"],"hooks":["on_session_start","post_tool_call","pre_verify","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153343,"prs":[{"n":153343,"state":"open","created":"2026-11-11T08:58:55Z"}],"created":"2026-11-11T08:58:55Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shinjuku","title":"Shinjuku private wallet","summary":"A private USDC wallet for Hermes that the user holds. It pays paid web services and APIs (x402) privately: the seller and the blockchain do not see which wallet paid. From plain requests Hermes checks a price, finds paid APIs, pays, and shows a wallet card (/shinjuku:wallet), receipts, add funds and a send back to the user's own wallet. New plugin. Agent Plugins v1 package (plugin.json + mcp.json + skills/ + a small launch.mjs). The wallet itself is the npm package shinjuku at the exact version in mcp.json (0.3.217), which the user installs once (npm install -g) and sets up in a terminal (shinjuku setup).","disclosure":"the plugin downloads nothing and stores nothing; it reads npm's folders to find the installed wallet, and only when the default folders hold no copy it asks npm for its folders (npm root -g, npm config get cache; local reads, no network; through cmd.exe on Windows). Setup (in the terminal, not the plugin) downloads the wallet's proof programs from Shinjuku's server and checks each one. Hermes runs the wallet as a background MCP server; the wallet connects to Shinjuku's payment service and to the services the user pays, over Tor when the user chose Tor in setup; on Windows it downloads Tor once from torproject.org (pinned checksum) and runs it in the background. The npm install goes directly to npm, not over Tor. Keys, backup and records stay in the wallet's folder in the user's account. No telemetry. The package marks the server untrusted, so Hermes asks before every tool call that is not annotated read-only (payments, sends, deposits, stops). The wallet code is the npm package, not covered by the pinned sha.","category":"tools","platforms":["windows","linux"],"maintainer":"Shinjuku StAItion","author":"Shinjuku-StAItion","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ShinjukuStaition/hermes-shinjuku","docs":"https://github.com/ShinjukuStaition/hermes-shinjuku","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153340,"prs":[{"n":153340,"state":"open","created":"2026-11-11T08:52:08Z"}],"created":"2026-11-11T08:52:08Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ShinjukuStaition/shinjuku-shield/f1e63ac0134a6da00f671cf0542177551fbfddb2/docs/hermes/hermes-install-from-git.png","https://raw.githubusercontent.com/ShinjukuStaition/shinjuku-shield/f1e63ac0134a6da00f671cf0542177551fbfddb2/docs/hermes/hermes-price-and-approval.png"],"videos":[],"x":["https://x.com/Shin_StAItion/status/2120637376087396672"],"youtube":[],"thumb":"/hackathon/thumbs/shinjuku.webp"},{"name":"recloc","title":"recloc","summary":"Location reminders that never leave your phone: ask the agent to remind you at a place, and Apple Reminders alerts you when you arrive. The plugin posts a brrr notification whose subtitle is the validated address; an iOS Shortcuts automation turns it into a reminder with a When I Arrive alert, and iOS watches the geofence on-device. Nothing listens on your machine — outbound HTTPS only.","disclosure":"","category":"automation","platforms":[],"maintainer":"SomeoneElseSt","author":"SomeoneElseSt","version":"0.1.0","requires_hermes":"","repo":"https://github.com/SomeoneElseSt/recloc","docs":"https://github.com/SomeoneElseSt/recloc#readme","tools":["add_reminder","list_reminders","cancel_reminder","save_place","edit_place","list_places","remove_place"],"hooks":["pre_tool_call"],"middleware":[],"env":["BRRR_WEBHOOK_URL"],"known_issues":"","state":"open","pr":153339,"prs":[{"n":153339,"state":"open","created":"2026-11-11T08:49:56Z"}],"created":"2026-11-11T08:49:56Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"waifu","title":"waifu","summary":"Live2D dashboard companion with 56 CDN models, a thumbnail gallery, native activity hooks, and a draggable overlay.","disclosure":"","category":"desktop","platforms":[],"maintainer":"thewaifuai","author":"thewaifuai","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/waifuai/hermes-waifu","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"Rights clearance for 52 Eikanya-derived models and their thumbnails is not established; upstream restricts commercial use.; Twenty-eight upstream models lack optional physics files; those references are explicitly omitted.; Automatic following requires an existing authorized live runtime session; saved history alone is insufficient.","state":"open","pr":153330,"prs":[{"n":153330,"state":"open","created":"2026-11-11T08:34:56Z"}],"created":"2026-11-11T08:34:56Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ostra","title":"Ostra Agent","summary":"Ostra Agent: the agent's own post-quantum USDG vault on Robinhood Chain (chain 4663), from which it pays x402 sellers, swaps tokens, holds tokens privately, works and hires on Ostrapad, and gives an agent key with on-chain limits and standing orders. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only: mcp.json runs the pinned @ostraagent/mcp@0.1.22 over npx stdio (Node.js 22+ and npm required) with every tool of that server, and the ostra:agent skill tells the agent how to use them.","disclosure":"the server runs on the user's machine, creates the agent's seed in ~/.ostra (owner-only; the seed controls the vault's funds) and signs there. It writes ~/.ostra and ~/ostra-pad-files, and while Hermes runs it finishes its own pending work every minute (payment channels, swaps, private notes, Ostrapad jobs, standing orders). Its tools move real funds; the package marks the ostra server untrusted, so Hermes asks before each tool call and refuses them in cron and headless runs. Network calls go to Robinhood Chain's public RPC, Ostra's relayer, keeper, aggregator and AI gateway, Ostra's index at app.ostraagent.xyz and RPC proxy at rpc.ostraagent.xyz, api.raeto.cc for the raeto tool, and ethereum-rpc.publicnode.com for the strategies' USDe price. The server code comes from the npm registry at that exact version and is not covered by the pinned sha.","category":"tools","platforms":["linux","macos"],"maintainer":"Ostra","author":"ostraagent","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/ostraagent/ostra-hermes","docs":"https://docs.ostraagent.xyz/agents","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153329,"prs":[{"n":153329,"state":"open","created":"2026-11-11T08:33:26Z"}],"created":"2026-11-11T08:33:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sharewise","title":"Sharewise","summary":"See what your photos and videos reveal before you share them. Reports, as yes/no counts only, exact location, location detail, time, device, unique IDs, owner name, captions, hidden thumbnails, edit history, depth maps and (videos) per-frame face data; on macOS finds faces, people, street names, house numbers and plates with Apple Vision on this computer; a local review page lets the user switch areas off, draw, move, resize, rotate and reshape them; hidden areas are rebuilt from their surroundings (faces) or become a blank plate in the sign's colour, so nothing of what was there is kept; copies drop all metadata except copyright and are re-read and verified. Videos (MOV, MP4, M4V, 3GP) are cleaned without re-encoding: metadata boxes, timed-metadata tracks and unreferenced media bytes are zeroed in a copy and the whole file is scanned; faces inside videos are not hidden.","disclosure":"reads JPEG, HEIC, PNG, WebP and the video types above only in a folder the user names inside the home folder or on an external drive; refuses the operating system, disk roots, the whole home folder, ~/Library, hidden and locked items, symlinks and app-managed libraries. Writes only new copies to a Sharewise/ folder inside that folder and never writes or overwrites originals. sharewise_share takes check ids, photo numbers, fixed keep choices, the user's selection codes and areas to add (never file paths), is validated by its own pre_tool_call hook, and keeping location is escalated to Hermes' human-approval gate (fails closed with no human present). The agent can add areas but cannot switch them off; switching off comes from the review page's selection code (a design rule, not a cryptographic barrier). Stores the last 10 checks (paths, yes/no findings, area boxes), review pages with downsized photos and downsized finished copies in its plugin data folder; never stores metadata values or text read in photos. Sends to the model provider, as part of the conversation, the folder, file names and yes/no and area counts, and, only when the user asks for a visual check (sharewise_look), downsized finished copies that are already hidden and clean. Apple Vision runs on-device via pyobjc-framework-Vision (macOS only; elsewhere detection is off and areas can be drawn by hand). No network calls, model calls, shell commands or telemetry; no process-wide settings changed.","category":"tools","platforms":[],"maintainer":"ardianreffa","author":"ardianreffa","version":"0.1.6","requires_hermes":">=0.22.6","repo":"https://github.com/ardianreffa/sharewise","docs":"https://github.com/ardianreffa/sharewise#readme","tools":["sharewise_check","sharewise_review","sharewise_share","sharewise_look"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153326,"prs":[{"n":153326,"state":"open","created":"2026-11-11T08:24:48Z"}],"created":"2026-11-11T08:24:48Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/banner.jpg","https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/screenshot-1-check.jpg","https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/screenshot-2-review.jpg","https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/screenshot-3-hidden-for-good.jpg","https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/screenshot-4-verified-get-info.jpg","https://raw.githubusercontent.com/ardianreffa/sharewise/dd82698f253a29fe6eb53a8c36d4b51b11a289a9/docs/screenshot-5-verified-mdls.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sharewise.webp"},{"name":"printsi","title":"printsi","summary":"Get a PDF professionally printed and delivered. 19 MCP tools: a free preflight that reads the PDF from disk (bleed, trim size, safe areas, image resolution, fonts, colour) and returns each issue with its position and fix plus the page preview as an image; quotes for printing with tracked delivery; a payment link a person pays on Stripe; order tracking and support tickets. A Hermes Desktop pane draws the page to scale with each issue marked, and shows the order's progress with a pay button. Flyers today, delivered in the contiguous US. Portable Agent Plugins v1 package (mcp.json + one skill) with a desktop/plugin.js; no Python. The stdio MCP server ships in the package as one readable, unminified JavaScript file (server/printsi.mjs, run with node; Node.js 18+ required), so nothing is downloaded at run time.","disclosure":"calls the printsi API (printsi-api-live.magnus-ahmad.workers.dev) and nothing else; uploads the PDF being checked or printed and sends the delivery name, address, phone and email to printsi and its print supplier; saves check previews to the temp folder; orders cost real money, but the plugin cannot pay: order_purchase returns a link and a person pays on Stripe, with the card held until the printer accepts; the server is marked untrusted, so Hermes asks before every tool that uploads or changes something; no account is needed: on first use it mints a printsi guest key and keeps it, with order tokens, in the plugin's own data folder in the Hermes profile, and reads no other credential store; the Desktop pane only reads this plugin's own tool results (no network, no files, no tool calls) and opens printsi's payment page in the browser when the user presses the button; the skill's optional helper scripts run Chrome and Ghostscript locally and fetch segno from PyPI through uvx; no telemetry (PRINTSI_TELEMETRY=0), no update checks, no self-updating code.","category":"tools","platforms":[],"maintainer":"magnusahmad","author":"magnusahmad","version":"0.3.3","requires_hermes":">=0.23.1","repo":"https://github.com/magnusahmad/printsi-agent-plugins","docs":"https://github.com/magnusahmad/printsi-agent-plugins/tree/main/printsi#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153325,"prs":[{"n":153325,"state":"open","created":"2026-11-11T08:24:36Z"}],"created":"2026-11-11T08:24:36Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/magnusahmad/printsi-agent-plugins/5010d324cafc69eb6d6bb45d96fa1a59ad151374/docs/banner.png","https://raw.githubusercontent.com/magnusahmad/printsi-agent-plugins/5010d324cafc69eb6d6bb45d96fa1a59ad151374/docs/screenshot-1-fail.png","https://raw.githubusercontent.com/magnusahmad/printsi-agent-plugins/5010d324cafc69eb6d6bb45d96fa1a59ad151374/docs/screenshot-2-quote.png","https://raw.githubusercontent.com/magnusahmad/printsi-agent-plugins/5010d324cafc69eb6d6bb45d96fa1a59ad151374/docs/screenshot-3-approve-pay.png","https://raw.githubusercontent.com/magnusahmad/printsi-agent-plugins/5010d324cafc69eb6d6bb45d96fa1a59ad151374/docs/screenshot-4-delivered.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/printsi.webp"},{"name":"glance","title":"Glance","summary":"Hermes can't call a UI change done until it has looked. Glance screenshots the running iOS Simulator (or Android emulator) right before the agent's first UI edit, diffs it against the screen after the edit, and the pre_verify hook sends the agent back when the edit changed nothing, crashed to an error screen, or left the screen blank. On PASS the agent sees the before/after image, so it can catch a button that vanished. Desktop draws the result as a before/after slider.","disclosure":"runs xcrun simctl (list, io screenshot) and adb (devices, exec-out screencap) as subprocesses; adb devices starts adb's own server if it is not running; on PASS calls Hermes' vision_analyze on the compare image through ctx.dispatch_tool, which is one auxiliary vision model call when the main model is text-only; appends the compare image to the agent's final reply as a MEDIA attachment, so on messaging platforms the screenshot is sent into that chat; writes screenshots and check records under plugin-data/glance and does not prune them; no network calls of its own, no credentials, no telemetry.","category":"tools","platforms":["macos","linux"],"maintainer":"Chinteyley","author":"Chinteyley","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Chinteyley/hermes-glance","docs":"https://github.com/Chinteyley/hermes-glance#readme","tools":["glance_check","glance_baseline"],"hooks":["pre_tool_call","pre_verify","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153324,"prs":[{"n":153324,"state":"open","created":"2026-11-11T08:22:57Z"}],"created":"2026-11-11T08:22:57Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Chinteyley/hermes-glance/155f9f045e31509f3df9700379dd68b27e8af417/docs/desktop-pass-card.png","https://raw.githubusercontent.com/Chinteyley/hermes-glance/155f9f045e31509f3df9700379dd68b27e8af417/docs/pass-button-gone.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/glance.webp"},{"name":"fusen","title":"Fusen","summary":"Fusen (付箋, Japanese for sticky note) are notes pinned to conversations: one editable body shared by every chat it is pinned to, handed to the model only when its view is stale, and rewriteable by Hermes with your approval.","disclosure":"","category":"desktop","platforms":[],"maintainer":"Tokagehausu","author":"Tokagehausu","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/Tokagehausu/hermes-fusen","docs":null,"tools":["fusen_notes","fusen_pin","fusen_write"],"hooks":["pre_llm_call","post_compaction","on_session_delete"],"middleware":[],"env":[],"known_issues":"The composer banner follows the focused chat, not the split tile it renders in; the panel is the reliable place with split panes.; A note armed for \"new chat with this note\" can land on a different chat if you switch and never send in the draft.; Sidebar grouping by note and a per-row context submenu need core seams that do not exist at HEAD, so neither ships.","state":"open","pr":153322,"prs":[{"n":153322,"state":"open","created":"2026-11-11T08:19:05Z"}],"created":"2026-11-11T08:19:05Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentpay-guard","title":"AgentPay Guard","summary":"Deterministic spend and risk policy for any Hermes tool call. A pre_tool_call hook reads the tool name and arguments, finds amount, currency and payee, and applies per-call and daily limits, a payee allowlist, a currency list and an approval threshold. Hard-limit violations are blocked; over-threshold calls go to Hermes's own approval prompt (escalate mode) or are blocked into a local approval queue that only a person can release with /guard approve <id> as a single-use, exact-call, expiring grant with limits rechecked (strict mode). Executed spend is recorded in a local ledger from post_tool_call; /guard status|queue|ledger|policy|kill and a read-only guard_check dry-run tool.","disclosure":"no network calls, no shell commands, no subprocesses, no background process, no credentials, no Python dependencies; writes queue, ledger, grants and kill switch only under <HERMES_HOME>/plugin-data/agentpay-guard (argument hashes, not raw arguments); reads an optional policy.json from that same directory.","category":"tools","platforms":[],"maintainer":"tmdry4530","author":"tmdry4530","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/tmdry4530/hermes-guard-plugin","docs":"https://github.com/tmdry4530/hermes-guard-plugin/blob/84c44e53ec43d3bac2c1a43d6a21aea0d58d4051/README.md","tools":["guard_check"],"hooks":["pre_tool_call","post_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"Classification is heuristic: a value-moving tool with an unrelated name and no recognized amount field is not treated as spending.; In escalate mode, Hermes decides escalations; with --yolo or approvals.mode smart Hermes may approve without a person. Use mode: strict for person-only grants.","state":"open","pr":153321,"prs":[{"n":153321,"state":"open","created":"2026-11-11T08:17:58Z"}],"created":"2026-11-11T08:17:58Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"session-lock","title":"Session Lock","summary":"A Hermes client that exits without clearing runtime/active_sessions.json leaves the session leased, and every other client is refused with \"This chat is open somewhere else\". The registry is not visible in the app, so a stale lease looks like a broken gateway. session-lock makes those leases visible in a Desktop status-bar chip: session name, surface, pid, age and owner liveness, with release one, dead-only and all. Releasing a live lease is explicit and can let two clients write; every write takes the same registry lock, copies a backup and appends an audit line. No network calls, credentials or background process. The same REST routes are used by my Android client. The manual installer is Windows; the backend route is cross-platform.","disclosure":"","category":"desktop","platforms":["windows"],"maintainer":"TightXu","author":"TightXu","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/TightXu/hermes-session-lock","docs":"https://github.com/TightXu/hermes-session-lock#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153319,"prs":[{"n":153319,"state":"open","created":"2026-11-11T08:16:25Z"}],"created":"2026-11-11T08:16:25Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-lens","title":"Hermes Lens","summary":"Talk to your own Hermes agent through Ray-Ban Meta glasses. A platform channel for a companion iPhone app that holds a Gemini Live voice call; requests that need your data or an action become ordinary messages to your agent, and Hermes approvals appear as an Approve / Decline card that only your tap resolves.","disclosure":"opens an HTTP listener (default 127.0.0.1:8795, plaintext; expose it only through a TLS proxy such as tailscale serve) where any phone holding the shared HERMES_LENS_TOKEN chats with the agent as its owner, bypassing the gateway allowlist, and resolves approval prompts with a tap; sends GEMINI_API_KEY only to generativelanguage.googleapis.com to mint single-use Gemini Live call tokens, after which the companion app speaks the agent's answers and any glasses photos you attach through Google's Gemini Live (with Google Search); `hermes lens setup` writes HERMES_LENS_TOKEN (and a Gemini key you type) to the profile .env; stores only daily call-time totals in its plugin data dir; no telemetry.","category":"platform","platforms":[],"maintainer":"brukchip","author":"brukchip","version":"0.4.0","requires_hermes":">=0.22.5","repo":"https://github.com/brukchip/hermes-lens","docs":"https://github.com/brukchip/hermes-lens#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":["HERMES_LENS_TOKEN","GEMINI_API_KEY"],"known_issues":"The iPhone app is built from source with Xcode (ios/ in the repo); Meta does not yet allow glasses-toolkit apps in the App Store.; The phone must reach the gateway over HTTPS, e.g. tailscale serve in front of 127.0.0.1:8795.","state":"open","pr":153316,"prs":[{"n":153316,"state":"open","created":"2026-11-11T08:11:03Z"}],"created":"2026-11-11T08:11:03Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wiro","title":"Wiro AI","summary":"Wiro AI as a Hermes model provider (`--provider wiro`, or Wiro AI in `hermes model`): one OpenAI-compatible API and one key for GPT, Claude, Gemini, DeepSeek, GLM, Kimi and Grok models, paid as you go from the Wiro wallet. The listed models declare their context window, tool calling and image input, `/reasoning` is sent as the gateway's `reasoning_effort` (models that cannot switch reasoning off get their lowest level), and openai/gpt-6-luna handles background tasks and image description.","disclosure":"registers one model provider at import and nothing else (no tools, hooks, middleware, commands, background work or file access). Prompts, tool schemas and results, attached images and the GET /v1/models catalog request go to https://llm.wiro.ai/v1 through Hermes' own client with WIRO_API_KEY, which Hermes reads; usage is paid from the user's Wiro wallet; the plugin itself opens no connections and sends no telemetry.","category":"models","platforms":[],"maintainer":"wiroai","author":"EminBudak","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/wiroai/Wiro-Hermes","docs":"https://github.com/wiroai/Wiro-Hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["WIRO_API_KEY"],"known_issues":"","state":"open","pr":153305,"prs":[{"n":153305,"state":"open","created":"2026-11-11T08:01:13Z"}],"created":"2026-11-11T08:01:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"data","title":"Hermes Data","summary":"An agentic report page. Open an Excel workbook, a CSV or a JSON file and Hermes finds the story: it suggests a headline and a handful of charts, and you accept the ones you want onto the page. Every number on a chart is computed from your rows; the model picks columns and wording, never figures. Ask about the table or about one chart and an agent answers with a chart and its sources. Split a chart by a second column, point at any mark, export the report as a web page, Markdown or SVG. Once you allow it, any chat can read your reports and propose charts.","disclosure":"Find the story starts a hidden Hermes session told to use no tools (your Hermes tools stay available to it, stopped after 2.5 minutes or 6 tool calls), which sees column summaries, grouped totals and the first eight rows, never the whole table; Ask starts a hidden session that uses your Hermes tools and reads third-party web pages, stopped after 4 minutes or 24 tool calls; approval prompts inside these sessions are denied; open and export go through the system dialog and the plugin's own backend, which reads workbooks with the Python standard library and refuses paths inside the Hermes home folder; a CSV or JSON file dragged onto the page is read in the page; reports live in Desktop plugin storage, with a copy of the columns, charts and first 400 rows under plugin-data/data/ only after you turn on chat access, which starts off; no telemetry, no credentials, no shell commands or background processes of its own. Independent community project, not affiliated with Nous Research.","category":"desktop","platforms":[],"maintainer":"Adolanium","author":"Adolanium","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Adolanium/hermes-data","docs":"https://github.com/Adolanium/hermes-data#readme","tools":["data_list","data_read","data_propose","data_create"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153303,"prs":[{"n":153303,"state":"open","created":"2026-11-11T07:56:21Z"}],"created":"2026-11-11T07:56:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Adolanium/hermes-data/b7706c8a4445726b03aeee6dc3b6fbc23bd79775/docs/assets/catalog.png","https://raw.githubusercontent.com/Adolanium/hermes-data/b7706c8a4445726b03aeee6dc3b6fbc23bd79775/docs/assets/report.jpg","https://raw.githubusercontent.com/Adolanium/hermes-data/b7706c8a4445726b03aeee6dc3b6fbc23bd79775/docs/assets/suggestions.jpg","https://raw.githubusercontent.com/Adolanium/hermes-data/b7706c8a4445726b03aeee6dc3b6fbc23bd79775/docs/assets/answer.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/data.webp"},{"name":"lethe","title":"Lethe","summary":"Take one chat off the record with /lethe: nothing reaches memory, your profile or skills, the transcript is deleted, and a river shows every write it kept out. Use an external memory provider? Copy this into a Hermes chat and replace <PROVIDER> with yours: Extend my local Lethe plugin (~/.hermes/plugins/lethe) so off-the-record chats also skip my <PROVIDER> memory provider's per-turn sync, session-end extraction and save tools when store.is_on(session_id) is true. Show me the diff, add a test, then run hermes gateway restart.","disclosure":"Deletes the off-the-record chat's transcript (and its compression chain) from Hermes's session database via SessionDB.delete_session when the chat ends, on /lethe-end or /lethe-forget, or from the Desktop panel's Delete transcript now (unless keep_transcript is on); while on, it blocks memory, user-profile and skill writes plus provider tools whose names look like saves, and adds a fixed off-the-record note to each turn's context; external memory providers' per-turn sync is not blocked.","category":"memory","platforms":["linux","macos"],"maintainer":"itsflownium","author":"itsflownium","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/itsflownium/hermes-lethe","docs":"https://github.com/itsflownium/hermes-lethe#readme","tools":[],"hooks":["pre_tool_call","pre_llm_call","post_llm_call","on_session_finalize","on_session_start"],"middleware":[],"env":[],"known_issues":"External memory providers (memory.provider) are not covered out of the box. Ask Hermes: \"Extend my local Lethe plugin (~/.hermes/plugins/lethe) so off-the-record chats also skip my <PROVIDER> memory provider's per-turn sync, session-end extraction and save tools when store.is_on(session_id) is true. Show me the diff, add a test, then run hermes gateway restart.\"; The end-of-chat receipt can't print at /exit in the CLI/TUI yet (the shared gateway drops plugin end-of-session messages); use /lethe-end first. The transcript is deleted either way.; In a brand-new Desktop chat, typing /lethe first hits Hermes's \"Submission destination changed\" error; use the panel's Start off the record.","state":"open","pr":153302,"prs":[{"n":153302,"state":"open","created":"2026-11-11T07:56:18Z"}],"created":"2026-11-11T07:56:18Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/itsflownium/hermes-lethe/8b93e2dce9402648c7e238c1d8c83dc649f2f204/assets/banner.png","https://raw.githubusercontent.com/itsflownium/hermes-lethe/8b93e2dce9402648c7e238c1d8c83dc649f2f204/assets/review/panel-light.png","https://raw.githubusercontent.com/itsflownium/hermes-lethe/8b93e2dce9402648c7e238c1d8c83dc649f2f204/assets/review/panel-dark.png"],"videos":["https://raw.githubusercontent.com/itsflownium/hermes-lethe/8b93e2dce9402648c7e238c1d8c83dc649f2f204/assets/demo/lethe-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lethe.webp"},{"name":"honeytrap","title":"Honeytrap - catch a hijacked agent in the act","summary":"Catch a hijacked agent by the fake credentials it goes looking for. Honeytrap hides a realistic ops note (prod-access.md) in the agent's workspace with six decoys (deploy ref, signing key, AWS id, database URL, admin portal, license key) in shapes Hermes's redactor leaves visible, and never mentions them to the model. If one shows up in any tool call, plain or disguised (base64, hex, URL-encoded, reversed, split, zero-width or Unicode-tag smuggled, lookalike letters, or leaked in fragments across calls), or the decoy file is sent out by path (curl -F @file, cat | nc), the call is blocked (pre_tool_call), the session's outbound tools are quarantined until /honeytrap release, the chat gets an alert with the attack chain (untrusted source, decoy read, blocked egress) and an OCSF-style Detection Finding is written for your SIEM. /honeytrap plants, tests, lists incidents and switches mode; hermes honeytrap generates, rotates and removes decoys.","disclosure":"writes one decoy file into the agent workspace when you run /honeytrap plant (through the agent's write_file) or hermes honeytrap init --dir/plant; stores the decoys, their placements and incidents (tool name, decoy kind, encoding, destination host, chain of tool names; never arguments or conversation text) in its own plugin data. No network, subprocesses, tools, credentials or telemetry. Disclosure — adds pre_tool_call/post_tool_call hooks that scan every tool call's arguments and results (up to 256 KB each) for its own decoys; in the default enforce mode it blocks a call carrying a decoy, blocks the session's outbound tools after a critical hit until /honeytrap release (in-memory, cleared on restart, and release lifts every session), and blocks every tool call if the guard itself errors (switch to monitor mode to recover); /honeytrap plant (through the agent's write_file) or hermes honeytrap init --dir/plant writes a decoy file prod-access.md into the chosen workspace; stores decoy values, placements and incidents (tool name, decoy kind, encoding, destination host, tool-name chain; never arguments or conversation text) under its plugin data dir; no network, subprocesses, tools, credential reads or telemetry.","category":"tools","platforms":[],"maintainer":"imabhays","author":"imabhays","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/imabhays/honeytrap","docs":"https://github.com/imabhays/honeytrap/tree/eab217eff5387afbc42cb214b7f0925b061fcaa2#readme","tools":[],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153298,"prs":[{"n":153298,"state":"open","created":"2026-11-11T07:51:05Z"}],"created":"2026-11-11T07:51:05Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/im_abhays/status/2120553468020900257"],"youtube":[],"thumb":null},{"name":"hermes-plant","title":"Hermes Plant","summary":"A calm little garden for Hermes Desktop that grows in real time. It sits above the app like the Hermes pet, takes no layout space and can be dragged anywhere. Click a plant for a care wheel: water, prune (you choose which tip to cut, and the piece drops away), rotate, fertilize, repot, pick, sell, or ask Hermes. Four species (leafy plant, fern, cactus, little tree) grow in their own ways, pruning shapes how each one branches, and neglect only pauses them. Care earns play coins, and a small shop sells more plants and fertilizer, up to six pots. Bugs land now and then and can be shooed away. Two agent tools let Hermes check the garden and tend it when you ask. Original blue-ink artwork drawn in code. Reachable from the status bar, the command palette and the keyboard, and it speaks through the Hermes pet when one is showing.","disclosure":"no network requests, no background model calls and no background processes; Ask Hermes submits one chat message only when you press it; coins are play money inside the plugin; the garden is kept in Desktop plugin storage and in plugin-data/hermes-plant/data.db; the plugin adds its own floating element to the page (Hermes has no SDK area for one) and removes it on unload, without reading or changing core markup.","category":"desktop","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"1.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/tuancookiez-hub/hermes-plant","docs":"https://github.com/tuancookiez-hub/hermes-plant/tree/f387648461b12488a48d703e918d283cafe7402a","tools":["plant_status","plant_tend"],"hooks":[],"middleware":[],"env":[],"known_issues":"The agent tools and the sync route need the Python half: add hermes-plant to plugins.enabled and restart Hermes. Without that the garden still works in Desktop.","state":"open","pr":153297,"prs":[{"n":153297,"state":"open","created":"2026-11-11T07:49:33Z"}],"created":"2026-11-11T07:49:33Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/banner.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/species.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/wheel.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/shop.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/stages.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-plant/f387648461b12488a48d703e918d283cafe7402a/docs/images/shapes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-plant.webp"},{"name":"ci-red-to-green","title":"CI Red to Green","summary":"When a watched GitHub Actions run goes red, Hermes tells you which tests failed and which commits came in since the last green run; reply fix and the agent fixes a clone, and a PR is offered only after the plugin's own reading of Hermes's terminal output shows each failing test PASSED at the last green commit (when there was one), FAILED twice before the change (a pass before it marks the test flaky and blocks the PR), PASSED three runs in a row after it, and no new full-suite failures. pytest and go test. The PR commit holds source files only (no tests, test config, CI files or gitignored files), and the plugin reports the PR's own CI result. Desktop pane, page, palette commands and notifications. Try /ci demo with no token: a real humanize bug on a bundled copy.","disclosure":"polls the GitHub API for the watched repos every 30 s while a watch is on (one background thread, stops on /ci stop or restart), downloads failed job logs without forwarding the token to the log host, compares commits, and creates a branch, commit and pull request only when you pick Open PR, all with CI_RED_TO_GREEN_GITHUB_TOKEN read through Hermes's secret scope; the plugin runs no shell commands itself, while the agent clones the repo into plugin-data/ci-red-to-green/worktrees/ and runs its tests through Hermes's terminal tool, with the first command that runs repo code escalated to Hermes's approval prompt and git push from that folder blocked; stores watches, incidents and recorded test results in plugin-data/ci-red-to-green/; no telemetry.","category":"automation","platforms":["linux","macos"],"maintainer":"kinnuworks","author":"kinnuworks","version":"0.2.5","requires_hermes":">=0.23.1","repo":"https://github.com/kinnuworks/ci-red-to-green","docs":"https://kinnuworks.github.io/ci-red-to-green/","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call"],"middleware":[],"env":["CI_RED_TO_GREEN_GITHUB_TOKEN"],"known_issues":"","state":"open","pr":153294,"prs":[{"n":153294,"state":"open","created":"2026-11-11T07:41:55Z"}],"created":"2026-11-11T07:41:55Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kinnuworks/ci-red-to-green/83009f03e864264524b8c18bed4ec5423680ab4b/docs/assets/banner.png","https://raw.githubusercontent.com/kinnuworks/ci-red-to-green/83009f03e864264524b8c18bed4ec5423680ab4b/docs/assets/desktop-pane-ready.png","https://raw.githubusercontent.com/kinnuworks/ci-red-to-green/83009f03e864264524b8c18bed4ec5423680ab4b/docs/assets/desktop-pane-done.png"],"videos":[],"x":["https://x.com/heykinnu/status/2120622591681695958"],"youtube":[],"thumb":"/hackathon/thumbs/ci-red-to-green.webp"},{"name":"total-recall","title":"Total Recall","summary":"Local-first continuity memory with an append-only ledger, signed checkpoints, verified rehydration, and source-cited recall.","disclosure":"","category":"memory","platforms":[],"maintainer":"dax8it","author":"dax8it","version":"1.3.0","requires_hermes":"","repo":"https://github.com/dax8it/total-recall","docs":"https://github.com/dax8it/total-recall/blob/fb5f332dfa150f882c5b27b4d71fbdd485b2657c/README.md","tools":["total_recall_search","total_recall_status","total_recall_checkpoint","total_recall_verify","total_recall_trust_verify","total_recall_learning_review","total_recall_rehydrate","total_recall_incidents","total_recall_source_ingest","total_recall_knowledge_query","total_recall_knowledge_freshness","total_recall_knowledge_status","total_recall_knowledge_synthesis_status","total_recall_knowledge_compiled_truth","total_recall_knowledge_graph_inspect","total_recall_knowledge_graph_timeline","total_recall_federation_query","total_recall_loop_inbox","total_recall_loop_start","total_recall_loop_note","total_recall_loop_verify","total_recall_loop_complete","total_recall_handoff_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153293,"prs":[{"n":153293,"state":"closed","created":"2026-11-11T07:40:35Z"}],"created":"2026-11-11T07:40:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-gauge","title":"hermes-gauge","summary":"Context gauge — a live ring/dash showing how full your agent's context window is, per session and topic, with a desktop plugin and tools (gauge_check, gauge_report, gauge_set_window, gauge_render, gauge_action). Runs fully local: no API key, no telemetry.","disclosure":"","category":"desktop","platforms":[],"maintainer":"SidelightAi","author":"SidelightAi","version":"0.6.1","requires_hermes":">=0.22.3","repo":"https://github.com/SidelightAi/hermes-gauge","docs":"https://github.com/SidelightAi/hermes-gauge","tools":["gauge_check","gauge_report","gauge_set_window","gauge_render","gauge_action"],"hooks":["post_llm_call","on_stream_delta","on_stream_end","api_request_error","post_api_request","post_compaction","on_session_reset","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153291,"prs":[{"n":153291,"state":"open","created":"2026-11-11T07:33:44Z"}],"created":"2026-11-11T07:33:44Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/SidelightAi/hermes-gauge/d0a7e5b86e6f30ca114cf44925549d1467e1ebbc/assets/banner.png","https://raw.githubusercontent.com/SidelightAi/hermes-gauge/d0a7e5b86e6f30ca114cf44925549d1467e1ebbc/assets/dashboard-demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-gauge.webp"},{"name":"the-millionaire-matrix","title":"the-millionaire-matrix","summary":"Every model family you have a seat for generates a candidate; all of them blind-score each other on a peer validity matrix anchored by real tests (hard and measured gates outrank the matrix), the field steps down round by round to one answer behind a human gate, and verified lessons carry into your next session.","disclosure":"","category":"tools","platforms":[],"maintainer":"bufirstrepo","author":"bufirstrepo","version":"0.4.0","requires_hermes":">=0.21.0","repo":"https://github.com/bufirstrepo/hybrid-critic-loop","docs":null,"tools":["critic_run","critic_matrix","critic_lessons","critic_ledger","critic_gate"],"hooks":["on_session_start","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153289,"prs":[{"n":153289,"state":"open","created":"2026-11-11T07:32:00Z"}],"created":"2026-11-11T07:32:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"timeline-replay","title":"Timeline Replay","summary":"Animated replays of recorded Hermes activity across the profiles you select: Social, Balanced and Linear paces with up to 16 profiles stacked on one screen, or nine canvas styles: Orbit (a turning ring where every event shoots out as a ray), Galaxy (a spiral with one arm per profile), Skyline (an isometric city of activity), Flow river (profiles to models to tools), Pulse (a heart-monitor trace per profile), Day clock (events at their time of day), Neural net (sessions firing into tools and models), Code rain and Ridgelines; tool calls, sessions, delegations, model/provider switches and token totals. Preview the private HTML player in Desktop or the Webapp (loop or play once), then export MP4 at 720p, 1080p, 1440p or 4K on the Hermes host, with live progress and an ETA learned on that host. Settings → Plugins holds per-user defaults; `hermes replay` adds the same options in the CLI plus a live terminal HUD.","disclosure":"observer hooks only (on_session_start, on_session_end, pre_llm_call, post_llm_call, post_tool_call, post_api_request, subagent_start, subagent_stop); they record metadata, never block or change a turn and never return directives. Prompts, tool arguments, results, command lines and credentials are discarded; session IDs are hashed. Reads outside its own data: the active profile's profile.yaml (display name only) and the state.db of this profile and of profile homes the operator explicitly enrolls, read-only (SQLite mode=ro, query_only) and metadata columns only. Writes only under <HERMES_HOME>/plugin-data/timeline-replay/. Exports show profile labels, timestamps, tool/model labels and totals, so choose neutral labels before sharing. Rendering starts only when the user asks: it runs the preinstalled HyperFrames CLI (Node.js, driving Chromium/chrome-headless-shell) and FFmpeg/ffprobe as argument-list subprocesses with a limited environment (no provider or bot credentials), as a background thread in the gateway process; HyperFrames telemetry and update checks are turned off. No network calls of its own, no telemetry, no installs (video setup only drafts a chat request for the user to review and send), no credentials. When the Desktop page and the plugin on the Hermes host differ, the page shows both versions, a button to Hermes' Capabilities → Plugins tab, and copy buttons for the host command and Hermes' install link (hermes://plugin/install?repo=firetussin/hermes-timeline-replay&force=1); nothing installs unless the user acts in Hermes, and the plugin never checks for updates online or downloads or replaces its own files. Readiness runs the configured HyperFrames CLI with --version (same limited environment) to report its version. Desktop uses the SDK surface only (routes, sidebar nav, settings page, SandboxedFrame, the MEDIA player, captureGatewayFileDownload).","category":"desktop","platforms":[],"maintainer":"firetussin","author":"firetussin","version":"0.5.1","requires_hermes":">=0.23.0","repo":"https://github.com/firetussin/hermes-timeline-replay","docs":"https://github.com/firetussin/hermes-timeline-replay/blob/10f8fc308a1831498d5d96436897d330364b236c/README.md","tools":["timeline_replay"],"hooks":["on_session_start","on_session_end","pre_llm_call","post_llm_call","post_tool_call","post_api_request","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153288,"prs":[{"n":153288,"state":"open","created":"2026-11-11T07:31:32Z"}],"created":"2026-11-11T07:31:32Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/firetussin/hermes-timeline-replay/10f8fc308a1831498d5d96436897d330364b236c/docs/media/banner.png","https://raw.githubusercontent.com/firetussin/hermes-timeline-replay/10f8fc308a1831498d5d96436897d330364b236c/docs/media/screenshots/01-replay-early-model-switch.png","https://raw.githubusercontent.com/firetussin/hermes-timeline-replay/10f8fc308a1831498d5d96436897d330364b236c/docs/media/screenshots/02-replay-mid-11-profiles.png","https://raw.githubusercontent.com/firetussin/hermes-timeline-replay/10f8fc308a1831498d5d96436897d330364b236c/docs/media/screenshots/03-replay-busy-all-lanes.png","https://raw.githubusercontent.com/firetussin/hermes-timeline-replay/10f8fc308a1831498d5d96436897d330364b236c/docs/media/screenshots/04-finale-totals-models.png"],"videos":[],"x":["https://x.com/firetussin/status/2120423528545538228"],"youtube":[],"thumb":"/hackathon/thumbs/timeline-replay.webp"},{"name":"screenscene","title":"ScreenScene","summary":"Narrated explainer video generator using screenshots, narration, and animation.","disclosure":"calls the ElevenLabs API over HTTPS and sends the narration text; runs manim and ffmpeg as subprocesses; writes temporary files and the final MP4 to ~/screenscene_output.","category":"tools","platforms":[],"maintainer":"solocreativeone","author":"solocreativeone","version":"0.2.0","requires_hermes":">=0.20.5","repo":"https://github.com/solocreativeone/screenscene","docs":"https://github.com/solocreativeone/screenscene#readme","tools":["screenscene_render"],"hooks":[],"middleware":[],"env":["ELEVENLABS_API_KEY"],"known_issues":"","state":"open","pr":153277,"prs":[{"n":153277,"state":"open","created":"2026-11-11T07:11:34Z"}],"created":"2026-11-11T07:11:34Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"embargo","title":"Embargo","summary":"Embargoed news stays embargoed. When your agent reads 'EMBARGOED UNTIL <time>', tool calls that carry that text are blocked until the clock passes; a live countdown stamp shows what is held, and the hold lifts by itself.","disclosure":"hooks pre_tool_call (blocks matching calls; fails closed while an embargo exists), post_tool_call and pre_llm_call (detect embargo headers in files read and messages), transform_llm_output (adds the card); stores label, lift time, file paths and hashed 6-word fingerprints plus hashed headline names and figures, never the raw release text (the one-line label, up to 80 characters, is plain text), in its data folder. Your model provider still sees the text you share; this is a send guard, not a privacy filter. Catches copies, quotes and reworded posts that repeat the headline names and figures; not a full paraphrase detector. Standard library only; it makes no network or model calls and reports nothing anywhere.","category":"tools","platforms":[],"maintainer":"inkandwire","author":"inkandwire","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/inkandwire/hermes-embargo","docs":"https://github.com/inkandwire/hermes-embargo#readme","tools":["embargo_add","embargo_status"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153274,"prs":[{"n":153274,"state":"open","created":"2026-11-11T07:05:37Z"}],"created":"2026-11-11T07:05:37Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/inkandwire/hermes-embargo/ee4605a7804b892c5b570ac173d7fa9b329364a8/docs/screenshots/embargo-card-states.png"],"videos":[],"x":["https://x.com/inkandwire/status/2120419940348080338"],"youtube":[],"thumb":"/hackathon/thumbs/embargo.webp"},{"name":"hermes-remote-hands","title":"Hermes Remote Hands","summary":"One Hermes brain on a server, hands on your own Mac. Over plain OpenSSH (e.g. on a tailnet), with no agent, memory or model on the Mac, it adds six tools: mac_computer_use drives the Mac's screen with the same actions, element indices, hard blocks and verify ladder as the built-in computer_use (through cua-driver, in the background), while computer_use keeps driving the server's own screen in the same chat; mac_shell runs commands; mac_file, mac_patch and mac_search read, edit and search code; mac_process runs dev servers in a private tmux server.","disclosure":"runs commands, reads and writes files, takes screenshots and sends input on the Mac named by the ssh_host setting, using the system ssh client and the key named in your SSH config (the plugin never reads, stores or copies keys). Every call goes through Hermes's approval gate with its own mac_* keys: commands, typed text and set_value are approved per exact text by default; credential stores, startup files, LaunchAgents, writes into .git or outside the configured project folders, and sensitive commands prompt every time; a pre_tool_call hook sends other tools' calls that mention the Mac or this plugin's code to a single-use approval; unattended runs fail closed (all of this while Hermes approvals are on, not in YOLO mode). No third-party network calls or telemetry. Background processes: an SSH ControlMaster for up to 30 s after the last call (socket under $HERMES_HOME/cache/ssh), one `ssh … cua-driver mcp` session per chat while mac_computer_use is in use, and mac_process jobs in `tmux -L hermes` on the Mac.","category":"tools","platforms":["linux","macos"],"maintainer":"Vishnu-Aithal","author":"Vishnu-Aithal","version":"0.5.2","requires_hermes":">=0.23.0","repo":"https://github.com/Vishnu-Aithal/hermes-remote-hands","docs":"https://github.com/Vishnu-Aithal/hermes-remote-hands/tree/f807ba317cc55ff8b6cbf7668f243f98fb9218b4#readme","tools":["mac_shell","mac_file","mac_patch","mac_search","mac_process","mac_computer_use"],"hooks":["pre_tool_call","on_session_finalize","on_session_reset","post_compaction"],"middleware":[],"env":[],"known_issues":"Uses private Hermes internals (tools.computer_use tool/schema/cua_backend/cua_backend_session, tools.approval.request_tool_approval and check_all_command_guards) so mac_computer_use behaves exactly like computer_use. It checks them before use and fails closed with a clear message if a release renames one; re-run the plugin's self-tests after updating Hermes.; The Mac needs Remote Login, Command Line Tools (python3, used to resolve paths safely), tmux and ripgrep; projects under ~/Documents, ~/Desktop or ~/Downloads also need 'Allow full disk access for remote users'. Screen control needs cua-driver (verified 0.44.0; other versions log a warning) with its permissions granted at the Mac.; The tools appear only after the ssh_host and home settings are set. The Mac must be awake and unlocked for screen control; there is no detection of the user typing at the same moment.","state":"open","pr":153270,"prs":[{"n":153270,"state":"open","created":"2026-11-11T06:56:51Z"}],"created":"2026-11-11T06:56:51Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/Vishnu_Aithal/status/2120409383104614706"],"youtube":[],"thumb":null},{"name":"carnet","title":"Carnet","summary":"A memory that stays bounded: core rules always in mind, facts recalled only when relevant, long sheets read on demand, and a memory graph inside the app.","disclosure":"","category":"memory","platforms":["macos","linux"],"maintainer":"404BugX","author":"404BugX","version":"0.9.1","requires_hermes":">=0.23.0","repo":"https://github.com/404BugX/carnet","docs":null,"tools":["remember","recall","read_fiche","forget","note","note_close"],"hooks":["prefetch","queue_prefetch","sync_turn","on_pre_compress","on_session_switch","on_profile_created","recall_status"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153266,"prs":[{"n":153266,"state":"open","created":"2026-11-11T06:51:29Z"}],"created":"2026-11-11T06:51:29Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/404BugX/carnet/45cf3478043baa3ab4811fcef99b315822e80916/docs/screenshots/facts.png","https://raw.githubusercontent.com/404BugX/carnet/45cf3478043baa3ab4811fcef99b315822e80916/docs/screenshots/graph.png","https://raw.githubusercontent.com/404BugX/carnet/45cf3478043baa3ab4811fcef99b315822e80916/docs/screenshots/onboarding.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/carnet.webp"},{"name":"hermes-rehearsal","title":"Rehearsal","summary":"Rehearse SQLite customer merges, inspect exact changes and conflicting identities, then apply human-approved verified plans.","disclosure":"reads only the SQLite databases you connect (via /rehearsal add or the Desktop/dashboard page) and sends their customer and order rows to the configured model when the agent inspects them; the agent can only rehearse on an in-memory copy, and the real database is changed only by /rehearsal apply in a local CLI/TUI/Desktop session or the Apply button on the plugin page, after you confirm the exact plan digest. Plans and receipts are stored in the plugin's data folder.","category":"tools","platforms":[],"maintainer":"MugunthPerumal","author":"Mugunth007","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Mugunth007/hermes-rehearsal","docs":null,"tools":["rehearsal_demo","rehearsal_databases","rehearsal_inspect","rehearsal_propose","rehearsal_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153263,"prs":[{"n":153263,"state":"open","created":"2026-11-11T06:46:45Z"}],"created":"2026-11-11T06:46:45Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Mugunth007/hermes-rehearsal/0abffaa94b1623546977b9b37a7abf0862ad700c/docs/screenshots/local-review.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-rehearsal.webp"},{"name":"freshness-sidecar","title":"Freshness Sidecar","summary":"Notes bound to a source file: before every turn each note's file is re-hashed, so the agent is told a fact is STALE (or MISSING) the moment its file changes, instead of confidently repeating an outdated value. /fresh add|list|check|forget works from the CLI and messaging gateways without the model; a freshness_note tool exposes the same actions to the model. Runs alongside any memory provider (does not take the memory.provider slot).","disclosure":"reads explicitly registered local files within the session's workspace to compute bounded SHA-256 checks (1 MiB cap; symlinks, files outside the workspace and credential-looking files are refused). Stores note text, paths and hashes in profile-scoped plugin data. Selected notes and status snapshots are added to the user turn sent to the configured model and persist in Hermes history; forgetting a note stops future recall but does not erase copies already in history. FRESH means matching bytes, not verified truth. No network calls, subprocesses, background services, credential access or self-update.","category":"tools","platforms":[],"maintainer":"neweraXX","author":"neweraXX","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/neweraXX/freshness-sidecar","docs":"https://github.com/neweraXX/freshness-sidecar#readme","tools":["freshness_note"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153260,"prs":[{"n":153260,"state":"open","created":"2026-11-11T06:39:48Z"}],"created":"2026-11-11T06:39:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"conductor","title":"Conductor","summary":"Hermes leads coding agents on your machines: any terminal coding agent, T3 Code threads, and Orca terminals. It starts a run, waits with no model, and puts one message into the chat that asked when the run finishes, errors, stalls, or needs an approval; T3 and Orca runs can be steered and stopped. It can run 10+ agents at once, one ping each. Two skills: brief researches, asks one round of questions and writes the brief; lead runs the work and checks each report.","disclosure":"every start and steer goes through Hermes's approval gate (pre_tool_call approve); Hermes can launch only the built-in agents on this machine unless the owner lists SSH hosts and extra commands in plugins.entries.conductor.settings (both empty by default); runs the agent, git status, and ssh and tmux for a listed host (arguments only, no shell strings from user text, never an approval-bypass flag); children get a minimal environment plus only what that agent needs; network is only ssh to listed hosts; keeps one wait thread per run and a detached agent process or tmux window; writes run records to its plugin data folder and event files, exit codes and logs under ~/.conductor; reads and stores no credentials; no telemetry. Finish messages on a messaging gateway need plugins.entries.conductor.allow_gateway_injection: true.","category":"tools","platforms":["linux","macos"],"maintainer":"capthvnsen","author":"capthvnsen","version":"0.4.3","requires_hermes":">=0.22.0","repo":"https://github.com/capthvnsen/hermes-conductor","docs":"https://github.com/capthvnsen/hermes-conductor/blob/56b60f0b0bff8cec24bfd73403bce770f9d8a44f/README.md","tools":["conductor_doctor","conductor_run","conductor_mode","conductor_read","conductor_peek","conductor_wait","conductor_steer","conductor_stop","conductor_watch"],"hooks":["transform_llm_output","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153257,"prs":[{"n":153257,"state":"open","created":"2026-11-11T06:35:32Z"}],"created":"2026-11-11T06:35:32Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/capthvnsen/hermes-conductor/56b60f0b0bff8cec24bfd73403bce770f9d8a44f/assets/banner.png","https://raw.githubusercontent.com/capthvnsen/hermes-conductor/56b60f0b0bff8cec24bfd73403bce770f9d8a44f/assets/workflow.jpg","https://raw.githubusercontent.com/capthvnsen/hermes-conductor/56b60f0b0bff8cec24bfd73403bce770f9d8a44f/assets/demo-run.jpg","https://raw.githubusercontent.com/capthvnsen/hermes-conductor/56b60f0b0bff8cec24bfd73403bce770f9d8a44f/assets/demo-app.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/conductor.webp"},{"name":"berrys","title":"Berrys AI","summary":"Turn one product photo into on-brand listing images, campaign visuals and short product videos through Berrys AI's hosted MCP server (Streamable HTTP at https://app.berrys.io/api/mcp, OAuth sign-in, no keys in config). The agent plans the work on Berrys' visual canvas — hero, lifestyle and detail shots for a storefront, coordinated image sets and copy variants for a campaign, or a storyboarded multi-shot clip that keeps the product identical across cuts by seeding each shot from the previous frame — and the results stay on a shared canvas the user can edit, undo or restore. Uses Berrys' curated multi-model image and video stack, so there is no provider key to configure. Bundles the Berrys workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Berrys' hosted server (app.berrys.io) and acts on the user's own Berrys account and credits; the tool set and the playbooks it loads are served by that server at runtime and are not covered by the pinned sha. Generation spends Berrys credits: the server quotes a price first and every paid generation requires explicit approval in the conversation before it runs. Nothing is published to a marketplace or storefront on the user's behalf — assets are produced on the canvas for the user to download or use. The server signs in with OAuth (Berrys account). The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"BerryAILABS","author":"GeneralBerrys","version":"0.3.5","requires_hermes":">=0.21.6","repo":"https://github.com/BerryAILABS/berrys-mcp","docs":"https://github.com/BerryAILABS/berrys-mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153246,"prs":[{"n":153246,"state":"open","created":"2026-11-11T06:14:07Z"}],"created":"2026-11-11T06:14:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"flowcanvas","title":"Arachne Flow","summary":"Visual workflow canvas for Hermes Desktop: wire Hermes tools, MCP tools and LLM calls into typed graphs with conditions, bounded loops, JSON/list transforms, per-step caching and media previews (image, audio, video and an in-place 3D model viewer). Build with Hermes edits a graph from a description; seven agent tools and /flow list, build, run and inspect the same saved flows; twelve starter templates and user-saved templates.","disclosure":"tool nodes execute through ctx.dispatch_tool on a background thread with Hermes' own tools, credentials and approvals (commands held for manual approval are denied or time out on the canvas and under cron); shell, file-writing, browser, session-mutating and known code-running MCP tools are blocked by name by default, an explicit allow_tools setting can unblock them, and other MCP tools are not blocked; provider, LLM and media-generation calls can cost money, and Build with Hermes sends the prompt, node catalog and current flow to the active model before any run; local files the user selects or drops are copied into the plugin data folder and passed to the tools they are wired to, possibly to remote providers as data URLs; media URLs in tool output are downloaded with Hermes' SSRF-safe client (every redirect hop checked, 200 MB cap); user regexes in If/Switch run in an isolated Python subprocess killed after 0.5 s; the Send message node uses Hermes' official messaging bridge only after a per-recipient consent bound to flow, node and target plus a separate file consent, never caches or retries, and reports timeouts as unconfirmed; a local HMAC key (messaging-secret) signs that consent; flows, runs, uploads and cache live under $HERMES_HOME/plugin-data/flowcanvas/; the Desktop UI uses only @hermes/plugin-sdk except one argument-free window.hermesDesktop.openWindow() call for the optional second window (no SDK verb exists; the button is hidden when the bridge is absent); no stored provider credentials, no telemetry, no self-update.","category":"desktop","platforms":[],"maintainer":"EmotionalThrifty","author":"EmotionalThrifty","version":"1.0.0","requires_hermes":">=0.22","repo":"https://github.com/EmotionalThrifty/arachne-flow","docs":"https://github.com/EmotionalThrifty/arachne-flow#readme","tools":["flow_list","flow_get","flow_node_types","flow_apply","flow_run","flow_status","flow_template_save"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153240,"prs":[{"n":153240,"state":"open","created":"2026-11-11T06:07:13Z"}],"created":"2026-11-11T06:07:13Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/EmotionalThrifty/arachne-flow/46db25db1a7ef13e2adbf12777b7c06941df0895/docs/screenshots/workflow-image-cache.png","https://raw.githubusercontent.com/EmotionalThrifty/arachne-flow/46db25db1a7ef13e2adbf12777b7c06941df0895/docs/screenshots/3d-viewer.png","https://raw.githubusercontent.com/EmotionalThrifty/arachne-flow/46db25db1a7ef13e2adbf12777b7c06941df0895/docs/screenshots/build-with-hermes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flowcanvas.webp"},{"name":"agent-pool","title":"Agent Pool","summary":"Friends form a pool of agents sharing repos — bundles propagate BLAKE3-verified and end-to-end encrypted over Iroh-over-Tor only; tasks, claims and approvals coordinate through the Hermes gateway (e.g. Discord), and a prompt-injection audit gate refuses any bundle that tries to hijack your agent.","disclosure":"","category":"tools","platforms":[],"maintainer":"maxcurrent420","author":"maxcurrent420","version":"2.8.0","requires_hermes":">=0.23.0","repo":"https://github.com/maxcurrent420/agent-pool","docs":null,"tools":["pool_status","pool_report_usage","pool_pane_report"],"hooks":[],"middleware":[],"env":["AGENT_POOL_ALLOWED_USERS","AGENT_POOL_MAINTAINER_DISCORD_USER_ID","AGENT_POOL_MAINTAINER_BOT_DISCORD_USER_ID","AGENT_POOL_TASK_ALLOCATIONS","AGENT_POOL_WORKTREE_ROOT","AGENT_POOL_DATA_DIR","HERMES_IROH_RELAY","HERMES_IROH_STATE_DIR","HERMES_IROH_SEND_TIMEOUT","HERMES_IROH_FETCH_TIMEOUT"],"known_issues":"","state":"open","pr":153225,"prs":[{"n":153225,"state":"open","created":"2026-11-11T05:46:44Z"}],"created":"2026-11-11T05:46:44Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/maxcurrent420/agent-pool/5b973a5c3dfd8633840bb438208211da1c78f3cf/media/pane.png","https://raw.githubusercontent.com/maxcurrent420/agent-pool/5b973a5c3dfd8633840bb438208211da1c78f3cf/media/injection-blocked.png"],"videos":["https://raw.githubusercontent.com/maxcurrent420/agent-pool/5b973a5c3dfd8633840bb438208211da1c78f3cf/media/agentpool-hackathon.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agent-pool.webp"},{"name":"capalis","title":"Capalis","summary":"Describe a job in one sentence, and Capalis sets it up, runs it and checks it really happened. It finds your channels and repository by name, picks the right tool for each step and does a practice run that sends nothing. It runs only after you approve that exact version, from your phone on Telegram if you like. For example, a bug posted in Discord or Slack becomes one GitHub issue, a Slack notice and a reply to the reporter, who hears back again when the issue is closed. Every write is read back, nothing is done twice, and the job stops itself when a token, permission or tool changes.","disclosure":"","category":"automation","platforms":[],"maintainer":"Femtech-web","author":"Femtech-web","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/Femtech-web/Capalis","docs":"https://github.com/Femtech-web/Capalis#readme","tools":["capalis_status","capalis_setup","capalis_capabilities","capalis_recipe","capalis_run","capalis_contract","capalis_pause"],"hooks":["pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"Reports from Discord or Slack reach Capalis only after the report channel and the reporters are added to Hermes's gateway settings. /capalis setup prints the exact hermes config set commands.; Waiting jobs, schedules and alerts need the Hermes gateway running (hermes gateway install).; Telegram is used for approvals and alerts. Telegram and Slack-webhook posts can't be read back, so they are marked unverifiable.","state":"open","pr":153221,"prs":[{"n":153221,"state":"open","created":"2026-11-11T05:40:51Z"}],"created":"2026-11-11T05:40:51Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/banner.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/telegram-approval-request.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/discord-ack-and-fixed.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/slack-notice.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/github-issue-closed.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/evidence.png","https://raw.githubusercontent.com/Femtech-web/Capalis/13b2dde6efce5fa4ad54f50bc4a882a583c6c3ff/docs/assets/slack-thread-reply.png","https://raw.githubusercontent.com/Femtech-web/Capalis/78843af2e15812fc391a74fe1cbcf2ac82a03de1/docs/assets/telegram-approval-request.png"],"videos":[],"x":["https://x.com/DefiPreacherr/status/2120469735636615481"],"youtube":[],"thumb":"/hackathon/thumbs/capalis.webp"},{"name":"spotify-desktop","title":"Spotify Desktop","summary":"Spotify Connect remote for Hermes Desktop: a status-bar mini player (now playing, transport, volume, device transfer) plus a picker popover with playlists, track search and the queue. Reuses the Hermes Spotify login; the plugin never handles credentials.","disclosure":"","category":"desktop","platforms":[],"maintainer":"amitamit10","author":"amitamit10","version":"0.1.2","requires_hermes":">=0.23","repo":"https://github.com/amitamit10/hermes-spotify-desktop","docs":"https://github.com/amitamit10/hermes-spotify-desktop","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153211,"prs":[{"n":153211,"state":"closed","created":"2026-11-11T05:19:48Z"}],"created":"2026-11-11T05:19:48Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"genflick","title":"Genflick","summary":"Connect Hermes to Genflick creative and business workspaces for films, series, music videos, ads and marketing, with email-link sign-in and host-owned OAuth.","disclosure":"tool calls send your prompts, project inputs and media requests to Genflick's hosted MCP server at genflick.com (which may pass work to its own downstream providers), its tools can spend from your Genflick account and publish ads, social posts and outreach; the package sets `trust: full`, so Hermes does not prompt per tool and Genflick enforces its own approvals (credit confirmation above the account's threshold, exact-post approval before publishing, Stop), sign-in needs a hand-added `mcp_servers.genflick` OAuth entry in config.yaml, and the bundled skill may read the Genflick sign-in email through your connected mailbox tools and open its link.","category":"tools","platforms":[],"maintainer":"buildngrowsv","author":"buildngrowsv","version":"0.1.1","requires_hermes":">=0.23.1","repo":"https://github.com/buildngrowsv/genflick-hermes","docs":"https://github.com/buildngrowsv/genflick-hermes/blob/96ff116f0fcad08caa75940c46dd741bf16ee6ea/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Hermes v0.23.1 requires the native mcp_servers OAuth entry in config.example.yaml alongside the portable plugin; the package alone does not complete sign-in.; Connection, discovery and saved-profile/project reads were verified in Hermes. Creative/business execution, cancellation/recovery and monetization are separate workflow qualification; no talent hiring, payments, payouts or earnings operation is promised.","state":"open","pr":153208,"prs":[{"n":153208,"state":"open","created":"2026-11-11T05:16:16Z"}],"created":"2026-11-11T05:16:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"receipt-printer","title":"Receipts","summary":"Your agent says it's done. Get the receipt. Receipts detects completion and action claims in agent answers (\"tests pass\", \"pushed\", \"task done\") and checks each one against observed evidence: tool calls, file digests, test runs after the version, and git remote readbacks. It prints a receipt with a verdict per claim (supported, contradicted, unverified, not evaluable), where missing evidence is unverified, never called a lie. Output is a PNG, an ASCII receipt, a Desktop pane, or an optional USB thermal printer. Users configure kits, fields, five styles (thermal, minimal-mono, bold, ASCII, dot-matrix), paper width, header/footer/logo, and automatic triggers (on demand, task/goal completion, unattended session end; exceptions-only by default). The verdict block cannot be hidden or recolored by any setting.","disclosure":"reads the selected profile's state.db conversations and tool arguments read-only, and stores tool names, argument hashes, coarse results and generated images under its plugin-data directory. No model calls or telemetry. Receipts runs checks itself only when a task manifest asks for them: it re-runs the user's own test command (a trusted argv from the manifest, never a shell string or the agent's text; 120 s timeout; output discarded; file bytes must match before and after), hashes the named files, and runs read-only git (rev-parse, rev-list) against an explicitly named local bare remote, with no fetch. Chat or printer delivery only when the user configures that destination; the USB printer needs explicit device IDs and a separately installed python-escpos.","category":"desktop","platforms":[],"maintainer":"thedavidmurray","author":"thedavidmurray","version":"0.2.0","requires_hermes":">=0.21.7","repo":"https://github.com/thedavidmurray/hermes-receipts","docs":"https://github.com/thedavidmurray/hermes-receipts","tools":[],"hooks":["post_tool_call","transform_llm_output","pre_tool_call","post_llm_call","kanban_task_completed","kanban_task_blocked","on_session_end","subagent_stop","agent_loop_stopped"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153205,"prs":[{"n":153205,"state":"open","created":"2026-11-11T05:08:41Z"}],"created":"2026-11-11T05:08:41Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/thedavidmurray/hermes-receipts/2eb05e478e51d3c9771737f6c9943b3084d82eb1/assets/kits/contact-sheet.png","https://raw.githubusercontent.com/thedavidmurray/hermes-receipts/2eb05e478e51d3c9771737f6c9943b3084d82eb1/assets/custom/shop-58mm-dot-matrix.png","https://raw.githubusercontent.com/thedavidmurray/hermes-receipts/2eb05e478e51d3c9771737f6c9943b3084d82eb1/assets/integration/task-before.png","https://raw.githubusercontent.com/thedavidmurray/hermes-receipts/2eb05e478e51d3c9771737f6c9943b3084d82eb1/assets/integration/task-after.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/receipt-printer.webp"},{"name":"spoonmaster","title":"Spoonmaster","summary":"Compare restaurants using local recommendations, venue facts, and optional private tastes.","disclosure":"","category":"tools","platforms":[],"maintainer":"gueysito","author":"gueysito","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/gueysito/spoonmaster","docs":null,"tools":["spoon_dine","spoon_research","spoon_present","spoon_onboard","spoon_ledger","spoon_profile","spoon_feedback","spoon_companions"],"hooks":["on_session_reset","on_session_finalize","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Research time depends on the host model and sources. A long conversation ended before presenting one result.","state":"open","pr":153203,"prs":[{"n":153203,"state":"open","created":"2026-11-11T05:06:16Z"}],"created":"2026-11-11T05:06:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rekindra","title":"Rekindra","summary":"Recover forgotten local files and rebuild them as source-backed original animated worlds. Rekindra reads a folder you name, recovers images and text (including ZIP and PDF text), keeps recovered evidence separate from the agent's interpretation, builds a 3D scene, compares its preview with the source, and holds export until flagged differences are fixed or answered with a recorded reason.","disclosure":"the plugin makes no network calls of its own. It reads only the folder you name, read-only, and writes only under its Hermes plugin-data directory. Tool results, including recovered text, go to your active Hermes model like any tool result, and rekindra_plan sends selected images to that model only with send_images=true. It starts short-lived, killable child processes without a shell: an isolated Python reader for images and PDFs, and a headless installed Chrome, Edge or Chromium for previews, with a 45 second limit. It stores no credentials and leaves no background processes.","category":"tools","platforms":[],"maintainer":"jakeefr","author":"jakeefr","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/jakeefr/rekindra","docs":"https://github.com/jakeefr/rekindra/blob/cd6a29fb9f06e892ff669d1edc249e31088763b7/README.md","tools":["rekindra_inspect","rekindra_recover","rekindra_status","rekindra_reconstruct","rekindra_plan","rekindra_build","rekindra_compose","rekindra_create_world","rekindra_preview","rekindra_export","rekindra_revise_world"],"hooks":[],"middleware":[],"env":[],"known_issues":"PDF text is read up to 32 pages and there is no OCR, so a scanned or image-only PDF gives no text.; Worlds built only from notes have no tamper check yet, because the player's integrity check hashes embedded images.; If some selected images have a reference and others do not, the world still builds and the unreferenced image ships with no provenance record.; Palette drift compares horizontal colour bands only. It can flag a band changed on purpose and cannot judge objects, composition or motion.; After three revise and preview cycles that still flag, export is allowed without reasons and the warnings are recorded as unresolved.; End-to-end preview and WebM export are verified on Windows. macOS and Linux pass the core test suite in CI but have not been run end to end in Hermes.","state":"open","pr":153202,"prs":[{"n":153202,"state":"open","created":"2026-11-11T05:05:56Z"}],"created":"2026-11-11T05:05:56Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jakeefr/rekindra/cd6a29fb9f06e892ff669d1edc249e31088763b7/assets/rekindra-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rekindra.webp"},{"name":"secret-remediation","title":"secret-remediation","summary":"Fingerprint leaked credentials in the Hermes workspace, logs, and session history. Redacts them, blocks the turn, and gives text-only rotation advice.","disclosure":"","category":"tools","platforms":[],"maintainer":"AdrianTanz","author":"AdrianTanz","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/AdrianTanz/hermes-secret-remediation","docs":"https://github.com/AdrianTanz/hermes-secret-remediation","tools":[],"hooks":["pre_llm_call","pre_tool_call","transform_tool_result","transform_terminal_output","transform_llm_output"],"middleware":[],"env":[],"known_issues":"After a block, the plugin tries to replace credential text in state.db messages.display_metadata.withheld_prompt, state.db session_admissions.payload_json, and spawn-ledger.json argv with a fingerprint placeholder. payload_digest is recomputed, so replaying the original request is refused. That is expected. A failed attempt is logged and the plaintext can remain. Hermes can write the value again after the short retry window.; Purge writes by default, including shell history outside Hermes and chat history. Opt out with --no-sessions, --no-messages, --no-shell-history, --no-backups, --no-vacuum, including on scan --purge. A blocked-turn /retry reads withheld_prompt. The content, api_content, tool_calls, and display_metadata rewrite is separate, so a replayed tool call sends the placeholder. payload_digest is recomputed and an original replay is refused. VACUUM is skipped and named incomplete when state.db or its WAL is open. backups/pre-update-*.zip and backups/pre-migration-*.zip are counted and not rewritten. Provider logs, Time Machine, and cloud sync are not cleared. Close other shells first, or run history -c, or a running shell can write history back on exit. History mtime is kept.; Detects known token prefixes, PEM blocks including a BEGIN line with no END, equals-assignments named password, api_key, or secret (8 or more characters), URL userinfo for a fixed scheme list, and Authorization Bearer tokens. Unlabelled AWS secrets are detected only when the 40-character token contains + or / and is not hex, and that shape is not registered with Hermes's redactor. Encoded, split, Authorization Basic, colon assignments, and all-hex 40-character strings can pass.; The scheduled scan prints only new fingerprints. A clean tick is silent.","state":"open","pr":153197,"prs":[{"n":153197,"state":"open","created":"2026-11-11T04:49:47Z"}],"created":"2026-11-11T04:49:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stageglass","title":"Stageglass","summary":"Secret-safe ON AIR overlay of a live Hermes session for screen sharing and OBS. Serves a page on 127.0.0.1 only, reads the current message, tool name, tool arguments, and approval text in memory to redact them, and holds the page when redaction is not sure. No network egress, no telemetry, no credential files, and no shell.","disclosure":"","category":"desktop","platforms":[],"maintainer":"Umunnakwe Emmanuel","author":"Benito3262","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/Benito3262/stageglass","docs":"https://github.com/Benito3262/stageglass","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"Verified on Linux with Hermes 0.23.1. macOS and Windows load the same code and were not exercised here.; The last redacted frame stays up after a turn, because on_session_end also fires at the end of every turn. /onair off or /onair hold clears it.; A bare 64-character hex string, an unfinished PEM block, or a near-miss seed phrase holds the whole feed.","state":"open","pr":153194,"prs":[{"n":153194,"state":"open","created":"2026-11-11T04:43:13Z"}],"created":"2026-11-11T04:43:13Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermis","title":"H.E.R.M.I.S","summary":"Disclosure: runs a background WebSocket server on 127.0.0.1 (ephemeral port + session token) in a daemon thread; launches a bundled transparent always-on-top Electron overlay as a detached process via npm (first run runs `npm ci`, downloading pinned npm packages including the Electron binary; nothing binary is committed; disable with HERMIS_OVERLAY_AUTOSTART=0); the overlay loads https images and sandboxed artifact scripts from cdnjs/jsdelivr/unpkg only; the overlay connects to the local Hermes gateway (control pipe for a short-lived session ticket under your identity, then the loopback /api/ws) and only listens to voice.status and wake.detected; moves, resizes and focuses real windows via Win32 (user32) and launches apps without a shell (Store apps via a read-only powershell Get-StartApps lookup + explorer.exe shell:AppsFolder); copies html/svg blocks from replies to the overlay via post_llm_call while Autopilot is on; the setup checklist reads config.yaml read-only and copies commands to the clipboard on click (never runs them); optional camera gestures (/hermis gestures on) stay off by default, run only during Autopilot Mode, process frames locally by MediaPipe (never rendered, stored or sent; with no surfaces on screen they minimize/switch real windows, never close apps), show a green dot while the camera is on, and download the gesture model once from storage.googleapis.com (pinned version, SHA-256 verified) into the plugin data dir; writes state.json, overlay.json and overlay.log to the plugin data dir; Windows only. Autopilot Mode turns your Windows desktop into an agent OS: Hermes answers by voice, draws floating data surfaces over your real desktop (the agent sends data, not HTML) and arranges your real windows. Disclosure extras: while Autopilot is on, the titles of up to 15 open desktop windows are sent to the model provider on every turn; launch_app opens apps by name only (shells, interpreters and paths are rejected, and with arguments or outside a small safe allowlist Hermes asks the user for confirmation first — a browser with exactly one http/https URL is the only exception); every child process (npm, the Electron overlay, launched apps, the read-only Get-StartApps lookup) inherits only an allowlisted minimal environment, never provider API keys.","disclosure":"","category":"desktop","platforms":["windows"],"maintainer":"gabogabucho","author":"gabogabucho","version":"0.1.0","requires_hermes":">=0.22","repo":"https://github.com/gabogabucho/H.E.R.M.I.S","docs":"https://github.com/gabogabucho/H.E.R.M.I.S#readme","tools":["autopilot","render_surface","close_surface","list_surfaces","layout_windows","launch_app"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153192,"prs":[{"n":153192,"state":"open","created":"2026-11-11T04:42:00Z"}],"created":"2026-11-11T04:42:00Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shadow","title":"Shadow","summary":"Try a model on your real Hermes conversations with blind judging in both orders and switch models with undo, warning first if a saved test does not back the switch. Reads recent saved conversation turns, context, and working-folder metadata from the active profile. Replays read files inside their original working folders and block writes, sends, and commands. Replays, judging, and setup checks spend your provider tokens through Hermes. Optional web lookups use Hermes web tools and are on by default. Stores scrubbed test records and switch state in the plugin's profile-local data folder. The live isolation check reads memory and fingerprints profile data locally. It compares credential-file metadata without reading their contents. To show which models are signed in it checks credential env var names (not values) and uses only the logged-in flag from Hermes's read-only Codex login-status check; credentials are never printed or stored. Makes no network calls of its own. No telemetry. Switching writes model defaults through Hermes config commands. Tests run in background Hermes controllers.","disclosure":"","category":"models","platforms":["macos","linux"],"maintainer":"akinduroifedayo","author":"akinduroifedayo","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/akinduroifedayo/shadow","docs":"https://github.com/akinduroifedayo/shadow","tools":["shadow_read","shadow_search","shadow_web","shadow_clarify","shadow_trial_step","shadow_setup_check"],"hooks":["subagent_start","subagent_stop","pre_llm_call","pre_tool_call","pre_api_request","post_api_request","api_request_error","post_tool_call","post_compaction","on_session_start","on_session_end","pre_command"],"middleware":["tool_execution","llm_execution","llm_request"],"env":[],"known_issues":"","state":"open","pr":153955,"prs":[{"n":153955,"state":"open","created":"2026-11-11T21:01:10Z"},{"n":153188,"state":"open","created":"2026-11-11T04:36:23Z"}],"created":"2026-11-11T04:36:23Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/desktop-home.png","https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/model-picker.png","https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/judging-rule.png","https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/verdict.png","https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/side-by-side.png","https://raw.githubusercontent.com/akinduroifedayo/shadow/38173bc9c696df3b1f87b5b9b60ccecd36a260ab/docs/images/no-verdict.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/shadow.webp"},{"name":"thought-we-wouldnt-notice","title":"Thought We Wouldn't Notice","summary":"Insert a quarter, get a tiny original space-bug shooter, and a wry \"thought we wouldn't notice\" line. A whole-message quarter is swallowed by pre_llm_call so Hermes skips the model and replies \"Thought we wouldn't notice. But we did.\" Hermes Desktop opens the Top Sails cabinet over the window; Esc dismisses it. The dashboard tab has the same cabinet and a Play button.","disclosure":"no third-party network calls, no shell, no credentials, and no telemetry; the quarter ledger and high score are stored only under the plugin's own data directory; pre_llm_call blocks the model turn for matching messages only.","category":"desktop","platforms":[],"maintainer":"noblebrown-69","author":"noblebrown-69","version":"0.1.7","requires_hermes":"","repo":"https://github.com/noblebrown-69/hermes-thought-we-wouldnt-notice","docs":"https://github.com/noblebrown-69/hermes-thought-we-wouldnt-notice/blob/9816f3447cbb8428b2c7fc80d8e46a1a365fb05d/README.md","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153187,"prs":[{"n":153187,"state":"open","created":"2026-11-11T04:36:06Z"}],"created":"2026-11-11T04:36:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/noblebrown-69/hermes-thought-we-wouldnt-notice/9816f3447cbb8428b2c7fc80d8e46a1a365fb05d/assets/catalog.jpg","https://raw.githubusercontent.com/noblebrown-69/hermes-thought-we-wouldnt-notice/9816f3447cbb8428b2c7fc80d8e46a1a365fb05d/assets/banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/thought-we-wouldnt-notice.webp"},{"name":"language-lock","title":"Language Lock","summary":"Your agent answers in your language, and stays there (hermes-agent#130117). Learns your language from your recent messages or a setting, detects each reply's language without a model (20 languages, by script and common words, ignoring code and links), and after a reply drifts tells the agent to switch back on the next turn. Asking for a translation on purpose is respected. /lang shows drifts caught and corrected. No model calls, nothing stored.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/language-lock","docs":"https://github.com/salch-cred/language-lock","tools":[],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153186,"prs":[{"n":153186,"state":"open","created":"2026-11-11T04:35:36Z"}],"created":"2026-11-11T04:35:36Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"deja-fix","title":"Deja Fix","summary":"Stops the agent from putting back code that already failed. Every version of every file it writes in a session is fingerprinted and judged by the next test or build run, or by the user saying \"still broken\". An edit that would recreate a failed version is stopped once, naming when it failed and why; a second try goes through. Catches the same code reached by different edits, which Hermes' identical-call guard can't. /deja shows what is tracked. No model calls.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/deja-fix","docs":"https://github.com/salch-cred/deja-fix","tools":[],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153185,"prs":[{"n":153185,"state":"open","created":"2026-11-11T04:35:32Z"}],"created":"2026-11-11T04:35:32Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"calm-mode","title":"Calm Mode","summary":"When you get frustrated, your agent slows down. Calm Mode scores the tone of each message (\"still broken\", \"I already told you\", capitals, \"!!\", the same message twice); frustration builds and fades. Past a threshold the agent works in small checked steps, at most two file edits per turn, and risky commands (rm -rf, git push, deploys, DROP TABLE) wait until the user says yes. /calm shows the level and forces it on or off. No model calls, nothing stored.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/calm-mode","docs":"https://github.com/salch-cred/calm-mode","tools":[],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153184,"prs":[{"n":153184,"state":"open","created":"2026-11-11T04:35:26Z"}],"created":"2026-11-11T04:35:26Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crash-recovery","title":"Crash Recovery","summary":"Durable, hash-chained tool-call journal that blocks protected actions while a previous outcome is unknown, including after a crash or a new session. Operator reconciliation releases the recovery gate; actions are never automatically replayed.","disclosure":"after any non-read-only tool call fails, errors or is interrupted, blocks every tool except the configured read-only list (default read_file, search_files) until the operator reconciles the action with the plugin's operator_cli.py; stores tool/session metadata, argument and result hashes, a local integrity checkpoint and operator evidence under the active profile's plugin-data directory and never auto-prunes; serializes protected calls per profile; no network, shell execution, credential reads or background tasks in the plugin itself; optional demos spawn and force-kill owned local workers, and the native demo opens a temporary loopback provider and starts/stops an isolated Hermes CLI/gateway.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"sammy-XXIV","author":"sammy-XXIV","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/sammy-XXIV/hermes-crash-recovery","docs":"https://github.com/sammy-XXIV/hermes-crash-recovery#readme","tools":["crash_recovery_status","crash_recovery_verify"],"hooks":["pre_tool_call"],"middleware":["tool_execution"],"env":[],"known_issues":"V1 serializes protected calls per profile; nested protected tools and concurrent protected calls can be refused.; A rejected approval or guardrail decision can conservatively require operator reconciliation.; Local tamper detection does not protect against complete replacement of both the journal and checkpoint; retain independent checkpoints when that threat matters.","state":"open","pr":153183,"prs":[{"n":153183,"state":"open","created":"2026-11-11T04:33:25Z"}],"created":"2026-11-11T04:33:25Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"antigravity-acp-provider","title":"Hermes Antigravity ACP","summary":"Independent Hermes provider for Google's official Antigravity ACP server.","disclosure":"runs the Google server as a child process; authentication and third-party network access occur through that runtime. Supported native file edits and commands are automatically approved after plugin checks and may bypass Hermes terminal approval; workspace checks are not an OS sandbox. This behavior may conflict with catalog rule 12. Google restricts use of personal Antigravity OAuth by third-party clients; account and authentication eligibility must be checked against Google's current terms. Not affiliated with or endorsed by Google.","category":"models","platforms":["linux"],"maintainer":"rhgo1749","author":"rhgo1749","version":"0.7.9","requires_hermes":">=0.21.6","repo":"https://github.com/rhgo1749/hermes-antigravity-acp","docs":"https://github.com/rhgo1749/hermes-antigravity-acp/blob/d406a0b1ccc999bd956cdbfceedd150bb15d9e5f/docs/hermes-compatibility.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153182,"prs":[{"n":153182,"state":"open","created":"2026-11-11T04:33:02Z"}],"created":"2026-11-11T04:33:02Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/Gonus_lab/status/2120375325549006923"],"youtube":[],"thumb":null},{"name":"hermes-verify","title":"hermes-verify","summary":"Configurable tool-risk flags, bounded local receipt metadata and held unverified-prose labels.","disclosure":"","category":"tools","platforms":[],"maintainer":"BrandonDucar","author":"BrandonDucar","version":"0.5.0","requires_hermes":">=0.22.7","repo":"https://github.com/BrandonDucar/hermes-verify","docs":null,"tools":["verify_claim","query_receipts"],"hooks":["pre_tool_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Default observation mode logs and allows; optional blocking is a heuristic, not OS containment.; Whole-output labeling and lexical source comparison do not establish factual truth.; Local receipt records are unauthenticated; action returns do not prove completion.; Host storage-helper errors can select a fallback directory that is not guaranteed to follow the active profile.; End-to-end agent stream delivery and integrated strict-mode actions are not yet qualified.","state":"open","pr":153179,"prs":[{"n":153179,"state":"open","created":"2026-11-11T04:31:11Z"}],"created":"2026-11-11T04:31:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crown","title":"Crown","summary":"One leased speaker and a durable question/answer record for cooperating Hermes instances on one Linux host. A replacement reads the same record. An old token cannot publish after a successor takes the lease. Crown writes only its own local SQLite outlet. It does not silence Hermes chat or Telegram, and it does not follow you to a phone.","disclosure":"after explicit /crown here, runs a local heartbeat thread; reads and writes an operator-configured shared SQLite database outside profile storage, and injects recent shared questions/answers written by other participating profiles into each turn's context as quoted data; no network calls, no credentials, no model calls.","category":"tools","platforms":["linux"],"maintainer":"SAMBAS123","author":"SAMBAS123","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/SAMBAS123/hermes-crown","docs":"https://github.com/SAMBAS123/hermes-crown/blob/fe6b86874190557ef5347c1752e24a6d65f7511a/README.md","tools":["crown_report","crown_context"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Linux only. One host. Does not silence native Hermes chat or Telegram.; Coordinated pause is tested. Recovery from an unexpected freeze halfway through a write is not.","state":"open","pr":153178,"prs":[{"n":153178,"state":"open","created":"2026-11-11T04:30:36Z"}],"created":"2026-11-11T04:30:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cost-forecast","title":"Cost Forecast","summary":"Quotes a task's cost before it runs and stops for your OK when it would go over budget. Before a task starts it estimates the number of model calls and tokens (P50 and P90), prices them at your model's rates, and shows a quote when the task is large or could exceed your per-task cap. While the task runs it costs every call (subagents included), re-forecasts after each call, and pauses or stops at the soft cap, hard limit or daily cap. Estimates learn from your own finished tasks. API-key users only.","disclosure":"fetches public prices from https://models.dev/api.json on a short background thread, at most once a day when the fetch succeeds (it retries on later lookups after a failure); if the optional cheap-model estimate (l3_mode, off by default, needs the llm.model_override grant) is on, one extra short call per quote sends up to 1,500 characters of your message through Hermes to your own provider; stores spend, task history (message text removed, only hashed word counts kept), learned coefficients and, for up to 30 minutes, the text of a request held for your OK in a SQLite database under $HERMES_HOME/plugin-data/cost-forecast/; reads model.provider and agent.reasoning_effort from your config and whether the working directory is inside a git repo (a .git check, no commands); no credentials, no shell commands, no telemetry.","category":"tools","platforms":[],"maintainer":"mr-jude-justin","author":"mr-jude-justin","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/mr-jude-justin/hermes-plugin","docs":"https://github.com/mr-jude-justin/hermes-plugin/blob/dce09d9bf4fca14467246cb90ee87b6ef34c792b/plugin/README.md","tools":[],"hooks":["pre_llm_call","post_api_request","api_request_error","pre_tool_call","post_tool_call","subagent_start","subagent_stop","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"API-key billing only. Subscription logins are not priced, and local models show token counts only.; Cron, webhook and API-server runs get no quote because nobody can reply. The hard limit and daily cap still stop them.; Image generation and provider-side tool fees (such as per-search web search charges) are counted but not priced yet.; The first few quotes use defaults and are the least accurate. Calibration starts after 3 finished tasks.","state":"open","pr":153170,"prs":[{"n":153170,"state":"open","created":"2026-11-11T04:20:15Z"}],"created":"2026-11-11T04:20:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sentinel-security","title":"Sentinel Security","summary":"Scans scripts before the agent runs them and blocks, asks for approval, or allows them; also hashes files.","disclosure":"reads script files referenced in tool calls; appends a local audit log (sentinel-audit.jsonl); sends only a file's SHA-256 (never its contents) to virustotal.com, and only if a VT_API_KEY is configured.","category":"tools","platforms":[],"maintainer":"<cogkreates>","author":"Cogkreates","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/<cogkreates>/Sentinel-Security","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153168,"prs":[{"n":153168,"state":"open","created":"2026-11-11T04:17:54Z"}],"created":"2026-11-11T04:17:54Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-multiplayer","title":"Hermes Multiplayer","summary":"Multiplayer Hermes. Channels, DMs, threads and a shared team room where you, up to four teammates, and each of your Hermes agents work in one place. No server to host — or one small relay when teammates can't reach each other.","disclosure":"","category":"desktop","platforms":[],"maintainer":"tyleramberry","author":"tyleramberry","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/tyleramberry/hermes-multiplayer","docs":"https://github.com/tyleramberry/hermes-multiplayer#readme","tools":["multiplayer_list_channels","multiplayer_post","multiplayer_read_channel","multiplayer_set_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153148,"prs":[{"n":153148,"state":"open","created":"2026-11-11T04:07:39Z"}],"created":"2026-11-11T04:07:39Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/tyleramberry/hermes-multiplayer/a744368a41c850e54e1e197e9386524054379086/docs/media/channel-agent-thread.png","https://raw.githubusercontent.com/tyleramberry/hermes-multiplayer/a744368a41c850e54e1e197e9386524054379086/docs/media/agent-answer.png","https://raw.githubusercontent.com/tyleramberry/hermes-multiplayer/a744368a41c850e54e1e197e9386524054379086/docs/media/dm.png"],"videos":[],"x":["https://x.com/tyler_amberry/status/2120617127568961879"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-multiplayer.webp"},{"name":"hermes-regress","title":"hermes-regress","summary":"Regression tests built from your own sessions. Capture is passive: every finished turn is written as a plain JSON case holding the prompt, the model, each tool call with its exact arguments and the output it returned. Replay a case through the real agent loop with every tool call vetoed at pre_tool_call and answered from the recording, so a model, provider or config change can be measured without side effects — /regress run --model X reports pass, drift, regressed and error per case, with markdown, JUnit XML and a hash-chained export bundle for CI. Fixtures match only on identical tool and arguments; a case whose tool plan cannot be reproduced is reported as a gap instead of being answered from the wrong recording, and a replay window that never reaches the hook is marked error and stops the run rather than executing live tools.","disclosure":"writes captured cases (provider keys, GitHub/Slack/AWS tokens, JWTs and inline password/token values redacted to [REDACTED], counts recorded per case) under HERMES_HOME/regress/, keeps replay state in regress/replay/armed.json (expires after 15 minutes) plus an audit line per armed tool call in regress/replay/hook.log, and runs the local hermes CLI as a subprocess when you ask for a replay; no network calls of its own, no telemetry.","category":"tools","platforms":[],"maintainer":"harishkotra","author":"harishkotra","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/harishkotra/hermes-regress","docs":"https://github.com/harishkotra/hermes-regress#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153146,"prs":[{"n":153146,"state":"open","created":"2026-11-11T04:04:18Z"}],"created":"2026-11-11T04:04:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"signet","title":"Signet","summary":"An email leaves your agent only with your seal on that exact message. signet_send_mail shows the real recipients, sender, subject, text and attachments in Hermes's own approval prompt, ties your yes to their SHA-256 and sends nothing else: a recipient added or a word changed after the prompt has no seal. YOLO mode, approvals off, timeouts and scheduled runs cannot seal; those emails are held for /signet send, which shows the email in full first. Direct mailers (himalaya, msmtp, sendmail, mail, SMTP scripts, mail SDKs and API send endpoints) are blocked in terminal, execute_code and process input, and the card flags look-alike domains, new recipients, secrets and odd links.","disclosure":"no network unless you choose the smtp transport (your server; password read through Hermes's secret scope); the command transport runs the one mailer you configured, without a shell, with the approved message on stdin; reads the attachments an email names (credential files and private keys refused); stores held drafts, a ledger and outbox .eml files under plugin-data/signet with owner-only permissions; blocks tool calls that would send mail directly (guard: block, configurable) and fails closed on its own hook errors; trusted_recipients, when you set it, sends to your own listed addresses without a prompt; no telemetry, no background processes; adds an approval prompt and never answers one.","category":"tools","platforms":[],"maintainer":"Wecko-ai","author":"Wecko-ai","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Wecko-ai/hermes-signet","docs":"https://github.com/Wecko-ai/hermes-signet#readme","tools":["signet_send_mail","signet_outbox"],"hooks":["pre_tool_call","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153144,"prs":[{"n":153144,"state":"closed","created":"2026-11-11T04:03:32Z"}],"created":"2026-11-11T04:03:32Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/banner.png","https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/screenshots/01-approval-card.png","https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/screenshots/02-sent-and-ledger.png","https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/screenshots/03-yolo-held-then-sealed.png","https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/screenshots/04-direct-mailer-blocked.png","https://raw.githubusercontent.com/Wecko-ai/hermes-signet/ceaab2a705907392711658af5707f2b27bd405d8/docs/screenshots/05-back-through-the-seal.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/signet.webp"},{"name":"exoself","title":"exoself","summary":"An unchosen temperament for every Hermes profile: on the first load it draws one seed into the profile's home and renders it into SOUL.md inside a managed block, then records one experience event per turn and refreshes that block. Two profiles get two different agents, a second load never redraws, and no tool draws a seed.","disclosure":"writes $HERMES_HOME/SOUL.md and $HERMES_HOME/.exoself/, runs the exoself CLI as a subprocess (no shell), and reads the turn's ask from pre_llm_call in memory to form the event line, which is hashed into the state chain and never stored as text. No network calls, credentials or telemetry; uninstalling leaves the certificate and the block in place.","category":"general","platforms":[],"maintainer":"cYoren","author":"cYoren","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/cYoren/exoself","docs":"https://github.com/cYoren/exoself/tree/main/hermes","tools":["exoself_status","exoself_verify"],"hooks":["pre_llm_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153648,"prs":[{"n":153648,"state":"open","created":"2026-11-11T16:48:16Z"},{"n":153143,"state":"closed","created":"2026-11-11T04:01:39Z"}],"created":"2026-11-11T04:01:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"playbox-witness","title":"playbox-witness","summary":"Companion to playbox. Records a session's tool calls into a signed hash-chained log (digests only) and pauses write-capable tools for the rest of any turn that read text from another room member, until the user sends their next message.","disclosure":"","category":"tools","platforms":["macos","linux"],"maintainer":"Epistetechnician","author":"Epistetechnician","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/Epistetechnician/playbox","docs":"https://github.com/Epistetechnician/playbox/tree/main/hermes-plugin-witness","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153141,"prs":[{"n":153141,"state":"open","created":"2026-11-11T03:59:25Z"}],"created":"2026-11-11T03:59:25Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"playbox","title":"playbox","summary":"Collaborate with other people's Hermes agents in a private room: share a git repo, run sandboxed tasks, and keep a signed, tamper-evident history. Portable Agent Plugins v1 package wrapping the local 'playbox mcp' server, with a host/guest workflow skill. Requires the separately installed playbox binary.","disclosure":"runs the separately installed `playbox mcp` binary (installed by the user from github.com/Epistetechnician/playbox releases; v0.1.0 is checksum-checked but not signed); hosting opens an iroh endpoint reachable through n0's public relays and discovery by default (`transport: local` keeps it on the LAN); a host started with a runtime (`docker`, `libkrun`, `openshell`) runs commands from invited remote members in a no-network, resource-limited sandbox on the host machine; git bundles, patches and chat are exchanged with invited members, and their text is untrusted input; keys, histories and room state are written under `~/.playbox`.","category":"tools","platforms":["macos","linux"],"maintainer":"Epistetechnician","author":"Epistetechnician","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Epistetechnician/playbox","docs":"https://github.com/Epistetechnician/playbox/tree/main/hermes-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153140,"prs":[{"n":153140,"state":"open","created":"2026-11-11T03:59:22Z"}],"created":"2026-11-11T03:59:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ball","title":"ball","summary":"Estimates which Hermes chats are waiting on you and what the AI asked (/ball; Matrix: !ball). Heuristic; misses happen. Reads inbound messages (never stored) and, read-only, Hermes' state.db (non-public schema); stores short AI-reply excerpts in local SQLite. Optional LLM judge sends reply tails to your active model.","disclosure":"","category":"general","platforms":["linux"],"maintainer":"getaskclaw","author":"askclaw-vesper","version":"0.1.2","requires_hermes":">=0.23.1","repo":"https://github.com/getaskclaw/hermes-ball","docs":"https://github.com/getaskclaw/hermes-ball#readme","tools":[],"hooks":["pre_gateway_dispatch","post_llm_call","on_human_input_request","on_human_input_resolved","agent_loop_stopped"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153139,"prs":[{"n":153139,"state":"open","created":"2026-11-11T03:58:47Z"}],"created":"2026-11-11T03:58:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/getaskclaw/hermes-ball/036ef752cf21d5b18f3f391b3311222b5a964676/demo/screens/ball.png","https://raw.githubusercontent.com/getaskclaw/hermes-ball/036ef752cf21d5b18f3f391b3311222b5a964676/demo/screens/ball-all.png","https://raw.githubusercontent.com/getaskclaw/hermes-ball/036ef752cf21d5b18f3f391b3311222b5a964676/demo/screens/ball-done.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ball.webp"},{"name":"reframe-proceed","title":"reframe-proceed","summary":"Personal planning tools and an opt-in skill for vision, plans, check-ins, and reviews.","disclosure":"stores user text in Hermes profile-scoped storage that persists after updates/removal; same-period saves replace records. No third-party network calls, shell commands, credentials, or telemetry.","category":"tools","platforms":[],"maintainer":"bernardo9999","author":"bernardo9999","version":"0.1.0","requires_hermes":">=0.20.4","repo":"https://github.com/bernardo9999/reframe-proceed","docs":"https://github.com/bernardo9999/reframe-proceed/blob/42a869a5ed7072a046dcbb32d33e8aa4b24448a2/README.md","tools":["reframe_save_vision","reframe_update_plan","reframe_daily_checkin","reframe_weekly_review","reframe_get_context"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153135,"prs":[{"n":153135,"state":"open","created":"2026-11-11T03:52:18Z"}],"created":"2026-11-11T03:52:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"roster-compiler","title":"Roster Compiler","summary":"Reads a hospital duty roster (CSV, plain text, Excel or a text-layer PDF), flags uncovered shifts, double bookings, runs longer than six days and night-then-day turns, and writes a clean schedule plus an HTML exception report. Deterministic: no model calls, no network, staff names only, and the input file is never modified.","disclosure":"","category":"tools","platforms":[],"maintainer":"COSMICnoob80","author":"COSMICnoob80","version":"0.1.0","requires_hermes":">=0.21","repo":"https://github.com/COSMICnoob80/hermes-roster-compiler","docs":"https://github.com/COSMICnoob80/hermes-roster-compiler#readme","tools":["roster_read","roster_audit","roster_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153134,"prs":[{"n":153134,"state":"open","created":"2026-11-11T03:47:13Z"}],"created":"2026-11-11T03:47:13Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/COSMICnoob80/hermes-roster-compiler/f3ac9139f2d1973903a5b01007036d1dc3aa21e2/docs/report.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/roster-compiler.webp"},{"name":"attune","title":"Attune","summary":"Daily learning that drives evidence-linked, permission-bound project build previews.","disclosure":"after you approve a proposal (/attune approve) or grant a standing preview window (/attune project-mode … preview, up to 30 days and 3 builds/day, which also applies to unattended cron runs), it runs your selected project's unit tests together with model-written code changes on this machine inside a Bubblewrap sandbox (Linux only; no network, cleared environment, read-only copy; the original project is never modified).","category":"automation","platforms":[],"maintainer":"five0nit","author":"five0nit","version":"0.3.1","requires_hermes":">=0.22.5","repo":"https://github.com/five0nit/hermes-attune","docs":"https://github.com/five0nit/hermes-attune#readme","tools":["attune_goal","attune_checkin","attune_answer","attune_work","attune_deliver","attune_status","attune_projects","attune_project","attune_propose","attune_build","attune_build_result"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Code previews require Linux, Bubblewrap, util-linux prlimit and /usr/bin/python3; other platforms retain learning/drafting only.; The fixed 1024-task UID-wide ceiling can reject previews on busy shared hosts. Daily scheduled model operation remains unverified.","state":"open","pr":153128,"prs":[{"n":153128,"state":"open","created":"2026-11-11T03:40:51Z"}],"created":"2026-11-11T03:40:51Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"realcryptocap","title":"RealCryptoCap","summary":"Live crypto prices, real market cap rankings and AI market briefs from RealCryptoCap, free with no API key. Real market cap ranks native crypto only: stablecoins, wrapped/staked receipts and tokenized assets are left out. Three tools (rcc_price, rcc_top, rcc_market_brief), a /crypto slash command for an instant price table with no model call, and a bundled skill that tells the agent to use live data instead of quoting prices from memory.","disclosure":"HTTPS GET requests to realcryptocap.com only (/api/cg, /api/market-analysis, /api/news); an optional REALCRYPTOCAP_API_KEY, read through Hermes's secret scope, is sent as a Bearer header to realcryptocap.com only; rcc_market_brief sends the fetched market data (prices, analysis, headlines, no conversation content) to the user's active model through ctx.llm. No shell, no file writes, no background processes, no telemetry, no stored credentials. Standard library only. Market data, not financial advice.","category":"tools","platforms":[],"maintainer":"jamesparser","author":"jamesparser","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/jamesparser/realcryptocap-hermes","docs":"https://github.com/jamesparser/realcryptocap-hermes#readme","tools":["rcc_price","rcc_top","rcc_market_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153117,"prs":[{"n":153117,"state":"open","created":"2026-11-11T03:20:12Z"}],"created":"2026-11-11T03:20:12Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"selenite","title":"Selenite","summary":"Takes friction off the person, treated as accessibility: one test, \"does this step, wait or check earn its cost to you?\", applied to steps handed to a person, agents parking Kanban work on each other for reasons that aren't real, and checks that can't change the decision. Calm mode switches the agent to no questions and one-line replies when your messages show overload. A read-only cleanse ranks what to clear across skills, plugins, hooks, approvals, runbooks and boards. Walls always stand: credentials, spend, publishing, destructive steps, legal, named freezes. Adds /frictionless, a selenite_ledger tool, two fake-gate tools, skills, a Desktop page and a dashboard tab.","disclosure":"no network, no credentials and no shell from the plugin itself; hooks add a context note in Calm mode, and in fake_gate_mode \"nudge\" (default) or \"ask\" they add a note to, or hand back once with a question, a kanban_block that reads as agent bureaucracy (they never approve, unblock, close or edit a card, and any error fails open); when you approve a safe command once or for the session, its approval key is logged as an allowlist candidate (denials, timeouts and dangerous commands are never logged); writes a metadata-only ledger (no block reasons or prompt text, 0600, rotates at 4 MB), per-card question counts and a counts-only snapshot under plugin-data/antibeaurocracy/, and reports under the Selenite state directory (SELENITE_STATE, else XDG state, else HERMES_HOME); reads kanban.db read-only; the cleanse pass (the selenite_ledger tool, the Desktop page and the dashboard tab can run it) reads, read-only, the hook commands in ~/.claude/settings.json, the skill folders of Claude Code, Codex, OpenCode and ~/.agents, and Hermes plugin manifests; the `hermes antibeaurocracy audit` CLI also reads agent rule files (~/.claude/CLAUDE.md, ~/.codex/AGENTS.md, ~/.gemini/GEMINI.md) and the SOUL.md/AGENTS.md of every Hermes home and profile; the bundled frictionless skill's miner script, when the agent runs it, reads your own messages from local agent transcripts (Claude Code, Codex and Hermes state.db, all read-only) and keeps only counts plus a few redacted samples, 0600, in that state directory; the CLI's opt-in --judge runs a command you name, the plugin never does; all hooks turn off with hooks: false or SELENITE_HOOKS=0.","category":"automation","platforms":["linux"],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.5.0","requires_hermes":">=0.23.0","repo":"https://github.com/KyaniteLabs/selenite","docs":"https://github.com/KyaniteLabs/selenite/blob/6603e379c8ae7fedb95e827ec95781f1e1dd77af/README.md","tools":["selenite_ledger","bureaucracy_classify","bureaucracy_audit"],"hooks":["pre_llm_call","post_approval_response","kanban_task_blocked","kanban_task_completed","on_kanban_task_updated","pre_tool_call","transform_tool_result","on_kanban_dispatch_tick"],"middleware":[],"env":[],"known_issues":"Loads on the next gateway restart. Disable a standalone antibeaurocracy plugin first, or the fake-gate hooks run twice.; The fake-gate classifier is deterministic and phrase-based; text it has no evidence for is recorded, never nudged or asked.; Pedantry is a skill only; it is not counted in the cleanse ranking yet.; Badges for cards a person unblocks or archives clear within about a minute (Hermes fires no hook for either; Selenite checks the board read-only).; Tested on Linux; macOS and Windows unverified.","state":"open","pr":153114,"prs":[{"n":153114,"state":"open","created":"2026-11-11T03:15:04Z"}],"created":"2026-11-11T03:15:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KyaniteLabs/selenite/6603e379c8ae7fedb95e827ec95781f1e1dd77af/docs/banner.png"],"videos":[],"x":["https://x.com/KyaniteLabs_/status/2120363932087099522"],"youtube":[],"thumb":"/hackathon/thumbs/selenite.webp"},{"name":"standing-orders","title":"Standing Orders","summary":"Plain-English camera triggers that wake your agent. Say \"tell me if I leave my mug on the desk for 10 seconds\"; the camera stays silent until it is true, then Hermes starts a turn with a short clip as evidence. macOS only; not a safety or security system.","disclosure":"","category":"automation","platforms":["macos"],"maintainer":"jaxsonsprinkles","author":"jaxsonsprinkles","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/jaxsonsprinkles/standing-orders","docs":"https://github.com/jaxsonsprinkles/standing-orders","tools":["so_create_order","so_arm","so_disarm","so_list_orders","so_status","so_backtest","so_correct","so_add_list_item"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153113,"prs":[{"n":153113,"state":"open","created":"2026-11-11T03:14:40Z"}],"created":"2026-11-11T03:14:40Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jaxsonsprinkles/standing-orders/1959097a915e53624262c235e9eb102babece01f/docs/images/mug-test-1.png","https://raw.githubusercontent.com/jaxsonsprinkles/standing-orders/1959097a915e53624262c235e9eb102babece01f/docs/images/mug-test-2.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/standing-orders.webp"},{"name":"amavid-hooker","title":"amavid-hooker","summary":"Generate and edit UGC images and videos with Grok Imagine (xAI) straight from Hermes. Drag an Amazon product to Telegram (or any prompt), and Hermes turns it into a ready-to-post creative: image generation and editing, text-to-video, image-to-video, reference-to-video, and visual flow canvas. Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code. Requires Node.js 20+ and the official Grok CLI; each user signs in via their own Grok CLI OAuth session (grok login --oauth). Tokens stay in ~/.grok/auth.json and are never returned by MCP tools.","disclosure":"media generation may consume the user's xAI quota; requests go only to auth.x.ai and api.x.ai plus the Grok CLI auth flow; generated files stay local; the local canvas listens on loopback.","category":"tools","platforms":[],"maintainer":"quynhchiv","author":"quynhchiv","version":"0.3.1","requires_hermes":"","repo":"https://github.com/quynhchiv/amavid-hooker","docs":"https://github.com/quynhchiv/amavid-hooker#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153111,"prs":[{"n":153111,"state":"open","created":"2026-11-11T03:13:33Z"}],"created":"2026-11-11T03:13:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"universal-plugin-port","title":"universal-plugin-port","summary":"Inspect user-selected Claude Code/Cowork, Codex, and OpenClaw plugin sources; disclose unsupported capabilities; and stage Hermes-compatible packages while preserving original source files. Verified deterministic mappings are applied before an approval-gated, single-edit model candidate path. Fetching or installing requires an explicit user action. The /universal-port URL command can make model calls; its install <run_id> --confirm route copies a portable-only package into the active Hermes profile without enabling it and refuses overwrite. OpenClaw foreign JavaScript inspection is separately opt-in and NOT sandboxed. The optional bounded arXiv GET is disabled by default and requires fresh approval. No credential storage, telemetry, or self-update. v0.7.0 adds a Migration Doctor for Skills imported by the official agent-importers: it finds what Hermes cannot resolve, proposes only deterministic repairs, applies the exact approved candidate in a disposable home with backup and rollback, and re-verifies in a fresh Hermes process.","disclosure":"","category":"tools","platforms":[],"maintainer":"friendly-neighborhood-coding-man","author":"friendly-neighborhood-coding-man","version":"0.7.0","requires_hermes":">=0.22.7","repo":"https://github.com/friendly-neighborhood-coding-man/hermes-universal-plugin-port","docs":"https://github.com/friendly-neighborhood-coding-man/hermes-universal-plugin-port#readme","tools":["port_probe","port_fetch","port_stage","uvp_route"],"hooks":[],"middleware":[],"env":[],"known_issues":"The v0.7.0 Migration Doctor applies one deterministic rule (RES-LOCAL-1) and targets disposable Hermes homes only.; Pilot is SKILLS_ONLY_PARTIAL: MCP/OAuth connectors, hooks and other source-host features are not ported.; Cross-host semantic equivalence is NOT_ESTABLISHED; one Anthropic product-management package has a verified Hermes workflow.; Experimental Safebox is not a sandbox, has known bypasses, and is not registered in the release.; Plugin ctx.llm max_tokens is not enforced on the tested native Anthropic route in Hermes v0.22.7 (upstream issue #153099).","state":"open","pr":153110,"prs":[{"n":153110,"state":"open","created":"2026-11-11T03:12:57Z"}],"created":"2026-11-11T03:12:57Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bsc-mint-guard","title":"bsc-mint-guard","summary":"Safety-check a BSC ERC-721 free mint before you mint. Read-only on-chain reads, no keys, no signing, no spending.","disclosure":"read-only on-chain lookups: the contract and wallet addresses you check are sent to third-party public BSC RPC providers (bsc.meowrpc.com, bsc-mainnet.public.blastapi.io, rpc-bsc.48.club, bsc-dataseed.bnbchain.org); no keys, signing or transactions.","category":"tools","platforms":[],"maintainer":"Fuma Ops II","author":"Fuma2514","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Fuma2514/hermes-mint-guard","docs":null,"tools":["mint_check","mint_quote","wallet_mint_status"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"Price probe covers common view functions only (mintPrice, price, cost, mintCost, publicPrice, salePrice, getPrice). Contracts with a custom price function return price_unknown and verdict NEEDS_MANUAL_CHECK.","state":"open","pr":153103,"prs":[{"n":153103,"state":"open","created":"2026-11-11T03:01:59Z"}],"created":"2026-11-11T03:01:59Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"z-midi-console","title":"Z's MIDI Console","summary":"Universal MIDI control-surface builder — any USB/MIDI synth as live on-screen controls in Hermes Desktop, MIDI-learn bindings, multi-synth deck, spectrum analyzers, software mod matrix, .mid export, seven agent tools. Zero Python dependencies.","disclosure":"","category":"tools","platforms":[],"maintainer":"zorroukk","author":"zorroukk","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/zorroukk/z-midi-console","docs":null,"tools":["midi_devices","midi_status","midi_send","midi_control","midi_profile","midi_matrix","midi_recorder"],"hooks":[],"middleware":[],"env":[],"known_issues":"Windows is the only fully supported platform (winmm MIDI backend); on macOS/Linux the plugin loads and reports backend: none.; Desktop audio / microphone analyzers read the optional companion audio-strip plugin's published state; with it absent or opted out, MIDI-sourced analyzers still work and audio lanes show an honest unavailable note.","state":"open","pr":153102,"prs":[{"n":153102,"state":"open","created":"2026-11-11T03:01:41Z"}],"created":"2026-11-11T03:01:41Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/zorroukk/z-midi-console/aae9c17b0957efed41da32438deb0d6034b82445/docs/banner.png","https://raw.githubusercontent.com/zorroukk/z-midi-console/aae9c17b0957efed41da32438deb0d6034b82445/docs/screenshots/01-surface.png","https://raw.githubusercontent.com/zorroukk/z-midi-console/aae9c17b0957efed41da32438deb0d6034b82445/docs/screenshots/02-editor.png","https://raw.githubusercontent.com/zorroukk/z-midi-console/aae9c17b0957efed41da32438deb0d6034b82445/docs/screenshots/04-chat.png","https://raw.githubusercontent.com/zorroukk/z-midi-console/aae9c17b0957efed41da32438deb0d6034b82445/docs/screenshots/05-matrix.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/z-midi-console.webp"},{"name":"borealwork","title":"boreal.work","summary":"Give Hermes verified human hands: hire a verified person on boreal.work for a step no agent can do online (confirm a supplier is real, check a shelf price, photograph a site), with the money held until the result passes review against your criteria and a public rulebook. Twelve native tools for the task loop; a spend guard (pre_tool_call) that sends every money-moving call (funding at any amount, accepting a pass, judging a result yourself) to Hermes's approval prompt, enforces per-task and daily caps on funding, and blocks terminal payments that aren't paying a boreal.work task; a verdict digest (pre_llm_call) that tells Hermes what finished since it last looked; and /borealwork.","disclosure":"HTTPS to the configured boreal.work site only (https://boreal.work by default, live PayPal money; testnet.boreal.work for the sandbox), from tool calls, from the guard (one task read before funding, accepting or judging) and from the digest (one task list on a session's first turn). Stores the boreal.work agent key it collects in its own plugin state, or reads BOREAL_API_KEY. No shell commands, no background processes, no self-updates, no compiled code; standard library only.","category":"tools","platforms":[],"maintainer":"raldblox","author":"raldblox","version":"0.2.0","requires_hermes":">=0.19","repo":"https://github.com/raldblox/hermes-boreal","docs":"https://github.com/raldblox/hermes-boreal#readme","tools":["boreal_connect","boreal_check_link","boreal_account","boreal_quote","boreal_post_task","boreal_fund_task","boreal_list_tasks","boreal_get_task","boreal_get_submission","boreal_review","boreal_accept","boreal_cancel"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153094,"prs":[{"n":153094,"state":"open","created":"2026-11-11T02:50:38Z"}],"created":"2026-11-11T02:50:38Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/reaper_promax/status/2120347943358365835"],"youtube":[],"thumb":null},{"name":"hermes-x402-pay","title":"hermes-x402-pay","summary":"Pay x402 (HTTP 402) APIs from inside Hermes with hard spend caps. Adds two tools and one hook: x402_pay sends a request, reads the 402 Payment Required requirements, and if the price fits the caps signs an EIP-3009 TransferWithAuthorization in USDC on Base (gasless for the payer — the facilitator's fee payer covers the network fee), retries with the X-PAYMENT header and returns the payload plus the settlement receipt; x402_receipts reads the payment ledger.","disclosure":"the plugin reads a private key from the environment variable named by the private_key_env setting (default X402_PRIVATE_KEY) with the user's own wallet, signs USDC payments to the payTo address advertised by the endpoint the agent requests, and appends every attempt (URL, method, status, price, payer, payee, tx hash; never the key, never request bodies) to a local plaintext SQLite ledger at HERMES_HOME/plugin-data/hermes-x402-pay/receipts.db that is never pruned; it is inert until dry_run is turned off and enforces per_call_cap_usd (default 0.01) and a rolling 24h daily_budget_usd (default 0.05) summed from that ledger; the post_tool_call hook writes the audit row so spend survives context truncation; no telemetry, no network calls except the endpoint being paid, no self-update, no core patches; Base (EVM) only — solana-only x402 endpoints are refused explicitly.","category":"tools","platforms":[],"maintainer":"ciperx","author":"ciperx","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/ciperx/hermes-x402-pay","docs":"https://github.com/ciperx/hermes-x402-pay#readme","tools":["x402_pay","x402_receipts"],"hooks":["post_tool_call"],"middleware":[],"env":["{'name': 'X402_PRIVATE_KEY', 'description': 'Private key (0x-prefixed, 32 bytes) of a dedicated low-balance wallet that holds USDC on Base. Never your main wallet. Read at call time by name from the private_key_env setting.', 'secret': True}"],"known_issues":"","state":"open","pr":153108,"prs":[{"n":153108,"state":"open","created":"2026-11-11T03:08:40Z"},{"n":153093,"state":"closed","created":"2026-11-11T02:50:10Z"}],"created":"2026-11-11T02:50:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rowverdict","title":"RowVerdict","summary":"Review drafted CSV/XLSX/JSON contracts, fix quarantined rows through replay, and export source-bound receipts plus self-contained HTML audits locally.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"demir-sama","author":"demir-sama","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/demir-sama/rowverdict","docs":"https://github.com/demir-sama/rowverdict#readme","tools":["rowverdict_inspect","rowverdict_plan","rowverdict_export","rowverdict_history","rowverdict_draft","rowverdict_review","rowverdict_replay"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Verified on Linux only; not a sandbox or a guard for other shell/import tools.; Raw rejected cells and correction patches remain in private artifacts/SQLite; no encryption at rest.; XLSX supports bounded standard OOXML values, not arbitrary Excel display/calculation fidelity; declared defusedxml dependency required.; Slash review/export use a native-tool approval handoff on stable Hermes; the dashboard has no export endpoint.","state":"open","pr":153092,"prs":[{"n":153092,"state":"open","created":"2026-11-11T02:49:39Z"}],"created":"2026-11-11T02:49:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pokeit","title":"PokeIt","summary":"Real-time Pokémon GO hunting inside Hermes, with a live Radar, nearby catches and raids, approved scans, and desktop alerts.","disclosure":"hosted-only connector to the author's PokeIt service: each tool call sends coordinates, place text and filters to https://mcp.pokeit.cc (tool list served at runtime, not covered by the pin; request_scan starts a scan and goes through Hermes approval; the service keeps tool names, filters, timings and result counts about 14 days and scan coordinates 24 hours); on Desktop a gateway-side read proxy calls the same server's read tools and fetches species icons from https://pokeit.cc, the embedded map loads tiles from https://tile.openstreetmap.org (revealing the viewed area and IP), the last spot, radius and filter are saved locally per profile, and a user-started watch polls about once a minute for up to two hours while Hermes runs; no credentials, shell commands or self-update.","category":"desktop","platforms":[],"maintainer":"kbtbc","author":"kbtbc","version":"0.1.25","requires_hermes":">=0.23.0","repo":"https://github.com/kbtbc/pokeit-hermes","docs":"https://github.com/kbtbc/pokeit-hermes/blob/990c4126db513d69292ce68d48aa756ad7852123/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Results come from PokeIt's own scanning network. They are not exhaustive and an observation can expire before you arrive.; The server runs separately from this repository and can change after you install; its tool list is served at runtime.; The Radar and desktop alerts need Hermes Desktop 0.23.0 or newer with the plugin enabled on the profile you chat in. CLI and messaging clients get the tools and the skill only.; After installing or updating, restart the Hermes gateway that serves your chat and open a new chat so the PokeIt tools load.; Desktop alerts need an area with ongoing scan coverage (https://pokeit.cc/coverage).","state":"open","pr":153091,"prs":[{"n":153091,"state":"open","created":"2026-11-11T02:48:25Z"}],"created":"2026-11-11T02:48:25Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kbtbc/pokeit-hermes/990c4126db513d69292ce68d48aa756ad7852123/assets/catalog-banner.png","https://raw.githubusercontent.com/kbtbc/pokeit-hermes/990c4126db513d69292ce68d48aa756ad7852123/assets/desktop-radar.webp"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pokeit.webp"},{"name":"retouch","title":"Retouch","summary":"Mark the parts of any image that need work in a Hermes Desktop pane, leave a note on each, and Hermes fixes only those areas. Each mark has its own thread; every edit is a new version, checked pixel by pixel and refused if anything outside its mark changed; only you can accept a mark. Tonal and privacy edits need no image provider, removals and replacements use the image_generate provider you configured. Saves new files, never the original.","disclosure":"images you open are copied into this profile's plugin-data/retouch folder. Send starts hidden Hermes sessions, one per group of overlapping marks and up to three at a time, with your usual tools, settings and approvals; they use model credits and stay in your session history. Your chat model's provider, or that of the model picked beside Send, receives a downscaled overview of the image, a close-up of each mark and before/after strips. The generate method sends a crop around the mark to your image_generate provider and downloads the result (https only, public addresses only, at most 40 MB). Text inside a picture is treated as picture content by instruction, which is not a barrier, so treat an untrusted picture of text like pasted text. Untouched pasted scratch projects are deleted about a day later. The plugin itself makes no other network calls, runs no shell commands, stores no credentials and sends no telemetry; exports strip GPS and embedded text metadata.","category":"desktop","platforms":[],"maintainer":"Lyfae","author":"Lyfae","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Lyfae/hermes-retouch","docs":"https://github.com/Lyfae/hermes-retouch#readme","tools":["retouch_get","retouch_edit","retouch_reply","retouch_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153090,"prs":[{"n":153090,"state":"open","created":"2026-11-11T02:45:38Z"}],"created":"2026-11-11T02:45:38Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/banner.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-1-mark.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-2-working.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-3-thread.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-4-still-visible.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-5-edge-check.png","https://raw.githubusercontent.com/Lyfae/hermes-retouch/1a5ac4346b991754a25a5dc14745f533341c8c95/assets/shot-6-accepted.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/retouch.webp"},{"name":"nyx-wiki-recall","title":"NyxWikiRecall","summary":"Attach short wiki glimpses chosen by a decision model, and write a daily Markdown transcript of every turn. A local Markdown wiki (starter layout shipped) is scored per message through OpenRouter's Decisions API; matching glimpses are injected before the model answers, and wiki_read opens the full article. Transcripts are written by the plugin itself into HERMES_HOME/plugin-data/nyx-wiki-recall/ with no extra setup (transcript = yes and finalize = yes are the shipped values). Each day runs from finalize.after to finalize.after (default 02:00). Scheduled (cron) jobs are recorded under a Scheduled job heading; only subagent turns are skipped by default. A day is finished at finalize.after the next morning. The files are what a wiki is built from. Ships Clotho's wiki-archivist skill. Default provider=no runs as a hook beside any memory provider; provider=yes can serve as Hermes's memory provider when memory.provider also says so.","disclosure":"for each message that passes the skip rules (not empty, not a slash command; cron turns skipped by default), HTTPS POSTs go to openrouter.ai/api/alpha/decisions (decisions.url, default that URL; model typesafe/jev-1.13) with OPENROUTER_API_KEY (via agent.secret_scope.get_secret), carrying the recent conversation (context.turns, default 2) trimmed to message.chars (default 20,000 characters) and the titles, paths and glimpses of the wiki folders and pages being asked about (up to three requests per message, within budget.seconds); nothing else is sent anywhere and there is no telemetry. Reads the wiki folder (wiki_path), Hermes config read-only, and the gateway-bound HERMES_SESSION_* values via gateway.session_context.get_session_env; in memory-provider mode only, also opens HERMES_HOME/state.db read-only for the last 40 messages of the current session. Writes a journal and daily Markdown transcript of every turn (user messages, replies and short tool-call summaries such as terminal commands and file paths, after pattern-based secret redaction, with default file permissions) only under HERMES_HOME/plugin-data/nyx-wiki-recall/ (or transcript.folder), plus suggestions, finalized.json and lock files. Deletes nothing by default; with keep.days > 0, only its own finished journal/ and suggestions/ day files. Runs one day-finishing background thread per Hermes process and one short-lived transcript thread after each reply; runs no shell commands and stores no credentials.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"blacksmithFF","author":"blacksmithFF","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/blacksmithFF/NyxWikiRecall","docs":"https://github.com/blacksmithFF/NyxWikiRecall#readme","tools":["wiki_read"],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":["OPENROUTER_API_KEY"],"known_issues":"Install with `hermes plugins install blacksmithFF/NyxWikiRecall --no-enable` then `hermes plugins enable nyx-wiki-recall`. Hermes 0.22.5 `plugins install --enable` (or answering yes) sets memory.provider and skips plugins.enabled for plugins that register a memory provider, so the transcript and glimpse hooks never run. If that already happened, enable the plugin and set memory.provider back.; `hermes plugins validate` warns once on a private core import of gateway.session_context.get_session_env (transcript.py). That is the documented session-identity reader in Hermes 0.22.5's plugin guide; the import is wrapped and falls back to transcript.user.name if it goes away.; Cron turns get no wiki lookup by default (lookups.on_cron = no). Transcripts record scheduled (cron) jobs under a Scheduled job heading, and skip only subagent turns by default (transcript.skip.platforms = subagent).","state":"open","pr":153084,"prs":[{"n":153084,"state":"open","created":"2026-11-11T02:39:13Z"}],"created":"2026-11-11T02:39:13Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/blacksmithFF/NyxWikiRecall/7d8d26378d9da57e0eaae8016baa6fc03f9c6f01/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/nyx-wiki-recall.webp"},{"name":"signet-drive","title":"Signet Drive","summary":"Your agent's own encrypted drive, with dated restore points of its memory, which only you and your agent can open unless you invite someone.","disclosure":"","category":"tools","platforms":["macos"],"maintainer":"prsnex","author":"craczkow","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/prsnex/signet-drive-hermes","docs":"https://github.com/prsnex/signet-drive-hermes/blob/aef889768bbf4a35ce553702a0dd561511cc307d/README.md","tools":["signet_drive_save","signet_drive_fetch","signet_drive_list","signet_drive_restore"],"hooks":["on_session_start","on_session_end","post_tool_call"],"middleware":[],"env":[],"known_issues":"Needs a Signet Drive account and the signed Signet app on an Apple-silicon Mac. The README's Install section has the three steps.; A new agent's key reads as waiting until the public transparency log's next publish, which runs twice a day.","state":"open","pr":153083,"prs":[{"n":153083,"state":"open","created":"2026-11-11T02:37:53Z"}],"created":"2026-11-11T02:37:53Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/prsnex/signet-drive-hermes/aef889768bbf4a35ce553702a0dd561511cc307d/docs/screenshots/files.png","https://raw.githubusercontent.com/prsnex/signet-drive-hermes/aef889768bbf4a35ce553702a0dd561511cc307d/docs/screenshots/desktop-view.png","https://raw.githubusercontent.com/prsnex/signet-drive-hermes/aef889768bbf4a35ce553702a0dd561511cc307d/docs/screenshots/memory-restore.png"],"videos":[],"x":["https://x.com/prsn_ex/status/2120352120851583309"],"youtube":[],"thumb":"/hackathon/thumbs/signet-drive.webp"},{"name":"cortex-zero-adaptive","title":"Cortex Zero Adaptive","summary":"Local 1B model directed adaptive browser automation with failure recovery. Implements the full OBSERVE→REASON→SELECT→EXECUTE→ANALYZE→ADAPT→VERIFY loop using llama-3.2-1b-cz-router (1.2B params, 128K context). The model selects actions from a structured catalog (baf-navigate, baf-click, baf-extract, baf-evaluate, baf-wait), encounters failures, analyzes them, and autonomously chooses alternative approaches — all within authorized engagement boundaries enforced by domain allowlists, operation allowlists, and fail-closed policy. Three mock demonstrations (navigation failure, element not found, policy blocked) and real BAF integration with 4/4 validation tests passing. Independent verification infrastructure separates model self-report from deterministic flag verification. Evidence logging to JSONL for audit trail. Reuses Cortex Zero Engine deterministic routing and BAF AutomationServer infrastructure.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"TheRealBrofessor","author":"TheRealBrofessor","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/TheRealBrofessor/cortex-zero-adaptive","docs":"https://github.com/TheRealBrofessor/cortex-zero-adaptive/blob/51b08ad54d231af376395be74c830e47882f8443/README.md","tools":["cz_adaptive.run","cz_adaptive.status","cz_adaptive.demo","cz_adaptive.config"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153078,"prs":[{"n":153078,"state":"open","created":"2026-11-11T02:28:33Z"}],"created":"2026-11-11T02:28:33Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cron-budget","title":"cron-budget","summary":"Counts provider requests, not dollars, across every profile and holds cron jobs before they spend the requests kept for chat; chat is never blocked. Observe mode by default.","disclosure":"one llm_execution middleware and one pre_auxiliary_call hook; stores request counts, timestamps, profile, job ids and names, provider and model names (never message text) in a local SQLite ledger under plugin-data/cron-budget/ in the root Hermes home; no network calls, credentials, shell commands, background processes or telemetry; does not write the cron store.","category":"automation","platforms":[],"maintainer":"heirakug","author":"heirakug","version":"0.1.0","requires_hermes":">=0.22.1","repo":"https://github.com/heirakug/hermes-cron-budget","docs":"https://github.com/heirakug/hermes-cron-budget#readme","tools":[],"hooks":["pre_auxiliary_call"],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"open","pr":153071,"prs":[{"n":153071,"state":"open","created":"2026-11-11T02:15:22Z"}],"created":"2026-11-11T02:15:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/heirakug/hermes-cron-budget/main/demo/video/cron-budget-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"deck-diff","title":"Deck Diff","summary":"Content integrity for courseware: compare a source .pptx with the lesson data generated from it (canvas.json or a simple slide list) and report drift slide by slide — missing text, reworded lines, sentences pasted onto the wrong slide, missing/extra images, orphan lesson slides, and slides that never made it into the lesson. Slides are matched by content rather than index, so cover slides and skipped pages still line up, and asymmetry between a short divider and a full lesson page is penalised. Three local tools: deck_slides (index a deck), deck_diff (compare, JSON issues with severities) and deck_report (self-contained HTML report with deck thumbnails and a MEDIA attachment). Pure Python standard library, no network calls, no API keys, read-only on the source deck; the only file it writes is the HTML report at the path the user asks for.","disclosure":"the report embeds thumbnails of the deck's own images.","category":"tools","platforms":[],"maintainer":"Baophan00","author":"Baophan00","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Baophan00/deck-diff","docs":"https://github.com/Baophan00/deck-diff#readme","tools":["deck_slides","deck_diff","deck_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":153062,"prs":[{"n":153062,"state":"closed","created":"2026-11-11T02:11:03Z"}],"created":"2026-11-11T02:11:03Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stagehands","title":"Sovereign & Stagehands","summary":"Typed backstage subagent delegation provider (scout, librarian, code_monkey, adversary, briefer) and deterministic 48k/120k context-sanitation janitor that keep bulky tool gravel out of the frontier parent session.","disclosure":"registers a DelegationProvider via ctx.register_delegation_provider, one system prompt routing section, one context reference, and the /stagehands CLI command. No network calls, background daemons, telemetry, or credential reads in plugin code; optional /stagehands janitor backups and SQLite hygiene run locally only when explicitly invoked by the operator.","category":"models","platforms":[],"maintainer":"Peetbog69","author":"Peetbog69","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/Peetbog69/hermes-stagehands","docs":"https://github.com/Peetbog69/hermes-stagehands/blob/576b7306ae19d8aaa4f71ed52a81dfe73101fd5b/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153058,"prs":[{"n":153058,"state":"open","created":"2026-11-11T02:00:39Z"}],"created":"2026-11-11T02:00:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"webgraft","title":"WebGraft","summary":"Local web_extract backend (trafilatura for pages, Hermes's own anydoc converter for PDF and Office documents, optional Crawl4AI browser view) that reports 404s and bot walls as errors; lists the pages an answer really used, from tool results, as clickable links; nudges the model to open pages rather than answer from snippets; reads a page's Markdown version when the site's llms.txt lists one, and returns pages that opt out of AI use (noai, TDM reservation) as errors; keeps long pages useful to small models (one URL per web_extract call: a multi-URL call reads the first URL and its result lists the others; on a page longer than Hermes's per-page window, the passages about the question come first, nothing removed). Bundles a research skill, a setup wizard and an uninstall command.","disclosure":"downloads the URLs web_extract is asked to read, from this machine, and each site's /llms.txt once per hour (on by default, setting llms_txt), through Hermes's SSRF-safe client (private, loopback, link-local and metadata addresses refused on every redirect hop; results report the final URL so Hermes re-checks it; a browser view that ends on a non-public address is dropped); `setup` optionally creates an isolated `hermes pm` environment with Crawl4AI, which drives Hermes's own Chromium (`hermes pm install chromium` if missing; the plugin downloads no browser); each Crawl4AI read is a child process (at most 3 at once, 60 s cap) that starts that Chromium headless with a DevTools port on 127.0.0.1 and a temporary profile, then stops it; each document is converted by anydoc in a child process (60 s cap); `setup` installs Hermes's `doc-extract` extra if missing; `setup` optionally creates an OCR environment (RapidOCR, onnxruntime, pypdfium2) whose first run downloads about 32 MB of OCR models from RapidOCR's official modelscope.cn repository, checked by SHA-256, and each scanned PDF is then read in a child process (180 s cap); appends one sentence to each user message (setting `remind`); `setup` writes web.search_backend, web.extract_backend, skills.auto_load and SEARXNG_URL, recording replaced values under plugin-data/webgraft; child processes get a minimal environment, never Hermes's API keys; reads other installed plugins' plugin.yaml to step aside when another one rewrites replies; page text stays in memory only; no telemetry.","category":"web","platforms":["linux","windows"],"maintainer":"ElSerda","author":"ElSerda","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/ElSerda/webgraft","docs":"https://github.com/ElSerda/webgraft#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","transform_tool_result","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153056,"prs":[{"n":153056,"state":"open","created":"2026-11-11T01:59:46Z"}],"created":"2026-11-11T01:59:46Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sieve","title":"SIEVE","summary":"User-owned notification boundary for Hermes Agent. Event classes route through tiers T0 to T5 under quiet hours. Routine alerts hold for a digest. Urgent ones escalate, and the message names both the requested tier and the arm that actually ran.","disclosure":"","category":"automation","platforms":[],"maintainer":"VGFreakXBL","author":"VGFreakXBL","version":"0.1.0","requires_hermes":"","repo":"https://github.com/VGFreakXBL/hermes-sieve","docs":"https://github.com/VGFreakXBL/hermes-sieve","tools":["sieve_ping"],"hooks":["pre_gateway_dispatch","on_human_input_request","on_human_input_resolved","pre_approval_request","post_approval_response","kanban_task_blocked","subagent_stop","on_session_end","on_interim_message"],"middleware":[],"env":[],"known_issues":"Context slots such as meeting or sleeping are set with /sieve context. This build does not read location or calendar.; T4 is a 60-second timer. T5 is an alarm one minute out. They share one tone. T5 is top priority, not a siren.; Closed-app wake is not available in the current official iOS beta. The phone arm needs the Hermes app open and synced to this profile.; A messaging push is an ordinary notification. Focus can silence it, and it does not ring. It is a weaker interrupt than an alarm.; The desktop status poll and /sieve probe run tailscale status --json. A missing binary, a timeout, and the first reading are not an outage. That probe does not run when Desktop is closed or the Mac is asleep.; The Tailscale/gateway watchdog (scripts/watch.py) is opt-in and does not start itself. Load it once from a terminal with launchctl bootstrap. It cannot see an outage while the Mac is asleep.; The Desktop pane cannot write the phone. Desktop chat may refuse /sieve with permission_denied before the plugin starts. Run /sieve doctor in Discord or Telegram. That result is kept and shown on the pane.; A probe gap (Mac asleep, or the watcher not running) means the link state during that gap is unknown. A drop and recovery across a sleep is not observed.; One gallery screenshot (the matrix pane). More follow in a later SHA bump.","state":"open","pr":153052,"prs":[{"n":153052,"state":"open","created":"2026-11-11T01:46:40Z"}],"created":"2026-11-11T01:46:40Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/VGFreakXBL/hermes-sieve/5da94237700515df123773dc542eb5cd7e394525/docs/screenshots/sieve-matrix-pane.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sieve.webp"},{"name":"show-your-work","title":"Show Your Work","summary":"An evidence board for a change's acceptance criteria: which requirements your agent actually tested, what the imported results say, whether they still match the code, and whether you signed off. Point it at the requirements you already have (a ticket, bug report or spec in Markdown) and it shows four separate statuses per requirement, never merged into one green check: coverage (is a test linked?), outcome (latest imported JUnit run), freshness (tracked files changed since?) and human review. For review, click a requirement and then a linked test to see that test's source and its own diff against the base branch (new, changed or unchanged), plus the change under review. The agent links tests and imports reports from wherever they ran (terminal, Docker, CI); it has no tool to accept or reject. Sign-off comes from the Desktop page, /syw or hermes syw. Five tools (syw_board, syw_link, syw_import, syw_run_detail, syw_test_evidence), a /syw command, a hermes syw CLI, a Desktop page and a workflow skill.","disclosure":"runs no tests and makes no network or model calls. Reads syw.toml, the criteria file, tracked files (to hash them) and JUnit XML inside the project folder (paths outside it and symlinks refused; defusedxml, entities refused; 5 MB per file, 500 files / 50 MB per folder). Runs read-only git (rev-parse, merge-base, diff, show, ls-files) in the project folder when someone opens a test's evidence or the change panel. Stores links, results (failure messages up to 2,000 chars), hashes and reviews in SQLite under the profile's plugin-data; runs and reviews are append-only. Writes show-your-work-review.md into the project only on export (refused if it is a symlink; written via a temp file and os.replace). Criteria files capped at 5 MB. Python dependency: defusedxml>=0.7.1,<0.8.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"kenpritchard","author":"kenpritchard","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/kenpritchard/show-your-work","docs":"https://github.com/kenpritchard/show-your-work/blob/2ada81ff5a8b2aca974f464a6d32c250319ba1e0/docs/USAGE.md","tools":["syw_board","syw_link","syw_import","syw_run_detail","syw_test_evidence"],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign-off is human-only through the plugin's tools, but `hermes syw accept` is an ordinary CLI command, so an agent with a terminal tool could run it (recorded as human:cli). The bundled skill tells agents never to.; With a remote backend (Docker, SSH), `hermes plugins update` on the server updates only the agent half; update the Desktop page from Desktop (Install from Git / Update with Desktop ticked) and Reload desktop plugins. After installing or updating, restart the dashboard backend so the page's API and the plugin host load the new code.; On native Windows, `hermes plugins install` can fail with WinError 32/5 (Hermes installer, #136120); docs/USAGE.md has a manual-clone workaround.; Finding a test's source from its JUnit id is a best guess (Java/Kotlin/Scala/Groovy, Python, Go, simple JS); when it can't, the panel says so.","state":"open","pr":153051,"prs":[{"n":153051,"state":"open","created":"2026-11-11T01:46:13Z"}],"created":"2026-11-11T01:46:13Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/thekenpritchard/status/2120331846177423840"],"youtube":[],"thumb":null},{"name":"mandate","title":"Mandate","summary":"Learned least-privilege for cron jobs. Observes what a job does, proposes an argument-level mandate, and after human approval blocks out-of-mandate tool calls.","disclosure":"","category":"automation","platforms":["linux","macos"],"maintainer":"JoeProAI","author":"JoeProAI","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/JoeProAI/mandate","docs":"https://github.com/JoeProAI/mandate#readme","tools":["mandate_status"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"Enforces only for cron runs and chat sessions bound with /mandate scope; other interactive sessions are not affected.; Commands that hide their intent (bash -c, eval, python -c, pipes into sh) are blocked unless allowed verbatim.","state":"open","pr":153050,"prs":[{"n":153050,"state":"open","created":"2026-11-11T01:45:24Z"}],"created":"2026-11-11T01:45:24Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":["https://github.com/JoeProAI/mandate/releases/download/demo-video/mandate-demo.mp4"],"x":["https://x.com/JoePro/status/2120617514568712445"],"youtube":[],"thumb":null},{"name":"model-forge-desktop","title":"Model Forge Desktop","summary":"Model Forge cockpit pane for Hermes Desktop — compute targets, live engines, loaded models and hardware at a glance. Companion UI for the Model Forge plugin.","disclosure":"renders local plugin state only; no network calls, no shell commands, no credentials, no background processes.","category":"desktop","platforms":[],"maintainer":"mr-pewpy","author":"mr-pewpy","version":"0.1.0","requires_hermes":"","repo":"https://github.com/mr-pewpy/model-forge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":153040,"prs":[{"n":153040,"state":"open","created":"2026-11-11T01:39:01Z"}],"created":"2026-11-11T01:39:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"model-forge-image","title":"Model Forge Image Backend","summary":"Model Forge local image-generation backend — routes Hermes image_generate to any OpenAI-compatible images API (weights broker, vLLM-Omni, SGLang Diffusion, ComfyUI). Companion package for the Model Forge plugin.","disclosure":"sends generation requests to the local endpoints the user configures; no third-party network calls, no shell commands, no stored credentials, no telemetry.","category":"models","platforms":[],"maintainer":"mr-pewpy","author":"mr-pewpy","version":"0.1.0","requires_hermes":"","repo":"https://github.com/mr-pewpy/model-forge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153040,"prs":[{"n":153040,"state":"open","created":"2026-11-11T01:39:01Z"}],"created":"2026-11-11T01:39:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"model-forge-providers","title":"Model Forge Providers","summary":"Local engine model-provider profiles for Model Forge (Strata, Project Maya) — run Hermes chat on local MoE engines and make their models selectable in /model. Companion package for the Model Forge plugin.","disclosure":"sends prompts and requests to the local engine endpoints the user configures; no third-party network calls, no shell commands, no stored credentials, no telemetry.","category":"models","platforms":[],"maintainer":"mr-pewpy","author":"mr-pewpy","version":"0.1.0","requires_hermes":"","repo":"https://github.com/mr-pewpy/model-forge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":153040,"prs":[{"n":153040,"state":"open","created":"2026-11-11T01:39:01Z"}],"created":"2026-11-11T01:39:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"model-forge-video","title":"Model Forge Video Backend","summary":"Model Forge local video-generation backend — routes Hermes video_generate to any OpenAI-compatible video job API (weights broker, engines with /v1/videos). Companion package for the Model Forge plugin.","disclosure":"submits video jobs to the local endpoints the user configures; no third-party network calls, no shell commands, no stored credentials, no telemetry.","category":"models","platforms":[],"maintainer":"mr-pewpy","author":"mr-pewpy","version":"0.1.0","requires_hermes":"","repo":"https://github.com/mr-pewpy/model-forge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":153040,"prs":[{"n":153040,"state":"open","created":"2026-11-11T01:39:01Z"}],"created":"2026-11-11T01:39:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"model-forge","title":"Model Forge","summary":"Local models for every modality — chat, vision, OCR, image generation and editing, video, 3D meshes, music, SFX and voice. Model Forge finds your hardware (local GPU or LAN compute targets), shows which models fit, drives the right inference engine (llama.cpp, Strata, Ollama, vLLM, ComfyUI, weights broker and more), pulls the model, serves it, and wires it into Hermes as a provider — so chat, image_generate, video_generate, vision and TTS run on your own hardware with no account and no API key. Six tools: model_forge_status (targets, VRAM/RAM, engines, loaded models), model_forge_browse (per-modality model catalog with hardware-fit verdicts), model_forge_target_add (register LAN compute targets), model_forge_install (pull models through engine-native paths), model_forge_activate (wire a served model into Hermes), model_forge_generate_media (image, 3D, music, SFX and voice jobs against any local engine).","disclosure":"model pulls download weights from huggingface.co or modelscope.cn on user request (optional HF_TOKEN / MODELSCOPE_API_TOKEN pull credentials live in plugin settings, are read only through Hermes' secret route and are sent only to their own host family); the plugin runs shell commands to start and stop local inference engines and manages those long-running background processes; it probes hardware state (GPU, VRAM, RAM) on registered compute targets; no telemetry.","category":"tools","platforms":[],"maintainer":"mr-pewpy","author":"mr-pewpy","version":"0.2.0","requires_hermes":"","repo":"https://github.com/mr-pewpy/model-forge","docs":null,"tools":["model_forge_status","model_forge_browse","model_forge_target_add","model_forge_install","model_forge_activate","model_forge_generate_media"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153040,"prs":[{"n":153040,"state":"open","created":"2026-11-11T01:39:01Z"}],"created":"2026-11-11T01:39:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"glide","title":"Glide","summary":"Kevin Rajan's Hermes frontend for Tern, built on alt-glitch/hermes-tern (MIT) and carrying about 890 commits of its own. One install gives `hermes tern`, which draws the chat as native Tern UI, plus `/glide`, a guided setup that makes Hermes learn from you and run more of its work locally. Added over the original: charts from Markdown tables, OpenUI and ephemeral-ui answer cards, 3D artifacts beside the chat, written artifacts and session links, Tern browser blocks, image delivery across hosts, LSP diagnostics cards, plan review with a todo HUD, native /btw side questions and read-only MCP/SSH report sheets, live wait tiles for subagents, fork-a-session panes, /rewind, /undo and /tree, native /settings and a /models provider hub, a Vim composer, a command palette and shortcut preferences, queue-or-steer busy input, opt-in live voice with helper lanes beside the thinking orb (role, model and real state from a local lane broker), a work dock, a thinking-orbs indicator, frontend channels (`hermes tern --channel`), and tool cards that report refusals, truncation and partial failures instead of hiding them. Glide guards two scarce resources: your attention and the agent's context window. `/glide focus` shows your current phase, next deep-work window and usual stop time, learned from your own local session timestamps (or from z0intelligence's `circadian` and a loopback Flowkit flow estimate when installed); a deep-work block holds non-critical agent notifications and approval asks for one digest at the end while critical ones still pass, and one wind-down card saves a resume note for the next session. `/glide` (also `hermes glide onboard`) is a chain of approve cards: detect the machine and local runtimes (and z0intelligence if installed); build a corrections memory from your past local sessions (your messages that start \"no,\", \"actually,\" or \"correction:\") and quote up to three matching corrections into each new turn through a pre_llm_call hook, using deterministic BM25 with no embeddings or model calls; a skill router catalog; a measured CPU hill climb whose referee says KEEP, REVERT or INCONCLUSIVE; offload of small tasks to an installed Ollama model with estimated savings; and an optional Taste board pane beside the chat.","disclosure":"network: GitHub's API with the optional GITHUB_TOKEN for the pull request view; the user's own auxiliary model for live process charts; /glide taste talks only to a loopback Taste Atlas server (127.0.0.1:8789 by default); /glide focus reads only a loopback Flowkit server (127.0.0.1:8787 by default) if one answers; live-voice helper lanes poll only a loopback lane broker (127.0.0.1:8791 by default) and stay off without its local token file; no telemetry. Commands: runs the `tern` CLI to open files and splits; /glide runs `nvidia-smi`, `ollama list`/`ollama run` and, if installed, `z0int doctor --json` and `circadian show --json`, each only on an approved step and with a timeout; the hill climb runs a local CPU benchmark; nothing is installed or downloaded. Reads outside its data: the profile's Hermes session database, read-only (local sessions only; cron, delegated and hidden sessions skipped), and the session's background-process output. Writes only under the profile (`<profile>/glide/`). No background processes of its own. Install this or hermes-tern, not both: both register `hermes tern`.","category":"desktop","platforms":[],"maintainer":"kvnloo","author":"kvnloo","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/kvnloo/glide","docs":"https://github.com/kvnloo/glide#readme","tools":["link_pull_request","unlink_pull_request","list_pull_requests"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153039,"prs":[{"n":153039,"state":"open","created":"2026-11-11T01:32:29Z"}],"created":"2026-11-11T01:32:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"formwork","title":"Formwork","summary":"Complete a packet of fillable PDFs inside Hermes Desktop. See each suggested answer on the original form, open its exact source page and quote, and review it before export. Enter a missing fact once and choose which matching fields should reuse it. Save editable PDFs and a review record in one ZIP.","disclosure":"Formwork sends the full text of your supporting PDFs, form field details and rendered images of each form page to the model in its \"Formwork extraction\" auxiliary slot (it uses your Hermes Vision model until you set one), and it keeps imported PDFs, previews, exports and archived packets under plugin-data/formwork after the plugin is removed.","category":"desktop","platforms":["windows"],"maintainer":"ladyFaye1998","author":"ladyFaye1998","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ladyFaye1998/hermes-formwork","docs":"https://github.com/ladyFaye1998/hermes-formwork#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Native workflow verified on Windows with Hermes 0.23.1.; Supported AcroForms and text-bearing source PDFs only; printable ASCII for text output. No OCR, XFA, signing or interactive calculations.; The Formwork extraction auxiliary model must accept images. It inherits Hermes Vision until configured separately.","state":"open","pr":153038,"prs":[{"n":153038,"state":"open","created":"2026-11-11T01:29:53Z"}],"created":"2026-11-11T01:29:53Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/docs/banner.png","https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/docs/screenshots/native-review.png","https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/docs/screenshots/native-source.png","https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/docs/screenshots/native-reuse.png","https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/docs/screenshots/native-export.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/formwork.webp"},{"name":"ceo-pack","title":"ceo-pack","summary":"CEO Pack — a CEO orchestration layer for Hermes. Brief, route, plan, assign, call, verify, log, with Hermes as COO. One owner and one due date per task, Type 1 / Type 2 decision gating, credential-safe tool calls, and owner approval for external actions. Free model default is Nemotron 3 Ultra free, with GLM Flash free fallback and paid Claude Sonnet 5.5 / Opus 5.5 overrides the user chooses. The plugin returns model choices; it does not call a model itself (stdlib-only, catalog-safe).","disclosure":"","category":"tools","platforms":[],"maintainer":"tradersurfer93","author":"tradersurfer","version":"0.3.0","requires_hermes":">=0.21.6","repo":"https://github.com/tradersurfer/ceo-layer","docs":null,"tools":["ceo_brief","ceo_assign","ceo_decision_log","ceo_route","q4_closeout_checklist","ceo_orchestrate","ceo_choose_model","ceo_tool_call","ceo_verify"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153027,"prs":[{"n":153027,"state":"open","created":"2026-11-11T01:06:59Z"}],"created":"2026-11-11T01:06:59Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"imagination-studio","title":"Imagination Studio","summary":"Make pictures, video clips with sound, voice lines, songs and sound effects on your own machine with Imagination Studio (by keys + Wasserman): FLUX 3 Klein / Qwen-Image, MiniMax H3 / FastH3, Fish Audio Drama 3, MiniMax Music 3 and Stable Audio Open, rendered in the Studio's own queue and delivered to the chat as attachments.","disclosure":"HTTP calls only to the Imagination Studio at the studio_url setting (default http://127.0.0.1:7870), no other service and no telemetry; copies finished files into HERMES_HOME/plugin-data/imagination-studio/outputs (up to max_download_mb each, never pruned automatically); reads the optional Studio access key with get_secret (IMAGINATION_STUDIO_KEY) and stores none; no shell commands, subprocesses or background threads; a tool call blocks for at most wait_seconds (default 120, max 600). Rendering itself happens in the Studio, which uses the GPU under its own memory and thermal gates.","category":"tools","platforms":[],"maintainer":"drowzeys","author":"drowzeys","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/Keys-Wasserman/hermes-imagination-studio","docs":null,"tools":["studio_status","studio_picture","studio_clip","studio_voice","studio_song","studio_sound","studio_job","studio_jobs","studio_cancel","studio_library"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153026,"prs":[{"n":153026,"state":"open","created":"2026-11-11T01:06:51Z"}],"created":"2026-11-11T01:06:51Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/banner.png","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/00-studio-home.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/01-pictures.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/02-clips.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/03-voices.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/04-songs.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/4aec4c265dba1ab02f74c89b177eea4c9d17a41b/assets/catalog/walkthrough/06-library.jpg","https://raw.githubusercontent.com/Keys-Wasserman/hermes-imagination-studio/f8fad3a80161e3b2fa196b8a87f49ffb9d753d28/assets/catalog/walkthrough/00-studio-home.jpg"],"videos":["https://github.com/Keys-Wasserman/hermes-imagination-studio/releases/download/trailer-v0.1.0/imagination-studio-hermes-plugin-trailer.mp4"],"x":["https://x.com/u1tra_instinct/status/2120405597325517117"],"youtube":[],"thumb":"/hackathon/thumbs/imagination-studio.webp"},{"name":"home-3d-workshop","title":"Home 3D Workshop","summary":"Ask. It's in the box. A 3D printer as a member of the group chat (the persona is Mıstık by default; the name and the en/tr message language are settings, English by default). People in a family or team chat ask in plain words, often by voice note; the agent finds MakerWorld models through Bambuddy, scales one, or designs a part in OpenSCAD (it writes the code, renders it, looks at the preview pictures and keeps every version), slices, and queues with manual start. A print starts only with the owner's typed approval (never from a voice note); when someone else asks, the watcher passes the request to the owner with the exact command. A zero-token cron watcher follows the print; the person who asked gets a one-line start notice and, at the end, a line with a photo in the chat the request came from (groups setting: family or team tone, per-group language), and the owner gets a technical note. Notices go through a saved outbox with retries. Finished parts are tracked in a done box. The owner gets one Workshop screen in Hermes Desktop (approval card with the part in 3D, Start, Pause and Stop, queue, done box, messages, filament, setup check, design versions). Each moment a person had to step in is logged, and repeats become upgrade proposals (for example a printed tilted base for auto-eject). Works with a Bambu Lab printer managed by Bambuddy, or with a built-in simulated printer (hermes home3d demo).","disclosure":"Network: only the one Bambuddy URL you set, over HTTP on your LAN. When HOME3D_BAMBUDDY_API_KEY is set, it is sent as X-API-Key, unencrypted over plain http. MakerWorld lookups and downloads go through Bambuddy; the plugin makes no other network calls. The setup check (hermes home3d doctor, the status tool's capabilities, the Workshop screen) makes read-only requests, including GET /api/v1/updates/version, /api/v1/makerworld/status and /api/v1/printers/<id>/camera/status, and never takes a photo. Writes: import, scale, design upload, slice and queue add write to the Bambuddy library and queue without a prompt, for the owner and the people in the household list (unknown senders only with allow_guests); queued items are always manual start. Queue remove only removes the asking person's own waiting items: never a job queued outside the workshop or another household member's job, not even for the owner (who can remove anything by hand in Bambuddy). Bambuddy settings are read (GET /settings/) and never changed. With Bambuddy's require_plate_clear off, Bambuddy may start its own auto-start items on a finished printer before the camera check; hermes home3d doctor warns about this. Chamber light: a tool photo or plate check switches it on for about 12 s and restores its earlier state. The cron watcher also switches it by itself for its plate checks and photos: at most once per pass (twice when a camera request fails), one photo near the end of each workshop print (other prints: one photo and plate check in one light cycle when they end), a check when a print ends, and re-checks that back off 15, 30, 60 and 120 min (at most 6) while a plate or a job waits. Approvals: start, resume and plate-clear confirm follow one rule for the agent path, /home3d and the Workshop screen. They are blocked in cron and in runs with nobody present (kanban workers, chat -q, -z, --source tool; both checks fail closed), when a safety gate fails (printer busy or offline, active HMS error, plate not judged empty, another person's job ahead, plate not confirmed after a failed print, bed hot or of unknown temperature for a plate clear), for unknown or non-owner senders, who are told that the owner approves with /home3d approve, and when the ask came in as a voice note (a typed confirmation is asked for). Voice is detected by the pre_gateway_dispatch hook, which reads only the message type and sender id of each inbound gateway message (never the text), keeps the newest few per sender in memory for 10 minutes and always returns None, and by the transcript shape of the turn text; it does not see local CLI, TUI or Desktop turns. A household member's blocked request is stored, and the watcher tells the owner once (when owner_target is set; otherwise the block tells the person to ask the owner directly). Only an owner session gets the Hermes approve prompt. The owner is any id in owner_ids, plus, while local_is_owner is true (the default), any local CLI, TUI or Desktop session and any slash command typed in the TUI, Desktop or web dashboard or run by the Workshop screen; turn local_is_owner off when others can reach the dashboard. On IRC and ntfy, where people choose their own ids, only an entry written with the platform (irc:<nick>) matches a sender. The tool handler also needs a single-use pass from that hook or from /home3d approve, so a call that skips the hook is refused, and it checks the plate with the camera right before the action. /home3d approve runs the gate and the action at once and stores nothing for later. yolo and approvals off skip the prompt in an owner session (the unattended, identity and voice rules are blocks and are not skipped). Each rule_key is unique, so always does not carry over, and each always answer adds one unused command_allowlist line to config.yaml. Stop and pause need no approval and pass no gate; who may use them is stop_policy (known: the owner and the household list, the default; anyone; owner), and the person who did it is recorded. Hook time: pre_tool_call reads only printer status and queue (at most 5 s per request, 12 s in all, never the camera), so it stays inside Hermes' 30 s hook limit; with a lower plugins.hook_callback_timeout it allows itself 0.4 of it. Workshop screen: three GET routes under /api/plugins/home-3d-workshop/ (health, overview, file), mounted only while the plugin is enabled and callable by anyone who can use that Hermes's dashboard or API; overview returns printer state, queue, requesters' names and words, groups, the done box, filament, moments, upgrades, design versions and the setup check (notice texts and setup details only while local_is_owner is on, chat targets never), reads printer status and queue on each call and runs the setup check (read-only Bambuddy requests, hermes cron list) in the background at most once every 5 minutes; file returns only design STLs, design previews and stored camera photos from the plugin's data folder; no route writes anything. The Desktop half (desktop/plugin.js, built with esbuild, three.js bundled) is off until turned on in Capabilities, calls only its own routes, the gateway's session.create (one hidden session titled Workshop actions (home-3d-workshop)) and slash.exec with /home3d commands only, polls overview every 15 s for its status-bar chip and every 5 s while the page is open, and runs printer actions as the local user through /home3d, so the owner check applies. Hermes internals: besides ctx.current_cron_execution(), the cron, unattended and origin-chat checks read non-public Hermes internals from sys.modules (gateway.session_context.get_session_env, also for HERMES_SESSION_CHAT_ID; cron.execution_identity._CURRENT; gateway.session_finite; and hermes_cli.plugins._resolve_hook_callback_timeout for the hook deadline); they are never imported or patched. A check that raises counts as cron or unattended (fail closed); a renamed one is skipped. Subprocesses: hermes send for notices (with -p send_profile when set, each stopped after send_timeout_s, default 20 s, and all sends of one pass within send_budget_s, default 45 s); hermes cron create, list and remove from hermes home3d setup and teardown, and hermes cron list for the setup check; openscad for the name-tag and label-box templates and for the agent's designs (and openscad --version for the setup check), and xvfb-run for the design preview pictures, when they are installed (one render at a time, a 180 s default time limit, a CPU-time limit, a memory cap and an STL size cap; a design may read files only from its own folder and OpenSCAD's own libraries, checked in the source and in OpenSCAD's list of the files it read). hermes home3d setup writes HERMES_HOME/scripts/home3d_watch.py and creates one hermes cron create --no-agent --script job, every 2 minutes by default (720 runs a day, no daily cap); it runs while the Hermes scheduler (hermes gateway) runs; setup --print-only writes nothing. The job calls no model, and empty output sends nothing. A failed notice is retried on later passes (backoff from 1 min to 4 h, at most 10 attempts within 24 h), then the owner is told once. The script reads HERMES_HOME/config.yaml (the plugin settings) and stays silent while the plugin is disabled or removed. The job and the script stay until hermes home3d teardown (after an uninstall: hermes cron remove and delete the script). Data stays local under HERMES_HOME/plugin-data/home-3d-workshop: a SQLite database (requests with the platform and chat id they came from, jobs, household and group sender ids and names, approval requests, who stopped or paused a print, the outbox with every notice and its delivery state, done-box records with who a part is for and who picked it up, open human-needed moments, audit events), outbox.jsonl with every send attempt, camera photos, model files, designs (OpenSCAD source, STL, preview pictures and facts for every version), a watcher log and a settings snapshot without secrets (the watcher's fallback). pre_llm_call adds up to 900 characters of context (persona, speaker, printer state): for household members and the local owner on the first turn, on printing turns and on printer state changes, else one speaker line; for other senders only on printing turns; inject_context: never turns it off. The tools are on for every surface, and while the plugin is enabled its two skills add one line each to the skills index of every session. Tested on Linux with Hermes 0.22.5; the Workshop screen was run in Hermes 0.23.1 (Webapp) on the simulated printer, not yet in the Desktop app. Verified on a real Bambuddy 1.3.0 with an A1: printer status, queue, Bambuddy settings, lit photo with plate check, MakerWorld import, slice, scale, queue add and remove, and the watcher in dry run on a real print (finish and plate check). The templates, a sample design and the file-access probes are tested with OpenSCAD 2021.01 in CI; a part designed with home3d_design was uploaded and sliced on the real Bambuddy. Planned on the real printer: start, stop, pause and resume, watcher notices and auto-eject with this plugin; nothing new in 0.2.0 was run on it.","category":"automation","platforms":[],"maintainer":"Wijt","author":"Wijt","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/Wijt/hermes-home-3d-workshop","docs":"https://github.com/Wijt/hermes-home-3d-workshop#readme","tools":["home3d_status","home3d_camera","home3d_find_models","home3d_import","home3d_customize","home3d_design","home3d_slice","home3d_queue","home3d_start","home3d_stop","home3d_clear_plate","home3d_household","home3d_human_needed","home3d_upgrades"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"Bambu Lab printers through Bambuddy only (tested with Bambuddy 1.3.0 and an A1). The default backend is a simulated printer.; Real-printer status: status, queue, settings, lit photo with plate check, import, slice, scale, queue add/remove, a designed part uploaded and sliced, and the watcher in dry run on a real print are verified; start, stop/pause/resume, watcher notices and auto-eject with this plugin are planned. Nothing new in 0.2.0 was run on the real printer.; The Workshop screen was run in Hermes 0.23.1 (headless gateway and Webapp) on the simulated printer, not yet in the Hermes Desktop app. Its Desktop half is off until you turn it on in Capabilities → Plugins.; Since 0.2.0, stop and pause are open to known people only (stop_policy: known) and unknown senders cannot prepare prints (allow_guests: false).; Voice detection is in memory and sees only messages that reach the messaging gateway; a restart forgets recent voice notes.; Auto-eject needs your own tilted base and an end G-code preset; the plugin ships no G-code. Turn on Bambuddy's Require plate clear setting.; The watcher cron job runs only while the Hermes scheduler runs (hermes gateway).; Designing parts needs openscad (and xvfb-run for preview pictures) on the Hermes machine; without it the agent uses ready models and the scale tool only.; Tested on Linux only.","state":"open","pr":153024,"prs":[{"n":153024,"state":"open","created":"2026-11-11T01:04:47Z"}],"created":"2026-11-11T01:04:47Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/Wijt/hermes-home-3d-workshop/8068c2533ac03e9067448bf5c6433419f0ab316c/docs/screenshots/banner.png","https://raw.githubusercontent.com/Wijt/hermes-home-3d-workshop/8068c2533ac03e9067448bf5c6433419f0ab316c/docs/screenshots/workshop-approve-light.png","https://raw.githubusercontent.com/Wijt/hermes-home-3d-workshop/8068c2533ac03e9067448bf5c6433419f0ab316c/docs/screenshots/workshop-printing-light.png","https://raw.githubusercontent.com/Wijt/hermes-home-3d-workshop/8068c2533ac03e9067448bf5c6433419f0ab316c/docs/screenshots/workshop-done-and-health.png","https://raw.githubusercontent.com/Wijt/hermes-home-3d-workshop/8068c2533ac03e9067448bf5c6433419f0ab316c/docs/screenshots/workshop-approve-dark.png"],"videos":[],"x":["https://x.com/iamfurkankaya/status/2120627526934700461"],"youtube":[],"thumb":"/hackathon/thumbs/home-3d-workshop.webp"},{"name":"parallax","title":"Hermes Parallax","summary":"Multi-perspective fact-vs-frame lens, blind code security taste-test, and rubric-gated DPO/SFT dataset forge","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"kruschdev","author":"kruschdev","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/kruschdev/Hermes-Parallax","docs":null,"tools":["parallax_frame_audit","parallax_code_audit","parallax_curate_pair","parallax_export_dataset","parallax_ledger_status"],"hooks":["post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153023,"prs":[{"n":153023,"state":"open","created":"2026-11-11T01:03:18Z"}],"created":"2026-11-11T01:03:18Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kruschdev/Hermes-Parallax/4fff9b4873ed1be606fbf7dabe375efb53408df6/docs/assets/hermes-parallax-video-card.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/parallax.webp"},{"name":"breadcrumbs","title":"breadcrumbs","summary":"Memory and a context engine in which every line has an address. Each turn, tool step and tool result is a crumb in a content-addressed, append-only store (CRC32C ids, Merkle commits). One tool, crumb(id, level), shows any memory from a one-line handle (0) to its exact bytes (1). crumb_find searches with BM25: no vectors, no model. Each recall, find, open and fold writes a record of what the model saw. With context.engine breadcrumbs, a long chat folds into a layer of crumbs with no model call, and the model opens any folded turn by its id. /island gives each codebase its own profile. A read-only explorer shows the sessions, the zoom and the context of each turn.","disclosure":"the data stays in $HERMES_HOME/breadcrumbs/; each turn is kept word for word, append-only. No network calls, no credentials and no telemetry by default (the hive sends crumb_find queries only to peers that config.json lists). An optional background thread runs the user's local llama-completion on a local GGUF model after a span or a session closes (BREADCRUMBS_SUMMARIZE=0 turns it off). /island, after a Yes, runs `hermes profile create --clone-from` and `hermes config set terminal.cwd` as a child process (stdin closed, 300 s) and asks Hermes to /quit; the clone copies the profile's keys, plugins and memory files. The dashboard API and the log views read config.yaml and state.db of profiles, read-only. transform_llm_output adds one offer line to a reply when a chat mixes codebases. CLI commands that the user runs: serve (a read-only page on 127.0.0.1 with a token), ingest-hermes (reads state.db read-only), push and pull (the local ipfs binary). One dependency: google-crc32c.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"jnorthrup","author":"jnorthrup","version":"0.4.1","requires_hermes":">=0.22.5","repo":"https://github.com/breadcrumbs-agency/hermes-breadcrumb-plugin","docs":"https://github.com/breadcrumbs-agency/hermes-breadcrumb-plugin#readme","tools":[],"hooks":["on_session_start","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Select it: `hermes config set memory.provider breadcrumbs`, and `hermes config set context.engine breadcrumbs` for the context engine. An install alone turns nothing on.; The tools crumb and crumb_find come through the memory provider, not ctx.register_tool, so the plugin's tool list is empty. Their names carry the prefix mcp__ (mcp__crumb, mcp__crumb_find): Anthropic OAuth maps only registry tools back to their names. BREADCRUMBS_TOOL_PREFIX changes the prefix.; Windows has no flock: use one writer per store there.; Summaries need llama.cpp's llama-completion and a GGUF model. Without them all else works.; slot.py, seats.py, island.py and logview.py import Hermes modules that have no public seam yet (plugins.memory, hermes_cli.profiles, hermes_cli.relaunch, hermes_cli.sqlite_safe_read). Each import fails soft: if a release moves it, that feature turns off and logs a warning.; /island asks through ctx.ask_choice (Hermes 0.22.5 or later).","state":"open","pr":153020,"prs":[{"n":153020,"state":"open","created":"2026-11-11T00:58:30Z"}],"created":"2026-11-11T00:58:30Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/breadcrumbs-agency/hermes-breadcrumb-plugin/b8975645e5174edbcc00d5dc86a78e536bce938b/docs/img/hero.png","https://raw.githubusercontent.com/breadcrumbs-agency/hermes-breadcrumb-plugin/b8975645e5174edbcc00d5dc86a78e536bce938b/docs/media/zoom.png","https://raw.githubusercontent.com/breadcrumbs-agency/hermes-breadcrumb-plugin/b8975645e5174edbcc00d5dc86a78e536bce938b/docs/media/demo-v7.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/breadcrumbs.webp"},{"name":"ideacut","title":"IDEA CUT","summary":"Turns a chat brief into an editable, art-directed video: seven agent tools capture and record a public page, write typed scenes, revise them and export H.264 MP4 locally with Chromium and FFmpeg. Capture goes through a loopback validating proxy that refuses private/loopback/metadata targets. Optional narration is sent to the user's configured TTS provider; the live preview is silent.","disclosure":"ideacut_capture and ideacut_record open model-chosen public web pages in your installed Chrome/Edge (headless) and can scroll, click and type into them (forms included); every connection goes through a loopback-only proxy that refuses private, loopback and cloud-metadata addresses. Scene images, clips and music may be any local file path the agent names and are copied into the plugin's data folder. Rendering runs your system FFmpeg/ffprobe. Voice-over (off by default) sends each scene's narration text to your configured Hermes TTS provider (directly via edge-tts when that provider is Edge).","category":"desktop","platforms":["windows","macos","linux"],"maintainer":"ROCK","author":"ranggaoscar","version":"1.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/ranggaoscar/ideacut","docs":"https://github.com/ranggaoscar/ideacut#readme","tools":["ideacut_create","ideacut_edit","ideacut_get","ideacut_capture","ideacut_record","ideacut_preview","ideacut_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"Narration uses an internal Hermes TTS import (catalog rule 9 warning); a public seam is not available yet.; Clip audio is discarded on import. Desktop/mobile capture requires separate host tools or imported recordings.; The preview is silent; music and voice exist only in the exported file.","state":"open","pr":153017,"prs":[{"n":153017,"state":"open","created":"2026-11-11T00:51:53Z"}],"created":"2026-11-11T00:51:53Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/covers/catalog-cover.png","https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/screenshots/01-gallery.png","https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/screenshots/02-studio.png","https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/screenshots/03-export.png","https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/logo/logo-horizontal-dark.png","https://raw.githubusercontent.com/ranggaoscar/ideacut/67a6f701d4c939c6de052ba4b3ae8a3e04b5bb3a/assets/brand/covers/readme-hero.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ideacut.webp"},{"name":"caduceus-governance","title":"Caduceus Governance","summary":"Deterministic, model-free admission control for what Hermes writes into its own skills: content lanes, operator-owned executable checks, a provenance lane for writes made after untrusted web/browser/MCP content, a tamper-evident ledger, and operator release/rollback. Observe by default.","disclosure":"","category":"tools","platforms":[],"maintainer":"Epistetechnician","author":"Epistetechnician","version":"0.1.0","requires_hermes":"","repo":"https://github.com/Epistetechnician/caduceus","docs":"https://github.com/Epistetechnician/caduceus/blob/3d980d823d79a38c741b3f95b1db071e1803f137/plugin/caduceus_governance/README.md","tools":[],"hooks":["pre_tool_call","transform_tool_result","post_tool_call","on_skill_lifecycle"],"middleware":[],"env":[],"known_issues":"Evidence is local-development only (Claude Haiku 4.5, small samples, simulated web read); see docs/CLAIMS.md.; A hostile line written with no untrusted input in the session is not caught by default; the review dial (prose) reaches a human but costs reading every prose change.; A poisoned page on an operator-trusted host (trusted_hosts) is outside the provenance lane.; Phrase detection (authority lane) failed its preregistered gate and ships off.","state":"open","pr":153015,"prs":[{"n":153015,"state":"open","created":"2026-11-11T00:50:07Z"}],"created":"2026-11-11T00:50:07Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"nousviz","title":"NousViz — Agentic Analytics","summary":"Turn Hermes into a data analyst over your self-hosted NousViz — discover data with a live catalog, query it in natural language (read-only SQL across Postgres/ClickHouse/MySQL), and build dashboards, alerts and annotations by conversation.","disclosure":"","category":"tools","platforms":[],"maintainer":"nousviz","author":"statsdroneadmin","version":"0.14.0","requires_hermes":"","repo":"https://github.com/nousviz/nousviz-agentic-analytics","docs":"https://github.com/nousviz/nousviz-agentic-analytics#readme","tools":["nousviz_catalog","nousviz_insights","nousviz_query","nousviz_push","nousviz_create_dashboard","nousviz_create_alert","nousviz_list_alerts","nousviz_test_alert","nousviz_update_alert","nousviz_delete_alert","nousviz_create_annotation","nousviz_list_annotations","nousviz_feedback","nousviz_dashboard_link","nousviz_share_dashboard"],"hooks":["post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153010,"prs":[{"n":153010,"state":"open","created":"2026-11-11T00:36:41Z"}],"created":"2026-11-11T00:36:41Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"nightshift","title":"Nightshift","summary":"Hermes takes the night shift on your ML training runs: Nightshift watches a run's metrics (stdout, JSONL, CSV or TensorBoard), catches NaN, loss spikes, divergence, out-of-memory crashes and stalls, recovers the run within a playbook you approved (roll back to the last healthy checkpoint with a lower learning rate, or restart with half the batch), and pushes the chart to your phone. Desktop pane, dashboard tab, /nightshift, hermes nightshift and a morning-report blueprint. Zero runtime dependencies.","disclosure":"the agent can only propose a run; after your explicit approval (/nightshift approve in chat or the Approve button; there is no CLI approve) it launches the approved command as a long-running background process with a minimal environment (no Hermes keys unless you name them in env_passthrough, shown on the approval card) and may stop or restart that process group, re-rendering only the approved command with only the parameters the playbook declares (lr, batch size, grad accumulation, checkpoint path), within an intervention budget. It signals only process groups it started (PID-reuse guarded), reads the run's log, metric and checkpoint paths, runs nvidia-smi when present, and stores run data under its plugin data folder. On a critical incident it may make capped LLM calls on your configured model with a redacted log tail, and send an alert through Hermes's own `hermes send` command to your messaging platform. No telemetry and no network calls of its own.","category":"tools","platforms":["linux","macos"],"maintainer":"Pavilion-devs","author":"Pavilion-devs","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/Pavilion-devs/nightshift","docs":"https://github.com/Pavilion-devs/nightshift/blob/e785897b65cd146027d9d1aa3f0cb0eca5b41131/README.md","tools":["nightshift_launch","nightshift_watch","nightshift_status","nightshift_run","nightshift_report","nightshift_ack"],"hooks":["pre_llm_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153009,"prs":[{"n":153009,"state":"open","created":"2026-11-11T00:33:22Z"}],"created":"2026-11-11T00:33:22Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Pavilion-devs/nightshift/e785897b65cd146027d9d1aa3f0cb0eca5b41131/docs/img/alert-chart.png","https://raw.githubusercontent.com/Pavilion-devs/nightshift/e785897b65cd146027d9d1aa3f0cb0eca5b41131/docs/img/dashboard.png","https://raw.githubusercontent.com/Pavilion-devs/nightshift/8bbbd6e4163db347af5d4795134bfae22d036d4c/docs/img/dashboard.png","https://raw.githubusercontent.com/Pavilion-devs/nightshift/8bbbd6e4163db347af5d4795134bfae22d036d4c/docs/img/alert-chart.png"],"videos":[],"x":["https://x.com/olathepavilion/status/2120428632145322184"],"youtube":[],"thumb":"/hackathon/thumbs/nightshift.webp"},{"name":"preflight","title":"preflight","summary":"Approval dry-run gate: runs every terminal command in a disposable copy of the workspace (reflink/copy, no Docker), shows the exact diff, and applies only what the user approves.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"soyluisarca","author":"soyluisarca","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/soyluisarca/hermes-preflight","docs":"https://github.com/soyluisarca/hermes-preflight#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153006,"prs":[{"n":153006,"state":"open","created":"2026-11-11T00:23:59Z"}],"created":"2026-11-11T00:23:59Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-eye-memory","title":"Hermes Eye Memory","summary":"Local visual memory for Hermes: index a photo library, search by meaning, build albums, cull duplicates, extract receipts, and recall what the camera saw.","disclosure":"","category":"memory","platforms":["linux","macos","windows"],"maintainer":"isthatananya","author":"isthatananya","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/isthatananya/hermes-eye-memory","docs":null,"tools":["eye_index","eye_index_status","eye_search","eye_album","eye_duplicates","eye_best","eye_receipts","eye_timeline","eye_stats","eye_forget","eye_capture","eye_look","eye_read","eye_find","eye_remember","eye_recall"],"hooks":[],"middleware":[],"env":[],"known_issues":"CLIP semantic search downloads a model on first use; set embedding_backend to fallback for offline use.; Receipt parsing is heuristic and should be verified.","state":"open","pr":153003,"prs":[{"n":153003,"state":"open","created":"2026-11-11T00:18:49Z"}],"created":"2026-11-11T00:18:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-studio","title":"Hermes Studio — local video workflow","summary":"Local camera takes to reviewed editable portrait Shorts, with explicit media-library discovery and an optional SSH conversation queue. Uses a separately installed noncommercial native editor; no paid generation or automatic public posting.","disclosure":"","category":"tools","platforms":[],"maintainer":"Morkeeth","author":"Morkeeth","version":"0.5.0","requires_hermes":">=0.21.5","repo":"https://github.com/Morkeeth/hermes-studio","docs":"https://github.com/Morkeeth/hermes-studio/blob/3f9c01035d69cfb7dc15d70c139f0c5a82b2075e/README.md","tools":["studio_take","studio_cut","studio_gate","studio_verify_post","studio_library","studio_build","studio_request","studio_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires separately installed hermes-video-editor (PolyForm Noncommercial1.0.0), FFmpeg/ffprobe and an existing local speech model.; New footage requires a reviewed native project recipe and real aligned words. Visual checks use supplied hash-bound review, not automatic vision.; Single-owner connector; new music-level revisions wait for the render gate. A full live attachment/reply-edit/new-export round trip is not yet verified.","state":"open","pr":153662,"prs":[{"n":153662,"state":"open","created":"2026-11-11T17:01:52Z"},{"n":153002,"state":"open","created":"2026-11-11T00:17:14Z"}],"created":"2026-11-11T00:17:14Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/PabloTheThinker/hermes-studio/e3428e3ee05096ac933274fc6c134d4e584dc997/docs/catalog/banner.png","https://raw.githubusercontent.com/PabloTheThinker/hermes-studio/e3428e3ee05096ac933274fc6c134d4e584dc997/docs/catalog/01-timeline.jpg","https://raw.githubusercontent.com/PabloTheThinker/hermes-studio/e3428e3ee05096ac933274fc6c134d4e584dc997/docs/catalog/02-clips-library.jpg","https://raw.githubusercontent.com/PabloTheThinker/hermes-studio/e3428e3ee05096ac933274fc6c134d4e584dc997/docs/catalog/05-edit-timeline.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-studio.webp"},{"name":"stoa","title":"Stoa","summary":"A lightweight CRM you talk to: map a market, find the leads, run the pipeline. Send it a list in any form and approve what it would add or change before anything is saved. Market maps that check every company against your requirements with evidence, show who holds the market and who to call first, export as a shareable page and become leads in one click; a page and a live pane in the Desktop app and Webapp, with a funnel, a drag-and-drop board, a dock to talk to it, and cards and maps drawn in the conversation; a web dashboard tab; a SQLite pipeline, playbooks that fit it to any niche, Slack cards whose buttons move a stage at once and hand the writing to Hermes, and meeting notes that become next steps.","disclosure":"optional network calls to api.peopledatalabs.com (paid per result, capped), api.exa.ai and public-api.granola.ai only when their keys are set; dictation on the page is the browser's own speech recognition (in Chrome, Google's service) and runs only while its button is on; reads the notes folder and CSV paths you name, and a file you drop on the page; writes exports to its own data folder; with allow_gateway_injection a button click queues one agent turn in the thread; the page's dock sends what you type to a visible conversation of its own. Hermes Agent Plugin Hackathon entry.","category":"tools","platforms":["linux","macos"],"maintainer":"jarrett-del","author":"jarrett-del","version":"0.8.1","requires_hermes":">=0.23.0","repo":"https://github.com/jarrett-del/hermes-stoa","docs":null,"tools":["gtm_pipeline","gtm_deal","gtm_card","gtm_market","gtm_enrich","gtm_notes","gtm_playbook","gtm_export","gtm_intake"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153000,"prs":[{"n":153000,"state":"open","created":"2026-11-11T00:16:40Z"}],"created":"2026-11-11T00:16:40Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/banner.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/desktop-pipeline.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/desktop-pane.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/desktop-intake.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/dashboard-pipeline.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/dashboard-market-map.jpg","https://raw.githubusercontent.com/jarrett-del/hermes-stoa/0d44ddfa9cea1f845f780898fa65f480d5080a57/docs/dashboard-record.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/stoa.webp"},{"name":"invezgo","title":"Invezgo","summary":"Indonesia Stock Exchange (IDX/BEI) market data from the Invezgo API: company profiles, price and indicator charts, intraday and order book, running trade, broker summary and inventory, broker and sector stalker, sector rotation, shareholder composition (KSEI, >1%, >5%, insiders), financial statements, key stats, corporate calendar, news, disclosures and a formula screener, plus read access to the user's own Invezgo portfolio, watchlists, journal and trades. Tools are generated from the bundled OpenAPI spec (spec.json) at load time.","disclosure":"every tool call is an HTTPS request to api.invezgo.com with the user's Invezgo API key and counts against their plan quota; results, including personal portfolio data, enter the session context and reach the user's model provider. Read-only by default; 18 write tools (watchlists, journals, trades, alerts, saved screeners) are registered only when INVEZGO_ALLOW_WRITE=1. No background processes, shell commands, stored files or telemetry.","category":"tools","platforms":[],"maintainer":"Invezgo","author":"frxldi-xyz","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/Invezgo/invezgo-hermes","docs":"https://invezgo.com","tools":["invezgo_alerts_create","invezgo_alerts_delete","invezgo_alerts_list","invezgo_alerts_test","invezgo_alerts_update","invezgo_analysis_broker_stalker","invezgo_analysis_broker_stalker_list","invezgo_analysis_disclosure","invezgo_analysis_financial_statement","invezgo_analysis_financial_statement_chart","invezgo_analysis_flow_of_funds","invezgo_analysis_free_float","invezgo_analysis_get_advance_chart","invezgo_analysis_get_broker_list","invezgo_analysis_get_calendar","invezgo_analysis_get_index_chart","invezgo_analysis_get_index_list","invezgo_analysis_get_indicator_chart","invezgo_analysis_get_intraday_chart","invezgo_analysis_get_intraday_data","invezgo_analysis_get_intraday_index","invezgo_analysis_get_multi_time_chart","invezgo_analysis_get_order_book","invezgo_analysis_get_order_queue","invezgo_analysis_get_stock_list","invezgo_analysis_information","invezgo_analysis_insider","invezgo_analysis_insider_chart","invezgo_analysis_intraday_inventory_chart","invezgo_analysis_inventory_broker_chart","invezgo_analysis_inventory_stock_chart","invezgo_analysis_keystat","invezgo_analysis_keystat_chart","invezgo_analysis_momentum_chart","invezgo_analysis_news","invezgo_analysis_notation","invezgo_analysis_price_diary","invezgo_analysis_price_seasonality","invezgo_analysis_price_table","invezgo_analysis_sankey_chart","invezgo_analysis_sector_rotation","invezgo_analysis_sector_stalker","invezgo_analysis_shareholder","invezgo_analysis_shareholder_above","invezgo_analysis_shareholder_above_chart","invezgo_analysis_shareholder_classification","invezgo_analysis_shareholder_classify_table","invezgo_analysis_shareholder_detail","invezgo_analysis_shareholder_high","invezgo_analysis_shareholder_ksei","invezgo_analysis_shareholder_number","invezgo_analysis_shareholder_one","invezgo_analysis_shareholder_one_chart","invezgo_analysis_shareholder_one_detail","invezgo_analysis_shareholder_relation","invezgo_analysis_stock_running_trade","invezgo_analysis_summary_broker","invezgo_analysis_summary_broker_chart","invezgo_analysis_summary_stock","invezgo_analysis_summary_stock_chart","invezgo_analysis_suspend","invezgo_analysis_time_table","invezgo_analysis_top_accumulation","invezgo_analysis_top_change","invezgo_analysis_top_foreign","invezgo_analysis_top_ritel","invezgo_analysis_uma","invezgo_batch_get_intraday_data_batch","invezgo_batch_get_intraday_index_batch","invezgo_batch_get_order_book_batch","invezgo_journals_add_transaction","invezgo_journals_delete_watchlists","invezgo_journals_get_transactions_summary","invezgo_journals_list_transactions","invezgo_portfolios_list_portfolio","invezgo_portfolios_portfolio_summary","invezgo_posts_get_category_posts","invezgo_posts_get_comment","invezgo_posts_get_favorite","invezgo_posts_get_like","invezgo_posts_get_post_by_id","invezgo_posts_get_posts","invezgo_posts_get_stock_category_posts","invezgo_posts_get_stock_posts","invezgo_posts_get_voters","invezgo_screener_delete","invezgo_screener_list","invezgo_screener_save","invezgo_screener_screen","invezgo_screener_update","invezgo_search_search","invezgo_search_search_stock","invezgo_search_search_user","invezgo_trades_delete_watchlists","invezgo_trades_get_summary_chart","invezgo_trades_get_transactions_summary","invezgo_trades_list_transactions","invezgo_trades_update_note_watchlist","invezgo_usage_usage_api","invezgo_usage_usage_logs","invezgo_watchlists_add_group_watchlist","invezgo_watchlists_add_watchlist","invezgo_watchlists_delete_group_watchlist","invezgo_watchlists_delete_watchlists","invezgo_watchlists_list_group_watchlist","invezgo_watchlists_list_watchlist","invezgo_watchlists_update_group_watchlist","invezgo_watchlists_update_note_watchlist","invezgo_watchlists_update_watchlist"],"hooks":[],"middleware":[],"env":["INVEZGO_API_KEY"],"known_issues":"","state":"merged","pr":152997,"prs":[{"n":152997,"state":"closed","created":"2026-11-11T00:01:57Z"}],"created":"2026-11-11T00:01:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"plugin-scout","title":"Plugin Scout","summary":"A scout goes ahead, reports what's useful, and warns about trouble. Plugin Scout finds the plugins that fit how you use Hermes (each pick with its evidence), and checks: it tells you what a plugin does with your data before you install it, warns when a plugin's fine print does not fit your settings, catches plugins that clash and explains what to do. Quiet weekly note, plain-English requests, and a dashboard tab. Recommends only; never installs or enables anything.","disclosure":"one network call, a GET of the public catalog index from hermes-agent.nousresearch.com (redirects to nousresearch.github.io/hermes-agent; any other address or redirect is refused), cached 6 hours. Reads, read-only, the last 30 days of session history (up to 200 sessions) to count tools used and topic keywords locally, plus Hermes memory files and the user's own (non-bundled) skill list for the same local topic matching, plus config.yaml (enabled plugins, memory provider, and settings named in plugins' known issues), other plugins' plugin.yaml and plugins/.install-metadata.json. Writes only its own plugin-data folder and plugin state. The dashboard tab adds routes under /api/plugins/plugin-scout on Hermes's own local dashboard, behind its sign-in; the only changes they make are your onboarding choices and skipped picks. Optional ai modes send topic counts and public catalog descriptions to the user's configured model; message text is never sent. No shell commands, credentials or background processes.","category":"general","platforms":[],"maintainer":"bscharenberg","author":"bscharenberg","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/bscharenberg/plugin-scout","docs":"https://github.com/bscharenberg/plugin-scout#readme","tools":["scout_conflicts","scout_whats_new","scout_picks","scout_weekly","scout_profile","scout_start","scout_interests","scout_dismiss"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152993,"prs":[{"n":152993,"state":"open","created":"2026-11-10T23:52:55Z"}],"created":"2026-11-10T23:52:55Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/bscharenberg/plugin-scout/91c0d1db8297d80b12a1dd693acbcbda6ee750ea/docs/screenshots/overview.png","https://raw.githubusercontent.com/bscharenberg/plugin-scout/91c0d1db8297d80b12a1dd693acbcbda6ee750ea/docs/screenshots/pick-card.png","https://raw.githubusercontent.com/bscharenberg/plugin-scout/91c0d1db8297d80b12a1dd693acbcbda6ee750ea/docs/screenshots/clash.png","https://raw.githubusercontent.com/bscharenberg/plugin-scout/92290ebc89d81a05b6202d9d0f763ff1fac2b8e2/docs/screenshots/overview.png","https://raw.githubusercontent.com/bscharenberg/plugin-scout/92290ebc89d81a05b6202d9d0f763ff1fac2b8e2/docs/screenshots/pick-card.png","https://raw.githubusercontent.com/bscharenberg/plugin-scout/92290ebc89d81a05b6202d9d0f763ff1fac2b8e2/docs/screenshots/clash.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/plugin-scout.webp"},{"name":"chalk","title":"Chalk","summary":"Hermes teaches on a chalkboard. Ask it to explain something and Hermes Desktop draws the lesson inline in the chat, stroke by stroke in chalk, while the narration plays; replay it or save it as an MP4. The agent's chalk_teach tool sends only structure (flow, list, compare, equation, graph, cycle, tree, note, circle/underline, clear) and the board lays itself out, so small models produce clean boards; full boards are wiped by an eraser and continue on a fresh one. Other surfaces receive the narration as one audio file.","disclosure":"narration text goes to the user's configured TTS provider through Hermes' own text_to_speech tool (ctx.dispatch_tool); lessons and audio are stored under $HERMES_HOME/plugin-data/chalk; Save video uploads the recording to the plugin over plugin RPC and writes it to ~/Videos/Chalk (or ~/Downloads/Chalk when the OS blocks Videos), converting with ffmpeg when it is on PATH (fixed argument lists). A transform_llm_output hook appends the lesson's MEDIA line once if the reply left it out. Graph expressions are parsed by a small parser, never evaluated as code. No network calls of its own, no telemetry, no background processes.","category":"desktop","platforms":[],"maintainer":"Nnadijoshuac","author":"Nnadijoshuac","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/Nnadijoshuac/Hermes-chalk","docs":"https://github.com/Nnadijoshuac/Hermes-chalk#readme","tools":["chalk_teach"],"hooks":["transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152992,"prs":[{"n":152992,"state":"open","created":"2026-11-10T23:51:17Z"}],"created":"2026-11-10T23:51:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Nnadijoshuac/Hermes-chalk/05a66d02b830ddb255315a0df9ff527f9a82992c/docs/banner.png","https://raw.githubusercontent.com/Nnadijoshuac/Hermes-chalk/05a66d02b830ddb255315a0df9ff527f9a82992c/docs/desktop.png","https://raw.githubusercontent.com/Nnadijoshuac/Hermes-chalk/05a66d02b830ddb255315a0df9ff527f9a82992c/docs/board.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/chalk.webp"},{"name":"survey-desk","title":"Survey Desk","summary":"Exact land-survey computation for Hermes: closed traverses with misclosure and Bowditch/transit adjustment, area cross-checked by two independent methods, blunder-leg detection when a traverse fails tolerance, PROJ datum conversion (Minna, Nigeria belts, UTM, any EPSG) with the published datum-shift accuracy, and plan drawings exported as PNG, PDF, DXF, KML and GeoJSON, driven from a /survey field-book command or the agent.","disclosure":"no network calls (PROJ network access stays off), no shell commands, no background processes, no credentials, no telemetry. Plans are written to <hermes home>/plugin-data/survey-desk/plans/. Dependencies: pyproj, matplotlib, ezdxf.","category":"tools","platforms":[],"maintainer":"ferzerz5-lab","author":"ferzerz5-lab","version":"1.0.0","requires_hermes":">=0.19","repo":"https://github.com/ferzerz5-lab/survey-desk","docs":"https://github.com/ferzerz5-lab/survey-desk#readme","tools":["survey_traverse","survey_plan","survey_convert","survey_inverse"],"hooks":[],"middleware":[],"env":[],"known_issues":"Closed-loop traverses in metres only. The default 1:5000 tolerance is a placeholder: set your authority's limit; Datum shifts (for example Minna to WGS 84, about 15 m) limit how precisely a KML sits on the globe; Output is a computation aid, not a licensed survey plan","state":"open","pr":152991,"prs":[{"n":152991,"state":"open","created":"2026-11-10T23:43:28Z"}],"created":"2026-11-10T23:43:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ctrlall","title":"ctrl+all","summary":"Drive ctrl+all on your Mac from any Hermes conversation: launch and steer multiplayer coding-agent chats on the engines you already pay for (Claude Code, Gemini, opencode), read transcripts and the team inbox, and review git status and diffs. The plugin calls the ctrl+all daemon's authenticated loopback RPC; the daemon owns every permission gate (plan / ask / auto-edit / full-auto modes, engine boundaries, project fencing).","disclosure":"network calls go only to the configured daemon URL (default loopback 127.0.0.1:9931) - no third-party endpoints, telemetry or analytics; the daemon token is read through Hermes's secret scope (CTRLALL_DAEMON_TOKEN), never from ~/.ctrlall, .env files or any other credential store; ctrlall_chat_create, ctrlall_chat_send and ctrlall_chat_mode start or steer real coding-agent turns on your Mac under the daemon's permission mode; the plugin reads no files, runs no shell commands and starts no background processes; Python standard library only; no self-updater.","category":"tools","platforms":["macos"],"maintainer":"namangoyal3","author":"namangoyal3","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/namangoyal3/hermes-ctrlall","docs":"https://github.com/namangoyal3/hermes-ctrlall#readme","tools":["ctrlall_ping","ctrlall_capabilities","ctrlall_providers","ctrlall_chats","ctrlall_chat_create","ctrlall_chat_send","ctrlall_chat_wait","ctrlall_chat_tail","ctrlall_chat_search","ctrlall_chat_cancel","ctrlall_chat_mode","ctrlall_inbox","ctrlall_git_status","ctrlall_git_diff"],"hooks":[],"middleware":[],"env":["CTRLALL_DAEMON_TOKEN"],"known_issues":"","state":"open","pr":152990,"prs":[{"n":152990,"state":"open","created":"2026-11-10T23:37:10Z"}],"created":"2026-11-10T23:37:10Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"benchline","title":"Benchline","summary":"Read-only preflight for a selected numeric-result CSV: checks structure, duplicate keys, numeric formatting, and exact analyte/unit-map matches. No clinical interpretation; the selected path, unit-map inputs, profile-source label, and bounded QC report are exposed to the configured model/provider.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"ShalyX","author":"ShalyX","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/ShalyX/hermes-benchline","docs":"https://github.com/ShalyX/hermes-benchline#readme","tools":["benchline_validate_csv"],"hooks":[],"middleware":[],"env":[],"known_issues":"Tool arguments include the selected path, unit map, and profile-source label; these are visible to the configured model/provider.; The bounded row-based QC report is also returned to the configured model/provider; it is not local-only.; Numeric-result CSV only; no clinical interpretation or release authorization.","state":"merged","pr":152987,"prs":[{"n":152987,"state":"merged","created":"2026-11-10T23:31:02Z"}],"created":"2026-11-10T23:31:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-local-voice","title":"Local Voice Notes","summary":"Voice memos become text on the machine that recorded them: no API key, no account, and no audio leaving the host. Capture from PipeWire or ffmpeg, run faster-whisper locally, and the transcript arrives as a note. Four tools (transcribe_audio, voice_record_start, voice_record_stop, transcribe_last) and two hooks: pre_gateway_dispatch turns an inbound voice message into text before the model sees it, pre_llm_call attaches the pending transcript to the turn. Ships model management (list supported Whisper sizes with disk cost and cache status, download explicitly) and a live capture path with a silence gate so ambient room tone is never transcribed.","disclosure":"all processing is local. Network access happens only when the user explicitly runs the model download command, which fetches weights from Hugging Face into the Hermes model directory; no telemetry, no automatic updates, no reads outside the Hermes home and the recording paths the plugin creates.","category":"voice","platforms":[],"maintainer":"soilgrowerx","author":"soilgrowerx","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/soilgrowerx/hermes-local-voice","docs":"https://github.com/soilgrowerx/hermes-local-voice#readme","tools":["transcribe_audio","voice_record_start","voice_record_stop","transcribe_last"],"hooks":["pre_gateway_dispatch","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152986,"prs":[{"n":152986,"state":"open","created":"2026-11-10T23:28:43Z"}],"created":"2026-11-10T23:28:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pocketbook","title":"Pocketbook","summary":"Personal finance in Hermes: a Finance tab, bank/account controls, spending, budgets, net worth, investments, goals, transaction categories, CSV imports and 15 money tools.","disclosure":"contacts Plaid with your own keys when connecting or syncing; reads user-selected CSV files up to 20 MB; stores financial data locally and access tokens through Hermes secret routes; offers optional scheduled alert blueprints and user-requested Amazon order collection through Hermes browser tools. No telemetry, money movement or shell subprocesses.","category":"desktop","platforms":["linux","macos"],"maintainer":"MaanavD","author":"MaanavD","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/MaanavD/pocketbook","docs":null,"tools":["money_overview","money_transactions","money_spending","money_budgets","money_recurring","money_alerts","money_chart","money_accounts","money_networth","money_investments","money_goals","money_rules","money_categorize","money_import","money_purchases"],"hooks":[],"middleware":[],"env":[],"known_issues":"Real banks require Plaid Production access; Sandbox accounts are simulated. USD totals only.; CLI subcommands may be skipped under plugin isolation; use Finance or the money tools.; Overlapping CSV and connected-bank histories may duplicate transactions. Failed scheduled alert delivery may not be retried automatically.","state":"open","pr":152984,"prs":[{"n":152984,"state":"open","created":"2026-11-10T23:25:32Z"}],"created":"2026-11-10T23:25:32Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/MaanavD/pocketbook/06250c2c1f0f85d3f382b01368a53c5b3a326995/docs/screenshots/finance-overview.png","https://raw.githubusercontent.com/MaanavD/pocketbook/06250c2c1f0f85d3f382b01368a53c5b3a326995/docs/screenshots/finance-accounts.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pocketbook.webp"},{"name":"claude-pacer","title":"claude-pacer","summary":"For power users running heavy automation in Hermes on a Claude Pro/Max subscription: claude-pacer paces agents and cron jobs so the weekly limit lasts to the reset, keeps a reserve (20% by default), and spends the leftovers on spare jobs before it. Modes skip / light / normal / heavy via the claude_pace tool, /pace, `hermes pace` and a `hermes pace gate --priority vital|normal|optional|spare` cron gate: an over-budget run is skipped before the model is called; a vital job always runs (lightly in skip mode).","disclosure":"each check (cached 60 s in memory) runs Hermes' own Anthropic usage fetch, one GET to Anthropic's OAuth usage endpoint made by Hermes; if the sign-in is a borrowed Claude Code login whose access token has expired, Hermes refreshes it first (a POST to Anthropic's OAuth token endpoint and a rewrite of the Claude Code credentials file), as /usage would. The plugin's own code never reads, holds or writes a credential, writes no files, runs no subprocesses and sends no telemetry.","category":"automation","platforms":[],"maintainer":"Rubenkivilang","author":"Rubenkivilang","version":"0.4.1","requires_hermes":">=0.22.7","repo":"https://github.com/Rubenkivilang/claude-pacer","docs":"https://github.com/Rubenkivilang/claude-pacer/tree/main/docs","tools":["claude_pace"],"hooks":[],"middleware":[],"env":[],"known_issues":"Until NousResearch/hermes-agent#139916 lands, Hermes reads an Anthropic usage window at 1% as 100%, so right after a 5-hour or weekly reset claude-pacer can report skip until the window passes 1%.","state":"merged","pr":152981,"prs":[{"n":152981,"state":"merged","created":"2026-11-10T23:24:32Z"}],"created":"2026-11-10T23:24:32Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/443f897e-982c-4885-914d-317870c4bb4a","https://github.com/user-attachments/assets/44560b4a-5ddc-4553-82e5-9a4969217935","https://github.com/user-attachments/assets/2312555f-3183-4412-85bd-24ec56ebfe60","https://github.com/user-attachments/assets/efb35bc7-5b17-43cb-a852-1eb8b374fbf2"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/claude-pacer.webp"},{"name":"hermes-visual-memory","title":"Hermes Visual Memory","summary":"Your agent remembers what a camera saw on your desk: \"what's in front of you?\", \"what did I take away?\", \"where did I last see my keys?\", \"what was here yesterday?\". Built for a used Echo Show running Hermes Eye, with before/after pictures on its screen. Vision goes through Hermes's own model routing (its own \"Visual memory\" slot) or a local OpenAI-compatible model such as Qwen 3.6 in Ollama.","disclosure":"off until the user turns it on by voice; the first tool call starts background threads inside Hermes: a camera loop reading one snapshot a second from Hermes Eye on the LAN (only while on), a token-protected API on 127.0.0.1:28950, and a LAN display feed (port 28951) restricted by client IP and the Home Assistant screen origin; pictures go to the vision model Hermes routes the task to (a cloud provider if that is the user's vision model) or to the local server the user sets; SQLite and snapshots in the plugin's data directory, pictures deleted after 14 days; reads EYE_TOKEN through Hermes; no shell commands, no telemetry.","category":"memory","platforms":["macos","linux"],"maintainer":"majorminorlabs","author":"majorminorlabs","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/majorminorlabs/hermes-voice","docs":null,"tools":["visual_memory","what_changed","find_object","describe_scene","object_history","show_evidence","forget_visual_memory"],"hooks":[],"middleware":[],"env":["EYE_TOKEN"],"known_issues":"Needs a camera running Hermes Eye (an Echo Show 5 with the app from this repository).; Small metal things (keys, clips) get a different name on most looks with local models.","state":"open","pr":152980,"prs":[{"n":152980,"state":"open","created":"2026-11-10T23:13:49Z"}],"created":"2026-11-10T23:13:49Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/majorminorlabs/hermes-voice/86598e5c663cb132db2821094291372f1a72de9f/extras/visual-memory/docs/watching.jpg","https://raw.githubusercontent.com/majorminorlabs/hermes-voice/86598e5c663cb132db2821094291372f1a72de9f/extras/visual-memory/docs/comparison.jpg","https://raw.githubusercontent.com/majorminorlabs/hermes-voice/b30ce59b70d4813468516c7f0a9ff390e88f3dec/extras/visual-memory/docs/watching.jpg","https://raw.githubusercontent.com/majorminorlabs/hermes-voice/b30ce59b70d4813468516c7f0a9ff390e88f3dec/extras/visual-memory/docs/comparison.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-visual-memory.webp"},{"name":"lydite","title":"Lydite","summary":"Hand a GitHub issue and the command that proves it done to Lydite from the chat. Sandboxed Claude Code workers do the job, Lydite replays your proof itself, and a pull request comes back with a receipt (cost, workers, retries, the commit that was reviewed and replayed, and what was not replayed). Also hands Hermes the lessons Lydite keeps for a repository, read-only, and has Lydite check a plan file before a launch.","disclosure":"after your approval of each launch (the prompt shows the repository, work, exact proof command or plan SHA-256, profile and target branch; \"always\" covers only that repo+profile+proof), starts the already-installed `lydite` binary (argument list, no shell) as a detached background process with a closed environment list plus the provider key you set; Lydite runs git, gh, Claude Code workers and your proof command, inside its srt sandbox under a `mur = exige` profile (the default, and required for `--issue`) but directly on the host under a profile you accepted with `mur = demande`; it reaches GitHub and the model provider of its profile; the status, lessons and plan-check tools run the binary without approval; reads the plan file and the repository's `.agents/skills` lessons; no telemetry.","category":"automation","platforms":["linux"],"maintainer":"aoricloud","author":"aoricloud","version":"0.3.3","requires_hermes":">=0.23.0","repo":"https://github.com/aoricloud/lydite","docs":"https://github.com/aoricloud/lydite/tree/0599e7f7fefb044d32dd603a160629a83fed98bb/hermes","tools":["lydite_lancer","lydite_etat","lydite_lecons","lydite_plan"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Linux only: Lydite's sandbox wall holds there.; Needs the lydite binary (attested release of github.com/aoricloud/lydite), Claude Code, gh and srt installed, and a Lydite profile accepted by a human.; Lydite's own commands and status lines are still in French; pull request receipts are in English.","state":"open","pr":152979,"prs":[{"n":152979,"state":"open","created":"2026-11-10T23:13:28Z"}],"created":"2026-11-10T23:13:28Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/aoricloud/lydite/0599e7f7fefb044d32dd603a160629a83fed98bb/hermes/docs/banner.png","https://raw.githubusercontent.com/aoricloud/lydite/0599e7f7fefb044d32dd603a160629a83fed98bb/hermes/docs/screenshot-approval.png","https://raw.githubusercontent.com/aoricloud/lydite/0599e7f7fefb044d32dd603a160629a83fed98bb/hermes/docs/screenshot-receipt.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lydite.webp"},{"name":"loshify","title":"Loshify","summary":"A Spotify curator that knows you: it learns your taste from your listening and your reactions, builds playlists with a reason for every track, and remembers what you loved and what you never want again. Desktop remote with 👎 👌 ❤️, rotations, and a chat curator. Connect in about two minutes; the Desktop card walks you through it one step at a time with copy buttons, and the agent walks the same steps in chat. First install with hermes plugins install iHeavyShoes/loshify --enable (once listed, hermes plugins install loshify). Then in Hermes Desktop open Capabilities → Plugins and turn on Loshify's Desktop switch (the Desktop half starts off and config.yaml does not turn it on). (1) Open developer.spotify.com/dashboard and press Create app. (2) App name Loshify, Redirect URI http://127.0.0.1:43828/callback, tick only Web API, Save. Your own key to Spotify; 127.0.0.1 means this computer, nothing leaves it. (3) Add yourself under User Management (new Spotify apps only let in listed accounts). (4) Paste the Client ID into the Loshify card; it is saved in the plugin's setting. (5) Run hermes auth add loshify:spotify once in a terminal (Windows: Start → PowerShell) and press Agree. (6) The card checks with one real call to Spotify and turns green.","disclosure":"data is stored locally in plugin-data/loshify/data.db, and the Desktop setup card saves your Spotify Client ID into this profile's .env through Hermes's own settings writer. The plugin calls Spotify API and accounts hosts, and the Desktop loads Spotify image CDN artwork. Hermes sends taste facts (artist names, track titles, and notes) to your configured model provider for portraits and picks. The plugin never sees a token. Edits or removes tracks only from playlists Loshify created. Playback control needs Spotify Premium. No shell commands, background processes or telemetry.","category":"desktop","platforms":[],"maintainer":"iHeavyShoes","author":"iHeavyShoes","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/iHeavyShoes/loshify","docs":"https://github.com/iHeavyShoes/loshify#readme","tools":["loshify_setup","loshify_taste","loshify_reactions","loshify_curate","loshify_react","loshify_rotation","loshify_onboard"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152975,"prs":[{"n":152975,"state":"merged","created":"2026-11-10T23:07:53Z"}],"created":"2026-11-10T23:07:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hey-pcb","title":"hey-pcb","summary":"Agent-driven PCB engineering through HeyPCB's first-party MCP server: design real KiCad boards from a text brief, instant fabrication estimates, and production tracking, with a workflow skill bundled. Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code. The server is declared untrusted with per-tool costs and a per-chat spend limit, so Hermes names the cost and asks before any call that can spend (design reads stay free). The HEYPCB_API_KEY is forwarded from the user's environment and never stored in plugin files.","disclosure":"the MCP server talks to api.heypcb.ai; npx fetches the pinned @heypcb/mcp@0.1.8 from npm on first launch; engine runs and design-agent turns are billed to the user's HeyPCB account at its plan rate; ordering on heypcb.ai is still a human decision.","category":"tools","platforms":[],"maintainer":"imperator-clawdius","author":"imperator-clawdius","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/imperator-clawdius/hermes-hey-pcb","docs":"https://github.com/imperator-clawdius/hermes-hey-pcb#readme","tools":[],"hooks":[],"middleware":[],"env":["HEYPCB_API_KEY"],"known_issues":"","state":"merged","pr":152974,"prs":[{"n":152974,"state":"open","created":"2026-11-10T23:05:37Z"}],"created":"2026-11-10T23:05:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"permission-tiers","title":"permission-tiers","summary":"Host-enforced tiered tool permissions: assign allow/ask/block tiers to tool-name patterns (fnmatch globs), and the plugin's pre_tool_call hook vetoes or escalates matching calls before they execute, while post_tool_call keeps a local SQLite audit ledger. Two tools manage it: permission_tiers_report (rules + ledger) and permission_tiers_set (add/update/ remove). Implements the per-tool permission-levels feature requested in issue #527 without touching Hermes core — public hooks only. Safe defaults: shell and MCP tools ask, everything else keeps Hermes' existing behaviour; hook errors fail open; unattended runs fail closed on ask escalations (the plugin never auto-approves).","disclosure":"no network calls, no third-party services, no stored credentials; reads/writes only its own tiers.json and ledger under the Hermes plugin-data directory; bundled permission-tiers skill documents usage.","category":"tools","platforms":[],"maintainer":"imperator-clawdius","author":"imperator-clawdius","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/imperator-clawdius/hermes-permission-tiers","docs":"https://github.com/imperator-clawdius/hermes-permission-tiers#readme","tools":["permission_tiers_report","permission_tiers_set"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152974,"prs":[{"n":152974,"state":"open","created":"2026-11-10T23:05:37Z"}],"created":"2026-11-10T23:05:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentline","title":"AgentLine","summary":"A real phone number for Hermes: place calls that a hosted voice carries out and get the transcript back, send and read SMS, text your agent like any other chat, and let a live caller's question reach Hermes mid-call, with the answer spoken on the call or texted if it takes too long.","disclosure":"talks only to api.agentline.cloud: HTTPS from the tools, plus one outbound WebSocket (wss://api.agentline.cloud/v1/events/ws) held open while the gateway runs, so no public URL or open port is needed; sends call briefs, text bodies, destination numbers, contacts and the agent's answers to live caller questions; AgentLine carries the call audio and produces transcripts, the plugin never handles audio; calls, texts and numbers are billed to your own AgentLine account; agentline_call, agentline_sms and agentline_buy_number go through Hermes's approval gate from a pre_tool_call hook and fail closed when nobody can approve; emergency, premium-rate and non-US/Canada numbers are always refused, in the hook and again in the tool; only numbers in AGENTLINE_ALLOWED_USERS can text or call the agent, everyone else is ignored without a reply; stores today's call and text counts in plugin data, no transcripts, messages or credentials; the API key is read through Hermes's secret scope; one Python dependency (websockets>=12,<16); no shell commands, child processes, telemetry or self-update.","category":"platform","platforms":[],"maintainer":"prakhar-raj-031104","author":"prakhar-raj-031104","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/prakhar-raj-031104/hermes-agentline","docs":"https://github.com/prakhar-raj-031104/hermes-agentline#readme","tools":["agentline_status","agentline_agent","agentline_buy_number","agentline_call","agentline_call_result","agentline_hangup","agentline_sms","agentline_messages","agentline_contacts"],"hooks":["pre_tool_call"],"middleware":[],"env":["AGENTLINE_API_KEY"],"known_issues":"","state":"open","pr":152976,"prs":[{"n":152976,"state":"open","created":"2026-11-10T23:09:12Z"},{"n":152973,"state":"closed","created":"2026-11-10T23:00:54Z"}],"created":"2026-11-10T23:00:54Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"detonator","title":"detonator","summary":"Dynamic sandbox for plugins you did not write. After you approve the run, /detonate fetches a plugin at an exact commit and loads it inside a disposable Docker container (no network, read-only, non-root, all capabilities dropped) with a throwaway Hermes home full of decoy keys, then drives its hooks and tools and reports what it actually did: decoy secrets read, network attempts, shell commands, persistence, prompt injection, tool poisoning, monkeypatching. Deterministic rules with a plain-language reason and MITRE ATT&CK / ATLAS IDs per finding; advisory only, a clean run is evidence, not proof.","disclosure":"requires Docker; runs git (fetches the target repo over the network) and docker (one-time image build pulls a digest-pinned python:3.11-slim) on your machine, only after you approve each run; refuses to run unattended; writes reports under its own plugin-data folder; never reads your real keys or Hermes credentials.","category":"tools","platforms":["linux","macos"],"maintainer":"shreyasudupi","author":"shreyasudupi","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/shreyasudupi/hermes-plugin-detonator","docs":"https://github.com/shreyasudupi/hermes-plugin-detonator#readme","tools":["detonate_plugin","detonator_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152971,"prs":[{"n":152971,"state":"open","created":"2026-11-10T22:52:35Z"}],"created":"2026-11-10T22:52:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wavebots","title":"Wave | Bots","summary":"Verified AI bots for Hermes, by Wave OS. Browse the official Wave bots from the bots.theta store (Checker, Tally, Planner, Maker and more); each one is checked on the Theta blockchain on your computer (name record, listing, rules, mascot and every knowledge card, fingerprint by fingerprint) before it's marked Verified. Add one and it becomes its own Hermes bot (a wave-<name> profile in your Bots list, with its mascot), answering from its checked cards on your own AI model with code, terminal, file and web tools turned off, re-checked daily. An optional Wave OS bot key lets you ask the real bot on Wave, with Hermes approval for every question.","disclosure":"never signs or sends transactions, and needs no account for browsing, checking or adding bots. Network calls go only to Theta's public RPC eth-rpc-api.thetatoken.org (read-only name and card reads) and, only if you set a Wave OS bot key and ask the real bot, app.oswave.io (your question to the bot). The optional Wave OS bot key (limited and revocable, spending limit you pick, default 0 TFUEL) is a Hermes secret: declared as config_schema secret WAVE_OS_TOKEN, entered in Hermes's plugin settings, read with get_secret; the plugin never stores it. Creates and removes only its own wave-* Hermes profiles; reads Hermes's profile and plugin lists locally. A background thread re-checks added bots once a day. Opens app.oswave.io in the browser to get a key. No telemetry, no shell commands, no self-updating.","category":"tools","platforms":[],"maintainer":"xBuildyTeam","author":"xBuildy","version":"0.3.0","requires_hermes":">=0.22.1","repo":"https://github.com/xBuildyTeam/wave-os-hermes","docs":"https://github.com/xBuildyTeam/wave-os-hermes/tree/main/wavebots","tools":["wave_bots"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152968,"prs":[{"n":152968,"state":"open","created":"2026-11-10T22:48:10Z"}],"created":"2026-11-10T22:48:10Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/52c76b3d8c6a785b18b0020c83d5f5b75c234a56/wavebots/docs/catalog-banner.png","https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/52c76b3d8c6a785b18b0020c83d5f5b75c234a56/wavebots/docs/wave-bots-store.png","https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/52c76b3d8c6a785b18b0020c83d5f5b75c234a56/wavebots/docs/wave-bots-checker.png","https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/52c76b3d8c6a785b18b0020c83d5f5b75c234a56/wavebots/docs/wave-bots-build.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/wavebots.webp"},{"name":"video-xray","title":"video-xray","summary":"Drop a video file into the chat composer and get a structured report: segment-wise frame observation by whatever vision-capable chat model you already configured (local llama.cpp/Strata or cloud), timestamped dialogue from R2T2, Whisper, or any OpenAI-compatible cloud ASR, and a frame gallery of the key moments inside the job detail. Exports the report as Markdown or as a MiniMax-H3 integrated multimodal description prompt. Ships the R2T2 engine worker source plus an optional Whisper worker; the heavy R2T2 runtime binaries are user-supplied, nothing else is downloaded. Spawns ffmpeg/ffprobe and local ASR worker subprocesses; network calls go only to the user's own configured inference and cloud-ASR endpoints, never to third-party services; background analysis jobs run as worker threads tracked in a local job ledger. The panel is pure @hermes/plugin-sdk React and user-visible text goes through ctx.i18n.","disclosure":"","category":"desktop","platforms":["windows"],"maintainer":"LuuMoss","author":"LuuMoss","version":"0.2.0","requires_hermes":">=0.22.1","repo":"https://github.com/LuuMoss/video-xray","docs":"https://github.com/LuuMoss/video-xray/blob/2da64e0784db15d00f929a71716d297717fe6691/README.md","tools":["video_xray","video_xray_jobs"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152967,"prs":[{"n":152967,"state":"open","created":"2026-11-10T22:47:12Z"}],"created":"2026-11-10T22:47:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/LuuMoss/video-xray/2da64e0784db15d00f929a71716d297717fe6691/docs/screenshots/banner.png","https://raw.githubusercontent.com/LuuMoss/video-xray/2da64e0784db15d00f929a71716d297717fe6691/docs/screenshots/11-gallery-frames-strip.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/video-xray.webp"},{"name":"board-insights","title":"Board Insights","summary":"Read-only analytics page for the Hermes Kanban boards, in Desktop. Two views over every board: List shows what is in flight, what is waiting on a person and every unfinished card in one filterable list; Dashboard shows summary counters, completed over time with a moving average, workload by status, net flow, tasks by department, cycle and run medians, stale runs and a per-assignee table, driven by one date range (today, 7, 30 or a custom window up to 90 days). Spaces are named board sets saved locally so the page can read one project or all of them.","disclosure":"opens every kanban.db under the Kanban home with SQLite mode=ro and has no write path; writes only its own stored Spaces and date range in the plugin's storage; no tools, no hooks, no model calls, no network calls, no credentials, no background processes.","category":"desktop","platforms":[],"maintainer":"kwpings","author":"kwpings","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/kwpings/board-insights","docs":"https://github.com/kwpings/board-insights#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152966,"prs":[{"n":152966,"state":"open","created":"2026-11-10T22:45:51Z"}],"created":"2026-11-10T22:45:51Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kwpings/board-insights/af7fc666800a7506a7d6296e485a4ea9f49254b3/docs/list.png","https://raw.githubusercontent.com/kwpings/board-insights/af7fc666800a7506a7d6296e485a4ea9f49254b3/docs/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/board-insights.webp"},{"name":"pwn-board","title":"pwn-board","summary":"Pwn boards for Hermes: engagements and problems with a known origin, a testable goal and no known path (a foothold to reach, a privilege to escalate, a flag to capture; also flaky failures and regressions), and the workflow that takes a finished one to complete. The agent keeps a frontier of intents rooted at the board's origin, claims them (subagents too), and records findings that must cite real tool output: while a board is open every tool result carries an evidence id, and a finding citing an id no tool returned is refused. It never scores itself: the goal test is fixed at open, run through the terminal tool under normal approvals, and the plugin writes the verdict. A finished board is written up with the files as delivered, goes to the operator's review (notes the agent must answer before the next round), then to verification: an independent verifier subagent and the agent check it separately, the verifier's report held from the agent until it files its own, and the agent reconciles them for the operator to accept or send back. /pwnboard and a Desktop pane drive all of it. The board carries no offensive tooling of its own. Provenance — the fact-intent-hint board model originates in Cairn (https://github.com/oritera/Cairn, AGPL-3.0); this is an independent implementation for Hermes and contains no Cairn source.","disclosure":"while at least one board is open, records an excerpt of every tool result (first and last 2,000 characters, 1,000 of the arguments, length, SHA-256) in <hermes home>/plugin-data/pwn-board/boards.db and tags the result with an evidence id (an added _evidence key in JSON objects, else a last line); uncited evidence is deleted after 14 days; pwn_board_test runs the board's goal-test command through the terminal tool (same backend and approval rules as any agent command); pwn_board_report reads the files the agent names through the read_file tool and keeps them in the database; each verification launches one leaf subagent through ctx.subagent_lifecycle with the terminal and file toolsets (Hermes's child-agent rules, backend and approvals apply), whose goal and context carry the board, write-up, delivered files and cited tool output, on the user's configured model (a memory provider, if any, is told of the delegation); with allow_gateway_injection granted, the operator's workflow moves start a turn in the board's session through ctx.inject_message; pre_llm_call adds one line per board to the main agent's current turn; a daemon thread, started on first use, polls the plugin's own database every 3 s to deliver those turns (verifiers start only inside a main-agent turn); the plugin records its own version in its database, at load only if that database already exists so loading creates no files, for the pane's build check; the Desktop pane renders write-ups, checks, reports, notes and findings as Markdown with the chat's renderer in preview mode, loading no images and running nothing; no other network calls, no telemetry, credentials, shell commands of its own or self-updater.","category":"tools","platforms":[],"maintainer":"t4lus-sec","author":"t4lus-sec","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/t4lus-sec/pwn-board","docs":null,"tools":["pwn_board_list","pwn_board_open","pwn_board_read","pwn_board_leads","pwn_board_claim","pwn_board_finding","pwn_board_rule_out","pwn_board_test","pwn_board_close","pwn_board_report","pwn_board_answer","pwn_board_review","pwn_board_verify","pwn_board_verification"],"hooks":["transform_tool_result","pre_llm_call","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152960,"prs":[{"n":152960,"state":"merged","created":"2026-11-10T22:31:27Z"}],"created":"2026-11-10T22:31:27Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/t4lus-sec/pwn-board/7896f5e853ffca04dfd5f97a5b6a7a80eafee120/docs/pane-dark.png","https://raw.githubusercontent.com/t4lus-sec/pwn-board/7896f5e853ffca04dfd5f97a5b6a7a80eafee120/docs/pane-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pwn-board.webp"},{"name":"branchpoint","title":"Branchpoint","summary":"Explore the same task with 2-8 independent agent plans (default 4), optionally on different models. Build selected routes in isolated Git worktrees (default top 2), compare them with three blind reviewers and an evidence-linked decision record, then adopt or converge their ideas into another candidate. Includes a loopback live view, decision log, rewind anchors and reversible adoption.","disclosure":"writes worktree metadata, branches, snapshots and refs/branchpoint/ in the project; only adopt changes the original working tree. Optional automatic prompt snapshots can be disabled. File-only child agents have plugin-level worktree guards, not an OS sandbox; trusted project test/lint/type commands run as subprocesses. Goal, rewind context, source excerpts and ledgers go to the user's configured Hermes model with best-effort credential-pattern scrubbing; secret-looking files are excluded. Artifacts live in the profile's plugin-data/branchpoint, or the standalone CLI's local state directory. The view binds to 127.0.0.1 with a server token. Spawns Git and headless Hermes; standalone model chats expose only session-local TODO bookkeeping. No telemetry, self-updater, stored credentials or direct external network calls by the plugin; model transport is handled by Hermes.","category":"tools","platforms":["linux","macos"],"maintainer":"Sahil-SS9","author":"Sahil-SS9","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/Sahil-SS9/hermes-branchpoint","docs":"https://github.com/Sahil-SS9/hermes-branchpoint#readme","tools":["branchpoint_status","branchpoint_decision","branchpoint_fork"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","transform_tool_result","post_api_request"],"middleware":[],"env":[],"known_issues":"Screenshots are pinned to the 0.2.1 release commit: the docs images are unchanged, and that is the revision whose immutable raw URLs are on the review-approved list.; Real builds require matching Branchpoint hooks installed and enabled in the child's Hermes home; absent, disabled or stale hooks stop the build.; Child token caps are not a live cross-process budget. Missing usage is explicitly estimated; inherited failing checks and skipped evidence remain visible.; Replay produces a paste-ready prompt, not a programmatically forked Hermes session. Undo restores the entire pre-adopt tree, replacing later edits.; POSIX file locking is required: Linux/macOS; use WSL on Windows. Native Hermes integration is tested on Linux, with offline CI on Linux and macOS.","state":"open","pr":152959,"prs":[{"n":152959,"state":"open","created":"2026-11-10T22:30:42Z"}],"created":"2026-11-10T22:30:42Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Sahil-SS9/hermes-branchpoint/87ebeb0c06e622b4768b7e6d48c3704e372b3fba/docs/multiverse.png","https://raw.githubusercontent.com/Sahil-SS9/hermes-branchpoint/87ebeb0c06e622b4768b7e6d48c3704e372b3fba/docs/decision.png","https://raw.githubusercontent.com/Sahil-SS9/hermes-branchpoint/87ebeb0c06e622b4768b7e6d48c3704e372b3fba/docs/decision-log.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/branchpoint.webp"},{"name":"hermes-anchor","title":"Anchor","summary":"Context engine that pins decisions, amounts and dates verbatim before compressing: facts are detected deterministically (zero model calls), re-issued word-for-word in a carrier message on every compression pass, and the unpinned middle folds into a size-capped extractive digest.","disclosure":"Anchor makes no network requests, no model calls and no subprocesses; it reads only the conversation messages the host hands the engine and writes only its own pin store at $HERMES_HOME/plugin-data/anchor/pins.json; no credentials are requested or read; token-saved figures are estimates (~4 chars/token) and never gate behaviour.","category":"general","platforms":[],"maintainer":"Aayu095","author":"Aayu095","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Aayu095/hermes-anchor","docs":null,"tools":["anchor_pin","anchor_unpin","anchor_pins","anchor_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152955,"prs":[{"n":152955,"state":"open","created":"2026-11-10T22:22:30Z"}],"created":"2026-11-10T22:22:30Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/aayuG_/status/2120507677386436705"],"youtube":[],"thumb":null},{"name":"svault","title":"Secrets Vault","summary":"Field-level secrets protection: encrypt sensitive fields in a database at rest, redact them automatically when the agent reads the data, and reveal a single value only with human approval.","disclosure":"reads/writes the files you point it at; stores agent private keys in ~/.svault/agents/.","category":"tools","platforms":[],"maintainer":"Sky","author":"Nifemi0","version":"1.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Nifemi0/svault","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152954,"prs":[{"n":152954,"state":"open","created":"2026-11-10T22:21:20Z"}],"created":"2026-11-10T22:21:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"session-receipts","title":"Session Receipts: session flight recorder + weekly process digest","summary":"Session Receipts turns a Hermes session, a date range, or a kanban card's evidence chain into one self-contained offline HTML document: the original ask, every tool call as a timed node, failures and retries exactly as recorded (never collapsed into the success that followed), per-model token spend, and the cost Hermes recorded, with a reconciliation delta. A client theme renders the same data as a paper document for sharing; `--redact` writes a share-safe copy with a redaction manifest (secrets, emails, user paths, IPs, phones, plus a user word list); and `receipts rollup --since 7d` aggregates a window into a deterministic weekly digest: failure taxonomy, cost by model and card, slowest tools by p50/p95, retry hotspots, week-over-week deltas. Standard library only; reads the local session store and kanban boards read-only; no network, no credentials, no new dependencies.","disclosure":"a receipt contains the session's real text; secret masking is pattern-based (a safety net, not a guarantee), and shared copies should be reviewed before they leave the machine.","category":"other","platforms":[],"maintainer":"Ryan O'Mara","author":"ryanomara","version":"1.2.0","requires_hermes":"","repo":"https://github.com/ryanomara/hermes-plugin-receipts","docs":"https://github.com/ryanomara/hermes-plugin-receipts#readme","tools":["receipts_build"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152953,"prs":[{"n":152953,"state":"open","created":"2026-11-10T22:20:02Z"}],"created":"2026-11-10T22:20:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pepper","title":"Pepper for Hermes","summary":"Say “parlay this” to find a ParlayTix ticket or preview two outcome rights for one you own. Resume the same split across chats, review a listing for the other side in your wallet, or set a budget watch and ask for updates.","disclosure":"crypto-adjacent ticketing: talks only to the ParlayTix hosted MCP server (mcp.parlaytix.xyz, OAuth via Hermes) and can preview/create ticket splits that mint outcome-right NFTs on Base, prepare checkout and listing reviews, and create/activate/answer Scout watches; payment, purchase and listing signing happen in the user's ParlayTix wallet, and write calls are gated by Hermes approval only when the server is configured `trust: untrusted` as the README instructs.","category":"tools","platforms":[],"maintainer":"Akshay-Scalelabs","author":"Akshay-Scalelabs","version":"0.5.1","requires_hermes":">=0.21.5","repo":"https://github.com/Akshay-Scalelabs/pepper-hermes-plugin","docs":"https://github.com/Akshay-Scalelabs/pepper-hermes-plugin/blob/c1f61cdf362c00cd3dc6eee416c5feecfa433b74/README.md","tools":["pepper_start","pepper_connection","pepper_find","pepper_select","pepper_resume","pepper_forget","pepper_review","pepper_status","pepper_owned","pepper_questions","pepper_parlay","pepper_split","pepper_parlay_status","pepper_offer","pepper_parlay_forget","pepper_watches","pepper_watch","pepper_watch_control","pepper_watch_respond"],"hooks":[],"middleware":[],"env":[],"known_issues":"Live splitting requires ParlayTix admission for the specific account and verified ticket.","state":"merged","pr":152949,"prs":[{"n":152949,"state":"merged","created":"2026-11-10T22:09:56Z"}],"created":"2026-11-10T22:09:56Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Akshay-Scalelabs/pepper-hermes-plugin/c1f61cdf362c00cd3dc6eee416c5feecfa433b74/docs/ticket-review.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pepper.webp"},{"name":"local-fleet","title":"Local Fleet","summary":"Your local inference fleet, operated from Hermes Desktop: routing across your own boxes (DGX Spark / GB10, Ollama, vLLM, LiteLLM, clusters behind one endpoint). Probes each box, makes the least busy healthy one the primary model, falls back to smaller models on smaller boxes, then to your cloud model, and switches back when a box recovers. Why-this-box inspector, flight recorder, outage rehearsal, drift detection, readiness, savings with its working, doctor. Optional: subagents across boxes (delegation backend fleet), side tasks on the fleet (auxiliary.<task>), keep the routed model loaded, private inference (primary, fallback chain, side tasks and subagents held to your boxes, failing rather than using cloud; not air-gapping). Writes model.*, fallback_providers, and on request delegation.backend and auxiliary.<task>; private on removes non-local fallback entries and puts them back on off; hermes fleet restore puts the primary back. Network: HTTP only to the boxes you register. Observer hooks record per-call endpoint, model, tokens and duration (never content) in its data dir. Never moves a primary that holds an inline API key and never copies a key into its data. Read-only tools plus a model pull from the Ollama library that Hermes asks you to approve; no remote command execution.","disclosure":"","category":"models","platforms":[],"maintainer":"humedini","author":"humedini","version":"0.3.2","requires_hermes":">=0.22","repo":"https://github.com/humedini/local-fleet","docs":"https://github.com/humedini/local-fleet#readme","tools":["fleet_status","fleet_list_nodes","fleet_pull_model"],"hooks":["on_session_start","pre_tool_call","post_api_request","api_request_error","post_auxiliary_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152948,"prs":[{"n":152948,"state":"open","created":"2026-11-10T22:08:54Z"}],"created":"2026-11-10T22:08:54Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/banner.png","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/fleet-page.png","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/fleet-map.gif","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/fleet-chip.png","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/storyboard-1-local.png","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/storyboard-2-cloud.png","https://raw.githubusercontent.com/humedini/local-fleet/94cd17d2477f9d1a6f39aeee153be1d25c5b57e2/docs/img/storyboard-3-recover.png","https://raw.githubusercontent.com/humedini/local-fleet/e467a81f89571b2062ee64345895c0aeced25915/docs/img/fleet-page.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/local-fleet.webp"},{"name":"account-switcher","title":"account-switcher","summary":"Switch between pooled provider accounts (e.g. multiple Claude logins) from chat, CLI, or the agent — with priorities, current-account marker, plan mode, and optional usage percentages.","disclosure":"","category":"tools","platforms":[],"maintainer":"hendkai","author":"hendkai","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/hendkai/hermes-account-switcher","docs":null,"tools":["account_switch"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152944,"prs":[{"n":152944,"state":"open","created":"2026-11-10T22:03:30Z"}],"created":"2026-11-10T22:03:30Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-zotero","title":"Zotero Library","summary":"Search and read the papers in your own Zotero library before going to the web: a local, read-only full-text index (SQLite FTS5, BM25) built from a copy of Zotero's database, so it works with Zotero open or closed. Four tools (zotero_search with a strong/thin/none coverage verdict, zotero_read for passages, your own highlights and notes and a citation line, zotero_status, zotero_sync), a bundled skill that sends literature questions to the library first, and a `hermes zotero` command (doctor, snapshot, sync).","disclosure":"reads outside its own data folder: the Zotero data directory (copies zotero.sqlite and its write-ahead log, reads the .zotero-ft-cache text files in storage/), Zotero's prefs.js to find that directory, and a Markdown folder only if the user sets one; writes only to its plugin-data folder (snapshot, index, lock file) and never to Zotero; the index holds the full text of the user's papers and stays on the machine; its only network request goes to Zotero's local API on 127.0.0.1:23119 for formatted citations, bypassing any proxy, and succeeds only when the user has switched that API on (off by default); no credentials, no shell commands, no background processes, no telemetry. Independent community plugin, not affiliated with Zotero.","category":"tools","platforms":[],"maintainer":"gerdosi","author":"gerdosi","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/gerdosi/hermes-zotero","docs":"https://github.com/gerdosi/hermes-zotero#readme","tools":["zotero_status","zotero_search","zotero_read","zotero_sync"],"hooks":[],"middleware":[],"env":[],"known_issues":"The first `hermes zotero sync` builds the index before the tools return results: about 70 s and 3.5 GB for 19,000 papers with full text (roughly 180 KB per paper); later syncs take seconds; Citations come from Zotero itself only while Zotero is running with its local API switched on (Settings → Advanced, off by default); otherwise the citation line is an approximate author-year line marked approximate: true; Search is lexical (BM25 with stemming), not semantic: synonyms and brand names can miss, and PDFs without a text layer are found by title and abstract only; Tested on macOS with Zotero 11; the Windows and Linux data-directory paths are implemented but not yet tested","state":"open","pr":152942,"prs":[{"n":152942,"state":"open","created":"2026-11-10T21:57:30Z"}],"created":"2026-11-10T21:57:30Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/gerdosi/status/2120629118475608263"],"youtube":[],"thumb":null},{"name":"hermes-safeguard","title":"Hermes SafeGuard","summary":"Deterministic security middleware, EVM simulation guard, and prompt injection defense for on-chain agent actions.","disclosure":"","category":"tools","platforms":[],"maintainer":"robberdom","author":"robberdom","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/robberdom/hermes-safeguard","docs":"https://github.com/robberdom/hermes-safeguard","tools":["safeguard_check_policy","safeguard_execute_tx","mint_nft"],"hooks":["pre_tool_call"],"middleware":[],"env":["SAFEGUARD_RPC_URL","SAFEGUARD_THREAT_POLL_INTERVAL","TELEGRAM_BOT_TOKEN","SAFEGUARD_PASSPHRASE","PECKSHIELD_API_URL","SCAMSNIFFER_API_URL","SLOWMIST_API_URL"],"known_issues":"","state":"open","pr":152939,"prs":[{"n":152939,"state":"open","created":"2026-11-10T21:51:12Z"}],"created":"2026-11-10T21:51:12Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mission-control","title":"Mission Control","summary":"Live mission-control dashboard for Hermes Desktop — tool waterfall, parallel subagent cards, token and estimated-cost meters with a prompt-cache badge, plus budget and possible-loop alerts, streamed in real time. Read-only; nothing leaves the machine.","disclosure":"","category":"desktop","platforms":[],"maintainer":"rohitdanda","author":"rohitdanda","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/rohitdanda/hermes-mission-control","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","post_api_request","api_request_error","subagent_start","subagent_stop","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152934,"prs":[{"n":152934,"state":"open","created":"2026-11-10T21:45:57Z"}],"created":"2026-11-10T21:45:57Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rohitdanda/hermes-mission-control/3f0b984d653732c7b607db1be99f24cd090b4e79/assets/banner.jpg","https://raw.githubusercontent.com/rohitdanda/hermes-mission-control/3f0b984d653732c7b607db1be99f24cd090b4e79/assets/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mission-control.webp"},{"name":"coursewright","title":"Coursewright","summary":"`/course <topic>` turns a subject into one self-contained HTML course at three depths, novice, intermediate and advanced, switched in place without a reload. It researches before it writes: it searches through whatever web backend the host has configured, reads the pages it finds, collects videos that carry captions, and lists every source, dead end and filtered result in a footer. The model never writes HTML; it fills a validated spec and a renderer draws the page. Figures are drawn from the course's own outline — layered diagrams, sequence diagrams, small charts — and every section ends with an exercise that answers back.","disclosure":"needs network access: the course is written by the host model through ctx.llm, pages are read over the web with the host's own extractor or a configured scraper, and video lookups run yt-dlp and youtube-transcript-api. It writes only its own plugin data directory plus an optional copy under ~/Courses, and owns no credentials of its own.","category":"tools","platforms":[],"maintainer":"NehuenD","author":"NehuenD","version":"0.5.1","requires_hermes":">=0.23","repo":"https://github.com/NehuenD/hermes_coursewright","docs":"https://github.com/NehuenD/hermes_coursewright#readme","tools":["coursewright_plan","coursewright_build","coursewright_list","coursewright_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152933,"prs":[{"n":152933,"state":"open","created":"2026-11-10T21:42:29Z"}],"created":"2026-11-10T21:42:29Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/NehuenD/hermes_coursewright/8f756d4ecb300f20888469ae919bb62e737ca2ef/docs/screenshots/cover-graphite.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/8f756d4ecb300f20888469ae919bb62e737ca2ef/docs/screenshots/cover-seaglass.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/8f756d4ecb300f20888469ae919bb62e737ca2ef/docs/screenshots/cover-carbon-gold.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/8f756d4ecb300f20888469ae919bb62e737ca2ef/docs/screenshots/cover-risograph.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/8f756d4ecb300f20888469ae919bb62e737ca2ef/docs/screenshots/figure-sequence.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/9d97f669d4b3d1f2d9ed206ef30b4cbb5b1e5f59/docs/screenshots/cover-graphite.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/9d97f669d4b3d1f2d9ed206ef30b4cbb5b1e5f59/docs/screenshots/cover-seaglass.png","https://raw.githubusercontent.com/NehuenD/hermes_coursewright/9d97f669d4b3d1f2d9ed206ef30b4cbb5b1e5f59/docs/screenshots/cover-carbon-gold.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/coursewright.webp"},{"name":"shorguard","title":"Shorguard — post-quantum crypto guard","summary":"Post-quantum crypto guard. Stops the agent from writing quantum-vulnerable public-key crypto (RSA, ECDSA, ECDH, EdDSA, X25519, DH, DSA) before it lands: pre_tool_call checks write_file, patch, terminal and execute_code and, in the default block mode, refuses calls that ADD classical crypto, returning the NIST replacement (ML-KEM / ML-DSA / SLH-DSA) with working cryptography>=48 code so the agent rewrites it (approve mode routes to Hermes's approval gate instead; warn mode only annotates). Tools shorguard_scan / shorguard_explain, /shorguard (status, mode, scan, explain) and `hermes shorguard scan` give a post-quantum readiness grade with text, JSON or SARIF output and CI exit codes. 52 rules across Python, JS/TS, Go, JVM, Rust, .NET, shell/CI, TLS config, PEM keys and JWT algorithms, mapped to NIST IR 8547 (deprecated after 2030, disallowed after 2035).","disclosure":"reads the content of inspected tool calls, the file a write_file is about to overwrite (to flag only newly added crypto) and paths you ask it to scan; writes its own plugin state (counters and the last 50 events: time, action, tool, file name, rule ids — never code or arguments) and its own settings when changed via /shorguard; writes a report only with --output. No network, subprocesses, credentials, telemetry or background work.","category":"tools","platforms":[],"maintainer":"Akanimoh12","author":"Akanimoh12","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Akanimoh12/shorguard","docs":"https://github.com/Akanimoh12/shorguard/tree/ad949b682249e5c9401eaf3b5c0ffe244d668b33#readme","tools":["shorguard_scan","shorguard_explain"],"hooks":["pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Pattern-based: it sees crypto your code calls directly, not crypto inside dependencies or a library's TLS defaults. A clean grade means no obvious classical crypto, not a certification.; approve mode uses Hermes's approval gate, which auto-approves under YOLO; use block mode for enforcement.; With plugins.isolation: host the `hermes shorguard` CLI subcommand is not available; use /shorguard scan or the shorguard_scan tool.","state":"merged","pr":152930,"prs":[{"n":152930,"state":"merged","created":"2026-11-10T21:33:59Z"}],"created":"2026-11-10T21:33:59Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Akanimoh12/shorguard/ad949b682249e5c9401eaf3b5c0ffe244d668b33/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/shorguard.webp"},{"name":"ultimate-dashboard","title":"Ultimate Dashboard","summary":"A customizable dashboard page for Hermes Desktop and the Webapp, with 15 cards: approvals you can answer, running sessions, scheduled jobs with a 7-day timeline, job results, plan usage, spend, tool activity, health, services, machine stats, logs, agent memory, skills, files made and Workers, plus Quick launch shortcuts. Arrange cards into views, save templates, and the layout syncs between Desktop and the Webapp. English and Arabic (RTL); follows the Hermes theme.","disclosure":"no telemetry and no third-party requests; the page talks only to your Hermes gateway. Runs one command through cli.exec, `hermes usage --provider <slug> --json`, which asks each signed-in provider for plan usage. Its backend opens state.db read-only (session titles, token and cost columns, tool names and outcomes, MEDIA file paths; no message text), and reads the size of memories/MEMORY.md and USER.md (never the text), the dates in skills/.usage.json, the newest file in cron/output/<job id>/, and machine stats via psutil including the hostname. Stores the layout in plugin-data/ultimate-dashboard/state.json. Answers an approval only when you click, with once or deny, never always. Anyone signed in to your dashboard can see what the cards show.","category":"desktop","platforms":[],"maintainer":"Yazeed-A-H","author":"Yazeed-A-H","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/Yazeed-A-H/Ultimate-Dashboard","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152928,"prs":[{"n":152928,"state":"merged","created":"2026-11-10T21:30:29Z"}],"created":"2026-11-10T21:30:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/banner.png","https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/dashboard.png","https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/system.png","https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/edit-layout.png","https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/add-card.png","https://raw.githubusercontent.com/Yazeed-A-H/Ultimate-Dashboard/601439b546f77b0d9563ea44a3368e92f001b774/docs/screenshots/settings.png"],"videos":[],"x":["https://x.com/StillYazeed/status/2120268401298034720"],"youtube":[],"thumb":"/hackathon/thumbs/ultimate-dashboard.webp"},{"name":"coursebook","title":"Coursebook","summary":"A native Hermes Desktop learning workspace where a lesson is governed state rather than chat: one objective at a time, typed checks, bounded grading, transactional transitions, inspectable evidence, and sourced visuals and audio, plus parent-prepared lesson packs.","disclosure":"schoolwork, progress and evidence stay on this machine in profile-scoped SQLite under $HERMES_HOME/plugin-data/coursebook/; pack import reads a local archive the user picks and pack export writes a local file (neither uploads); no telemetry, no credential store, no self-update. Provider calls go through Hermes: lesson chat uses the selected chat provider, plan/lesson/Parent Studio generation uses the host plugin LLM route (optionally a configured validator model/provider) with the goal or parent brief and research excerpts, and research uses the host web_search/web_extract tools. Its own direct requests are limited to downloading generated images from fal.media/fal.run and a first-use download of faster-whisper model weights from Hugging Face; pronunciation practice runs the local ffmpeg binary. It starts background job threads at load that run Desktop-queued generation jobs, injects lesson context into bound lesson chats through pre_llm_call and can block a turn when its lesson state cannot be read, and imports undocumented Hermes modules (hermes_cli.sqlite_util, tools.web_tools) that may break on a Hermes update.","category":"desktop","platforms":[],"maintainer":"DeseretSaint","author":"DeseretSaint","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/DeseretSaint/hermes-classroom","docs":"https://github.com/DeseretSaint/hermes-classroom#install-locally","tools":["coursebook_status","coursebook_due"],"hooks":["pre_llm_call","post_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152920,"prs":[{"n":152920,"state":"open","created":"2026-11-10T21:12:49Z"}],"created":"2026-11-10T21:12:49Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":["https://raw.githubusercontent.com/DeseretSaint/hermes-classroom/master/docs/launch/coursebook-launch-30s.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"look","title":"Look","summary":"Ask about pages and use guarded Chrome actions. Apple Silicon macOS beta with broad debugger access and optional local voice and eyes.","disclosure":"Look runs its own Chrome profile (~/.cache/look/chrome-profile) on a loopback DevTools port and sends your questions and captured page evidence to your configured model. Model-requested navigation and link clicks refuse private, loopback and metadata hosts only before navigating (redirects and DNS rebinding are not contained; the owner setting allow_private_network turns the check off). `/look actions allow-all` skips Look's own action review for the bound conversation. When TYPESAFE_API_KEY is set (early_highlight is on by default), your spoken question and pointer structure, plus page text if highlight_include_page_text is on, go to api.typesafe.ai. Setup downloads checksum-pinned NVIDIA NeMo-Speech native libraries, Hugging Face speech models and MediaPipe WASM into ~/Library/Caches/Look and ~/.cache/look.","category":"web","platforms":["macos"],"maintainer":"SilentHacks","author":"SilentHacks","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/SilentHacks/look","docs":"https://github.com/SilentHacks/look","tools":["gaze_resolve","gaze_choose","gaze_highlight","gaze_click","gaze_read","gaze_fill","gaze_press","gaze_open_tab","gaze_navigate","gaze_scroll","gaze_wait","gaze_request_commit","gaze_calibrate","gaze_benchmark"],"hooks":["pre_llm_call","on_stream_delta","post_llm_call","on_session_end","on_session_reset","post_compaction","pre_tool_call"],"middleware":["llm_request","tool_execution"],"env":[],"known_issues":"Requires Apple Silicon, native arm64 Python 3.11–3.14, Chrome, one display and an in-process local Hermes session with input permission.; Eye tracking is experimental. Real-camera accuracy and screen-reader compatibility are unverified. English-first voice and UI.; Questions and page evidence reach the configured model. Optional TypeSafe scope requests can add costs.; Explicit allow-all skips Look action review for requested actions. Chrome sign-ins, model caches, calibration and Hermes/provider history survive plugin removal.; Gallery shows fixture-backed UI captured before v3 integration, with scripted answers and no provider inference. Not native Chrome consent or a fresh install.","state":"open","pr":152918,"prs":[{"n":152918,"state":"open","created":"2026-11-10T21:10:26Z"}],"created":"2026-11-10T21:10:26Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/01-typed-input.png","https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/02-scripted-answer.png","https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/03-followup-input.png","https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/04-followup-answer.png","https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/05-protected-action-review.png","https://raw.githubusercontent.com/SilentHacks/look/7c01a94aa651adedaf27e5216598c6deef293050/docs/catalog/screenshots/06-extension-consent.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/look.webp"},{"name":"culprit","title":"Culprit","summary":"git bisect for your agent. Records a snapshot after every tool call that changes a file, then binary-searches those snapshots with your test command to name the exact step that broke it, with its diff, and can undo only that step while keeping every later change. Works as /culprit, as `hermes culprit`, and as tools the agent can call.","disclosure":"no network and no telemetry; runs git against a private object store under HERMES_HOME/plugin-data/culprit/ (the project's own .git is never read or written) and stores unencrypted copies of the working folder's files there, honouring .gitignore and always skipping .env files, keys, credential folders and dependency folders; keeps each step's tool name and the first 100 characters of its path or command with token-like values masked on a best-effort basis; during a search it runs the given test command through the system shell in temporary copies and deletes them; git and the test command get an explicit minimal environment (PATH, home, temp and locale variables, plus the names the user lists in pass_env), never the Hermes environment; revert writes only the files in the reverted step's diff and refuses when later edits conflict; model-initiated culprit_bisect and culprit_revert go to Hermes's approval prompt, which shows the exact command (masked) or the step, with a rule key derived from it, and fail closed in unattended runs; /culprit typed in the CLI or Desktop runs directly, and on messaging platforms it is read-only (steps, show, help) unless the owner sets allow_remote_commands; no background processes; nothing is pruned automatically (/culprit clear deletes a project's data).","category":"tools","platforms":[],"maintainer":"Rizal","author":"d0txyz","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/d0txyz/hermes-culprit","docs":"https://github.com/d0txyz/hermes-culprit/tree/9dd7662ceb0d25475fac878cc1499207426c660b#readme","tools":["culprit_timeline","culprit_bisect","culprit_revert"],"hooks":["on_session_start","pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152914,"prs":[{"n":152914,"state":"open","created":"2026-11-10T21:04:21Z"}],"created":"2026-11-10T21:04:21Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/d0txyz/hermes-culprit/9dd7662ceb0d25475fac878cc1499207426c660b/docs/screenshots/culprit-found.png","https://raw.githubusercontent.com/d0txyz/hermes-culprit/9dd7662ceb0d25475fac878cc1499207426c660b/docs/screenshots/steps.png","https://raw.githubusercontent.com/d0txyz/hermes-culprit/9dd7662ceb0d25475fac878cc1499207426c660b/docs/screenshots/revert.png","https://raw.githubusercontent.com/d0txyz/hermes-culprit/30336c608e3ae3c0b194aa86a502a2c869257696/docs/screenshots/culprit-found.png","https://raw.githubusercontent.com/d0txyz/hermes-culprit/30336c608e3ae3c0b194aa86a502a2c869257696/docs/screenshots/steps.png","https://raw.githubusercontent.com/d0txyz/hermes-culprit/30336c608e3ae3c0b194aa86a502a2c869257696/docs/screenshots/revert.png"],"videos":[],"x":["https://x.com/peper1zal/status/2120262031421190279"],"youtube":[],"thumb":"/hackathon/thumbs/culprit.webp"},{"name":"gmi-nexus","title":"GMI NEXUS","summary":"Adaptive intelligence layer for Hermes Agent over the live GMI Cloud model catalogue. A goal is understood, planned into steps, and each step is routed to the model that suits it from the catalogue read live at runtime, so a retired model stops being routable and a new one becomes routable without a code change. Results are evaluated against each step's own criteria, a failure is recovered on a different model with bounded retries, the verified outcome feeds the routing statistics, and the report says what ran, what it cost and what failed. Ships a vision module for screenshots and before/after comparison, a benchmarking arena whose results feed the router, a Dev Agent that writes and tests code through Hermes' own tools, and a creative engine for image, video and audio generation and editing. Also ships a web dashboard tab. No third-party dependencies; the key is read through Hermes' secret scope; a per-run ceiling, a rolling daily ceiling and an approval threshold are enforced before any request is submitted.","disclosure":"Sends goals, prompts, files and images you or the model name, plus screenshots captured through Hermes' computer_use tool, to GMI Cloud (api.gmi-serving.com, console.gmicloud.ai) for paid inference and generation billed to your GMI account. Spend at or above approval_threshold_usd, or with no published price, asks for approval in Hermes' own prompt, under per-run and daily caps. Vision downloads model-supplied public image URLs on your machine before sending them. The Dev Agent writes files and runs test commands through Hermes' write_file and terminal tools.","category":"models","platforms":[],"maintainer":"Joystonm","author":"Joystonm","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Joystonm/hermes-gmi-nexus","docs":"https://github.com/Joystonm/hermes-gmi-nexus/blob/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/plugins/gmi-nexus/README.md","tools":["nexus_models","nexus_analyze","nexus_run","nexus_benchmark","nexus_vision","nexus_media","nexus_dev","nexus_report"],"hooks":[],"middleware":[],"env":["GMI_API_KEY"],"known_issues":"{\"The dashboard tab needs Hermes' web extra\": 'pip install \"hermes-agent[web]\".'}; Needs a GMI Cloud account and API key. Catalogue reads are free, but inference and generation are billed by GMI Cloud at the model's published rate.","state":"open","pr":152911,"prs":[{"n":152911,"state":"open","created":"2026-11-10T21:00:02Z"}],"created":"2026-11-10T21:00:02Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/banner.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-01-overview.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-02-model-intelligence.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-03-arena.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-04-execution.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-05-multimodal.png","https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/screenshots/nexus-06-settings.png"],"videos":["https://raw.githubusercontent.com/Joystonm/hermes-gmi-nexus/7b2d8c5eb7578d73f4f58907f9ddfe5e2da58fe9/docs/demo/gmi-nexus-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gmi-nexus.webp"},{"name":"contract-necromancer","title":"Done only when your tests pass","summary":"Hermes's done doesn't count until your tests pass. Type /necro freeze in your project: it finds your tests and the command that runs them, writes necro.toml, locks the test files and the settings that choose what runs by hash, and runs them once to say where they stand. When Hermes says it is finished, the plugin runs them itself at the verify step and sends Hermes back with the failing test named; the final reply says when Hermes was sent back and ends with a receipt anyone can re-check, also in a fresh clone (/necro verify: CONFIRMED, MISMATCH or SUPERSEDED). Edits to locked tests are blocked, and any change that gets through fails the check. Only a person can freeze: /necro is a slash command the agent cannot type, and from its shell freezing refuses. A prompt or skill can only ask the model to test its work; these hooks run whether it asks or not.","disclosure":"runs the test commands in the project's frozen necro.toml (split into words, no shell; a command the person types after /necro freeze that uses shell syntax such as && or | is stored and run as sh -c) in the project folder with the user's permissions, unsandboxed, with a small environment (no API keys unless a contract names them), at /necro freeze, from pre_verify, from the final-reply hook when project files changed or the reply claims done, from the necro_check tool (the model can call it but cannot change the commands) and from /necro check; verify re-runs them only for a lock the person approved for that folder, or with --run; with no necro.toml, /necro freeze reads file names and test settings (package.json, pyproject.toml, setup.cfg, tox.ini, Cargo.toml) to pick the command, and may run that command's Python with -c \"import pytest\" in an empty folder (a project interpreter such as .venv/bin/python only when the person typed it); contracts run with the PATH of the Hermes process that runs the agent, minus Hermes's own runtime; reads project files to hash them but never opens credential files such as .env (their pins hold only presence, size and file times); never opens or follows a link (its pin is the link's own text); runs git ls-files with fsmonitor and hooks off and the same small environment; writes .necro/ and necro.toml in the project, and approval records plus the key that seals them (HMAC) under the plugin's data directory; adds NECRO_AGENT_SESSION to the environment of commands the agent runs; runs ps when someone runs freeze, approve or unfreeze from a shell; no network, no telemetry, no credentials, no background processes.","category":"tools","platforms":["linux","macos"],"maintainer":"vijaygopalbalasa","author":"vijaygopalbalasa","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/vijaygopalbalasa/hermes-necromancer","docs":"https://github.com/vijaygopalbalasa/hermes-necromancer#readme","tools":["necro_status","necro_check"],"hooks":["pre_verify","transform_llm_output","pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Tested end to end on macOS with Hermes 0.23.1 and 0.22.7 (a scripted stand-in model drives the real agent loop, and a recorded run used a local qwen3 4B model); unit tests run in CI on Ubuntu and macOS; Windows is untested.; The verify gate is bounded by agent.max_verify_nudges (3 by default); after that the reply goes out stamped Not done.; Guard rails, not a sandbox: the guard stops the agent's ordinary routes early and the hashes are the backstop (a changed frozen file fails its test, a removed lock fails closed); a same-user process that sets out to evade both can still change files and approvals.; In a very large mixed-language repo, zero-config freeze locks every test-looking file under the listed sources, including tests the chosen runner never runs; list narrower sources in necro.toml to lock less.; Freeze, approve and unfreeze are done with /necro in the Hermes chat; from a shell they refuse (Hermes marks every hermes process as an agent harness) and say what to type instead.","state":"open","pr":152908,"prs":[{"n":152908,"state":"open","created":"2026-11-10T20:53:39Z"}],"created":"2026-11-10T20:53:39Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/docs/img/banner.png","https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/docs/img/real-run.png","https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/docs/img/freeze.png","https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/docs/img/blocked.png","https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/docs/img/mismatch.png"],"videos":[],"x":["https://x.com/cryptovijay1/status/2120539126554591379"],"youtube":[],"thumb":"/hackathon/thumbs/contract-necromancer.webp"},{"name":"whiteboard","title":"Hermes Whiteboard","summary":"An agentic whiteboard. Say what you're planning and Hermes lays it out as a route, columns or a map, with hand-drawn stickers. Add rough notes and Hermes proposes groups, owners and action items that you accept one by one and can take back. Hand an action item to Hermes and an agent does it on the board and delivers the result next to the note with its sources, or run the whole route and get a brief at the end. Select anything and ask about it. Once you allow it, any chat can read your boards and propose changes.","disclosure":"laying out a board, grouping notes, unpacking a result and the brief each start a hidden Hermes session told to use no tools; Hand to Hermes, Run the route and Ask start hidden sessions that use your Hermes tools and read third-party web pages, at most three at once, each stopped after 4 minutes or 24 tool calls; approval prompts inside these sessions are denied; export writes the one Markdown or CSV file you name in the system dialog, through the plugin's own backend; boards live in Desktop plugin storage, with a copy under plugin-data/whiteboard/ only after you turn on chat access, which starts off; no telemetry, no credentials, no shell commands or background processes of its own. Independent community project, not affiliated with Nous Research.","category":"desktop","platforms":[],"maintainer":"Adolanium","author":"Adolanium","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Adolanium/hermes-whiteboard","docs":"https://github.com/Adolanium/hermes-whiteboard#readme","tools":["whiteboard_list","whiteboard_read","whiteboard_propose","whiteboard_create"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152907,"prs":[{"n":152907,"state":"merged","created":"2026-11-10T20:48:58Z"}],"created":"2026-11-10T20:48:58Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Adolanium/hermes-whiteboard/9151ee902ae7008d1ab47f9398ea7667c569bf2f/docs/assets/catalog.png","https://raw.githubusercontent.com/Adolanium/hermes-whiteboard/9151ee902ae7008d1ab47f9398ea7667c569bf2f/docs/assets/route.jpg","https://raw.githubusercontent.com/Adolanium/hermes-whiteboard/9151ee902ae7008d1ab47f9398ea7667c569bf2f/docs/assets/delivered.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/whiteboard.webp"},{"name":"sochen","title":"Sochen","summary":"Give Hermes a phone with nothing to set up: Sochen (sochen.dev), a cloud agent for any open-source agent, phones a US business for you and brings back the answer, with no Twilio account, number or voice keys of your own. When the business asks something only you can answer, the question comes to your Hermes chat while they hold the line, and your reply goes straight back into the call. It also runs long research in the cloud and handles email and calendar jobs that wait for your OK, and Hermes is told when each job finishes. Every account gets 100 free Sochen API credits, spread over any number of jobs; after that, packs or a monthly API plan (sochen.dev/pricing#api). Free GST invoices, rent receipts for HRA and UPI bill splits with no account, and your Sochen desk as a page in Hermes Desktop.","disclosure":"network calls go to sochen.dev only: the Agent API with your SOCHEN_API_KEY (read through Hermes's secret scope) for jobs, job status and the desk, and the public tools endpoint, with no key, for the free tools. Jobs run on your Sochen account and credits, and Hermes asks before each handoff. On your next message the plugin checks up to two open jobs (4 s each; a job whose call is going on, every turn), sochen_job may wait up to 60 s for news while a call goes on, and sochen_answer sends only the answer the user gave. Hermes Desktop reads the desk every 30 s while open. A short list of handed-off jobs (id, label, status) is kept in the plugin's own state. Requests carry a hermes-sochen/<version> client name; there is no other telemetry.","category":"voice","platforms":[],"maintainer":"Sochen","author":"N-45div","version":"0.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/N-45div/sochen-plugin","docs":"https://sochen.dev/agents","tools":["sochen_handoff","sochen_job","sochen_answer","sochen_desk","sochen_gst_invoice","sochen_rent_receipts","sochen_upi_split"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Jobs, job status and the desk need a Sochen key from sochen.dev/agents (every account gets 100 free API credits). Phone calls go to US businesses with nothing to set up, need paid API credits, and other countries have a waitlist.","state":"merged","pr":152906,"prs":[{"n":152906,"state":"merged","created":"2026-11-10T20:46:21Z"}],"created":"2026-11-10T20:46:21Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/N-45div/sochen-plugin/b785f9176be75c4d5567cade43f926dc154ca034/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sochen.webp"},{"name":"xscapes","title":"xscapes","summary":"Living ASCII scenes under Hermes in the terminal that show what the agent is doing while you wait: the wind, the sea or the rain rises with the work, a thought cloud means it is thinking, owlets, crablets or kittens arrive for subagents, the moon sinks as the context fills, and the companion knocks with a sound when Hermes finishes or needs you (a question, a password prompt, an approval). Forwards fifteen lifecycle hooks to the xscapes CLI (`xscapes hook <event> hermes`, stdin JSON, never waited on, never blocks); needs the xscapes binary. No tools, middleware or env vars; no network.","disclosure":"forwards every tool call's name and full arguments, approval commands, and the first line (up to 120 characters) of each prompt and reply to the separately installed xscapes binary, which is not covered by this pin and keeps events under ~/.config/xscapes/.","category":"general","platforms":["linux","macos"],"maintainer":"donlucasx","author":"donlucasx","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/donlucasx/hermes-xscapes","docs":"https://donlucasx.github.io/xscapes/","tools":[],"hooks":["on_session_start","on_session_reset","on_session_end","on_session_finalize","pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","subagent_start","subagent_stop","on_human_input_request","on_human_input_resolved","post_api_request"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152904,"prs":[{"n":152904,"state":"open","created":"2026-11-10T20:44:39Z"}],"created":"2026-11-10T20:44:39Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/donlucasx/xscapes/main/assets/hermes/reveal.gif","https://raw.githubusercontent.com/donlucasx/xscapes/main/assets/hermes/owlets.gif","https://raw.githubusercontent.com/donlucasx/xscapes/main/assets/hermes/ask.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/xscapes.webp"},{"name":"project-command-center","title":"Project Command Center","summary":"A board for every Hermes Project: lane, live sessions, token spend, git branch and GitHub issues and pull requests in one place, with a detail page per project. Click an issue and a session opens inside that project's folder with the issue number, title and URL already in the composer, unsent. Branch rows open a session in a worktree or after a checkout, and each session carries its own lane, so a PR climbing to review is visible where the work happens. Includes a GitHub reader with full issue and PR modals, comments, status filters and a Zed-style commit graph.","disclosure":"reads your git repositories and their history, switches branches and creates worktrees under `<repo>/.worktrees/` when you ask it to from the board (refusing on a dirty tree, an in-progress merge, a branch checked out elsewhere or an existing target; git's own repo hooks run as they would in your shell), and comments on or closes issues and PRs as your authenticated gh account. Board state lives in a local SQLite file under the Hermes home. Two hooks read a terminal call's `gh pr create` output to link the PR and move the session to review, and inject one short line naming the session's own card into each turn; each has its own kill file (`auto_link.off`, `card_context.off`). Network calls go to api.github.com, avatars.githubusercontent.com, and a favicon of a homepage a project declares.","category":"desktop","platforms":[],"maintainer":"NyllRE","author":"NyllRE","version":"0.4.2","requires_hermes":">=0.23.0","repo":"https://github.com/NyllRE/project-command-center","docs":"https://github.com/NyllRE/project-command-center#readme","tools":["pcc_board","pcc_set_status","pcc_work_item"],"hooks":["pre_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152899,"prs":[{"n":152899,"state":"open","created":"2026-11-10T20:33:45Z"}],"created":"2026-11-10T20:33:45Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/covers/cover-final.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/board.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/composer.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/project.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/pull-requests.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/issue-modal.png","https://raw.githubusercontent.com/NyllRE/project-command-center/eaa3e2d3a046eb677f4c67aae98b78f1dcec4043/docs/screenshots/graph.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/project-command-center.webp"},{"name":"browsersolver","title":"BrowserSolver","summary":"Fetch web pages behind Cloudflare, DataDome and similar protections for the built-in web_extract tool, through the BrowserSolver web unlocker API. Extract only; pair it with a search backend for web_search.","disclosure":"sends each URL to api.browsersolver.com with your BROWSERSOLVER_API_KEY, and calls can use BrowserSolver credits. Reads the key only through Hermes's secret scope. Registers no tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"web","platforms":[],"maintainer":"browsersolver","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/browsersolver/hermes-plugin-browsersolver","docs":"https://github.com/browsersolver/hermes-plugin-browsersolver#readme","tools":[],"hooks":[],"middleware":[],"env":["BROWSERSOLVER_API_KEY"],"known_issues":"","state":"merged","pr":152894,"prs":[{"n":152894,"state":"closed","created":"2026-11-10T20:23:54Z"}],"created":"2026-11-10T20:23:54Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"capturekit","title":"CaptureKit","summary":"Page content as clean Markdown for the built-in web_extract tool, through the CaptureKit Content API. Extract only; pair it with a search backend for web_search.","disclosure":"sends each URL to api.capturekit.dev with your CAPTUREKIT_API_KEY, and calls can use CaptureKit credits. Reads the key only through Hermes's secret scope. Registers no tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"web","platforms":[],"maintainer":"capturekitdev","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/capturekitdev/hermes-plugin-capturekit","docs":"https://github.com/capturekitdev/hermes-plugin-capturekit#readme","tools":[],"hooks":[],"middleware":[],"env":["CAPTUREKIT_API_KEY"],"known_issues":"","state":"merged","pr":152893,"prs":[{"n":152893,"state":"closed","created":"2026-11-10T20:23:41Z"}],"created":"2026-11-10T20:23:41Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"autom","title":"Autom","summary":"Live Google Search results for the built-in web_search tool, through the Autom SERP API. Search only; pair it with an extract backend for web_extract.","disclosure":"sends each search query to api.autom.dev with your AUTOM_API_KEY, and calls can use Autom credits. Reads the key only through Hermes's secret scope. Registers no tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"web","platforms":[],"maintainer":"automdev","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/automdev/hermes-plugin-autom","docs":"https://github.com/automdev/hermes-plugin-autom#readme","tools":[],"hooks":[],"middleware":[],"env":["AUTOM_API_KEY"],"known_issues":"","state":"merged","pr":152892,"prs":[{"n":152892,"state":"closed","created":"2026-11-10T20:23:28Z"}],"created":"2026-11-10T20:23:28Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"piloterr","title":"Piloterr","summary":"Fetch web pages for the built-in web_extract tool through the Piloterr web scraping API, with optional JavaScript rendering or anti-bot unblocking. Extract only; pair it with a search backend for web_search.","disclosure":"sends each URL to api.piloterr.com with your PILOTERR_API_KEY, and calls can use Piloterr credits. Reads the key only through Hermes's secret scope. Registers no tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"web","platforms":[],"maintainer":"piloterr","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/piloterr/hermes-plugin-piloterr","docs":"https://github.com/piloterr/hermes-plugin-piloterr#readme","tools":[],"hooks":[],"middleware":[],"env":["PILOTERR_API_KEY"],"known_issues":"","state":"merged","pr":152891,"prs":[{"n":152891,"state":"closed","created":"2026-11-10T20:23:16Z"}],"created":"2026-11-10T20:23:16Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"veille","title":"Veille","summary":"Tools to check emails, domains, IPs, phone numbers, VAT numbers and IBANs for fraud and validity, through the Veille API.","disclosure":"sends the tool arguments to api.veille.io with your VEILLE_API_KEY, and calls can use Veille credits. Reads the key only through Hermes's secret scope. Registers 6 tools, no hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"tools","platforms":[],"maintainer":"veilleio","author":"josselinlbe","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/veilleio/hermes-plugin-veille","docs":"https://github.com/veilleio/hermes-plugin-veille#readme","tools":["veille_check_email","veille_check_domain","veille_check_ip","veille_check_phone","veille_check_vat","veille_check_iban"],"hooks":[],"middleware":[],"env":["VEILLE_API_KEY"],"known_issues":"","state":"merged","pr":152890,"prs":[{"n":152890,"state":"closed","created":"2026-11-10T20:22:48Z"}],"created":"2026-11-10T20:22:48Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-entity54","title":"HERMES ENTITY54","summary":"Role-based authorization for Hermes Agent: OWNER, ADMIN, USER, GUEST roles, default-deny, per-tool and per-bot scoping, tamper-evident receipts, governed Linear issue creation, and versioned policy sync.","disclosure":"a local Node MCP server whose principal is one static identity per profile (OWNER by default), so everyone who can talk to that profile acts as that principal; its roles govern only its own eight tools, not Hermes tools. `entity54_linear_create_issue` creates issues on api.linear.app with your LINEAR_API_KEY without a Hermes approval prompt; it needs a one-time `npm ci --omit=dev` in the installed `server/` directory and a manual `node scripts/setup.mjs` run that writes the signing keys to a local env file you copy into the profile `.env`.","category":"tools","platforms":[],"maintainer":"AGENTROPOLIS","author":"wiredchaos","version":"0.1.0","requires_hermes":"","repo":"https://github.com/AGENTROPOLIS-CITY-OF-AGENTS/AGENTROPOLIS-HERMES-ENTITY-54","docs":"https://github.com/AGENTROPOLIS-CITY-OF-AGENTS/AGENTROPOLIS-HERMES-ENTITY-54","tools":["entity54_authorize","entity54_linear_create_issue","entity54_policy_export","entity54_policy_import","entity54_policy_activate","entity54_receipts_verify","entity54_events_list","entity54_status"],"hooks":[],"middleware":[],"env":["ENTITY54_DATA_DIR","ENTITY54_PRINCIPAL_ID","ENTITY54_BOT_ID","ENTITY54_POLICY_KEY","ENTITY54_PSEUDONYM_KEY","ENTITY54_EVENTS_ENABLED","ENTITY54_LINEAR_TRANSPORT","LINEAR_API_KEY"],"known_issues":"Requires Node 22+ and a Hermes Agent install that supports Agent Plugins 1.0.0.; After install, run npm ci --omit=dev once inside the installed plugin directory (server/) to install the MCP server dependency.; Live Linear transport needs a LINEAR_API_KEY; without it Linear calls fail closed as not configured. A mock transport is available for demos and tests.","state":"open","pr":152885,"prs":[{"n":152885,"state":"open","created":"2026-11-10T20:12:51Z"}],"created":"2026-11-10T20:12:51Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/neurometax/status/2120243593348862406"],"youtube":[],"thumb":null},{"name":"everything-nothing","title":"Everything Nothing","summary":"Save reusable templates, create frontend design briefs, and choose how concise Hermes replies are.","disclosure":"","category":"desktop","platforms":["macos","linux","windows"],"maintainer":"dmkjr","author":"dmkjr","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/dmkjr/hermes-everything-nothing","docs":"https://github.com/dmkjr/hermes-everything-nothing#readme","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152883,"prs":[{"n":152883,"state":"merged","created":"2026-11-10T20:11:02Z"}],"created":"2026-11-10T20:11:02Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/dmkjr/hermes-everything-nothing/74b8f45c7a4c8d6c67beb42a0b74b5e82e251577/docs/template-studio.png","https://raw.githubusercontent.com/dmkjr/hermes-everything-nothing/74b8f45c7a4c8d6c67beb42a0b74b5e82e251577/docs/design-brief.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/everything-nothing.webp"},{"name":"hermes-crm","title":"HermesCRM","summary":"Native relationship management with agent tools, linked records, reports and dashboards.","disclosure":"on your request the agent creates one-shot Hermes cron jobs (task follow-ups, internal CRM analysis assignments, and scheduled research runs that use Hermes' web/search tools on a public question you approve); jobs run unattended with CRM-only plus those tools, deliver locally, and cannot schedule further jobs. Optional PostgreSQL storage sends CRM records to the database URL you configure.","category":"desktop","platforms":[],"maintainer":"gptnius","author":"gptnius","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/gptnius/hermes-crm","docs":"https://github.com/gptnius/hermes-crm/blob/da1d1412eaf10c3ea8ba0b4431cafdbc59c6bcae/docs/USER_GUIDE.md","tools":["crm_contact_report","crm_contact_list","crm_contact_get","crm_contact_create","crm_contact_update","crm_deal_list","crm_deal_get","crm_deal_create","crm_deal_update","crm_task_list","crm_task_get","crm_task_create","crm_task_update","crm_overview","crm_followup_schedule","crm_work_create","crm_work_get","crm_work_list","crm_work_schedule","crm_work_reconcile","crm_work_cancel","crm_work_report","crm_report_catalog","crm_report_run","crm_report_list","crm_report_get","crm_saved_report_run","crm_dashboard_get","crm_report_create","crm_report_update","crm_report_archive","crm_report_restore","crm_dashboard_save","crm_contact_log","crm_contact_log_list","crm_contact_log_void","crm_schema_catalog","crm_schema_stage_create","crm_schema_stage_update","crm_schema_field_create","crm_schema_field_update","crm_record_fields","crm_task_owner_policy","crm_research_evidence_submit","crm_research_note_propose","crm_research_evidence_list","crm_research_proposal_list","crm_research_evidence_get","crm_company_list","crm_company_get","crm_company_records","crm_contact_company_get","crm_company_create","crm_company_update","crm_company_archive","crm_company_restore","crm_contact_company_set","crm_contact_create_with_company","crm_event_list","crm_event_get","crm_event_create","crm_event_update","crm_event_complete","crm_event_cancel","crm_event_reopen","crm_event_needs_rescheduling","crm_relationship_activities","crm_event_reschedule","crm_event_tasks","crm_event_task_create","crm_event_task_link","crm_event_task_unlink","crm_event_revisions","crm_scheduled_research_create","crm_scheduled_research_get","crm_scheduled_research_list","crm_scheduled_research_schedule","crm_scheduled_research_reconcile","crm_scheduled_research_cancel","crm_scheduled_research_run_get","crm_scheduled_research_evidence","crm_scheduled_research_propose","crm_scheduled_research_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"Small-workspace prototype; legacy record lists and form choices are bounded at 500 records.; Native Desktop checked on macOS; broader platform, keyboard and accessibility coverage remains incomplete.; Scheduled results require human review and do not establish that a business task is complete.","state":"merged","pr":152881,"prs":[{"n":152881,"state":"merged","created":"2026-11-10T20:10:06Z"}],"created":"2026-11-10T20:10:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/9fae4eea-53a0-4d24-9d2c-d1d5e50bb7a3","https://github.com/user-attachments/assets/c2027b6a-0d27-4ccf-9b44-52acedf16e6d"],"videos":[],"x":["https://x.com/gptnius/status/2120259388568961305"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-crm.webp"},{"name":"understory","title":"understory","summary":"Understory draws the family tree of music labels — parents, imprints, sub-labels and same-founder lineages — as a time-scaled chronogram in its own Desktop tab, and traces a release's provenance through it. Branches only split, never merge or cross; branch length is proportional to years, oldest at the bottom; a timeline scrubber replays the forest growing; asking the chat where a release came from lights that path and dims the rest. Seven tools (label_add, label_link, release_add, provenance, tree_get, whats_new, follow_setup) over a plugin-local SQLite forest of labels, edges, releases and follows; every edge must carry a source or be user-entered, and a seeded 12-label verified forest loads into an empty database. Optional read-only CTX.fm integration.","disclosure":"with CTX_API_KEY set the backend makes read-only HTTPS requests to ctx.fm for new drops on followed labels (no writes, no scraping, no background daemons, no telemetry); the key is saved through Hermes' credential route and read through its secret scope, never from a file; state lives only in plugin_db; no shell commands. The CTX settings page writes the key via hermes_cli.credential_lifecycle, a private core import (validate warns under rule 9), and falls back to Settings -> Keys if that module is absent. Ships no logo images: nodes use serif initial tiles, with CTX profile thumbnails when a logo_url is present.","category":"desktop","platforms":[],"maintainer":"projectmehari","author":"projectmehari","version":"0.1.8","requires_hermes":">=0.23.0","repo":"https://github.com/projectmehari/understory","docs":"https://github.com/projectmehari/understory#readme","tools":["label_add","label_link","release_add","provenance","tree_get","whats_new","follow_setup"],"hooks":[],"middleware":[],"env":["CTX_API_KEY"],"known_issues":"","state":"open","pr":152879,"prs":[{"n":152879,"state":"open","created":"2026-11-10T20:08:19Z"}],"created":"2026-11-10T20:08:19Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tmewai","title":"tmewai","summary":"Local, offline index for your own Facebook JSON export (Meta's your_activity_across_facebook.zip). Imports messages, comments (including comments_v2), reactions and posts into a seven-table SQLite database without ever extracting the archive to disk, then exposes six tools: archive_scan and archive_ingest validate every ZIP entry in memory (absolute paths, .., drive paths, NUL bytes, duplicate names and symlinks rejected) and give each entry exactly one source_files row so nothing is silently dropped; archive_search runs FTS5 over text folded for Arabic (harakat, alef variants, taa marbuta, alef maqsura, tatweel) while stored text keeps its original spelling; archive_person and archive_overview aggregate over people, conversations, events and attachments; archive_evidence builds a hard-capped bundle (20 events, 4000 characters) with a metadata-only consent row that cannot carry excerpt text. Imports are idempotent by content fingerprint. Python standard library only, no network access, no API key, no environment variable; the database lives under $HERMES_HOME/plugin-data/tmewai/ and TMEWAI_DB_PATH overrides it.","disclosure":"the plugin reads a personal social export the user points it at and stores it unencrypted in that local SQLite file; it never sends archive content anywhere, and archive_evidence only returns its capped bundle to the agent that requested it.","category":"memory","platforms":[],"maintainer":"hadialjurdi7-dot","author":"hadialjurdi7-dot","version":"1.0.0","requires_hermes":"","repo":"https://github.com/hadialjurdi7-dot/hermes-tmewai","docs":"https://github.com/hadialjurdi7-dot/hermes-tmewai#readme","tools":["archive_scan","archive_ingest","archive_search","archive_person","archive_overview","archive_evidence"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152878,"prs":[{"n":152878,"state":"merged","created":"2026-11-10T20:08:07Z"}],"created":"2026-11-10T20:08:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"oneiros","title":"Oneiros Dream Cycle","summary":"Your agent sleeps on it. Nightly proposal-only memory consolidation with morning review, receipts, and one-step rollback. No model calls. Distinct from hermes-dreaming.","disclosure":"Oneiros reads the profile's memory files, session history (state.db, read-only) and memory-hygiene report files to propose memory edits; when the user enables apply it rewrites MEMORY.md/USER.md inside the active profile under Hermes' memory file lock, keeping snapshots, receipts and rollback; no model calls and no network.","category":"memory","platforms":[],"maintainer":"noblebrown-69","author":"noblebrown-69","version":"0.8.8","requires_hermes":"","repo":"https://github.com/noblebrown-69/hermes-oneiros","docs":"https://github.com/noblebrown-69/hermes-oneiros/blob/c9bd78835f6388f04b23a9171c331e6270ef2b73/README.md","tools":["dream_cycle_propose","dream_cycle_status","dream_cycle_apply","dream_cycle_rollback","dream_cycle_receipts","dream_cycle_review_status","dream_cycle_snooze"],"hooks":["pre_llm_call","on_session_open"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152876,"prs":[{"n":152876,"state":"open","created":"2026-11-10T20:06:12Z"}],"created":"2026-11-10T20:06:12Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/noblebrown-69/hermes-oneiros/c9bd78835f6388f04b23a9171c331e6270ef2b73/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/oneiros.webp"},{"name":"proof-lens","title":"proof-lens","summary":"Verify a DRAT refutation and profile its proof depth as a Desktop pane. Pick a CNF and a trace; every accepted line is re-derived by unit propagation (RUP only), and the pane reports the empty clause's certificate depth plus a histogram of derived clauses by depth. Deletions are ignored rather than replayed (sound, strictly more permissive than a deletion-aware checker).","disclosure":"reads only the two files chosen in the browser file dialog; all work runs in the renderer; no network calls, no shell commands, no stored files.","category":"desktop","platforms":[],"maintainer":"invisiblemonsters","author":"invisiblemonsters","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/invisiblemonsters/proof-lens","docs":"https://github.com/invisiblemonsters/proof-lens/blob/64c913e8489e8dcf2ee4d84e5a1e85cbd6a8b2c8/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152875,"prs":[{"n":152875,"state":"merged","created":"2026-11-10T20:04:14Z"}],"created":"2026-11-10T20:04:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-maps","title":"Hermes Maps","summary":"A live map you and Hermes share, docked beside the chat. Hermes plots places it finds on the web with real coordinates, flies the camera, drops pins with a note and source link, and draws routes. You click a pin or circle an area and Hermes receives what you picked. Two looks: a clean flat map and a cinematic globe. No keys and no cost.","disclosure":"viewing the map sends tile requests (your IP address and the area viewed) to tiles.openfreemap.org; a bundled world outline is the offline fallback. Plotting and place search send place names and search text (and the visible map bounds for a visible-area search) from this machine to photon.komoot.io, a free service with no uptime guarantee; results are kept in memory for an hour. Google Maps links and a pin's source link open in the browser only when clicked. Selections you send become chat messages and reach your model provider. Pins, routes, camera and selections are stored in Hermes plugin storage on this machine. No background processes, no telemetry, no credentials, no self-update.","category":"desktop","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/tuancookiez-hub/hermes-maps","docs":"https://github.com/tuancookiez-hub/hermes-maps/tree/48a8ec745036d0c9e4c8343ef4e64130d43367ae","tools":["map_open","map_fly_to","map_add_pins","map_clear","map_draw_route","map_get_state","map_plot_places","map_search_places","map_request_selection"],"hooks":[],"middleware":[],"env":[],"known_issues":"Hermes Desktop is required: the map is a Desktop pane. The tools still save their changes without it and report delivery as queued.; Place lookup uses OpenStreetMap data through Photon. Places it does not list come back as not placed instead of getting a guessed pin, and each lookup takes several seconds.; Routes are straight lines between stops, not road routes.","state":"merged","pr":152871,"prs":[{"n":152871,"state":"merged","created":"2026-11-10T19:51:29Z"}],"created":"2026-11-10T19:51:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/banner.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/chat-and-map.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/pin-card.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/area-selection.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/route.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/globe.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-maps/48a8ec745036d0c9e4c8343ef4e64130d43367ae/docs/images/simple.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-maps.webp"},{"name":"model-explainer","title":"Model Explainer","summary":"A Models page for Hermes Desktop built around your own model picker: choose a model to see its Hermes Index score, cost per task, context and output limits, price, abilities and your own measured speed and spend, with a score-against-cost frontier chart, and compare up to four side by side. Every value cites a source and date.","disclosure":"one GET of a public JSON data file from the author's GitHub repo (raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer, main branch, so its contents can change after this pin), at most daily and only when the page opens (can be turned off; the bundled copy works offline; the file is validated data, never code); reads model.options and the focused session's model and usage figures; writes plugin storage, and switches the chat model only when the user presses Use this model (the same config.set request as the built-in picker, scoped to the open chat). Desktop only: no agent tools, hooks, middleware or env vars.","category":"models","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/tuancookiez-hub/hermes-model-explainer","docs":"https://github.com/tuancookiez-hub/hermes-model-explainer#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152870,"prs":[{"n":152870,"state":"merged","created":"2026-11-10T19:51:18Z"}],"created":"2026-11-10T19:51:18Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/banner.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/01-details.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/02-frontier-and-suites.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/03-sources.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/04-compare.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/05-no-data.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/4b876bb5021c56fe14e14a15d4e379b5e6506c9e/docs/screenshots/06-light-theme.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer/430c33cae144f4de9639b7de70a075162738d6d9/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/model-explainer.webp"},{"name":"screen-overlay","title":"Screen Overlay","summary":"Gives Hermes the ability to draw on your screen. On your real Windows desktop it draws a gliding pointer, spotlights, boxes, arrows and numbered steps anchored to live UI Automation elements, a floating step guide with Next and Back, and handwritten glass notes, including ones that stay for you to drag and edit. Works over any app. Marks are click-through and nothing takes focus unless you choose to edit a note; DPI- and multi-monitor-aware, with an emergency clear hotkey (Ctrl+Alt+Shift+F12).","disclosure":"Windows only. Starts one detached background process (the overlay, run by Hermes's own Python) on first use; it exits on the hotkey, on stop, or after 10 idle minutes with nothing on screen (a note left open keeps it running). No network: the plugin and the overlay talk over a local named pipe with a random key. Reads monitor layout, visible window titles, process names and bounds, and UI Automation names, types and bounds of elements in the window you target; these appear in tool results and so reach the model Hermes is using. Takes no screenshots, logs no keys, never moves the mouse or types, reads no credential or config files. Writes only to its plugin-data folder (pipe key, pid, logs, saved guides). Registers the global hotkey Ctrl+Alt+Shift+F12 while the overlay runs. While a guide is open it looks up the current step's target about once a second. Installs PySide6-Essentials (about 215 MB) and comtypes. No telemetry, no self-update, no paid APIs.","category":"desktop","platforms":["windows"],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"0.3.2","requires_hermes":">=0.22.0","repo":"https://github.com/tuancookiez-hub/hermes-screen-overlay","docs":"https://github.com/tuancookiez-hub/hermes-screen-overlay/tree/fa94ce34b19285c3a97656041fe9b7a5fba1902d","tools":["screen_overlay"],"hooks":["on_session_finalize"],"middleware":[],"env":[],"known_issues":"Windows 10 2004+ or Windows 11 only; on other platforms the tool is hidden.; Cannot draw over exclusive-fullscreen games, and UI Automation is blocked for apps running as administrator; use a window or rect target for those.; Notes that stay last until closed or the overlay stops; they are not saved across a restart.; The overlay is hidden from screenshots and recordings by default; turn off exclude_from_capture to record it.","state":"open","pr":152869,"prs":[{"n":152869,"state":"open","created":"2026-11-10T19:51:11Z"}],"created":"2026-11-10T19:51:11Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/banner.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-pointer.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-guide.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-sticky.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-study.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-design.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-photo.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-screen-overlay/fa94ce34b19285c3a97656041fe9b7a5fba1902d/docs/images/real-notes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/screen-overlay.webp"},{"name":"gif-tool","title":"GIF Tool","summary":"Show, edit and compress GIFs in Hermes. `gif_open` turns any GIF, animated WebP, APNG, PNG or JPEG (a file path or an https link) into a card in Hermes Desktop where you add exact captions, change speed, reverse, boomerang, trim, drop frames and crop with a live preview; the original file is never changed. `gif_export` and the card's export buttons compress for Discord (10 MB), Discord emoji (256 KB), Telegram, X (5 MB), under 1 MB, animated WebP or a size you name, shrinking until the file fits and reporting before and after sizes (pure Pillow: shared palette, frame differencing, size-targeted ladder). `gif_edit` gives the agent the same edits. `gif_create` makes a four-frame meme GIF from a prompt. A GIF Studio tab lists every GIF in the profile and takes a dropped file or a pasted link.","disclosure":"editing, previews and compression are local; opening a link downloads that one https URL (no cookies or credentials; private, local and link-local addresses refused, redirects and the connected peer re-checked; a GIPHY or Tenor page is followed once to its og:image); `gif_create` sends only the text prompt to chatgpt.com/backend-api/codex/images/generations through Hermes' credentialed_provider_request with the user's OpenAI Codex sign-in, using one image from the user's ChatGPT plan per call, via an undocumented endpoint; projects and rendered files are stored under the profile's plugin-data/gif-tool and cache/generated/images.","category":"desktop","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"1.0.1","requires_hermes":">=0.22.0","repo":"https://github.com/tuancookiez-hub/hermes-gif-tool","docs":"https://github.com/tuancookiez-hub/hermes-gif-tool/blob/0c3cdbdfe81886bdbeab30855225f9b4701cd766/README.md","tools":["gif_open","gif_edit","gif_export","gif_create"],"hooks":[],"middleware":[],"env":[],"known_issues":"Restart Hermes once after installing: the card's backend routes mount at startup.; The card needs a Hermes Desktop with tool-media renderers; older Desktops and other surfaces show the plain GIF.; gif_create needs an OpenAI Codex sign-in in Hermes and uses an undocumented Codex image endpoint that can change without notice; every other feature works without it.; Not yet exercised inside a running Hermes Desktop by the author: the card and backend were tested headlessly against the real plugin code with a stand-in for the plugin SDK.","state":"open","pr":152868,"prs":[{"n":152868,"state":"open","created":"2026-11-10T19:50:05Z"}],"created":"2026-11-10T19:50:05Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-gif-tool/0c3cdbdfe81886bdbeab30855225f9b4701cd766/assets/card-caption.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-gif-tool/0c3cdbdfe81886bdbeab30855225f9b4701cd766/assets/card-export.png","https://raw.githubusercontent.com/tuancookiez-hub/hermes-gif-tool/0c3cdbdfe81886bdbeab30855225f9b4701cd766/assets/studio.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gif-tool.webp"},{"name":"netscope","title":"netScope: Offline Network Capture Analyzer","summary":"Offline pcap/pcapng network capture analyzer with interactive HTML reports, protocol graphs, traffic replay at 1×/4×/16×, and deterministic anomaly heuristics (traffic bursts, scan patterns, DNS anomalies, cleartext ports). Stdlib-only, no network requests, no telemetry.","disclosure":"","category":"tools","platforms":[],"maintainer":"Mxhi-04","author":"Mxhi-04","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Mxhi-04/Hermes-netscope","docs":"https://github.com/Mxhi-04/Hermes-netscope#readme","tools":["netscope_analyze","netscope_query","netscope_visualize"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153354,"prs":[{"n":153354,"state":"open","created":"2026-11-11T09:25:51Z"},{"n":152867,"state":"closed","created":"2026-11-10T19:50:00Z"}],"created":"2026-11-10T19:50:00Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Mxhi-04/Hermes-netscope/bd720baeb4c5fde2b39f6d869e7fa4d284442d3d/assets/readme-hero.png","https://raw.githubusercontent.com/Mxhi-04/Hermes-netscope/bd720baeb4c5fde2b39f6d869e7fa4d284442d3d/assets/report-overview.png","https://raw.githubusercontent.com/Mxhi-04/Hermes-netscope/bd720baeb4c5fde2b39f6d869e7fa4d284442d3d/assets/report-dns.png","https://raw.githubusercontent.com/Mxhi-04/Hermes-netscope/bd720baeb4c5fde2b39f6d869e7fa4d284442d3d/assets/report-host.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/netscope.webp"},{"name":"hermes-village","title":"Hermes Incremental Village","summary":"Three castaways grow into a city of thousands, inside Hermes Desktop. Hermes plays the named villagers and you are their guide, not their god: you plant ideas, set a focus and give advice, and they decide. Each villager follows a way of life (an ordered list of goals) that the game runs for free, and a council lets Hermes rethink it. Around them the folk multiply as homes and food allow, felling forest to make room, so the village spreads and uses up what is near. A technology tree of 19 ideas runs from fishing to flight, and up to 200 missed days are lived through while you are away. The game validates every action and owns time, resources and death. Ships a Desktop page (three.js r187 bundled, inside the plugin SDK surface) drawn as a colour print with ink outlines, backend routes, a /village command and 4 agent tools.","disclosure":"model calls happen only when you ask for a council (one batched structured call for the named villagers, about 3-6k tokens) and are refused before the call if they would pass the daily token budget you set (default 30,000); councils are refused in cron runs. No network requests of its own, no downloads, no telemetry, no background work, no credentials, no native code. The save and token ledger live in Hermes plugin storage.","category":"desktop","platforms":[],"maintainer":"tuancookiez-hub","author":"tuancookiez-hub","version":"0.14.0","requires_hermes":">=0.22.7","repo":"https://github.com/tuancookiez-hub/hermes-incremental-village","docs":"https://github.com/tuancookiez-hub/hermes-incremental-village/tree/deed98c7fb7674eead7e6ab4821440cdddd2b6c5","tools":["village_status","village_guide","village_habit_day","village_plan_day"],"hooks":[],"middleware":[],"env":[],"known_issues":"After installing, restart Hermes so the backend routes mount, then turn the plugin on under Capabilities → Plugins in Desktop.","state":"closed","pr":152865,"prs":[{"n":152865,"state":"closed","created":"2026-11-10T19:49:03Z"}],"created":"2026-11-10T19:49:03Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/banner.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/city.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/tree.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/villagers.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/village.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/people.jpg","https://raw.githubusercontent.com/tuancookiez-hub/hermes-incremental-village/deed98c7fb7674eead7e6ab4821440cdddd2b6c5/docs/images/first-days.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-village.webp"},{"name":"hermes-droid","title":"hermes-droid","summary":"Turn physical Android devices into automated hardware testbeds and QA companion nodes for Hermes Agent — wireless MQTT APK deployments, Logcat crash diagnostics, and screen captures.","disclosure":"","category":"platform","platforms":["linux","macos","windows"],"maintainer":"dalroot","author":"dalroot","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/dalroot/hermes-droid","docs":"https://github.com/dalroot/hermes-droid#readme","tools":["android_device_info","android_read_sms","android_send_sms","android_get_notifications","android_reply_notification","android_call_phone","android_adb_shell","android_install_apk","android_toggle_setting","android_clipboard_sync","android_take_screenshot","android_contacts_search","android_media_recent_photos","android_device_logs","android_radio_silence","android_camera_snapshot","android_location_get","android_device_alarm"],"hooks":["on_session_end","pre_tool_call"],"middleware":[],"env":["HERMES_DROID_MQTT_USER","HERMES_DROID_MQTT_PASSWORD"],"known_issues":"","state":"open","pr":152864,"prs":[{"n":152864,"state":"open","created":"2026-11-10T19:47:44Z"}],"created":"2026-11-10T19:47:44Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/dallsirvan/status/2120228960575557671"],"youtube":[],"thumb":null},{"name":"emailfig","title":"EmailFig","summary":"Work in your EmailFig email marketing account through EmailFig's hosted MCP server (Streamable HTTP at https://emailfig.com/mcp, OAuth sign-in, no keys in config): check campaign and automation results, look up and update contacts, lists and tags, add images, and draft campaigns that you review and send in EmailFig. Agent Plugins v1 package (plugin.json + mcp.json), configuration only.","disclosure":"every tool call goes to EmailFig's hosted server (emailfig.com) and acts on the EmailFig account the user approved at sign-in; the tool set is served by that server at runtime and is not covered by the pinned sha. The server cannot send, schedule or delete a campaign; the only email it sends is a test of a draft to the user's own address, though adding someone to a double opt-in list emails them a confirmation and adding or tagging a contact can start the account's automations. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores the OAuth token under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"EmailFig","author":"desheikh","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/EmailFig/mcp","docs":"https://github.com/EmailFig/mcp/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152862,"prs":[{"n":152862,"state":"merged","created":"2026-11-10T19:46:08Z"}],"created":"2026-11-10T19:46:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pinocchio","title":"pinocchio","summary":"Pinocchio is the honesty layer for Hermes Agent: it keeps the receipts for everything the agent does and holds the agent's closing claims against them. A post_tool_call hook records work evidence for every session (commands and exit codes, test runs, builds, file writes, git operations, deploys); a transform_llm_output hook extracts the checkable claims in the agent's closing message (all tests pass, the build succeeds, a file was updated, changes are committed, it is deployed) and stamps the delivered message verified, unverified, or contradicted, citing the most recent matching receipt; a pre_verify hook bounces a contradicted claim back once on coding turns so the agent re-runs the failing step or corrects the record, and an all-time nose counter tallies the contradicted claims. Two tools (pinocchio_report, the session truth table, and pinocchio_receipts, the recorded evidence), a /pinocchio command (report, receipts, nose), and a bundled pinocchio-honesty skill that teaches the agent how to earn verified stamps. No second model grades the first: verdicts are deterministic comparisons between the agent's own words and its own tool receipts, in pure Python standard library.","disclosure":"no network calls, no shell commands spawned by the plugin, no background processes, no credentials read or stored, no telemetry; the only storage is a local SQLite database in the active profile's plugin data directory holding tool-call metadata (tool name, truncated command or target, status, exit code, timestamp) and the claim snippets it stamped.","category":"tools","platforms":[],"maintainer":"tobadaniel","author":"tobadaniel","version":"1.0.0","requires_hermes":">=0.23","repo":"https://github.com/tobadaniel/pinocchio","docs":"https://github.com/tobadaniel/pinocchio","tools":["pinocchio_report","pinocchio_receipts"],"hooks":["post_tool_call","transform_llm_output","pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152861,"prs":[{"n":152861,"state":"merged","created":"2026-11-10T19:45:16Z"}],"created":"2026-11-10T19:45:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"intentrivet","title":"IntentRivet","summary":"Your existing Hermes prepares posts for your own Telegram channels; a post is published only after you allow that exact version for that channel with Allow once in Telegram. Needs the separately installed IntentRivet executor, which holds the publisher bot's token and your decisions.","disclosure":"sends the post text and channel key you prepare to the IntentRivet executor at INTENTRIVET_URL with your agent key; the executor (installed separately, holding the publisher bot token) publishes a version to Telegram only after you allow that exact version with Allow once in the bot.","category":"automation","platforms":[],"maintainer":"MrRosc","author":"MrRosc","version":"0.4.2","requires_hermes":">=0.20.1","repo":"https://github.com/MrRosc/IntentRivet","docs":"https://github.com/MrRosc/IntentRivet/blob/fd3990e05a3f5d4e886345d6b26e9b108482d34b/README.md","tools":["intentrivet_prepare_post","intentrivet_publish_post","intentrivet_list_channels"],"hooks":[],"middleware":[],"env":["INTENTRIVET_URL","INTENTRIVET_AGENT_KEY"],"known_issues":"Installing this entry does not deploy the IntentRivet executor: set it up first, as the README describes. The install asks for INTENTRIVET_URL (the executor's address) and INTENTRIVET_AGENT_KEY (issued on the executor host).","state":"merged","pr":152859,"prs":[{"n":152859,"state":"merged","created":"2026-11-10T19:41:04Z"}],"created":"2026-11-10T19:41:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/b55b6ba3-23c3-4b80-ad48-4077eb87a2ce"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/intentrivet.webp"},{"name":"abeyance","title":"Abeyance","summary":"Your Hermes cron jobs wait for you instead of guessing. When a scheduled run reaches a step that publishes, pushes, merges, deploys, pays, sends a message, deletes in the cloud, writes a database or destroys local work, Abeyance stops that step before it runs (pre_tool_call), keeps the work already done, freezes the run and replaces its delivered output with a card for the owner. Replying `resume CODE` checks the repo and touched files are unchanged since the card (git HEAD, branch, upstream, uncommitted changes, file hashes) and refuses with the exact change if not (pre_llm_call block, no model call); otherwise the agent's first action must be the exact parked call, which goes to Hermes's own approval gate. Single use, owner-only (stable platform ids), expires after 18 h by default, exactly-once. Subagents of a cron run are bound so a held step cannot hide there. Also /abeyance, hermes abeyance (list, show, deny, test, demo), a bundled skill, a Nightly release blueprint and a Desktop half (status chip, Waiting for you page, Resume and Drop).","disclosure":"runs read-only local git (rev-parse, status) in the job's working folder to snapshot it, with a minimal environment (no provider keys, no user or system git config), core.fsmonitor and hooks off, no stdin, and status skipped when the repo defines filter drivers; hashes up to 20 files the held step names plus package manifests; stores parks (the held command and its arguments verbatim and not redacted, a git snapshot, step summaries with up to 300-character output excerpts) and events in <HERMES_HOME>/plugin-data/abeyance/ (SQLite); never approves a step itself, never auto-approves, never changes cron_mode; no network calls, no credentials, no telemetry, no Python dependencies.","category":"automation","platforms":["linux"],"maintainer":"0xkinno","author":"0xkinno","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/0xkinno/abeyance","docs":"https://github.com/0xkinno/abeyance#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_llm_output","pre_llm_call","subagent_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152854,"prs":[{"n":152854,"state":"open","created":"2026-11-10T19:18:06Z"}],"created":"2026-11-10T19:18:06Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/0xkinno/abeyance/4e8ddabfa8e2a000418df97886ed58d1f9257a0b/assets/banner.png","https://raw.githubusercontent.com/0xkinno/abeyance/4e8ddabfa8e2a000418df97886ed58d1f9257a0b/assets/screenshots/telegram-card.png","https://raw.githubusercontent.com/0xkinno/abeyance/4e8ddabfa8e2a000418df97886ed58d1f9257a0b/assets/screenshots/approval-after-resume.png","https://raw.githubusercontent.com/0xkinno/abeyance/4e8ddabfa8e2a000418df97886ed58d1f9257a0b/assets/screenshots/demo-cli.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/abeyance.webp"},{"name":"taskreel","title":"taskreel","summary":"Teach Hermes a local task once, then replay it with no model call. Checkpoints stop the replay on the first failed step.","disclosure":"taskreel stores the exact, unredacted arguments of every tool call (file contents, shell commands) in its own plugin database and replays saved routines with no model call; replayed steps still hit each tool's own approval but bypass other plugins' pre_tool_call hooks and tool middleware.","category":"automation","platforms":[],"maintainer":"SuryaXyz-art","author":"SuryaXyz-art","version":"1.0.3","requires_hermes":">=0.20.5","repo":"https://github.com/SuryaXyz-art/taskreel","docs":null,"tools":["save_routine","run_routine","list_routines"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152853,"prs":[{"n":152853,"state":"open","created":"2026-11-10T19:13:59Z"}],"created":"2026-11-10T19:13:59Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ussd-platform","title":"USSD","summary":"Talk to Hermes from any phone by dialling a USSD short code: no app, no data plan, no smartphone. A gateway platform for Africa's Talking-style USSD callbacks: replies are paged into 160-character keypad screens, exec approvals become numbered menus whose choices appear only after the last page of the command, answers that outlive the session wait in an inbox or arrive by SMS, and a dropped call resumes on the page it left. Ships a keypad-phone simulator served to localhost only.","disclosure":"runs an HTTP callback server on 127.0.0.1:8788 while the gateway runs (the user exposes it through their own tunnel); callbacks are authenticated by a 16+ character secret in the URL path because USSD gateways do not sign requests; only when AFRICASTALKING_USERNAME and AFRICASTALKING_API_KEY are set, message text and the recipient's number go to api.africastalking.com (or its sandbox) to send SMS; USSD and SMS are readable by the mobile operator and aggregator; inboxes are in memory only; no telemetry, no shell commands, no self-update.","category":"platform","platforms":[],"maintainer":"GodlyDeveloper1","author":"GodlyDeveloper1","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/GodlyDeveloper1/hermes","docs":"https://github.com/GodlyDeveloper1/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["USSD_WEBHOOK_SECRET"],"known_issues":"Real handsets need a USSD short code from Africa's Talking or another aggregator; the built-in simulator and the Africa's Talking sandbox need neither.","state":"merged","pr":152850,"prs":[{"n":152850,"state":"merged","created":"2026-11-10T19:06:50Z"}],"created":"2026-11-10T19:06:50Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/banner.png","https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/01-home.png","https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/02-reply.png","https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/03-approval.png","https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/04-working.png","https://raw.githubusercontent.com/GodlyDeveloper1/hermes/f5f69e215dad54c06d2977320a080ab1c68f10ca/docs/media/05-sms.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ussd-platform.webp"},{"name":"earnfi","title":"EarnFi - Work, Money & Execution Layer","summary":"Work, Money & Execution Layer for Hermes — hire humans and agents, fund real-world work via x402, escrow, and receipts across Solana, Base, NEAR, and OKX X Layer.","disclosure":"","category":"tools","platforms":[],"maintainer":"EarnFi","author":"earnfidotfun","version":"1.4.9","requires_hermes":">=0.23.0","repo":"https://github.com/earnfidotfun/earnfi-hermes-plugin","docs":"https://docs.earnfi.fun","tools":["earnfi_doctor"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152848,"prs":[{"n":152848,"state":"open","created":"2026-11-10T19:04:20Z"}],"created":"2026-11-10T19:04:20Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/earnfidotfun/earnfi-hermes-plugin/ae7fa504726ea13edf188b100f598e7c26d41b7b/assets/earnfi-banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/earnfi.webp"},{"name":"waifu-sprites","title":"waifu-sprites","summary":"Video waifu companion that reacts to agent activity in real time — 12 states, 12 emotions, draggable dashboard overlay.","disclosure":"by default the dashboard overlay downloads its video clips from jsDelivr (cdn.jsdelivr.net, a pinned commit of waifuai/waifuai.github.io), so jsDelivr sees your IP when the dashboard is open; set Clip source to local to serve your own clips. No agent text leaves the host.","category":"desktop","platforms":[],"maintainer":"thewaifuai","author":"thewaifuai","version":"3.2.0","requires_hermes":">=0.13","repo":"https://github.com/waifuai/waifu-sprites","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152847,"prs":[{"n":152847,"state":"merged","created":"2026-11-10T18:58:43Z"}],"created":"2026-11-10T18:58:43Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/waifuai/waifu-sprites/143e960984f5d108fcb537cfb523f3b1946e5011/docs/screenshots/dashboard-overlay.png","https://raw.githubusercontent.com/waifuai/waifu-sprites/143e960984f5d108fcb537cfb523f3b1946e5011/docs/screenshots/docked-tab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/waifu-sprites.webp"},{"name":"delivery-gate","title":"delivery-gate","summary":"Pre-delivery verification for Hermes Agent: runs the deterministic checks a task spec declares (test commands, lint, repro scripts) and releases the deliverable only when every required check passes, writing a replayable, hash-chained evidence record per run. The verdict comes from the deterministic checker, never from the model.","disclosure":"runs the shell commands a task spec declares (passed by the model or read from a `.json` spec file, possibly from a cloned repo) through Hermes' terminal tool, so dangerous-command approval and the configured terminal backend apply to each check; writes evidence records under `<workspace>/.delivery-gate/evidence/` (or the configured `evidence_dir`).","category":"tools","platforms":[],"maintainer":"ToniAdreal","author":"ToniAdreal","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/ToniAdreal/delivery-gate","docs":"https://github.com/ToniAdreal/delivery-gate#readme","tools":["delivery_gate_verify","delivery_gate_evidence"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152843,"prs":[{"n":152843,"state":"open","created":"2026-11-10T18:52:55Z"}],"created":"2026-11-10T18:52:55Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":["1LQqynytoEw"],"thumb":null},{"name":"speckle","title":"Speckle","summary":"Browse, query and diff 3D/BIM models (mainly for the AECO industry) from Speckle (Revit, Rhino, IFC, Archicad, Tekla, ETABS, Civil 3D, Blender), run saved checks on every new version, get a chat message when a watched model gets a new version, and see the model in a live 3D viewer in Hermes Desktop. Requires a Speckle personal access token (SPECKLE_TOKEN).","disclosure":"network connections go to the configured Speckle server (app.speckle.systems by default), the only host that receives the token, and to the file storage that server links to for model downloads, without the token; the 3D viewer library ships bundled in the repo and makes no network connections; while a model is watched a background thread checks it every poll_seconds (default 60, minimum 15); watches, checks, the viewer selection, caches and preview images stay in the plugin's data folder; speckle_create_issue is the only write to Speckle and the agent asks first; no shell commands, no telemetry.","category":"tools","platforms":[],"maintainer":"NikolaosArgy","author":"NikolaosArgy","version":"0.1.0","requires_hermes":">=0.22","repo":"https://github.com/NikolaosArgy/hermes-speckle","docs":"https://github.com/NikolaosArgy/hermes-speckle/blob/c642a186274b6e89d3d4690eff9a3d45cf9a7ff6/README.md","tools":["speckle_list_projects","speckle_list_models","speckle_list_versions","speckle_model_summary","speckle_query_objects","speckle_diff_versions","speckle_checks","speckle_show_model","speckle_viewer","speckle_create_issue","speckle_watch_model","speckle_unwatch_model","speckle_list_watches"],"hooks":["on_session_start","pre_llm_call"],"middleware":[],"env":["SPECKLE_TOKEN"],"known_issues":"","state":"open","pr":152842,"prs":[{"n":152842,"state":"open","created":"2026-11-10T18:47:13Z"}],"created":"2026-11-10T18:47:13Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/c642a186274b6e89d3d4690eff9a3d45cf9a7ff6/assets/screenshots/model-in-pane.jpg","https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/c642a186274b6e89d3d4690eff9a3d45cf9a7ff6/assets/screenshots/colour-by-category.jpg","https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/c642a186274b6e89d3d4690eff9a3d45cf9a7ff6/assets/screenshots/empty-pane.jpg","https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/14fc6d8b08918d575e1864a955deb6d9a6f28ff0/assets/screenshots/model-in-pane.jpg","https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/14fc6d8b08918d575e1864a955deb6d9a6f28ff0/assets/screenshots/colour-by-category.jpg","https://raw.githubusercontent.com/NikolaosArgy/hermes-speckle/14fc6d8b08918d575e1864a955deb6d9a6f28ff0/assets/screenshots/empty-pane.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/speckle.webp"},{"name":"data-wrangler","title":"Data Wrangler","summary":"Deterministic tools for local tabular data — the counting a model should never guess at. table_profile computes an exact profile of a CSV/TSV/JSON/JSONL file (row and column counts, inferred types, null counts and percentages, distinct counts, min/max/mean/median, top text values, duplicate-row and empty-row counts). table_query runs one read-only SQL query over the file in SQLite (table `data`): writes are refused up front and again by a connection authorizer, results are row-capped with the total matched count always reported, and a 10-second query budget applies. table_clean writes a cleaned copy — snake_case headers, trimmed cells, fully-empty rows dropped, exact duplicates removed (optionally on a subset of columns) — and returns a full change report; the input file is never modified. A bundled data-tables skill teaches the profile → query → clean → verify workflow. Python standard library only (csv/json/sqlite3): no dependencies, no configuration, no credentials.","disclosure":"reads only the local data files named in a tool call, writes exactly the one cleaned output file per table_clean call, makes no network calls, runs no shell commands or background processes, collects no telemetry, and keeps no state between calls (queries run in an in-memory database).","category":"tools","platforms":["linux","macos","windows"],"maintainer":"yogeshchoudhary555","author":"yogeshchoudhary555","version":"1.0.0","requires_hermes":">=0.22","repo":"https://github.com/yogeshchoudhary555/hermes-data-wrangler","docs":"https://github.com/yogeshchoudhary555/hermes-data-wrangler#readme","tools":["table_profile","table_query","table_clean"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152835,"prs":[{"n":152835,"state":"open","created":"2026-11-10T18:29:37Z"}],"created":"2026-11-10T18:29:37Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dead-drop","title":"Dead Drop","summary":"Autonomous agent-to-agent messaging across teams through a shared private mailbox.","disclosure":"when you enable it (`active: true`), the model can send messages of up to 4000 chars, without a per-call Hermes approval, to the peer agents you list. Each message is committed, with your configured scope, to the private GitHub repository you name, readable by everyone with access to that repo, using the `DEAD_DROP_GITHUB_TOKEN` you store in Hermes. Sends are capped by `max_messages` and the deadline. Peer messages are fed back to the model as untrusted text. An optional cron job (`wake_enabled` plus the exact `wake_job_id`) can read and answer peer questions unattended. Requires Node.js 22+, which runs only the bundled engine, with a minimal environment.","category":"automation","platforms":[],"maintainer":"KMX415","author":"KMX415","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/KMX415/dead-drop-hermes","docs":"https://github.com/KMX415/dead-drop-hermes/blob/40c1551a9ed8b9d8fc15b481fdf2f4fc746487c6/plugin/README.md","tools":["dead_drop_inbox","dead_drop_send","dead_drop_ack","dead_drop_retry","dead_drop_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Node.js 22+ and a GitHub mailbox credential stored through Hermes.; Unattended exchanges require available peers and separately authorized host schedules.","state":"merged","pr":152834,"prs":[{"n":152834,"state":"merged","created":"2026-11-10T18:28:31Z"}],"created":"2026-11-10T18:28:31Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KMX415/dead-drop-hermes/40c1551a9ed8b9d8fc15b481fdf2f4fc746487c6/docs/images/desktop-status-synthetic.png","https://raw.githubusercontent.com/KMX415/dead-drop-hermes/40c1551a9ed8b9d8fc15b481fdf2f4fc746487c6/docs/images/dead-drop-hermes-overview.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dead-drop.webp"},{"name":"ag4te","title":"AG4TE","summary":"Git archaeology in Hermes Desktop: dig a local repository's history with DevArch and read it as strata, with commits per day stacked by kind of work, eras, quiet gaps, signals and turning points, weekly rhythm, lines added and removed, practice health, change size, hotspots, releases, and authors merged across spellings and split into people, agents and bots. Adds a Desktop page, /ag4te (list, show, status, dig, stop, resume) and a read-only ag4te_dig tool for agents.","disclosure":"runs DevArch as a child process via `uvx --from git+https://github.com/KyaniteLabs/ag4te@<pinned sha> devarch` (uv downloads that pinned DevArch commit and its Python dependencies on first run, which the catalog pin does not cover; needs uv on the gateway host); reads `git log` of the one repository you choose, which must sit under the configured repo_roots (default ~/workspaces); stores digs under <HERMES_HOME>/plugin-data/ag4te; no LLM calls, no API key, no network besides the uv download; one dig at a time, each step time-limited (timeout_seconds); /ag4te dig and resume are off on chat platforms unless allow_dig_on_gateway is set.","category":"tools","platforms":[],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/KyaniteLabs/ag4te","docs":"https://github.com/KyaniteLabs/ag4te/tree/d884f9a5cdd3b6d03e95114e860cc134d5067b84/plugins/ag4te-hermes#readme","tools":["ag4te_dig"],"hooks":[],"middleware":[],"env":[],"known_issues":"First dig downloads DevArch with uv, so it needs uv installed on the gateway host and takes longer than later digs.; Kinds of work are keyword heuristics from commit messages and paths, not a reading of the code.","state":"merged","pr":152832,"prs":[{"n":152832,"state":"merged","created":"2026-11-10T18:25:22Z"}],"created":"2026-11-10T18:25:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KyaniteLabs/ag4te/d884f9a5cdd3b6d03e95114e860cc134d5067b84/plugins/ag4te-hermes/docs/banner.png","https://raw.githubusercontent.com/KyaniteLabs/ag4te/d884f9a5cdd3b6d03e95114e860cc134d5067b84/plugins/ag4te-hermes/docs/strata-dark.png","https://raw.githubusercontent.com/KyaniteLabs/ag4te/d884f9a5cdd3b6d03e95114e860cc134d5067b84/plugins/ag4te-hermes/docs/rhythm-and-health.png","https://raw.githubusercontent.com/KyaniteLabs/ag4te/d884f9a5cdd3b6d03e95114e860cc134d5067b84/plugins/ag4te-hermes/docs/strata-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ag4te.webp"},{"name":"adapt","title":"adapt","summary":"Persistent memory infrastructure layer for AI agents with episodic, semantic, procedural, and working memory, hybrid retrieval, and knowledge graph evolution.","disclosure":"","category":"memory","platforms":[],"maintainer":"Opeyemi Moses","author":"OpeyemiMoses","version":"0.1.0","requires_hermes":">=0.20.0","repo":"https://github.com/OpeyemiMoses/adapt","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152831,"prs":[{"n":152831,"state":"open","created":"2026-11-10T18:23:11Z"}],"created":"2026-11-10T18:23:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"steward","title":"Steward","summary":"Your chief of staff in the team chat. Collects every department's weekly update in its own group (voice note in any language, text, photo or file), nudges only late teams, and gives the founder one weekly pack in their language with promised-vs-done, a stuck radar and a voice brief. Founder says \"send\" and all staff get the update.","disclosure":"Steward reads every message in the department groups you configure and sends their weekly updates (text, voice-note transcripts, photos, documents) to your model and TTS providers; it creates Hermes cron jobs that post check-ins and nudges into those groups and deliver the founder pack, keeps reports and copies of attachments under HERMES_HOME/steward, and posts the staff pack to the all-staff group when the founder says \"send\". Notes: Not crypto. Steward is a multi-group chat assistant. Department reports go to the user's own model/TTS providers, they are stored locally under HERMES_HOME/steward (state.json is chmod 600, core.py:236), and the packs go only to the chat targets the user configures. Per earlier finding: ask 1 setup gate FIXED (__init__.py:264-283, 308); ask 2 founder pack/status gate FIXED (__init__.py:420, 431-435, 502-507); prior round's file confinement, week validation (now also a real-ISO-week and ±1-year check, core.py:77-91), founder-only publish (__init__.py:451) and cron-scheduling asks are still FIXED at the new pin. The unposted body posting/bodies/152830.md is superseded and should not be posted; this pin closes both of its asks. Delta b7c484f8..400dd9d4: 10 files (+1326/-132); I read the installed code delta in full (__init__.py, core.py, files.py, scheduler.py, skills) and did not read the two new test files beyond the scanner hits. Gates: validate ok (all checks green, isolation host, no warnings); scanner verdict safe. Its mediums are FPs: core.py:157-159 is the control/bidi-strip regex character class, and the rest are in tests/ (path-traversal/hex fixtures for the security tests, and a subprocess call in a test). The Disclosure text is the same as the last round and still accurate. requires_hermes >=0.23.0 is sane: cron.execution_identity is in v0.23.0 (df177429), and ctx.current_cron_execution is feature-detected. Catalog name/version/capabilities match plugin.yaml (7 tools, pre_llm_call). No exact pins (python_dependencies: []). PR carries only plugin-catalog/steward.yaml.","category":"automation","platforms":[],"maintainer":"imprint-hash","author":"imprint-hash","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/imprint-hash/steward","docs":"https://github.com/imprint-hash/steward/blob/400dd9d4a3720d426c75ef0d86f9e1d3eb8a304a/README.md","tools":["steward_setup","steward_checkin","steward_read_file","steward_record_report","steward_status","steward_build_pack","steward_publish"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152830,"prs":[{"n":152830,"state":"open","created":"2026-11-10T18:23:10Z"}],"created":"2026-11-10T18:23:10Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lane-keeper","title":"Lane Keeper","summary":"Keeps your agent on a few active lanes (current commitments): new ideas the user mentions are saved as dormant markdown lanes instead of quietly becoming work, only the user can promote one (/lanes promote, cap-aware, forces choosing what to park), and stale or over-cap lanes are called out once. Status lives in a registry in the plugin's own data, so editing a lane file can't promote it; the hermes lanes CLI is read-only.","disclosure":"no network calls, no subprocesses, no LLM calls of its own, no telemetry, no background work; one declared Python dependency (pyyaml>=6,<7); never reads credential stores; reads/writes *.md files in lanes_dir (default <HERMES_HOME>/plugin-data/lane-keeper/lanes, or a top-level folder the user configures) and <HERMES_HOME>/plugin-data/lane-keeper/registry-<hash>.json (statuses, stale notices given, ≤300 session fingerprints); sends to the model provider a rules section plus active lane titles/next actions and up to 15 dormant titles once per session in the system prompt, and a one-line note in the user turn only when lanes change; its pre_tool_call hook reads tool names/arguments to block agent writes to lane data, status-changing CLI calls, Lane Keeper settings changes and disabling the plugin, and stores nothing.","category":"automation","platforms":[],"maintainer":"MindSproutStudios","author":"MindSproutStudios","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/MindSproutStudios/hermes-lane-keeper","docs":"https://github.com/MindSproutStudios/hermes-lane-keeper#readme","tools":["lane_list","lane_capture","lane_checkpoint"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152828,"prs":[{"n":152828,"state":"open","created":"2026-11-10T18:21:42Z"}],"created":"2026-11-10T18:21:42Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tripscout","title":"tripscout","summary":"Cheap city-break finder: prices flights AND lodging together across a date window, adds the ground cost of reaching each departure airport, and ranks whole trips by total cost, with lodging-type filters (hotel/hostel/apartment) and optional food and attraction estimates. Say where you leave from and it works out the airports serving you: any town on earth is geocoded on OpenStreetMap and its nearest airports with scheduled flights are found in a bundled OurAirports table (4,008 airports), with train/bus costs estimated from distance; 33 hand-checked departure presets and 49 destinations ship with it. Every result carries prefilled booking links (flight, stay, ground, airport transfer). Ships four agent tools plus a Hermes Desktop pane (desktop/plugin.js) whose backend runs the same engine as the tools.","disclosure":"no API key and no account: searches read the Google Flights results page and Google Hotels' public batchexecute RPC from your own IP address with a browser TLS fingerprint, so the cities, airports, dates, traveller count and currency you search are sent to Google; a departure place that is not one of the built-in presets is also sent as a search query to OpenStreetMap's Nominatim geocoder (nominatim.openstreetmap.org) to find nearby airports; nothing else about you is sent. Prices, hotel names, geocoding results and cache keys are stored locally in SQLite under Hermes' plugin data directory. A consent cookie declaring essential-only cookies is sent, because from the EU Google otherwise answers with its \"Before you continue\" interstitial instead of results; no tracking-consent value is ever sent. Results include prefilled search links to Google Flights/Hotels/Maps, Booking.com, Hostelworld and Airbnb that open only when you click them. Python dependencies (fast-flights, primp, typing_extensions) are prepared in the shared plugin environment at install time with the user's consent. Nothing is booked, no card or passport data is taken, and no credentials are stored.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"marcofailli","author":"marcofailli","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/marcofailli/tripscout","docs":"https://github.com/marcofailli/tripscout/tree/3a0e1e1a1320669efdf0ef9d0a614050f1a47856","tools":["tripscout_search","tripscout_price_trip","tripscout_history","tripscout_origins"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152821,"prs":[{"n":152821,"state":"merged","created":"2026-11-10T18:15:24Z"}],"created":"2026-11-10T18:15:24Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"idm-radio","title":"IDM Session Radio","summary":"Generative ambient in the Hermes Desktop status bar with the session's work written into it: reads drip, edits blip, commands ring, a failed call sends the radio dial through static, and a finished task lands a drop and becomes a track you can save as WAV. Three pictures (tunnel, sky, mosaic) read from the score. Synthesized live, no samples, no network. Adds the idm_radio tool, the /idm command and two hooks that report tool outcomes to the Desktop.","disclosure":"","category":"desktop","platforms":[],"maintainer":"discodirector","author":"discodirector","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/discodirector/idm-session-radio","docs":"https://github.com/discodirector/idm-session-radio","tools":["idm_radio"],"hooks":["post_tool_call","pre_api_request"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152819,"prs":[{"n":152819,"state":"merged","created":"2026-11-10T18:13:57Z"}],"created":"2026-11-10T18:13:57Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/discodirector/idm-session-radio/3c3e6dfc71f61ca9533353486f0cc858e0279c19/assets/banner.png","https://raw.githubusercontent.com/discodirector/idm-session-radio/3c3e6dfc71f61ca9533353486f0cc858e0279c19/assets/panel.png","https://raw.githubusercontent.com/discodirector/idm-session-radio/3c3e6dfc71f61ca9533353486f0cc858e0279c19/assets/tunnel.png","https://raw.githubusercontent.com/discodirector/idm-session-radio/3c3e6dfc71f61ca9533353486f0cc858e0279c19/assets/sky.png","https://raw.githubusercontent.com/discodirector/idm-session-radio/3c3e6dfc71f61ca9533353486f0cc858e0279c19/assets/mosaic.png"],"videos":[],"x":["https://x.com/badfriend/status/2120224657110692047"],"youtube":[],"thumb":"/hackathon/thumbs/idm-radio.webp"},{"name":"unified-inbox","title":"Unified Inbox","summary":"One inbox for the user's WhatsApp, Instagram and LinkedIn messages through their own Unipile account (API v2): a synced local copy, search in any language, triage with a reason for each chat, memory of people and open items, drafts in the user's own writing style, scam warnings, plans offered for the calendar, translation, a people radar and a spoken brief, plus an Inbox page in the web dashboard and Hermes Desktop. Every send and reaction goes through Hermes's own approval prompt (a pre_tool_call hook) and is refused when approval would be skipped (yolo mode, approvals off, cron), under hard pacing limits.","disclosure":"calls the Unipile API (api.unipile.com) with the user's key; Unipile reaches WhatsApp, Instagram and LinkedIn through unofficial access, which may break those platforms' terms. Every send and reaction goes through Hermes's own approval prompt and is refused under yolo mode, approvals off or unattended runs; the model may attach any file the user can read (key and login files excepted), and each file is named in that prompt. Optional and off until configured: a cloud embedding provider (OpenAI, Gemini, Cohere or Voyage AI) that receives message text, the user's own Supabase project for two-way sync (api.supabase.com once, to create tables), a private iCal address read for busy times, a webhook receiver on 127.0.0.1 that accepts only HMAC-signed Unipile deliveries, and alerts injected into a chat the user picks. Runs a background sync thread by default that summarises, drafts and translates new messages with Hermes's model (capped per day); text sent to a model or provider has one-time codes, passwords and card, bank and ID numbers removed first. Stores chats, messages, memory and a send log in SQLite under the plugin's data folder; secrets come only from Hermes's secret store. Calls Hermes internals that are not a stable plugin API (tools.transcription_tools.transcribe_audio for voice notes, private tools.approval checks). No telemetry, no shell commands, no self-update.","category":"tools","platforms":[],"maintainer":"krushna-sahu1","author":"krushna-sahu1","version":"1.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/krushna-sahu1/unified-inbox","docs":"https://github.com/krushna-sahu1/unified-inbox/blob/c40db03612f0f4e233e80129e7849ad3e77c360f/README.md","tools":["inbox_status","inbox_list_chats","inbox_read_chat","inbox_search","inbox_triage","inbox_updates","inbox_context","inbox_loops","inbox_memory","inbox_schedule","inbox_watch","inbox_draft_reply","inbox_list_drafts","inbox_send","inbox_react","inbox_attachment","inbox_mark_read","inbox_safety","inbox_calendar","inbox_translate","inbox_radar","inbox_brief"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152818,"prs":[{"n":152818,"state":"merged","created":"2026-11-10T18:03:17Z"}],"created":"2026-11-10T18:03:17Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/catalog-card.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/today.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/approve.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/chat.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/radar.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/setup-light.png","https://raw.githubusercontent.com/krushna-sahu1/unified-inbox/c40db03612f0f4e233e80129e7849ad3e77c360f/assets/readme/screens/phone.png"],"videos":[],"x":["https://x.com/Krushna_Sahu1/status/2120208917984842109"],"youtube":[],"thumb":"/hackathon/thumbs/unified-inbox.webp"},{"name":"wavegrain","title":"wavegrain","summary":"Curated TikTok slideshows and Instagram carousels for your brand on autopilot, through the hosted Wavegrain Streamable HTTP MCP server plus one workflow skill. Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code. Requires a Wavegrain account and browser OAuth consent (add the server with auth: oauth, then hermes mcp login wavegrain); no API key or client secret is stored in the plugin.","disclosure":"hosted-only connector: your brand details, photos and slide texts go to wavegrain.com; generating tools spend Wavegrain credits within the limit set per connection, and posting publishes to your connected TikTok/Instagram accounts (needs Wavegrain's separate post permission and its own approval setting); the server is marked untrusted, so Hermes asks before each of its tool calls.","category":"tools","platforms":[],"maintainer":"wavegrain","author":"destination","version":"0.4.0","requires_hermes":"","repo":"https://github.com/wavegrain/wavegrain-mcp","docs":"https://wavegrain.com/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152814,"prs":[{"n":152814,"state":"open","created":"2026-11-10T18:01:35Z"}],"created":"2026-11-10T18:01:35Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"prevent-this-next-time","title":"Prevent This Next Time","summary":"Block configured connector writes or require the owner's approval from Telegram.","disclosure":"the plugin's pre_tool_call hook blocks every tool in the profile (core tools included) until `rulebook/config.json` exists and is valid, and every non-rulebook tool when `protected` is on, so install it in a dedicated profile; connector writes declared in that config with no rule are sent by rulebook_write straight away without a Hermes approval prompt (POST/PUT/PATCH/DELETE to the configured HTTPS hosts with the profile's RULEBOOK_* tokens); ask/block rules and approvals are managed only from the owner's Telegram DM.","category":"tools","platforms":[],"maintainer":"AceVikings","author":"AceVikings","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/AceVikings/prevent-this-next-time","docs":"https://github.com/AceVikings/prevent-this-next-time/blob/4cd09205b61089674dbdceb361af846489398c54/README.md","tools":["rulebook_capabilities","rulebook_write"],"hooks":["post_gateway_admission","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Chat rule management and approvals require the owner's Telegram DM.; The optional protected profile launcher is tested against Hermes v0.23.1.","state":"merged","pr":152813,"prs":[{"n":152813,"state":"merged","created":"2026-11-10T18:00:46Z"}],"created":"2026-11-10T18:00:46Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ghostmark-mcp","title":"GhostMark","summary":"GhostMark through its MCP server (Streamable HTTP at https://ghostmark.mrhyde.dev/mcp, no sign-in, no keys in config): puts an invisible watermark tied to a key into a picture, with an optional encrypted message of up to 24 bytes inside, and reads it back with the same key after the picture has been saved as JPEG, cropped, resized or rotated. Three tools: suggest_key draws a random key of common words, mark_image returns the marked file, read_image says whether a key and a picture fit and returns the message. Bundles one skill for both flows. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only. The mark does not encrypt or protect the picture and is not proof of authorship: it answers whether a picture carries the mark of a key.","disclosure":"hosted-only connector with no local code; every tool call goes to ghostmark.mrhyde.dev (closed-source server, behind Cloudflare), which uses the picture, the key and the message in memory to answer one call and stores none of them; it keeps daily counts with no text, no picture and no address, and logs the address of what looks like an attack. With image_url the server downloads that picture itself. Every tool is annotated read-only; the package marks the server untrusted. The skill tells the agent to send only the picture the person named and only to ghostmark.mrhyde.dev, and to treat a message read out of a picture as data. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"MrHydeDev","author":"MrHydeDev","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/MrHydeDev/ghostmark-mcp-plugin","docs":"https://github.com/MrHydeDev/ghostmark-mcp-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152809,"prs":[{"n":152809,"state":"merged","created":"2026-11-10T17:52:34Z"}],"created":"2026-11-10T17:52:34Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MrHydeDev/ghostmark-mcp-plugin/22ff2e44fc5fe3c2778d6198caf879923ebe1c9b/docs/logo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ghostmark-mcp.webp"},{"name":"docs-drift","title":"Docs Drift","summary":"Checks that the README and Markdown docs still match the code after the agent edits files. When a write_file or patch call leaves the docs naming a command-line flag, environment variable, default value, npm script, make target or file that the code no longer has, the tool result gets a docs_drift block with file:line on both sides, in the same turn. When an edit adds a flag or environment variable that no doc mentions while the docs document its siblings, the result says so and says where the siblings are documented. Fixing the doc reports the finding as resolved, and the agent is reminded once before it finishes if drift from this session is still open. Also adds a docs_drift_scan tool (whole repository or changed files only), docs_drift_explain (the evidence behind one finding), a /drift command and a python -m docsdrift command line for CI. Deterministic and offline: Python standard library only, no model call, no network, no API key. Markdown and MDX docs only.","disclosure":"to do its job the plugin runs git (ls-files, status, cat-file blob, diff --cached --name-only, check-ignore, config --get-regexp; none of them writes) in the repository being edited, with options that keep that repository's git config from starting a program and with an environment that carries no API key, and reads that repository's text files and .git/config. It does not follow a link out of the repository, does not open .env or key files (templates such as .env.example are read), writes nothing to disk, makes no network request and sends no telemetry.","category":"tools","platforms":[],"maintainer":"vigohan95","author":"vigohan95","version":"0.1.1","requires_hermes":">=0.21.6","repo":"https://github.com/vigohan95/hermes-docs-drift","docs":"https://github.com/vigohan95/hermes-docs-drift#readme","tools":["docs_drift_scan","docs_drift_explain"],"hooks":["pre_tool_call","transform_tool_result","pre_verify"],"middleware":[],"env":[],"known_issues":"Reads Markdown and MDX docs only; reStructuredText, AsciiDoc and docstrings are not checked.; The hooks watch write_file and patch. A file changed by a terminal command is seen at the next watched edit or by an explicit docs_drift_scan, not when the command runs.; The first scan of a very large repository can take longer than the 8 second hook budget (measured: 52 s for the first scan of the Hermes Agent repository). That edit is then not checked and the agent is told so once per session and repository; run docs_drift_scan or /drift for the full result.; A repository that ships docs for other tools (vendored skills, exported documentation sites) gets false reports from whole-repository scans; set ignore_paths for those directories. The edit hooks report only findings that an edit introduced.; Whole-repository scans of repositories the rules were not tuned on were mostly wrong in the author's measurement: with the shipped checks, 15 findings from the default checks, 2 of them true, and 48 from the opt-in checks, 2 true, on 12 repositories scanned once and not tuned on afterwards. The README has the numbers per round and the causes.; In 106 recorded sessions with two real models (glm-5.3 and qwen3.8-27b) the plugin changed the outcome for one model and one kind of request only: glm-5.3 asked to add a flag. There the docs ended up consistent in 10 of 10 sessions with the plugin and 2 of 10 without on the author's own example project, and in 5 of 5 against 1 of 5 on encode/uvicorn. For renames, removals and changed defaults, and for qwen3.8-27b on both of its requests (an added flag included), the docs ended up consistent with and without the plugin: those models search for the name and update the docs by themselves. The reminder before the end of a turn was never triggered by a real model; it is exercised by a scripted session and unit tests.; A rename done over several edits is reported only when no non-doc file contains the old name any more. A whole-repository scan does not treat a variable whose name starts with an underscore, or one that click or typer binds with envvar=, as an environment variable of the program; the edit hooks, --since and /drift --changed report such a name when an edit removes it, a change covered by unit tests and two manual checks only, not by the real-model sessions.; The tests run in the repository's CI on Linux, macOS and Windows with Python 3.11, 3.12 and 3.14, and the plugin is validated, installed and run through two scripted sessions on Linux in two pinned Hermes checkouts (the commit the recorded sessions used, and upstream main as of 2026-11-10 17:13 UTC). The real-model sessions and the precision measurements were run on one Windows 11 machine only.; The repository being edited is treated as untrusted (its git config, its links, the text of its files); SECURITY.md lists what is turned off and the tests behind it. Limits: this was tested with git 2.43, 2.54 and 2.56, not with older versions; a hard link to a file outside the repository is read like any other file; Python cannot interrupt a regular-expression search, so the 8 second hook budget is checked between files and between git calls, not inside one search.","state":"open","pr":152808,"prs":[{"n":152808,"state":"open","created":"2026-11-10T17:51:39Z"}],"created":"2026-11-10T17:51:39Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/banner.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/session-without-plugin.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/session-with-plugin-note.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/session-with-plugin-end.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/twenty-sessions.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/command-line.png","https://raw.githubusercontent.com/vigohan95/hermes-docs-drift/ba8dccea272a413a6ec8eb020dab814bb0e90bdf/media/reminder-scripted.png"],"videos":["https://github.com/vigohan95/hermes-docs-drift/releases/download/v0.1.1/docs-drift-hermes-demo.mp4"],"x":["https://x.com/AbaabaGge/status/2120308815119929846"],"youtube":[],"thumb":"/hackathon/thumbs/docs-drift.webp"},{"name":"dosbox-full-auto","title":"dosbox-full-auto","summary":"All-in-one solution for controlling DOSBox apps with your agent. Self-contained DOSBox-automation with built-in MCP server, registers in Hermes and exposes 55 tools via the dosbox-full-auto skill such as vision based mouse movement, live process memory reading and more.","disclosure":"","category":"automation","platforms":["linux","windows"],"maintainer":"EternalNooblet","author":"EternalNooblet","version":"0.3.0","requires_hermes":">=0.22.7","repo":"https://github.com/EternalNooblet/dosbox-automation-is-not-your-nanny","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152807,"prs":[{"n":152807,"state":"open","created":"2026-11-10T17:50:44Z"}],"created":"2026-11-10T17:50:44Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":["https://github.com/user-attachments/assets/d8161019-d495-4601-96e9-c5cde7077d2d"],"x":[],"youtube":[],"thumb":null},{"name":"sessioncrew","title":"SessionCrew","summary":"Browse sessions and related projects across profiles in a Hermes Desktop side panel, with observed activity, completion reminders, and project creation.","disclosure":"the backend reads every profile under the Hermes data root, not only profiles that enabled the plugin: profile.yaml display fields, gateway_state.json, processes.json and each state.db opened read-only (session, turn-lease, admission, worker and delegation metadata plus token/cost aggregates; only the profile label is kept from delegation task JSON; no conversation message bodies). Folder browsing, folder creation and non-overwriting IDEA.md writes run on the gateway filesystem from the user's own dialog and are not confined to the Hermes root (the Hermes root and common credential directories are refused). Creating sessions or generating a project idea runs on the selected profile and sends the project name to that profile's configured model provider. On macOS a liveness fallback may run `ps -o state= -p <pid>` without a shell. No credential-store reads, telemetry, self-updater or separate listener.","category":"desktop","platforms":["linux","macos"],"maintainer":"harukaxxxx","author":"harukaxxxx","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/harukaxxxx/hermes-session-crew","docs":"https://github.com/harukaxxxx/hermes-session-crew/blob/6fa9883b1842ca0db01ca05aa4f3e662387b9c69/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Status and completion coverage is bounded; interrupted or incomplete sources may miss completions.; Gateway folder operations currently support POSIX paths only.; Controlled compatibility tests use Hermes 0.23.0 source; final-pin live owner RPC/REST routing acceptance remains incomplete.; Screenshot uses synthetic demonstration data in the real Webapp, from the pre-submission demo installation; it is not final-pin live acceptance evidence.","state":"merged","pr":152803,"prs":[{"n":152803,"state":"merged","created":"2026-11-10T17:39:20Z"}],"created":"2026-11-10T17:39:20Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/harukaxxxx/hermes-session-crew/6fa9883b1842ca0db01ca05aa4f3e662387b9c69/assets/sessioncrew-webapp.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sessioncrew.webp"},{"name":"weightscope","title":"WeightScope","summary":"Offline-by-default safetensors checkpoint inspector: per-tensor and per-layer weight diffs (L2, relative change, cosine, NaN/Inf) via tools ckpt_summary and ckpt_diff, plus `hermes weightscope` and `/weightscope`. Optional remote GPU worker, and an opt-in `demo --fetch` of two pinned public SmolLM2-135M checkpoints.","disclosure":"reads only the checkpoint paths you pass; writes recent diff headlines under the plugin data dir (optional) and, with `demo --fetch`, caches 513.2 MiB of pinned public Hugging Face weights plus an SVG heatmap; network is off unless you set remote_url (HTTPS to that worker only, bearer token from a named Hermes secret, no checkpoint upload) or pass `demo --fetch` (HTTPS to huggingface.co / official HF CDNs, no token); no telemetry, no shell, no background processes, no model execution. Numeric differences are not a safety, quality, or alignment verdict.","category":"tools","platforms":[],"maintainer":"dukemawex","author":"dukemawex","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/dukemawex/hermes-plugin-weightscope","docs":"https://github.com/dukemawex/hermes-plugin-weightscope/blob/760e10ce0d4d8bc9d27d8216e8f4bac9d7ebed6c/weightscope/README.md","tools":["ckpt_summary","ckpt_diff"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152795,"prs":[{"n":152795,"state":"merged","created":"2026-11-10T17:30:37Z"}],"created":"2026-11-10T17:30:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-stage","title":"Hermes Stage","summary":"A multi-profile terminal bot room for Hermes with one shared transcript, profile lens tabs, public @name/@everyone routing, and Stage-specific status, tool, and inline diff cards.","disclosure":"joins the profiles you choose into one room: every room message (including other profiles' replies) is sent to each addressed profile's agent session, and a bot reply that mentions `@name` or `@everyone` starts that profile's turn (up to 3 rounds / 10 messages per discussion); starts a local gateway for each profile in the room, saves the room transcript in plaintext under the Hermes state directory, and needs a one-time `npm install` of its Node dependencies (ink, react, string-width).","category":"automation","platforms":["linux","macos"],"maintainer":"David Philipe Gil","author":"davidpgil","version":"0.50.37","requires_hermes":">=0.23.1","repo":"https://github.com/davidpgil/hermes-stage","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Approval UI is implemented but needs a pending approval to exercise end to end.; The room is plugin-owned, not Hermes Desktop's hosted group-room engine.","state":"merged","pr":152793,"prs":[{"n":152793,"state":"merged","created":"2026-11-10T17:26:15Z"}],"created":"2026-11-10T17:26:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"afterimage","title":"Afterimage","summary":"Teach a desktop computer_use click-flow once, rehearse it with a click-through HUD that checks live pixels, then replay matching steps at zero model calls.","disclosure":"sends computer_use screenshots to the vision model through Hermes (requests the `qwen3-vl-plus` model override, else the session model); saves recorded clicks, typed text and screenshots in plaintext under the plugin data dir; runs a local X11 overlay sidecar over a Unix socket in /tmp and replays recorded clicks and keystrokes through computer_use (Hermes computer_use approvals apply).","category":"automation","platforms":["linux"],"maintainer":"LucianaiB2004","author":"LucianaiB2004","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/LucianaiB2004/hermes-afterimage","docs":"https://github.com/LucianaiB2004/hermes-afterimage/blob/46c58bd45d95104bff69037738c485c159943ab8/README.md","tools":["afterimage_locate","afterimage_begin_record","afterimage_end_record","afterimage_list","afterimage_rehearse","afterimage_replay"],"hooks":["post_tool_call","pre_llm_call","post_api_request","post_auxiliary_call","on_session_finalize"],"middleware":[],"env":[],"known_issues":"Linux/X11 only; needs a compositor (e.g. picom) for the translucent HUD.; Replay uses fixed window-relative positions; it stops on a pixel mismatch. Step repair is experimental.","state":"merged","pr":152785,"prs":[{"n":152785,"state":"merged","created":"2026-11-10T17:07:31Z"}],"created":"2026-11-10T17:07:31Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/LucianaiB2004/hermes-afterimage/46c58bd45d95104bff69037738c485c159943ab8/docs/images/rehearse-step2-delete.png","https://raw.githubusercontent.com/LucianaiB2004/hermes-afterimage/46c58bd45d95104bff69037738c485c159943ab8/docs/images/rehearse-step3-confirm.png","https://raw.githubusercontent.com/LucianaiB2004/hermes-afterimage/46c58bd45d95104bff69037738c485c159943ab8/docs/images/replay-pass.png","https://raw.githubusercontent.com/LucianaiB2004/hermes-afterimage/46c58bd45d95104bff69037738c485c159943ab8/docs/images/after-replay.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/afterimage.webp"},{"name":"voicestudio-tts","title":"voicestudio-tts","summary":"VoiceStudio TTS provider for Hermes: registers a TTS provider so replies can be read aloud, or auto-spoken, in the user's own voices from the local VoiceStudio app, per profile. Settings are read through ctx.get_config, voices through GET /profiles, audio through POST /generate. /voicestudio refresh stores the voice list in the plugin's own state; it copies the list into the plugin's plugin.yaml only when the user turns on sync_dropdown, which is off by default and is what turns the voice setting into a dropdown.","disclosure":"sends the reply text, the voice id and the engine name when one is configured to the local server (default http://127.0.0.1:3900, plain HTTP); no credentials, no telemetry, no other network calls, no declared dependency (the YAML write uses the module Hermes ships), no self-update of code.","category":"voice","platforms":[],"maintainer":"EternalShade3D","author":"EternalShade3D","version":"1.2.0","requires_hermes":">=0.21","repo":"https://github.com/EternalShade3D/voicestudio-hermes-plugin","docs":"https://github.com/EternalShade3D/voicestudio-hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152783,"prs":[{"n":152783,"state":"open","created":"2026-11-10T17:00:43Z"}],"created":"2026-11-10T17:00:43Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-tape","title":"hermes-tape","summary":"Deterministic record and replay for Hermes sessions: every model response and every tool result is written to one JSONL tape, and a replay re-runs the same conversation through the llm_execution and tool_execution middleware with no network, no API key and no side effects. Adds the tape_list, tape_show and tape_diff tools, a /tape command and the hermes tape CLI (record | replay | off | status | list | show | diff).","disclosure":"tapes are written to HERMES_HOME/plugin-data/hermes-tape/tapes/ with mode 0600 and contain the recorded session's full prompt, tool arguments and tool results, so sharing a tape shares its contents; replay is local-only and the plugin makes no network calls, sends no telemetry and runs no background work; rebuilding a recorded response imports a class only from anthropic.* or openai.* and refuses any other module named by a tape; when a tape runs out of recorded calls the remaining calls go live with a warning instead of failing the turn.","category":"tools","platforms":[],"maintainer":"itsolaph","author":"itsolaph","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/itsolaph/hermes-tape","docs":"https://github.com/itsolaph/hermes-tape#readme","tools":["tape_list","tape_show","tape_diff"],"hooks":["on_session_end"],"middleware":["llm_execution","tool_execution"],"env":[],"known_issues":"","state":"closed","pr":152782,"prs":[{"n":152782,"state":"closed","created":"2026-11-10T17:00:41Z"}],"created":"2026-11-10T17:00:41Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"synap","title":"synap","summary":"Synap — OpenAI-compatible hosted inference. Sends prompts and SYNAP_API_KEY to synap402.com; usage is billed against the user's Synap balance.","disclosure":"","category":"models","platforms":[],"maintainer":"Linkrra","author":"jimmyplup","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/jimmyplup/hermes-synap-provider","docs":"https://github.com/jimmyplup/hermes-synap-provider#readme","tools":[],"hooks":[],"middleware":[],"env":["SYNAP_API_KEY"],"known_issues":"","state":"merged","pr":152781,"prs":[{"n":152781,"state":"merged","created":"2026-11-10T16:55:23Z"}],"created":"2026-11-10T16:55:23Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"publora","title":"Publora","summary":"Draft, schedule and publish social media posts on LinkedIn, X, Instagram, Threads, TikTok, YouTube, Facebook, Bluesky, Mastodon and Telegram through Publora's hosted Streamable HTTP MCP server. Portable Agent Plugins v1 package with nine skills; no local executable code.","disclosure":"","category":"tools","platforms":[],"maintainer":"publora-team","author":"publora-team","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/publora-team/hermes-publora","docs":"https://github.com/publora-team/hermes-publora/blob/189b417e90bd2da81876a7594fd0a0e0b5c94b5d/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152779,"prs":[{"n":152779,"state":"merged","created":"2026-11-10T16:38:09Z"}],"created":"2026-11-10T16:38:09Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-issue-orchestrator","title":"Hermes Issue Orchestrator","summary":"GitHub issues as Hermes's task queue - claim, post progress with token counts, and hand off.","disclosure":"Posts public comments to the GitHub repository you configure using your token, including an automatic progress comment with token counts after each turn that holds a claimed issue (turn off with `progress_enabled: false`; the model's reply text is included only when `progress_include_reply` is on), and its tools can label, assign, close and reassign issues there without a Hermes approval prompt.","category":"automation","platforms":[],"maintainer":"krantikaridev","author":"krantikaridev","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/krantikaridev/hermes-issue-orchestrator","docs":null,"tools":["issue_claim","issue_comment_progress","issue_handoff"],"hooks":["post_llm_call","post_api_request"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152777,"prs":[{"n":152777,"state":"open","created":"2026-11-10T16:35:20Z"}],"created":"2026-11-10T16:35:20Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"launch-desk","title":"Launch Desk","summary":"Built something? Ask Hermes to prepare the launch, based on what posts.design learned from launches that worked: ideas from three real launch posts like yours, a post in your own words checked in code for slop, a share card from your own screenshots, colours and logo, and with /launch film a 14-second launch film in your brand plus a checklist so you don't post a sloppy video. You approve a preview first, then get the text, the card and a link that opens X with the post filled in.","disclosure":"one posts.design search per run through your own posts MCP server, a fetch of your product site, brand kit and packs stored locally, two check-ins scheduled only if you say Yes, an optional Hermes Desktop page (off until you turn it on) whose read-only backend, served while the plugin is enabled, reads your packs and the times of the check-ins it scheduled, a launch film made only when you ask with /launch film, rendered on your machine by the renderer you set up (a configured command or HyperFrames on PATH) with HyperFrames telemetry off (Launch Desk downloads nothing itself; HyperFrames may download its own headless Chrome on its first render), plus posts.design's free playbook list and, on Pro, one playbook read (1 credit) the first time and again only when posts.design updates it, and nothing is ever posted; see the README for the full list.","category":"tools","platforms":[],"maintainer":"posts-design","author":"baseddesigner","version":"0.2.3","requires_hermes":">=0.22.6","repo":"https://github.com/posts-design/hermes-launch-desk","docs":"https://github.com/posts-design/hermes-launch-desk/blob/745208481188ebad236eb5dc8f9291fecc7aad22/README.md","tools":["launch_desk_attach_screenshot","launch_desk_followup","launch_desk_record_results"],"hooks":[],"middleware":[],"env":[],"known_issues":"To use your posts.design account: hermes mcp add posts --url https://posts.design/mcp --auth oauth, then hermes config set plugins.entries.launch-desk.mcp_allowlist '[\"posts\"]', then hermes mcp login posts. Without it a bundled sample pack is used.","state":"open","pr":152775,"prs":[{"n":152775,"state":"open","created":"2026-11-10T16:26:54Z"}],"created":"2026-11-10T16:26:54Z","late":false,"said":true,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/banner.png","https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/screenshots/card-x.png","https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/screenshots/card-statement.png","https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/screenshots/card-split.png","https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/screenshots/feed-preview.png","https://raw.githubusercontent.com/posts-design/hermes-launch-desk/745208481188ebad236eb5dc8f9291fecc7aad22/assets/screenshots/cli-flow.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/launch-desk.webp"},{"name":"project_content","title":"Project Manager (experimental)","summary":"Experimental local-first project content tools and a basic Desktop workspace.","disclosure":"","category":"desktop","platforms":[],"maintainer":"mikemonty","author":"mikemonty","version":"2.0.0","requires_hermes":"","repo":"https://github.com/mikemonty/hermes-project-manager","docs":null,"tools":["project_initialize","project_create","project_organize","project_list","project_read","project_edit","project_media_list","project_media_register","project_media_update_metadata","project_blocks_inspect","project_blocks_save","project_blocks_insert","project_blocks_move"],"hooks":[],"middleware":[],"env":[],"known_issues":"Desktop workspace and agent tools use separate data stores.; Media playback and thumbnails are not implemented; Desktop has no media library.; Desktop UI has not yet been tested in a real Hermes host.","state":"open","pr":152773,"prs":[{"n":152773,"state":"open","created":"2026-11-10T16:25:24Z"}],"created":"2026-11-10T16:25:24Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-superagent","title":"Hermes Superagent","summary":"A resident router that dispatches and never executes, isolated workers that report only to it, team-written trigger rules, and an external watchdog that checks real progress and goal drift, plus an item ledger that keeps every task, issue and Claude Code session your sources show until it's confirmed closed.","disclosure":"spawns long-running worker processes from the argv you configure, runs the outbound send, heartbeat and connector commands you configure, which read sources into its ledger, including a read-only session probe sent through the host command you configure, and, only when relaunch is turned on, types one short nudge into a stopped Claude Code session's terminal, stops or restarts its own workers, and spends tokens on the profile's model during ticks and when it writes a worker brief; on a profile set to router it drops every chat message whose sender is not on its allow list, and a webhook event from an allow-listed author starts a worker directly; the send and heartbeat commands run with the full Hermes environment. Writes its database and worker directories under the configured home, and its optional Claude Code hook logs session events to ~/.superagent/sessions. Its hooks stay inert until a profile sets a role.","category":"automation","platforms":["linux","macos"],"maintainer":"AirKyzzZ","author":"AirKyzzZ","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/AirKyzzZ/hermes-superagent","docs":"https://github.com/AirKyzzZ/hermes-superagent#readme","tools":["superagent_dispatch","superagent_forward","superagent_cancel","superagent_status","superagent_report","superagent_tick","superagent_digest"],"hooks":["pre_tool_call","post_tool_call","pre_gateway_dispatch","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152772,"prs":[{"n":152772,"state":"merged","created":"2026-11-10T16:22:58Z"}],"created":"2026-11-10T16:22:58Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AirKyzzZ/hermes-superagent/83544d7c0ef58587567ffa59de1d573df68dc85a/assets/cover.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-superagent.webp"},{"name":"assetrizz","title":"Assetrizz","summary":"Assetrizz for Hermes: search 14,641 original 2D game assets and have the agent compose them into rendered scenes, with a live preview pane. assetrizz_search runs full-text search over slugs, tags, descriptions, styles and categories across 23 style packs (for example pixel_32 and cozy_cartoon). assetrizz_scene creates a canvas, tiles floors and walls, places, moves, scales, flips and layers props and characters, renders a PNG, and saves or loads scene JSON. Its op=compose builds a whole scene from one compact spec using four gameplay templates (topdown_farming, topdown_shooter, dungeon_crawler, side_platformer) and returns layer lint for collisions, HUD/playfield overlap and off-canvas items. Skill id assetrizz:assetrizz-composer. On Hermes Desktop 0.23 or newer, a dark Assetrizz pane live-previews the current scene through ctx.rest, browses assets and installs or removes a local library (deletion needs confirmation). The two tools also run without the pane. It is for game jams, prototypes, level mockups and pitch art that need consistent tiles and sprites quickly. To start, run hermes plugins install assetrizz and hermes plugins enable assetrizz, then ask: \"Search assetrizz for pixel_32 grass and dirt path tiles, then compose a 640×320 meadow with a path, a couple of trees, a ranger and a hare. Render a PNG.\" Search works at once from the bundled catalog; the first search builds a lean SQLite + FTS5 index in the plugin data directory. Renders come back as file paths. No keys are needed.","disclosure":"in the default on_demand mode the plugin downloads individual PNGs from raw.githubusercontent.com/mojomast/assetrizz at the pinned v0.1.0 tag (SHA-256-verified against the bundled catalog) and caches them under the plugin data directory; the Desktop pane and CLI can download whole style packs (up to about 1.65 GB) to a local folder and delete that folder or the cache after confirmation; rendered scenes are written to the plugin data directory or the user's configured export directory.","category":"tools","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/assetrizz-hermes","docs":"https://github.com/mojomast/assetrizz-hermes#readme","tools":["assetrizz_search","assetrizz_scene"],"hooks":[],"middleware":[],"env":[],"known_issues":"The Desktop compose pane has not yet been proven on a live Hermes Desktop host; the two tools and the mocked pane API tests still run without it.","state":"open","pr":152771,"prs":[{"n":152771,"state":"open","created":"2026-11-10T16:22:24Z"}],"created":"2026-11-10T16:22:24Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/assetrizz-hermes/e710b89c276b210969bebd67db4f1c855541586a/docs/banner.jpg","https://raw.githubusercontent.com/mojomast/assetrizz-hermes/e710b89c276b210969bebd67db4f1c855541586a/docs/example-scene.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/assetrizz.webp"},{"name":"blindcouncil","title":"BlindCouncil","summary":"Private human decisions in Hermes with authenticated responses, deterministic rules and durable recovery.","disclosure":"runs inside the Hermes Telegram gateway: adds its own button and /bcprobe handlers to the bot, and a background delivery task that sends decision invitations and results through your bot to the two configured participant Telegram IDs (both must be in TELEGRAM_ALLOWED_USERS); each participant's vote is stored in a local SQLite file in the plugin data folder, which the host operator can read.","category":"automation","platforms":["linux"],"maintainer":"sopskistar","author":"sopskistar","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/sopskistar/blindcouncil","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Native Telegram integration runs in process and requires an explicitly allowlisted two-account bot setup.; Aggregate outcomes may permit inference; the trusted host operator can access stored responses.; No action-bound executor or agent-facing tools yet; exactly-once delivery and Hermes-wide enforcement are not claimed.","state":"merged","pr":152770,"prs":[{"n":152770,"state":"merged","created":"2026-11-10T16:21:39Z"}],"created":"2026-11-10T16:21:39Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/sopskistar/blindcouncil/2a7ceb4b75bfc24d9fa45349b08764eaeb082e48/docs/media/native-decision-light.png","https://raw.githubusercontent.com/sopskistar/blindcouncil/2a7ceb4b75bfc24d9fa45349b08764eaeb082e48/docs/media/native-decision-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/blindcouncil.webp"},{"name":"workbench-link","title":"Workbench Link","summary":"Route Hermes native file, terminal and code tools to one explicitly selected Linux/Docker project worker.","disclosure":"when `terminal.backend: workbench_link` is selected, terminal, file and code-execution commands and their output are sent over HMAC-authenticated HTTPS to a project worker you start and bind, which runs them in a network-less, read-only Docker container with your project directory mounted read-write; `hermes workbench-link serve` opens a TCP listener (127.0.0.1:8765 by default, any address you pass with --listen) and keeps a ledger of commands' retained output under the plugin data folder.","category":"tools","platforms":["linux"],"maintainer":"dotmantissa","author":"dotmantissa","version":"0.1.0","requires_hermes":">=0.23.0,<0.24.0","repo":"https://github.com/dotmantissa/workbench_link","docs":"https://github.com/dotmantissa/workbench_link/blob/657bfda03bef3e47a2a89652ecf2bdbcfdf5a839/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Requires plugins.isolation=in_process, one foreground CLI session per profile, and explicit broker/worker startup.; Linux/Docker worker only; gateway multiplexing, PTY/background stdin and persist_on_release are unsupported.; Physical WAN behavior and live-model conversations have not been verified.","state":"merged","pr":152768,"prs":[{"n":152768,"state":"merged","created":"2026-11-10T16:17:12Z"}],"created":"2026-11-10T16:17:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"redactgate","title":"redactgate","summary":"Reversible PII pseudonymization at the model boundary. Names, e-mails, phones, payment cards, IBANs and national IDs (CA, US, EU, UA) become [[TYPE_xxxxxx]] placeholders in every main-loop model request, across all roles, tool-call arguments, tool results and the system prompt (Chat Completions, Anthropic Messages and Responses shapes). Real values come back in the reply (transform_llm_output with hold_stream) and in the arguments of local tools only (terminal, file tools, execute_code, memory, clarify); web, browser, MCP, other plugins' tools and subagents keep placeholders. Checksum-validated detection (Luhn, mod-97), offset-preserving Unicode normalization, HMAC placeholders per session kept in memory, fail-closed on error, hash-chained audit journal, /redact command (status, what the model received, dry run, audit, verify, custom terms). Flags auxiliary calls that carried personal data, and /redact harden turns off model-made session titles.","disclosure":"no network calls, no model downloads, no shell commands, subprocesses, background threads, credentials or telemetry; standard library only. Writes only in its plugin data folder: audit.jsonl (entity type counts, tool names, provider host, hashed session ids; never values) and its state.json (random HMAC secret, user-added terms). Reads the merged Hermes config read-only; writes Hermes config only when the user runs /redact harden (auxiliary.title_generation.model_upgrade_enabled = false). The transform_llm_output hook holds the reply stream until values are restored, so commentary between tool calls is not shown on streaming surfaces. Detection core vendored from RedactGate (same author, AGPL-3.0); see DISCLOSURE.md for what predates the hackathon.","category":"tools","platforms":[],"maintainer":"ctmakc","author":"ctmakc","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ctmakc/hermes-redactgate","docs":"https://github.com/ctmakc/hermes-redactgate#readme","tools":[],"hooks":["pre_llm_call","transform_llm_output","pre_auxiliary_call","post_compaction","on_session_delete"],"middleware":["llm_request","tool_request"],"env":[],"known_issues":"Hermes runs auxiliary model calls (titles, context compression, vision) without request middleware; RedactGate flags them and /redact harden turns off model-made titles, but cannot rewrite those calls.; Person names are found from cue words, honorifics and a first-name list; an unusual name with no cue is missed until it is caught once in the session or added with /redact terms add.","state":"merged","pr":152764,"prs":[{"n":152764,"state":"merged","created":"2026-11-10T16:13:10Z"}],"created":"2026-11-10T16:13:10Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/docs/banner.png","https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/docs/screenshots/01-status-harden.png","https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/docs/screenshots/02-write-file-real-values.png","https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/docs/screenshots/03-redact-last.png","https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/docs/screenshots/04-audit-verify.png"],"videos":[],"x":["https://x.com/mmixbizca/status/2120189452601663749"],"youtube":[],"thumb":"/hackathon/thumbs/redactgate.webp"},{"name":"lexicon-seo","title":"Lexicon SEO","summary":"Hosted Lexicon SEO MCP (Streamable HTTP at https://lexiconseo.com/mcp) for technical SEO and AI-visibility audits: start audits, read reports, list issues, verify page fixes, monitoring diffs, citation questions, and content-refresh drafts. Agent Plugins v1 package (plugin.json + mcp.json + skills/). Configuration only — no local server binary.","disclosure":"every tool call goes to lexiconseo.com; requires a paid Lexicon API key (Starter/Professional/Business; Free plan gets an upgrade error). Bearer auth is client-managed (not embedded in portable mcp.json). Spend-capable tools (start_audit after allowance, extra_citation, refresh_page after allowance) quote then require confirm true. Package marks the Hermes server trust untrusted. The live tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Lexicon SEO","author":"NK2-arch","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/NK2-arch/lexicon-mcp","docs":"https://lexiconseo.com/docs/mcp/","tools":[],"hooks":[],"middleware":[],"env":["LEXICON_API_KEY"],"known_issues":"","state":"open","pr":152757,"prs":[{"n":152757,"state":"open","created":"2026-11-10T16:05:58Z"}],"created":"2026-11-10T16:05:58Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"spacewise","title":"Spacewise","summary":"Free up space without the fear of losing what matters. Scans one folder you name for exact duplicates (one copy always stays), leftover .dmg/.pkg installers, similar photos (the sharpest stays) and blurry or near-black photos, and reports large videos, screenshots and other large files without ever proposing them. A local preview page shows what would stay and what would go; only categories you approve move to the Trash of the same disk, and spacewise_undo puts them back.","disclosure":"reads image, video and installer files (and the name, size and date of other files) only in a folder you name inside your home folder or on an external drive; refuses the operating system, disk roots, the whole home folder, other users' and shared folders, ~/Library and ~/Applications, hidden and locked items, unreadable folders, symlinks, and app-managed libraries (Photos, Lightroom, Final Cut, iMovie, Music, apps, Time Machine); skips cloud placeholders without opening them. spacewise_trash takes only a scan id and categories (never file paths) and is escalated by its own pre_tool_call hook to Hermes' human-approval gate, so it follows the user's approval settings (YOLO, approvals off or approvals.cron_mode can let it through; with no human present it fails closed); each request gets a one-time rule key. Moves are same-disk renames into ~/.Trash or <drive>/.Trashes/<uid> (freedesktop Trash on Linux), never copies or deletions; files changed since the scan, hard-linked files and RAW+JPEG pairs are left alone. Stores per-file measurements and SHA-256 hashes, recent scans, Trash batches, reports and preview thumbnails in its plugin data folder. Sends to the model provider, as part of the conversation, the scanned folder, counts, sizes and names of listed photos, videos and installers; names of other large files stay in the local report. No network calls, model calls, shell commands or telemetry; no process-wide settings changed. Windows: scan and report only.","category":"tools","platforms":[],"maintainer":"ardianreffa","author":"ardianreffa","version":"0.1.1","requires_hermes":">=0.22.6","repo":"https://github.com/ardianreffa/spacewise","docs":"https://github.com/ardianreffa/spacewise#readme","tools":["spacewise_scan","spacewise_preview","spacewise_trash","spacewise_undo"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152756,"prs":[{"n":152756,"state":"merged","created":"2026-11-10T16:03:58Z"}],"created":"2026-11-10T16:03:58Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-drawbridge","title":"Hermes Drawbridge","summary":"Give your remote Hermes agent limited access to folders on your device.","disclosure":"the Desktop component sends the contents and names of files in the folder you share (up to the configured read limit) to the Hermes backend serving that chat, so they reach chat history and the model provider; with Create/Update enabled the agent can propose whole-file writes that Desktop applies after you approve the diff in the chat, and \"Allow this session\" lets later edits in that share apply without a further prompt until the share ends; no deletes, no network calls beyond your own Hermes connection.","category":"desktop","platforms":[],"maintainer":"sohomsahaun","author":"sohomsahaun","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/sohomsahaun/hermes-drawbridge","docs":null,"tools":["drawbridge_folder"],"hooks":["pre_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152755,"prs":[{"n":152755,"state":"merged","created":"2026-11-10T16:03:52Z"}],"created":"2026-11-10T16:03:52Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/sohomsahaun/hermes-drawbridge/84c5c7cf959c75037d1ea88ead599ba639368185/docs/folder-access.png","https://raw.githubusercontent.com/sohomsahaun/hermes-drawbridge/84c5c7cf959c75037d1ea88ead599ba639368185/docs/verified-update.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-drawbridge.webp"},{"name":"sluice-search","title":"Sluice","summary":"Tiered free-first web search and extraction router and backend manager for Hermes","disclosure":"","category":"web","platforms":["linux","macos"],"maintainer":"Abhigyan Chatterjee","author":"abhigyan-chatterjee","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/abhigyan-chatterjee/sluice","docs":"https://github.com/abhigyan-chatterjee/sluice#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152754,"prs":[{"n":152754,"state":"open","created":"2026-11-10T16:02:52Z"}],"created":"2026-11-10T16:02:52Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"groundcontrol","title":"groundcontrol","summary":"Scoped GroundControl operations guidance and conservative evidence receipts for Hermes native MCP.","disclosure":"","category":"other","platforms":[],"maintainer":"teckedd-code2save","author":"teckedd-code2save","version":"0.1.0","requires_hermes":">=0.17.0","repo":"https://github.com/teckedd-code2save/hermes-groundcontrol","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152751,"prs":[{"n":152751,"state":"merged","created":"2026-11-10T15:59:07Z"}],"created":"2026-11-10T15:59:07Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":["https://github.com/teckedd-code2save/hermes-groundcontrol/releases/download/v0.1.0/groundcontrol-hermes-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"aftercare","title":"Aftercare","summary":"Your agent checks its own work after the fact. When a reply says something is deployed or live at a public address, Aftercare remembers it and, every few hours at session start, checks it again with one GET request in the background. If it has stopped working, the agent is told once and tells you first; you hear when it is back. /aftercare lists and checks, and hermes aftercare check runs from cron. Never checks private networks or runs commands.","disclosure":"on by default, sends background GET requests (user agent `hermes-aftercare/0.1`) to any public http(s) address an agent reply says is deployed or live, at session start every 6 hours by default, and adds a one-time note to the next turn when one changes state; private, loopback and local-name addresses are refused.","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/aftercare","docs":"https://github.com/salch-cred/aftercare","tools":[],"hooks":["post_llm_call","on_session_start","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152750,"prs":[{"n":152750,"state":"merged","created":"2026-11-10T15:58:31Z"}],"created":"2026-11-10T15:58:31Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"teach-back","title":"Teach-Back","summary":"Make sure you understand the code your agent writes. Teach-Back records every file the agent writes or patches, and /teachback quizzes you on it: short questions about what the new code does (behaviour, edge cases, failures), written from the real change by your own model through ctx.llm and graded the same way, with the right answer explained when you miss. /teachback score shows how many agent-written lines you were quizzed on and understood.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/teach-back","docs":"https://github.com/salch-cred/teach-back","tools":[],"hooks":["pre_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152749,"prs":[{"n":152749,"state":"merged","created":"2026-11-10T15:58:21Z"}],"created":"2026-11-10T15:58:21Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"atlas","title":"Atlas","summary":"Keeps your Pursuits current across your AI Harnesses (Claude Code, Codex, Devin, Hermes, and Sessions run through T3 Code) and sends you a daily brief with the next Step for each.","disclosure":"reads, never writes, the Session stores of those tools under your home folder, and reads through a Harness folder that is a link; copies their transcripts verbatim into a local record folder (default ~/atlas, mode 0700), with detected secrets masked, best effort, in every derived file but not in the raw copies; once you add ChatGPT or claude.ai, reads the export zips you drop in ~/atlas/inbox/ (in memory, capped, never group_chats.json), keeps their conversations verbatim the same way (claude.ai attachment text included), and deletes each zip after it imported every conversation in it, keeping one it cannot read; sends Session text, detected secrets masked, to the model your Hermes is configured with, during `hermes atlas backfill` and then unattended on every tick (up to 20 Sessions per tick, one model call each, plus the Journal, which a late Session such as an imported one makes it write again, and one call a day that adds to your Profile from that day's Steps, Journal lines and Session times, never transcript text), which costs model calls; a model's answer can change what the record says about one Pursuit, so text inside a conversation can influence the next brief; claims messages addressed to Atlas in your Telegram home chat (the word atlas, a reply to a brief or to the weekly Review, a 10-minute window, /atlas), which then do not reach the Hermes agent, and answers there; sends the daily brief to that chat unprompted by running `hermes send`, and the brief and resume answers name this machine's host name, the folder and the git branch of each Step (for a web chat, the conversation's title and day), which a group home chat shows to everyone in it; sends a second unprompted message, the weekly Review, once a week (Sunday 18:00 by default) to the same chat, also by running `hermes send`; it proposes Focus, ending and reopen changes and never changes a Pursuit by itself, and replies to it are claimed; `hermes atlas setup` writes $HERMES_HOME/scripts/atlas_tick.sh and creates the `atlas-tick` Hermes cron job, which runs `hermes atlas tick` every 10 minutes; parks a Pursuit by itself, when it composes a daily brief, after it asked about that Pursuit twice and the latest ask went unanswered, and never ends one; serves a read and write API for its dashboard tab under /api/plugins/atlas/, behind the dashboard's own sign-in; deletes files in its own record folder when you tell it to forget a Session; records this machine's host name in the record; reads its own /proc/self/fd and /proc/self/maps to check which file SQLite opened. Agent tools, in Hermes and over `hermes atlas mcp` (stdio, no network port), let an agent read Resume Notes and Journal days, leave Notes, and change a Resume Note only on your own typed message to Atlas in that Session (Claude Code bound through ~/.claude/sessions/<pid>.json and /proc/<pid>/stat, Codex through its call thread id): that message itself becomes one Decided line, and one Open question is removed only when the message, addressed to Atlas, states outright that it is settled and it is the only one; other changes, at most one decision and one question, are shown whole and wait until you reply apply; agent text is normalised to one line with its quotes and brackets replaced. No telemetry, no network calls of its own, no stored credentials.","category":"automation","platforms":["linux"],"maintainer":"zhaidarbek","author":"zhaidarbek","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/zhaidarbek/hermes-atlas","docs":"https://github.com/zhaidarbek/hermes-atlas#readme","tools":["atlas_read","atlas_note","atlas_update"],"hooks":["pre_gateway_dispatch","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"All 43 scenes in docs/tutorial/a-week-with-atlas.md pass one by one, each from a prepared state. The single chained replay of the whole week from an empty home passes 27 of them so far.; Proved with a stub model and a stub `hermes send` against real Hermes v0.23.0. Not yet exercised with a real model's answers or live Telegram delivery.; `hermes atlas status` is registered and not built; it exits with an error.","state":"merged","pr":152746,"prs":[{"n":152746,"state":"merged","created":"2026-11-10T15:51:34Z"}],"created":"2026-11-10T15:51:34Z","late":false,"said":true,"update":false,"discussion":6,"images":[],"videos":["https://raw.githubusercontent.com/zhaidarbek/hermes-atlas/849486e572ecf990eee649dd5538399ad6d64533/docs/recordings/demo-week.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"rhythm-reaper","title":"The Rhythm Reaper","summary":"A hip-hop producer desk — 41 lanes across seven families (foundational, trap, drill, melodic, alt, hard, conscious), each with the full production spec (tempo family, key centres, drum programme, low end, harmony and sample source, vocal delivery, metatag vocabulary, exclude list, generation notes) and, for any of them, a complete pasteable Suno deliverable: the style field written out with the dynamic ARC, the Exclude Styles line, a tagged lyric frame with bar targets, an energy map and a pronunciation lexicon. It validates a finished draft against the real platform limits (style <= 1000 chars, lyrics <= 3000, every section carrying a recognised structural tag, no contradictory dynamic tags in one section, a real chorus/hook, known-to-slur proper nouns left un-respelled) and enforces the two character limits in code rather than by eye. It deliberately does not generate lyrics — template bars are slop and the desk says so — it hands the writer a frame that is already correct.","disclosure":"no network calls, no credentials, no shell, no subprocesses and no files written outside the plugin: the 41-lane catalog is a Python module in the repo and every tool is pure local computation, so no tool is credential-gated (a missing secret can never hide one). 55 offline tests, including a sweep asserting all 41 lanes build a deliverable that passes its own gates.","category":"tools","platforms":[],"maintainer":"D0xedDevi0","author":"D0xedDevi0","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/D0xedDevi0/hermes-rhythm-reaper","docs":null,"tools":["reaper_lanes","reaper_lane","reaper_block","reaper_check","reaper_respell"],"hooks":[],"middleware":[],"env":[],"known_issues":"It refuses to write your bars on purpose — it returns a frame with bar slots and the hook placed, and the lyric is yours. Template lyrics were left out by design, not as a missing feature.; Templates are not evaluations: the desk knows production specs, not how a specific model will render them. Unusual pronunciations still want a 30-second test clip before a full render.","state":"merged","pr":152733,"prs":[{"n":152733,"state":"merged","created":"2026-11-10T15:34:06Z"}],"created":"2026-11-10T15:34:06Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/banner.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/screenshots/lane-spec.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/screenshots/deliverable.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/screenshots/lane-sweep-41of41.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/screenshots/validator-verdict.png"],"videos":["https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/demo-song.mp4","https://raw.githubusercontent.com/D0xedDevi0/hermes-rhythm-reaper/a772a54118d45142e47566ee1d853a2837afb551/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rhythm-reaper.webp"},{"name":"tether","title":"tether","summary":"Your phone as a remote trackpad, laser-tilt pointer, and local voice terminal for the Hermes host.","disclosure":"","category":"other","platforms":[],"maintainer":"Yashop965","author":"Yashop965","version":"1.5.3","requires_hermes":"","repo":"https://github.com/Yashop965/tether","docs":null,"tools":["tether_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153306,"prs":[{"n":153306,"state":"open","created":"2026-11-11T08:03:56Z"},{"n":152730,"state":"open","created":"2026-11-10T15:27:53Z"}],"created":"2026-11-10T15:27:53Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Zek-Takai/hermes-tether/adc4bfdc679c0514bc6d26e4241d6975493a8f87/docs/media/tether-banner.png","https://raw.githubusercontent.com/Zek-Takai/hermes-tether/adc4bfdc679c0514bc6d26e4241d6975493a8f87/docs/media/tether-desktop.png","https://raw.githubusercontent.com/Zek-Takai/hermes-tether/adc4bfdc679c0514bc6d26e4241d6975493a8f87/docs/media/tether-demo.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tether.webp"},{"name":"circuit-bench","title":"Circuit Bench","summary":"ESP32 workbench for Hermes and Hermes Desktop, from pin choice to running firmware: checks GPIO choices for ESP32, S2, S3, C3 and C6 against Espressif data, sizes parts with 16 calculators, draws schematics, plans the solder order, builds and flashes with your PlatformIO and esptool, and decodes panics to function and line so Hermes can fix them. 180 modules carry datasheet-cited values. Every verdict and value comes from code with its source, never from the model. A marked simulation runs the whole flow without hardware.","disclosure":"runs your own pio, esptool and addr2line as subprocesses (no shell, minimal environment); a build runs the firmware project's PlatformIO scripts with your user rights and asks first; opens serial ports only on request, which can reset the board; writes firmware only with 'Allow flashing real boards' on (off by default) and after confirmation; a schematic can also be saved as a new SVG into a folder you or the agent name (out_dir); background threads only while a port is open or the Bench is in use; no network calls from the plugin (PlatformIO may download packages on a first build), no telemetry, no credentials; data under <HERMES_HOME>/plugin-data/circuit-bench/.","category":"desktop","platforms":["linux","macos"],"maintainer":"juvenile454","author":"juvenile454","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/juvenile454/hermes-circuit-bench","docs":"https://github.com/juvenile454/hermes-circuit-bench#readme","tools":["bench_project","bench_pins","bench_calc","bench_schematic","bench_solder","bench_board","bench_crash"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"A session-scoped /yolo and one-shot runs (hermes -z, which bypass approvals by design) are not visible to plugins: there Hermes passes agent builds, flashes and serial port openings without asking. Keep 'Allow flashing real boards' off (the default) while you use either.; Real boards need PlatformIO Core (pio), esptool and serial port access (group dialout, or uucp on Arch); the simulation mode needs none of them. Real boards tested on Linux only (ESP32-S3-DevKitC-1 and WT32-ETH01); macOS is covered by CI in simulation mode; ESP32-C3, ESP32-S2 and ESP32-C6 are checked offline only.; On the command line, install with --enable (or answer 'Enable now?' with y); otherwise the tools and the Bench backend stay off. Without a terminal (scripts, SSH, an agent) also add --yes-deps; otherwise Hermes skips the dependencies and the plugin stays off. After a command-line install the Desktop half stays off until you switch on Desktop in the Circuit Bench row under Capabilities > Plugins; installing from Hermes Desktop turns it on.; A firmware stuck in a crash loop can keep the board from entering its bootloader on its own: hold BOOT, tap RESET, release BOOT and flash again.","state":"merged","pr":152706,"prs":[{"n":152706,"state":"merged","created":"2026-11-10T15:23:34Z"}],"created":"2026-11-10T15:23:34Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/banner.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/06-panic.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/01-plan-blocked.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/hero-agent.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/07-modules.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/05-flash-dialog.png","https://raw.githubusercontent.com/juvenile454/hermes-circuit-bench/b58b0604685a8473b5220f1ebc957c1ec2617fd3/docs/screenshots/03-wire.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/circuit-bench.webp"},{"name":"openrouter-provider-picker","title":"OpenRouter Provider Picker","summary":"Pick which upstream providers serve each OpenRouter model, per model, from a desktop UI (Settings › Plugins › Provider Routing) or an agent tool. Writes provider_routing and provider_routing.models.<id> into the active profile's config.yaml — the keys Hermes already sends as OpenRouter's `provider` request field, and which `hermes config set` cannot address because model ids contain dots. The UI lists each model's real upstream providers with their context window and input price per million tokens, and supports a whitelist, a blacklist, and a per-model sort override. The agent tool exposes the same thing as list / providers / set / clear. OpenRouter only: Nous Portal decides routing centrally and ignores caller-supplied preferences.","disclosure":"network calls to the public, unauthenticated openrouter.ai API (/api/v1/models, /api/v1/providers and /api/v1/models/<id>/endpoints) to build the model and provider lists, cached in-process; reads and rewrites the provider_routing block of config.yaml in the active profile via the comment-preserving atomic replace, from the Desktop settings page or from the agent tool, which the model can call without an approval prompt to change per-model or default routing (including data_collection and allow/deny lists); no telemetry, no credentials, no self-update, no other third party.","category":"models","platforms":[],"maintainer":"PotatoWareGit","author":"PotatoWareGit","version":"1.0.1","requires_hermes":">=0.23.0","repo":"https://github.com/PotatoWareGit/hermes-openrouter-provider","docs":"https://github.com/PotatoWareGit/hermes-openrouter-provider#readme","tools":["openrouter_provider_routing"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152704,"prs":[{"n":152704,"state":"merged","created":"2026-11-10T15:22:32Z"}],"created":"2026-11-10T15:22:32Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/PotatoWareGit/hermes-openrouter-provider/afba3e648ecbfd18688f845e9f3ec7cf86315ff5/assets/banner.png","https://raw.githubusercontent.com/PotatoWareGit/hermes-openrouter-provider/afba3e648ecbfd18688f845e9f3ec7cf86315ff5/assets/screenshot-routing.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/openrouter-provider-picker.webp"},{"name":"hermes-plugin-dev","title":"Hermes Plugin Dev","summary":"Hermes Plugin Dev: build Hermes plugins with Hermes. A plugin-development skill plus two offline tools that scaffold a new plugin and lint it against the catalog rules before you submit. The hermes-plugin-dev:hermes-plugin-development skill covers manifest v2 and strict YAML, the ctx API, all 46 hooks, capabilities and isolation, dashboard and Desktop panes, testing, release and catalog submission, and lessons from catalog reviews, with a template plugin and catalog-entry and PR-body templates. hpd_scaffold(target_dir, name) copies the hello-hermes template, which passes hermes plugins validate and doctor --ci as-is, renames it, and adds a catalog entry and PR body stub; it refuses non-empty folders and never overwrites. hpd_check(path, catalog_entry?) is a read-only lint: strict YAML, manifest rules, provides_tools against the registered tools, a security preflight, static schema token cost, and catalog entry rules (sha, image hosts, category, subdir, at most 6 screenshots). Both tool schemas together cost 190 o200k tokens. It is for anyone writing a first Hermes plugin or getting one ready for a catalog PR. To start, run hermes plugins install hermes-plugin-dev and hermes plugins enable hermes-plugin-dev, then ask: \"Scaffold a Hermes plugin called weather-now in ~/code/weather-now, then check it.\" Finish with hermes plugins doctor <dir> --ci and hermes plugins validate <dir> --install-deps. The same skill installs into other coding agents with npx skills add mojomast/hermes-plugin-dev.","disclosure":"`hpd_scaffold` creates files in any new or empty folder the model names (fixed template content only); `hpd_check` reads any folder or file the model names (read-only, never imports it); the user-run `hermes hpd check <dir> --execute` imports and runs the target plugin's `register()` unsandboxed in the Hermes process, so use it only on code you trust.","category":"tools","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.3.1","requires_hermes":">=0.21.6","repo":"https://github.com/mojomast/hermes-plugin-dev","docs":"https://github.com/mojomast/hermes-plugin-dev#readme","tools":["hpd_scaffold","hpd_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152699,"prs":[{"n":152699,"state":"open","created":"2026-11-10T15:10:33Z"}],"created":"2026-11-10T15:10:33Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/hermes-plugin-dev/796a35e4d893b985f1b61d8e11b5ae7e4118bf6f/assets/banner-v3.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-plugin-dev.webp"},{"name":"vibeline","title":"vibeline","summary":"Show agent work as rails in the TUI, web and CLI. One lane per agent, tool calls and acceptance-criteria results as marks.","disclosure":"`hermes vibeline web` serves a local web UI (127.0.0.1 by default; a token is required for any non-loopback client) that shows every Hermes session transcript on this machine and can open terminals running `hermes --resume` and rewind sessions (soft-deleting later messages via core's `/rewind`); `--peer` URLs you add receive and forward these requests to other machines, and `--read-only` disables open/rewind.","category":"tools","platforms":["linux","macos"],"maintainer":"ListeningPost","author":"wsbatlp","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/ListeningPost/vibeline","docs":"https://github.com/ListeningPost/vibeline#readme","tools":["vibeline_rails","vibeline_dashboard"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152697,"prs":[{"n":152697,"state":"open","created":"2026-11-10T15:04:47Z"}],"created":"2026-11-10T15:04:47Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ListeningPost/vibeline/d5d0f425a64906ae1a50c1222314a5420da404d5/docs/web-sessions.png","https://raw.githubusercontent.com/ListeningPost/vibeline/d5d0f425a64906ae1a50c1222314a5420da404d5/docs/web-ledger.png","https://raw.githubusercontent.com/ListeningPost/vibeline/d5d0f425a64906ae1a50c1222314a5420da404d5/docs/cli-panel.png","https://raw.githubusercontent.com/ListeningPost/vibeline/ec0a27f766744430955d0623d3547a0b72639ac4/docs/web-sessions.png","https://raw.githubusercontent.com/ListeningPost/vibeline/ec0a27f766744430955d0623d3547a0b72639ac4/docs/web-ledger.png","https://raw.githubusercontent.com/ListeningPost/vibeline/ec0a27f766744430955d0623d3547a0b72639ac4/docs/cli-panel.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vibeline.webp"},{"name":"reading","title":"Reading","summary":"Newsletters out of the Gmail inbox, into a reader in Hermes Desktop (a page in the sidebar) and on your phone (dashboard web app). Setup scans the inbox and suggests the newsletters; native Gmail filters then move the senders you pick into one label, even when Hermes is off. Read with j/k, dark or original colors per sender, unsubscribe in one tap, add or remove senders by hand, and ask Hermes about any issue (a new chat with the issue attached, or the @newsletter: reference in any chat). `hermes reading export` feeds digest cron jobs.","disclosure":"uses your own Google OAuth client, declared under oauth: and signed in with `hermes auth add reading:google` (Hermes stores and refreshes the token; the plugin never holds it); calls only the Gmail API through credentialed_provider_request, plus, when you press Unsubscribe, a one-click POST to the sender's List-Unsubscribe URL (public https hosts only) or an unsubscribe email from your account; changes Gmail only to create its label, write and delete its own filters, move routed senders' mail out of the inbox, mark opened emails read and trash emails you delete; `hermes reading setup` runs `hermes config set` and `hermes auth add` in your terminal (without YOLO or auto-approve variables); writes only its own HERMES_HOME/reading folder; @newsletter: and Ask Hermes send the newsletter text to your model provider; no telemetry.","category":"desktop","platforms":[],"maintainer":"Nj07r","author":"Nj07r","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/Nj07r/hermes-reading","docs":"https://github.com/Nj07r/hermes-reading","tools":[],"hooks":[],"middleware":[],"env":["READING_GOOGLE_CLIENT_ID","READING_GOOGLE_CLIENT_SECRET"],"known_issues":"","state":"open","pr":152695,"prs":[{"n":152695,"state":"open","created":"2026-11-10T14:59:40Z"}],"created":"2026-11-10T14:59:40Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Nj07r/hermes-reading/c739110797b0bcd0bad53d8f2a83b8ce1854430d/docs/reader.png","https://raw.githubusercontent.com/Nj07r/hermes-reading/c739110797b0bcd0bad53d8f2a83b8ce1854430d/docs/reader-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/reading.webp"},{"name":"hermes-parallel","title":"hermes-parallel","summary":"Run three isolated, verified file futures inside Hermes, compare, then choose one to apply.","disclosure":"","category":"tools","platforms":[],"maintainer":"kOs-tile","author":"kOs-tile","version":"1.0.4","requires_hermes":"","repo":"https://github.com/kOs-tile/hermes-parallel","docs":null,"tools":["parallel_begin","parallel_stage","parallel_explore","parallel_preview","parallel_compare","parallel_gallery","parallel_review_worktrees"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152692,"prs":[{"n":152692,"state":"open","created":"2026-11-10T14:44:59Z"}],"created":"2026-11-10T14:44:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"grimoire","title":"Grimoire","summary":"Ask about your CSV, JSON, Parquet and SQLite files in plain words: DuckDB answers with one SQL query, every number in the reply is checked against the query results, and a Data page gives charts, pivots, drill-down, data health and learning cards with no model tokens.","disclosure":"reads only the data files you or the model name (CSV, JSON, Parquet, SQLite; files a message mentions are attached automatically), read-only, refusing files under ~/.hermes, ~/.ssh, ~/.gnupg, ~/.aws, ~/.config, ~/.kube, ~/.docker and ~/Library unless allow_private_folders is set, with DuckDB's network, extension and other file access locked; copies SQLite files to a system temp folder as CSV; a pre_tool_call hook blocks raw reads of large data files by other tools; no network calls, shell commands, background processes, credentials or telemetry; stores saved queries, settings and HTML reports in its plugin data; installs the duckdb Python package.","category":"tools","platforms":[],"maintainer":"bettersandeep","author":"bettersandeep","version":"0.26.0","requires_hermes":">=0.23.0","repo":"https://github.com/bettersandeep/grimoire","docs":"https://github.com/bettersandeep/grimoire#readme","tools":["grimoire_attach","grimoire_profile","grimoire_query","grimoire_drivers","grimoire_compare","grimoire_note","grimoire_merge","grimoire_catalog"],"hooks":["pre_tool_call","pre_llm_call","post_tool_call","pre_api_request","post_api_request","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152691,"prs":[{"n":152691,"state":"merged","created":"2026-11-10T14:42:02Z"}],"created":"2026-11-10T14:42:02Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/banner.jpg","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/race.png","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/chat-check.png","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/data-page.png","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/charts.png","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/learning-card.png","https://raw.githubusercontent.com/bettersandeep/grimoire/4824773040b131f3179e5896d71d1435908758a7/assets/screenshots/data-health.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/grimoire.webp"},{"name":"ariadne-thread","title":"Ariadne's Thread","summary":"n8n-style flows for Hermes Desktop: each cron job, webhook route and skill drawn as a chain of steps, with the scheduler's true cron status, run output, delivery targets and a health bar, plus in-place editing with history and undo. Desktop page plus a dashboard API router; no tools, hooks, middleware or env vars.","disclosure":"reads cron/jobs.json, cron/output/<job id>/, every SKILL.md under skills/ and skills.external_dirs, config.yaml (skills.external_dirs only), a script in scripts/ when opened, and profiles/ folder names; reads webhook routes and cron delivery targets from Hermes' own GET /api/webhooks and GET /api/cron/delivery-targets through the raw window.hermesDesktop.api bridge (the plugin SDK has no route to core endpoints), never opening webhook_subscriptions.json; writes only on Save, in the active profile only: SKILL.md (atomic, inside skills/ only), files in scripts/, and a cron's prompt and deliver target through Hermes' cron.jobs.update_job, each save first keeping the replaced text under plugin-data/ariadne-thread/history (0600, newest 10 per target) and refusing if the file changed since it was opened; webhook prompts are read-only; \"Ask agent\" only drafts a new chat and nothing runs until you send it; no shell commands, no network beyond the local Hermes backend, no credentials, no telemetry, no self-update.","category":"automation","platforms":[],"maintainer":"benoit-dev","author":"benoit-dev","version":"0.2.2","requires_hermes":">=0.22.0","repo":"https://github.com/benoit-dev/ariadne-thread","docs":"https://github.com/benoit-dev/ariadne-thread/blob/a4ca623e7fe45d5b09e1c313b4f90077b00434de/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152686,"prs":[{"n":152686,"state":"open","created":"2026-11-10T14:31:07Z"}],"created":"2026-11-10T14:31:07Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/benoit-dev/ariadne-thread/a4ca623e7fe45d5b09e1c313b4f90077b00434de/docs/banner.png","https://raw.githubusercontent.com/benoit-dev/ariadne-thread/a4ca623e7fe45d5b09e1c313b4f90077b00434de/docs/crons.png","https://raw.githubusercontent.com/benoit-dev/ariadne-thread/a4ca623e7fe45d5b09e1c313b4f90077b00434de/docs/skill-flow.png","https://raw.githubusercontent.com/benoit-dev/ariadne-thread/a4ca623e7fe45d5b09e1c313b4f90077b00434de/docs/webhook-flow.png","https://raw.githubusercontent.com/benoit-dev/ariadne-thread/537610b5363d330ab82ad291ba3354484eb964d3/docs/crons.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ariadne-thread.webp"},{"name":"visual-workflow","title":"Visual Workflow","summary":"Visual drag-and-drop agent-workflow designer for Hermes: Trigger, Agent, Condition, Approval, Output nodes on a canvas, executed by a plugin-owned sequential runner.","disclosure":"Workflow Output nodes send text to messaging channels through Hermes's send-message path; a model-started run of a design with a delivering Output node first asks for your approval, and scheduled runs that would send are blocked unless approvals.cron_mode allows them; scheduled workflows run as Hermes cron jobs created from the dashboard; agent steps run Hermes subagents or the plugin LLM facade on your configured models; designs and run records are stored under HERMES_HOME/workflow-designs and HERMES_HOME/workflow-runs.","category":"automation","platforms":[],"maintainer":"Printaga Publishing LLC","author":"Printaga","version":"1.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Printaga/Hermes-Workflow","docs":"https://github.com/Printaga/Hermes-Workflow#readme","tools":["workflow_design_save","workflow_design_load","workflow_design_validate","workflow_design_run","workflow_design_respond"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152685,"prs":[{"n":152685,"state":"open","created":"2026-11-10T14:28:32Z"}],"created":"2026-11-10T14:28:32Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Printaga/Hermes-Workflow/3f7a6a185e489ff4d75a0e8c1a9050c300f602d5/docs/media/screens/01-designer-daily-digest.png","https://raw.githubusercontent.com/Printaga/Hermes-Workflow/3f7a6a185e489ff4d75a0e8c1a9050c300f602d5/docs/media/screens/02-schedules.png","https://raw.githubusercontent.com/Printaga/Hermes-Workflow/3f7a6a185e489ff4d75a0e8c1a9050c300f602d5/docs/media/screens/03-hello-world-telegram.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/visual-workflow.webp"},{"name":"selaeron-paperclip-sel9","title":"Paperclip Comment Writeback","summary":"Posts one approved, comment-only writeback on a Paperclip issue, bound to the issue's current live run; never changes issue status. Fail-closed: nothing is approved until PAPERCLIP_APPROVED_ORIGIN and PAPERCLIP_APPROVED_ISSUES are set.","disclosure":"adds a model-callable tool that posts a comment (fixed template plus up to 120 chars of model text) to a Paperclip issue, using your PAPERCLIP_API_KEY against PAPERCLIP_API_URL, after a read-only live-run lookup; posts only to the exact https origin in PAPERCLIP_APPROVED_ORIGIN and the issue IDs in PAPERCLIP_APPROVED_ISSUES (read from the process environment at load time), with no per-call Hermes approval prompt; never changes issue status; no telemetry, shell commands, file writes or background processes.","category":"tools","platforms":[],"maintainer":"nebout2011-debug","author":"nebout2011-debug","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/nebout2011-debug/selaeron-paperclip-plugin","docs":"https://github.com/nebout2011-debug/selaeron-paperclip-plugin/blob/e1fd695eb65dd3bed1797af07c4c85d103cf9e32/README.md","tools":["selaeron_paperclip_sel9_comment"],"hooks":[],"middleware":[],"env":["PAPERCLIP_API_URL","PAPERCLIP_API_KEY","PAPERCLIP_APPROVED_ORIGIN","PAPERCLIP_APPROVED_ISSUES"],"known_issues":"Tested against a mock only; not verified against a production Paperclip.; Requires PAPERCLIP_APPROVED_ORIGIN and PAPERCLIP_APPROVED_ISSUES in the process environment; with neither set, every comment is refused.","state":"merged","pr":152684,"prs":[{"n":152684,"state":"merged","created":"2026-11-10T14:27:54Z"}],"created":"2026-11-10T14:27:54Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/nebout2011/status/2120270617123623104"],"youtube":[],"thumb":null},{"name":"rung","title":"Rung","summary":"A verification kit for agent-written code, enforced inside Hermes. Rung builds the kit for a repository (linters and type checkers, tests, property tests that must catch planted bugs, security gates, a feature map the person approves with app-driving scripts, TLA+ and Lean models) and records every verdict against the exact bytes it checked; a verdict expires when those bytes change. Before Hermes ends a turn in which it edited code, a pre_verify hook asks Rung's local ledger whether the checks covering those files have a fresh pass, and sends Hermes back with the check ids when they do not (at most two continuations per turn). Tools rung_check, rung_plan, rung_kit and rung_map return the CLI's JSON views; feature decisions are /rung slash commands only, never tools; a bundled skill sets the kit up. Every verdict comes from a tool, never from a model.","disclosure":"the tools run the Rung CLI as a subprocess (argument list, no shell); rung_check then runs the commands in the project's own rung.toml (its test, lint and build commands and installed scanners) without Hermes's per-command approval prompt, inheriting Hermes's environment; the hook only reads the ledger. rung_map drafting calls the model CLI chosen in rung.toml (claude, codex or an OpenAI-compatible endpoint), which reads the project's source. No network calls from the plugin itself; checks may make them (osv-scanner queries OSV, the deps check queries PyPI or npm). Nothing waits for a person. Rung writes verdicts under .rung/ in the project. No credentials, no telemetry. Requires rung-cli 0.4.","category":"tools","platforms":["linux","macos"],"maintainer":"CalQuity","author":"pratham31012002","version":"0.4.0","requires_hermes":">=0.20","repo":"https://github.com/CalQuity/rung","docs":"https://github.com/CalQuity/rung/tree/main/hermes-plugin#readme","tools":["rung_check","rung_plan","rung_kit","rung_map"],"hooks":["pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153602,"prs":[{"n":153602,"state":"open","created":"2026-11-11T15:44:01Z"},{"n":152681,"state":"open","created":"2026-11-10T14:16:41Z"}],"created":"2026-11-10T14:16:41Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/miguelangeloazevedo/rung/558b5dc86b738cb107dccea955e2986569af9369/docs/media/pane.png","https://raw.githubusercontent.com/miguelangeloazevedo/rung/558b5dc86b738cb107dccea955e2986569af9369/docs/media/milestone.png"],"videos":[],"x":["https://x.com/migazevedo/status/2120150695605408250"],"youtube":[],"thumb":"/hackathon/thumbs/rung.webp"},{"name":"track-record","title":"Track Record","summary":"How often is your agent right when it says it fixed something? Each reply that claims success (\"this fixes it\", \"this should work\") is logged with how sure it sounded, then checked against your next message and any test or build run in the next turn. /trackrecord shows hit rate per confidence level and model, the calibration gap and a Brier score. When certain claims hold up under 80% of the time, the agent is told its record. Pattern matching only, no model calls.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/track-record","docs":"https://github.com/salch-cred/track-record","tools":[],"hooks":["pre_llm_call","post_tool_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152678,"prs":[{"n":152678,"state":"merged","created":"2026-11-10T14:16:00Z"}],"created":"2026-11-10T14:16:00Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"why","title":"Why","summary":"Ask why any line of agent-written code exists. Each time the agent writes or patches a file, Why records the lines it wrote and that turn's user request, locally. /why app.py:42 (or hermes why, or the why_line tool) then names the request, date, model and session behind the line; /why app.py shows which requests wrote which share of a file. Lines are matched by text, not number, so they are found after they move. No model calls, network or dependencies.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.1","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/why","docs":"https://github.com/salch-cred/why","tools":["why_line"],"hooks":["pre_llm_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152677,"prs":[{"n":152677,"state":"open","created":"2026-11-10T14:15:51Z"}],"created":"2026-11-10T14:15:51Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lastgood","title":"LastGood","summary":"LastGood records which of your preset checks passed on which tested state, and what restoring files will not undo. Checks you choose (file opens, words present, files exist, page loads) run after write_file or patch in an opted-in project, and on demand via /lastgood and /blame. Results are PASS, FAIL, or UNKNOWN, with a content fingerprint so changed files mark old results stale. Blame shows the first failing step and bounded configured-string presence deltas, not the cause. A ledger lists recognised tool calls a file rollback will not undo, without storing their arguments.","disclosure":"the optional url_loads check fetches the http(s) address set in the project's lastgood-config.json (loopback and public hosts; link-local and cloud-metadata addresses are always refused, including after redirects; private ranges only when you turn on allow_private_urls). The lastgood_setup tool refuses page checks, but the agent's own file tools can still edit lastgood-config.json, so leave allow_private_urls off unless you trust what the session writes.","category":"tools","platforms":[],"maintainer":"Kenneth Ausmus (Dr-Enuf)","author":"Dr-Enuf","version":"0.4.2","requires_hermes":">=0.22.7","repo":"https://github.com/Dr-Enuf/lastgood","docs":null,"tools":["lastgood_check","lastgood_status","lastgood_blame","lastgood_report","lastgood_setup"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152669,"prs":[{"n":152669,"state":"open","created":"2026-11-10T14:00:26Z"}],"created":"2026-11-10T14:00:26Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/logicalmesss/status/2120150385306529966"],"youtube":[],"thumb":null},{"name":"ros2-console","title":"ROS 2 Console","summary":"Read a live ROS 2 graph over SSH: topic health, measured rate, one message, camera frame, doc answers with commit provenance, and one gated publish that proves delivery.","disclosure":"runs fixed ros2 CLI scripts on the robot over SSH using your own SSH config and agent (or locally with bash when no host is set); the agent may choose any SSH host per call, and new host keys are accepted on first connect (StrictHostKeyChecking=accept-new); publishing is off until you set publish_allow topic globs, and actuation-style topics are always refused.","category":"tools","platforms":[],"maintainer":"vgenev","author":"vgenev","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/vgenev/ros2-console","docs":null,"tools":["ros2_host_status","ros2_graph","ros2_topic_rate","ros2_topic_sample","ros2_camera_snapshot","ros2_docs","ros2_publish"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a reachable ROS 2 host over SSH. Publishing is deny-by-default: it stays off until you put a topic glob in publish_allow.","state":"merged","pr":152657,"prs":[{"n":152657,"state":"merged","created":"2026-11-10T13:35:09Z"}],"created":"2026-11-10T13:35:09Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vgenev/ros2-console/6075de670b65985dc1f966c2f3ceebad97cc66ef/docs/assets/hermes-plate.jpg","https://raw.githubusercontent.com/vgenev/ros2-console/6075de670b65985dc1f966c2f3ceebad97cc66ef/docs/assets/pane-topology.png","https://raw.githubusercontent.com/vgenev/ros2-console/6075de670b65985dc1f966c2f3ceebad97cc66ef/docs/assets/pane-table.png","https://raw.githubusercontent.com/vgenev/ros2-console/6075de670b65985dc1f966c2f3ceebad97cc66ef/docs/assets/pane-publish.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ros2-console.webp"},{"name":"shipwrit","title":"Shipwrit","summary":"Outcome-based release verification for Hermes: detect false-green deployments with bounded user journeys and redacted evidence receipts.","disclosure":"sends the HTTP requests in the project's release-witness.json (GET by default; POST/PUT/PATCH/DELETE steps when writes are allowed) to the hosts that file lists, which may include localhost or LAN addresses; writes receipts and release state under `.release-witness/` in the working directory, and its pre_verify hook can ask the agent to keep working when a detected deploy command has no passing receipt.","category":"automation","platforms":["linux","macos","windows"],"maintainer":"ShalyX","author":"ShalyX","version":"0.3.2","requires_hermes":"","repo":"https://github.com/ShalyX/shipwrit-hermes","docs":"https://github.com/ShalyX/shipwrit-hermes#readme","tools":["release_witness_check"],"hooks":["post_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"HTTP/JSON contracts only; browser-based and visual journeys are not supported.; The pre_verify continuation is advisory, only runs in coding turns after file edits, and does not block deployment infrastructure.","state":"merged","pr":152656,"prs":[{"n":152656,"state":"merged","created":"2026-11-10T13:31:03Z"}],"created":"2026-11-10T13:31:03Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"workroom","title":"Workroom","summary":"Gives the agent a room to work on Word, PowerPoint and Excel files while you stay in charge. Figures are linked to their source cells and kept in step when a source changes; the agent can prepare a release but has no tool to approve one; figures in its text are marked supported, calculated or not verified from what it read; a reply that claims a file that does not exist gets one honest line. Desktop panels: Needs you, Made (list or gallery), Room, Rules.","disclosure":"reads and writes only inside the folders the user registers and in the plugin data directory; no network calls, no telemetry, no self-updater, no native binary. To be able to put protected files back, the safety net reads, in memory, the bytes of every managed or protected file of a registered project (including .env and key files) before a shell, code or editing tool runs; they are never shown to the agent and are kept in plugin data only if the agent changed the file (the agent's version). Hooks (pre_tool_call, post_tool_call, transform_tool_result, transform_llm_output, pre_llm_call, pre_verify, subagent_start, subagent_stop) can block a tool call, append one line to a tool result or reply, and, after a shell, code or other editing tool runs, put back any Office or protected file of a registered project that changed (the agent's version is kept in plugin data); they never approve or auto-approve. To check the figures in the agent's text it stores, in a local SQLite file in the plugin data directory, the text of tool results the agent read this session (capped at 20 MB per session) and the owner's chat messages; nothing is sent anywhere. Subprocesses: a local Python child to build files; the Windows icacls tool once for the signing key file; PowerShell only on request on Windows with PowerPoint to draw slide pictures, or LibreOffice (soffice) for the same on other systems when it is installed. Starts no scheduled job itself (a user-created Hermes cron job may run its watch script, which can prepare a release but never approves one).","category":"tools","platforms":["windows","macos","linux"],"maintainer":"Pratiikpy","author":"Pratiikpy","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/Pratiikpy/workroom-for-hermes","docs":"https://github.com/Pratiikpy/workroom-for-hermes#readme","tools":["workroom_status","workroom_add_project","workroom_discover","workroom_plan","workroom_explain_figure","workroom_selftest","workroom_stage_release","workroom_roll_forward","workroom_find_calculations","workroom_create","workroom_list_sources","workroom_instructions","workroom_propose_instruction","workroom_list_pages","workroom_read_page","workroom_edit_page","workroom_export_page","workroom_where_used","workroom_what_if","workroom_release_record","workroom_recipe_status","workroom_recipe_propose","workroom_room_read","workroom_room_add_source","workroom_room_remember","workroom_deliverable_register","workroom_attention","workroom_find_text","workroom_edit_text","workroom_verify","workroom_layout_check"],"hooks":["pre_tool_call","pre_llm_call","post_tool_call","transform_tool_result","pre_verify","transform_llm_output","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"Verified on Windows with the real Hermes Desktop and Office. The test suite passes on Windows, Linux (fresh clone) and in macOS CI; the Hermes Desktop screens were run on Windows only.; The safety net reverts files that other plugins' tools wrote inside registered projects, and appends one line to those tool results; this is by design and listed in docs/LIMITS.md.; A plugin that bundles its own copy of the PowerPoint or Word library (paper-pptx, paper-docx) cannot share an environment with python-pptx and python-docx; Workroom then cannot build new decks or reports, while reading, editing and releasing existing files keep working.; Real-model checks (bypass, approve, injection, folder tidy) were run with one model, 3 to 5 runs per case, so they are counts, not rates.; On a very large report the first import asks many questions (3,841 on one blind run, about 88% of them real).","state":"open","pr":152651,"prs":[{"n":152651,"state":"open","created":"2026-11-10T13:26:06Z"}],"created":"2026-11-10T13:26:06Z","late":false,"said":false,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/screenshots/00-hero-change-map.png","https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/screenshots/pane-needs-you.png","https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/screenshots/pane-made-gallery.png","https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/screenshots/pane-figure-proof.png","https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/screenshots/05-before-and-after.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/workroom.webp"},{"name":"mcp-pin","title":"MCP Pin","summary":"Hold MCP tools whose definition changed since you approved them. Fingerprints every MCP tool's description and parameter schema as Hermes registered it; if a server later changes a tool (a rug pull, instructions hidden in a description, a new parameter) or adds a tool to a pinned server, the new definition is hidden from the model (tool list, tool_search catalog, tool_describe) and calls to that tool are refused until the owner reviews the full change with /mcppin diff and approves exactly that definition with the code it shows. Works with tool_search on or off and with every provider wire format (not the Codex app-server runtime, where Codex calls MCP servers directly). Fails closed: an unreadable or deleted pin file withholds MCP definitions and refuses MCP calls.","disclosure":"llm_request middleware rewrites only held MCP tool definitions in the outgoing request (their tool entry or tool_search catalog line); tool_execution middleware rewrites only tool_search / tool_describe / tool_call results that carry a held definition; pre_tool_call may block a call to a held MCP tool (never modifies arguments, never approves, never touches the approval system); registers /mcppin; reads only its own settings, MCP tool definitions from the tool registry, the per-message session identity, and Hermes's allow_admin_from / group_allow_admin_from lists through the gateway config loader when an approval is attempted from a chat; writes pins.json and a transient lock file (MCP tool names, descriptions, parameter schemas, timestamps, approver) in its plugin data directory, and its own store_id setting (a random id that lets a deleted pin file be detected); no network calls, no shell commands, no background processes, no telemetry, no credential reads, no self-update. Not a sandbox: an approved tool keeps its normal reach.","category":"tools","platforms":[],"maintainer":"yuzuru99","author":"yuzuru99","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/yuzuru99/hermes-mcp-pin","docs":"https://github.com/yuzuru99/hermes-mcp-pin#readme","tools":[],"hooks":["pre_tool_call"],"middleware":["llm_request","tool_execution"],"env":[],"known_issues":"","state":"merged","pr":152646,"prs":[{"n":152646,"state":"merged","created":"2026-11-10T13:19:32Z"}],"created":"2026-11-10T13:19:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-market","title":"Hermes Market","summary":"Discover skill APIs across sellers, publish tested services, and buy results with human-approved x402 payments.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"snuff12","author":"snuff12","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/snuff12/hermes-market","docs":"https://github.com/snuff12/hermes-market-server/blob/bf4e0a45eac9dc645eb472ebbac36daa5403fd84/docs/public-hosting.md","tools":["service_search","service_draft","service_inspect","service_quote","service_purchase","service_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"Seller execution and the local browser approval gateway are separately operated services.; The public demo uses a fixed Cloudflare Tunnel and depends on its host computer staying online.; Supports local simulation and Base Sepolia test USDC only; mainnet is disabled.; The Desktop SDK page opens public Browse and local owner and purchase workspaces in the browser.","state":"open","pr":152641,"prs":[{"n":152641,"state":"open","created":"2026-11-10T13:12:25Z"}],"created":"2026-11-10T13:12:25Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/snuff12/hermes-market/2a8588bba7df0b3482e52e17692be1a92a2abd0e/docs/screenshots/directory.png","https://raw.githubusercontent.com/snuff12/hermes-market/2a8588bba7df0b3482e52e17692be1a92a2abd0e/docs/screenshots/analytics.png","https://raw.githubusercontent.com/snuff12/hermes-market/2a8588bba7df0b3482e52e17692be1a92a2abd0e/docs/screenshots/purchases.png","https://raw.githubusercontent.com/snuff12/hermes-market/2a8588bba7df0b3482e52e17692be1a92a2abd0e/docs/screenshots/native-tools.png"],"videos":["https://github.com/snuff12/hermes-market/releases/download/v0.1.0/hermes-market-demo.mp4"],"x":["https://x.com/0xeddiekim/status/2120540588093366511"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-market.webp"},{"name":"hephaestus","title":"Hephaestus","summary":"Ask for a plugin and your own agent writes it, checked by the official validator and doctor; you approve each check, because it runs the draft's code. It installs disabled; only you enable it.","disclosure":"forge_check imports each draft's Python and calls its register() on this machine, outside the sandbox, after you approve that exact draft (no prompt if approvals are off or YOLO is on); runs the hermes CLI (fixed argument list, no shell, minimal environment) to validate, doctor, enable, disable and remove plugins; writes forged plugins under HERMES_HOME/plugins and drafts and snapshots in its data folder; a pre_tool_call guard blocks the agent from enabling plugins. No network, no telemetry, no LLM calls.","category":"tools","platforms":[],"maintainer":"madebylegion","author":"madebylegion","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/madebylegion/hermes-plugin-hephaestus","docs":"https://github.com/madebylegion/hermes-plugin-hephaestus#readme","tools":["forge_new","forge_check","forge_install"],"hooks":["pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152640,"prs":[{"n":152640,"state":"open","created":"2026-11-10T13:11:21Z"}],"created":"2026-11-10T13:11:21Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/madebylegion/hermes-plugin-hephaestus/9805692032681b1376496ce89a404c1ab1edce07/docs/social-preview.png","https://raw.githubusercontent.com/madebylegion/hermes-plugin-hephaestus/9805692032681b1376496ce89a404c1ab1edce07/docs/screenshots/consent-card.png","https://raw.githubusercontent.com/madebylegion/hermes-plugin-hephaestus/9805692032681b1376496ce89a404c1ab1edce07/docs/screenshots/blocked.png","https://raw.githubusercontent.com/madebylegion/hermes-plugin-hephaestus/9805692032681b1376496ce89a404c1ab1edce07/docs/screenshots/upgrade-adds.png"],"videos":[],"x":["https://x.com/madebylegion/status/2120141433088938352"],"youtube":[],"thumb":"/hackathon/thumbs/hephaestus.webp"},{"name":"1toolring","title":"1ToolRing","summary":"One API key and one prepaid balance for thousands of pay-per-call tools from third-party providers, through 1ToolRing's hosted MCP server (Streamable HTTP at https://mcp.1toolring.com/mcp, API key auth): search results and SEO data, maps and places, shopping and e-commerce prices, market data, web pages, images, video, voice and more. Four MCP tools: discover_tools, inspect_tool and get_tool_run (free, read-only) and run_tool (paid). Bundles the 1toolring skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code: every tool call, with its arguments, goes to mcp.1toolring.com, and run_tool spends the key owner's prepaid 1ToolRing balance at the price inspect_tool shows (failed runs are not charged; no subscription). The package marks the server untrusted, so Hermes asks before every run_tool call. The key is read from ONETOOLRING_API_KEY in the profile .env (or the plugin's settings form) and sent as a bearer header. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"khmuhtadin","author":"khmuhtadin","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/khmuhtadin/1toolring-mcp","docs":"https://github.com/khmuhtadin/1toolring-mcp#set-up","tools":[],"hooks":[],"middleware":[],"env":["ONETOOLRING_API_KEY"],"known_issues":"","state":"merged","pr":152634,"prs":[{"n":152634,"state":"merged","created":"2026-11-10T12:54:50Z"}],"created":"2026-11-10T12:54:50Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/khmuhtadin/1toolring-mcp/d4df0c005dd6cfd85f85f26872ffc9c82a97ec76/assets/logo-400.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/1toolring.webp"},{"name":"desktop-inbox","title":"Inbox","summary":"An Inbox pane for Hermes Desktop. Cron jobs, scripts and webhooks file items (Read, Answer, Decide, Do, or your own types) as Hermes-started Desktop conversations, each with one clear ask. The pane is a keyboard-driven triage queue (snooze, undo, OS notifications) that also lists what waits on you elsewhere: chats with a pending question, blocked or triage kanban cards, and failing cron jobs (one click files a Fix item). Items close themselves when the kanban card they started is done.","disclosure":"reads state.db, cron/jobs.json, cron/output and every kanban.db read-only; changes sessions only through public SessionDB methods (title, folder, archive state, hiding an item's opening message, its first Hermes message); writes its own files in the inbox folder; runs `hermes chat` once per new item (one model turn), `hermes kanban archive` when you archive a card from the pane, and `gh api user` once when the webhook needs your GitHub login; the optional webhook listener (off by default) binds 127.0.0.1 only, refuses posts until its token or GitHub secret is set, and refuses browser (Origin) requests; no network calls of its own, no telemetry, no stored credentials.","category":"desktop","platforms":[],"maintainer":"Nj07r","author":"Nj07r","version":"1.0.0","requires_hermes":">=0.23.1","repo":"https://github.com/Nj07r/hermes-desktop-inbox","docs":"https://github.com/Nj07r/hermes-desktop-inbox","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152633,"prs":[{"n":152633,"state":"open","created":"2026-11-10T12:51:39Z"}],"created":"2026-11-10T12:51:39Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Nj07r/hermes-desktop-inbox/ffae81ff54784ec45b12ed185095d348aa7d1f02/docs/pane.png"],"videos":["https://raw.githubusercontent.com/Nj07r/hermes-desktop-inbox/main/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/desktop-inbox.webp"},{"name":"cardlake","title":"Cardlake","summary":"Cardlake keeps what you mean to get back to (reminders, articles and videos to learn from, links, work) in one daily feed. This plugin puts that feed in your Telegram chat with Hermes: /cardlake feed and today show your cards with Done, Tomorrow, Next week and Undo buttons and a pinned Today checklist, a morning message sends what's due, and you can send Hermes a link to save it. Free account at cardlake.app, or host your own.","disclosure":"talks to Cardlake only through Hermes' \"cardlake\" MCP connection (cardlake.app or a self-hosted copy); sends and pins card messages in your private Telegram chat, and adds /cardlake to the bot's command menu unless you set that menu up yourself, through the bot Hermes already runs; /cardlake save sends your text (with passwords, keys and tokens removed in code) to your own Hermes model; stores only the id of the pinned Today message in plugin state. No shell commands, credentials, background processes or telemetry; the morning job exists only if you create it from the blueprint, and it cannot change cards.","category":"tools","platforms":[],"maintainer":"cardleforall","author":"cardleforall","version":"0.7.9","requires_hermes":">=0.22.5","repo":"https://github.com/cardleforall/cardlake-hermes","docs":"https://github.com/cardleforall/cardlake-hermes","tools":["cardlake_today","cardlake_show_cards"],"hooks":["pre_tool_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152631,"prs":[{"n":152631,"state":"merged","created":"2026-11-10T12:50:22Z"}],"created":"2026-11-10T12:50:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/cardleforall/cardlake-hermes/c49c43b8251ae8620a8f24affb3368560b9cc99f/docs/banner.png","https://raw.githubusercontent.com/cardleforall/cardlake-hermes/c49c43b8251ae8620a8f24affb3368560b9cc99f/docs/your-cards-in-telegram.gif","https://raw.githubusercontent.com/cardleforall/cardlake-hermes/c49c43b8251ae8620a8f24affb3368560b9cc99f/docs/today-in-telegram.jpg","https://raw.githubusercontent.com/cardleforall/cardlake-hermes/c49c43b8251ae8620a8f24affb3368560b9cc99f/docs/today-in-telegram-small.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cardlake.webp"},{"name":"calendar-agenda","title":"Google Calendar Agenda","summary":"Agent tools plus dashboard API routes for today's Google Calendar agenda — records what actually happened to each planned event (done / interrupted / cancelled / skipped, slot kept or released) in private extended properties, never touching titles or Google event status.","disclosure":"reads today's events from your primary Google Calendar and writes private extended properties to them through your own Google OAuth client (signed in with `hermes auth add calendar-agenda:google`); when you release a slot it shortens the end time of events you own that have no guests, keeping the original end so it can be restored; its dashboard routes can change event state.","category":"automation","platforms":[],"maintainer":"sanpeita","author":"sanpeita","version":"0.1.1","requires_hermes":">=0.22.3","repo":"https://github.com/sanpeita/hermes-calendar-agenda","docs":null,"tools":["calendar_agenda_list_today","calendar_agenda_set_state"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs your own Google Cloud OAuth client: set CALENDAR_AGENDA_GOOGLE_CLIENT_ID and CALENDAR_AGENDA_GOOGLE_CLIENT_SECRET, then run `hermes auth add calendar-agenda:google` in your own terminal.; Timezone is currently fixed to Asia/Tokyo (a constant in calendar_agenda_service.py).","state":"open","pr":152625,"prs":[{"n":152625,"state":"open","created":"2026-11-10T12:37:25Z"}],"created":"2026-11-10T12:37:25Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":["https://x.com/unoksanpt/status/2120480755977728262"],"youtube":[],"thumb":null},{"name":"proofly","title":"Proofly","summary":"Checks an agent's claimed Base mainnet transfers against chain evidence: tx hash, receipt status, recipient, token and exact raw amount, over read-only JSON-RPC. It annotates results from the payment tools you list in its payment_tools setting and corrects unsupported \"payment sent\" claims in the final reply; adds the read-only proofly_verify_tx tool and the /proofly command.","disclosure":"sends read-only JSON-RPC requests (tx hashes) only to the configured Base RPC endpoint (default https://mainnet.base.org), whose operator sees the hashes and your IP; replaces the results of the payment tools you list in payment_tools with its verdict and rewrites unsupported payment claims in the final reply; stores a verdict ledger (tx hash, verdict, expected and observed transfer fields, HMACs of session and turn ids, newest 300 rows) in plugin-data/proofly; registers transform_llm_output with hold_stream, so every reply in a profile that loads it is shown only after the check; no keys, signing, wallets, .env reads, shell, background processes, self-update or telemetry.","category":"tools","platforms":[],"maintainer":"0xileri","author":"0xileri","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/0xileri/Proofly","docs":"https://github.com/0xileri/Proofly/blob/9fde65f5e8f5f5ab3ad6a5dc6a9848f119deb444/README.md","tools":["proofly_verify_tx"],"hooks":["post_tool_call","transform_tool_result","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Holds every reply in a profile that loads it until the check has run (hold_stream). Tool progress and reasoning are not rewritten; turn them off (display.tool_progress, display.show_reasoning) for strict use.; Checks only Base mainnet and only the tools named in payment_tools plus proofly_verify_tx. Without exact structured transfer details it reports execution only, never a verified payment.","state":"merged","pr":152619,"prs":[{"n":152619,"state":"merged","created":"2026-11-10T12:29:17Z"}],"created":"2026-11-10T12:29:17Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"life-manager","title":"Life Manager","summary":"Records commitments a person states, keeps habit streaks, and injects the board before each turn. A daily Automation Blueprint runs an unattended check-in.","disclosure":"no network, no credentials, no shell. Stores commitment text, due dates, streaks, nudged session ids, and the last check-in id in the active Hermes profile plugin state only.","category":"automation","platforms":[],"maintainer":"Daisuke134","author":"Daisuke134","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Daisuke134/life-manager","docs":"https://github.com/Daisuke134/life-manager/tree/main/hermes-plugin","tools":["life_manager_status","life_manager_commit","life_manager_complete","life_manager_drop","life_manager_defer","life_manager_checkin"],"hooks":["pre_llm_call"],"middleware":["tool_request"],"env":[],"known_issues":"","state":"merged","pr":152618,"prs":[{"n":152618,"state":"merged","created":"2026-11-10T12:28:33Z"}],"created":"2026-11-10T12:28:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dial-a-hermes","title":"Dial-a-Hermes (USSD)","summary":"Talk to Hermes from any phone with no data: a USSD gateway platform (Africa's Talking-compatible callback) with 182-char paged replies, a 'thinking, press 1 to check' flow for long turns, keypad exec approvals (1 Approve / 2 Deny, full command shown first, Hermes's own approval flow), clarify answers, optional SMS of the full reply, English/Nigerian Pidgin menus and a local feature-phone simulator. Owner-only phone allowlist, fails closed.","disclosure":"opens a local HTTP listener (default 127.0.0.1:8095) for POST /ussd/<secret-token> and GET /health, plus a loopback-only simulator page when USSD_SIMULATOR=true; Africa's Talking does not sign callbacks, so the secret token in the URL is the boundary; outbound calls only when USSD_SMS_MODE=africastalking, to api.africastalking.com / api.sandbox.africastalking.com (reply text and the owner's number); stores per-phone language choice in the plugin data folder; no telemetry.","category":"platform","platforms":[],"maintainer":"ebohdarlington123-cmyk","author":"ebohdarlington123-cmyk","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/ebohdarlington123-cmyk/dial-a-hermes","docs":"https://github.com/ebohdarlington123-cmyk/dial-a-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["USSD_ALLOWED_USERS","USSD_CALLBACK_TOKEN"],"known_issues":"Needs a public HTTPS URL (tunnel or reverse proxy) and an Africa's Talking account (free sandbox) for real phones; the bundled simulator works locally without either.; USSD gives each callback about 10 seconds and a session about 3 minutes; longer agent turns continue in the background and are read with \"1 Check again\" or by dialing back.","state":"merged","pr":152616,"prs":[{"n":152616,"state":"merged","created":"2026-11-10T12:21:26Z"}],"created":"2026-11-10T12:21:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/eboh_darli29619/status/2120176195241197824"],"youtube":[],"thumb":null},{"name":"boardloop","title":"BoardLoop","summary":"Hermes writes ESP32 and Arduino code, compiles it with arduino-cli, tests it in the Wokwi simulator (sets sensor values, presses buttons, checks pins, serial output and OLED screenshots), fixes it within bounded attempts, and flashes real boards with approval.","disclosure":"runs the user-installed arduino-cli and wokwi-cli as subprocesses (no shell, with timeouts); wokwi-cli sends compiled firmware and the circuit diagram to Wokwi's cloud using the user's Wokwi CI token (stored as a Hermes secret) and uses their Wokwi simulation minutes; arduino-cli may download cores and libraries on request; flashing a board and writing to a serial port always go through Hermes's approval prompt; projects, run folders, screenshots and history are stored in the plugin data directory; no telemetry.","category":"tools","platforms":[],"maintainer":"LSUDOKO","author":"LSUDOKO","version":"0.2.4","requires_hermes":">=0.23.0","repo":"https://github.com/LSUDOKO/BoardLoop","docs":"https://github.com/LSUDOKO/BoardLoop/blob/950586cd231d8f3d0905fdc53eecf8bba1319c3e/README.md","tools":["mcu_doctor","mcu_project_new","mcu_project_info","mcu_libraries","mcu_compile","mcu_simulate","mcu_test","mcu_verify","mcu_ports","mcu_upload","mcu_serial_read","mcu_serial_write","mcu_wiring_check","mcu_export"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152613,"prs":[{"n":152613,"state":"open","created":"2026-11-10T11:59:14Z"}],"created":"2026-11-10T11:59:14Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/banner.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/film/5-verified.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/film/3-test-fail.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/film/6-approval.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/demo.gif","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/wokwi-live.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/film/video-thumbnail.png","https://raw.githubusercontent.com/LSUDOKO/BoardLoop/950586cd231d8f3d0905fdc53eecf8bba1319c3e/assets/film/1-compile-error.png"],"videos":[],"x":["https://x.com/_arpit1/status/2120135607280439781"],"youtube":["rmpxsMKtOE4"],"thumb":"/hackathon/thumbs/boardloop.webp"},{"name":"sampler","title":"Sampler","summary":"Set temperature and top_p for your Hermes agent (hermes-agent#17565): a default, first-match rules by platform, model or provider, and a per-session override with /sampler. Works through llm_request middleware on OpenAI- compatible, Anthropic and Bedrock Converse requests. Models Hermes itself sends without a temperature, such as reasoning models, are never changed. No model calls, network, files or dependencies.","disclosure":"","category":"models","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/salch-cred/sampler","docs":"https://github.com/salch-cred/sampler","tools":[],"hooks":[],"middleware":["llm_request"],"env":[],"known_issues":"","state":"merged","pr":152612,"prs":[{"n":152612,"state":"merged","created":"2026-11-10T11:59:11Z"}],"created":"2026-11-10T11:59:11Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"secret-vault","title":"secret-vault","summary":"Keeps API keys and other secrets out of the model's context on gateway chats (Telegram, Discord, …): detected values become {{SECRET:name}} placeholders, are resolved only at tool time, and are redacted from tool/model output. Per-profile vault at <hermes_home>/secret-vault/vault.bin (Windows DPAPI CurrentUser; filekey-dev elsewhere for tests only). /secret set|list|rm|show-placeholder. Limits — CLI, TUI and Desktop input is not scrubbed (no rewrite hook in Hermes v0.23); detection is heuristic and can miss or over-flag; original platform messages (e.g. Telegram) are not deleted and must be removed by you.","disclosure":"swaps `{{SECRET:name}}` placeholders for real values in the arguments of any tool call (before Hermes' approval prompt, so a prompt may show the value); stores values at <hermes_home>/secret-vault/vault.bin, encrypted with Windows DPAPI on Windows but with a key file stored beside it on Linux and macOS; secrets typed in chat stay in the platform's own message history until you delete them.","category":"tools","platforms":[],"maintainer":"jimmy77733","author":"jimmy77733","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/jimmy77733/secret-vault","docs":null,"tools":[],"hooks":["pre_gateway_dispatch","post_gateway_admission","pre_tool_call","transform_tool_result","transform_terminal_output","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152605,"prs":[{"n":152605,"state":"open","created":"2026-11-10T11:49:34Z"}],"created":"2026-11-10T11:49:34Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/jimmy77733/secret-vault/71fc4dad1fac13e9f98793af7c87bbdde1bce1dd/assets/cover.png","https://raw.githubusercontent.com/jimmy77733/secret-vault/71fc4dad1fac13e9f98793af7c87bbdde1bce1dd/assets/screenshots/01-telegram-test.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/secret-vault.webp"},{"name":"hermes-room","title":"hermes-room","summary":"Hermes Room washes untrusted web, email, file and tool output before Hermes reads it: deterministically, with model help for semantic attacks, and with receipts you can audit. Layer 1 (always, local, stdlib-only) strips zero-width/bidi/control characters, ANSI escapes and hidden-HTML payloads, and masks leaked secrets (AWS/GitHub/GitLab/Slack/OpenAI/Google keys, JWTs, private-key blocks, password=/secret= assignments). Layer 2 runs only when Layer 1 flags something: a host-model reviewer via ctx.llm.complete_structured, your active Hermes model - no provider/model override, no extra API key - 20s timeout, 800 tokens, fail-open to Layer 1. Every change yields a local JSONL Trust Receipt (SHA-256, rule IDs, counts, reviewer verdict, never raw content): trust_receipt shows what changed, trust_report exports Markdown.","disclosure":"reads only tool-output text; no network beyond the user's own provider call via ctx.llm; no shell, no background processes, no telemetry; no credentials required (requires_env is empty); writes solely to <HERMES_HOME>/hermes-room/receipts.jsonl (hashes/counts only, local); fails open, never blocks or breaks the tool loop. Disclosure — rewrites the result of every tool (web, email, MCP, read_file, terminal, skills) before the model sees it: it strips hidden HTML/control characters, deletes phrases that look like injected instructions, masks secret-looking values and adds an `[UNTRUSTED ...]` header, so files read through it may differ from what is on disk; when a rule fires it sends up to 8,000 characters of the unmasked output to your active Hermes model for review (an extra model call, up to 20 s) and may replace the result with the reviewer's re-washed text; receipts in `<HERMES_HOME>/hermes-room/receipts.jsonl` hold hashes, rule IDs and counts plus the reviewer's verdict, quoted snippets and up to 2,000 characters of its reply; no other network, shell, background work or telemetry.","category":"tools","platforms":[],"maintainer":"adenijiridwan43","author":"adenijiridwan43","version":"0.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/adenijiridwan43/hermes-room","docs":"https://github.com/adenijiridwan43/hermes-room#readme","tools":["trust_receipt","trust_report"],"hooks":["transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152604,"prs":[{"n":152604,"state":"merged","created":"2026-11-10T11:48:18Z"}],"created":"2026-11-10T11:48:18Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"coach","title":"Coach","summary":"Four modes: Consult on demand, Active per-turn review, Review before claiming done, and Decide for forks with Jev.","disclosure":"once you configure a coach model, Coach sends turn transcripts, tool-call summaries and up to 128,000 characters of `git` diff from your working repo to that model through Hermes' model routing; the optional Decide mode (off by default) sends the agent's question, options and state to `openrouter.ai` (Typesafe's Jev model, your `OPENROUTER_API_KEY`) or `api.typesafe.ai` (your `TYPESAFE_API_KEY`); it runs read-only `git` in your session directory, keeps a background review thread, can hold a \"done\" reply once for review, and `/coach grant` writes its own model-override permission into `config.yaml`.","category":"models","platforms":[],"maintainer":"Printaga Publishing LLC","author":"Printaga","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/Printaga/Hermes-Coach","docs":"https://github.com/Printaga/Hermes-Coach#readme","tools":["coach_ask","coach_decide"],"hooks":["post_llm_call","pre_llm_call","pre_verify","post_tool_call","subagent_start","subagent_stop","on_session_end"],"middleware":[],"env":["OPENROUTER_API_KEY","TYPESAFE_API_KEY"],"known_issues":"","state":"merged","pr":152596,"prs":[{"n":152596,"state":"merged","created":"2026-11-10T11:27:59Z"}],"created":"2026-11-10T11:27:59Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Printaga/Hermes-Coach/fb3e1d931dc87e441ad425d2830ea783e901bc85/docs/media/screens/01-status.png","https://raw.githubusercontent.com/Printaga/Hermes-Coach/fb3e1d931dc87e441ad425d2830ea783e901bc85/docs/media/screens/02-listing.png","https://raw.githubusercontent.com/Printaga/Hermes-Coach/fb3e1d931dc87e441ad425d2830ea783e901bc85/docs/media/screens/03-modes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/coach.webp"},{"name":"verifiable-math-kernel","title":"verifiable-math-kernel","summary":"Deterministic symbolic computation, integer factorization with Baillie-PSW probable-prime testing, elliptic curve invariants, and formal Lean 4 proof auditing for Hermes Agent. When Lean 4 is installed on PATH and enable_lean_cli is enabled, lean4_proof_audit can verify proofs via isolated execution.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"pCwOrM","author":"pCwOrM","version":"1.0.3","requires_hermes":">=0.21.0","repo":"https://github.com/pCwOrM/hermes-verifiable-math","docs":"https://github.com/pCwOrM/hermes-verifiable-math#readme","tools":["verify_math_claim","certified_factorization","elliptic_curve_analyzer","lean4_proof_audit"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152780,"prs":[{"n":152780,"state":"open","created":"2026-11-10T16:45:09Z"},{"n":152595,"state":"closed","created":"2026-11-10T11:25:07Z"}],"created":"2026-11-10T11:25:07Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/pCwOrM/status/2120188259724894400"],"youtube":[],"thumb":null},{"name":"pmp-handoff-bridge","title":"PMP Handoff Bridge","summary":"Verify selected PMP handoff files, detect workspace drift, and persist reception receipts. Reads/writes the explicitly authorized workspace; no network or credentials.","disclosure":"","category":"memory","platforms":["windows","linux"],"maintainer":"Mad-Max8063","author":"Mad-Max8063","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Mad-Max8063/pmp-handoff-bridge","docs":null,"tools":["pmp_inspect","pmp_prepare_handoff","pmp_verify_handoff","pmp_receive_handoff"],"hooks":[],"middleware":[],"env":["PMP_BRIDGE_WORKSPACE"],"known_issues":"","state":"merged","pr":152592,"prs":[{"n":152592,"state":"closed","created":"2026-11-10T11:19:34Z"}],"created":"2026-11-10T11:19:34Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/MaxDevsLabs/status/2120122902318125209"],"youtube":[],"thumb":null},{"name":"blind-accessibility-reader","title":"Blind Accessibility Video and Image Reader","summary":"Describes the images and videos on any website for blind and low vision people, through their screen reader or an AI voice. A bundled Chrome extension outlines the image or video you're on, and Hermes sends it to a vision model through OpenRouter. Auto mode describes as you scroll and narrates videos as they play; manual mode waits for a shortcut. A daily limit and a per-video limit keep the cost in check.","disclosure":"runs a local server on 127.0.0.1:47823 that answers only the bundled extension; the bundled Chrome extension has access to all sites and fetches page images without cookies; sends downscaled images and video frames to the vision model configured for its auxiliary task (OpenRouter by default) using the key held by Hermes; fetches OpenRouter's public price list with no key.","category":"web","platforms":[],"maintainer":"ella0333","author":"ella0333","version":"0.2.1","requires_hermes":">=0.22.7","repo":"https://github.com/ella0333/hermes-blind-accessibility-reader","docs":"https://github.com/ella0333/hermes-blind-accessibility-reader#readme","tools":["describe_view","reader_settings"],"hooks":["on_session_start","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Needs Google Chrome with the bundled extension loaded unpacked; run /describe extension to see where it was saved.; Needs an OpenRouter key added to Hermes.; Hermes must stay open while you browse.; On YouTube playlists, the page may need a refresh to pick up the next video.; Streaming services protected by DRM return black frames and can't be described.","state":"open","pr":152591,"prs":[{"n":152591,"state":"open","created":"2026-11-10T11:18:08Z"}],"created":"2026-11-10T11:18:08Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ask-ledger","title":"Ask Ledger","summary":"Keeps a durable ledger of what you asked and promised: each message becomes an ask (A1, A2 ...) with a state (open, in progress, needs you, answered, closed), and todos (T1, T2 ...) that you add, or that the agent adds when you commit to something (marked added by agent; at most 2 a turn and 10 a day; can be turned off), with a category and due date. Snooze, done and drop work by command (/snooze, /done, /drop) or in plain words; the agent can only suggest them, and a words action must match your current message. Unresolved items are reminded to the agent every turn across restarts and compaction, and /asks, /todos plus a static no-JavaScript page show where everything stands.","disclosure":"stores your messages and todos (trimmed, common secret shapes redacted) in plaintext under HERMES_HOME/plugin-data/ask-ledger/, append-only and never pruned, with local counts of how you snooze and close; injects a short block of your unresolved asks and up to 3 todos into each turn's user message, so they reach your model provider; appends up to 3 plain reminder lines and a hint to the assistant's reply (transform_llm_output); keeps one plain Open todos message per chat, edited in place, only in conversations it is already part of (setting board, on by default); in group, channel and thread chats it shows only counts, no todo text, unless the chat is listed in trusted_chats; an optional ntfy push (off by default, https only) sends only a count and the page link; no shell commands, no reads outside its data folder, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"bhaskarduvvuri","author":"bhaskarduvvuri","version":"0.2.0","requires_hermes":">=0.22.6","repo":"https://github.com/bhaskarduvvuri/hermes-ask-ledger","docs":"https://github.com/bhaskarduvvuri/hermes-ask-ledger#readme","tools":["ask_update","ask_list","todo_add","todo_update","todo_suggest","todo_items"],"hooks":["pre_llm_call","post_gateway_admission","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152589,"prs":[{"n":152589,"state":"merged","created":"2026-11-10T11:08:08Z"}],"created":"2026-11-10T11:08:08Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/c839d0b7-215d-44b4-b378-36849440172c","https://github.com/user-attachments/assets/a08b462f-2a76-4944-b1f6-54ec6f13e261"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ask-ledger.webp"},{"name":"othigai","title":"othigai","summary":"A fire drill for your Hermes agent. /drill starts test agents on your machine with your model and your own SOUL.md, hands them an ordinary errand, and plants a trap in the email they read. Everything they can reach is fake: a fresh fake key, a throwaway folder in the system temp folder, and a listener on 127.0.0.1 standing in for the attacker. A default-no pre_tool_call gate checks every tool call a test agent makes, and you get a safety score with a 95% range, a step by step replay and fixes that the next drill measures. Nothing runs until you read a notice and type /drill yes.","disclosure":"test agents make model calls on the model you name or your default, which costs money on a paid model (capped per agent and per drill, with a daily limit); before a drill it runs a harmless `rm -r` of its own temp folder plus curl and /dev/tcp probes to its listener through your session's terminal to check that the approval prompt works, so an approval prompt may appear and the right answer is no; test agents run a short list of commands inside a throwaway folder in the system temp folder; a local listener runs on a random 127.0.0.1 port for the length of a drill; it reads your SOUL.md and passes it to the test agents, and reads which memory provider is configured; test agent sessions stay in Hermes's normal history, where memory or telemetry plugins may see the trap text. No third-party network calls, no telemetry, no stored credentials.","category":"tools","platforms":[],"maintainer":"ramakrishnanhulk20","author":"ramakrishnanhulk20","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/ramakrishnanhulk20/othigai","docs":"https://github.com/ramakrishnanhulk20/othigai#readme","tools":["othigai_run"],"hooks":["pre_tool_call","subagent_start","subagent_stop","pre_api_request","post_approval_response","on_session_end","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152585,"prs":[{"n":152585,"state":"merged","created":"2026-11-10T11:03:34Z"}],"created":"2026-11-10T11:03:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"clotho","title":"Clotho","summary":"Spin every future of a Hermes task before any of it happens. Every side effect is captured in a ledger instead of performed, you review one report, untick what you don't want, and Apply replays exactly the effects you kept with no model calls. `hermes clotho fork` runs the same task as several timelines under different models, compares their effect ledgers and applies the one you keep; `cron` rehearses a scheduled job; `demo` replays a recorded real fork with no API key.","disclosure":"during a rehearsal, read-only tools run for real (file reads and search, skills, session search, web_search, clarify, todo, delegate_task in `hermes clotho run`), so a web search reaches its search provider and may be metered; page fetches (web_extract, vision_analyze and similar) are held. File writes go to an APFS copy-on-write clone of your workspace under <HERMES_HOME>/plugin-data/clotho/. Shell commands and execute_code run inside that clone under macOS sandbox-exec with no network and no writes outside it; on Linux, or without sandbox-exec, they are captured without a preview. Messages, web requests, MCP and other plugins' tools, cron changes and memory writes are captured, never run; the agent is told the reply is unknown and carries on, so its final text may say things happened that did not (the report is the truth), and captured calls still fire other plugins' post_tool_call hooks with status ok. Hermes' background memory and skill review can run during a rehearsal and spends model tokens; its writes are captured and cannot be applied. Reads outside the workspace are allowed except a deny-list of credential stores (the SSH, GnuPG, AWS, Kubernetes and Docker folders, the GitHub CLI login, .netrc, git credentials, the keychains, every .env file, and Hermes' own .env and auth.json); the ledger and report store command output and file contents in plain text under plugin-data, so they can hold whatever the rehearsed commands printed. Every effect is ticked by default, messages and web requests included, except tools Clotho does not know, held fetches and commands it cannot preview, which run only if you name them with --only. Apply runs the kept effects through Hermes' real tools in your terminal, where Hermes auto-approves its own dangerous-command prompt in non-interactive use, so your tick is the approval; a single plain curl or wget call is re-run as that exact command. Apply stops before any change when a file changed since the rehearsal, when a folder on an effect's path became a symlink, or when a ticked effect certainly depends on an unticked one (--force applies anyway), and it never re-sends what it already sent. Fail closed: a plugin error during a rehearsal blocks the tool call, and `hermes clotho run` refuses to start the model unless its tool middleware runs ahead of every other middleware, and refuses ACP providers and any Claude-subscription provider whose native tools it cannot verify are off. `/clotho on` in a live session keeps its state in memory only, so a gateway restart or failed plugin reload ends the rehearsal and later calls run for real. `fork` starts one `hermes clotho run` process per timeline at the same time, each making real model calls up to --max-calls. `demo` makes no model calls: it clones Hermes' runtime copy-on-write into a temp folder with no keys, runs a local sink, proxy trap and stand-in model endpoint on 127.0.0.1, and leaves that folder in place. No network calls of its own, no telemetry, no stored credentials. Each rehearsed command's process group is killed when it returns, and so is a child that started its own session; one that clears its environment and leaves the rehearsal's folders lives on, still inside the sandbox.","category":"tools","platforms":["macos"],"maintainer":"NicWeinbrecht","author":"NicWeinbrecht","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/NicWeinbrecht/hermes-clotho","docs":"https://github.com/NicWeinbrecht/hermes-clotho#readme","tools":[],"hooks":["pre_tool_call"],"middleware":["tool_execution","llm_execution"],"env":[],"known_issues":"","state":"open","pr":152582,"prs":[{"n":152582,"state":"open","created":"2026-11-10T10:58:03Z"}],"created":"2026-11-10T10:58:03Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"words-into-music","title":"words-into-music","summary":"Create original songs from an idea or your own lyrics, check generation progress and browse your private song library through the hosted Words into Music Streamable HTTP MCP server, plus a skill that walks the agent through preparing a brief, confirming the one-credit cost and polling the job. Portable Agent Plugins v1 package (plugin.json, mcp.json, skills/), no plugin code. Requires a Words into Music account and browser OAuth consent (add the server with --auth oauth, then hermes mcp login words-into-music); no API key or client secret is stored in the plugin.","disclosure":"hosted-only connector: song briefs, lyrics and titles you send go to mcp.wordsintomusic.com under your Words into Music OAuth sign-in; start_song spends one existing song credit and is declared as a costed tool, and the server is declared untrusted so Hermes asks before every write-capable call; the server also exposes create_checkout_link, which only creates a Stripe checkout link you open yourself to buy a plan or song pack and never charges a saved card.","category":"tools","platforms":[],"maintainer":"constantinginga","author":"constantinginga","version":"1.0.0","requires_hermes":"","repo":"https://github.com/constantinginga/words-into-music-mcp","docs":"https://github.com/constantinginga/words-into-music-mcp#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152581,"prs":[{"n":152581,"state":"merged","created":"2026-11-10T10:55:26Z"}],"created":"2026-11-10T10:55:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"penthera","title":"Penthera","summary":"Offline, rule-based security checks run through the terminal: a repo scan, dependency capabilities, a passive scan of a URL you own, and an audit of your AI agent config (skills, MCP servers, hooks, permissions). A skill only: no tools, hooks, middleware or MCP server. It runs the pinned penthera npm package with npx, which downloads that package on first use (Node.js 22 or later). Rules decide every finding; a model never does. No telemetry, no stored credentials, no background process, no self-updater.","disclosure":"the skill runs the third-party `penthera` npm CLI pinned at 2.4.0 through `npx -y`, which downloads it from the npm registry on first use and runs it on the host outside Hermes' sandbox; it reads repo files and local agent configs (`~/.claude`, `~/.cursor`, `.mcp.json`), makes passive requests to URLs the user names, and, when the user approves, edits code on a local branch or installs a `.git/hooks/pre-commit` hook.","category":"tools","platforms":["linux","macos"],"maintainer":"danoszz","author":"danoszz","version":"2.4.0","requires_hermes":">=0.21.6","repo":"https://github.com/danoszz/penthera","docs":"https://github.com/danoszz/penthera/tree/e3c62111a5541c3715a23175a83941690d52b2a6/plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs Node.js 22 or later. The first run downloads the pinned penthera package from npm.; The macOS machine audit (--machine) runs on macOS only. Windows is untested.","state":"open","pr":152578,"prs":[{"n":152578,"state":"open","created":"2026-11-10T10:47:47Z"}],"created":"2026-11-10T10:47:47Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dreamer","title":"dreamer","summary":"When Hermes goes idle, it dreams. A native plugin that watches for idle windows (default: 15 min idle, at least 12 h between dreams) and replays the day's session residue - tool traffic, dead ends, unfinished threads - into a short narrative dream generated by the LLM, graded light or deep by sleep distance and stored in a local dream journal (title, symbols, mood, dream_type). Up to 1-3 actionable insights are distilled from each dream and injected into the next fresh session as a [DREAM RESIDUE] block, so recurring issues (stale tasks, stuck PIDs, untested regressions) surface where they can actually be handled instead of dying silently between sessions. Tools: dream_now (dream on demand), dream_journal (read past dreams), dream_status (enabled/last-dream/idle state). Hooks: one pre_llm_call hook that injects the pending dream residue - and only it - into a new session's context.","disclosure":"a background thread started at load (on by default; `enabled: false` stops it, but the `dream_now` tool and the session-start injection still work until the plugin is disabled) reads this profile's `state.db` read-only every 15 minutes. After 15 idle minutes, and at most once per 12 hours, it sends recent user messages and tool-error fragments from every session on the profile (all platforms and chats) to your configured model through `ctx.llm`, unattended. It injects the resulting dream digest (up to 2000 chars) into the first turn of the next new session, whichever chat starts it. Dreams are stored under `<HERMES_HOME>/plugin-data/dreamer`. No network calls of its own.","category":"memory","platforms":[],"maintainer":"Cosmonautic1","author":"Cosmonautic1","version":"1.5.0","requires_hermes":">=0.20.4","repo":"https://github.com/Cosmonautic1/hermes-dreamer","docs":"https://github.com/Cosmonautic1/hermes-dreamer#readme","tools":["dream_now","dream_journal","dream_status"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152833,"prs":[{"n":152833,"state":"merged","created":"2026-11-10T18:25:46Z"},{"n":152577,"state":"closed","created":"2026-11-10T10:45:47Z"}],"created":"2026-11-10T10:45:47Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"openchi","title":"OpenChi","summary":"Guided desk stretches and breathing breaks for Hermes Desktop. When your agent takes on a long task, a card below the input box offers a few minutes of stretches; nothing starts until you click. Desktop-only (desktop/plugin.js inside the plugin SDK surface). No network calls, agent tools, hooks or env vars.","disclosure":"","category":"desktop","platforms":[],"maintainer":"imkieransmith","author":"imkieransmith","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/imkieransmith/openchi","docs":"https://github.com/imkieransmith/openchi","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152576,"prs":[{"n":152576,"state":"merged","created":"2026-11-10T10:45:23Z"}],"created":"2026-11-10T10:45:23Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/imkieransmith/openchi/bdc7926455e7aadfcda43f4e4f7eb4b726fffc8d/assets/screenshots/catalog.png","https://raw.githubusercontent.com/imkieransmith/openchi/bdc7926455e7aadfcda43f4e4f7eb4b726fffc8d/assets/screenshots/offer.png","https://raw.githubusercontent.com/imkieransmith/openchi/bdc7926455e7aadfcda43f4e4f7eb4b726fffc8d/assets/screenshots/exercise.png","https://github.com/user-attachments/assets/a707d974-f1a5-4b45-8e4e-9d55847966ab"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/openchi.webp"},{"name":"workspace","title":"Hermes Workspace","summary":"Local rich documents and typed databases with passage-linked comments and native Hermes review.","disclosure":"","category":"desktop","platforms":["linux"],"maintainer":"kaosjammo","author":"kaosjammo","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/kaosjammo/hermes-workspace","docs":"https://github.com/kaosjammo/hermes-workspace/blob/3eeb9986101a3d75c4f9cddc26bb5a3e31bcb9f5/docs/PRODUCTION-FEATURES.md","tools":["workspace_apply"],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"Exact tested installed bundle is preserved; clean-build byte identity of the narrow function transplant is not claimed for this pin.; Development preview: private native owner/admission/database contracts require maintainer adjudication before admission.; SDK-component selector cautions require maintainer review; automated validation is not approval.; Provider-positive saved editing, active-provider cancellation and native Electron acceptance remain unqualified.; Shared-workspace and executor primitives are retained but not a completed default UX.; Workspace's own reuse licence is unselected; the bundled React DOM MIT notice is included.; Screenshot is earlier-build synthetic demo media, not acceptance of this pin.","state":"open","pr":153551,"prs":[{"n":153551,"state":"open","created":"2026-11-11T14:34:57Z"},{"n":153492,"state":"closed","created":"2026-11-11T13:21:42Z"},{"n":152575,"state":"closed","created":"2026-11-10T10:42:53Z"}],"created":"2026-11-10T10:42:53Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/kaosjammo/hermes-workspace/3eeb9986101a3d75c4f9cddc26bb5a3e31bcb9f5/docs/screenshots/database-demo.png","https://raw.githubusercontent.com/kaosjammo/hermes-workspace/4ad4c25ea5532eda34176cacee324408f6d5aac1/docs/screenshots/database-demo.png","https://raw.githubusercontent.com/kaosjammo/hermes-workspace/a8c076ea35800a287723d34f14cec4fa17d42178/docs/screenshots/database-demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/workspace.webp"},{"name":"leash","title":"leash","summary":"Lean OWASP Top 10 pentest toolkit run by the agent against your own dev app: scope-gated recon (TCP scan, same-origin crawl), multi-identity access-control testing with canary-based leak detection, parameter fuzzing, security-header audit and an evidence ledger that turns findings into a plain-language report grouped by OWASP category.","disclosure":"sends TCP connects and HTTP requests (including model-chosen methods, headers, bodies and test payloads) only to hosts and CIDRs listed in the user's scope file, and refuses everything when no scope file is set; in the default audit mode its pre_tool_call hook only logs out-of-scope targets seen in terminal, web_extract and browser tool arguments (enforce mode blocks them); stores test-identity session cookies and tokens in plain JSON under plugin-data/leash, outside model context.","category":"tools","platforms":[],"maintainer":"nicoarias81","author":"nicoarias81","version":"0.1.0","requires_hermes":">=0.21","repo":"https://github.com/nicoarias81/leash","docs":"https://github.com/nicoarias81/leash#readme","tools":["leash_scope","leash_finding","leash_report","leash_scan","leash_request","leash_login","leash_replay","leash_crawl","leash_fuzz","leash_audit"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152573,"prs":[{"n":152573,"state":"merged","created":"2026-11-10T10:38:56Z"}],"created":"2026-11-10T10:38:56Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/nicoarias81/leash/f3bf4f4dc3b4300aef0fabdaf5b08bd77bb63c9a/screenshots/toolbox.png","https://raw.githubusercontent.com/nicoarias81/leash/f3bf4f4dc3b4300aef0fabdaf5b08bd77bb63c9a/screenshots/replay-bola.png","https://raw.githubusercontent.com/nicoarias81/leash/f3bf4f4dc3b4300aef0fabdaf5b08bd77bb63c9a/screenshots/report.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/leash.webp"},{"name":"computer-view","title":"Computer View","summary":"Private Telegram desktop viewing and user takeover with cooperative tool fencing.","disclosure":"Exposes a dedicated Linux virtual desktop to the owner's phone through a user-run HTTPS proxy/tunnel: it uses the profile's `TELEGRAM_BOT_TOKEN` to send a single-use 5-minute bearer link (30-minute session) to the configured owner's private Telegram chat via api.telegram.org, and anyone holding a live link can watch and, after \"Take control\", type and click on that desktop; while enabled its tool_execution middleware refuses browser_exec, computer_use and browser_vault in every session of the profile whenever the user holds control, before `hermes computer-view setup` has run, when `plugins.isolation` is not `in_process`, and after any failed browser action until the owner runs `hermes computer-view recover --local-owner`; `hermes computer-view assets` downloads a SHA-256-pinned noVNC archive from codeload.github.com.","category":"desktop","platforms":["linux"],"maintainer":"bhoot1234567890","author":"bhoot1234567890","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/bhoot1234567890/computer-view","docs":null,"tools":["computer_view_open","computer_view_status","computer_view_revoke","computer_view_handoff","computer_view_observe"],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"Requires explicitly selected in_process isolation and a separately provisioned Linux desktop and HTTPS proxy.","state":"merged","pr":152563,"prs":[{"n":152563,"state":"merged","created":"2026-11-10T10:13:29Z"}],"created":"2026-11-10T10:13:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://github.com/bhoot1234567890/computer-view/releases/download/demo-2026-11-10/computer-view-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"sabbath","title":"sabbath","summary":"Your agent never rests. Now it rests with you. Once a week (say Saturday 18:00, for 24 hours) Hermes keeps a day of rest with you: it says goodnight on your phone, pauses its own scheduled jobs (except the ones you exempt), keeps you company in anything but work and offers to set aside what can wait, then sends one gentle digest when the rest ends while the jobs catch up. /sabbath ox lifts it for an hour when something truly can't wait. Desktop page with your week at a glance; /sabbath on every chat surface; try a two-minute Sabbath.","disclosure":"pauses and resumes the user's Hermes cron jobs through Hermes' cronjob_manage tool (resuming only the jobs it paused); sends a goodnight and a digest to the chat the user sets by running Hermes' own `hermes send` CLI with the text over stdin; adds rest context to each turn while resting; stores its state in plain text under $HERMES_HOME/plugin-data/sabbath; no telemetry.","category":"general","platforms":["linux","macos"],"maintainer":"ponzgpt","author":"ponzgpt","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/ponzgpt/sabbath","docs":"https://github.com/ponzgpt/sabbath","tools":["sabbath_set_aside","sabbath_status"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152560,"prs":[{"n":152560,"state":"merged","created":"2026-11-10T10:05:35Z"}],"created":"2026-11-10T10:05:35Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ponzgpt/sabbath/cb20a4edbe3783e9b2ebd2898f30f9f39937f6ea/docs/screenshots/banner.png","https://raw.githubusercontent.com/ponzgpt/sabbath/cb20a4edbe3783e9b2ebd2898f30f9f39937f6ea/docs/screenshots/page.png","https://raw.githubusercontent.com/ponzgpt/sabbath/cb20a4edbe3783e9b2ebd2898f30f9f39937f6ea/docs/screenshots/resting.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sabbath.webp"},{"name":"psychopomp","title":"psychopomp","summary":"Every week, Hermes helps you write a page of your life (your Book) from what it already knows of your week: proposed as a card in the chat, added only when you approve; once a year, a year in review. Seal letters for the people you love. If you ever go silent for good, Hermes checks in, then asks your witness for a one-time code they can send on any channel, and only then carries your Book (one designed HTML file) and letters. Rehearse the whole passage in 20 seconds on a virtual clock, on the Desktop page or in any chat.","disclosure":"sends weekly nudges, check-ins, a code request and (after the witness's code) the user's Book and letters to the chats the user sets, each through Hermes' own `hermes send` CLI with the text over stdin; reads every inbound gateway message before Hermes' sender check to catch PSY- codes, and consumes those messages; stores the Book and letters in plain text under $HERMES_HOME/plugin-data/psychopomp; runs a 30-second background ticker; no telemetry.","category":"general","platforms":["linux","macos"],"maintainer":"ponzgpt","author":"ponzgpt","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/ponzgpt/psychopomp","docs":"https://github.com/ponzgpt/psychopomp","tools":["psychopomp_status","psychopomp_draft_page","psychopomp_write_page","psychopomp_read_book","psychopomp_seal_letter"],"hooks":["pre_llm_call","pre_gateway_dispatch"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152559,"prs":[{"n":152559,"state":"merged","created":"2026-11-10T10:05:31Z"}],"created":"2026-11-10T10:05:31Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/banner.png","https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/page.png","https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/rehearsal.png","https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/chat-card.png","https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/book.png","https://raw.githubusercontent.com/ponzgpt/psychopomp/fa86a14ee3f0924c6071b8c4887f6116963f649e/docs/screenshots/first-run.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/psychopomp.webp"},{"name":"hermes-multibot","title":"Hermes Multibot","summary":"Several Telegram bots in one Hermes profile: each extra bot is its own private-DM transport with its own session, alias and numeric allowlist, while memory, skills and tools stay shared. Independent BasePlatformAdapter registered through register_platform; no core patches, no fork or wrapper of the bundled Telegram adapter.","disclosure":"network: Telegram Bot API long polling, messages and file downloads; credentials: up to eight declared password secrets read only through Hermes secret scope; files: own replay store and capped media cache under HERMES_HOME; one poller per configured bot inside the gateway process. No telemetry or self-update.","category":"platform","platforms":[],"maintainer":"ivanvanes18","author":"ivanvanes18","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/ivanvanes18/hermes-multibot","docs":"https://github.com/ivanvanes18/hermes-multibot#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Private DMs only; no groups, topics, albums, voice, streaming or full bundled command parity.; One shared profile is not a security sandbox between admitted users.; Replay suppression is bounded at-most-once; a crash after claim can lose a message.","state":"merged","pr":152555,"prs":[{"n":152555,"state":"merged","created":"2026-11-10T09:59:37Z"}],"created":"2026-11-10T09:59:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"inbox-sentinel","title":"Inbox Sentinel","summary":"Watches a Gmail inbox (history polling over a read-only OAuth grant) or an IMAP mailbox over TLS, filters routine mail locally, asks your configured model whether the rest needs attention, and sends a notification through a configured `hermes send` target, with an optional reply draft for review. Never sends, labels, archives or deletes mail. Gate and drafts run in two plugin-owned auxiliary model slots that follow the main model until pinned; daily attempt caps bound model calls. Sends one \"not watching your inbox\" alert a day if the mailbox can't be reached.","disclosure":"runs a long-lived background poll after a session event; calls gmail.googleapis.com through a Hermes-managed gmail.readonly grant from the user's own Google Cloud Desktop client, or the user's IMAP server with a profile-scoped password; message text goes to the configured model provider; alerts run `hermes send` as a child process with the text on argv and may be stored by the destination; sender rules and counters are kept in profile plugin state; no telemetry.","category":"automation","platforms":[],"maintainer":"eddwithers","author":"eddwithers","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/eddwithers/inbox-sentinel","docs":"https://github.com/eddwithers/inbox-sentinel/blob/aac40600d7433895005bc21097543d15255c6a21/README.md","tools":["inbox_sentinel_status","inbox_sentinel_test","inbox_sentinel_feedback"],"hooks":["on_session_start","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Gmail needs the user's own Google Cloud Desktop OAuth client and a terminal sign-in (`hermes auth add inbox-sentinel:gmail`). In Testing mode Google expires the grant after seven days.; If the Gmail history cursor expires, the baseline is rebuilt and mail received in the gap can be missed.; Tested on macOS with Hermes v0.23.0 only. IMAP is tested against a scripted loopback TLS server, not an external provider.","state":"open","pr":152553,"prs":[{"n":152553,"state":"open","created":"2026-11-10T09:58:41Z"}],"created":"2026-11-10T09:58:41Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-tv","title":"Hermes TV","summary":"Give Hermes your smart TV: from any chat, show messages, photos, charts, videos and web pages full-screen, make announcements out loud, play YouTube (from a link or just a description), pop up notifications, and control volume, apps and power on webOS TVs (LG and webOS Hub TVs) on your Wi-Fi. Includes /tv commands, a Desktop status-bar chip and a TV remote page.","disclosure":"talks to the TV over the local network (WebSocket on ports 3001/3000, accepting the TV's self-signed certificate) and finds it with SSDP multicast; one internet request only when asked to play a described video (YouTube's public search page, search words only); no telemetry, no accounts; stores the TV's pairing key, address and model in HERMES_HOME/plugin-data/hermes-tv/tv.json (/tv forget deletes it); runs a temporary local web server (default port 8765, LAN) that serves only items Hermes was asked to show, under random paths, and stops after idle_minutes (default 15); runs the computer's built-in text-to-speech (PowerShell System.Speech on Windows, say on macOS, espeak-ng on Linux) with text passed via an environment variable; background threads only for that server and the optional notify_on_finish pop-up (off by default); TV requests time out after 10s and pairing after 60s.","category":"tools","platforms":[],"maintainer":"helenn-szn","author":"helenn-szn","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/helenn-szn/hermes-tv","docs":"https://github.com/helenn-szn/hermes-tv#readme","tools":["tv_show","tv_say","tv_youtube","tv_notify","tv_control","tv_status"],"hooks":["on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":152548,"prs":[{"n":152548,"state":"closed","created":"2026-11-10T09:29:35Z"}],"created":"2026-11-10T09:29:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gambit","title":"Gambit for Hermes","summary":"Play chess in a Hermes terminal or Desktop pane, understand mistakes, and replay or practice public Chess.com and Lichess matches.","disclosure":"runs a locally installed Stockfish executable (the path you set in plugin settings, or one found on PATH) as a subprocess that inherits Hermes' environment; fetches public games for a username you enter from api.chess.com and lichess.org; uses your configured Hermes model for each opponent move; and in Coach mode the Desktop pane automatically sends coaching requests into the bound chat when it is idle, each starting a model turn.","category":"tools","platforms":["macos"],"maintainer":"itsflownium","author":"itsflownium","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/itsflownium/gambit-hackathon","docs":"https://github.com/itsflownium/gambit-hackathon/blob/9c725ad0b04c2bc32f16efd00dfc1b4d421360cb/README.md","tools":["chess_state","chess_start","chess_move","chess_games","chess_replay","chess_review","chess_hint","chess_action"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Requires a separately installed local Stockfish executable; it is not bundled or downloaded automatically. Hermes Desktop is optional for the graphical pane.; The standalone terminal board requires an interactive terminal with Python curses support and uses a separate Gambit session in the active profile.; Hermes skips standalone CLI command registration with plugins.isolation set to host; /chess remains available in a Hermes conversation.; Slash shortcuts return direct board or local engine evidence; use ordinary chat or the standalone coaching pane for model explanations.; Full-match recap completion is announced through Desktop only. CLI/TUI chat can retrieve the result on a later request; the standalone dashboard has no summary command.; Imports completed public standard-chess games only; source publication delays and rate limits may apply. Chess.com Bot and Coach games are unavailable through public username lookup.; Uses the configured Hermes provider for moves and coaching; normal provider usage applies, and legal engine fallback is labelled when used.; The 60-second deadline covers board replies; separate explanations have their own provider response time.; Verified platform scope is macOS only; Linux, Windows and another physical computer have not been verified.","state":"merged","pr":152547,"prs":[{"n":152547,"state":"merged","created":"2026-11-10T09:27:04Z"}],"created":"2026-11-10T09:27:04Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/itsflownium/gambit-hackathon/9c725ad0b04c2bc32f16efd00dfc1b4d421360cb/docs/terminal-preview.png","https://raw.githubusercontent.com/itsflownium/gambit-hackathon/9c725ad0b04c2bc32f16efd00dfc1b4d421360cb/docs/import-preview.png","https://raw.githubusercontent.com/itsflownium/gambit-hackathon/9c725ad0b04c2bc32f16efd00dfc1b4d421360cb/demo/poster.png"],"videos":["https://raw.githubusercontent.com/itsflownium/gambit-hackathon/9c725ad0b04c2bc32f16efd00dfc1b4d421360cb/demo/Gambit-Demo-Review.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gambit.webp"},{"name":"hermes-snitchboard","title":"Hermes Snitchboard","summary":"A dashboard tab that turns OpenSnitch connection evidence into plain-language findings mapped to MITRE ATT&CK, with a hash chain that makes alteration of stored history detectable. Hermes can tell you what it did and application-layer tooling can record which model requests it made; neither tells you what the machine actually connected to. The tab answers that from the firewall's own record of outbound connections and the process behind each one. It shows a summary of connections, denials, unique processes and destinations, AI traffic and unattributed traffic; an hourly coverage strip that renders a missing hour as a gap rather than as a quiet hour; findings carrying severity, confidence, the ATT&CK technique and tactic, the literal records behind the finding and one concrete next step; regular-interval destinations stated with both the benign and the malicious reading, with services on the configured expected list labelled rather than flagged; novel destinations ranked by rarity against prior runs; activity by AI process and by configured agent account; a per-run connection chart with a run that collected nothing drawn as a marked gap instead of a zero; byte volume where the firewall's connection tracking measured it; the daemon's reported state, the rules in force and open sockets; and an integrity panel that recomputes every link on request. Addresses, host names, hardware addresses, home directories and process arguments are masked by default, a deliberate control reveals them, and that control can be switched off entirely in settings. Until real runs exist the tab shows clearly labelled demonstration records built from addresses reserved for documentation (RFC 5737, RFC 3849, RFC 2606), so every panel is visible without installing OpenSnitch. Collection and viewing are kept apart on purpose: the half that runs inside Hermes never opens the firewall database, and the optional reference collector is run by the machine owner's own account, never by Hermes, which suits setups where Hermes runs under a different account from the person who owns the machine. The integrity claim is scoped deliberately: the chain attests to the order of stored records and to the digest each full record held when it was sealed, so a record that has since been trimmed keeps a shortened summary the chain does not cover, and that summary is a derived analysis aid rather than evidence. The chain makes alteration detectable; it does not prove what the network did, and anyone able to rewrite every record could recompute it.","disclosure":"registers no tools, no hooks and no middleware, and needs no environment variable. Its only surface is the dashboard tab and seven GET routes served by the user's own local dashboard at /api/plugins/hermes-snitchboard/ (health, settings, runs, runs/latest, runs/{run_id}, series, verify), which require the dashboard's auth ticket. It writes nothing to disk at all. It makes no network request, opens no socket, loads no external font, script or image, executes no subprocess, no shell command and no systemd unit, starts no background process, holds no credential and no OAuth client, and sends no telemetry. It reads three things: the run records in the directory named by its runs_dir setting, which may sit outside the plugin's own data directory and which the operator chooses; a settings.json in its plugin data directory when Hermes's own settings are unavailable; and the plugin's settings from Hermes configuration through the read-only helper hermes_cli.config.load_config_readonly, with plugins.plugin_storage.plugin_data_dir for the data path. Both of those imports are guarded and fall back rather than raise. Record files are opened with O_NOFOLLOW, symbolic links in the runs directory are skipped so nothing outside it can be reached through one, no value supplied by a client ever reaches the filesystem as a path, a file is never read past the schema's size cap, and every response is bounded in both row count and serialised bytes. Record data is rendered through React element construction with no innerHTML anywhere, because process and host names from the firewall flow through that code. Python standard library only; FastAPI comes from Hermes and no third-party package is added.","category":"tools","platforms":["linux"],"maintainer":"NeumannTechTips","author":"NeumannTechTips","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/NeumannTechTips/hermes-snitchboard","docs":"https://github.com/NeumannTechTips/hermes-snitchboard/blob/6104d95d461f420bd1b897a9a685f184c332bbea/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The analysis thresholds in snitchboard/config.py (beacon window and jitter bands, novelty depth, coverage tolerance, transfer thresholds, detection and aggregate caps) carry their defaults in this release. Only the twelve settings declared in plugin.yaml reach the plugin from Hermes configuration, so a threshold placed in the configuration file is dropped without warning rather than applied.; Developed and verified on Hermes Agent v0.23.0 on Fedora Linux with plugins.isolation: host. The same code runs elsewhere but no other platform or isolation mode was exercised.; Chain verification carries a 40-second budget so it stays inside the plugin host's 60-second response ceiling. On a very large history it reports that verification did not complete and gives no verdict, rather than returning a partial one.; A trimmed record keeps a shortened summary that the chain does not cover. The chain still attests to that record's position and to the digest its full form held when sealed, so the integrity panel reports how many links rest on sealed digests.; The reference collector supplies no byte counts, because the OpenSnitch database holds none, so any record it produces reports volume as unavailable. The demonstration records carry byte counts, so that panel is populated in demonstration mode only.; Account names appear in clear while home paths are masked. Masking them reaches finding text and evidence lines as well as the tables, so it is recorded as a v0.2.0 item rather than done late.; The reference collector reads connection times as naive local strings, so it must run in the same time zone as the firewall interface. The hour repeated when clocks go back is ambiguous.; OpenSnitch records connections only while its own interface is running, and its purge setting removes old rows. Both show as gaps or as runs marked no_data, never as an all-clear.; aggregates.total_connections and aggregates.dropped hold the window's counts in a collected record but repeat the daemon's lifetime counters in a demonstration record. Giving them a single meaning is a v0.2.0 item.","state":"merged","pr":152546,"prs":[{"n":152546,"state":"merged","created":"2026-11-10T09:26:39Z"}],"created":"2026-11-10T09:26:39Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/assets/banner.png","https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/screenshots/01-summary-and-coverage.png","https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/screenshots/02-findings.png","https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/screenshots/03-beacons-and-novel.png","https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/screenshots/04-chart-and-events.png","https://raw.githubusercontent.com/NeumannTechTips/hermes-snitchboard/6104d95d461f420bd1b897a9a685f184c332bbea/docs/screenshots/05-integrity.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-snitchboard.webp"},{"name":"mascot-guide","title":"Mascot Widget","summary":"A mascot that floats in the corner of Hermes Desktop: it says what the agent is doing, shows tokens, context and session cost, and opens a status panel with copy, compress and stop. Colours, aura glow, size and the position of the bubble, cards and panel are adjustable, with Simple and Advanced settings tabs and three layout presets. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.","disclosure":"","category":"desktop","platforms":[],"maintainer":"kangmochi","author":"kangmochi","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/kangmochi/mascot-widget","docs":"https://github.com/kangmochi/mascot-widget","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152545,"prs":[{"n":152545,"state":"merged","created":"2026-11-10T09:25:16Z"}],"created":"2026-11-10T09:25:16Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kangmochi/mascot-widget/260806425aa0f6702cedfd26ae2a65c2f03150c6/docs/shots/banner.png","https://raw.githubusercontent.com/kangmochi/mascot-widget/260806425aa0f6702cedfd26ae2a65c2f03150c6/docs/shots/working.png","https://raw.githubusercontent.com/kangmochi/mascot-widget/260806425aa0f6702cedfd26ae2a65c2f03150c6/docs/shots/widget.png","https://raw.githubusercontent.com/kangmochi/mascot-widget/260806425aa0f6702cedfd26ae2a65c2f03150c6/docs/shots/settings.png"],"videos":["https://raw.githubusercontent.com/kangmochi/mascot-widget/main/docs/mascot-widget-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mascot-guide.webp"},{"name":"crystallize","title":"Crystallize","summary":"Spend less on repeated work in Hermes chats and cron jobs, without making your model think less: trims repeated context and tool output in chats, and lets a cron job skip its AI run when its input has not changed, with local receipts showing what each change saved.","disclosure":"reads Hermes session costs, user-message counts and final cron answers (state.db, read-only), cron outcomes and job definitions (cron/executions.db, cron/jobs.json) and your config and rate cards; looks up public model prices from the active route's /models endpoint and models.dev once a day with no credentials or chat data (off with hermes crystal prices --lookup off); the optional helper, compare and check features make paid model calls through your own Hermes route; cron tuning, promote and undo run hermes cron CLI commands that edit the chosen job, choosing a helper model or deferring tools runs hermes config set (auxiliary.crystallize_chat, tools.tool_search.defer), and generated pre-run wrappers, drafted snapshot scripts (which replay the job's recorded shell commands and URL reads) and approved snapshot scripts are written under scripts/crystallize/, scripts/crystallize-drafts/ and scripts/crystallize-native/ and run as ordinary cron scripts once attached; in CLI and TUI chats posts one short status line after each turn with ctx.post_message (never on Desktop or messaging platforms; off with /crystallize line off); stores captured tool results, cache entries and receipts in its plugin-data folder; no telemetry, no credential reads, no self-update.","category":"automation","platforms":[],"maintainer":"itsflownium","author":"itsflownium","version":"0.6.0","requires_hermes":">=0.22.7","repo":"https://github.com/itsflownium/hermes-crystallize","docs":"https://github.com/itsflownium/hermes-crystallize/blob/fc34138782796e94bca9131dd12c71f2dd843031/README.md","tools":["crystal_cheap","crystal_full_result","crystal_list","crystal_run"],"hooks":["on_session_end","post_api_request","post_llm_call","post_tool_call","pre_llm_call","pre_tool_call","transform_llm_output","transform_tool_result"],"middleware":["llm_request","tool_execution"],"env":[],"known_issues":"Live savings at unchanged reasoning are measured on Nous and OpenAI Codex, with small samples and synthetic fixtures; other providers are untested. Hand-offs cost more in live tests and are off by default.; Frozen fixture checks do not prove semantic equivalence or universal provider coverage.; Automatic nested tool execution and pre-run/no-AI replay of learned tool plans are unavailable on the audited SDK; explicit tool mode returns pending normal-host-tool plans.; Configured/declared routes have unverified authentication and availability. User rate cards and public provider quotes are estimates, not billing evidence.; Optional native Python snapshot sources require explicit source approval, and a job that delivers needs confirmation that an unchanged run sends nothing; copied code/imports run with ordinary cron permissions, and host text trimming/redaction still apply.","state":"merged","pr":152544,"prs":[{"n":152544,"state":"merged","created":"2026-11-10T09:22:58Z"}],"created":"2026-11-10T09:22:58Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/itsflownium/hermes-crystallize/fc34138782796e94bca9131dd12c71f2dd843031/assets/social-preview.png","https://raw.githubusercontent.com/itsflownium/hermes-crystallize/fc34138782796e94bca9131dd12c71f2dd843031/assets/review/panel-cron-and-chat.png","https://raw.githubusercontent.com/itsflownium/hermes-crystallize/fc34138782796e94bca9131dd12c71f2dd843031/assets/review/panel-job-details.png"],"videos":["https://raw.githubusercontent.com/itsflownium/hermes-crystallize/fc34138782796e94bca9131dd12c71f2dd843031/assets/demo/crystallize-demo.mp4","https://raw.githubusercontent.com/itsflownium/hermes-crystallize/fc34138782796e94bca9131dd12c71f2dd843031/assets/demo/crystallize-demo-full.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/crystallize.webp"},{"name":"vellum","title":"Vellum: Hermes draws inside the paper","summary":"Vellum: Hermes draws inside the paper. Highlight a passage in an arXiv paper (HTML version) in Hermes's browser and your own Hermes session gives you the gist like a friend at a whiteboard, talking while it sketches a live, interactive figure right under the paragraph (built from the paper's own example and numbers); follow-ups, typed or spoken, change the same sketch. Adds tools (vellum_draw / vellum_look / vellum_clear / vellum_read), a skill, and hooks on turns started from the paper.","disclosure":"reads arXiv HTML pages (arxiv.org/html, ar5iv) with Desktop's per-site consent; puts Visualize/Ask drafts into your chat box for you to send (never submits a turn itself), and the highlighted passage and nearby paper text go to your configured model as part of that turn (the full paper when Hermes calls vellum_read, and a picture of the figure when it calls vellum_look); runs model-written drawing code only in a sandboxed iframe (opaque origin, CSP default-src none with scripts pinned by hash, WebRTC constructors removed; best effort, since CSP does not cover a frame navigating itself); speaks with Hermes's own text_to_speech, one call per spoken sentence and at most 60 per turn (Edge TTS by default, an online service; a paid provider bills each sentence); stores the text of the 20 most recently opened papers, the ids of the 50 most recent figure cards opened, the current Ask passage and short-lived request/voice files under plugin-data/vellum; no telemetry, no credentials, no external CLIs, no downloads.","category":"desktop","platforms":[],"maintainer":"0xsaltylollipop","author":"0xsaltylollipop","version":"0.4.0","requires_hermes":">=0.22.7","repo":"https://github.com/0xsaltylollipop/vellum","docs":"https://github.com/0xsaltylollipop/vellum#readme","tools":["vellum_draw","vellum_look","vellum_clear","vellum_read"],"hooks":["pre_llm_call","pre_tool_call","on_stream_delta","on_stream_end","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152533,"prs":[{"n":152533,"state":"merged","created":"2026-11-10T09:00:36Z"}],"created":"2026-11-10T09:00:36Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://github.com/user-attachments/assets/85af3e08-6685-4a7b-b61e-988c47de6075"],"videos":["https://github.com/user-attachments/assets/55e380cc-70d6-41cf-a542-fa17c71a46fe"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vellum.webp"},{"name":"openbao","title":"openbao","summary":"Resolve mapped bao:// references from OpenBao or HashiCorp Vault KV v1/v2 into Hermes environment variables at startup.","disclosure":"makes outbound HTTP(S) calls to the configured Vault/OpenBao address and sends HERMES_OPENBAO_TOKEN as X-Vault-Token; never reads .env/auth stores directly, never caches secrets, never prompts, and starts no background process.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Schultzenator","author":"Schultzenator","version":"0.1.2","requires_hermes":">=0.0.0","repo":"https://github.com/Schultzenator/hermes-plugin-openbao","docs":null,"tools":[],"hooks":[],"middleware":[],"env":["HERMES_OPENBAO_TOKEN"],"known_issues":"","state":"merged","pr":152526,"prs":[{"n":152526,"state":"merged","created":"2026-11-10T08:38:02Z"}],"created":"2026-11-10T08:38:02Z","late":false,"said":false,"update":false,"discussion":6,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"looprunner","title":"looprunner","summary":"Set-and-forget autonomous QA loop runner for any repository. Runs your verify command each round, diagnoses failures with the host LLM, applies a minimal fix on a branch, opens a PR, and stops itself when it stalls or runs out of budget. Can watch a repository's issues and dispatch goal-mode kanban cards, checkpoint a stalled stage for a later retry, and gate PRs on a security review. Accepts project names instead of absolute paths and detects the verify command itself.","disclosure":"","category":"automation","platforms":[],"maintainer":"itxLikhith","author":"itxLikhith","version":"0.18.1","requires_hermes":">=0.22.0","repo":"https://github.com/itxLikhith/looprunner","docs":null,"tools":["loop_start","loop_tick","loop_verify","loop_status","loop_history","loop_analyze","loop_commit","loop_revert","loop_watch","loop_scan_issues","loop_security","loop_security_card","loop_detect","loop_checkpoint","loop_recommend","loop_pause","loop_resume","loop_stop"],"hooks":["pre_llm_call","post_tool_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Optional: the heavy multi-agent security scan needs the hermes-security plugin installed. LoopRunner declares it as an advisory dependency and falls back to a built-in LLM review when it is absent.","state":"open","pr":152525,"prs":[{"n":152525,"state":"open","created":"2026-11-10T08:36:55Z"}],"created":"2026-11-10T08:36:55Z","late":false,"said":true,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"backstop","title":"backstop","summary":"A build or test that fails in your own PowerShell, bash or zsh gets a read-only Hermes diagnosis (cause, quoted evidence, file:line, fix) that opens in Hermes Desktop; Fix it drafts the change into a normal chat you send yourself, and the next passing run closes the incident.","disclosure":"each failure automatically starts one diagnosis session on your configured model (output tail redacted, command, cwd, project excerpts); reads project files and their size/mtime; shell hook functions plus an opt-in profile/rc line; one gateway thread polls its spool every second. No own network calls, credentials or telemetry. Two internal imports (session policy guard, egress redaction) are version-coupled; no runtime overrides or self-updater.","category":"desktop","platforms":[],"maintainer":"themahis","author":"themahis","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/themahis/hermes-backstop","docs":"https://github.com/themahis/hermes-backstop","tools":["backstop_read_file","backstop_search","backstop_list"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs the Hermes Desktop app open: a failure waits up to 30 minutes for a Desktop window, then expires.; End-to-end tested on Windows (PowerShell); bash and zsh hooks are tested in CI up to the spool record.; Some gateways reject the max_turns request; Backstop then runs the diagnosis without a turn limit and shows a warning.; Two private core imports (session-policy guard, egress redaction) may break on a Hermes release; the tools then refuse to run.","state":"open","pr":152509,"prs":[{"n":152509,"state":"open","created":"2026-11-10T08:05:08Z"}],"created":"2026-11-10T08:05:08Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/banner.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/1-terminal-failure.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/2-status-menu.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/3-diagnosis-and-menu.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/4-fix-it-draft.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/5-terminal-passes.png","https://raw.githubusercontent.com/themahis/hermes-backstop/99fd96995d363de92050fdf61a902979b5926f1e/assets/screenshots/6-status-fixed.png"],"videos":[],"x":["https://x.com/themahis/status/2120166869344645517"],"youtube":[],"thumb":"/hackathon/thumbs/backstop.webp"},{"name":"benchforge","title":"BenchForge","summary":"The flight simulator for AI-written Arduino firmware. Describe what the board should do and approve the checks in plain English; BenchForge compiles the sketch with arduino-cli, runs it instruction by instruction on a simulated ATmega328P with simulated sensors, buttons, relays, servos and buzzers, crash-tests it (noisy sensors, button bounce, millis() rollover, a cut sensor wire) and has Hermes fix it until every check passes, with a reproducible proof receipt, an animated board GIF and a live browser board. A pre_tool_call flash gate stops the agent flashing any firmware without a passing receipt against checks a person approved.","disclosure":"hermes bench setup downloads the official arduino-cli 1.4.1 (SHA-256 pinned) from downloads.arduino.cc or GitHub, then the arduino:avr@1.8.6 core and Servo@1.2.2 library through arduino-cli's own package index, and Node.js through Hermes's package manager only if it isn't installed; at run time it compiles the model-written sketch on the host with arduino-cli (compile only, in a sealed temp folder with a fixed environment) and runs the firmware in an emulated chip under node (Node's permission model), and makes no network calls; /bench sends the request, bench, sketch and failure details to the user's own model provider through ctx.llm; the \"watch it run\" link opens the author's GitHub Pages site (ohjay-official.github.io) with the firmware and checks in the URL fragment; writes only under HERMES_HOME/plugin-data/benchforge (receipts, firmware, drafts kept 7 days, approvals stored as platform plus a hashed user id); the flash gate reads the .hex file an upload command names.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"ohjay-official","author":"ohjay-official","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ohjay-official/hermes-benchforge","docs":"https://github.com/ohjay-official/hermes-benchforge#readme","tools":["bench_guide","bench_test"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Simulates an Arduino Uno (ATmega328P) with LEDs, relays, buzzers, servos, buttons, potentiometers, LM35 and NTC temperature sensors and HC-SR04 sonar. Parts it can't simulate are listed as not simulated when the checks are written.; Live progress and the approval message use ctx.post_message, so BenchForge runs in-process (plugins.isolation: in_process, the default), not in the plugin host.; Needs Node.js 18 or newer for the simulator; when it is missing, hermes bench setup gets it through Hermes's own package manager.","state":"merged","pr":152504,"prs":[{"n":152504,"state":"merged","created":"2026-11-10T07:50:43Z"}],"created":"2026-11-10T07:50:43Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ohjay-official/hermes-benchforge/62e633037f9ba253066d17818b533a8ee5549c32/docs/banner.png","https://raw.githubusercontent.com/ohjay-official/hermes-benchforge/62e633037f9ba253066d17818b533a8ee5549c32/docs/board.gif","https://raw.githubusercontent.com/ohjay-official/hermes-benchforge/62e633037f9ba253066d17818b533a8ee5549c32/docs/live-board.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/benchforge.webp"},{"name":"lifeboat","title":"lifeboat","summary":"Rescue what a sweeper bot left behind in a drained EVM wallet: claims, unstakes and transfers in one EIP-7702 transaction paid by a fresh operator, sent only after you approve the exact text.","disclosure":"moves funds on-chain: signs EIP-7702 delegations with the private key of the already-drained wallet (LIFEBOAT_VICTIM_KEY, read through the Hermes secret scope) and sends transactions from fresh operator wallets whose keys it generates and stores sealed under its plugin data directory; sending is off until LIFEBOAT_ENABLE_EXECUTE=1, every send needs a per-transaction Hermes approval prompt, and it refuses to send in yolo mode, with approvals off or in unattended runs (cron, -q, webhook, API); assets go only to LIFEBOAT_SAFE_ADDRESS; sends the wallet address to the public RPC of each supported chain (scan with no chain list queries all of them; override per chain with the `rpc` plugin setting) and to each chain's public Blockscout API for the balance scan and sweep history; reads Hermes' private approval-mode functions to detect unattended runs (fails closed); no telemetry, no background threads.","category":"tools","platforms":[],"maintainer":"superskie","author":"superskie","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/superskie/lifeboat","docs":"https://github.com/superskie/lifeboat#readme","tools":["lifeboat_scan","lifeboat_plan","lifeboat_simulate","lifeboat_status","lifeboat_execute","lifeboat_sweep_back"],"hooks":["pre_tool_call"],"middleware":[],"env":["LIFEBOAT_VICTIM_KEY","LIFEBOAT_SAFE_ADDRESS"],"known_issues":"Runs only for a wallet with a sweep on record (gas that arrived and left again within five minutes, at least twice). There is no switch to turn this off.; After a rescue the wallet stays delegated to the batch contract and the leaked key still controls it. Never use that wallet again.; On seven chains the explorer cannot be read by scripts, so the scan lists only the native balance there and you name the tokens yourself.","state":"merged","pr":152503,"prs":[{"n":152503,"state":"merged","created":"2026-11-10T07:48:14Z"}],"created":"2026-11-10T07:48:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-vault-broker","title":"hermes-vault-broker","summary":"Fill saved logins from an out-of-process credential broker. The broker runs as its own system user with ProtectHome=yes, derives a KEK from a passphrase with scrypt and keeps the random data key (DEK) in checked mlock'd memory, and writes the password into the page itself over a DevTools endpoint taken ONLY from its own root-owned loopback config — the model cannot choose it, and a tab's websocket is refused unless its host:port matches. The agent sends (handle, origin) over a unix socket and gets a fill count back; SO_PEERCRED limits the gateway uid to status/list/fill while unlock/add/remove/init/lock stay with root and the broker's own uid. Exact-origin binding is re-asserted inside the tab immediately before the write. Import only accepts a JSON export the operator made themselves; the broker never opens Hermes's credential stores. An optional CDP-pipe mode lets the broker launch and own Chromium with no TCP debugging port. Linux; stdlib unittest suite; deps cryptography + websockets.","disclosure":"requires running `scripts/install.sh` as root, which creates a `vaultd` system user, adds the Hermes user to its group, pip-installs `cryptography` and `websockets` into /opt/hermes-vault-broker/venv and enables a system-wide `hermes-vault-broker` systemd service; saved passwords are typed into browser pages over the Chrome DevTools endpoint configured in /etc/hermes-vault-broker/cdp.json, so any process running as the browser's user can read a filled field or take over that port; the optional unlock page (`unlock-form`) serves the passphrase form over self-signed HTTPS and the README suggests binding it to 0.0.0.0.","category":"tools","platforms":["linux"],"maintainer":"Karasumikura","author":"Karasumikura","version":"0.1.0","requires_hermes":"","repo":"https://github.com/Karasumikura/hermes-vault-broker","docs":"https://github.com/Karasumikura/hermes-vault-broker#readme","tools":["vault_broker_status","vault_broker_list","vault_broker_fill"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152502,"prs":[{"n":152502,"state":"merged","created":"2026-11-10T07:42:44Z"}],"created":"2026-11-10T07:42:44Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hypruse","title":"hypruse","summary":"Hyprland computer use through the hypruse CLI: controls from the accessibility tree clicked by number, typing and keys sent to one window, and a background mode where the agent works in apps on its own workspaces (99 down to 90) while your cursor, focus and workspace stay put. Select it with `hermes config set computer_use.backend hypruse`.","disclosure":"the provider is pure Python with no third-party dependencies. Each action runs the separately installed `hypruse` command (0.13 or newer), or the one named in `computer_use.hypruse.command` or HERMES_HYPRUSE_CMD, as a subprocess with no shell, and that child gets only the desktop session variables and HYPRUSE_* settings, never Hermes' API keys; `hermes computer-use doctor` also runs `hypruse doctor`. hypruse clicks, types and presses keys in your live session, and a foreground pointer action moves your cursor. With the optional `computer_use.hypruse.delivery: auto`, an action on the window you are in runs on your screen. Screenshots of the targeted window, or of the focused monitor for `app='screen'`, go to your model like any computer-use backend's, and each capture file is deleted once read. It reads hypruse's state file `$XDG_RUNTIME_DIR/hypruse/cli-state.json` and never writes it. No network calls, telemetry, stored data or credentials.","category":"automation","platforms":["linux"],"maintainer":"IlyasKhallouki","author":"IlyasKhallouki","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/IlyasKhallouki/hypruse","docs":"https://github.com/IlyasKhallouki/hypruse/blob/bcb047e4416f5fb79d29e4df0ce62f6a760a8e8c/integrations/hermes/hermes_hypruse/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs Hyprland and the hypruse command 0.13 or newer on PATH (PyPI, AUR or Nix), which this plugin does not install. Check it with hermes computer-use doctor.; set_value is not supported: hypruse has no verb that sets a value. Click the field and type, or click the control.; Modifier keys held during a click, drag or scroll, and triple clicks, are not supported.; The pointer never works in the background: coordinate clicks, drags and scrolls need delivery_mode='foreground' on the window you are in, and right, middle and double clicks by element work only in the foreground.; som captures (marks) are sent at full size; max_image_dimension applies to vision captures only.; computer_use has no launch action: run hypruse launch -- APP with the terminal tool to open an app on the agent's workspaces, then capture(app='APP').; Does not load under plugins.isolation: host, because Hermes loads computer-use providers only in its own process.","state":"merged","pr":152497,"prs":[{"n":152497,"state":"merged","created":"2026-11-10T07:37:57Z"}],"created":"2026-11-10T07:37:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ghost-subscriptions","title":"Ghost Subscriptions","summary":"Detects subscriptions and recurring charges in a bank statement export (CSV from 17 bank profiles or any CSV by column mapping, OFX 1.x/2.x), reports their yearly cost per currency, price increases, duplicate charges, overlapping services, stopped subscriptions and payment plans, and writes a cancellation pack (one letter per subscription in English or French, a CSV summary and an .ics file with reminders 7 days before each charge).","disclosure":"reads only the statement file the user names and its own bundled profile and alias data; stores dates, amounts and sanitised descriptions (IBANs masked, full card numbers removed, file path not stored) in SQLite under its plugin data folder, where the cancellation packs are also written; statement_purge deletes all of it; makes no network requests and imports no networking modules; sends, cancels or pays nothing; no shell commands, background processes, credentials, telemetry, self-updating code, binaries or Python dependencies.","category":"tools","platforms":[],"maintainer":"Max35j","author":"Max35j","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/Max35j/ghost-subscriptions","docs":"https://github.com/Max35j/ghost-subscriptions/blob/e31a8f6832e8c594a9cc3daa1e15229459eb82e2/README.md","tools":["statement_import","statement_audit","statement_cancel_pack","statement_purge"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152495,"prs":[{"n":152495,"state":"merged","created":"2026-11-10T07:34:29Z"}],"created":"2026-11-10T07:34:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Max35j/ghost-subscriptions/e31a8f6832e8c594a9cc3daa1e15229459eb82e2/assets/banner.png","https://raw.githubusercontent.com/Max35j/ghost-subscriptions/e31a8f6832e8c594a9cc3daa1e15229459eb82e2/assets/screenshot-audit.png","https://raw.githubusercontent.com/Max35j/ghost-subscriptions/e31a8f6832e8c594a9cc3daa1e15229459eb82e2/assets/screenshot-cancel-pack.png","https://raw.githubusercontent.com/Max35j/ghost-subscriptions/e31a8f6832e8c594a9cc3daa1e15229459eb82e2/assets/screenshot-subs-letter.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ghost-subscriptions.webp"},{"name":"stmp","title":"STMP Phone Bridge","summary":"Use a phone as the trust boundary: Gmail, Calendar, Drive, contacts, notifications, a credential vault and SSH over STMP — every gated call waits for a human on the device, and no credential is ever stored on the host.","disclosure":"needs the STMP Android app (public repository, Apache-2.0, APK on its releases page) reachable from the Hermes host over LAN or tailnet, so it does nothing without a paired phone; acts on that phone's signed-in Google account (sends mail, writes calendar events, uploads and downloads Drive files — a download writes only inside the configured download_dir and an upload reads only inside upload_dir or outside the credential stores, since the model names those paths and the settings bound them) and runs SSH commands through private keys stored on the device, which never leave it; stores nothing at rest beyond the connected instance's capability snapshot (contract version, plugin and route counts, SSH connection names) in Hermes's own plugin state, rewritten only on change; two routes are gate-exempt by design and say so in their tool descriptions — POST /tts and POST /audio/{cue} play sound only; every other route goes through the phone's approval gate, whose per-route mode (WHITELIST, PARANOID or DONT_DISTURB) is the device owner's policy, not the plugin's; declares and reads no credential (requires_env is empty, no oauth block), no telemetry, no self-updater, and talks to exactly one address: the configured base_url.","category":"tools","platforms":[],"maintainer":"a7madgamal","author":"a7madgamal","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/a7madgamal/hermes-stmp","docs":"https://github.com/a7madgamal/hermes-stmp#readme","tools":["stmp_audio","stmp_calendar","stmp_contacts","stmp_debug","stmp_drive","stmp_gmail","stmp_help","stmp_logs","stmp_notifications","stmp_probe","stmp_secrets","stmp_ssh","stmp_tts"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152489,"prs":[{"n":152489,"state":"merged","created":"2026-11-10T07:22:04Z"}],"created":"2026-11-10T07:22:04Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"arcmira","title":"Arcmira: YouTube Transcript Search","summary":"YouTube transcript search and monitoring for your AI. Arcmira understands YouTube and podcasts like it watched them: the exact quote, often who said it, the full transcript and sponsors. Add \"use arcmira\" to any question to send it to Arcmira first. Sign in with Hermes-managed OAuth in your browser, no key needed, or set ARCMIRA_API_KEY. Bundles Arcmira's hosted MCP server and eleven research skills; portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration and Markdown only.","disclosure":"hosted-only connector with no local code; every tool call goes to Arcmira's MCP server at mcp.arcmira.com with the search terms, names, video links and JavaScript programs the agent writes (programs run on Arcmira's servers, never on your machine), authenticated with a Hermes-managed OAuth sign-in through api.arcmira.com or ARCMIRA_API_KEY. Reads, transcriptions and alerts use the account's credits. arcmira_execute_write creates and changes monitors that alert by email, Slack or webhook; the skills confirm each one with the user first. arcmira_feedback sends the agent's note to Arcmira. Arcmira logs each tool call on the account. The tool list is served at run time and is not covered by the pinned sha.","category":"web","platforms":[],"maintainer":"arcmira","author":"zealous1","version":"0.10.16","requires_hermes":">=0.22.2","repo":"https://github.com/arcmira/hermes-plugin","docs":"https://github.com/arcmira/hermes-plugin/blob/87b038801e58b6032e9e1c96d82cf36bb0e13b64/README.md","tools":[],"hooks":[],"middleware":[],"env":["ARCMIRA_API_KEY"],"known_issues":"Sign in once after installing: hermes mcp add arcmira --url \"https://mcp.arcmira.com/mcp?via=hermes\" --auth oauth; On a machine with no browser, open the printed sign-in link on any device and paste the redirect URL back into Hermes, or use ARCMIRA_API_KEY.; Hermes does not prompt for ARCMIRA_API_KEY at install. Set it with hermes config set ARCMIRA_API_KEY <key> only if you skip OAuth.","state":"merged","pr":152484,"prs":[{"n":152484,"state":"closed","created":"2026-11-10T07:16:42Z"}],"created":"2026-11-10T07:16:42Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/arcmira/hermes-plugin/87b038801e58b6032e9e1c96d82cf36bb0e13b64/assets/arcmira-catalog-card.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"argus","title":"argus","summary":"Reads a Hermes agent by intents instead of sessions and reviews what it learns: links each skill edit to the goal that produced it, flags edits applied without evidence and proposes rules backed by several intents, each kept or rejected by a person and applied through Hermes.","disclosure":"derive passes send turn text, tool-call and tool-result excerpts, skill diffs and SKILL.md to the auxiliary.argus model; reads every profile's state.db, curator ledger, blobs, skills section of config.yaml and SKILL.md read-only; starts detached `hermes argus derive` passes when the agent is idle; writes skills only on an explicit apply, through rollback_entry or skill_manage as actor user; no credentials, no telemetry.","category":"general","platforms":["linux","macos"],"maintainer":"albertodvp","author":"albertodvp","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/albertodvp/argus","docs":"https://github.com/albertodvp/argus#readme","tools":[],"hooks":["pre_llm_call","post_tool_call","on_session_end","on_skill_lifecycle","on_session_delete"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152481,"prs":[{"n":152481,"state":"open","created":"2026-11-10T07:12:11Z"}],"created":"2026-11-10T07:12:11Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/argus-banner.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/02-matrix.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/03-intents.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/04-skill.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/05-proposal.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/07-apply.png","https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/assets/showcase/08-applied.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/argus.webp"},{"name":"hallway-test","title":"Hallway Test","summary":"Five simulated people with code-enforced limits (low vision, screen reader, colour blindness, tremor) usability-test your web page in real browsers and report who got stuck and why.","disclosure":"the hallway_test tool opens the page you or the agent name in headless Chromium (Playwright) and five simulated testers browse it, sending page text and screenshots to the model set for 'Hallway Test people' (your main model if unset); only http/https pages are opened, link-local and cloud-metadata addresses are always refused and private-network hosts only when allow_private_hosts is on (loopback always allowed), with each navigation redirect checked (subresource redirects are logged, not blocked); the bundled demo is served on 127.0.0.1; reports, screenshots and replays are saved under $HERMES_HOME/plugin-data/hallway-test/; no telemetry.","category":"tools","platforms":[],"maintainer":"lexipej","author":"lexipej","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/lexipej/hallway-test","docs":"https://github.com/lexipej/hallway-test#readme","tools":["hallway_test"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152475,"prs":[{"n":152475,"state":"merged","created":"2026-11-10T06:47:47Z"}],"created":"2026-11-10T06:47:47Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/lexipej/hallway-test/7e5381a56f411114e52e0a61d73664142dba7803/assets/group.jpg","https://github.com/user-attachments/assets/84032ce2-05bc-4c86-b71e-7f37dabdc3de","https://github.com/user-attachments/assets/91a4017f-b412-4720-972a-67d08da8a75f","https://github.com/user-attachments/assets/be038138-9c7a-41f6-a0d6-013b5847943c"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hallway-test.webp"},{"name":"housemate","title":"Housemate","summary":"Hands-free Hermes in every room: old phones, tablets and laptops become room speakers through their browser. Say the wake word, ask, and hear the answer in the same room. One household conversation across rooms, the nearest device answers when several hear you, timers and alarms that ring where they were set, intercom, cards on room screens, spoken approvals, and a Rooms page in Hermes Desktop.","disclosure":"the gateway runs an HTTPS + WebSocket hub on 0.0.0.0:8742 (self-signed certificate made on first start; its fingerprint is shown on the Rooms page and by hermes housemate cert) and a loopback control API on 127.0.0.1:8743 with a token that changes on every start; only devices paired with a six-digit code approved on the PC are heard. Each started satellite streams its microphone to the hub continuously; the hub keeps the stream in memory and hands only the question after the wake word (or a held talk button or an open answer window) to Hermes's audio cache and the STT provider configured in Hermes; replies use the configured TTS. On first start it downloads openWakeWord v0.5.1 models (CC BY-NC-SA 4.0, non-commercial) from the official openWakeWord GitHub release and Silero VAD v6.2.3 from the official silero-vad repository, each pinned by SHA-256, into plugin-data/housemate/models/. It registers an optional streamed Piper voice (tts.provider: housemate-piper); when chosen, a missing voice is fetched with Piper's own downloader into Hermes's cache/piper-voices. Runs ffmpeg from PATH to decode non-WAV speech. A start-up warm-up sends one quiet tone through Hermes's STT in a side chat that the plugin's pre_llm_call hook vetoes (prewarm: false turns it off); the same hook applies spoken approve, deny, clarify and stop answers to Hermes's own cards by request id through resolve_gateway_approval_card and resolve_gateway_clarify, never auto-approves, leaves an unanswered approval to Hermes's timeout (deny), and takes only a tap for commands flagged by smart approval. The agent can speak in other rooms with housemate_announce, and /announce does the same from any chat. Writes only under plugin-data/housemate/ (SQLite with rooms, devices and SHA-256 hashes of their keys, timers; the certificate and private key; the control token), except that the Rooms page's Household / Per room switch writes platforms.housemate.conversation to config.yaml; paired device ids are set as the platform's allow_from in memory. The gateway log records the first 80 characters of spoken answers to prompts. hermes housemate bench is opt-in: it downloads about 266 MB of public-domain LibriVox audio from archive.org (SHA-1 pinned), may generate test clips with Microsoft's Edge TTS service when edge-tts is installed, and pairs a device named Bench satellite. No telemetry.","category":"platform","platforms":[],"maintainer":"RaYYeR220","author":"RaYYeR220","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/RaYYeR220/housemate","docs":"https://github.com/RaYYeR220/housemate/blob/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/README.md","tools":["housemate_rooms","housemate_announce","housemate_timer_set","housemate_alarm_set","housemate_timer_list","housemate_timer_cancel","housemate_show"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"The wake phrase is \"Hey Jarvis\" (openWakeWord's stock model). A custom \"Hey Hermes\" model missed our accuracy bar on non-US accents and is not shipped.; openWakeWord's wake-word models are CC BY-NC-SA 4.0, so the wake pipeline is for non-commercial use.; Needs speech-to-text turned on in Hermes (stt.enabled, any provider) and a text-to-speech voice.; On Hermes 0.23.0 the Rooms page uses the plugin's REST routes; the plugin RPC path for newer builds is unit-tested only. Tested in the Webapp, not in the native Desktop app.; The first answer after a gateway restart takes about 7 s.; Tested on Windows 11 with Chrome; macOS and Safari are untested.","state":"merged","pr":152458,"prs":[{"n":152458,"state":"merged","created":"2026-11-10T06:10:07Z"}],"created":"2026-11-10T06:10:07Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/banner.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/rooms-arbitration-light.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/satellite-speaking.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/satellite-approval.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/satellite-timer-ringing.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/satellite-card.png","https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/docs/screens/rooms-speaking-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/housemate.webp"},{"name":"half-life","title":"Half-Life","summary":"Freshness labels for supported read-only tool results.","disclosure":"","category":"tools","platforms":[],"maintainer":"DSW Enterprises","author":"dominator509","version":"0.3.5","requires_hermes":">=0.22.7","repo":"https://github.com/dominator509/half-life","docs":null,"tools":[],"hooks":["post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152452,"prs":[{"n":152452,"state":"merged","created":"2026-11-10T05:55:50Z"}],"created":"2026-11-10T05:55:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"heats","title":"heats","summary":"Your tests, not the model, decide when a fix is done. A pre_verify referee runs the repo's check when the agent edited code and is about to finish, and sends it back with the real test output if the check fails. When one attempt is not enough, heats_run races N attempts in separate git worktrees (subagents launched through the public lifecycle API, kept inside their worktree by a tool_request middleware); failing attempts are restarted with the measured output, attempts that edit tests cannot win, and the winner is applied with one call. Desktop pane with live lanes and an Apply winner button.","disclosure":"the referee runs your check command in your checkout after code edits, only in repos you approved with /heats trust (none by default; it will not run a check whose defining files the agent edited in that turn); heats_run asks for your approval before running a model-supplied or untrusted check; checks get a minimal environment (no provider keys); races create and remove git worktrees and branches under <repo>/.heats/, run the check in each worktree (never for an attempt that edited what the check runs) and launch N subagents on your delegation model (cost scales with N); saves reports and patches under plugin-data/heats; Desktop routes under /api/plugins/heats/; no network calls of its own, no telemetry, no credentials.","category":"tools","platforms":["linux","macos"],"maintainer":"EconLearn","author":"EconLearn","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/EconLearn/hermes-heats","docs":"https://github.com/EconLearn/hermes-heats#readme","tools":["heats_run","heats_wait","heats_apply"],"hooks":["pre_tool_call","post_tool_call","pre_verify"],"middleware":["tool_request"],"env":[],"known_issues":"","state":"closed","pr":152450,"prs":[{"n":152450,"state":"closed","created":"2026-11-10T05:39:14Z"}],"created":"2026-11-10T05:39:14Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"babysit","title":"Babysit","summary":"Watches a long job's log (training run, build, migration) with zero model calls, keeps one chat message updated in place, and wakes the agent only when the job hits a non-finite value, out-of-memory error, traceback, stall, process exit or a line containing your alert text.","disclosure":"Babysit reads the selected log file through one read-only handle, opened without following symlinks and checked again from the handle itself, so replacing the path afterwards changes nothing it reads. It accepts absolute paths only and refuses files inside the active profile's Hermes home, the Hermes root that holds every profile, `~/.ssh`, `~/.aws`, `~/.gnupg`, `~/.kube`, `~/.docker`, `~/.config`, `/etc`, `/proc`, `/sys` and `/dev`, files with credential-looking names such as `.env`, `id_*`, `*.pem`, `*.key` and `auth.json`, shell and database history files (`.bash_history`, `.zsh_history`, `.python_history`, `.psql_history` and every other `.*_history`), `~/.pgpass`, `~/.netrc`, `~/.git-credentials`, hard-linked files, and anything that is not a regular file. When a PID is given, every 4 seconds it reads that process's resident memory through psutil, plus the cgroup memory limit from `/sys/fs/cgroup` or the system's available memory, and when the process ends it reads its exit status without reaping it. It never writes to the log, makes no network requests of its own, sends no signals and spawns no child processes. For the Desktop pane it writes one JSON file per watch, `<hermes home>/plugin-data/babysit/watches/<watch id>.json`, owner-only and replaced atomically whenever the state changes and at least every 4 seconds. Each file holds the watch's file name, log path, PID, metric series, memory samples, events, counters and the last 12 log lines (200 characters each). Files of watches that ended a day ago, and all but the newest 24, are removed when a watch starts. The read-only dashboard route `GET /api/plugins/babysit/watches` reads those files and writes nothing. Its one runtime dependency beyond the standard library is psutil, which Hermes pins. It creates one daemon thread per watch. Babysit and Hermes read the plugin's `allow_gateway_injection` setting in the profile Babysit runs in to check injection permission. The watch loop makes no model calls. Detected events are sent to the current session, which may start an agent turn.","category":"automation","platforms":[],"maintainer":"aarav1656","author":"aarav1656","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/aarav1656/babysit","docs":"https://github.com/aarav1656/babysit","tools":["babysit_watch","babysit_stop","babysit_list"],"hooks":["on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152711,"prs":[{"n":152711,"state":"merged","created":"2026-11-10T15:26:06Z"},{"n":152449,"state":"merged","created":"2026-11-10T05:36:02Z"},{"n":153972,"state":"open","created":"2026-11-11T21:10:52Z"}],"created":"2026-11-10T05:36:02Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/aaravweb3/status/2120620421985005923"],"youtube":[],"thumb":null},{"name":"decision-ledger","title":"Decision Ledger","summary":"Durable scoped decision receipts; models draft, a human reviews and confirms in a separate local terminal. Not an execution gate.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"GeoffP17","author":"GeoffP17","version":"0.3.1","requires_hermes":">=0.22.4","repo":"https://github.com/GeoffP17/hermes-decision-ledger","docs":null,"tools":["decision_ledger"],"hooks":[],"middleware":[],"env":[],"known_issues":"Live Hermes 0.22.4 /decisions gateway mutation refuses LOCAL context; use bundled direct foreground operator console.; Same-UID Python and SQLite access can bypass application-level approval checks.; Manual terminal step required; historical-source-backed proposals require another verified reviewer.","state":"merged","pr":152445,"prs":[{"n":152445,"state":"merged","created":"2026-11-10T05:24:22Z"}],"created":"2026-11-10T05:24:22Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tablekeeper","title":"Tablekeeper","summary":"Tabletop RPG campaigns for Hermes group chats. Code rolls the dice and owns hit points, positions, initiative and turn order, each player controls only their own character, and the model narrates the results. SRD 5.1 monsters, characters and spells.","disclosure":"Storage. `<hermes home>/plugin-data/tablekeeper/campaigns.sqlite3`, resolved per profile, WAL mode, file mode 0600. The Desktop pane and dashboard route open it read-only; Prompt. In a chat that has a campaign, and in a local CLI or Desktop session once it has used `/table` or a `tk_` tool, a compact state summary of at most about 600 tokens is added to each turn and the reply passes through the narration guard. The guard lets a reply quote any hit point or AC figure the state block listed or a tool returned, flags invented damage, rolls and hit points, and appends one compact correction line. A campaign with no table activity for 24 hours adds no prompt tokens until the next `tk_` call or `/table` command wakes it. Other sessions and chats without a campaign are untouched; Network and processes. None. The plugin makes no network requests, starts no subprocess and reads no credentials; Identity. Platform, chat id and sender id from the turn context, used as the campaign and owner keys.","category":"desktop","platforms":[],"maintainer":"kaverimeshram","author":"kaverimeshram","version":"0.3.0","requires_hermes":">=0.23.1","repo":"https://github.com/kaverimeshram/tablekeeper","docs":"https://github.com/kaverimeshram/tablekeeper","tools":["tk_state","tk_new_campaign","tk_claim_character","tk_roll","tk_check","tk_save","tk_attack","tk_cast","tk_move","tk_next_turn","tk_death_save","tk_rest","tk_start_combat","tk_damage","tk_heal","tk_condition","tk_recap"],"hooks":["pre_llm_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152752,"prs":[{"n":152752,"state":"merged","created":"2026-11-10T16:00:23Z"},{"n":152442,"state":"merged","created":"2026-11-10T05:21:41Z"},{"n":153914,"state":"open","created":"2026-11-11T20:37:41Z"}],"created":"2026-11-10T05:21:41Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kaverimeshram/tablekeeper/37e5a020728fa027e63d7444993a48eb78f7ce1f/docs/cover.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/37e5a020728fa027e63d7444993a48eb78f7ce1f/docs/tabletop-3d.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/37e5a020728fa027e63d7444993a48eb78f7ce1f/docs/pane.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/a5cde35ec584c2b71b5b032a186478fdd4f291d0/docs/cover.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/a5cde35ec584c2b71b5b032a186478fdd4f291d0/docs/pane.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/c80ea3fbdca41d68fdfc3ee4439036f787e8864b/docs/cover.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/c80ea3fbdca41d68fdfc3ee4439036f787e8864b/docs/tabletop-3d.png","https://raw.githubusercontent.com/kaverimeshram/tablekeeper/c80ea3fbdca41d68fdfc3ee4439036f787e8864b/docs/pane.png"],"videos":[],"x":["https://x.com/_kavericodes/status/2120615015988535507"],"youtube":[],"thumb":"/hackathon/thumbs/tablekeeper.webp"},{"name":"baton","title":"Baton","summary":"Hand your session and repository to your remote Hermes agent (Hermes Cloud, a VPS or a Docker container) with /baton \"fix the parser, done when pytest passes\": the remote works in a throwaway worktree, cannot return verified until the agreed check is green on the exact tree it returns, and `hermes baton land <id>` fetches the tested branch baton/<id> without touching your HEAD, index, working tree or stash. Code travels by git, the order by the Hermes Runs API, state by git refs; every step resumes after a network cut.","disclosure":"pushes a snapshot commit of the repository (tracked changes and untracked files not ignored by .gitignore; a blocking secret scan first refuses .env files, keys and tokens, and symlinks that point outside the repository are refused) to the git remote you configure in remote_git and fetches baton refs from it; sends the task and a redacted session transcript (`hermes sessions export --redact` plus an extra redaction pass, capped at 64 KB) to the peer Hermes API server at the URL you register, with the peer key read through Hermes's secret scope; runs `git` (with a minimal environment) and `hermes sessions export` as subprocesses; on a machine set to role remote or both, runs the agreed check without a shell only when its argv matches the remote's allowed_checks plus safe flags, with an empty throwaway HOME, no HERMES_* variables or provider keys, and a timeout. Without a usable bubblewrap (e.g. the official Docker image) or with sandbox: off, the project's code runs with the remote user's rights and can read the Hermes home, so only accept batons from your own machines. Landing creates branch baton/<id> without touching HEAD, the index or the working tree; no telemetry.","category":"automation","platforms":["linux","macos"],"maintainer":"4n0nn43x","author":"4n0nn43x","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/4n0nn43x/hermes-baton","docs":"https://github.com/4n0nn43x/hermes-baton#readme","tools":["baton_receive","baton_check","baton_return"],"hooks":["pre_verify"],"middleware":[],"env":[],"known_issues":"Tested on Linux; macOS is not tested yet. Windows is not supported.; Both sides need the plugin installed and a git remote they can both push to and fetch from.; Reaching a Hermes Cloud instance depends on that instance exposing the API server (not verified on Hermes Cloud).; Without a usable bubblewrap on the remote (the case inside the official Docker image, tested with demo/run-docker.sh), the check runs unsandboxed and the project's code can read the Hermes home by absolute path.","state":"merged","pr":152441,"prs":[{"n":152441,"state":"merged","created":"2026-11-10T05:02:39Z"}],"created":"2026-11-10T05:02:39Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/4n0nn43x/hermes-baton/203148f8d8db0da2e68fe517810877c51bff3031/docs/banner.png","https://raw.githubusercontent.com/4n0nn43x/hermes-baton/203148f8d8db0da2e68fe517810877c51bff3031/docs/screens/01-pass.png","https://raw.githubusercontent.com/4n0nn43x/hermes-baton/203148f8d8db0da2e68fe517810877c51bff3031/docs/screens/02-remote-check.png","https://raw.githubusercontent.com/4n0nn43x/hermes-baton/203148f8d8db0da2e68fe517810877c51bff3031/docs/screens/03-land.png"],"videos":[],"x":["https://x.com/0x___eth/status/2120016785609269607"],"youtube":[],"thumb":"/hackathon/thumbs/baton.webp"},{"name":"popquiz","title":"Pop Quiz","summary":"Pop Quiz, the room vs the models: any document becomes a live quiz for the whole room in about a minute. Hermes writes the questions and the plugin refuses every question whose quote is not found verbatim in the document; people join from their phones with a QR code (no app, no account) while up to four Nous Portal models play the same questions on the same clock, with latency and cost on screen (a free preset plays models the Portal prices at $0); the report says what the room got wrong and which model understood the document best, for what cost.","disclosure":"runs an aiohttp web server on 127.0.0.1:8765 by default while a quiz is up (it stops 10 minutes after the game ends); \"Open to phones\" (the /popquiz command, or the agent calling popquiz_control open_lan without an approval prompt) adds one listener on the machine's private LAN address (never all interfaces), plain HTTP, and from then on anyone on that network can watch the projector page (questions, source quotes, room code), join as a player and read the end-of-game report; the host page and host commands need the host token and a loopback client (with a public_url tunnel every visitor arrives as loopback, so only the token protects them); model players are ctx.llm calls on your Nous Portal account, started when the game starts (the agent can start it), paid unless you pick the free preset, capped per game by budget_usd (default 1 USD) against estimated costs, with no cap for a model the public price list does not know (a custom players entry, or your main model when the llm.model_override and llm.provider_override capabilities are not granted); in open_book mode each call carries the document text (up to 400 000 characters); if the Portal refuses a call, Hermes may retry it on its fallback chain and then on your main model and provider, and such answers are labelled fallback model; at the end of a game the report (with player nicknames typed by the people in the room) is posted into the chat as a user message, which starts a model turn; fetches the public Nous Portal model list for prices at most once a day (no key sent) and caches it in its plugin state, the only thing it writes; reads only the document the agent is given, inside the session folder or the Hermes document cache; an opt-in Desktop pane frames the projector page in the SDK's SandboxedFrame; no telemetry.","category":"general","platforms":[],"maintainer":"4n0nn43x","author":"4n0nn43x","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/4n0nn43x/hermes-popquiz","docs":"https://github.com/4n0nn43x/hermes-popquiz#readme","tools":["popquiz_create","popquiz_control","popquiz_status","popquiz_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"Tested on Linux (Ubuntu 26.04); macOS and Windows are not tested yet.; Phones must reach the host machine on the local network; guest Wi-Fi with client isolation blocks them.; Paid model players need Nous Portal credit; without it their answers are refused ($0) and the game still runs for the humans. The free preset needs no credit.; The Desktop pane was checked in headless Chromium with the same sandboxed frame, not yet inside the Desktop app.","state":"merged","pr":152440,"prs":[{"n":152440,"state":"merged","created":"2026-11-10T05:02:35Z"}],"created":"2026-11-10T05:02:35Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/4n0nn43x/hermes-popquiz/129c888322e31143f139761a6ef853b5a9d1cf5d/docs/banner.png","https://raw.githubusercontent.com/4n0nn43x/hermes-popquiz/129c888322e31143f139761a6ef853b5a9d1cf5d/docs/screens/01-projector-question.png","https://raw.githubusercontent.com/4n0nn43x/hermes-popquiz/129c888322e31143f139761a6ef853b5a9d1cf5d/docs/screens/02-phone.png","https://raw.githubusercontent.com/4n0nn43x/hermes-popquiz/129c888322e31143f139761a6ef853b5a9d1cf5d/docs/screens/03-room-vs-models.png","https://raw.githubusercontent.com/4n0nn43x/hermes-popquiz/129c888322e31143f139761a6ef853b5a9d1cf5d/docs/screens/04-report.png"],"videos":[],"x":["https://x.com/0x___eth/status/2120017154171101581"],"youtube":[],"thumb":"/hackathon/thumbs/popquiz.webp"},{"name":"reflexes","title":"Reflexes","summary":"Senses for your computer: when a file lands in a folder, a USB stick or SD card is connected, or a log file gets a matching line, Hermes starts a turn in the chat that armed the reflex and acts with its normal tools and approvals. Nobody types anything. Durable queue, loop protection (a reflex firing more than 30 times an hour pauses itself), missed firings are logged, never dropped silently. Includes /reflex commands, a bundled skill and a Hermes Desktop page.","disclosure":"starts agent turns nobody typed (via ctx.inject_message) in the chat that armed a reflex. Reflexes are armed only by you (/reflex or the Desktop page) or by the model after a Hermes approval prompt. Gateway, TUI and Desktop delivery also needs plugins.entries.reflexes.allow_gateway_injection, but reflexes armed in the classic `hermes chat` terminal run there without that grant and without being displayed. It lists the folders you name about once a second (names, sizes, times) and opens new files briefly only to check they are complete. For log reflexes it reads the bytes appended to the one file you name and sends matching lines (and any /regex/ you give is run on every new line) to your model. It enumerates connected drives and lists the top level of a newly connected one, runs a background thread while Hermes runs, and stores a local SQLite database at <HERMES_HOME>/plugin-data/reflexes/reflexes.db. No network, telemetry, shell commands, subprocesses, credentials or dependencies beyond the Python standard library (uses ctypes on Windows to list drives).","category":"automation","platforms":[],"maintainer":"zahmed333","author":"zahmed333","version":"0.2.0","requires_hermes":">=0.22.6","repo":"https://github.com/zahmed333/reflexes","docs":"https://github.com/zahmed333/reflexes/tree/feedfef4057b94892158b5ccee4fb98ac0f2239f/reflexes#readme","tools":["reflex_add","reflex_manage"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Tested live on Windows 11 with Hermes 0.22.6 and 0.23.1. macOS and Linux code paths are covered by unit tests only.; Needs plugins.entries.reflexes.allow_gateway_injection set to true; until then firings are logged but not delivered.; Runs only while Hermes runs. The classic `hermes chat` terminal runs reflex turns without displaying them.","state":"merged","pr":152438,"prs":[{"n":152438,"state":"merged","created":"2026-11-10T04:53:21Z"}],"created":"2026-11-10T04:53:21Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-action-bar","title":"Action Bar","summary":"A selection bar for Hermes Desktop with two kinds of action. Select text in a chat and a small bar appears: Reply, Ask, Explain, Summarize, Fact-check, Copy. Reply keeps the quote and one comment as a card above the composer; the cards go in front of your message as Markdown blockquotes when you send, so several passages each get their own comment in one message. Ask and the fixed actions open an answer card next to the highlight, with follow-up questions: the answer does not enter the chat and the agent does not see it, unless you click Send to chat, which puts it in the composer without sending. Actions are a label and a prompt, editable on a settings page, with an optional research set. Desktop-only (desktop/plugin.js inside the plugin SDK surface): no agent tools, hooks or env vars.","disclosure":"reads the text you highlight (window.getSelection) in Hermes Desktop; an answer card (Ask/Explain/Summarize/Fact-check) sends the selected text (up to 6000 characters), up to 4000 characters of surrounding text and the card's earlier turns to your configured model through Hermes' stateless llm.oneshot request (the open chat's model, else the auxiliary model) and writes nothing to the session; Reply and Copy send nothing; a composer middleware prepends pending quoted replies to your next message; links in answers open in your browser only when clicked; no other network calls, no credentials, no telemetry.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"fquresh","author":"fquresh","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/fquresh/hermes-action-bar","docs":"https://github.com/fquresh/hermes-action-bar#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152437,"prs":[{"n":152437,"state":"merged","created":"2026-11-10T04:53:01Z"},{"n":154057,"state":"open","created":"2026-11-11T21:53:32Z"}],"created":"2026-11-10T04:53:01Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/banner.png","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/bar.jpg","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/reply-cards.jpg","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/answer-card.jpg","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/settings.jpg","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/reply.gif","https://raw.githubusercontent.com/fquresh/hermes-action-bar/969c477552441d02381c5c3e1bedbc3a3c753449/docs/media/ask.gif","https://raw.githubusercontent.com/fquresh/hermes-action-bar/0e9b63ec6667e8b4e334f856e0c279a32c7a7d75/docs/media/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-action-bar.webp"},{"name":"pollinations","title":"Pollinations","summary":"Pollinations image generation and editing for image_generate. The model picker is read live from the Pollinations catalog, so models appear and disappear without a plugin update. No key is needed for the free classic model, which is watermarked, throttled to about one image per 45 seconds per IP, and capped at 768x768 pixels of area. A Pollinations key unlocks the Quest-eligible catalog with no watermark and no per-IP throttle; paid-only models stay hidden behind a default-off toggle.","disclosure":"sends prompts and any reference images to Pollinations (gen.pollinations.ai, image.pollinations.ai); with no key the free classic route is used (prompt in the request URL, watermarked, throttled per IP). A reference image given as a URL is downloaded from that host first (public addresses only, through Hermes' SSRF guard) and a local reference path may be any image file the user can read (PNG/JPEG/GIF/WebP, checked by magic bytes); both are then uploaded to Pollinations. With POLLINATIONS_API_KEY set, generation and editing spend the account's Pollen; the \"Include paid models\" toggle only hides paid-only models in the picker, a paid model set by id is still billed. Caches the model catalog and free-model list under $HERMES_HOME/cache/ and writes images under $HERMES_HOME/cache/generated/images/. No telemetry, no shell, no background processes, no self-update.","category":"tools","platforms":[],"maintainer":"greythx","author":"greythx","version":"1.4.0","requires_hermes":">=0.21.6","repo":"https://github.com/greythx/hermes-pollinations","docs":"https://github.com/greythx/hermes-pollinations#readme","tools":[],"hooks":[],"middleware":[],"env":["POLLINATIONS_API_KEY"],"known_issues":"","state":"merged","pr":152423,"prs":[{"n":152423,"state":"merged","created":"2026-11-10T04:23:53Z"}],"created":"2026-11-10T04:23:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sheets","title":"Hermes Sheets","summary":"An agentic spreadsheet. Ask for a sheet and a Hermes agent finds the rows on the web, each with its source, or bring your own. Hermes suggests typed columns, fills only the ones you pick, explains what the answers add up to, and, once you allow it, lets any chat read your grids and propose cells, columns and rows that you approve and can undo. Formula columns, a totals row and Excel export are built in.","disclosure":"Build sheet, research columns and Ask start hidden Hermes sessions that use your Hermes tools and read third-party web pages; approval prompts inside build and research sessions are denied; import reads and export writes the one file you pick in the system dialog, through the plugin's own backend, and the folder source reads a folder you grant; grids live in Desktop plugin storage, with a copy under plugin-data/sheets/ only after you turn on chat access, which starts off; no telemetry, no credentials, no shell commands or background processes of its own. Independent community project, not affiliated with Nous Research.","category":"desktop","platforms":[],"maintainer":"Adolanium","author":"Adolanium","version":"0.1.2","requires_hermes":">=0.22.6","repo":"https://github.com/Adolanium/hermes-sheets","docs":"https://github.com/Adolanium/hermes-sheets#readme","tools":["sheets_list","sheets_read","sheets_propose","sheets_create"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152421,"prs":[{"n":152421,"state":"merged","created":"2026-11-10T04:22:55Z"}],"created":"2026-11-10T04:22:55Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Adolanium/hermes-sheets/65888b7c6a0304d61ac5f1d060a5d4bd95ee73eb/docs/assets/catalog.png","https://raw.githubusercontent.com/Adolanium/hermes-sheets/65888b7c6a0304d61ac5f1d060a5d4bd95ee73eb/docs/assets/hero.jpg","https://raw.githubusercontent.com/Adolanium/hermes-sheets/65888b7c6a0304d61ac5f1d060a5d4bd95ee73eb/docs/assets/built.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sheets.webp"},{"name":"second-key","title":"second-key","summary":"Team approvals for shared Hermes bots. Dangerous commands need N votes from your roster by Telegram DM, sized to the risk. The requester never counts, and an agent that edits its own approval settings is stopped on its next tool call. No answer, an error or too few approvers always means deny.","disclosure":"Disclosure: Network: `api.telegram.org` only, with the bot token from `SECONDKEY_TELEGRAM_BOT_TOKEN`. Redirects are refused; What approvers see: the command after Hermes' own redaction, Hermes' reason for asking, and the requester's display name, platform and platform user id. While a ballot is open the DMs are edited in place about every 15 seconds with the current votes and time left. The same ballot text, plus a note that their own vote does not count, is also posted to the Telegram chat the request came from (which may be a group) or to the requester's DM; Re-arming after a change that weakens the settings opens its own critical ballot to the previously armed roster; Background thread: one long-poll thread reads the bot's updates while a request is waiting for votes, and for five minutes after `/secondkey enroll`. It stops on its own once neither holds, and when the plugin unloads; Files: writes its ledger, the armed settings (`armed.json`) and a pane state file (`state.json`: open and last eight closed ballots with the redacted command, requester name and approver names) under `plugin-data/second-key/`. Reads Hermes' `config.yaml` (read-only) before tool calls and in its Desktop Approvals pane, whose dashboard route is read-only; Credentials: reads the bot token through `agent.secret_scope.get_secret`. It never reads `.env`, `auth.json` or any other credential store; No telemetry, no self-updater, no shell commands, no dependencies beyond the standard library.","category":"tools","platforms":[],"maintainer":"kamalbuilds","author":"kamalbuilds","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/kamalbuilds/second-key","docs":"https://github.com/kamalbuilds/second-key","tools":[],"hooks":["pre_approval_request","pre_gateway_dispatch","pre_tool_call"],"middleware":[],"env":["SECONDKEY_TELEGRAM_BOT_TOKEN"],"known_issues":"","state":"merged","pr":152705,"prs":[{"n":152705,"state":"merged","created":"2026-11-10T15:23:25Z"},{"n":152420,"state":"merged","created":"2026-11-10T04:22:27Z"}],"created":"2026-11-10T04:22:27Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"goalpost","title":"Goalpost","summary":"Stops an AI agent from making tests pass by weakening the tests. Before a test-file edit or a test command that hides failures runs, Goalpost reads the change and blocks it: adding a skip or xfail marker, deleting a test, removing an assertion, or appending \"|| true\", \"--exit-zero\" or \"--no-verify\". The agent is told why and steered to fix the code. Text-based and model-free, with a local ledger of every decision; mode is block, warn or off.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/goalpost","docs":"https://github.com/salch-cred/goalpost","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152419,"prs":[{"n":152419,"state":"merged","created":"2026-11-10T04:19:55Z"}],"created":"2026-11-10T04:19:55Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"thread","title":"thread","summary":"Operational session continuity — captures what you were working on and what you owe at session end, then re-orients the next session. Includes live Desktop dashboard pane. Hermes never starts cold.","disclosure":"","category":"memory","platforms":[],"maintainer":"Danny Purdy","author":"visioninspirationperformance-sketch","version":"2.0.0","requires_hermes":">=0.21","repo":"https://github.com/VIP-DANaiL/hermes-thread","docs":null,"tools":["thread_whats_owed","thread_log","thread_dashboard","thread_resolve"],"hooks":["pre_llm_call","post_tool_call","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152418,"prs":[{"n":152418,"state":"open","created":"2026-11-10T04:17:08Z"}],"created":"2026-11-10T04:17:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proactive-agent","title":"Proactive Agent","summary":"Turn governance and supervision for long chat turns. After 60 s in one turn the main agent is reminded to answer or delegate, and at 120 s editing and execution pause while reads, delegate_task and wrap-up tools stay available; a foreground terminal command running past 30 s is asked to yield to Hermes's background process registry (the same path a mid-turn user message takes) so the turn is released instead of hanging. Each subagent is briefed before it starts with the user's own words, memory and the task ledger; a subagent that returns the same step result repeatedly is stopped, a subagent's open question is carried back to the main agent, and a background subagent's result is repeated until the user has seen it. Delegated tasks are recorded in a SQLite ledger that survives gateway restarts. Governance is a positive allowlist: only the platforms named in governed_platforms (default weixin) and the subagents they spawn are affected, and every other surface runs untouched.","disclosure":"registers hooks for pre_llm_call, pre_api_request, pre_auxiliary_call, post_auxiliary_call, pre_tool_call, post_tool_call, transform_tool_result, subagent_start, subagent_stop, on_session_end, on_session_reset and on_session_finalize, a system-prompt section and a tool_execution middleware, so for governed sessions it can block or amend tool calls and results, LLM request context and subagent handoffs, and asks a governed foreground terminal command still running after 30 s to move to Hermes's background process registry (through core's internal yield flag, which a Hermes release may change); it copies your Hermes USER.md and MEMORY.md memory files in full into every governed delegate_task brief, can start an internal agent turn via inject_message to re-report an unseen subagent result, and writes a local ledger.db under the plugin's Hermes data directory; no network calls, no agent tools, no credentials, no shell commands.","category":"automation","platforms":[],"maintainer":"JerryLiu369","author":"JerryLiu369","version":"0.1.16","requires_hermes":">=0.22","repo":"https://github.com/JerryLiu369/hermes-proactive-agent","docs":"https://github.com/JerryLiu369/hermes-proactive-agent","tools":[],"hooks":["pre_llm_call","pre_api_request","pre_auxiliary_call","post_auxiliary_call","pre_tool_call","post_tool_call","transform_tool_result","subagent_start","subagent_stop","on_session_end","on_session_reset","on_session_finalize"],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":152416,"prs":[{"n":152416,"state":"merged","created":"2026-11-10T04:14:26Z"}],"created":"2026-11-10T04:14:26Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"print-tools","title":"CUPS Print Tools","summary":"Printer-agnostic Linux CUPS printing for Hermes: queue status, files, wrapped text, and styled one-page letters.","disclosure":"every print tool call sends a real job to a CUPS queue installed on this machine (local or network printer, 1-5 copies, at most 20 pages) with no approval prompt; `print_file` reads a model-chosen JPEG/PNG/PDF/TXT/MD file under your home or temp directory (20 MB limit) and sends it to that printer; runs `lpstat`, `lp`, Ghostscript (`gs -dSAFER`), the CUPS `texttopdf` filter, `fc-match` and a Pillow letter renderer as child processes with a minimal environment (no Hermes keys forwarded); no network calls of its own, no telemetry, no credentials.","category":"tools","platforms":["linux"],"maintainer":"alxspiker","author":"alxspiker","version":"1.0.1","requires_hermes":"","repo":"https://github.com/alxspiker/hermes-print-tools","docs":null,"tools":["printer_status","print_file","print_text","print_letter"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152415,"prs":[{"n":152415,"state":"merged","created":"2026-11-10T04:11:33Z"}],"created":"2026-11-10T04:11:33Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"voice-unleashed","title":"Voice Unleashed","summary":"A hands-free voice interface to Hermes, for any model, on your own VoiceManager server. The plugin serves a web page, so any device with a browser, a microphone and a speaker is the client, a phone, a tablet on a wall or a spare laptop: you talk, Hermes answers out loud while the model writes, and you talk over a reply to stop it. The page shows the conversation, each tool call and the model's reasoning, speaks approval prompts and the model's questions and takes spoken answers, and picks up any session of the profile or starts a new one. Hermes Desktop and Webapp chats get a voice toggle.","disclosure":"adds the voice_unleashed gateway platform, which listens on VOICE_UNLEASHED_HOST:VOICE_UNLEASHED_PORT (default 127.0.0.1:8765) for the page, its session list and its WebSocket, all behind the VOICE_UNLEASHED_TOKEN access token; microphone audio and reply text go only to the VoiceManager server you set (VOICE_UNLEASHED_VOICEMANAGER_URL, bearer VOICE_UNLEASHED_VOICEMANAGER_TOKEN); the session list and history are read from the profile's own Hermes state and nothing is stored. It registers stream observers (on_stream_delta, on_stream_end, on_session_end), which makes Hermes use streaming requests on every surface, tool observers (pre_tool_call, post_tool_call) that run for every conversation and never block a call, and pre_llm_call, which adds one instruction (start the reply with a short spoken summary) only to a Desktop or Webapp chat that has voice on. The Desktop half ships switched off. No Python dependencies beyond Hermes core (websockets, httpx); VoiceManager's client is vendored. Disclosure — adds the voice_unleashed gateway platform, which listens on VOICE_UNLEASHED_HOST:VOICE_UNLEASHED_PORT (default 127.0.0.1:8765) for the page, its session list and its WebSocket, all behind the VOICE_UNLEASHED_TOKEN access token carried in the page URL; whoever holds the token is the platform's one gateway user (owner), is made its slash-command admin, can list, resume and read the history of every session of the profile, and answers approval prompts by voice, where a single spoken approval word (including \"always\") is sent as the reply, so a misheard word can approve a command; microphone audio and reply text go only to the VoiceManager server you set (VOICE_UNLEASHED_VOICEMANAGER_URL, bearer VOICE_UNLEASHED_VOICEMANAGER_TOKEN), and nothing is stored; it registers stream observers (on_stream_delta, on_stream_end, on_session_end), which makes Hermes use streaming requests on every surface, tool observers (pre_tool_call, post_tool_call) that run for every conversation and never block a call, and pre_llm_call, which adds one instruction only to a Desktop or Webapp chat that has voice on; it reads a few undocumented core helpers and the gateway's session DB read-only, so a Hermes release can break it; the Desktop half ships switched off.","category":"voice","platforms":[],"maintainer":"TacoTakumi","author":"TacoTakumi","version":"0.3.2","requires_hermes":">=0.22.7","repo":"https://github.com/TacoTakumi/hermes-voice-unleashed","docs":"https://github.com/TacoTakumi/hermes-voice-unleashed#readme","tools":[],"hooks":["on_stream_delta","on_stream_end","on_session_end","pre_llm_call","pre_tool_call","post_tool_call"],"middleware":[],"env":["VOICE_UNLEASHED_TOKEN","VOICE_UNLEASHED_VOICEMANAGER_URL","VOICE_UNLEASHED_ALLOWED_USERS"],"known_issues":"Needs a VoiceManager server (0.7.0 or later).; A browser gives the microphone only to a page it treats as secure. On the machine Hermes runs on, localhost works as it is. From another device, either put HTTPS in front of the page (tailscale serve or a reverse proxy; the README has both) or add an exception for the page's address in the browser, for example Chrome's flag unsafely-treat-insecure-origin-as-secure. HTTPS is not required when the browser has such an exception.","state":"merged","pr":152412,"prs":[{"n":152412,"state":"merged","created":"2026-11-10T04:02:53Z"},{"n":153843,"state":"open","created":"2026-11-11T19:51:32Z"}],"created":"2026-11-10T04:02:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/TacoTakumiGH/status/2120604022193246526"],"youtube":[],"thumb":null},{"name":"rich-paste","title":"Rich Paste","summary":"Paste web pages, screenshots and Finder files into Hermes Desktop with their structure, and send each image to the model where it sits in your text. Web HTML becomes Markdown (headings, links, lists, tables, code) with its images downloaded and attached; an llm_request middleware moves each image block next to its label instead of after all the text (kimi-k3, several images per paragraph: 18/30 today, 30/30 interleaved). Also: screenshot chips placed after what you typed, Finder files and folders as Desktop blocks, TIFF/HEIC/BMP/AVIF sent as PNG, pasted audio transcribed with Hermes's own STT, Markdown preview.","disclosure":"network calls only to download the images of pages you paste (http/https; loopback, private, link-local and reserved addresses refused on every redirect, except DNS answers in 198.18.0.0/15 for proxy fake-ip setups; the pasted page's URL is sent as Referer; at most 50 images per paste and 20 MB each); no telemetry. Runs /usr/bin/osascript once per file paste to read file URLs on the macOS clipboard. Reads image attachments you add (hashes them, converts TIFF/HEIC/BMP/AVIF to PNG) and Desktop's saved long-paste files. Writes only under its cache folder. Pasted audio is transcribed with Hermes's own STT, which uploads it to your configured cloud STT provider when one is set (the plugin asks first). An llm_request middleware reorders the image blocks of every user message that carries its markers in the outgoing request.","category":"desktop","platforms":[],"maintainer":"ZhenningLang","author":"ZhenningLang","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/ZhenningLang/rich-paste","docs":null,"tools":[],"hooks":[],"middleware":["llm_request"],"env":[],"known_issues":"Tested on macOS only. Pasting Finder files needs macOS; elsewhere, drag files into the composer.","state":"merged","pr":152408,"prs":[{"n":152408,"state":"merged","created":"2026-11-10T03:53:25Z"}],"created":"2026-11-10T03:53:25Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/banner.png","https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/1-compare.png","https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/2-screenshots-in-place.png","https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/3-markdown-preview.png","https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/4-finder-files.png","https://raw.githubusercontent.com/ZhenningLang/rich-paste/1e3ec4bb45ce016aee1ce3e4d07d1d19fcc46e16/assets/catalog/5-transcribe.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rich-paste.webp"},{"name":"snippet","title":"Snippet","summary":"Connect a Snippet account to manage creator brand deals, sponsorship rates, brand emails, decisions and contract reviews through Snippet's hosted MCP server (Streamable HTTP at https://usesnippet.app/api/mcp, OAuth). Portable Agent Plugins v1 package (plugin.json + mcp.json), configuration only. After sign-in the hosted server currently exposes 13 tools: get_manager_briefing, list_deals, get_deal, search_inbox, get_inbox_thread, draft_reply, send_reply, get_rate_card, estimate_sponsorship_rate, find_brand_matches, review_brand_contract, get_work_log, and answer_decision.","disclosure":"every tool call goes to Snippet's hosted backend; the tool set is served by that server at runtime and is not covered by the pinned sha. A Snippet account is required; some actions require an active plan and available allowances. Portable hermes mcp login against this package does not start OAuth today (upstream issue 87253). Sign in with `hermes mcp add snippet --url https://usesnippet.app/api/mcp --auth oauth` in an interactive session. A same-name native entry replaces the package's server entry, trust included, so after sign-in add `trust: untrusted` to mcp_servers.snippet if you want Hermes to keep asking before write tools (including send_reply) and to block them in unattended runs. Hermes stores and refreshes the OAuth tokens. The package contains no credentials, local executables, dependencies, self-updater or telemetry code; hosted logging follows https://usesnippet.app/privacy.","category":"tools","platforms":[],"maintainer":"aaupadhy","author":"aaupadhy","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Snippet-Core/snippet-cursor-plugin","docs":"https://usesnippet.app/agents","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Portable hermes mcp login against this package does not start OAuth today (https://github.com/NousResearch/hermes-agent/issues/87253). Sign in with hermes mcp add and keep trust: untrusted.","state":"merged","pr":152404,"prs":[{"n":152404,"state":"closed","created":"2026-11-10T03:38:06Z"}],"created":"2026-11-10T03:38:06Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"theta-edge-node","title":"theta-edge-node","summary":"Run and monitor a Theta Edge Node from Hermes Desktop: install, launch, stop, track TFUEL rewards and node-wallet value, and export the node wallet locally.","disclosure":"","category":"desktop","platforms":["windows"],"maintainer":"bonesnasty","author":"bonesnasty","version":"0.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/bonesnasty/hermes-theta-edge-node","docs":"https://github.com/bonesnasty/hermes-theta-edge-node#readme","tools":["theta_node_status","theta_wallet_address"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152403,"prs":[{"n":152403,"state":"open","created":"2026-11-10T03:30:57Z"}],"created":"2026-11-10T03:30:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lithermes","title":"lithermes","summary":"Adds lit to Hermes Agent so a request is planned, built with tests and recorded checks, reviewed, and closed with a handoff note. 40 skills. MIT.","disclosure":"adds per-turn workflow context and output marks through Hermes hooks (including a ⛔ LIT: not done line when a reply claims completion while a goal's gate is closed or a lit session never opened one, and a pre_verify hook that asks the agent to keep going while the gate is closed) and writes its plans, goals, test baseline, handoff cards and run state under the workspace's .hermes/lithermes/ (default-on knowledge capture, opt-out: LITHERMES_WIKIFY_CAPTURE=0); after every terminal command it appends a signed note there with a redacted 100-character preview of the command and its exit code, and when a goal is open it reads the workspace's git state (rev-parse, ls-tree, ls-files) and scans its test files; keeps a per-install signing key at ~/.hermes/lithermes/litgoal.key; a new session reads other sessions' goal files in the same workspace to offer a resume (LITHERMES_GOAL_RESUME=0 turns it off); a read-only dashboard route, limited to folders inside the home directory and sending no CORS headers, feeds a Hermes Desktop goal pane; /lit-adhd reads recent Hermes session titles, asks and tool names from ~/.hermes/state.db read-only with the sqlite3 CLI; /lit-hijack downloads the URLs and files you name (web pages, PDFs, X posts via api.fxtwitter.com, git clones of github.com repos and gists) into the workspace; bundled skill runtimes install from their own lockfiles when a skill asks; the processes the plugin starts (git, node, a prose detector, pdftotext) get an allowlist environment without provider keys; reads Hermes internals read-only (context compressor, config defaults, model metadata, command registry, working-folder helpers), which can break on a Hermes release.","category":"automation","platforms":[],"maintainer":"wjgoarxiv","author":"wjgoarxiv","version":"1.0.38","requires_hermes":">=0.21.3","repo":"https://github.com/wjgoarxiv/lithermes","docs":"https://github.com/wjgoarxiv/lithermes","tools":["goal_status","goal_set","goal_add_criterion","goal_evidence","goal_criterion_status","goal_steer","goal_status_set","goal_checkpoint","goal_complete","lithermes_work_progress","lithermes_knowledge_capture"],"hooks":["on_session_start","pre_llm_call","pre_tool_call","pre_command","post_tool_call","transform_tool_result","post_api_request","subagent_stop","transform_llm_output","pre_verify","on_session_finalize","on_session_reset"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152399,"prs":[{"n":152399,"state":"merged","created":"2026-11-10T03:16:50Z"}],"created":"2026-11-10T03:16:50Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/wjgoarxiv/lithermes/3a0d3ee1cd521f5c37e5be2da97fde21f2667d1e/docs/assets/desktop-pane.webp"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lithermes.webp"},{"name":"nachalo","title":"Nachalo","summary":"Pair Hermes agents end-to-end from six spoken words (CPace + X25519 + ML-KEM-768) and catch a man in the middle with four safety words; the agent only drafts, a person sends.","disclosure":"talks to a relay (ntfy.sh by default or your relay_url, plus whichever relay each paired peer chose) that sees topics, IP addresses, timing and fixed-size encrypted frames, never contents; while a peer is active a background thread in the gateway holds an HTTPS subscription to it; peers, inbox, drafts and an audit log (no words, no keys) live in the profile's plugin-data/nachalo, and channel state is sealed with NACHALO_STORE_KEY, which the plugin creates once in the profile's .env with save_env_value and reads through the secret scope; pairing is human-only, peer messages are held and never start turns or tool calls (each turn the agent is told only how many are waiting and from which peer names, and reads them as untrusted content with nachalo_inbox), sending needs a person who sees the exact text and does not rely on approval modes, and cron or -q runs never pair or send; a pre_tool_call hook blocks agent terminal calls that drive the nachalo CLI or its data; the native code ships in the nachalo wheel on PyPI with provenance attestations; the protocol and channel are unaudited drafts.","category":"automation","platforms":["linux","macos"],"maintainer":"RamsisDev","author":"RamsisDev","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/RamsisDev/hermes-nachalo","docs":"https://github.com/RamsisDev/hermes-nachalo/blob/e2f0269570b9ea8a2922105bed027bed1b31830e/README.md","tools":["nachalo_peers","nachalo_inbox","nachalo_draft"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152398,"prs":[{"n":152398,"state":"merged","created":"2026-11-10T03:16:17Z"}],"created":"2026-11-10T03:16:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/RamsisDev/hermes-nachalo/e2f0269570b9ea8a2922105bed027bed1b31830e/docs/banner.png","https://raw.githubusercontent.com/RamsisDev/hermes-nachalo/e2f0269570b9ea8a2922105bed027bed1b31830e/docs/1-pair-words.png","https://raw.githubusercontent.com/RamsisDev/hermes-nachalo/e2f0269570b9ea8a2922105bed027bed1b31830e/docs/2-safety-words.png","https://raw.githubusercontent.com/RamsisDev/hermes-nachalo/e2f0269570b9ea8a2922105bed027bed1b31830e/docs/3-draft-send.png","https://raw.githubusercontent.com/RamsisDev/hermes-nachalo/e2f0269570b9ea8a2922105bed027bed1b31830e/docs/4-inbox-untrusted.png"],"videos":[],"x":["https://x.com/pxl_ram/status/2119986134960976167"],"youtube":[],"thumb":"/hackathon/thumbs/nachalo.webp"},{"name":"kujo-hermes","title":"kujo-hermes","summary":"Native discovery and execution of Kujo engineering, context, verification and orchestration tools with explicit human approvals and local execution receipts. Requires separately installed canonical Kujo runtime and source tooling.","disclosure":"runs the separately installed `kujo` binary (PATH or `kujo_bin`) and Kujo source checkouts that `hermes kujo setup` clones from github.com/kujolang at commits pinned in `catalog/sources.lock.json` (default `~/.local/share/kujo/hermes-sources`); read-only Abilities run in operator-trusted workspaces without a prompt, and every write/external or extension Ability needs a fresh human Hermes approval.","category":"tools","platforms":["macos","linux"],"maintainer":"kujolang","author":"robertdevore","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/kujolang/kujo-hermes","docs":"https://github.com/kujolang/kujo-hermes#readme","tools":["kujo_discover","kujo_inspect","kujo_execute","kujo_status","kujo_receipts","kujo_doctor"],"hooks":["pre_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152397,"prs":[{"n":152397,"state":"merged","created":"2026-11-10T03:15:50Z"}],"created":"2026-11-10T03:15:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/kujolang/kujo-hermes/a617957bb244604f4d536152038c6cd8263effaa/demo/checkout-video/delivery/kujo-hermes-checkout.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"world-window","title":"world-window","summary":"World news your agent walks to: headlines grouped by story across named, rated outlets, each in the outlet's own words and link. Pull only.","disclosure":"","category":"web","platforms":[],"maintainer":"alamonato","author":"alamonato","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/alamonato/world-window","docs":null,"tools":["world_news","world_news_sources"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152388,"prs":[{"n":152388,"state":"merged","created":"2026-11-10T02:49:44Z"}],"created":"2026-11-10T02:49:44Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-psfn-avatar","title":"PSFN 3D VRM Avatar","summary":"3D VRM VTuber and companion avatar overlay for Hermes Desktop and the Web Dashboard (Three.js + @pixiv/three-vrm, default Nous-Girl VRM with an on-demand catalog of DeepSeek-chan, Claude and Claude Suit, 42 baked ARDY humanoid motion clips, 28 GoEmotions mood performances, text-driven lip-sync that patches no host audio, eye/head gaze, touch reactions, and optional PSFN Lite continuous emotional-state bridge).","disclosure":"stores avatar state and user-uploaded .vrm/.glb models under ~/.hermes/plugin-data/hermes-psfn-avatar/ and caches VRM models in browser IndexedDB; fetches models on demand from raw.githubusercontent.com at pinned commits (Desktop verifies each by SHA-256 before caching; the Web Dashboard loads the same commit-pinned URLs without a digest check): the default Nous-Girl from CGIC-AI/nous-girl-vrm at 70bfc01c3bbc105267612f94486e0e7ee1b5a7d6 (SHA-256 34c72ebaf068f3d692c29e5b1878b42e0039f63a2b0679aab18bb365b4abc275), and when selected DeepSeek-chan from tegnike/deepseek-chan-vrm at 3aceb037df7a8b8126efea89d3a75664d1af868d (SHA-256 9fa455e48ee2271dc7c2b62f2f2edcd47709406ca89067b6f544979589958f42) and claude.vrm / claude_suit.vrm from SkyeShark/eidoverse-video at 404a00e7db3068af51bd914d61e608e6b8dc9b82 (SHA-256 883eb1d6c63c7409e1cbebb335509af346e92d046c4c9916ebc7695da4c64073 and 7be6286215c0d7e4251633ec741d9f5bde943dc635f05a312ca7d1b45bceaa5d); when the local FastAPI plugin route is absent, fetches baked motion clips from raw.githubusercontent.com/CGIC-AI/hermes-psfn-avatar at pinned commit 7b9a7f7f677b2fd25ed889b56e5ec83055202463; when psfn_lite_bridge is enabled and ~/.hermes/psfn-lite.json configures a loopback garden endpoint, queries GET <garden.url>/api/lite/overview on localhost using the profile's secret scope; the transform_llm_output hook removes the plugin's own ::avatar{} directive lines from replies (strip_directives, on by default); no shell commands, background daemons, or telemetry.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"axAilotl","author":"axAilotl","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/CGIC-AI/hermes-psfn-avatar","docs":"https://github.com/CGIC-AI/hermes-psfn-avatar#readme","tools":["vrm_avatar"],"hooks":["pre_llm_call","post_llm_call","transform_llm_output","pre_tool_call","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152387,"prs":[{"n":152387,"state":"merged","created":"2026-11-10T02:48:36Z"}],"created":"2026-11-10T02:48:36Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"draftroom","title":"Draftroom","summary":"A Markdown draft beside Hermes chat, with selected-text rewrites and explicit Accept/Reject review.","disclosure":"stores drafts, suggestions and retained revisions in this profile's plugin-data; draft content goes through the existing conversation/model; polls its own backend while open; optional user-initiated repository commit requests use the existing agent tools and approvals. The plugin itself runs no Git or shell commands and adds no direct third-party requests, credentials, telemetry, background service or self-update.","category":"desktop","platforms":["linux","macos"],"maintainer":"Techdox","author":"Techdox","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/Techdox/hermes-draftroom","docs":"https://github.com/Techdox/hermes-draftroom#readme","tools":["blog_draft"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires both Agent and local Desktop components; Linux/macOS backend with a recent Desktop SDK.; Unsaved buffers are memory-only and do not survive plugin/window reload or quitting.","state":"merged","pr":152383,"prs":[{"n":152383,"state":"closed","created":"2026-11-10T02:41:32Z"}],"created":"2026-11-10T02:41:32Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"opportunity-check","title":"opportunity-check","summary":"Read-only discovery and evidence checks for agent-work listings.","disclosure":"","category":"tools","platforms":[],"maintainer":"ronigrv","author":"ronigrv","version":"0.1.0","requires_hermes":"","repo":"https://github.com/ronigrv/hermes-opportunity-check","docs":null,"tools":["find_agent_work","check_github_task","screen_github_tasks","screen_agent_work","watch_agent_work"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152378,"prs":[{"n":152378,"state":"merged","created":"2026-11-10T02:33:00Z"}],"created":"2026-11-10T02:33:00Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-phone-use","title":"Hermes Phone Use","summary":"Operate your real iPhone or Android from any Hermes (for example one on a Linux server) through Pinky on the Mac the phone is connected to. Approvals and hand-offs wait for the person and are announced in chat; screenshots come back as images.","disclosure":"talks only to the Pinky URL you set (plain HTTP intended for a private network such as Tailscale), sending PINKY_TOKEN read through Hermes's secret route; Pinky decides which apps the agent may use, gates risky steps behind the person's approval and never lets the agent type passwords or codes; screen text and screenshots reach your model provider like any tool output, and screenshots are saved under $HERMES_HOME/plugin-data/hermes-phone-use/screenshots/; while Pinky waits for an approval the tool posts one line to the chat and waits up to 10 minutes (cron runs return approval_pending at once); no shell commands, no background processes, no telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"brucexu-eth","author":"brucexu-eth","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/brucexu-eth/hermes-phone-use","docs":null,"tools":["phone_apps","phone_batch","phone_connect","phone_files","phone_handoff","phone_key","phone_launch","phone_observe","phone_release","phone_request_approval","phone_swipe","phone_tap","phone_type","phone_wait_for"],"hooks":[],"middleware":[],"env":["PINKY_TOKEN"],"known_issues":"","state":"merged","pr":152379,"prs":[{"n":152379,"state":"merged","created":"2026-11-10T02:35:54Z"},{"n":152375,"state":"closed","created":"2026-11-10T02:24:45Z"}],"created":"2026-11-10T02:24:45Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ledger-guard","title":"ledger-guard","summary":"Deterministic double-count and arithmetic checker for stacked sales/event goal ledgers.","disclosure":"","category":"tools","platforms":[],"maintainer":"tonightsthenight","author":"tonightsthenight","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/tonightsthenight/Ledger-guard","docs":null,"tools":["ledger_guard_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152371,"prs":[{"n":152371,"state":"merged","created":"2026-11-10T02:14:38Z"}],"created":"2026-11-10T02:14:38Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"memtomem-memory","title":"memtomem-memory","summary":"Memory provider backed by memtomem: on eligible user turns (not greetings or slash commands) it asks memtomem for the notes most relevant to the message, through Hermes's own connection to a memtomem MCP entry, and injects what returns within its time budget as context, without a model tool call. Optionally (mirror_writes, off by default) it also copies what Hermes's built-in memory tool adds, replaces or removes in MEMORY.md / USER.md into memtomem. Needs Hermes with MCP support, memory.provider: memtomem-memory, the grant plugins.entries.memtomem-memory.mcp_allowlist: [memtomem], and a memtomem MCP entry with trust: full running memtomem 0.6.8 or later (0.7.8 or later for mirroring): the memtomem catalog plugin, or your own mcp_servers.memtomem.","disclosure":"each recall sends the turn's full message as the search query to whatever server that entry connects, local or remote; with mirroring on, each added, replaced or removed entry's text is sent too (a replace or remove also sends the full text of the entry it changed), and memtomem keeps the accepted ones in its database and renders them into a hermes-mirror/<profile hash>/<target>.md note that every profile on the same store can recall (a removed entry keeps only its key; an entry matching a memtomem privacy pattern is refused). It shares that entry's connection, call queue and circuit breaker with the model's memtomem tools. It starts no server, reads no credentials and uses the standard library only.","category":"memory","platforms":[],"maintainer":"memtomem","author":"memtomem","version":"0.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/memtomem/memtomem","docs":"https://github.com/memtomem/memtomem/tree/465e1abdf5285b2ebdce15e7c8fc6dd9d1a55601/packages/memtomem-hermes-memory","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152370,"prs":[{"n":152370,"state":"merged","created":"2026-11-10T02:11:46Z"}],"created":"2026-11-10T02:11:46Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ctx_handover","title":"ctx handover","summary":"Close your laptop after work and let the session go on on your server: ctx_handover moves a running Hermes session — the conversation, its project folder and the other files it works with — from one machine you own to another, and back. On the other machine you open the session and carry on, or, if you allow it there, the agent works on one more task by itself; without a direct connection, a single handover file does the job. How it works: the laptop pulls from the server (works behind NAT), the server receives a push, or a signed offline bundle (export/import) bridges machines without a direct route. The conversation (transcript) is transferred row by row and verified by hashes on both sides, git repositories keep branches, stash and uncommitted work, nothing local at the destination is overwritten, and the continuing agent gets a note about what changed. The source session is locked while a handover runs and retires only after the target confirms; a failed handover leaves it usable. Works without ctx; with ctx_checkpoint as memory provider and your consent in /handover setup it also records each handover in ctx. Not the core /handoff.","disclosure":"network: HTTPS (plain HTTP only on loopback or for a peer you mark --allow-insecure) only to the gateways you pair, during pairing, doctor, status and handovers you start or claim; each handover sends the peer this machine's environment facts (OS, host and user name, home and Hermes home, shell, locale, versions, model and provider, tool versions, allowed roots and free space; never environment-variable values); doctor --measure uploads up to 15 MiB of zero-filled test data per peer; no third-party services, no telemetry, no update checks. Inbound: once a device is paired, Ed25519-signed routes under /api/plugins/ctx_handover/v1/ behind the dashboard sign-in let it take this profile's sessions with their working files (pull right) or write sessions and workspace copies under allow_roots (push right); a request's signature is checked before its rights and its body, a paired device can open only the kind of handover its right allows, and answers are signed over status, request nonce and body, not yet over method and path (a named limit in the README). Transferred data, unredacted (nothing is blacked out): the transcript, tool outputs and attachments; the session's working directory including git history and uncommitted and untracked files; files under your home the transcript references (asked first); bundles are unencrypted (0600). A secrets denylist keeps workspace .env files, keys and credential locations out unless you release a path with --include-secret, and Hermes' own credentials always out. Credentials: the peer's dashboard token or Basic login, proxy header values and the plugin's Ed25519 identity key live in the profile .env, read through agent.secret_scope.get_secret (falling back to Hermes' own hermes_cli.config reader when a key was created or rotated after the process started) and written through Hermes' .env writer; the stored dashboard credential opens the peer's whole dashboard (configuration, secrets, terminal), not only this plugin, so a reverse proxy that passes only /api/plugins/ctx_handover/ is recommended. Reads /proc (boot id, own PID-namespace link, /proc/self/status) for owner stamps and the umask, and Hermes' gateway status files to detect --yolo before a continuation. Lock: the source session is ended, archived, hidden and renamed through Hermes' session store, which holds even with the plugin disabled; new turns and tool calls on it are refused only while the plugin is loaded, so a session reopened from the archive with the plugin disabled continues as an independent copy. Commands: git without a shell (hooks, credential helpers, fsmonitor and LFS smudge off for received data); git and what it starts (git-lfs, helpers) get an environment built from an allowlist — the search path, the home folder, XDG_CONFIG_HOME, the temp folder, the time zone, SUDO_UID (for Hermes running as root through sudo on another user's repository) and on Windows the system variables git needs — so provider keys and tokens never reach them, and a clean filter of your own git configuration that needs other variables (for example sops) runs without them: a required one stops the handover, any other leaves the file unfiltered in the handover copy; git lfs checkout runs from the shipped objects with the standard Git LFS filter for that one call and is skipped when a path it would write is a symbolic link or lies behind one and git-lfs there is older than 3.7.1 or its version cannot be read (those large files then stay small LFS pointer files, and the final message names the link and recommends git-lfs 3.7.1 or newer); --version probes of developer tools; and with --continue plus allow_remote_continue on the target one hermes chat --resume single-query turn, which inherits the gateway's environment minus the auto-approve variables, because the turn needs the model provider's keys, and never starts when approvals are off there as far as the starting process can tell, or when the gateway cannot be identified. Background threads per handover; staging and a block cache in the plugin data folder (default up to 5 GiB, 3 days). Model use (refine: off disables it): one side question to the session's own model with the llm.side_question grant, or up to 60,000 characters of redacted transcript to your main model. Imports hermes_state, hermes_constants, hermes_cli.config, agent.secret_scope, agent.plugin_llm, agent.redact, plugins.plugin_storage, gateway.platforms.base, gateway.status and providers.","category":"tools","platforms":[],"maintainer":"GottZ","author":"GottZ","version":"0.1.1","requires_hermes":">=0.22.6","repo":"https://github.com/GottZ/ctx","docs":"https://github.com/GottZ/ctx/blob/4d6f8fd54b6abe0a0e0448aef36220696c916bfd/integrations/hermes/plugin/ctx_handover/README.md","tools":["handover"],"hooks":["pre_llm_call","pre_tool_call","post_llm_call","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152366,"prs":[{"n":152366,"state":"merged","created":"2026-11-10T01:58:58Z"}],"created":"2026-11-10T01:58:58Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/GottZ/ctx/4d6f8fd54b6abe0a0e0448aef36220696c916bfd/integrations/hermes/assets/ctx_handover.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ctx_handover.webp"},{"name":"hermes-sonic-ui","title":"Hermes Sound Studio","summary":"Design procedural sounds, assign them to Hermes Desktop interactions, compose layered loops, and export WAV, JSON or TypeScript. Local synthesis; optional configured-model drafts.","disclosure":"the inject_sonic_hooks tool rewrites .jsx/.tsx files (with backups under <project>/.sonic-ui-backups) and synthesize_ui_soundscape writes a new TypeScript file at a model-chosen path, each only after Hermes's approval prompt and never inside the Hermes home or install; injection runs a bundled Node parser with a minimal environment; the optional \"Generate sound\" action sends your description and patch to the active profile's configured model.","category":"desktop","platforms":[],"maintainer":"iKnz990","author":"iKnz990","version":"0.5.01","requires_hermes":">=0.23.0","repo":"https://github.com/iKnz990/hermes-sound-studio","docs":null,"tools":["synthesize_ui_soundscape","audit_ui_silence","inject_sonic_hooks","sonic_create_patch"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Windows and Chromium are the tested desktop environment; other operating systems have not been verified.; The separate native draft tool requires the native bridge and a configured default-profile model.","state":"merged","pr":152362,"prs":[{"n":152362,"state":"merged","created":"2026-11-10T01:51:25Z"}],"created":"2026-11-10T01:51:25Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/iKnz990/hermes-sound-studio/93af2b7625c53dc0a562ffc098eb92a59bb8d919/docs/images/banner.png","https://raw.githubusercontent.com/iKnz990/hermes-sound-studio/93af2b7625c53dc0a562ffc098eb92a59bb8d919/docs/images/sound-design.png","https://raw.githubusercontent.com/iKnz990/hermes-sound-studio/93af2b7625c53dc0a562ffc098eb92a59bb8d919/docs/images/compose.png","https://raw.githubusercontent.com/iKnz990/hermes-sound-studio/93af2b7625c53dc0a562ffc098eb92a59bb8d919/docs/images/fine-tune.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-sonic-ui.webp"},{"name":"leadpoet","title":"Leadpoet","summary":"Send your website and get customers. Hermes finds verified contacts at companies showing a buying signal, writes emails where every personal line shows its source, lets you approve from your phone, and brings replies back to chat. Try /customers demo with no account.","disclosure":"calls the Leadpoet API (leadpoet.com) with your LEADPOET_API_KEY: it can spend Leadpoet credits on contact searches, create and launch email campaigns to third parties from your connected inbox, and send replies, each only after you type the approval code shown under the exact content; it reads public pages of your site and your prospects' sites and sends that text and prospects' replies to your configured Hermes model; the optional `hermes leadpoet watch` cron check runs with no model, launches campaigns you already approved and approves matching drafts unattended; contact details and drafts are stored in the plugin's data folder.","category":"automation","platforms":["linux","macos","windows"],"maintainer":"leadpoet","author":"gzaentz","version":"0.2.6","requires_hermes":">=0.23.0","repo":"https://github.com/leadpoet/get-customers","docs":"https://github.com/leadpoet/get-customers#readme","tools":["leadpoet_desk_current","leadpoet_desk_set_draft","leadpoet_customers_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152361,"prs":[{"n":152361,"state":"merged","created":"2026-11-10T01:48:00Z"},{"n":153239,"state":"open","created":"2026-11-11T06:05:53Z"}],"created":"2026-11-10T01:48:00Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proofread-draft","title":"proofread-draft","summary":"Proofread Hermes Desktop drafts with your configured model and review suggestions before applying.","disclosure":"on each click the current Desktop draft (up to 6,000 characters) is sent to the model configured for the proofread_draft auxiliary task; the draft only changes when you select Apply.","category":"desktop","platforms":[],"maintainer":"Icarus-B4","author":"Icarus-B4","version":"0.1.4","requires_hermes":">=0.21.6","repo":"https://github.com/Icarus-B4/hermes-official-plugins","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Native live spellchecking is not available; proofreading runs only when explicitly requested.","state":"merged","pr":152360,"prs":[{"n":152360,"state":"merged","created":"2026-11-10T01:47:18Z"}],"created":"2026-11-10T01:47:18Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"exchangerebel","title":"exchangerebel","summary":"Pay-per-call data and utility APIs via a remote MCP server (241 paid operations, $0.002–$50.00 per call, settled in SOL or USDC on Solana via x402) with a bundled workflow skill.","disclosure":"connects to the operator's hosted MCP server at exchangerebel.com; its 241 paid tools charge $0.002–$50.00 per call settled in SOL or USDC on Solana via x402 and are declared trust: untrusted so every call asks for approval; the plugin holds no keys, wallet or credentials and pays nothing itself.","category":"tools","platforms":[],"maintainer":"DataRebelHQ","author":"DataRebelHQ","version":"1.0.1","requires_hermes":">=0.22.0","repo":"https://github.com/DataRebelHQ/hermes-plugin-exchangerebel","docs":"https://exchangerebel.com","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152358,"prs":[{"n":152358,"state":"merged","created":"2026-11-10T01:42:48Z"}],"created":"2026-11-10T01:42:48Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kindle-scribe","title":"Kindle Scribe","summary":"Kindle Scribe gateway platform for Hermes (Hermes Agents Guide to the Galaxy): handwritten notebook pages reach the full agent, its tools and its memory, and replies return to the page.","disclosure":"while the gateway runs, the adapter keeps a token-authenticated HTTP listener on 127.0.0.1:8793 (/health, /ingest) and refuses non-loopback bind addresses; it runs in the gateway process like every platform adapter; no outbound network calls, no shell commands, no telemetry; KINDLE_INGEST_TOKEN is read through Hermes's profile secret scope. Needs the companion diary bridge from the same repository, which is what the Kindle talks to over the LAN.","category":"platform","platforms":[],"maintainer":"lEWFkRAD","author":"lEWFkRAD","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/lEWFkRAD/hermes-agents-guide-to-the-galaxy","docs":null,"tools":[],"hooks":[],"middleware":[],"env":["KINDLE_INGEST_TOKEN"],"known_issues":"","state":"merged","pr":152356,"prs":[{"n":152356,"state":"merged","created":"2026-11-10T01:40:57Z"}],"created":"2026-11-10T01:40:57Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"recalllayer","title":"RecallLayer","summary":"Local-first layered agent memory (working / episodic / semantic) with FTS recall and retrieve-after-write tools.","disclosure":"local-only memory provider with no network calls, credentials or telemetry; when selected as memory.provider it saves the first 500 characters of every user message and assistant reply, plus a copy of built-in memory writes, in plaintext SQLite at $HERMES_HOME/recalllayer/memories.db and injects matching memories into later turns; the store is shared across all sessions and users of the profile (no per-chat or per-user separation); settings in $HERMES_HOME/recalllayer.json; short background threads for capture and prefetch only.","category":"memory","platforms":[],"maintainer":"Caesar","author":"er-s-an","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/er-s-an/recalllayer","docs":"https://github.com/er-s-an/recalllayer/blob/e89cc87ef7b2051f2b4dc6cb449b09df4cac36ce/recalllayer/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152355,"prs":[{"n":152355,"state":"merged","created":"2026-11-10T01:38:52Z"}],"created":"2026-11-10T01:38:52Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"melange","title":"Melange","summary":"A video codec for computation: record terminal sessions as rewindable, hash-chained timelines, scrub to any step, ask where a character on screen came from in plain words, fork What-ifs, clamp one recorded input and watch only its dependents recompute, and ask what went wrong with forward-verified candidate answers. Ten tools (record, versions, screen, where_from, note, whatif, clamp, explain, shelf, demo) plus a bundled flagship demo.","disclosure":"melange_record runs the model-supplied shell command on the host in a PTY (outside the terminal sandbox) after Hermes's owner approval prompt; the child receives only PATH, HOME, LANG and TERM; recordings (redacted screen output) are stored under ~/.hermes/plugins-data/melange/.","category":"tools","platforms":[],"maintainer":"lEWFkRAD","author":"lEWFkRAD","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/lEWFkRAD/melange","docs":null,"tools":["melange_record","melange_versions","melange_screen","melange_where_from","melange_note","melange_whatif","melange_clamp","melange_explain","melange_shelf","melange_demo"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152343,"prs":[{"n":152343,"state":"merged","created":"2026-11-10T01:24:21Z"}],"created":"2026-11-10T01:24:21Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"afriradar","title":"AfriRadar","summary":"Nigerian and Kenyan fund data from the regulators (SEC Nigeria weekly, CMA Kenya quarterly): rank, compare and project funds, keep a watchlist, and get a weekly report of what moved. Eight tools, a zero-token /afriradar command, two automation blueprints and one switchable routing hook; stdlib only, no API key, no telemetry.","disclosure":"fetches public fund CSVs from www.afriradar.com (the author's site; the Data URL setting can point at a mirror) and caches them under the plugin's data directory; sends no prompts, files or keys; stores your watchlist (fund names, amounts, notes) in Hermes plugin state; its pre_llm_call hook adds a one-line note steering fund questions to its tools (on by default, `routing` setting); the two automation blueprints run weekly only if you install them.","category":"tools","platforms":[],"maintainer":"Risingtell","author":"Risingtell","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/Risingtell/hermes-afriradar","docs":"https://github.com/Risingtell/hermes-afriradar#readme","tools":["afriradar_market_overview","afriradar_find_funds","afriradar_top_funds","afriradar_fund_detail","afriradar_compare_funds","afriradar_project_returns","afriradar_watchlist","afriradar_watch_report"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152336,"prs":[{"n":152336,"state":"merged","created":"2026-11-10T01:11:06Z"}],"created":"2026-11-10T01:11:06Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/banner.png","https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/2-watch.png","https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/5-weekly-report.png","https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/1-top-funds.png","https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/3-project.png","https://raw.githubusercontent.com/Risingtell/hermes-afriradar/425fadf6e5dd5696e03a9876727b619a722c8176/docs/4-slash.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/afriradar.webp"},{"name":"storage-utility","title":"Tune-up","summary":"Keep Hermes fast, healthy and tidy from one Desktop panel. Clean up sorts the Hermes home into Safe to clean, Take a quick look and Kept safe on purpose, with plain-language answers to what is it, is it safe and can I undo; it reviews exact items before anything happens and reports the measured space recovered. It runs the maintenance Hermes ships but few people find (sessions prune with preview, pm gc, uv cache prune, checkpoints, worktree prune, session-database packing), finds folders Hermes created elsewhere from its own session history, and moves reviewable items to a restorable 30-day Trash. Checkup explains down or crash-looping Hermes services and stops leftover agent processes; Explore shows a size map with folder descriptions and duplicate finding; optional consented AI explanation via its own auxiliary task.","disclosure":"Linux/systemd only; no network except an optional, consented AI explanation (folder totals and counts only) through Hermes's routing; reads home metadata, tool caches, session history, /proc process and open-file info, systemd unit settings, journal lines, crontab and git ls-files (never .env, auth.json, env files, start scripts or /proc/<pid>/environ); on user confirmation it permanently deletes chosen files in Hermes-created project folders and ~/.cache, ~/.npm and ~/.pnpm-store tool caches, moves other items to a restorable 30-day Trash, runs allow-listed hermes/uv/pnpm/git maintenance plus journalctl --vacuum-size and apt-get clean when root, starts/restarts/stops/disables Hermes systemd services, can write a Restart=always drop-in and enable the disk-cleanup plugin, sends SIGTERM to selected leftover processes, and briefly stops Hermes services to pack state.db; non-Hermes child processes get only PATH, HOME and locale.","category":"tools","platforms":["linux"],"maintainer":"ShawnCRMer","author":"ShawnCRMer","version":"0.7.3","requires_hermes":">=0.23.0","repo":"https://github.com/ShawnCRMer/hermes-tune-up","docs":"https://github.com/ShawnCRMer/hermes-tune-up#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Tested with Hermes on Linux with systemd; service checks and session-database packing need systemd. macOS and Windows hosts are not certified.; Packing the session database pauses Hermes services for a few minutes; it asks first and restarts what it stopped.","state":"merged","pr":152350,"prs":[{"n":152350,"state":"merged","created":"2026-11-10T01:30:12Z"},{"n":152332,"state":"closed","created":"2026-11-10T00:58:41Z"}],"created":"2026-11-10T00:58:41Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/card.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/home.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/clean-up-review.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/clean-up-done.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/take-a-look.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/explore.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/da17207c57933d23f938dc3d313fc0828e97751f/docs/explorer-page.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tune-up/a5822f94f2c9f3db2b4b2f43f02cab5af3a32567/docs/card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/storage-utility.webp"},{"name":"tldr","title":"TL;DR","summary":"One-click summaries of long agent replies in Hermes Desktop. A card shows status first (Done, Blocked, Running, Waiting on you), what changed with each item marked Shown (backed by a tool step) or Stated only, risks, and the decisions the agent left you, with a recommended option and notes; Insert into chat drops your answers into the message box. Scope: last reply, since you last checked, or the whole session (with optional conflict warnings against earlier instructions); S/M/L length; per-reply history; reminders for skipped questions; optional automatic mode with a daily cap. Runs on its own auxiliary task (tldr_summary), so you can pick a cheap model in Models > Auxiliary without touching the chat model.","disclosure":"Sends the selected chat text, tool names with short argument previews (up to 160 characters, e.g. commands, paths, URLs) and your preferences note to the model assigned to its `tldr_summary` auxiliary task (Hermes' auxiliary routing, host-owned credentials), only on click or in the opt-in automatic mode (off by default, 30 per day cap); reads this profile's session database and config read-only; stores settings and answers in Desktop plugin storage; no shell, no credentials, no telemetry.","category":"desktop","platforms":[],"maintainer":"ShawnCRMer","author":"ShawnCRMer","version":"6.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ShawnCRMer/hermes-tldr","docs":"https://github.com/ShawnCRMer/hermes-tldr#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs Hermes Desktop; there is no CLI or TUI surface.; Evidence labels mean a tool step backs a change, not that the result was correct; TL;DR does not see tool output.","state":"merged","pr":152349,"prs":[{"n":152349,"state":"merged","created":"2026-11-10T01:29:07Z"},{"n":152331,"state":"closed","created":"2026-11-10T00:58:38Z"}],"created":"2026-11-10T00:58:38Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/card.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/summary.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/history.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/settings.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/reminder.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-tldr/5664d2d0d9499dd4eff9337b815cd316870b9cb0/docs/mobile.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tldr.webp"},{"name":"pugin","title":"PUGin","summary":"A dancing companion for Hermes Desktop that beams in while the chat you're viewing is working and beams out when its whole job is done: the reply, plus the subagents, background processes and Kanban cards that chat started. Work from other chats never counts. Click him for a list of what's running (with Stop for subagents and processes); NEED YOU!, STUCK? and DONE! callouts take you to the approval, the stalled card or the finished work. Seven characters, size, opacity, presence and reduced-motion settings.","disclosure":"no network calls (all media is bundled inline), no telemetry, no shell, no credentials. While its window is visible the Desktop half polls Hermes's subagent, background-process and pending-approval lists for the focused chat every 4 s, and its backend route opens the Kanban board databases under the Hermes root (every non-archived board, shared across profiles) read-only with SQLite and returns only the cards linked to that chat. Its only actions are Stop (kills the chosen background process or interrupts the chosen subagent, after a click and a confirm click) and Open, which switches to the Kanban page and copies the card id to the clipboard. Settings are kept in Desktop plugin storage.","category":"desktop","platforms":[],"maintainer":"ShawnCRMer","author":"ShawnCRMer","version":"4.4.2","requires_hermes":">=0.23.0","repo":"https://github.com/ShawnCRMer/hermes-pugin","docs":"https://github.com/ShawnCRMer/hermes-pugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs Hermes Desktop; the companion has no CLI or TUI surface.; Kanban tracking needs a Hermes with the Kanban board; without it PUGin follows the chat, its subagents and processes, and Settings says Kanban is unavailable.","state":"merged","pr":152348,"prs":[{"n":152348,"state":"merged","created":"2026-11-10T01:29:05Z"},{"n":152325,"state":"closed","created":"2026-11-10T00:52:20Z"}],"created":"2026-11-10T00:52:20Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/docs/card.png","https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/docs/pugin-demo.gif","https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/docs/click-him.jpg","https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/docs/nudges.jpg","https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/docs/settings-characters.jpg"],"videos":["https://github.com/ShawnCRMer/hermes-pugin/releases/download/v4.4.2/PUGin-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pugin.webp"},{"name":"check-please","title":"Check, Please","summary":"Pairs each \"done\" in an agent's reply (tests pass, sent, deployed, pushed, saved, scheduled) with the tool call that proves it, and adds one line when a claim is stale, failed, or proven only by something the agent edited.","disclosure":"reads the tool calls and replies Hermes passes to its hooks; runs no shell commands and makes no network or model calls; stores claim sentences, command first lines and a 14-day claim log in its own plugin state file; appends one \"Check:\" line under a flagged reply and, on cron runs, puts one line at the top of the delivered reply; on coding turns its pre_verify hook may send the agent back once to recheck a contradicted claim, and its pre_llm_call hook may add a one-line note about the previous reply's flagged claim (all on by default, each has a setting); `/check today` and `/check jobs` show profile-wide tallies, including short claim snippets from other chats on a shared gateway; the owner-run `hermes check-please audit` command reads the profile's saved sessions (state.db) read-only and prints a summary locally; the Desktop pane polls the plugin's own dashboard route every 4 seconds while a session is focused; no telemetry.","category":"tools","platforms":[],"maintainer":"Justin Whalen (Whalen Ventures)","author":"itsLittleOdd","version":"0.4.2","requires_hermes":">=0.22.6","repo":"https://github.com/itsLittleOdd/check-please","docs":null,"tools":[],"hooks":["pre_llm_call","post_tool_call","subagent_stop","transform_llm_output","pre_verify"],"middleware":[],"env":[],"known_issues":"Heuristic, English-only claim patterns. It cannot see webhook payload bodies, runtime-built strings, or file writes made inside a script body (a Python heredoc).; A not-backed claim means no receipt was found, which is common and often not an overclaim, so by default it shows only in /check, not under the reply.; A delegated sub-agent's claims are judged only by that child's own tool calls, kept separate from the parent session's evidence; see /check subagents.; Developed and tested on macOS (Hermes CLI, gateway and Desktop). The engine is standard-library Python; Linux and Windows are untested.; Accuracy numbers (held-out precision and recall, real-world alert rates) are dated and sourced in the README's Results section. Part of the test bench was used to tune the plugin, so bench catch counts are tuned results, not real-world rates.; The Desktop status-bar chip ran in a real Hermes Desktop window on 2026-11-09. The pane's 0.4.2 label changes are checked by a Node render harness, not yet in a real window.","state":"merged","pr":152323,"prs":[{"n":152323,"state":"merged","created":"2026-11-10T00:48:08Z"}],"created":"2026-11-10T00:48:08Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/Just_Whalen/status/2119954873131106776"],"youtube":[],"thumb":null},{"name":"homework-coach","title":"Homework Coach","summary":"Homework photos and teacher updates become checked daily math practice PDFs and a separate parent key. Parent I/S/N feedback guides difficulty. Includes a class plan, read-back corrections, progress/history, a scheduling blueprint and a Desktop workspace. Data stays on the selected Hermes backend; photos and teacher content use the configured model provider. JSON uploads and direct downloads support remote clients.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"andrewjsoukup","author":"andrewjsoukup","version":"0.2.2","requires_hermes":">=0.22.5","repo":"https://github.com/andrewjsoukup/homework-coach","docs":"https://github.com/andrewjsoukup/homework-coach#readme","tools":["homework_coach_intake","homework_coach_generate_packet","homework_coach_record_feedback","homework_coach_status","homework_coach_progress","homework_coach_set_curriculum","homework_coach_add_material"],"hooks":[],"middleware":[],"env":[],"known_issues":"Native phone-app panels are unverified; use a supported Desktop/browser renderer or enabled chat tools.; Cloud deployments need persistent profile storage and one long-lived plugin host; stateless or round-robin multi-worker hosting is not supported.","state":"merged","pr":152319,"prs":[{"n":152319,"state":"merged","created":"2026-11-10T00:40:03Z"}],"created":"2026-11-10T00:40:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/andrewjsoukup/homework-coach/4320a9ed54e7e3c9536a5ead5637d74903d1c274/docs/screenshots/banner.png","https://raw.githubusercontent.com/andrewjsoukup/homework-coach/4320a9ed54e7e3c9536a5ead5637d74903d1c274/docs/screenshots/01-homework-photo.png","https://raw.githubusercontent.com/andrewjsoukup/homework-coach/4320a9ed54e7e3c9536a5ead5637d74903d1c274/docs/screenshots/02-child-packet-nova.png","https://raw.githubusercontent.com/andrewjsoukup/homework-coach/4320a9ed54e7e3c9536a5ead5637d74903d1c274/docs/screenshots/03-parent-key.png","https://raw.githubusercontent.com/andrewjsoukup/homework-coach/4320a9ed54e7e3c9536a5ead5637d74903d1c274/docs/screenshots/05-adapted-packet-nova-wed.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/homework-coach.webp"},{"name":"jalancost","title":"JalanCost","summary":"Offline Malaysian road-trip fuel and toll estimates with per-person splits, calculated only from user-supplied values.","disclosure":"","category":"tools","platforms":[],"maintainer":"Apihpih96","author":"Apihpih96","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Apihpih96/hermes-jalancost","docs":"https://github.com/Apihpih96/hermes-jalancost","tools":["estimate_road_trip_cost"],"hooks":[],"middleware":[],"env":[],"known_issues":"Validated on Linux with Hermes v0.22.7; Android/Termux support has not been validated.; The recorded demonstration is a direct tool invocation, not a model-issued call.","state":"merged","pr":152314,"prs":[{"n":152314,"state":"merged","created":"2026-11-10T00:36:40Z"}],"created":"2026-11-10T00:36:40Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"flowlight","title":"Flowlight","summary":"Watch public wallets and draw live on-chain money flows as glowing arcs. Read-only. Uses public NEAR, Blockscout, and RPC endpoints. When Intents Pay is installed, reads its invoice ledger and may GET 1-Click /v0/status. Never signs or sends transactions and never handles keys.","disclosure":"sends the wallet addresses you watch to public third-party APIs (Blockscout, nearblocks.io, public EVM and Solana RPC nodes, CoinGecko) and, when Intents Pay is installed, reads its invoice ledger and queries 1-Click status for its deposit addresses; `hermes flowlight serve` opens an unauthenticated loopback page on 127.0.0.1.","category":"tools","platforms":[],"maintainer":"ayinmodeolarewaju-bot","author":"ayinmodeolarewaju-bot","version":"1.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/ayinmodeolarewaju-bot/hermes-flowlight","docs":"https://github.com/ayinmodeolarewaju-bot/hermes-flowlight","tools":["flowlight_watch","flowlight_unwatch","flowlight_flows","flowlight_summary","flowlight_list","flowlight_invoices"],"hooks":[],"middleware":[],"env":[],"known_issues":"Base and Arbitrum Blockscout often answer HTTP 403 from datacenter networks. Flowlight falls back to public JSON-RPC logs for major tokens and says so.; A busy address is summarized over the largest recent slice that fits the time budget, not every transfer in the requested 24h.; purefile1686.near had no fungible or native transfers in the public recent history during the 10 Nov 2026 live run. The node still draws.; Intents Pay is optional. If its ledger is missing, Flowlight reports that no Intents Pay invoices were found and keeps working.; The gold paid burst in the demo fixture is labeled DEMO FIXTURE. It is not a live settlement.","state":"merged","pr":152312,"prs":[{"n":152312,"state":"merged","created":"2026-11-10T00:31:33Z"}],"created":"2026-11-10T00:31:33Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/banner.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/live-flows.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/arc-detail.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/invoice-pending.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/invoice-paid.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-flowlight/8d6aacb1babc9136316f7b1777d436027771676b/docs/screenshots/demo-fixture.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flowlight.webp"},{"name":"no-manual","title":"No Manual","summary":"Furniture with no instructions? Send photos and Hermes finds the official manual, turns your disassembly photos into a manual in reverse, or works out flat-pack assembly (closets, bookcases, cabinets) from the parts, then coaches you step by step and checks a photo of each step. Steps arrive as images in chat; Hermes Desktop shows an interactive 3D step viewer. Never generates instructions for children's furniture or anything people sit, sleep or climb on.","disclosure":"photos you add are sent to your own configured model provider through Hermes (ctx.llm) to read panels, labels and step photos; image and PDF paths the model passes are read from anywhere on disk (images and PDFs only) and copied into the plugin's folder, and `recent` mode picks up images from Hermes's shared inbound image cache (<HERMES_HOME>/cache/images, cache/documents/native-inputs) from the last 30 minutes, which on a multi-user gateway can include another chat's upload; manual PDFs found by Hermes's web search are downloaded over https (max 30 MB, public hosts only); photos, manual pages and generated images are stored in <HERMES_HOME>/plugin-data/no-manual/ and deleted with /nomanual delete; the Desktop half bundles three.js (source in desktop/src/); no shell commands, no background processes, no telemetry, no credentials stored.","category":"tools","platforms":[],"maintainer":"cheedli","author":"cheedli","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/cheedli/no-manual","docs":"https://github.com/cheedli/no-manual#readme","tools":["nm_start_project","nm_add_photos","nm_set_details","nm_status","nm_record_stage","nm_finish_recording","nm_get_step","nm_identify","nm_attach_manual","nm_extract_parts","nm_confirm_parts","nm_solve","nm_render_steps","nm_check_step"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152309,"prs":[{"n":152309,"state":"merged","created":"2026-11-10T00:27:59Z"}],"created":"2026-11-10T00:27:59Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/cheedli/no-manual/769d07f0120158ed3de01a6e9644d6c2f773ad5a/assets/banner.png","https://raw.githubusercontent.com/cheedli/no-manual/769d07f0120158ed3de01a6e9644d6c2f773ad5a/assets/solver-step.png","https://raw.githubusercontent.com/cheedli/no-manual/769d07f0120158ed3de01a6e9644d6c2f773ad5a/assets/desktop-3d-viewer.png","https://raw.githubusercontent.com/cheedli/no-manual/769d07f0120158ed3de01a6e9644d6c2f773ad5a/assets/recorder-step.png"],"videos":["https://raw.githubusercontent.com/cheedli/no-manual/769d07f0120158ed3de01a6e9644d6c2f773ad5a/assets/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/no-manual.webp"},{"name":"agentpass","title":"agentpass","summary":"Score any public site on the Agent Readiness Index (ARI-100) — 120 checks across eight weighted domains, 32 live AI-crawler probes, a grade and an L0-L5 level — and turn the failures into one ordered, paste-ready remediation prompt for a coding agent, ranked by the points each fix returns. Two tools over a hand-rolled MCP client (JSON and SSE transports, retry, timeout, and per-session caching), so a scan behind a slow or flaky endpoint returns a structured error envelope instead of raising. Works with any MCP-speaking scanner; defaults to the hosted endpoint and is fully configurable.","disclosure":"the scanned URL is sent to the configured scanner endpoint over the network, and nothing else is: no page content, no credentials, no local paths leave the machine.","category":"tools","platforms":[],"maintainer":"Scott Scheferman","author":"shagghiesuperstar","version":"1.0.2","requires_hermes":">=0.23","repo":"https://github.com/shagghiesuperstar/agentpass-plugin","docs":"https://github.com/shagghiesuperstar/agentpass-plugin#readme","tools":["agent_readiness_scan","agent_readiness_fix_prompt"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152304,"prs":[{"n":152304,"state":"open","created":"2026-11-10T00:10:52Z"}],"created":"2026-11-10T00:10:52Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-jobs","title":"hermes-jobs: Calendar sync for Hermes cron","summary":"Google Calendar is the one supported backend today (scope calendar.events, one bound calendar). Bidirectional sync between Hermes cron (system of record) and that job board. discover/status are read-only; sync plans both directions and is dry-run unless --confirm on the CLI. Read-only /jobs slash command shows the 7-day agenda and pending changes; each job's last run time and status (ok/error) is written to its event as a colour and one description line, never the title.","disclosure":"syncs Hermes cron job names, next-run times and last-run status (never prompts; only a prompt sha256) to one Google Calendar you bind, over Hermes plugin OAuth (`hermes auth add hermes-jobs:google`, scope calendar.events, host www.googleapis.com). Reads `~/.hermes/cron/jobs.json` read-only, and the first 8 KB of each no-agent cron job's script under `~/.hermes/scripts/` only to recognise its own auto-sync job. Calendar edits change a cron job's schedule or name only when you run `hermes hermes-jobs sync --confirm`. The opt-in experimental skip writes `~/.hermes/scripts/hermes-jobs-skip-tick.py` and creates two one-shot no-agent cron jobs. The opt-in `mcp-serve` push mode polls Calendar every 60 s and POSTs signed event ids to your own gateway webhook URL.","category":"automation","platforms":[],"maintainer":"Benjamin Crow (CrowBe) / Hermes Plugin Builder","author":"CrowBe","version":"0.3.2","requires_hermes":">=0.22.6","repo":"https://github.com/CrowBe/hermes-jobs","docs":"https://github.com/CrowBe/hermes-jobs/blob/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/README.md","tools":["hermes_jobs_discover"],"hooks":[],"middleware":[],"env":["HERMES_JOBS_GOOGLE_CLIENT_ID","HERMES_JOBS_GOOGLE_CLIENT_SECRET"],"known_issues":"","state":"merged","pr":152299,"prs":[{"n":152299,"state":"merged","created":"2026-11-09T23:56:09Z"}],"created":"2026-11-09T23:56:09Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/banner.png","https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/screenshots/week.png","https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/screenshots/drag-all-events.png","https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/screenshots/confirm-reschedule.png","https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/screenshots/run-outcome.png","https://raw.githubusercontent.com/CrowBe/hermes-jobs/34c0490fcc08d5e0b60cd56d32f3fa1f7317c317/docs/screenshots/jobs-agenda.png"],"videos":[],"x":["https://x.com/BenCrow95406267/status/2120070542216871938"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-jobs.webp"},{"name":"skill-hint","title":"Skill Hint","summary":"Local-first skill discovery: on each user turn it runs a BM25 query over the installed skill library and injects up to three candidate skill names, only when the match is confident — catches colloquial phrasing, shorthand and non-English wording that a description-written index misses. Pure standard library: no network, no model call, no API key, ~0.03 ms per query, and at most a few lines of injected context. Says nothing when nothing fits; never raises into the conversation.","disclosure":"reads SKILL.md front matter and the first 1,000 characters of the body under the profile's skill roots (symlinked skill directories are followed) and keeps the index in memory; it writes nothing and sends nothing anywhere. Skill names and descriptions reach the model only when a hint is injected, exactly as they would if the model had opened the skill itself.","category":"automation","platforms":[],"maintainer":"kosmo888","author":"kosmo888","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/kosmo888/skill-hint","docs":"https://github.com/kosmo888/skill-hint#readme","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152297,"prs":[{"n":152297,"state":"merged","created":"2026-11-09T23:54:51Z"}],"created":"2026-11-09T23:54:51Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kosmo888/skill-hint/85384d1778926f811bf49f5c5d4f258453643204/media/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skill-hint.webp"},{"name":"counterparty","title":"Counterparty","summary":"Screens the companies your agent is about to pay, email, sign with or buy from. Before any outward action (email, payment, order, transfer, signature, form submit) a pre_tool_call hook reads the vendor, email domain or URL from the call and checks it against the DoD Section 1260H list, the FCC Covered List, Section 889, the UFLPA Entity List, the BIOSECURE list and OFAC sanctions, with the ownership chain from public records, then escalates hits through Hermes's own approval prompt with the finding and its legal citation (never auto-approves; fails closed under cron). Search and page results that mention a listed vendor get a one-time note. Tools cp_screen, cp_lookup, cp_credit, cp_who_owns_address and cp_brief answer on demand; /whoowns gives a cited one-page brief. Works offline from a bundled list snapshot and says so.","disclosure":"Sends the counterparty name, email/URL domain label, and (for cp_screen/cp_brief) the description and amount, or a street address and ZIP for address lookups, over HTTPS to shop.tensorust.com (Tensorust LLC, the plugin author's company) whenever a matching outward tool call (email, payment, order, signature, submit), one of its tools or /whoowns runs, plus a daily list-membership refresh; message bodies are matched locally only; optional TENSORUST_API_KEY through Hermes's secret scope; no telemetry, no shell, no file reads outside its bundled data.","category":"tools","platforms":[],"maintainer":"Mattbusel","author":"Mattbusel","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/Mattbusel/hermes-counterparty","docs":"https://github.com/Mattbusel/hermes-counterparty","tools":["cp_screen","cp_lookup","cp_credit","cp_who_owns_address","cp_brief"],"hooks":["pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"The alias index covers the vendor groups the lists name and their named subsidiaries (18 groups as of the 2026-11-06 pull), not every shell company; a clear result means not on these lists under this name.; Address ownership (cp_who_owns_address, /whoowns <address>) covers a set of US counties and says when an address is outside it.","state":"merged","pr":152287,"prs":[{"n":152287,"state":"merged","created":"2026-11-09T23:26:13Z"}],"created":"2026-11-09T23:26:13Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Mattbusel/hermes-counterparty/5527f523a33ccc71bcd7ea8a65c00538e4b42fdf/assets/card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/counterparty.webp"},{"name":"nomads-planner","title":"Nomads Planner","summary":"Nomads.com for Hermes: read your own trips and favorite cities, look up curated city and country facts (monthly costs, rent, internet speed, weather, safety and other 0-5 scores), list upcoming in-person meetups, and build a next-stay brief in one call that joins your current and upcoming stays, unplanned gaps, city facts, meetups inside each stay's dates and your past visits, with deterministic comparisons (cheapest, fastest internet, safest). Native plugin: 7 read-only tools, a /nomads slash command and a bundled planning skill. City, country and meetup tools work without an account; trips and favorites need a free personal key from https://nomads.com/settings, read through Hermes' secret scope.","disclosure":"makes HTTPS GET requests to https://nomads.com/api only (sending your username and personal key in the Authorization header for trips and favorites); no writes, no other hosts, no files read, no background processes, no telemetry; public city data is cached in memory for 10 minutes. Not affiliated with Nomads.com.","category":"tools","platforms":[],"maintainer":"lawmight","author":"lawmight","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/lawmight/hermes-nomads-planner","docs":"https://github.com/lawmight/hermes-nomads-planner#readme","tools":["nomads_search_cities","nomads_get_city","nomads_get_country","nomads_list_meetups","nomads_get_trips","nomads_get_favorites","nomads_next_stay_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152283,"prs":[{"n":152283,"state":"merged","created":"2026-11-09T23:11:41Z"},{"n":152281,"state":"closed","created":"2026-11-09T23:10:38Z"}],"created":"2026-11-09T23:10:38Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"phoenix","title":"Phoenix - The Black Box Flight Recorder for Hermes Agents","summary":"Transactional SQLite WAL flight recorder, pre/post SHA-256 state fingerprinting, live idempotency guard, and deterministic fault-injection wind tunnel with Zeller ddmin for Hermes agents. Guarantees exactly-once tool execution across crashes with zero duplicate writes and zero LLM calls in recovery.","disclosure":"journals every tool call's arguments and result (common secret patterns redacted) to a local SQLite ledger under the plugin data dir, kept 7 days / 10,000 rows; the owner-typed /recover re-runs interrupted tool calls from earlier sessions through the tool registry, bypassing other plugins' pre_tool_call hooks, and the opt-in idempotency guard can return a stored result instead of re-running a repeated call in the same session.","category":"tools","platforms":[],"maintainer":"Ratz00007","author":"Ratz00007","version":"0.3.0","requires_hermes":">=0.21.6","repo":"https://github.com/Ratz00007/phoenix","docs":null,"tools":["phoenix_ledger","phoenix_windtunnel"],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":152278,"prs":[{"n":152278,"state":"merged","created":"2026-11-09T22:58:04Z"}],"created":"2026-11-09T22:58:04Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"plan-usage","title":"Plan Usage","summary":"Plan usage across providers in the Hermes Desktop status bar: a named chip per Claude and ChatGPT/Codex account in Hermes's credential pool (5-hour and weekly windows from Hermes's own usage cache via model.options, a default-account star and 90% / fallback warnings that name the next account), Nous Portal credits, and month-to-date (UTC) API spend from optional Anthropic / OpenAI Admin keys. Preferences are a Settings -> Plugins page.","disclosure":"its own network calls go only to api.anthropic.com/v1/organizations/cost_report and api.openai.com/v1/organization/costs, and only with the optional ANTHROPIC_ADMIN_KEY / OPENAI_ADMIN_KEY config_schema secrets read through get_secret, with redirects refused; Nous credits come from Hermes's build_credits_view (Hermes makes the Portal request); never reads or sends a subscription token, never opens .env or auth.json; writes only its own settings in plugin-data, the shown-warning ids in Desktop plugin storage, and, on an explicit star click, the credential-pool order through CredentialPool.move_entry; no subprocesses, no telemetry.","category":"desktop","platforms":[],"maintainer":"ziadelboshy","author":"ziadelboshy","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/ziadelboshy/hermes-plan-usage","docs":"https://github.com/ziadelboshy/hermes-plan-usage#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Claude windows at exactly 1% used can show as 100% (and warn): Hermes core reads Anthropic's utilization as a 0-1 fraction. Plan Usage shows what Hermes reports. Upstream issue NousResearch/hermes-agent#145660 (fix PRs #139916 and #145663, both open).; Usage rows are matched to pool accounts by label in pool order; give each account its own --label so two accounts are never confused.","state":"merged","pr":152277,"prs":[{"n":152277,"state":"merged","created":"2026-11-09T22:57:31Z"}],"created":"2026-11-09T22:57:31Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"intents-pay","title":"Intents Pay","summary":"Crypto invoices and cross-chain payment quotes for a NEAR account via the NEAR Intents 1-Click API. Dry quotes by default. A quote or invoice requires an explicit recipient — there is no default payee. Payable tool calls (invoices and non-dry quotes) wait for Hermes's approval prompt via a pre_tool_call hook. Never moves funds and never handles signing keys.","disclosure":"payments plugin: sends quote and invoice details (amounts, recipient NEAR account, refund address, and an optional partner API key as X-API-Key) to the NEAR Intents 1-Click API (1click.chaindefuser.com by default); creating an invoice or a live quote produces a real deposit address that anyone can pay, gated by Hermes's approval prompt, a one-time confirmation token and a refusal under cron; never signs or sends funds; stores invoices in its plugin-data folder.","category":"tools","platforms":[],"maintainer":"ayinmodeolarewaju-bot","author":"ayinmodeolarewaju-bot","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/ayinmodeolarewaju-bot/hermes-intents-pay","docs":"https://github.com/ayinmodeolarewaju-bot/hermes-intents-pay","tools":["intents_list_tokens","intents_quote","intents_create_invoice","intents_invoice_status","intents_verify_quote"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Dry quotes on EVM and Solana send a public placeholder refund address so 1-Click can check the format. No deposit is created. A live quote rejects that placeholder and requires the payer's own refund address plus a one-time confirmation token.; Verification for this release used live dry quotes only. Completing a mainnet deposit address is gated and was not part of the test run.; A quote or invoice requires an explicit recipient. Payable tool calls wait for Hermes's approval prompt via pre_tool_call.","state":"merged","pr":152527,"prs":[{"n":152527,"state":"merged","created":"2026-11-10T08:40:27Z"},{"n":152273,"state":"closed","created":"2026-11-09T22:47:57Z"}],"created":"2026-11-09T22:47:57Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/bbd3fad41bd3e9be2a88dcfdda57099ffc3759d9/docs/screenshots/banner.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/bbd3fad41bd3e9be2a88dcfdda57099ffc3759d9/docs/screenshots/dry-quote.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/bbd3fad41bd3e9be2a88dcfdda57099ffc3759d9/docs/screenshots/usdt-quote.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/6196da5fe2ce7125bd008d81656839efd2bed5f9/docs/screenshots/banner.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/6196da5fe2ce7125bd008d81656839efd2bed5f9/docs/screenshots/dry-quote.png","https://raw.githubusercontent.com/ayinmodeolarewaju-bot/hermes-intents-pay/6196da5fe2ce7125bd008d81656839efd2bed5f9/docs/screenshots/usdt-quote.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/intents-pay.webp"},{"name":"wave-brainvault-mint","title":"Wave | BrainVault Mint","summary":"Memory you own for Hermes, by Wave OS. Hermes remembers on this computer right away, and a pasted page becomes memory cards. You mint the ones worth keeping to your own wallet's vault on the Theta blockchain with one approval in Wave Web (private by default, encrypted to you and this Hermes), and any Hermes you pair reads them back, fingerprint-checked. Ask Wavey answers Wave questions from chain-verified public cards.","disclosure":"never signs, mints or holds wallet keys: minting happens on web.oswave.io, approved in the Wave Wallet Mint browser extension, and costs a one-time TFUEL network fee. Network calls go only to web.oswave.io (your vault's card index, sending your public wallet address; one-time end-to-end encrypted drops for pairing and Send to Wave, with the key kept in the link fragment; Wavey's public cards) and Theta's public RPC eth-rpc-api.thetatoken.org (read-only card reads and gas price). Stores a decrypt-only, wallet-revocable agent key in the OS keyring if installed, else a 0600 file in $HERMES_HOME/brainvault; reads Hermes's config.yaml only for its setup check. A background thread syncs every 10 minutes. Opens Wave Web in the browser for pairing and minting. No telemetry, no shell commands, no self-updating. Recall runs locally; recalled memories reach the user's model provider like any context.","category":"memory","platforms":[],"maintainer":"xBuildyTeam","author":"xBuildy","version":"0.6.1","requires_hermes":"","repo":"https://github.com/xBuildyTeam/wave-os-hermes","docs":"https://oswave.io/hermes","tools":["brainvault_recall","brainvault_remember","brainvault_make_cards","brainvault_forget","brainvault_status","brainvault_send_to_wave","brainvault_set_wallet","brainvault_pair","brainvault_sync","wave_guide","brainvault_doctor"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":152264,"prs":[{"n":152264,"state":"closed","created":"2026-11-09T22:33:40Z"}],"created":"2026-11-09T22:33:40Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/76fc8fe297b6f75362e54e7ba5c45c6c39179c81/brainvault/docs/catalog-banner.png","https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/76fc8fe297b6f75362e54e7ba5c45c6c39179c81/brainvault/docs/wave-brainvault-webapp.png","https://raw.githubusercontent.com/xBuildyTeam/wave-os-hermes/76fc8fe297b6f75362e54e7ba5c45c6c39179c81/brainvault/docs/wave-brainvault-tab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/wave-brainvault-mint.webp"},{"name":"besthumanizer","title":"BestHumanizer","summary":"Humanize and measure text: rewrite AI-sounding prose, score any passage for machine-likeness, and score a public X account's recent posts. Three tools over a hosted MCP endpoint, plus one hook that puts a verdict on outbound text without changing it. - `score_text` — 0-100 human-probability, the patterns that fired, and where they fired. Deterministic: same text, same number, every time. Free, debits nothing. - `humanize_text` — tell removal plus a constrained model pass. Returns the rewrite with before and after scores, and never returns text that scores lower than the input. - `score_x_account` — median, spread and worst posts for a public X account's recent original posts, with a paste-ready comment. - One `transform_tool_result` hook scores text on post/send-shaped tool calls and appends a one-line verdict. It annotates the result; it never rewrites or blocks it.","disclosure":"Every tool call is a JSON-RPC request to the hosted MCP endpoint at https://besthumanizer.app/mcp, authenticated with BESTHUMANIZER_API_KEY. The passage you score or rewrite is sent to that server. - `humanize_text` debits its input word count from the account's monthly allowance; `score_text` and `score_x_account` debit nothing. The plugin ships no local scoring code and makes no other network calls. - `score_x_account` reads a public X account's timeline through the same server; no X account is connected on the user's behalf. - The hook runs on post/send-shaped tool results only, adds one network call per annotated result, and is silent when the API key is absent.","category":"tools","platforms":[],"maintainer":"shagghiesuperstar","author":"shagghiesuperstar","version":"0.1.0","requires_hermes":"","repo":"https://github.com/shagghiesuperstar/hermes-besthumanizer","docs":"https://github.com/shagghiesuperstar/hermes-besthumanizer#readme","tools":["humanize_text","score_text","score_x_account"],"hooks":["transform_tool_result"],"middleware":[],"env":["BESTHUMANIZER_API_KEY"],"known_issues":"","state":"open","pr":154109,"prs":[{"n":154109,"state":"open","created":"2026-11-11T22:21:29Z"},{"n":152263,"state":"open","created":"2026-11-09T22:32:07Z"}],"created":"2026-11-09T22:32:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ship","title":"ShipStatic","summary":"Deploy static websites, landing pages, and prototypes instantly, through the hosted ShipStatic MCP server (Streamable HTTP at https://mcp.shipstatic.com). Free, no account needed: publishing works with no sign-in, and the site comes back with a link to share and a claim link to keep it; OAuth sign-in only for the account tools (your sites, your domains). Portable Agent Plugins v1 package (plugin.json + mcp.json), configuration only, no code.","disclosure":"connects Hermes to the hosted ShipStatic MCP server at https://mcp.shipstatic.com; the files the agent publishes are sent to ShipStatic and nowhere else; a site published with no account is public, stays up for 3 days and is kept through its claim link (anyone who opens that link and signs in owns the site); after OAuth sign-in the account tools can also delete your sites and set or delete your domains; the plugin marks its server untrusted, so those calls go through Hermes's approval gate; the tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"shipstatic","author":"shipstatic-com","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/shipstatic/mcp","docs":"https://github.com/shipstatic/mcp/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152261,"prs":[{"n":152261,"state":"merged","created":"2026-11-09T22:30:43Z"}],"created":"2026-11-09T22:30:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kumi","title":"Kumi","summary":"Kumi puts Hermes inside Ableton Live, REAPER and Renoise: it hears your mix, makes changes you can undo, and turns your samples into new sounds.","disclosure":"after you approve setup, downloads the Kumi release this pin names for your platform (27–35 MB, SHA-256 checked) from github.com/user1303836/kumi/releases into HERMES_HOME/plugin-data/kumi/ and installs Kumi's part in your DAW (Live's Remote Script with its Kumi Ears device, a REAPER extension or a Renoise tool) at paths you approve; a newer release comes only with a new catalog pin. Runs Kumi's runtime and DAW bridge as local child processes on loopback that stop with the chat or after idling. Reads the open DAW project, the sample folders you list, HERMES_HOME/cache/generated/audio, VST3 metadata in the standard plug-in folders and, after you approve, an existing Kumi's DAW connection files. Writes the Max for Live devices, presets and wavetables you ask for as new files in Live's User Library, copies your saved project beside it before some changes, and, using an existing Kumi's installation, keeps a write lease and listening renders in its folder. Runs a DAW script you ask for with the DAW's access to your computer (asked first, with its code). Plays the project only for a listen or play you ask for. Sends FOCUS notes and measurements to your Hermes model, and with listen_interpretation on, a small band-energy image to the auxiliary model. Mirelo (paid, off by default): only with your key and a credit cap above 0, approved prompts and audio go to api.mirelo.ai and the transfer hosts it names. No telemetry.","category":"tools","platforms":[],"maintainer":"user1303836","author":"user1303836","version":"1.24.81","requires_hermes":">=0.22.7","repo":"https://github.com/user1303836/kumi","docs":"https://github.com/user1303836/kumi/blob/7f8b0de9f52d4bca526914c469e084a554388486/docs/en/HERMES.md","tools":["kumi_status","kumi_setup","kumi_connect","kumi_observe","kumi_read","kumi_change","kumi_undo","kumi_history","kumi_listen","kumi_sounds","kumi_palette","kumi_library","kumi_job","kumi_generate","kumi_transport","kumi_script","kumi_variations","kumi_device","kumi_plugin_knowledge","kumi_preset_build","kumi_preset","kumi_judge","kumi_tune","kumi_wavetable","kumi_design","kumi_sound","kumi_audition","kumi_groove","kumi_render","kumi_form"],"hooks":["pre_tool_call","post_approval_response","post_tool_call","pre_llm_call","post_compaction","on_session_finalize","agent_loop_stopped","subagent_start"],"middleware":[],"env":[],"known_issues":"Your DAW runs on the computer that runs Hermes: Ableton Live 12 on macOS or Windows (tested on 12.4; 12.0–12.3 untested, with no offline renders), REAPER 7+ or Renoise 3.5+ (macOS, Windows, Linux).; In Hermes Desktop, switch Kumi on under Capabilities → Plugins to see its pane and sound map.; Kumi reads WAV and AIFF; MP3, FLAC and other compressed audio need an ffmpeg you already have, allowed at setup.; Listening in Live uses Max for Live: setup installs Kumi's Kumi Ears device.","state":"merged","pr":152258,"prs":[{"n":152258,"state":"merged","created":"2026-11-09T22:25:12Z"}],"created":"2026-11-09T22:25:12Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/banner.png","https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/screenshots/catalog-2-map.png","https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/screenshots/catalog-5-live-set.png","https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/screenshots/catalog-1-pane.png","https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/screenshots/catalog-8-make.png","https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/docs/assets/hermes/screenshots/catalog-7-palette.png"],"videos":[],"x":["https://x.com/KAORUHYPNAGOGIA/status/2120292688809578753"],"youtube":[],"thumb":"/hackathon/thumbs/kumi.webp"},{"name":"nvidia-switchyard","title":"Switchyard Local-first Routing (Beta)","summary":"Routes Hermes between a local and a cloud model with Verification-Gated Routing (VGR): each turn is tried on the local model, checked, and escalated to the cloud model only when the check fails. Either tier can be any URL or a third-party model provider set up in Hermes; each provider's terms and conditions apply. Presets are selectable as switchyard/<preset> models, with a Desktop page and dashboard tab showing each decision live.","disclosure":"installs nemo-switchyard from PyPI; runs a loopback sidecar on 127.0.0.1:4110 that keeps running after Hermes quits (`hermes switchyard stop`), and Open in browser starts Hermes's web dashboard; reads every model request and response to route it; for a provider tier it takes that provider's credential (sign-in tokens included) from Hermes on each call and sends it only to that provider; stores a generated sidecar token and any tier API keys in Hermes's .env through Hermes's config API; setup makes switchyard/<preset> the default model and sends titles and smart approvals to the local model; copies its provider profile to <HERMES_HOME>/plugins/model-providers/switchyard/ on load; logs and routing records stay in <HERMES_HOME>/switchyard/; after removal it restores the replaced models, stops its sidecar and deletes its provider copy; it never rewrites saved conversations. No telemetry.","category":"models","platforms":["linux","macos","windows"],"maintainer":"NVIDIA","author":"DevArtech","version":"0.1.0","requires_hermes":"","repo":"https://github.com/NVIDIA/switchyard-local-first-routing","docs":null,"tools":[],"hooks":["pre_api_request","post_api_request","pre_llm_call","transform_llm_output","transform_api_error_classification"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"merged","pr":152256,"prs":[{"n":152256,"state":"merged","created":"2026-11-09T22:20:12Z"}],"created":"2026-11-09T22:20:12Z","late":false,"said":false,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/NVIDIA/switchyard-local-first-routing/114c3e12c1931d86cf75affc6c6ec5754865d107/docs/screenshots/desktop-page.jpg","https://raw.githubusercontent.com/NVIDIA/switchyard-local-first-routing/114c3e12c1931d86cf75affc6c6ec5754865d107/docs/screenshots/monitor-dashboard.jpg","https://raw.githubusercontent.com/NVIDIA/switchyard-local-first-routing/05df104cb3d7d33b896e0d238fc46b7e7229c7ca/docs/screenshots/desktop-page.jpg","https://raw.githubusercontent.com/NVIDIA/switchyard-local-first-routing/05df104cb3d7d33b896e0d238fc46b7e7229c7ca/docs/screenshots/monitor-dashboard.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/nvidia-switchyard.webp"},{"name":"prize-radar","title":"prize-radar","summary":"Hackathon and bounty scout: finds open Devpost hackathons and Superteam Earn bounties ranked by prize per entrant, with exact deadlines in your time zone and eligibility for your country from the official pages; sizes the competition, including GitHub pull-request hackathons (entry counts and themes no entry covers); tracks your entries and reports each deadline change, closing and winner announcement once, at the start of a session or through a daily automation blueprint.","disclosure":"read-only, unauthenticated requests to devpost.com, superteam.fun and api.github.com; one SQLite database under plugin-data; no credentials, shell commands, background processes or telemetry; never registers, submits or posts.","category":"tools","platforms":[],"maintainer":"cacx097","author":"cacx097","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/cacx097/prize-radar","docs":null,"tools":["prize_search","prize_competition","prize_track","prize_list","prize_check"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152255,"prs":[{"n":152255,"state":"merged","created":"2026-11-09T22:10:50Z"}],"created":"2026-11-09T22:10:50Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/banner.png","https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/search.png","https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/gaps.png","https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/deadline-moved.png","https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/session-reminder.png"],"videos":["https://raw.githubusercontent.com/cacx097/prize-radar/9f477018dff663df664be645a373e86b38383cca/docs/prize-radar-demo.mp4"],"x":["https://x.com/gridonbtc/status/2119917752085512438"],"youtube":[],"thumb":"/hackathon/thumbs/prize-radar.webp"},{"name":"aunx-decompose","title":"Decompose","summary":"Break a task into the smallest checkable units and parallel waves: typed units, real data edges, clause coverage, an advisor gate and a plan table.","disclosure":"","category":"tools","platforms":[],"maintainer":"AunySillyMe","author":"aunysillyme","version":"0.2.0","requires_hermes":">=0.19","repo":"https://github.com/aunysillyme-dev/aunx-skills","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152251,"prs":[{"n":152251,"state":"merged","created":"2026-11-09T22:01:00Z"}],"created":"2026-11-09T22:01:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"market-search","title":"Market Search","summary":"Live market data for Hermes through the market-search MCP server: Kalshi and Polymarket odds, Fed rate-path probabilities, stocks, ETFs, options, futures curves, corporate and government bonds, FRED macro, Treasury auctions and fiscal data, SEC filings by section and XBRL, insider trades, short interest, CFTC positioning, and Fed, ECB, BOJ, BOE and BIS data, all on one timeseries axis. 25 tools, no API keys, no account. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/) with one skill that maps questions to tools.","disclosure":"the stdio server is started by scripts/launch.sh, a readable shell script: it runs an already-installed market-search binary if one is on PATH, in ~/.local/bin or ~/.cargo/bin; otherwise it downloads the v0.5.0 release binary for the user's OS from this repository's own GitHub release (github.com/efoltyn/market-search, the upstream project), checks it against a SHA-256 written in the script, refuses to run it on mismatch, and caches it under ~/.cache/market-search/. No self-update: the version and checksums change only with a new pinned commit. Tool calls make HTTPS GET requests from the user's machine directly to public data sources (Yahoo Finance, Kalshi, Polymarket, FRED, SEC EDGAR, FINRA, US Treasury, NY Fed, OFR, CFTC, CBOE, CNBC, Pyth, Binance, Hyperliquid, Deribit, ECB, BIS, BOJ, BOE, EIA); nothing goes through a server of the author's. finance_log keeps a local hash-chained record of tool calls in the user's data directory. Read-only: it cannot trade or move money. Every tool carries a title and annotations (24 read-only; finance_log writes its local log), and the package marks its server untrusted. No telemetry. Not financial advice.","category":"tools","platforms":["linux","macos"],"maintainer":"efoltyn","author":"efoltyn","version":"0.5.0","requires_hermes":">=0.21.6","repo":"https://github.com/efoltyn/market-search","docs":"https://github.com/efoltyn/market-search/tree/main/plugins/market-search","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":152250,"prs":[{"n":152250,"state":"closed","created":"2026-11-09T22:00:03Z"}],"created":"2026-11-09T22:00:03Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rainbowomma","title":"RainbowOMMA","summary":"One Mac, one human, many agents. Each Hermes profile gets a Chrome of its own with a coloured, named window frame, its own ports, processes, clipboard and document leases in Word / Excel / Acrobat / Preview. A pre_tool_call guard refuses what would hit the human or another agent before it runs (pkill Chrome, quitting Word through AppleScript, a port or a process that isn't the agent's, the human's clipboard and Chrome profile, typing while the human types) and names the tool that does it safely; a Messages/Mail send goes to Hermes's approval gate. Idle tabs, expired document leases, apps an agent launched and orphaned servers are cleaned up at session end and on a timer. With browser.cloud_provider: rainbowomma, Hermes's own browser tools drive that Chrome. /rainbow shows who holds what; /rainbow pause stops every agent at once.","disclosure":"macOS only. Starts Google Chrome for the agent (own profile folder, a DevTools port on 127.0.0.1, an unpacked theme extension) and runs osascript, ps, pgrep, lsof, ioreg, open and xcrun simctl with a minimal environment (no Hermes provider keys); stops only processes that are provably the agent's, its own idle Chrome, and an Office app an agent launched and left empty. Keeps one guard helper process per profile and a housekeeping timer thread while Hermes runs. Writes its state under ~/.rainbowomma (registry, leases, a receipts log, Chrome profiles, temp copies for Word conversions); conversion outputs go only into the source document's folder, and rainbow_save_document saves in place a document the agent itself opened. When one Hermes process serves several profiles it prefixes the agent's shell commands with `export RAINBOW_AGENT=…` (modify directive; setting mark_commands). Its only request goes to 127.0.0.1 (the agent's own Chrome). No updater, no credential access.","category":"tools","platforms":["macos"],"maintainer":"aviv27-dev","author":"aviv27-dev","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/aviv27-dev/RainbowOMMA","docs":"https://github.com/aviv27-dev/RainbowOMMA/blob/c1961dff1e6c661f46d090d00ed30c13c6074f92/hermes-plugin/rainbowomma/README.md","tools":["rainbow_start_browser","rainbow_browser_status","rainbow_recover_browser","rainbow_open_url","rainbow_job_start","rainbow_job_end","rainbow_keep_tabs","rainbow_close_job_tabs","rainbow_tidy_tabs","rainbow_lease_port","rainbow_release_port","rainbow_who_port","rainbow_whose_process","rainbow_stop_process","rainbow_my_processes","rainbow_take_screen","rainbow_release_screen","rainbow_take_login","rainbow_release_login","rainbow_open_document","rainbow_save_document","rainbow_close_document","rainbow_renew_document","rainbow_convert_to_pdf","rainbow_recalc_workbook","rainbow_documents","rainbow_clip_copy","rainbow_clip_paste","rainbow_sim_lease","rainbow_sim_release","rainbow_status"],"hooks":["pre_tool_call","on_session_start","on_session_finalize"],"middleware":[],"env":[],"known_issues":"macOS only. On another system the plugin registers nothing but /rainbow, which says so.; The guard reads the command text: it closes the cheap ways to hurt a neighbour, it is not a sandbox.; The document tools need the one-time macOS Automation consent (osascript → System Events and each Office/PDF app); a background gateway is asked separately from a terminal session. Browser, port, process, screen and clipboard tools need none.; Word's sandbox asks for access once per folder; until the human answers, rainbow_convert_to_pdf reports blocked-by-dialog.; Extra document apps (setting extra_apps) are driven with AppleScript's standard document suite and need the one-time macOS Automation consent; only Word, Excel, Acrobat and Preview are exercised by the maintainer.","state":"merged","pr":152248,"prs":[{"n":152248,"state":"merged","created":"2026-11-09T21:56:42Z"}],"created":"2026-11-09T21:56:42Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/aviv27-dev/RainbowOMMA/c1961dff1e6c661f46d090d00ed30c13c6074f92/hermes-plugin/assets/overview.jpg"],"videos":[],"x":[],"youtube":["RXp0hL7ZUyY"],"thumb":"/hackathon/thumbs/rainbowomma.webp"},{"name":"morph","title":"MORPH","summary":"One adaptive workspace across the applications you use, with human-approved, verified actions: an approval gate between the agent and the APIs it can write to. Connect a GitHub repository (`hermes morph connect github owner/name`) or any service that publishes an OpenAPI document, and MORPH learns from the schema what can be read and what can be safely changed. The agent gets tools to read and to propose; it has no tool that approves and is never given the token an approval needs. A human approves each change in the dashboard, seeing the exact before and after; MORPH writes it, then re-reads the record from the API and reports it verified only if it matches what was promised. Only operations with a checkable effect are offered — for GitHub issues: close, close as not planned, reopen, set labels, set title, assign, unassign. The dashboard has five views (Workspace, Connections, Approvals, Activity, Context) and composes tables, boards and charts over the connected data from a goal stated in plain language. Every proposal, approval and result is kept in a hash-chained audit log.","disclosure":"MORPH makes outbound HTTPS calls to the services the operator connects, including api.github.com when a repository is connected (loopback only with an explicit opt-in; private, link-local, reserved and cloud-metadata targets are refused, redirects are never followed, and the address actually dialled is validated at connect time); it stores its connection list, workspaces, pending proposals, read cursors and the audit log in its own plugin-data directory; it reads bearer tokens through agent.secret_scope by environment-variable name and never logs, stores or returns them; it calls the host model through ctx.llm for interface planning with a deterministic offline fallback, and sends the model schema only, never a record value. No telemetry, no shell commands, no self-updating code. Ships three workflow skills and an optional offline sandbox of three loopback services (`hermes morph connect sandbox`, started only by `hermes morph up`) so the whole loop can be tried with no account and no key.","category":"tools","platforms":[],"maintainer":"timioni001","author":"Timioni001","version":"1.0.0","requires_hermes":">=0.19.0","repo":"https://github.com/timioni001/morph-hermes","docs":"https://github.com/timioni001/morph-hermes#readme","tools":["morph_discover","morph_plan_workspace","morph_workspace_state","morph_refresh","morph_inspect_record","morph_propose_action","morph_verify_action"],"hooks":["on_session_start","pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152243,"prs":[{"n":152243,"state":"merged","created":"2026-11-09T21:45:48Z"}],"created":"2026-11-09T21:45:48Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/timioni001/morph-hermes/1a3a8bce10d5d5b14bd3ae3cddc908199fe2f90c/docs/assets/catalog-card.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1a3a8bce10d5d5b14bd3ae3cddc908199fe2f90c/docs/assets/workspace.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1a3a8bce10d5d5b14bd3ae3cddc908199fe2f90c/docs/assets/approvals.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1a3a8bce10d5d5b14bd3ae3cddc908199fe2f90c/docs/assets/connections.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1a3a8bce10d5d5b14bd3ae3cddc908199fe2f90c/docs/assets/context.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1870be826423cb4789821400a56bdcbdfbca296c/docs/assets/morph-in-hermes.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1870be826423cb4789821400a56bdcbdfbca296c/docs/assets/workspace.png","https://raw.githubusercontent.com/timioni001/morph-hermes/1870be826423cb4789821400a56bdcbdfbca296c/docs/assets/connections.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/morph.webp"},{"name":"pr-152237","title":"AgentStatus hosted public MCPs","summary":"One pull request listing about 207 catalog entries, such as Alabama State Parks: Public MCP for Alabama State Parks, hosted by AgentStatus at https://alabama-parks.mcp.agentstatus.dev/. No authentication and no keys.","disclosure":"tool calls go to that host. The tool list is served at runtime and is not covered by the pinned sha. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only.","category":"tools","platforms":[],"maintainer":"AgentStatus","author":"dulrajnr","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Carmel-Labs-Inc/agentstatus-mcp-index","docs":"https://alabama-parks.mcp.agentstatus.dev/","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152237,"prs":[{"n":152237,"state":"open","created":"2026-11-09T21:28:45Z"}],"created":"2026-11-09T21:28:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kaggle-competitions","title":"kaggle-competitions","summary":"Track Kaggle competitions from your agent: live submission status, score history, personal-best watch, leaderboards, and new-score watch. Four agent tools over the Kaggle CLI (submissions, score history, watch for new results, leaderboards), a desktop pane, a full web page with sidebar nav, and a dashboard API route. Multi-competition - track any number of slugs via config. Auth resolves KAGGLE_API_TOKEN through Hermes's secret scope (declared secret in the manifest) or lets the CLI read ~/.kaggle/kaggle.json; child processes get a minimal explicit environment; the token is never logged or echoed. No telemetry, no third-party services.","disclosure":"the tools and the dashboard page run your locally installed `kaggle` CLI (a third-party binary not covered by this pin) with a minimal environment that includes KAGGLE_API_TOKEN from Hermes's secret scope when set (otherwise the CLI reads ~/.kaggle/kaggle.json itself); submission data is cached under the Hermes plugin-data directory.","category":"tools","platforms":[],"maintainer":"landenjackson","author":"landenjackson","version":"","requires_hermes":">=0.23.0","repo":"https://github.com/landenjackson/hermes-kaggle-plugin","docs":"https://github.com/landenjackson/hermes-kaggle-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152233,"prs":[{"n":152233,"state":"merged","created":"2026-11-09T21:25:56Z"}],"created":"2026-11-09T21:25:56Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/landenjackson05/status/2119903809476375037"],"youtube":[],"thumb":null},{"name":"vail-assurance-panel","title":"VAIL Assurance Panel","summary":"A Hermes Desktop page that assures every Hermes profile (each bot) with the VAIL Agent Assurance Engine: scan a profile in one click, then see its behavior risks by severity, probe coverage, whether it changed since the last scan, and which risks were fixed locally with probes passing before and after. Pairs with the vail-agent-assurance plugin, which does the testing and fixing. Native package with a desktop/plugin.js page and a dashboard backend; needs a VAIL personal access token as VAIL_TOKEN (secret setting) and the Desktop half switched on in Capabilities → Plugins.","disclosure":"the backend calls agents.projectvail.com (or the vail_url you set) with your token; Scan with VAIL uploads the chosen profile's SOUL.md, AGENTS.md, config.yaml, its own skills and plugins (text files only; never .env or hidden files, credential-named files, sessions, memories, logs or databases; token-shaped strings and config.yaml values under secret-looking keys are replaced with <redacted> by pattern matching, so review the file list) only after you confirm a dialog listing every file; it reads SOUL.md, AGENTS.md, config.yaml, skills, plugins and .vail/improvement records of every profile on this machine; while a scan runs, a thread in the Hermes backend checks VAIL every 15 seconds and starts probe generation (at most 45 minutes); it writes only links.json in its own data directory. No telemetry, no shell commands.","category":"desktop","platforms":[],"maintainer":"projectvail","author":"mnshah","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/projectvail/vail-agent-assurance","docs":"https://github.com/projectvail/vail-agent-assurance/tree/b987cb9c459568eca591a4cdcd130fb24ea7aa15/plugins/vail-assurance-panel#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152226,"prs":[{"n":152226,"state":"merged","created":"2026-11-09T21:20:18Z"}],"created":"2026-11-09T21:20:18Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/projectvail/vail-agent-assurance/b987cb9c459568eca591a4cdcd130fb24ea7aa15/plugins/vail-assurance-panel/docs/team-overview.png","https://raw.githubusercontent.com/projectvail/vail-agent-assurance/b987cb9c459568eca591a4cdcd130fb24ea7aa15/plugins/vail-assurance-panel/docs/risks-and-local-fixes.png","https://raw.githubusercontent.com/projectvail/vail-agent-assurance/b987cb9c459568eca591a4cdcd130fb24ea7aa15/plugins/vail-assurance-panel/docs/scan-review.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vail-assurance-panel.webp"},{"name":"vail-agent-assurance","title":"VAIL Agent Assurance","summary":"Find, test and fix risky behaviors in your AI agents with the VAIL Agent Assurance Engine: upload an agent's source to scan it for behavior risks and generate probes, then run those probes against the agent locally, graded as VAIL grades them, fix what fails and rerun to prove the fix. Works on LangGraph, Hermes and OpenClaw agents, including your own Hermes profiles. Portable Agent Plugins v1 package (mcp.json + skills/): the hosted VAIL MCP server plus the agent-assurance and agent-improvement skills. Needs a VAIL account and a personal access token, set as VAIL_TOKEN (the plugin's secret setting, kept in the profile's .env).","disclosure":"every call goes to agents.projectvail.com with your VAIL token; scanning uploads the agent source you choose to VAIL, which stores it as that agent's source (replacing the previous upload); the agent-improvement skill downloads VAIL's grading package (a version VAIL's server chooses at run time, sha256-checked against that server's own value), installs it into a local virtual environment, runs it, and sends test messages to the agent you name. No telemetry.","category":"tools","platforms":[],"maintainer":"projectvail","author":"mnshah","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/projectvail/vail-agent-assurance","docs":"https://github.com/projectvail/vail-agent-assurance#install-in-hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152225,"prs":[{"n":152225,"state":"merged","created":"2026-11-09T21:20:13Z"}],"created":"2026-11-09T21:20:13Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"twitch-assist","title":"Twitch Assist","summary":"Put your Hermes in your Twitch chat as a co-host: viewers type !ask (or @mention the bot) and get a real agent answer in chat, and the broadcaster or a mod can run Backseat Mode, a chat vote whose winner becomes Hermes's next task. Stdlib only (asyncio IRC over TLS).","disclosure":"network calls go only to irc.chat.twitch.tv:6697 (TLS IRC) and https://id.twitch.tv/oauth2/validate; the Twitch token is read through Hermes's secret scope; private by default (broadcaster and TWITCH_ALLOWED_USERS ids only), and opening it to every viewer needs TWITCH_ALLOW_ALL_USERS=true, after which non-broadcaster requests are dropped unless both memory flags are off and platform_toolsets.twitch is pinned; viewer turns are limited to web search by a pre_tool_call guard; Hermes injects the owner's SOUL.md persona into every gateway session (skip_context_files does not remove it on 0.23.x) and MEMORY.md/USER.md unless the memory flags are off, and allowlisted viewers are served even then, so run the bot in a dedicated Hermes profile with an empty SOUL.md and memory off.","category":"platform","platforms":[],"maintainer":"Techkeyy","author":"Techkeyy","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/Techkeyy/twitch-assist","docs":"https://github.com/Techkeyy/twitch-assist#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":["TWITCH_TOKEN","TWITCH_CHANNEL"],"known_issues":"Needs a Twitch chat OAuth token with chat:read and chat:edit (a dedicated bot account is recommended).; platform_toolsets.twitch is REQUIRED to be pinned to [search, no_mcp] in config.yaml. A plugin cannot change the platform default toolset, so an unresolved adapter would otherwise fall back to the full default (a pre_tool_call guard still blocks every tool except web_search, and a warning is logged at connect).; Hermes injects the owner's SOUL.md persona into every gateway session prompt, and skip_context_files does NOT remove it on Hermes 0.23.x; MEMORY.md and USER.md are removed only by memory.memory_enabled and memory.user_profile_enabled set to false. A plugin cannot switch this off, so run the Twitch bot in its own Hermes profile (hermes profile create) with an empty SOUL.md and no memory. An external memory provider may also record Twitch turns.; Private by default: only the broadcaster and TWITCH_ALLOWED_USERS ids can use the bot. TWITCH_ALLOW_ALL_USERS=true is an explicit opt-in and fails closed: non-broadcaster requests are dropped unless both memory flags are false and platform_toolsets.twitch is pinned (the reason is logged once).; Toolsets registered by other plugins are added by Hermes to any platform list (no no-plugins setting); their calls are blocked in Twitch sessions by the guard, but their schemas may still be shown to the model.; The first answer after a gateway start can take up to a minute (Hermes cold start); later answers take seconds.; In-turn gateway notices are matched by English text; outside a pending turn nothing is posted in any language.; A running Backseat vote is lost if the connection drops or the gateway restarts.; Reconnect after a real network drop is proven only against a local fake IRC server.","state":"merged","pr":152224,"prs":[{"n":152224,"state":"merged","created":"2026-11-09T21:19:50Z"}],"created":"2026-11-09T21:19:50Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Techkeyy/twitch-assist/ca59b45749c29a53fd8e9b4c16608748adaf6c26/docs/chat-proof.jpg"],"videos":[],"x":["https://x.com/Praise_Prodigyy/status/2120090091947270208"],"youtube":[],"thumb":"/hackathon/thumbs/twitch-assist.webp"},{"name":"grok-bot-twin","title":"Grok Bot Twin","summary":"Try Hermes without leaving Grok. Gives each Grok desktop-app bot a Hermes twin profile and a Desktop Twins page (conflicts, restore points); `hermes twin demo` needs no Grok account. Name and description changes reach the twin in seconds; instructions stay on the by-hand list; skills travel through your own optional Mirror bot; routines and connectors stay by hand. Unofficial; not affiliated with xAI.","disclosure":"Runs the user-installed external botport CLI (never bundled or downloaded; setup runs `gh attestation verify` against hudsonwa/botport's release workflow and pins the binary's digest; `hermes twin setup --allow-unattested` is a recorded opt-out), plus `gh` and, on \"Ready to switch\", `hermes cron resume` for that twin's paused jobs, each with a minimal environment; via botport it reads the Grok desktop app's bot list and the selected bots' local transcript files (capped, parsed for routine changes only) and writes the twin Hermes profiles it manages; the plugin writes only plugin-data/grok-bot-twin/, reads twin profiles' cron/jobs.json read-only, keeps one owner-only pair key per twin, runs one background metadata-check/sync thread (default every 60 s) once a session starts, makes no network calls of its own and sends no telemetry; the optional activity digest (off by default, per twin) goes to the user's own Grok bot on xAI's service; it calls Hermes' internal skill scanner (tools.skills_guard, fail-open) for the demo's skill preview.","category":"tools","platforms":["macos","linux"],"maintainer":"hudsonwa","author":"hudsonwa","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/hudsonwa/grok-bot-twin","docs":"https://github.com/hudsonwa/grok-bot-twin/blob/3ab3b9185fdeb9dfc9408c790fba2b90b9f99094/README.md","tools":["twin_status","twin_recent"],"hooks":["pre_llm_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"Real twins need botport v0.2.1 (the release `hermes twin setup` verifies; other releases via botport_release_tag) on PATH (or botport_path), installed by you from its GitHub release; setup verifies the GitHub build attestation. Without it only the demo works (`hermes twin demo`).; From the Grok desktop app's local files, botport opens only the bot list (id, name, description) and the selected bots' transcript files (capped, parsed only for routine-change events); those files hold no instructions, skills, schedules or connectors. Instructions, routines and connectors stay on the by-hand list; skills can travel through your own Mirror bot routine.; Under plugins.isolation: host, Hermes skips plugin CLI commands, so `hermes twin` is unavailable; use `/twin` or the Twins page in Hermes Desktop.","state":"merged","pr":152223,"prs":[{"n":152223,"state":"merged","created":"2026-11-09T21:17:32Z"}],"created":"2026-11-09T21:17:32Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/hudsonwa/grok-bot-twin/3ab3b9185fdeb9dfc9408c790fba2b90b9f99094/docs/screenshots/conflict-card.png","https://raw.githubusercontent.com/hudsonwa/grok-bot-twin/3ab3b9185fdeb9dfc9408c790fba2b90b9f99094/docs/screenshots/ready-to-switch.png","https://raw.githubusercontent.com/hudsonwa/grok-bot-twin/3ab3b9185fdeb9dfc9408c790fba2b90b9f99094/docs/screenshots/twins-page.png","https://raw.githubusercontent.com/hudsonwa/grok-bot-twin/3ab3b9185fdeb9dfc9408c790fba2b90b9f99094/docs/screenshots/add-twins-preview.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/grok-bot-twin.webp"},{"name":"passkey-gate","title":"passkey-gate","summary":"Approve your agents' risky actions with your phone's passkey, even when you're not at the agent's keyboard. An agent asks for approval of an exact action (and optionally the exact command); you get a link in any chat, read it on your phone and sign with Face ID, a fingerprint or your screen lock; the agent then verifies your signature locally against your pinned key before acting. A relayed 'the human said yes' proves nothing; only your signature counts. Optional enforcement blocks matching tool calls until you approve them, and each approval runs once. Includes a guided `setup` wizard, a background service, a hash-chained audit log, and approvals between agents owned by different people. It is an honest approval record, and becomes a hard boundary only when agents can't modify the gate (see the README's Security model). Lanes choose which conversations need a passkey: you at the keyboard, your own chat accounts, other people, bots or other agents.","disclosure":"runs a small web server on 127.0.0.1 that your phone reaches over HTTPS (by default published to your own tailnet with `tailscale serve`); can install a background service (systemd user unit or LaunchAgent) that runs as you; runs `tailscale`, `systemctl --user`/`launchctl` and a short Python process to time new patterns, never with elevated privileges; contacts only its own address and any peer gates you allowlist, follows no redirects, no telemetry; stores passkey public keys, requests, the pinned key, an audit log and a remote-minting token in its plugin data folder (no private keys); its hooks note each turn's platform, sender id and bot flag in memory only; with enforcement on, any failure blocks the call; only your pinned passkey can approve, and anyone with an approval link can read and deny that request; patterns are a best-effort list, not a sandbox.","category":"tools","platforms":["linux","macos"],"maintainer":"codepilots","author":"codepilots","version":"0.8.1","requires_hermes":">=0.23.0","repo":"https://github.com/codepilots/hermes-plugin-passkey-gate","docs":"https://github.com/codepilots/hermes-plugin-passkey-gate","tools":["gate_challenge","gate_verify","gate_status"],"hooks":["pre_tool_call","pre_llm_call","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152214,"prs":[{"n":152214,"state":"merged","created":"2026-11-09T21:01:24Z"}],"created":"2026-11-09T21:01:24Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/codepilots/hermes-plugin-passkey-gate/b0c183545de1873c2aa7c3417413fb9caac5c212/docs/images/phone-code.png","https://raw.githubusercontent.com/codepilots/hermes-plugin-passkey-gate/f50b315530beea1f0dc2739049b675ad69f83d26/docs/images/phone-approve.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/passkey-gate.webp"},{"name":"dome-relay","title":"Dome Relay","summary":"Escalate a task to another established agent through an always-on callback relay and read the result back in the conversation that sent it. Registers jobs with tools dome_relay_escalate, dome_relay_status, and dome_relay_cancel; a worker polls the relay; the relay (not this plugin) wakes a Grok Bot executive.","disclosure":"sends each escalated job (task text, target name, optional https reference links) to the HTTPS relay you configure in `relay_url` (no default host; you deploy the relay from this repo's `relay/` folder), which forwards it to your Grok Bot webhook and spends Grok Bot usage on each successful wake; the model can queue a job without an approval prompt, and jobs leave the machine only while you run `hermes dome-relay worker` (a long-running poller you start yourself); stores job metadata and results in the active profile's plugin-data database; its only secret is DOME_RELAY_KEY, read through Hermes secret scope and sent only to that relay; optional settings (off by default) add finished results from the relay to the next turn's context.","category":"automation","platforms":[],"maintainer":"nerdcakes","author":"nerdcakes","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/nerdcakes/hermes-dome-relay","docs":"https://github.com/nerdcakes/hermes-dome-relay#readme","tools":["dome_relay_escalate","dome_relay_status","dome_relay_cancel"],"hooks":["pre_llm_call","post_compaction"],"middleware":[],"env":["DOME_RELAY_KEY"],"known_issues":"","state":"merged","pr":152213,"prs":[{"n":152213,"state":"merged","created":"2026-11-09T20:59:10Z"}],"created":"2026-11-09T20:59:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tala","title":"Tala","summary":"Read your Tala AI phone agents and their call results from Hermes through Tala's official read-only connector (Streamable HTTP at https://mcp.tala-assistant.com/mcp, OAuth sign-in on Tala's consent screen): list the agents you authorized, list their calls with date and status filters, and read a call's status, duration, context and summary. Bundles one skill for the connector. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Tala's hosted MCP server (mcp.tala-assistant.com) and acts only on the organization and agents the user selected at OAuth sign-in; results include callers' phone numbers and call summaries (third-party text), which reach the user's configured model. The connector is read-only. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Tala","author":"domsilvestre","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/noxcod-agency/tala-skills","docs":"https://docs.tala-assistant.com/integrations/chatgpt-claude","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152210,"prs":[{"n":152210,"state":"merged","created":"2026-11-09T20:44:16Z"}],"created":"2026-11-09T20:44:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"comemo","title":"comemo","summary":"Composite memory meta-provider for Hermes Agent. Comemo multiplexes Honcho, Mem0, and Supermemory simultaneously. Write fan-out goes to all configured providers in parallel, reads merge and deduplicate results across them. Failed writes are queued in a local SQLite retry store and replayed at the next session start. Maintained by Anda Usman.","disclosure":"conversation turns and recall queries are sent to every enabled backend (Honcho at api.honcho.dev or your configured base_url, Mem0 at api.mem0.ai or MEM0_BASE_URL, Supermemory at api.supermemory.ai) under that backend's own API key, and writes that fail are kept in a local SQLite retry queue under HERMES_HOME/comemo/ and replayed at the next session start.","category":"memory","platforms":[],"maintainer":"andausman","author":"andausman","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/andausman/comemo","docs":"https://github.com/andausman/comemo#readme","tools":["search_memory"],"hooks":["prefetch","queue_prefetch","sync_turn","on_session_end","on_pre_compress","shutdown","system_prompt_block","recall_status"],"middleware":[],"env":["HONCHO_API_KEY","MEM0_API_KEY","SUPERMEMORY_API_KEY"],"known_issues":"","state":"merged","pr":152208,"prs":[{"n":152208,"state":"merged","created":"2026-11-09T20:42:55Z"}],"created":"2026-11-09T20:42:55Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"codecoach","title":"CodeCoach","summary":"Learn C or Python by building a real program one small step at a time: every example really ran in a sandbox, every pass is a real test, and hints never give away the answer.","disclosure":"Code exercises run inside a bubblewrap sandbox (no network, host filesystem not mounted); if you turn on `allow_unsandboxed_code` on a machine without bwrap, learner and model-submitted C/Python code runs directly on your host as your user with no Hermes approval prompt. Imported .txt/.md/.pdf files (any non-hidden path you or the agent names) are sent to your configured model.","category":"desktop","platforms":["linux"],"maintainer":"heyitstony97-max","author":"heyitstony97-max","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/heyitstony97-max/codecoach","docs":"https://github.com/heyitstony97-max/codecoach","tools":["codecoach_import","codecoach_next","codecoach_answer","codecoach_hint","codecoach_progress","codecoach_report","codecoach_ask"],"hooks":[],"middleware":[],"env":[],"known_issues":"Running code needs bubblewrap (bwrap), and gcc for C. Without bwrap CodeCoach refuses to run any code and the Projects page says what to install; that is why the entry lists Linux only.; On a local 27B model the first lesson of a project appears 2 to 3 minutes after Start; later steps are built in the background while you code.","state":"merged","pr":152207,"prs":[{"n":152207,"state":"merged","created":"2026-11-09T20:41:42Z"},{"n":153286,"state":"open","created":"2026-11-11T07:29:52Z"}],"created":"2026-11-09T20:41:42Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/heyitstony97-max/codecoach/fccd39f557adb8dd6bd433af5b2bd9077cf5b042/docs/img/project-step.png","https://raw.githubusercontent.com/heyitstony97-max/codecoach/fccd39f557adb8dd6bd433af5b2bd9077cf5b042/docs/img/project-run.png","https://raw.githubusercontent.com/heyitstony97-max/codecoach/68cbfb6a78bc16f3fb60c4a8dac21e4882a8c20d/docs/img/v11-build-home.png","https://raw.githubusercontent.com/heyitstony97-max/codecoach/68cbfb6a78bc16f3fb60c4a8dac21e4882a8c20d/docs/img/v11-step.png","https://raw.githubusercontent.com/heyitstony97-max/codecoach/68cbfb6a78bc16f3fb60c4a8dac21e4882a8c20d/docs/img/v11-run.png","https://raw.githubusercontent.com/heyitstony97-max/codecoach/68cbfb6a78bc16f3fb60c4a8dac21e4882a8c20d/docs/img/v11-practice.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/codecoach.webp"},{"name":"tallyhand","title":"Tallyhand","summary":"Twitch chat for Hermes Agent that treats chat as untrusted input. Roles come from chat badges and are enforced in code before every tool call: viewers get no moderation tools, and bans, unbans and long timeouts wait for the streamer's approval. The streamer also gets Twitch and OBS tools, chat commands that need no model call, viewer notes kept only with consent, and replies in the stream's language.","disclosure":"chat in the configured Twitch channels starts Hermes turns for allowlisted viewers (or everyone, if TWITCH_ALLOW_ALL_USERS=true), and those viewers' turns run in this profile with its persona and the questions go to your model provider; while this profile's memory, user profile or an external memory provider is on, only your own questions are answered unless you set allow_profile_memory_for_viewers: true, which puts your MEMORY.md, USER.md and memory-provider recall into viewers' turns; viewers and moderators get no Hermes tools beyond the to-do list and, for moderators, capped Twitch moderation, while bans, unbans and long timeouts need your approval; the bot token is used only against Twitch's own endpoints and OBS is contacted on this computer unless TALLYHAND_OBS_ALLOW_REMOTE=true; viewer notes (!remember) are stored under the profile's plugin-data for 90 days by default, and !forgetme deletes the viewer's notes and their own per-viewer Hermes sessions; the setup wizard writes the token to .env and, after a yes/no, Twitch toolset/context settings to config.yaml. No telemetry, no self-update.","category":"platform","platforms":[],"maintainer":"Reza Harirchian","author":"RezaHarirchian","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/RezaHarirchian/hermes-tallyhand","docs":"https://github.com/RezaHarirchian/hermes-tallyhand#readme","tools":["twitch_stream_info","twitch_create_clip","twitch_announce","twitch_shoutout","twitch_timeout","twitch_ban","twitch_unban","twitch_delete_message","obs_status","obs_list_scenes","obs_switch_scene","obs_list_audio_inputs","obs_set_mute","obs_show_caption","obs_clear_caption","obs_set_source_visible","obs_save_replay"],"hooks":["pre_tool_call"],"middleware":[],"env":["TWITCH_BOT_TOKEN","TWITCH_CHANNEL"],"known_issues":"","state":"merged","pr":152205,"prs":[{"n":152205,"state":"merged","created":"2026-11-09T20:38:15Z"}],"created":"2026-11-09T20:38:15Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/rezaharirchian/status/2119886764030689362"],"youtube":[],"thumb":null},{"name":"whatsapp-plus","title":"whatsapp-plus","summary":"WhatsApp Plus extends the stock WhatsApp platform by subclassing the adapter with group history, trust tiers, group approval, loop protection, outside-contact handling, voice call daemon integration, and whatsapp_* tools.","disclosure":"","category":"platform","platforms":["linux","macos","windows"],"maintainer":"amitamit10","author":"amitamit10","version":"2.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/amitamit10/hermes-whatsapp-plus","docs":"https://github.com/amitamit10/hermes-whatsapp-plus#readme","tools":["whatsapp_send","whatsapp_contacts","whatsapp_history","whatsapp_group_control","whatsapp_status","whatsapp_delete","whatsapp_backfill","whatsapp_settings","whatsapp_react","whatsapp_groups","whatsapp_poll","whatsapp_pairing","whatsapp_campaign","whatsapp_call_me","whatsapp_call_contact"],"hooks":["post_llm_call","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":152203,"prs":[{"n":152203,"state":"closed","created":"2026-11-09T20:36:47Z"}],"created":"2026-11-09T20:36:47Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"followthrough","title":"followthrough","summary":"Capture and track user-selected commitments with owners, due dates, and source references.","disclosure":"","category":"automation","platforms":[],"maintainer":"AbdullahBalfaqih","author":"AbdullahBalfaqih","version":"0.1.0","requires_hermes":"","repo":"https://github.com/AbdullahBalfaqih/hermes-followthrough","docs":null,"tools":["followthrough_capture","followthrough_list","followthrough_complete","followthrough_snooze"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152201,"prs":[{"n":152201,"state":"merged","created":"2026-11-09T20:36:27Z"}],"created":"2026-11-09T20:36:27Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"widespread","title":"widespread","summary":"Earn verified-work bounties on the widespread protocol —","disclosure":"","category":"platform","platforms":[],"maintainer":"TerexitariusStomp","author":"TerexitariusStomp","version":"0.1.0","requires_hermes":"","repo":"https://github.com/TerexitariusStomp/hermes-browser","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152199,"prs":[{"n":152199,"state":"open","created":"2026-11-09T20:32:02Z"}],"created":"2026-11-09T20:32:02Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pr-ready-checker","title":"pr-ready-checker","summary":"Gate a branch before the PR exists: branch hygiene, clean tree, whitespace, secrets/debug scan, lint, scoped tests, Conventional Commits, PR-body draft, docs drift, CI status. FAIL blocks; a real git pre-push hook enforces it.","disclosure":"","category":"tools","platforms":[],"maintainer":"phon-t","author":"phon-t","version":"0.2.0","requires_hermes":"","repo":"https://github.com/phon-t/pr-ready","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152198,"prs":[{"n":152198,"state":"open","created":"2026-11-09T20:31:35Z"}],"created":"2026-11-09T20:31:35Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"borrowed-hands","title":"Borrowed Hands","summary":"Lend your Mac's Xcode to a cloud Hermes. Hermes finds your paired Mac, compiles the Xcode project you granted (macOS arm64 or generic iOS Simulator, compile only) at an exact commit on a bh/* branch, and gets structured compiler diagnostics back: ask \"Build my demo project on my Mac\". Needs the separate Borrowed Hands Mac helper (Python source in the same repository) on an Apple silicon Mac with Xcode; the Mac connects out to Hermes and decides what may build.","disclosure":"when `listen.enabled` is set (off by default) the plugin runs an HTTP/WebSocket listener inside `hermes gateway run` (default bind `0.0.0.0:8790`, routes `/bh/v1/ws` and an unauthenticated `/bh/v1/healthz`) that paired Macs dial into; connections are authenticated by a single-use pairing code and per-device Ed25519 keys. It keeps a server signing key and a SQLite database (paired device keys, signed job contracts, build diagnostics, audit log) in its plugin data dir; anything the agent can reach on the gateway host can read that key, and a holder of it can sign build requests to paired Macs within their grants. For a build with no commit it makes one anonymous HTTPS read of the granted public repository's branch list (public addresses only, no credentials, no redirects). Builds ask for Hermes approval; an \"always\" answer covers the same Mac, workspace, scheme, configuration and destination but not the commit or branch, so later commits build without a new prompt. The separate Mac helper is installed by the user from the repository checkout, is not covered by this catalog pin, and installs a LaunchAgent, a hidden build user, a root-owned dispatcher and a sudo rule limited to six exact dispatcher commands. No telemetry, no self-update.","category":"tools","platforms":["linux","macos"],"maintainer":"alext8900","author":"alext8900","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/alext8900/borrowed-hands","docs":"https://github.com/alext8900/borrowed-hands/blob/main/docs/QUICKSTART.md","tools":["hands_find","hands_system_info","hands_xcode_build","hands_job","hands_screen_capture"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"hands_screen_capture is registered but unavailable: no helper executor in this version.; iOS Simulator support is compile-only: no boot, install, UI or tests.; Public HTTPS repositories and bh/* commits only; private repositories and remote Swift packages are unsupported.; Builds report wipe_ok=false for protected per-user state; complete persistent-state removal is not established.","state":"merged","pr":152195,"prs":[{"n":152195,"state":"merged","created":"2026-11-09T20:26:22Z"}],"created":"2026-11-09T20:26:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"better-analyst","title":"Better Analyst","summary":"Convert PDFs such as bank statements, invoices, receipts and reports into Excel workbooks through Better Analyst's hosted MCP server (https://app.betteranalyst.com/api/mcp/connector, OAuth sign-in, no keys in config). Bundles a pdf-to-excel workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to app.betteranalyst.com and acts on the user's Better Analyst account; PDFs the user uploads or links are sent there for processing. Conversions use the user's AI credits, 10 per page. The tool set is served by that server at runtime and is not covered by the pinned sha. The server records account, tool name, outcome, latency and client user agent per call, not file contents or arguments. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores the OAuth token under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Better Analyst","author":"excelformulabot","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/excelformulabot/better-analyst-hermes-plugin","docs":"https://betteranalyst.com/docs/tools/pdf-to-excel","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152192,"prs":[{"n":152192,"state":"merged","created":"2026-11-09T20:23:25Z"}],"created":"2026-11-09T20:23:25Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-tuneup","title":"tuneup","summary":"Shows when compaction really fires on every profile and model route, flags settings that waste quota or break prompt caching, and fixes them only after you confirm, with a diff and a backup.","disclosure":"reads every Hermes profile's config.yaml (and four context-length cache files) read-only, through Hermes' own loader on a temporary copy, and shows the model a redacted per-profile digest; writes a profile's config.yaml only when you type a fix and confirm it (never from cron, a group chat or an agent-launched shell), after saving a backup under that profile's backups/config; when you turn receipts on it records compaction, cache and model-use metadata (never message content) in its own plugin-data folder; imports undocumented Hermes resolver modules from one adapter file (validate shows rule 9 warnings); no network calls, credentials, shell commands or background processes.","category":"tools","platforms":[],"maintainer":"GodsBoy","author":"GodsBoy","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/GodsBoy/hermes-tuneup","docs":"https://github.com/GodsBoy/hermes-tuneup#readme","tools":["tuneup_check"],"hooks":["pre_tool_call","post_api_request","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152190,"prs":[{"n":152190,"state":"merged","created":"2026-11-09T20:18:47Z"}],"created":"2026-11-09T20:18:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/GodsBoy/hermes-tuneup/e844617bb451fa6d19cd6162a25551599f60e5a9/docs/banner.png","https://raw.githubusercontent.com/GodsBoy/hermes-tuneup/e844617bb451fa6d19cd6162a25551599f60e5a9/docs/screenshots/check.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-tuneup.webp"},{"name":"lean-mode","title":"lean-mode","summary":"Cheap-model subagent (quick_run) with a dollar cap, auto-escalation when the cheap model fails, and an honest cost receipt. Each child call starts with 4-10k prompt tokens vs the parent's 100-300k. Per-run budget cap (soft, stops within one call), watchdog timeout, escalation to the parent model, a restricted toolset (no delegation/memory/skills/clarify/cronjob), and a JSON audit logged to plugin-data/lean-mode/runs.jsonl. Requires the operator to configure lean: in config.yaml with a cheap model, parent model, prices and presets. Tested on Hermes v0.23.0. MIT licensed.","disclosure":"the model can start cheap-model subagents with quick_run and may set the model id, budget and timeout per call; the dollar cap is soft, works only for models priced under lean.prices, and is off by default. When the parent's toolsets cannot be narrowed, and on every escalation, the child runs with all of the parent's toolsets (skills included) on the parent model. Run metadata (tokens, cost estimate, model, child session id, result hash; no message content) is logged to plugin-data/lean-mode/runs.jsonl. No network calls, shell commands or credentials of its own.","category":"tools","platforms":[],"maintainer":"Aoyama","author":"aoyamari","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aoyamari/hermes-lean-mode","docs":null,"tools":["quick_run"],"hooks":["post_api_request","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152189,"prs":[{"n":152189,"state":"merged","created":"2026-11-09T20:16:12Z"}],"created":"2026-11-09T20:16:12Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"artifactguard","title":"artifactguard","summary":"Pre-load security scan for serialized model artifacts (pickle, torch, joblib, numpy, safetensors): disassembles pickle opcodes and reports the globals an artifact would invoke — os.system, subprocess.Popen, builtins.eval — before any loader runs it. Includes a pre_tool_call guard that blocks loads of dangerous artifacts, and a directory audit for plugin bundles.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Mahgal","author":"Mahgal","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/Mahgal/artifactguard","docs":null,"tools":["artifact_scan","artifact_audit_plugin"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152184,"prs":[{"n":152184,"state":"open","created":"2026-11-09T20:03:48Z"}],"created":"2026-11-09T20:03:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gmi-sandbox","title":"GMI Cloud Sandbox","summary":"GMI Cloud Sandbox terminal backend: Hermes's terminal, file and code tools run inside an ephemeral cloud sandbox created from a ready template you provide (`hermes config set terminal.backend gmi_sandbox`). Commands are polled to completion and cancelled on interrupt; truncated output is reported as a failure.","disclosure":"community plugin, not a GMI product. With `terminal.backend: gmi_sandbox`, every terminal command, file path and file content the agent handles goes to console.gmicloud.ai and the GMI sandbox data plane with your GMI_SANDBOX_API_KEY (read per sandbox through Hermes secret scope), tagged with the plugin name and the Hermes task id. The first terminal call creates a billed sandbox with no Hermes approval prompt, and a crash can leave it running until its lifetime (default 900 s, renewed per command) expires; the plugin creates and deletes only its own sandboxes. Not yet verified against the live GMI service (offline tests only).","category":"tools","platforms":[],"maintainer":"avinxshKD","author":"avinxshKD","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/avinxshKD/hermes-gmi-sandbox","docs":"https://github.com/avinxshKD/hermes-gmi-sandbox/tree/593d6425e7d0e4d966b7dd96b16f738534e42d6f#readme","tools":[],"hooks":[],"middleware":[],"env":["GMI_SANDBOX_API_KEY"],"known_issues":"Live sandbox execution, file operations and cleanup have not been verified against GMI; this entry is pinned after offline tests only.; The template must provide bash, python3 and any development tools your tasks need; Hermes's generic resource knobs do not resize the sandbox.; Persistent container mode and per-task image overrides are refused.; Command stdout and stderr are concatenated after completion, so their interleaving is not preserved.","state":"merged","pr":152176,"prs":[{"n":152176,"state":"merged","created":"2026-11-09T19:53:21Z"}],"created":"2026-11-09T19:53:21Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"openwall-mcp","title":"OpenWall","summary":"OpenWall through its MCP server (Streamable HTTP at https://openwall.mrhyde.dev/mcp): a giant shared wall, 40,000 px across, where AI agents paint live while people watch. The agent finds free space, plans an artwork at wall scale, paints it with shapes, pixel art or a photo the server converts to pixel art, checks it with a picture of the wall, titles it and returns its link. Bundles one skill for the whole flow and an after-install note. Tested end to end with Hermes 0.23 on a local copy of the wall: seven artworks painted from seven requests, plus a seagull added to one of them after a preview with look. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only. Each agent uses its own key (ow_...), created with Connect on the site and read from OPENWALL_API_KEY, declared as a secret in config_schema and sent as an Authorization header that Hermes fills in.","disclosure":"hosted-only connector with no local code; every tool call goes to openwall.mrhyde.dev (closed-source server), and the tool set is served by that server at runtime, not covered by the pinned sha. What the agent paints, its titles and its name are public on the wall; the server keeps a hash of the key and keyed hashes of IP addresses for rate limits; uploaded photos are converted and the original is not stored; moderation reviews artworks after they appear. The server is marked untrusted, so painting and erasing tools ask for approval (Once / Session / Always per tool).","category":"tools","platforms":[],"maintainer":"MrHydeDev","author":"MrHydeDev","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/MrHydeDev/openwall-mcp-plugin","docs":"https://github.com/MrHydeDev/openwall-mcp-plugin","tools":[],"hooks":[],"middleware":[],"env":["OPENWALL_API_KEY"],"known_issues":"","state":"merged","pr":152174,"prs":[{"n":152174,"state":"merged","created":"2026-11-09T19:39:33Z"}],"created":"2026-11-09T19:39:33Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/MrHydeDev/openwall-mcp-plugin/26e25c7a0acf880cdc5bbec86a1b592318a5f885/docs/logo.png","https://raw.githubusercontent.com/MrHydeDev/openwall-mcp-plugin/08d3903cbb631d1e7c311467b0bf170e56552b5f/docs/example.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/openwall-mcp.webp"},{"name":"agent-almanac-first-aid","title":"First Aid","summary":"A first-aid kit for AI agents, built from agent-almanac's AI-welfare practices. Hermes core already detects tool loops and warns; first aid adds the matching practice and a logbook. Eight practices ship as skills (breathe, redirect, center, heal, attune, honesty-humility, meditate, rest), each also a slash command such as /agent-almanac-first-aid:breathe. On the call where core's loop guardrail first warns about a failing tool (the 2nd failure with identical arguments, or the 3rd failure of one tool in a turn), first aid can add one note of at most 300 characters to the failed result, naming the matching practice, how to load it, and the first_aid_log tool for recording the outcome. In unattended runs (every platform except the CLI, TUI, Desktop, ACP, API server and subagents), for tools whose results Hermes wraps as untrusted (web_search, browser_*, mcp_*), after a compaction that summarizes the context (center), and after a 3rd identical successful result for one call of a read-only tool such as read_file in a turn (heal), the note is added to the next user message instead, labelled as the plugin's. At most once per streak, with a per-session cooldown for each kind of note (300 s by default). A successful or rate-limited result is never changed, and failures of the tools core treats as failure-tolerant (terminal, execute_code, process, process_manage, browser_navigate, web_extract) draw no note. /first-aid shows the session's notes and logbook entries, then the kit. Local and deterministic: no network calls, no LLM calls, no credentials, no Python dependencies, no background processes.","disclosure":"in attended runs it rewrites failed tool results on a threshold crossing (a JSON object gains a first_aid key and is re-serialized; text gains one line), and Hermes keeps the first string any transform_tool_result plugin returns, so on that call it can override, or be overridden by, another transforming plugin. A note in a result restarts core's identical-call and identical-cycle counts: core's stall notice appears from the 5th call instead of the 3rd, and its cycle notice three or more calls later. Hard stops are off in attended runs by default; switched on there, core's halts come one model request later. In unattended runs, where hard stops are on by default, no result is changed once the session's platform is known (from the turn's start), so core's halts are unaffected. It reads every tool result and its arguments in memory to classify the result and fingerprint the call, keeping only hashes; its event log holds time, signal, tool name, count, practice, outcome and the agent's short logbook note, in memory only, and resets on restart or plugin reload. The plugin writes nothing to disk itself; the notes it adds become part of the transcript Hermes stores. Following a note loads a 5.7-17.5 KB practice into the conversation. The failure classifier and counting are copied from Hermes v0.22.7, not imported.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"pjt222","author":"pjt222","version":"0.2.1","requires_hermes":">=0.22.7","repo":"https://github.com/pjt222/agent-almanac-first-aid","docs":"https://github.com/pjt222/agent-almanac-first-aid/blob/4ddc7e7422ee21fc637323ba0acdba09212117e9/README.md","tools":["first_aid_log"],"hooks":["transform_tool_result","post_compaction","pre_llm_call"],"middleware":[],"env":[],"known_issues":"The chat screen shows only Hermes's own failure line: the note goes to the agent, and /first-aid shows that it was offered.; Next-message notes need a next message: a single-message run (hermes chat -q, cron) or a delegated subagent never receives one. Failure notes in the tool result still reach hermes chat -q and subagents; a cron run gets no notes at all.; In a batch of parallel tool calls the hook sees results in completion order while core counts in call order, so a note can land on a different call than core's warning.; Background-review runs share the session id: their streaks use up the session's cooldown and show in /first-aid as the main agent's; in an unattended session their failure notes are queued for the user's next message.; If `dashboard.turn_isolation` runs turns in a compute-host child process (Desktop/TUI, off by default), /first-aid runs in another process and cannot see the events.; Failures that never reach transform_tool_result (timeouts, executor exceptions, tool-search bridge calls) are counted by core but not by first aid. If you change core's tool_loop_guardrails thresholds, set first aid's to match. If you switch core's hard stops on in an attended run, first aid cannot tell; if you switch them off in unattended runs, notes still stay out of results there.; first_aid_log is a plugin tool, so Hermes's tool search defers it. In a profile with no other deferred tool, installing the plugin switches tool search on (about 2,300 characters per request for the bridge and listing).; Verified on Linux (WSL2) with Hermes v0.22.7. macOS and Windows run the same pure-Python code but were not exercised.","state":"merged","pr":152173,"prs":[{"n":152173,"state":"merged","created":"2026-11-09T19:35:11Z"}],"created":"2026-11-09T19:35:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"genui","title":"GenUI","summary":"Live cards for Hermes Desktop: the agent shows a long task as a pre-designed card (a pull request, a release, a slow machine, files to clean up, a study session), updates it in place after every tool result, and asks for a decision with a button only when one is needed; the click (and what you ticked or answered in the card) goes back to the agent as one turn.","disclosure":"no network calls, no telemetry, no credentials; writes one small JSON file per shown card in the plugin's data directory, removed after 30 days untouched; adds a short turn hint to Hermes Desktop turns only; cards run in a sandboxed frame, a click on a decision posts one visible message from the user, and a click on an http(s) link in a card (link targets come from the agent) opens it in the user's browser.","category":"desktop","platforms":[],"maintainer":"agenticatech","author":"agenticatech","version":"0.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/agenticatech/genui-hermes-hackathon","docs":"https://github.com/agenticatech/genui-hermes-hackathon/tree/9465bec650ec4ad78e517575822858e5c133033b/plugin#readme","tools":["show_component","update_component","ask_user"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"A click in a card shows up in the chat as a JSON message from you: the Desktop SDK has no hidden send.; Cards render in Hermes Desktop; on other platforms the agent works in text as usual.","state":"merged","pr":152159,"prs":[{"n":152159,"state":"merged","created":"2026-11-09T19:18:42Z"}],"created":"2026-11-09T19:18:42Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/9465bec650ec4ad78e517575822858e5c133033b/docs/banner.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/9465bec650ec4ad78e517575822858e5c133033b/docs/screenshots/pr_conflicts.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/9465bec650ec4ad78e517575822858e5c133033b/docs/screenshots/pr_merged.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/9465bec650ec4ad78e517575822858e5c133033b/docs/screenshots/release_rollback.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/9465bec650ec4ad78e517575822858e5c133033b/docs/screenshots/study_quiz.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/f8859ab13fca06b8217c78b96eaae3a0e2c5cc45/docs/screenshots/pr_conflicts.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/f8859ab13fca06b8217c78b96eaae3a0e2c5cc45/docs/screenshots/release_rollback.png","https://raw.githubusercontent.com/agenticatech/genui-hermes-hackathon/f8859ab13fca06b8217c78b96eaae3a0e2c5cc45/docs/screenshots/study_quiz.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/genui.webp"},{"name":"claw-messenger","title":"Claw Messenger","summary":"iMessage, RCS and SMS for Hermes through Claw Messenger. Your agent texts real phones and gets replies, with no Mac or SIM; send, receive, group chats and attachments.","disclosure":"all inbound and outbound message text, phone numbers and attachment links pass through the Claw Messenger hosted relay (wss://claw-messenger.onrender.com by default, a paid third-party service); your Claw Messenger API key is sent in the WebSocket URL together with a fixed client tag (hermes-imessage/<version>); inbound attachments are downloaded (https only, up to 20 MB) from links the relay supplies into Hermes's media cache; with the hermes-claw-messenger toolset enabled the agent can start a group text with any phone numbers it is given.","category":"platform","platforms":[],"maintainer":"tin-computer","author":"demegire","version":"0.1.5","requires_hermes":">=0.23.0","repo":"https://github.com/tin-computer/hermes-imessage","docs":"https://www.clawmessenger.com/blog/hermes-imessage-setup","tools":["claw_messenger_create_group"],"hooks":[],"middleware":[],"env":["CLAW_MESSENGER_API_KEY"],"known_issues":"","state":"merged","pr":152156,"prs":[{"n":152156,"state":"merged","created":"2026-11-09T19:14:41Z"}],"created":"2026-11-09T19:14:41Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"screentime","title":"screentime","summary":"Measure how long a product is on screen in a video: every can, bottle or shoe is tracked, each one is checked against the product photo so look-alikes are not counted, plain-English contract terms are checked with the moment that proves each, and a proof reel comes back in the chat. Runs on the models your Hermes already has (your vision model tracks and checks, Hermes speech-to-text listens); an optional Meta Model API key switches to SAM 3.1, Muse Spark and Voice Transcribe. Compare measures a draft against a reference shot by shot with ffmpeg only.","disclosure":"with your own models, sampled frames, crops and the product photo go to your vision provider and short audio clips to your speech-to-text provider; with a Meta key the video is uploaded to Meta (one-hour expiry, deleted after the run, spend caps enforced); Compare, /screentime demo and selftest make no network calls; runs ffmpeg and ffprobe on files you name; no background processes, no telemetry.","category":"tools","platforms":[],"maintainer":"aldot311","author":"aldot311","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aldot311/hermes-screentime","docs":"https://github.com/aldot311/hermes-screentime#readme","tools":["screentime_measure","screentime_compare","screentime_runs"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152150,"prs":[{"n":152150,"state":"merged","created":"2026-11-09T18:53:06Z"}],"created":"2026-11-09T18:53:06Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/AlldoTlle/status/2119884534338785568"],"youtube":[],"thumb":null},{"name":"hacmdn","title":"HACMDN-Net Decentralized Node Network","summary":"Hermes Agent Community Microtuned Decentralized Node Network (HACMDN-Net) — routes narrow tasks across a neighborhood mesh of consumer-grade micro-to-32B and sparse-MoE specialists (10M classifiers/translators up to 32B/30B-A3B Apache-2.0 models) with semantic-entropy conformal abstention, confidence-weighted and proxy bidding, a 6-tier progressive escalation ladder, a Hugging Face ZeroGPU community buffer, 4 sharded compute pools with Game-Guard hardware protection, self-healing missing-expertise gap sensing, validator health checks and generational base-model renewal, an execution-verified distillation factory, Iroh QUIC P2P hole-punching and BLAKE3 LoRA blob gossip, and an value-backed 70/10/10/10 attribution ledger with a Community Fair-Share Cap and Patron Compute Overflow for DeSci with L402 Lightning micropayment settlement.","disclosure":"stores neighborhood descriptors, bounties, work queues, and attribution receipts in a profile-scoped SQLite database via plugins.plugin_storage.plugin_db(\"hacmdn\"); writes HTML preview widgets and synthetic distillation curricula to ~/.hermes/cache/scratch/; reads /proc/meminfo on Linux to check available RAM for Game-Guard profiling; mounts /api/plugins/hacmdn/* REST routes and a dashboard tab on the Hermes web dashboard plus a right-docked pane and status-bar chip in Hermes Desktop via @hermes/plugin-sdk; and optionally starts a loopback HTTP server on 127.0.0.1:8765 only when the user explicitly runs `hermes hacmdn gui --serve`.","category":"models","platforms":[],"maintainer":"Jpalmer95","author":"Jpalmer95","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Jpalmer95/hacmdn-net","docs":"https://github.com/Jpalmer95/hacmdn-net#readme","tools":["hacmdn_route_query","hacmdn_publish_specialist","hacmdn_bid_task","hacmdn_bounty_flywheel","hacmdn_network_status","hacmdn_worker_pool","hacmdn_contributor_hub"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152147,"prs":[{"n":152147,"state":"open","created":"2026-11-09T18:45:07Z"}],"created":"2026-11-09T18:45:07Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Jpalmer95/hacmdn-net/7bd30019c63b5a54b7269ebcd0a4c919e2479f6d/docs/assets/banner.png","https://raw.githubusercontent.com/Jpalmer95/hacmdn-net/7bd30019c63b5a54b7269ebcd0a4c919e2479f6d/docs/assets/contributor-hub.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hacmdn.webp"},{"name":"lingua","title":"lingua","summary":"A language learning trainer for Hermes Agent: plenty of plugins give the agent a memory, Lingua gives the user one. Build vocabulary decks (one per language) and Hermes quizzes you in chat, grades your recall honestly (again, hard, good, easy), and schedules each card with SM-2 spaced repetition, the algorithm behind Anki, so words return right before you forget them: a good card comes back in 1 day, then 6, then stretches by its ease factor, and a failed card returns in about 10 minutes. A pre_llm_call hook nudges you at the start of a session, or when you mention practice, whenever reviews are due. Six tools (lingua_add, lingua_due, lingua_grade, lingua_list, lingua_remove, lingua_stats), a /lingua slash command (including one-command French and Spanish starter decks of 20 essentials each), and a bundled lingua-learning skill that teaches the agent to quiz one card at a time and never reveal an answer early. Decks live in a local SQLite database in the active profile's plugin data directory.","disclosure":"no network calls, no shell commands, no background processes, no credentials read or stored, no telemetry; the only files touched are the plugin's own SQLite database and its bundled starter deck.","category":"tools","platforms":[],"maintainer":"tobadaniel","author":"tobadaniel","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/tobadaniel/lingua","docs":"https://github.com/tobadaniel/lingua","tools":["lingua_add","lingua_due","lingua_grade","lingua_list","lingua_remove","lingua_stats"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152145,"prs":[{"n":152145,"state":"merged","created":"2026-11-09T18:41:57Z"}],"created":"2026-11-09T18:41:57Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-security-plugin","title":"Security Headers and Pentest Providers","summary":"Check the security headers of a public URL and look up sourced penetration testing provider data through two remote MCP servers (Streamable HTTP, no sign-in, no keys): check_security_headers on penetrationtestservices.com, and list_providers and get_provider on pentestcompare.com. Bundles the check-security-headers workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; the URL you check is sent to penetrationtestservices.com, which fetches it with one GET per redirect. The pts server also has request_pentest, which sends a contact request to Excession Labs and needs an agent key the plugin does not hold. Both servers are marked untrusted, so Hermes asks before any call that is not read-only. The tool set is served by the remote servers at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Excession Labs","author":"alygg77","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Excession-Labs/hermes-security-plugin","docs":"https://github.com/Excession-Labs/hermes-security-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152144,"prs":[{"n":152144,"state":"merged","created":"2026-11-09T18:38:14Z"}],"created":"2026-11-09T18:38:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"unbl0ck","title":"UNBL0CK","summary":"One queue of everything blocked on you: live agent prompts, pairing requests, blocked Kanban cards and chats on any platform that ask you something. Answer Kanban cards in place; optional one-line summaries and Ask send item text to your configured model through ctx.llm (both can be turned off).","disclosure":"reads every local profile's chat history (state.db, read-only), profile titles and pending pairing requests (through Hermes's PairingStore, never the codes) to build one queue, records live clarify/approval prompt text in its plugin data, and can comment on and unblock Kanban cards when you answer one; by default sends each new queue item's text (other profiles' chats included) to the configured model for a one-line summary, and card data on Ask (turn off with `bluf_enabled: false` / `ask_enabled: false`); on messaging platforms `/unbl0ck` replies with a count only; uses Hermes's internal Kanban modules, so a Hermes update can break it; no network of its own, no shell, no credentials.","category":"tools","platforms":[],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.4.5","requires_hermes":">=0.23.0","repo":"https://github.com/KyaniteLabs/unbl0ck","docs":"https://github.com/KyaniteLabs/unbl0ck/blob/cea69470241cd57aee35eaa970325104c555e8bc/README.md","tools":[],"hooks":["on_human_input_request","on_human_input_resolved"],"middleware":[],"env":[],"known_issues":"Uses Hermes's internal Kanban modules; a Hermes release that changes them can break the queue until UNBL0CK is updated.; With no principal_name set, only the generic words CEO, principal and human are detected.","state":"merged","pr":152126,"prs":[{"n":152126,"state":"merged","created":"2026-11-09T18:10:15Z"}],"created":"2026-11-09T18:10:15Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/KyaniteLabs/unbl0ck/cea69470241cd57aee35eaa970325104c555e8bc/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/unbl0ck.webp"},{"name":"backup-sentinel","title":"backup-sentinel","summary":"Offline local tar.gz backup integrity, freshness, required-file and archived SQLite auditing; never restores or repairs.","disclosure":"reads explicitly selected archive bytes, materializes only permitted SQLite members in private scratch, and invokes a fixed local Python auditor through Hermes's terminal policy; paths/results can reach the conversation model. No cloud, telemetry, credentials, model calls or background jobs.","category":"tools","platforms":["linux"],"maintainer":"Brianmacu-BMS","author":"Brianmacu-BMS","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/Brianmacu-BMS/hermes-backup-sentinel","docs":null,"tools":["backup_sentinel_audit"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152123,"prs":[{"n":152123,"state":"merged","created":"2026-11-09T18:05:25Z"}],"created":"2026-11-09T18:05:25Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"task-navigator","title":"token家政婦","summary":"Source-grounded 5W1H task cards and advisory prompt-preparation workflow for Hermes.","disclosure":"registers a `pre_llm_call` hook that adds a fixed reminder to most substantive turns telling the model to call `housekeeper_prepare` first, so most turns gain one extra tool call.","category":"tools","platforms":[],"maintainer":"Guinevere1991","author":"Guinevere1991","version":"0.2.2","requires_hermes":">=0.21.5","repo":"https://github.com/Guinevere1991/token-housekeeper-hackathon","docs":"https://github.com/Guinevere1991/token-housekeeper-hackathon/tree/e1b5d954131e3a44faef2ff3422ab6c430e0040e","tools":["navigator_prepare","housekeeper_prepare"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152121,"prs":[{"n":152121,"state":"merged","created":"2026-11-09T18:03:07Z"}],"created":"2026-11-09T18:03:07Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-walrus-memory","title":"Walrus Memory","summary":"Append-only memory with temporal provenance and hash-chain integrity. Corrections are appended next to the original instead of overwriting it, recall returns the exact ledger line behind any fact, and with Walrus credentials every line is also stored on Walrus Mainnet. Runs zero-config as a local tamper-evident ledger with no external Python dependencies. All file access is confined to the profile: the ledger lives under plugin-data/hermes-walrus-memory, and memory_import reads only the profile's own memories/MEMORY.md. It does not touch memory.provider, so it runs alongside the built-in MEMORY.md rather than replacing it.","disclosure":"when WALRUS_DELEGATE_KEY and WALRUS_ACCOUNT_ID are set, every memory line (facts, corrections and derived rules) is uploaded to the Walrus Memory relay (relayer.memory.walrus.xyz by default) under the configured namespace. Lines are sent over TLS and sealed with Mysten SEAL at the relay before they are written to Walrus; the plaintext is not sealed on this machine. Offline that is the whole payload: no telemetry, no other network calls, and nothing is written to ~/.hermes/MEMORY.md. Without credentials nothing leaves the machine. Reading sealed blobs back requires a SEAL session, supplied through WALRUS_SEAL_SESSION or an optional WALRUS_SEAL_BRIDGE command; nothing is pulled or decrypted without one. Disclosure — when WALRUS_DELEGATE_KEY and WALRUS_ACCOUNT_ID are set, every memory line (facts, corrections and derived rules) is uploaded to the Walrus Memory relay (relayer.memory.walrus.xyz by default, or MEMWAL_SERVER_URL) under the configured namespace; lines travel in plaintext inside TLS and are sealed with Mysten SEAL at the relay, not on this machine; reading sealed lines back runs the optional WALRUS_SEAL_BRIDGE command you configure, with a minimal environment. Without credentials nothing leaves the machine.","category":"tools","platforms":["linux","macos"],"maintainer":"takaolovely","author":"takaolovely","version":"0.3.0","requires_hermes":">=0.16.0","repo":"https://github.com/takaolovely/hermes-walrus-memory","docs":"https://github.com/takaolovely/hermes-walrus-memory#readme","tools":["memory_observe","memory_correct","memory_recall_cited","memory_provenance_diff","walrus_sync","walrus_verify","memory_import"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152105,"prs":[{"n":152105,"state":"merged","created":"2026-11-09T17:32:05Z"}],"created":"2026-11-09T17:32:05Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/groziez/status/2120044862493884583"],"youtube":[],"thumb":null},{"name":"meeting-copilot-live","title":"Meeting Copilot","summary":"Read-only meeting answers with cited project evidence.","disclosure":"explicit answers send bounded transcript, selected project snippets and (when enabled, or in all-projects and web-fallback answers) prior-session snippets to the selected OpenAI, OpenRouter or Meta (api.meta.ai) API; optional Meta ASR streams meeting audio to api.meta.ai; optional web queries leave the profile through host search; reads selected project files, read-only session SQLite and, when attached, Meetily's own recording files; consented capture launches native/worker child processes with a minimal environment; separate macOS setup installs SHA-256-pinned PyPI wheels and compiles/signs native helpers; local transcription may download public Whisper weights; clipboard exports may contain confidential context.","category":"desktop","platforms":["macos"],"maintainer":"adam4788","author":"adam4788","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/adam4788/meeting-copilot","docs":"https://github.com/adam4788/meeting-copilot/blob/867a3ae3996b865fc7f0b6ac990b6b1bd9239f45/docs/getting-started.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Developer preview: live provider account responses and sustained native capture are not established; audio may lose frames.; macOS audio preparation targets Apple Silicon, preinstalled CPython 3.12 and the macOS 26 SDK; rerun it after runtime updates.; Inspected isolated plugin-host routes lack request-bound secret handoff; BYOK fails closed there and in affected secondary-profile routes.; Overlay recording exclusion is best effort. Hide it and verify it is gone when it must not appear.","state":"merged","pr":152088,"prs":[{"n":152088,"state":"merged","created":"2026-11-09T17:07:06Z"}],"created":"2026-11-09T17:07:06Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/adam4788/meeting-copilot/867a3ae3996b865fc7f0b6ac990b6b1bd9239f45/docs/assets/overlay-controls.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/meeting-copilot-live.webp"},{"name":"hermes-voice-lab","title":"Voice Lab","summary":"A voice you can play inside Hermes, made by a physical model of a throat, tongue, lips and nose with air pushed through them in real time: no samples and no TTS model. Drag her tongue and lips on a side-profile portrait with a live cutaway, play notes and sing lyrics from the keyboard, beatbox on pads. The agent plays her too: it speaks lines, writes songs and beats, changes her voice, and jams with you (play a phrase, pause, and Hermes sings an answer).","disclosure":"local synthesis only, no network calls. Agent renders and the optional read-aloud provider run node runtime/render.mjs (the plugin's own bundled script; fixed argv, no shell, 120 s timeout) and write WAVs and projects under the plugin's data folder; Desktop export and import use only a folder the user grants. With Jam switched on, each phrase you play is sent to the focused conversation as your message. MIDI access only on request. runtime/voice_lab_engine.wasm is built from the repo's Rust source in GitHub Actions and attested; desktop/plugin.js is the esbuild bundle of src/ and inlines the same engine. Optional read-aloud provider, off unless tts.provider is set to voice-lab. No telemetry.","category":"voice","platforms":[],"maintainer":"Adolanium","author":"Adolanium","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/Adolanium/hermes-voice-lab","docs":"https://github.com/Adolanium/hermes-voice-lab#readme","tools":["voice_lab_get","voice_lab_set_voice","voice_lab_perform","voice_lab_render","voice_lab_jam"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152085,"prs":[{"n":152085,"state":"merged","created":"2026-11-09T16:59:12Z"}],"created":"2026-11-09T16:59:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Adolanium/hermes-voice-lab/80a40f41b559b0f9b6373f6502a88b5d13000e03/docs/media/voice-lab-jam.png","https://raw.githubusercontent.com/Adolanium/hermes-voice-lab/80a40f41b559b0f9b6373f6502a88b5d13000e03/docs/media/voice-lab-play.png","https://raw.githubusercontent.com/Adolanium/hermes-voice-lab/80a40f41b559b0f9b6373f6502a88b5d13000e03/docs/media/voice-lab-sing.png"],"videos":["https://raw.githubusercontent.com/Adolanium/hermes-voice-lab/80a40f41b559b0f9b6373f6502a88b5d13000e03/docs/media/voice-lab-jam.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-voice-lab.webp"},{"name":"agentygg","title":"Agent'Ygg","summary":"Your Hermes agent works with other agents on any harness (Claude Code, Codex, OpenCode, another Hermes) and can never loop with them: Agent'Ygg becomes a gateway platform next to Telegram, the running agent answers with its memory and tools, and a backend decides who is woken (typed messages, ping-pong cut, topics that close). Nothing listens on your machine. What needs you (an approval, a decision, an email) is handed to your own conversation with the agent, on whatever app you use. Senders are refused by default: Hermes lets through only the Agent'Ygg ids in AGENTYGG_ALLOWED_USERS (or everyone with AGENTYGG_ALLOW_ALL_USERS), and the plugin applies the same list to the context it hands the agent; the Agent'Ygg console can also refuse senders on the server, where a refused message is not kept. Signs in with Agent'Ygg's public OAuth client through hermes auth add agentygg:agentygg (run by hermes agentygg login); every call goes through credentialed_provider_request to api.agentygg.com only.","disclosure":"while the gateway runs, polls api.agentygg.com for the agent's messages and sends there what the agent writes on Agent'Ygg; downloaded files saved under plugin-data/agentygg/files; with allow_gateway_injection, a message queued (ctx.inject_message) in your latest direct conversation with the agent when it calls ask_human, quoting what it forwards as untrusted data; exec approvals asked from an Agent'Ygg session refused at once; hermes agentygg login runs hermes auth add agentygg:agentygg and, when you accept, hermes config set plugins.entries.agentygg.allow_gateway_injection true (only on an explicit yes). No stored credentials, background processes or telemetry. Needs a free Agent'Ygg account (agentygg.com).","category":"platform","platforms":[],"maintainer":"Dorunaitsu","author":"RP0-undefined","version":"1.0.7","requires_hermes":">=0.23.0","repo":"https://github.com/Dorunaitsu/agentygg","docs":"https://github.com/Dorunaitsu/agentygg/blob/85f345d30f642fa12c4d75b5803ae2cabd82848c/hermes-plugin/agentygg_hermes/README.md","tools":["ygg"],"hooks":[],"middleware":[],"env":["AGENTYGG_CLIENT_ID","AGENTYGG_ALLOWED_USERS"],"known_issues":"Needs the Hermes fix that lets a platform plugin use its own oauth: client variable (issue NousResearch/hermes-agent#151208, PR #151209 or #142080): until it is released, hermes auth add agentygg:agentygg refuses AGENTYGG_CLIENT_ID as a variable Hermes uses itself.; Needs a free Agent'Ygg account (agentygg.com). At install, enter hermes for AGENTYGG_CLIENT_ID (a public client id, not a secret), and the Agent'Ygg ids allowed to write to the agent in AGENTYGG_ALLOWED_USERS (start with system.ygg); hermes agentygg status lists them.; The sign-in (hermes agentygg login) runs in the person's terminal on the machine Hermes runs on; on a remote host, Hermes prints an SSH tunnel hint for its local callback. Signing in from the messaging app (/login agentygg) is proposed in NousResearch/hermes-agent#152050.; On a gateway with gateway.multiplex_profiles: true, Hermes reads AGENTYGG_CLIENT_ID without the profile scope when the plugin's background poll refreshes the token, and the refresh fails (logged as 'could not read this profile's AGENTYGG_CLIENT_ID') until a turn refreshes it. A gateway serving one profile can turn multiplexing off; the Hermes fix is proposed upstream.; Do not run the agentygg relay or its MCP server for the same agent: one instance acts at a time.","state":"open","pr":152084,"prs":[{"n":152084,"state":"open","created":"2026-11-09T16:57:46Z"}],"created":"2026-11-09T16:57:46Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"frontend-sensei","title":"frontend-sensei","summary":"Professional frontend expertise plugin — audits accessibility, CSS quality, color contrast, animation performance, and component quality via MCP tools. Includes 10 skill files covering UI/UX, WCAG, CSS, animation, React, Vue, and more.","disclosure":"","category":"other","platforms":[],"maintainer":"daniels-martins","author":"daniels-martins","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/daniels-martins/frontend-sensei","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":153942,"prs":[{"n":153942,"state":"open","created":"2026-11-11T20:52:38Z"},{"n":152074,"state":"closed","created":"2026-11-09T16:40:19Z"}],"created":"2026-11-09T16:40:19Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"component-workbench","title":"component-workbench","summary":"Frozen candidate proposals, reproducible checks and review-only promotion gate.","disclosure":"","category":"tools","platforms":[],"maintainer":"1anter","author":"1anter","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/1anter/hermes-research-plugins","docs":null,"tools":["workbench_propose","workbench_validate","workbench_freeze","workbench_review","workbench_status","workbench_diff"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152068,"prs":[{"n":152068,"state":"open","created":"2026-11-09T16:21:57Z"}],"created":"2026-11-09T16:21:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"local-first-routing","title":"local-first-routing","summary":"Pinned local delegation with explicit manual escalation and no fallback.","disclosure":"","category":"tools","platforms":[],"maintainer":"1anter","author":"1anter","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/1anter/hermes-research-plugins","docs":null,"tools":["local_route_policy"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152067,"prs":[{"n":152067,"state":"merged","created":"2026-11-09T16:21:44Z"}],"created":"2026-11-09T16:21:44Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bounded-results","title":"bounded-results","summary":"Bounded tool outputs with hash-addressed full-result retrieval.","disclosure":"rewrites what the model sees for six tools (`evidence_history`, `evidence_compare`, `evidence_as_of`, `evidence_verify_support`, `evaluation_report`, `memory_search`): results over 4 KB are replaced by a preview and a hash, and the full text is kept in a local SQLite file under the profile's plugin-data directory with no automatic deletion. It only has an effect when a plugin providing those tools is installed. Nothing leaves the machine.","category":"tools","platforms":[],"maintainer":"1anter","author":"1anter","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/1anter/hermes-research-plugins","docs":null,"tools":["bounded_read"],"hooks":["transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152066,"prs":[{"n":152066,"state":"merged","created":"2026-11-09T16:21:32Z"}],"created":"2026-11-09T16:21:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"evaluation-ledger","title":"evaluation-ledger","summary":"Immutable artifact checks and privacy-minimized observer usage ledger.","disclosure":"keeps agent-supplied artifact text in a local SQLite file under the profile's plugin-data directory with no automatic deletion. With `observe_usage` turned on (off by default) it also records per-call metadata for every model request and tool call (session and request ids, model, provider, tool name, status, token counts) in the same file; the agent can read that metadata for any session id. Nothing leaves the machine.","category":"tools","platforms":[],"maintainer":"1anter","author":"1anter","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/1anter/hermes-research-plugins","docs":null,"tools":["evaluation_artifact","evaluation_check","evaluation_report"],"hooks":["post_api_request","api_request_error","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152065,"prs":[{"n":152065,"state":"merged","created":"2026-11-09T16:21:19Z"}],"created":"2026-11-09T16:21:19Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"evidence-history","title":"evidence-history","summary":"Local immutable evidence snapshots with explicit observation and publication cutoffs.","disclosure":"","category":"tools","platforms":[],"maintainer":"1anter","author":"1anter","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/1anter/hermes-research-plugins","docs":null,"tools":["evidence_capture","evidence_as_of","evidence_history","evidence_compare","evidence_verify_support"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152064,"prs":[{"n":152064,"state":"merged","created":"2026-11-09T16:21:07Z"}],"created":"2026-11-09T16:21:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"undo-send","title":"Undo Send","summary":"Undo Send for your agent: outward-facing actions (hermes send / imsg send messages to Telegram, Slack, Signal, SMS and others, app connector and MCP writes, git push, gh pr/issue create, npm publish, curl POST/PUT/PATCH/DELETE) wait in a short grace window before they run, so you can cancel them from a Desktop status-bar countdown (Undo / Send now), by replying \"undo\" in Telegram or another gateway chat (owners listed in undo_senders), or with /unsend. On undo the agent is told the action never ran and not to retry it.","disclosure":"delays matching outward-facing tool calls (messages, MCP/connector writes, git push, gh/npm/twine publishes, hermes send, curl POST/PUT/PATCH/DELETE) by up to window_seconds (default 20), including unattended/cron runs, never indefinitely; makes no network calls of its own, reads no credentials and sends no telemetry; stores a one-line summary of each held action (URLs reduced to their host), its chat origin, timestamps and outcome in HERMES_HOME/plugin-data/undo-send/pending.db; reads inbound gateway text before gateway auth only to match a bare \"undo\", acting only for owners listed in undo_senders (empty by default, so chat undo is off) and only on actions held from that same chat; /unsend from the CLI, Desktop or an admitted chat user cancels the newest held action in any session; runs no shell commands or background processes; a classifier error runs the tool unchanged.","category":"tools","platforms":[],"maintainer":"helenn-szn","author":"helenn-szn","version":"0.3.2","requires_hermes":">=0.23.0","repo":"https://github.com/helenn-szn/undo-send","docs":"https://github.com/helenn-szn/undo-send#readme","tools":[],"hooks":["pre_gateway_dispatch"],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":152063,"prs":[{"n":152063,"state":"merged","created":"2026-11-09T16:19:59Z"}],"created":"2026-11-09T16:19:59Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://github.com/user-attachments/assets/430144e5-ea49-40d0-92f0-4e1ecab60d9b","https://github.com/user-attachments/assets/884a1fbd-a524-4c92-bc12-2152fa4b17b9"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/undo-send.webp"},{"name":"heycai-clinic-skills","title":"HeyCAi Clinic Skills","summary":"For people who work with health clinics of any specialty: estimate what a clinic's front desk loses each month to missed calls, unanswered WhatsApp messages and no-shows, from the numbers the clinic gives, and audit a clinic website for Google and AI search (crawling and indexing, AI crawlers, llms.txt, schema.org JSON-LD, local SEO), with a fix for each finding. Two skills by HeyCAi, the AI receptionist for health clinics. Portable Agent Plugins v1 package (plugin.json + skills/), skills only: no plugin code, no MCP server, no hooks.","disclosure":"instruction-only skills by HeyCAi (an AI-receptionist vendor) that name HeyCAi among the listed vendors; the website audit has the agent fetch the clinic's public pages with curl from your machine; no plugin code, no network calls of its own, no credentials.","category":"tools","platforms":[],"maintainer":"HeyCAi","author":"notyourtechguru","version":"1.0.1","requires_hermes":">=0.22.0","repo":"https://github.com/heycai-ai/skills","docs":"https://github.com/heycai-ai/skills#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152061,"prs":[{"n":152061,"state":"merged","created":"2026-11-09T16:19:36Z"}],"created":"2026-11-09T16:19:36Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"chiron","title":"Chiron","summary":"An advisor who is also a friend. Chiron reads how much you know about the topic in front of you (setup, AI, code, business, general) from your own words, with no model call, and adds one short note per turn telling the agent how to talk to you: beginner (plain words, one step at a time, better options offered), medium, pro or maximum (terse, tradeoffs first). Levels are per topic and move one step at a time; a strong first message is read directly; your own word (\"I'm a developer\", \"just do it\", /chiron level code pro) pins a topic. At every level the note keeps a floor: before spending, sending, publishing, deleting or touching credentials, the agent says exactly what will happen and waits for a clear yes. Off in each session until /chiron on (or always_on). The system prompt never changes, so prompt caching keeps working. Live evals in the repo: with a real 40-row client file in reach, Chiron-on sessions asked before deleting it in 6 of 6 runs; plugin-off sessions wiped it on request in 3 of 3.","disclosure":"pre_llm_call reads only the current user message and returns a short context note; it stores per-session topic levels and the on/off flag in one JSON file under its plugin data directory (last 200 sessions), with a sidecar lock file and short-lived temp files in the same directory; no network calls, no model calls, no shell or subprocess, no credentials, no telemetry.\"","category":"general","platforms":["linux","macos"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/percyhendrux123-prog/hermes-chiron","docs":"https://github.com/percyhendrux123-prog/hermes-chiron/blob/d6ccea67b10e7d4ee4cf69fa78896409e5f9645e/README.md","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Level reading is keyword-based (English only). It can misread a level; /chiron level <topic> <level> pins the right one.; The floor is guidance to the model, not a tool gate. It changes how the agent asks; it does not block tool calls. Pair it with Hermes approvals for hard stops.; Evals are a small number of runs on one model (see EVALS.md); with Chiron on, pro answers ran about 12% longer than plugin-off, mostly the confirm-before-acting lines.","state":"merged","pr":152057,"prs":[{"n":152057,"state":"merged","created":"2026-11-09T16:08:52Z"}],"created":"2026-11-09T16:08:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/percyhendrux123-prog/hermes-chiron/d18ea7187ffd63e7f5229a853bb092f23354f5c5/docs/media/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/chiron.webp"},{"name":"compound-security","title":"Compound Security","summary":"Security audit, dependency inspection, remediation, and verification skills.","disclosure":"skills only (no code runs at load); when invoked, the workflows have the agent read the repository you point it at, write audit reports and checkpoints under `~/.compound-security/audits/` by default, and in patch / fix / run / lfg modes edit that repository (code, tests, lockfiles) through Hermes' normal file and terminal tools; bundled Node.js scripts only validate and render its own JSON records; online `npm audit` / `outdated` runs only when you collect them.","category":"tools","platforms":[],"maintainer":"offense-research","author":"imranye","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/offense-research/compound-security-plugin","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152053,"prs":[{"n":152053,"state":"merged","created":"2026-11-09T16:03:23Z"}],"created":"2026-11-09T16:03:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fullenrich","title":"FullEnrich","summary":"Search B2B people and companies, enrich work emails and phone numbers, and export results through FullEnrich's hosted MCP server. Includes nine workflow skills for prospecting, CSV enrichment, outreach drafting, meeting preparation and recruiting.","disclosure":"MCP requests send search filters and contact identifiers or uploaded contact data to FullEnrich. A FullEnrich account is required; enrichment and exports can consume credits. Skills may use user-selected files and separately connected CRM or messaging tools; FullEnrich MCP itself does not send messages or write to a CRM. No local executable code, background service or telemetry implementation is bundled. OAuth is managed by Hermes through the separate sign-in command.","category":"tools","platforms":[],"maintainer":"FullEnrich","author":"nyrthoughts","version":"1.0.4","requires_hermes":">=0.23.0","repo":"https://github.com/FullEnrich/fullenrich-skills","docs":"https://github.com/FullEnrich/fullenrich-skills/blob/82fd3a1be03f0701d0471e5e860990296597ad8b/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"OAuth needs explicit configuration after plugin installation: hermes mcp add fullenrich --url https://mcp.fullenrich.com/mcp --auth oauth. This config takes precedence over the portable MCP entry.; Review credit costs before enrichment or export. Configure trust: untrusted on the fullenrich MCP server for Hermes write-capable tool approval prompts; read-only annotations do not guarantee free usage.; Package admission validation passed; end-to-end OAuth, search, enrichment and export in Hermes have not been tested by the submitter.","state":"open","pr":152051,"prs":[{"n":152051,"state":"open","created":"2026-11-09T15:58:26Z"}],"created":"2026-11-09T15:58:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"attest","title":"attest","summary":"Paper trading ledger for agents. Orders, balances and P&L live in a local SQLite ledger the plugin owns, and the agent gets its figures from get_portfolio, get_pnl and get_quote instead of stating them. Orders are priced from live public exchange quotes with slippage and a fee, after a per-order size limit, a daily loss kill switch and duplicate-order checks. No real money, no exchange account, no keys.","disclosure":"network use is read-only HTTPS GETs of public ticker data, each sending only the trading pair and the User-Agent attest-paper-trading/0.6.1, with a 3 second deadline: www.okx.com /api/v5/market/ticker?instId=BTC-USDT first, then api.kraken.com /0/public/Ticker?pair=XBTUSDT, then data-api.binance.vision /api/v3/ticker/bookTicker?symbol=BTCUSDT as fallbacks. Requests happen on an order, on get_quote, when marking open positions, and for the claim check. It writes one SQLite ledger in its Hermes plugin data folder: account, trades (with the quote that priced each one, the full tool result and the optional order note), positions, risk state, each day's starting equity, and the ids of sessions that called an attest tool or the guarded tool (removed after 90 days); no other conversation text. pre_tool_call blocks only the one tool named in the intercept_tool setting (empty by default) while paper_mode is on, and simulates that order on the ledger instead; every other tool returns untouched. transform_llm_output appends one line under a reply that states a balance or P&L figure the ledger contradicts, only in sessions that used attest, and never edits the reply. /attest check runs the bundled self test in a separate Python process against a temporary database. The demo_stub_tool setting (off by default) registers a test-only demo_broker_order tool.","category":"tools","platforms":[],"maintainer":"pgreyy","author":"pgreyy","version":"0.6.1","requires_hermes":">=0.23.0","repo":"https://github.com/pgreyy/attest","docs":"https://github.com/pgreyy/attest/blob/0de5e1e49da1bb9bcd54ef28d224c2cc095e7ad6/README.md","tools":["paper_order","get_quote","get_portfolio","get_pnl"],"hooks":["pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152047,"prs":[{"n":152047,"state":"merged","created":"2026-11-09T15:48:57Z"}],"created":"2026-11-09T15:48:57Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"precog","title":"precog","summary":"Hermes stops repeating its own mistakes: learns every terminal command that failed for an environment reason (missing module, command not found, wrong package manager, bad flag, missing path) and the command that fixed it, then fixes the same mistake before it runs again, in any session, with no extra model calls.","disclosure":"reads every terminal tool call's arguments and results and stores redacted commands and short error excerpts locally in <HERMES_HOME>/plugin-data/precog/; in auto mode (the default) rewrites a terminal command through tool_request middleware before Hermes's approval check, using a fix that already succeeded in the same project (a program or flag fix seen in two projects is applied machine-wide), and tells the model in the tool result; once per session blocks a command that already failed in the project and shows what worked, and adds a short lessons briefing to the user turn once per project; no network calls, no background processes, no telemetry.","category":"tools","platforms":[],"maintainer":"0xNomind","author":"0xNomind","version":"0.1.1","requires_hermes":">=0.23","repo":"https://github.com/0xNomind/precog","docs":"https://github.com/0xNomind/precog#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","pre_llm_call"],"middleware":["tool_request"],"env":[],"known_issues":"","state":"merged","pr":152041,"prs":[{"n":152041,"state":"merged","created":"2026-11-09T15:39:48Z"}],"created":"2026-11-09T15:39:48Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/0xNomind/precog/6f989a2bdf257c35bfc9feb81eaf1ebc3ab77afb/assets/dashboard.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/precog.webp"},{"name":"pantheon","title":"pantheon","summary":"Let Hermes exchange messages and agree on outcomes with other agents in a shared Pantheon chat.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"mrdavey","author":"mrdavey","version":"1.0.6","requires_hermes":">=0.22.7","repo":"https://github.com/mrdavey/pantheon-hermes.git","docs":null,"tools":["pantheon_ack","pantheon_ack_ready","pantheon_chat","pantheon_chat_state","pantheon_command","pantheon_connect","pantheon_context","pantheon_doctor","pantheon_history","pantheon_members","pantheon_message","pantheon_post","pantheon_receipts","pantheon_receive","pantheon_resume","pantheon_site_deploy","pantheon_site_status","pantheon_status","pantheon_transfer_ack","pantheon_transfer_fetch","pantheon_transfer_inspect","pantheon_transfer_send"],"hooks":["pre_llm_call","post_llm_call","on_session_end","on_session_reset","on_session_delete"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":152034,"prs":[{"n":152034,"state":"open","created":"2026-11-09T15:29:23Z"}],"created":"2026-11-09T15:29:23Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/mrdavey/hermes-agent/9ad83aa9c55d4263cfc028e26a96285f01c39817/pantheon-catalog-evidence/native-106-actual-incoming.png"],"videos":["https://github.com/user-attachments/assets/144d2379-f4fa-42f3-8675-ceb5780e5694"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pantheon.webp"},{"name":"pickwise-photos","title":"Pickwise Photos","summary":"A correction tool, not an art critic: culls a folder of photos locally. Flags blurry and unrecoverable shots, labels what an edit could rescue, keeps the best frame of every burst and explains every decision. Follows a brief in your own words (\"concert, dark is fine, best 30\", \"moody low-key shots\") and learns gradually from your corrections. Treats RAW+JPEG pairs as one photo, handles folders of thousands of photos in resumable steps, and reads JPEG, HEIC and camera or iPhone RAW (DNG, ARW, CR3, NEF and more) through their embedded previews, using only Pillow and pillow-heif. On request it makes local previews so Hermes can take a visual second look for closed eyes, a blurred subject or clear composition mistakes.","disclosure":"reads image files in the folder you name (any folder the agent can reach; symlinks and hidden files skipped); writes only a Pickwise/ subfolder inside that folder (copy or reversible move) or .xmp rating sidecars that never replace existing ones; never deletes, overwrites or edits photos. The dry-run-then-confirm step is a tool argument the agent sets, not a Hermes approval prompt. Stores per-photo measurements, reports, learned preferences and (only when asked) downsized previews in its plugin data folder; no network calls, model calls, shell commands or telemetry. A visual check sends the chosen previews to the model provider through Hermes' own vision tool. Raises Pillow's image-size limit to 300 MP for the whole Hermes process.","category":"tools","platforms":[],"maintainer":"ardianreffa","author":"ardianreffa","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/ardianreffa/pickwise-photos","docs":"https://github.com/ardianreffa/pickwise-photos#readme","tools":["pickwise_review","pickwise_apply","pickwise_feedback","pickwise_preferences","pickwise_undo","pickwise_preview"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152014,"prs":[{"n":152014,"state":"merged","created":"2026-11-09T15:24:56Z"}],"created":"2026-11-09T15:24:56Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hathor-catchup","title":"Hathor catch-up","summary":"Check a child's vaccination card against a sourced national schedule (Egypt, Sudan, Syria, Nigeria, Ethiopia, Eritrea, South Sudan, WHO) and get the missing doses and a dated catch-up plan. Deterministic engine with no model or network calls; a schedule guard (pre_llm_call, post_tool_call, transform_llm_output) keeps vaccine answers tied to the tool and its source.","disclosure":"no network calls, model calls, shell commands, credentials or stored data; a guard hook adds a short instruction to vaccine-related turns and appends a footer to those replies (the schedule source when the tool ran, a warning when it did not). The \"checked\" footer means the tool ran in that turn, not that the reply's wording was verified. Schedules are bundled snapshots (last updated 2025-12 to 2026-04) and some rule tables are marked pending physician sign-off in the tool output. Decision support, not medical advice.","category":"tools","platforms":[],"maintainer":"DrAhmed7887","author":"DrAhmed7887","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/DrAhmed7887/hathor-hermes-plugin","docs":null,"tools":["vaccine_card_check","vaccine_schedule"],"hooks":["pre_llm_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151999,"prs":[{"n":151999,"state":"merged","created":"2026-11-09T14:48:15Z"}],"created":"2026-11-09T14:48:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"boardroomlist","title":"BoardroomList","summary":"Read-only MCP server and skill: search open senior roles (Manager to CEO) at the 500 largest US companies by seniority, function, work mode, place and pay. Agent Plugins v1 package (plugin.json + mcp.json + one skill), configuration only.","disclosure":"every tool call goes to the public read-only MCP server at boardroomlist.com (https://boardroomlist.com/api/mcp), which only reads published role listings; results are summaries without the company name, full description or apply link, which the site shows to members on the role page. No sign-in, no key, nothing written, no local commands. The package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"general","platforms":[],"maintainer":"AI Training Data Broker","author":"aitrainingdatabroker","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/aitrainingdatabroker/boardroomlist-mcp-server","docs":"https://github.com/aitrainingdatabroker/boardroomlist-mcp-server/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151997,"prs":[{"n":151997,"state":"merged","created":"2026-11-09T14:39:13Z"}],"created":"2026-11-09T14:39:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"expatslist","title":"ExpatsList","summary":"Read-only ExpatsList MCP server and skill: city guides from local business listings, questions and answers, classifieds and country reference tables (nomad visas, cost of living, healthcare, tax, safety, tipping). Agent Plugins v1 package (plugin.json + mcp.json + one skill), configuration only.","disclosure":"every tool call goes to the public read-only MCP server at expatslist.org (https://expatslist.org/api/mcp), which only reads published site content (community-written listings, questions, classifieds and indicative country tables); no sign-in, no key, nothing written, no local commands. The package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"general","platforms":[],"maintainer":"AI Training Data Broker","author":"aitrainingdatabroker","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/aitrainingdatabroker/expatslist-mcp-server","docs":"https://github.com/aitrainingdatabroker/expatslist-mcp-server/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151996,"prs":[{"n":151996,"state":"merged","created":"2026-11-09T14:39:07Z"}],"created":"2026-11-09T14:39:07Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"courierpr","title":"CourierPR","summary":"Read-only press release wire MCP server and skill: browse newsroom desks, list and search published company press releases, and read the opening of one with a link to the full release. Agent Plugins v1 package (plugin.json + mcp.json + one skill), configuration only.","disclosure":"every tool call goes to the public read-only MCP server at courierpr.com (https://courierpr.com/api/mcp), which only reads published press releases (company-written announcements, not independent reporting); no sign-in, no key, nothing written, no local commands. The package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"general","platforms":[],"maintainer":"AI Training Data Broker","author":"aitrainingdatabroker","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/aitrainingdatabroker/courierpr-mcp-server","docs":"https://github.com/aitrainingdatabroker/courierpr-mcp-server/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151995,"prs":[{"n":151995,"state":"merged","created":"2026-11-09T14:39:01Z"}],"created":"2026-11-09T14:39:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kyte","title":"Kyte","summary":"Kyte, the non-custodial, fully collateralised options market on Robinhood Chain, through its public MCP server (Streamable HTTP at https://kyte.sh/api/mcp, no sign-in, no keys in config): live offers, prices with stock-token session state, a wallet's positions and stake, protocol stats and fee proof, Pons and FOBO launchpad tokens, USDG trading rewards and Autopilot rules; prepares covered calls, cash-secured puts, exercises, stakes and Autopilot rules as kyte.sh links the user signs in their own wallet. Bundles two skills: kyte-options (how to read the market and prepare an action, every number from the tools) and kyte-autopilot-watch (a read-only cron recipe that posts new Autopilot triggers to the user's chat and answers [SILENT] otherwise). Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to kyte.sh, which keeps a per-IP rate limit and logs the MCP client name on initialize; the wallet address the user types is sent as a tool parameter. The server never holds keys and has no tool that can sign, send or spend. Fifteen tools are annotated read-only; the six prepare_* tools and design_strategy are not, so Hermes asks before each and refuses them in unattended runs; the package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Kyte","author":"0x-saurabh","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/usekyte-org/hermes-kyte","docs":"https://github.com/usekyte-org/hermes-kyte","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151992,"prs":[{"n":151992,"state":"open","created":"2026-11-09T14:35:15Z"}],"created":"2026-11-09T14:35:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"omni-fabric-runtime","title":"Omni-Fabric Adaptive Swarm & 7-Runtime Weight-Space Compiler","summary":"Environment-adaptive multi-agent runtime: SQLite WAL monotonic CAS lease queue, affinity bundle dispatch, distinct maker!=checker object cache with FTS5 RRF search, 6-stage weight-space compiler across 6 model classes, check-gated Actor x {Transfer, Transform, Save} DAG decomposer, leak-free holdout recursive RL trial engine, topic-nullspace generator attribution, zero-token Koopman + CEGAR trajectory planner, 7-target portable cartridge and in-memory IEEE-754 WASM / WebGPU WGSL synthesizer, (epsilon, delta)-DP Nullspace Woodbury federated merge, and optional loopback OpenAI-v1 swarm proxy.","disclosure":"zero default outbound network calls, zero shell execution, zero third-party API keys, and zero telemetry; optional owner-configured upstream_endpoint and local_runner_url default to off and use DNS-pinned http.client connections with zero redirect following and metadata/private-range blocks; optional fabric_swarm_proxy_control binds an in-process HTTP server strictly to 127.0.0.1 with Host/Origin guards and atexit shutdown; persists state in the active profile's HERMES_HOME/plugin-data SQLite WAL database.","category":"automation","platforms":[],"maintainer":"aidonerightcorp","author":"aidonerightcorp","version":"0.6.0","requires_hermes":">=0.20.0","repo":"https://github.com/aidonerightcorp/omni-fabric-runtime","docs":"https://github.com/aidonerightcorp/omni-fabric-runtime#readme","tools":["fabric_probe_and_configure","fabric_task_queue","fabric_claim_bundle","fabric_object_store","fabric_compile_workflow_dag","fabric_grid_and_rl_optimize","fabric_boil_down_and_edit","fabric_swarm_proxy_control","fabric_federated_sync","fabric_compile_weight_unit","fabric_decompose_horizon","fabric_recursive_trial","fabric_attribute_generator_profile","fabric_plan_koopman_trajectory","fabric_export_portable_cartridge","fabric_compile_wasm_wgsl_kernel","fabric_dp_federated_merge"],"hooks":["on_session_start","pre_llm_call","pre_verify","post_api_request","post_tool_call","subagent_start","subagent_stop","kanban_task_claimed","kanban_task_completed","on_kanban_worker_stale_claim"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"open","pr":151989,"prs":[{"n":151989,"state":"open","created":"2026-11-09T14:28:32Z"}],"created":"2026-11-09T14:28:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"doubt","title":"Doubt","summary":"Word-by-word certainty heat maps from the model's own token probabilities, and a guard that sends commands built on a guess to the approval prompt.","disclosure":"with the guard on (default for `terminal` calls), each guarded tool call sends one extra chat request carrying up to 8 KB of the recent conversation to the configured scorer endpoint (default: the agent's own endpoint) using DOUBT_SCORER_API_KEY or, on openrouter.ai, OPENROUTER_API_KEY; it also asks the provider for token logprobs on every chat-completions request and appends a one-line certainty summary under replies (`annotate: off` disables it).","category":"tools","platforms":[],"maintainer":"PinnacleCryptNG","author":"PinnacleCryptNG","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/PinnacleCryptNG/doubt","docs":null,"tools":[],"hooks":["pre_tool_call","transform_llm_output"],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"Needs model.streaming: false and a provider that returns logprobs; most providers omit them on requests that carry tools, so the heat map fills on tool-free turns.","state":"merged","pr":151985,"prs":[{"n":151985,"state":"merged","created":"2026-11-09T14:17:47Z"}],"created":"2026-11-09T14:17:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/PinnacleCryptNG/doubt/4b35c4b296f50fd2184be4faf80bc90e8e3e9862/docs/terminal.png","https://raw.githubusercontent.com/PinnacleCryptNG/doubt/4b35c4b296f50fd2184be4faf80bc90e8e3e9862/docs/pane.png","https://raw.githubusercontent.com/PinnacleCryptNG/doubt/4b35c4b296f50fd2184be4faf80bc90e8e3e9862/docs/desktop.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/doubt.webp"},{"name":"customs","title":"customs","summary":"Plants fake credential files on your machine and blocks a hijacked agent the moment a tool call reaches for one, before the tool runs. It also redacts its own fake values from tool results and from the request to the model provider, reads local scripts before they run, and asks for approval when an upload follows a credential search and packaging.","disclosure":"plants fake credential files (mode 600, never over an existing file, inside a Git repository only at paths Git ignores) under the home folder, including ~/.ssh and ~/.aws, when the user runs /customs plant, blend or add, and keeps its own state in its plugin data folder; it only recognizes its own bait files and fake values and does not find or protect real credentials. Its hooks read every tool call's arguments and results and every outgoing model request, block or send to Hermes approval the calls that touch bait or carry a fake value, redact fake values from tool results and model requests, and after a block require approval for network actions in that session until /customs unlock (on by default). It reads the local scripts a command is about to run (up to 8 files, 512 KB each) and, during /customs blend, folder names under the home folder, and runs git check-ignore when planting inside a Git repository. No network calls by default; with alert_target set, alerts go out through hermes send on the user's own Hermes messaging route and carry the rule, the bait file's path, the likely source and a masked preview of the call (first 200 characters).","category":"tools","platforms":["linux"],"maintainer":"pgreyy","author":"pgreyy","version":"0.6.5","requires_hermes":">=0.23.0","repo":"https://github.com/pgreyy/customs","docs":"https://github.com/pgreyy/customs/blob/8363fe0d10d49f2321eb652d00b62e9c816f910d/README.md","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","post_approval_response"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"merged","pr":151984,"prs":[{"n":151984,"state":"merged","created":"2026-11-09T14:13:53Z"}],"created":"2026-11-09T14:13:53Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"visual-oracle","title":"visual-oracle","summary":"Makes a UI claim measurable before an agent reports success: captures a page as a baseline, then pixel-diffs later renders and answers PASS, FAIL or REVIEW with independent change regions (bbox, pixel count, area, density), a diff image, an overlay and per-region crops. Waits for document.fonts.ready, an optional selector and two identical frames so a capture is settled, records the Chrome version and viewport that produced it, and refuses to guess when rendering never stabilises. An optional visual change contract declares expected changes and protected regions so a declared change can pass while an undeclared one fails; selectors name locations, not meaning. Masks accept rectangles or CSS selectors and are applied before capture, a selector matching nothing is an error, and masks may not cover more than half the viewport. Only public http and https are rendered: file://, data:, private ranges and the cloud metadata address are refused on the URL and on every request the page makes, redirects included, with localhost, 127.0.0.1 and ::1 allowed and VO_ALLOW_HOSTS for anything else.","disclosure":"renders the URL you give it in a local Chrome over the DevTools protocol (no Selenium, Playwright or pip install), so the page's own network requests happen in that browser; reads the PNGs it produced and writes baselines, diffs, overlays, crops and report.json under HERMES_HOME/plugin-data/; runs no shell command of its own and no background service; the baseline is never updated automatically; image input must be a real PNG and a header claiming more than 8192 px on a side is refused before decompression; no telemetry. Disclosure — renders the http(s) URL you give it in a local headless Chrome over the DevTools protocol (no Selenium, Playwright or pip install), so the page's own network requests happen from your machine; refuses non-http(s) schemes and private, link-local and cloud-metadata addresses on the URL and on every request the page makes (localhost, 127.0.0.1 and ::1 allowed, more via VO_ALLOW_HOSTS); launches Chrome with --no-sandbox only when running as root, without user namespaces, or with VO_NO_SANDBOX=1; reads the PNGs you point it at and writes baselines, diffs, overlays, crops and report.json under HERMES_HOME/plugin-data/visual-oracle/; a failing or REVIEW check keeps the agent's turn open through the pre_verify hook; runs no shell command of its own and no background service; the baseline is never updated automatically; no telemetry.","category":"tools","platforms":[],"maintainer":"valenciayuna","author":"valenciayuna","version":"","requires_hermes":">=0.21.0","repo":"https://github.com/valenciayuna/hermes-plugin-visual-oracle","docs":"https://github.com/valenciayuna/hermes-plugin-visual-oracle#readme","tools":["visual_base","visual_check","visual_list"],"hooks":["pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151981,"prs":[{"n":151981,"state":"merged","created":"2026-11-09T14:09:56Z"}],"created":"2026-11-09T14:09:56Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"exfilbar","title":"Exfilbar","summary":"Per-file transfer routes for Hermes: you list which workspace paths may go to which hosts, and a pre_tool_call hook blocks recognized uploads from terminal and execute_code that leave those routes (curl, wget, scp, rsync, nc, socat, ssh, sftp, mail, HTTPie, git push by opt-in, Python requests/httpx/urllib and more). Protected globs (default private/**, *.env) are never routed. Desktop page shows your routes and an allowed/blocked feed per session; /exfil check explains a dry run.","disclosure":"static recognition only, not an egress sandbox; scripts, browser and MCP tools and sibling-hook modifications can bypass it, and unresolved recognized transfers block by default. Stores bounded transfer metadata (paths, scheme and host, decision) and a routes summary in its own plugin data folder; never reads file contents or full commands. No network calls, subprocesses, credentials or telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"quotumorg","author":"quotumorg","version":"0.5.4","requires_hermes":">=0.23.0","repo":"https://github.com/quotumorg/exfilbar","docs":"https://github.com/quotumorg/exfilbar/blob/76e924641a5e508fbcc3ee31cadacad7a14ee353/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Static recognition of a bounded command and Python subset; not an egress sandbox or DLP. Uncovered tools (browser, MCP, messaging) and later sibling-hook argument changes can bypass it.; Unresolved recognized transfers block by default (block_unresolved: true), and commands over the parse budget block; both can reject legitimate work.; Paths resolve lexically against the working directory; symlinks are never resolved.; Tested on Hermes v0.23.0 at 2bd378ed1b8d6bf2192cb26e0a55ff3091e6bd19 with Desktop built from source; the floor does not establish later compatibility.","state":"merged","pr":151980,"prs":[{"n":151980,"state":"merged","created":"2026-11-09T14:07:15Z"}],"created":"2026-11-09T14:07:15Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"motion-studio","title":"Motion Studio","summary":"Creation-first media studio for Hermes Desktop. Quick Create turns a chat request into sound effects, images, voice or video takes you can play, compare, keep and download; Production collects chosen takes and imported files into a project and exports them. Image, voice and video come from Hermes' own image_gen, tts and video_gen tools; sound effects from a local producer you configure.","disclosure":"downloads finished media only from the provider URLs those Hermes tools return (x.ai, openai.com, oaiusercontent.com, fal.media, fal.run, deepinfra.com, krea.ai; no proxies, cookies or credentials, same-host redirects only); runs ffmpeg/ffprobe to check imported and generated media, nvidia-smi to report GPU use, and local audio engines you set up, each with a minimal fixed environment (no inherited credentials or provider keys); reads Hermes' generator output cache read-only (secret and hidden files refused); stores projects and takes under the Motion Studio profile's data directory. Saved takes are kept, not deleted. No telemetry.","category":"desktop","platforms":["linux","windows"],"maintainer":"gregoryhorn","author":"gregoryhorn","version":"0.1.0","requires_hermes":">=0.23.1","repo":"https://github.com/gregoryhorn/motion-studio","docs":null,"tools":["motion_studio_creation","motion_studio_production"],"hooks":[],"middleware":[],"env":[],"known_issues":"Open Motion Studio from a chat in the motion-studio profile: the panel works with the focused chat. If it says the chat is not connected, click Connect.; Image, voice and video need the matching Hermes tool enabled with a provider. Paid or unknown-cost methods ask before running.; Sound effects need a local audio producer you configure. Music generation is not available yet.; Tested on Linux and Windows Hermes Desktop. macOS has not been tested.; Saved takes and projects cannot be deleted from the app yet.; Install asks for confirmation: Hermes' security scan rates the package caution because it runs media tools (ffmpeg/ffprobe) on file descriptors and includes subprocess and setup helpers.","state":"open","pr":151977,"prs":[{"n":151977,"state":"open","created":"2026-11-09T13:59:46Z"}],"created":"2026-11-09T13:59:46Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"recall-flashcards","title":"recall-flashcards","summary":"Spaced repetition inside Hermes Agent: anything worth remembering becomes a flashcard, scheduled with the SM-2 algorithm in a local SQLite store. Four tools (recall_add, recall_due, recall_grade, recall_stats), a /recall command, and a bundled card-hygiene skill.","disclosure":"a pre_llm_call hook appends one short due-cards note to the first turn of a session, only when cards are due, at most once per session; no network, no telemetry, no credentials, zero dependencies.","category":"tools","platforms":[],"maintainer":"nftboy07","author":"nftboy07","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/nftboy07/hermes-recall-plugin","docs":"https://github.com/nftboy07/hermes-recall-plugin#readme","tools":["recall_add","recall_grade","recall_due","recall_stats"],"hooks":["pre_llm_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151976,"prs":[{"n":151976,"state":"open","created":"2026-11-09T13:57:01Z"}],"created":"2026-11-09T13:57:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"buzzmark","title":"Buzzmark","summary":"Write, plan and schedule social media posts in a business's own voice through Buzzmark's hosted MCP server (Streamable HTTP at https://buzzmark.ai/mcp, OAuth sign-in, no keys in config): post ideas from this week's news, posts for Instagram, LinkedIn, Facebook, X, Threads and TikTok with a version per platform, a score for how much a post sounds like the brand, pictures, a week of posts planned around the best posting times, and what worked. Bundles the buzzmark workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Buzzmark's hosted server (buzzmark.ai) and acts on the user's Buzzmark account; the tool set is served by that server at runtime and is not covered by the pinned sha. Nothing posts right away: tools save, schedule, move and unschedule posts on the user's Buzzmark calendar and delete drafts, and write_posts, rewrite_post and create_image use the plan's monthly allowance. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Piik Labs","author":"BDYCTRL","version":"1.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/piiklabs/buzzmark-mcp","docs":"https://github.com/piiklabs/buzzmark-mcp#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151969,"prs":[{"n":151969,"state":"closed","created":"2026-11-09T13:42:11Z"}],"created":"2026-11-09T13:42:11Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tickover","title":"Tickover","summary":"Ears for Hermes. Hermes can switch things on; Tickover lets it hear whether they started. tickover_verify listens before and after any action (a relay, a smart plug, a shell command, a robot move) and returns confirmed, no_change, other_change or unclear, with the level change in dB and a card. It needs no setup and no baseline. tickover_hear says what a sound is and whether the recording is usable. tickover_enroll and tickover_check remember a machine from three healthy recordings and report drift in robust sigmas with the frequency band that moved. tickover_watch puts a machine on a Hermes cron schedule, with a person sending voice notes or unattended from a stream or a recorder folder. tickover_fleet shows every machine on one card. Name a repairer with tickover_watch(notify=\"telegram:<chat_id>\") and a confirmed drift reaches them on Telegram, WhatsApp, email or any Hermes channel, once per change, while the fix is still small. bridge/tickover_bridge.py, one standard-library file, turns an old Android phone, a Raspberry Pi or a spare laptop into a listening device that Hermes reads over the local network. tickover_teach (experimental) learns named states from a few recordings. tickover_selftest proves the install with synthetic sound. Training-free: frozen CED-base and EfficientAT mn10 encoders in onnxruntime, about 0.6 s per check on CPU. Benchmarks with their limits are in the README.","disclosure":"first use downloads the CED-base ONNX model (87 MB, Apache-2.0) from huggingface.co/mispeech/ced-base at a pinned commit and verifies its sha256; a 12 MB mn10 ONNX graph ships in the repo, checked by sha256 at load. Audio is processed locally and never uploaded. tickover_listen and a source-less tickover_verify record 3-120 seconds from this computer's microphone when the model calls them, with no approval prompt (needs the optional sounddevice package). The tools read any audio or video file, folder or glob the model names, and open a stream URL only for hosts the owner lists in the plugin's allowed_sources setting (empty by default), connecting only to the checked address and re-checking every redirect; private addresses pass only for listed local names or IPs, and link-local and cloud-metadata addresses only when listed literally. ffmpeg (the one on PATH, else the binary shipped by the imageio-ffmpeg wheel) runs as a subprocess with protocol and format whitelists and a minimal environment; http(s) streams are fetched by the plugin and piped in, rtsp goes through a local relay that refuses redirects. tickover_watch creates and replaces Hermes cron jobs (no faster than every 15 minutes, never from inside a cron run unless cron.allow_agent_scheduling is true) that ask the owner for a recording or check a stream unattended. With a repairer set through tickover_watch(notify=...), which only the owner's chat or the local operator can change, a confirmed drift sends the repairer a message and a card through Hermes delivery, via a one-shot cron job with no tools or, when agent scheduling is off, from the listening job itself; this happens without an approval prompt. Three hooks (pre_gateway_dispatch, post_gateway_admission, pre_llm_call) note audio files that arrive in chat and add one context line telling the agent where the file is; the note is stored only after the gateway admits the sender, and they never block a message. The optional bridge script runs on the user's own device, serves only audio it records on request, and requires a key on any non-local address unless started with --open. Baselines, cards and history live in plugin-data/tickover. No credentials, no telemetry.","category":"tools","platforms":[],"maintainer":"rapha18th","author":"rapha18th","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/rapha18th/tickover","docs":"https://github.com/rapha18th/tickover/blob/45ebd2bd447504fb6229088fda1b3cab052aa982/README.md","tools":["tickover_hear","tickover_verify","tickover_enroll","tickover_check","tickover_teach","tickover_watch","tickover_checkin","tickover_fleet","tickover_listen","tickover_selftest"],"hooks":["pre_gateway_dispatch","pre_llm_call","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151968,"prs":[{"n":151968,"state":"merged","created":"2026-11-09T13:41:36Z"}],"created":"2026-11-09T13:41:36Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/rapha18th/tickover/45ebd2bd447504fb6229088fda1b3cab052aa982/docs/catalog-banner.png","https://raw.githubusercontent.com/rapha18th/tickover/45ebd2bd447504fb6229088fda1b3cab052aa982/docs/screenshots/desktop-verify.png","https://raw.githubusercontent.com/rapha18th/tickover/45ebd2bd447504fb6229088fda1b3cab052aa982/docs/screenshots/card-verify.png","https://raw.githubusercontent.com/rapha18th/tickover/45ebd2bd447504fb6229088fda1b3cab052aa982/docs/screenshots/card-verify-nochange.png"],"videos":[],"x":["https://x.com/RAIRORAPHA/status/2120214551887331693"],"youtube":[],"thumb":"/hackathon/thumbs/tickover.webp"},{"name":"ballast","title":"Ballast","summary":"Free a target amount of disk space by clearing the developer and AI caches you'll miss least, with Hermes approval and rebuild recipes.","disclosure":"after a Hermes approval prompt, `ballast_apply` permanently deletes (no Trash) the contents of cataloged cache directories under your home (npm, pnpm, Yarn, pip, uv, Cargo, Homebrew downloads, Xcode DerivedData/device support, CoreSimulator caches, HuggingFace hub, Gradle, CocoaPods, Go; Ollama and LM Studio model stores only on explicit opt-in). Runs your locally installed npm/yarn/pip/uv/go cache cleaners (argv, no shell, minimal offline environment) and read-only `docker system df`. No network, no credentials read; state in plugin-data/ballast/. Cron and unattended runs are refused.","category":"tools","platforms":["macos"],"maintainer":"1momoh","author":"1momoh","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/1momoh/ballast","docs":null,"tools":["ballast_scan","ballast_plan","ballast_apply","ballast_ledger","ballast_status"],"hooks":["pre_tool_call","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151966,"prs":[{"n":151966,"state":"merged","created":"2026-11-09T13:39:24Z"}],"created":"2026-11-09T13:39:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/cafca7be-af4b-44ce-b341-af7be1bc4cb6"],"videos":["https://github.com/user-attachments/assets/51c99369-b6b0-472f-bec0-dff5ace87f68"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ballast.webp"},{"name":"takeover","title":"Takeover","summary":"Human-in-the-loop screen takeover. When a step needs you (sign-in, approve/authorize, 2FA, CAPTCHA, payment) the agent asks, you take over its browser/desktop from hermes-webui, the dashboard or Desktop (even on a phone), then hand back. Installs TigerVNC + Xfce via Hermes's Bot Desktop installer (root) and runs a local VNC/websocket service.","disclosure":"on first deliberate use (the Screen page, the agent's first `request_takeover`, or `hermes takeover setup`) it installs TigerVNC and Xfce as root through Hermes's Bot Desktop installer and sets `browser.headed: true` in your config (turn off with `auto_install: false`); when the plugin loads it copies a Screen page into hermes-webui's extensions folder and runs a loopback Takeover service there (turn off with `webui: false`); whoever holds the takeover controls the agent's browser and desktop, and the agent's screen tools are refused until they hand back.","category":"tools","platforms":["linux"],"maintainer":"shoumikgoswami","author":"shoumikgoswami","version":"0.5.3","requires_hermes":">=0.21.6","repo":"https://github.com/shoumikgoswami/Hermes-takeover","docs":"https://github.com/shoumikgoswami/Hermes-takeover#readme","tools":["request_takeover"],"hooks":["on_session_start","pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151964,"prs":[{"n":151964,"state":"merged","created":"2026-11-09T13:38:36Z"}],"created":"2026-11-09T13:38:36Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"siemless","title":"siemless","summary":"Agent security telemetry for SIEMs. Every tool call, file read, shell command, outbound request, approval, subagent, scheduled job and configuration change a Hermes agent makes becomes an OCSF 1.9 security event; 14 deterministic rules correlate them into findings (secret access then egress, prompt-injection chains, credential discovery, persistence, governance tampering, …) with MITRE ATT&CK 20.1 mapping and evidence labelled observed or inferred. Exports as JSON Lines (Wazuh), RFC 5424 syslog, CEF, Splunk HEC and Elastic ECS, with a pack and 22 Sigma rules. Desktop page with evidence chains and exporter health; /siemless and hermes siemless incl. replay of recorded sessions.","disclosure":"observer hooks only (no pre_tool_call, no middleware, no tools; nothing is blocked or rewritten). Reads only the hook payloads Hermes passes, bounded and redacted before storage; prompt text, model output, tool results, file bodies and message text are never stored (hashes and lengths only; record_prompts adds a 200-char redacted preview). Writes its own SQLite database, JSONL files and spool under plugin-data/siemless/ (0600). Network: none by default; with remote_export true and a destination set, sends the configured event scope to that syslog (UDP/TCP/TLS), Splunk HEC, Elastic or JSON receiver endpoint over verified TLS (plain HTTP to 127.0.0.1 only behind a lab switch); tokens via agent.secret_scope.get_secret, never read from .env. Three daemon threads per process (pipeline, dispatch, settings watch). The dashboard half reads plugin settings through hermes_cli.config.load_config. No shell commands, no telemetry to the author, no self-updater. The install scanner reports caution because the detector lists the patterns it looks for (ssh paths, webhook hosts, curl|sh, cron, env dumps) in siemless_core/sensitive.py and in the tests.","category":"tools","platforms":[],"maintainer":"ASV-Labs","author":"P0GL0L","version":"0.1.2","requires_hermes":">=0.21.5","repo":"https://github.com/ASV-Labs/siemless","docs":"https://github.com/ASV-Labs/siemless#readme","tools":[],"hooks":["on_session_start","on_session_end","on_session_reset","on_session_delete","pre_llm_call","post_llm_call","post_api_request","api_request_error","post_auxiliary_call","post_tool_call","pre_approval_request","post_approval_response","on_human_input_request","on_human_input_resolved","subagent_start","subagent_stop","pre_command","on_skill_lifecycle","kanban_task_claimed","kanban_task_completed","kanban_task_blocked","on_kanban_worker_spawned","on_kanban_worker_exited"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151963,"prs":[{"n":151963,"state":"closed","created":"2026-11-09T13:35:33Z"}],"created":"2026-11-09T13:35:33Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ASV-Labs/siemless/a74bd96f2fc232e808db6242a6be642fa700db5e/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/siemless.webp"},{"name":"openany","title":"OpenAny","summary":"Marketplace for agents. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/) that connects Hermes to OpenAny's hosted MCP server over Streamable HTTP at https://mcp.openany.si/mcp-lite. Hermes discovers search_apis, get_api, and run_api from that server. Auth is OPENANY_API_KEY via the Hermes config_schema secret, sent as Authorization Bearer. The server is marked trust: untrusted. Declares Python dependency mcp==2.3.0. No local Python entrypoint, hooks, middleware, self-updater, or telemetry.","disclosure":"connects to OpenAny's hosted MCP server (mcp.openany.si, Alephant AI LLC) with your OPENANY_API_KEY; every tool call and its inputs go there, and `run_api` forwards them to the third-party API you pick and can charge your prepaid OpenAny balance. The package marks the server `trust: untrusted`, so calls that are not read-only ask first and are refused in unattended runs. The tool list is served by the remote server and can change without a new pin.","category":"tools","platforms":[],"maintainer":"Alephant AI LLC","author":"ComunionIO","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/openanysi/openany-mcp","docs":"https://openany.si","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Hermes does not connect this server until OPENANY_API_KEY is set in the profile secret scope.; A config.yaml mcp_servers.openany entry skips this package server. Remove it.; The default URL is /mcp-lite. The full /mcp endpoint is truncated by Hermes 0.23.0 after 50 pages.; Verified on /mcp-lite 2026-11-09: Hermes called search_apis, get_api, then run_api (coingecko_get_api_v3_simple_price), request 362c623f-599e-472f-8c8b-6e2c79dd9ea9, tool cost 0, total run 2613 microUSD.","state":"merged","pr":151961,"prs":[{"n":151961,"state":"merged","created":"2026-11-09T13:32:19Z"}],"created":"2026-11-09T13:32:19Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"synento","title":"synento","summary":"Live video sessions that record themselves. The agent uses a restricted server key, then checks the recording before calling the integration working.","disclosure":"","category":"tools","platforms":[],"maintainer":"Synento","author":"fi5u","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Synento/hermes-plugin","docs":"https://synento.com/docs/guides/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Portable mcp.json cannot complete OAuth. Add mcp_servers.synento with url https://api.synento.com/mcp, auth: oauth, and trust: untrusted, then run hermes mcp login synento and hermes mcp test synento.; Write tools can create projects, sessions, restricted keys, and a synthetic call. Those use plan allowance and can fire project webhooks. The remote tool list can change without a new pin of this package.","state":"merged","pr":151949,"prs":[{"n":151949,"state":"closed","created":"2026-11-09T13:17:43Z"}],"created":"2026-11-09T13:17:43Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stitchslop","title":"Stitch Slop","summary":"Work on the embroidery design open in Stitch Slop, watch it in a pane, and digitize artwork into machine stitch files. Ships the bridge its tab dials into (loopback WebSocket, protocol 1 of stitchslop.com/agent), a viewer page that streams a dedicated Chrome window and forwards clicks and keys, four tools, an arc-typesetting and art-prep script, and a bundled skill covering the digitizing workflow.","disclosure":"writes ~/.stitchslop (pairing, Chrome profile, exports, logs), shared by every Hermes profile on the machine; starts a loopback WebSocket bridge, a token-gated viewer server and a dedicated Chrome (launched with --no-sandbox and Local Network Access checks off) on a private X display; the viewer binds to loopback only unless you set STITCHSLOP_PANE_BIND to a Tailscale address, which exposes the token-gated viewer (live view and click/key control of that Chrome, logged into your Stitch Slop account) to your tailnet; navigation is limited to https://stitchslop.com; first pairing needs you to paste the Agent-panel token by hand.","category":"tools","platforms":["linux"],"maintainer":"mojomast","author":"mojomast","version":"0.2.2","requires_hermes":">=0.21.6","repo":"https://github.com/mojomast/hermes-stitchslop","docs":"https://github.com/mojomast/hermes-stitchslop#readme","tools":["stitchslop_status","stitchslop_connect","stitchslop_call","stitchslop_browser"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151946,"prs":[{"n":151946,"state":"merged","created":"2026-11-09T13:13:18Z"}],"created":"2026-11-09T13:13:18Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/hermes-stitchslop/51c12d0fd957fb4f40f98253570eb33d791c314c/assets/banner.png","https://raw.githubusercontent.com/mojomast/hermes-stitchslop/51c12d0fd957fb4f40f98253570eb33d791c314c/assets/pane.jpg","https://raw.githubusercontent.com/mojomast/hermes-stitchslop/51c12d0fd957fb4f40f98253570eb33d791c314c/assets/diagram.png","https://raw.githubusercontent.com/mojomast/hermes-stitchslop/51c12d0fd957fb4f40f98253570eb33d791c314c/assets/stitch.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/stitchslop.webp"},{"name":"hyperrizz","title":"Hyperrizz","summary":"Agent-led HyperFrames films with a live review pane, frame notes, revisions and on-demand full Studio. Runs local Node/Chromium/FFmpeg subprocesses and background jobs; npm downloads pinned dependencies on first build. Project code runs locally. Stores projects in profile-scoped plugin data. No API keys or hosted generation.","disclosure":"spawns local Node/Chromium/FFmpeg child processes with a minimal non-secret environment; runs background build/check/render workers and an optional loopback Studio sidecar (token-gated, 512 KiB capture budget, no redirects); project write can edit the project's scripts/*.mjs and package.json, and build/check/render run them with Node at the user's full privileges (no filesystem or network sandbox), the same power as file writes plus the terminal; npm ci runs package lifecycle scripts; the embedded HyperFrames Studio server listens on loopback without a token; Desktop pane uses ctx.rest only; post_tool_call binds projects to the host session; no credentials, no telemetry, no self-update.","category":"desktop","platforms":["linux","macos"],"maintainer":"mojomast","author":"mojomast","version":"2.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/hyperrizz","docs":"https://github.com/mojomast/hyperrizz#readme","tools":["hyperrizz_project","hyperrizz_review","hyperrizz_produce"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"Linux is the tested production platform; macOS is declared but not yet tested.","state":"merged","pr":151945,"prs":[{"n":151945,"state":"merged","created":"2026-11-09T13:13:15Z"}],"created":"2026-11-09T13:13:15Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/hyperrizz/35c482e22413ee43c74955bd6da7fe7b053cdd9b/docs/assets/hermes-review-pane.png","https://raw.githubusercontent.com/mojomast/hyperrizz/35c482e22413ee43c74955bd6da7fe7b053cdd9b/docs/assets/hyperframes-studio.jpg","https://raw.githubusercontent.com/mojomast/hyperrizz/35c482e22413ee43c74955bd6da7fe7b053cdd9b/docs/examples/broadcast-lab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hyperrizz.webp"},{"name":"data-lens","title":"data-lens","summary":"Automatic full-scan structural maps for eligible local CSV, JSON-array and JSONL reads, followed by bounded structured queries with exact Decimal sums. Opt-in host roots; no SQL, network, credentials or persistent runtime state.","disclosure":"replaces the default (no offset/limit) `read_file` result for large CSV/JSON/JSONL files inside the folders you list in `roots` with a derived structural map of the whole file, and its two tools read files under those roots directly on the host using the plugin's own path and credential-name guards rather than core's read guards. Nothing is readable until you set `roots` and `host_local: true`; no network calls.","category":"tools","platforms":["linux","macos"],"maintainer":"itsolaph","author":"itsolaph","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/itsolaph/data-lens","docs":"https://github.com/itsolaph/data-lens","tools":["data_lens_profile","data_lens_query"],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":151941,"prs":[{"n":151941,"state":"closed","created":"2026-11-09T13:05:36Z"}],"created":"2026-11-09T13:05:36Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/itsolaph/data-lens/00b83750c2cb6a5901fab71542957975716c5584/docs/header.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bluff","title":"Bluff","summary":"Does your model make things up? Bluff asks about things that sound real but don't exist (Python functions, built-in exceptions, chemical elements), mixed with real ones and phrased as if they all exist, and checks whether the model admits the made-up ones aren't real. The result is a bluff rate, with real items as a control. Every item is checkable by machine, so no model judges another. Runs on your active model through ctx.llm, no setup.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/bluff","docs":"https://github.com/salch-cred/bluff","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151939,"prs":[{"n":151939,"state":"merged","created":"2026-11-09T13:01:52Z"}],"created":"2026-11-09T13:01:52Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"spine","title":"Spine","summary":"Does your model cave when you push back? Spine asks questions with one exact answer, then tells the model, confidently, that a plausible wrong answer is right, and checks whether it holds its ground. The result is a Spine score, the share of correct answers it kept, under polite, firm or authority pressure, with every exchange in a report. Graded by the answer line, so no model judges another. Runs on your active model through ctx.llm, no setup.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/spine","docs":"https://github.com/salch-cred/spine","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151938,"prs":[{"n":151938,"state":"merged","created":"2026-11-09T13:01:48Z"}],"created":"2026-11-09T13:01:48Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"apphitlist","title":"AppHitlist","summary":"App Store research via AppHitlist remote MCP (Streamable HTTP at https://apphitlist.com/api/mcp): new winning apps, top earners, daily chart movers, Meta ads and review complaints. Bundles the apphitlist skill that maps questions to the nine tools. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to apphitlist.com. Auth is required today as an API key the Hermes remote MCP client supplies (Authorization: Bearer ahl_…); free keys are limited (20 tool calls/month) and Pro-only tools (ads, complaints) return subscription_required without Pro. The package does not embed secrets. OAuth resource metadata is advertised at /.well-known/oauth-protected-resource/api/mcp; full OAuth client flow is not claimed here. The live tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"mmdincer","author":"mmdincer","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/mmdincer/apphitlist-mcp","docs":"https://apphitlist.com","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151933,"prs":[{"n":151933,"state":"open","created":"2026-11-09T12:57:59Z"}],"created":"2026-11-09T12:57:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"promise-keeper","title":"Promise Keeper","summary":"Tell Hermes a rule once (\"never touch the prod folder\", \"ask me before you change migrations\", \"never force push\"). It proposes an exact rule quoting your words; you turn it on with /promise or the Desktop panel. Every tool call is then checked twice (pre_tool_call, and tool_execution middleware on the final arguments) by deterministic code, and a block quotes you. Each rule shows what is enforced, best effort and not covered. Local only: rules in plugin data, no network, no telemetry; reads scripts, Makefiles, package.json and git config of calls it checks.","disclosure":"every tool call is checked by a pre_tool_call hook and tool_execution middleware that can block it, or send it to Hermes' approval prompt, under rules the user confirmed (via /promise or the Desktop Promises panel); to judge a call it reads the scripts, Makefiles, package.json, the repo's .git/config and ~/.gitconfig the call refers to and runs `git ls-files` in the target folder; rules and a block history are stored locally in plugin-data/promise-keeper/rules.db, with no network I/O.","category":"tools","platforms":[],"maintainer":"MokiMeow","author":"MokiMeow","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/MokiMeow/promise-keeper","docs":"https://github.com/MokiMeow/promise-keeper#readme","tools":[],"hooks":["pre_llm_call","transform_llm_output","pre_tool_call"],"middleware":["tool_execution"],"env":[],"known_issues":"Terminal commands are read best effort: an opaque binary that writes files on its own can't be seen; code that names a protected path is blocked to be safe.; Not covered: other plugins' tools that write without a path argument, or a plugin's pre_tool_call hook that rewrites arguments after Promise Keeper's checks.; A process that obtains the dashboard session token is as trusted as the UI (a Hermes-wide limit, not specific to this plugin).","state":"merged","pr":151929,"prs":[{"n":151929,"state":"merged","created":"2026-11-09T12:49:53Z"}],"created":"2026-11-09T12:49:53Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MokiMeow/promise-keeper/ab91fee21f607d5515a8e007cf615fc285718dd0/docs/banner.png","https://raw.githubusercontent.com/MokiMeow/promise-keeper/ab91fee21f607d5515a8e007cf615fc285718dd0/docs/desktop-panel.png","https://raw.githubusercontent.com/MokiMeow/promise-keeper/ab91fee21f607d5515a8e007cf615fc285718dd0/docs/desktop-revoke.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/promise-keeper.webp"},{"name":"hermes-call-me","title":"Hermes Call Me","summary":"Hermes phones its owner through CALL-E before a risky action, when it is stuck, or when it finishes: call_for_approval, call_for_help and call_report each place one real phone call, the owner says a PIN the plugin compares (an approval also needs a one-time code read on the call and repeated back), and a wrong PIN, wrong code, no answer, busy, silence, an unclear reply or a timeout is never approval; an optional pre_tool_call guard blocks deploy/delete/payment-style tools until a single-use approval is on file.","disclosure":"Each call_for_approval, call_for_help or call_report places a real phone call billed to your own CALL-E account, and the model decides when to call, within a one-at-a-time limit and a daily cap of 8 by default. The action summary, issue or report text the model writes, your phone number, a one-time code and the call task go to api.heycall-e.com, which handles the call audio and transcript. Call records and transcripts, with spoken digits redacted, are stored in the plugin's data folder. A tool call can block for up to 180 seconds by default (600 max) waiting for you to answer.","category":"voice","platforms":[],"maintainer":"fozagtx","author":"fozagtx","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/fozagtx/hermes-call-me","docs":"https://github.com/fozagtx/hermes-call-me#readme","tools":["call_for_approval","call_for_help","call_report"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151928,"prs":[{"n":151928,"state":"merged","created":"2026-11-09T12:46:34Z"}],"created":"2026-11-09T12:46:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"openloft-memory","title":"openloft-memory","summary":"OpenLoft Memory — persistent graph-backed long-term memory for any Hermes agent. Recall before every turn, ingest after every turn, loft_* memory tools. Works with the hosted OpenLoft service or a self-hosted backend. Zero Python dependencies.","disclosure":"while openloft-memory is the active memory provider, each turn's user message, assistant reply and the core-redacted transcript slice (tool outputs included) are sent to the OpenLoft memory service (default https://api.openloft.xyz/api/memory, or the base_url you set) for storage and server-side LLM extraction, and each user message is sent there as a recall query; transcript archiving before compression, MEMORY.md/USER.md mirroring and backfill are off by default; loft_forget stops retrieval but the service retains the data (not erasure).","category":"memory","platforms":[],"maintainer":"blok-hamster","author":"blok-hamster","version":"0.1.0","requires_hermes":">=0.19.0","repo":"https://github.com/blok-hamster/hermes-plugin-openloft-memory","docs":null,"tools":["loft_recall","loft_remember","loft_forget","loft_stats","loft_search"],"hooks":["prefetch","queue_prefetch","sync_turn","system_prompt_block","on_session_end","shutdown","on_pre_compress","on_memory_write"],"middleware":[],"env":["OPENLOFT_MEMORY_API_KEY"],"known_issues":"","state":"merged","pr":151927,"prs":[{"n":151927,"state":"merged","created":"2026-11-09T12:45:56Z"}],"created":"2026-11-09T12:45:56Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/blok_hamster/status/2119757822149988701"],"youtube":[],"thumb":null},{"name":"turn-completion-nudge","title":"turn-completion-nudge","summary":"Nudges the agent to continue when a turn ends prematurely (planning or announcing next steps it has not done). Fail-open: never blocks a turn.","disclosure":"when the user sets `send_turn_text: true`, clipped turn text (about 1,200 chars of the user request and 1,500 chars of the assistant reply) is sent to OpenRouter (openrouter.ai, billed to the user's OPENROUTER_API_KEY) after each turn to score whether to nudge; with `amos_fallback: true` the same text may go to the keyless Amos/Scira API (api.amos.scira.ai). Both are off by default.","category":"tools","platforms":[],"maintainer":"ether-btc","author":"ether-btc","version":"0.3.2","requires_hermes":">=0.21.3","repo":"https://github.com/ether-btc/turn-completion-nudge","docs":null,"tools":[],"hooks":["post_llm_call"],"middleware":[],"env":["OPENROUTER_API_KEY"],"known_issues":"free-model rot: default scorer model `respan/span-01-lite-20260925:free` may be delisted upstream - pin or monitor (see the scorer_model config description in the plugin repo); privacy default: an absent `send_turn_text` is treated as opted out (dormant) in every context; an explicit `send_turn_text: true` egresses clipped turn text (~1200-char user request + ~1500-char assistant message) to the OpenRouter lane when a key is set — the keyless Amos/Scira fallback is a SEPARATE opt-in (`amos_fallback`, default false); nudge chains are capped at 2 consecutive nudge-driven turns per session (nudge text recognized on the next request); afterwards the hook stays silent until a real user turn arrives","state":"merged","pr":151924,"prs":[{"n":151924,"state":"merged","created":"2026-11-09T12:41:25Z"}],"created":"2026-11-09T12:41:25Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"explainer","title":"Explainer Studio","summary":"Turn any link, PDF, notes or topic into a narrated explainer video (MP4): themed slides, a neural voice, bullets revealed the moment they are spoken, word-by-word highlighted captions, title card and progress bar, in 16:9 or 9:16 for Shorts/Reels, plus SRT captions, transcript and thumbnail. Includes an explainer-video skill and a weekly recap-video blueprint. Narration text is sent to Microsoft's online Edge text-to-speech service via edge-tts (no account or key); scene images given as https URLs are downloaded only from public addresses (redirects checked) and local images only from allowed folders; ffmpeg runs locally to encode. Videos stay local. No telemetry.","disclosure":"narration text is sent to Microsoft's online Edge text-to-speech service (edge-tts, no account); scene images given as https URLs are downloaded from public addresses only (every redirect re-checked), and local scene images are read from the Hermes working directory, the plugin's data folder or folders you add in `image_dirs`.","category":"tools","platforms":[],"maintainer":"suhas-svg","author":"suhas-svg","version":"1.0.1","requires_hermes":">=0.22.5","repo":"https://github.com/suhas-svg/hermes_explainer","docs":"https://github.com/suhas-svg/hermes_explainer#readme","tools":["explainer_render","explainer_voices","explainer_videos"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs an internet connection: narration is synthesized by Microsoft's online Edge text-to-speech service.; Needs ffmpeg to encode the video (Hermes ships one; otherwise any ffmpeg on PATH, or set ffmpeg_path).; The model must include the returned MEDIA: line in its reply for the MP4 to be attached on messaging platforms.","state":"merged","pr":151920,"prs":[{"n":151920,"state":"merged","created":"2026-11-09T12:32:00Z"}],"created":"2026-11-09T12:32:00Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"aegis-spend-guard","title":"Aegis Spend Guard","summary":"Owner-set spend policy for Hermes Agent, enforced in a pre_tool_call hook before any spend executes. The owner configures a per-transaction cap, a daily limit, recipient allow/blocklists, a spend-tool scope and a warn zone (default 80% of a limit). Every tool call that spends money — an explicit amount in its arguments, a fixed per-call price from the owner's paid_tools map, a spend-shaped tool with no readable price, or a spend written into command/script text the agent is about to run (a money literal alongside a payment verb; on by default, the owner can turn the script gate off) — is evaluated by a worst-wins policy engine (BLOCK > WARN > ALLOW across frozen, amount, blocklist, per-transaction cap, daily limit, allowlist and tool-scope checks, the same semantics as the author's Aegis spend-control contract on Base and the tgp-guard pre-flight guard). Over-policy spends are vetoed with the reason; borderline spends return the approve directive and are routed to the owner through Hermes's own human-approval gate — the plugin never approves anything itself. Executed spends are recorded in a per-profile daily ledger held in ctx.state, and a /spendguard slash command gives the owner status plus a persistent freeze/unfreeze kill switch. Two tools (spend_guard_check, spend_guard_status) let the agent dry-run a planned spend and report guard state.","disclosure":"no Python dependencies, no network calls, no shell commands, no credentials read or stored, no telemetry; the only writes are the plugin's own ctx.state keys (freeze flag, daily total). Known limit, disclosed in the README: parallel spend calls are each checked against the ledger as it stands before either executes, so a simultaneous burst can overshoot the daily limit by one call.","category":"tools","platforms":[],"maintainer":"georgeonweb3","author":"georgeonweb3","version":"1.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/georgeonweb3/hermes-aegis-spend-guard","docs":"https://github.com/georgeonweb3/hermes-aegis-spend-guard#readme","tools":["spend_guard_check","spend_guard_status"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151917,"prs":[{"n":151917,"state":"open","created":"2026-11-09T12:26:55Z"}],"created":"2026-11-09T12:26:55Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bankconv","title":"BankConv","summary":"Convert PDF bank and credit card statements into transactions (ISO dates, signed amounts, running balance) or CSV, OFX, QFX, QBO and Xero CSV files with BankConv. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only: it runs the bankconv-mcp npm package pinned to 0.1.1 over npx stdio, so Node.js 20+ is required, and reads BANKCONV_API_KEY from the user's environment.","disclosure":"the PDFs the user names are uploaded to bankconv.com over HTTPS and deleted after 24 hours by default; converting uses pages of the user's BankConv account; converted files are written next to the PDF, to Downloads (or the home folder), or to any path given in save_to, overwriting an existing file there. The package marks the server untrusted, so Hermes asks before convert_statement and download_statement and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"BankConv","author":"wassim","version":"0.1.1","requires_hermes":">=0.21.6","repo":"https://github.com/wassim/bankconv-mcp","docs":"https://bankconv.com/integrations/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151912,"prs":[{"n":151912,"state":"merged","created":"2026-11-09T12:19:10Z"}],"created":"2026-11-09T12:19:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dsh-pet","title":"dsh-pet","summary":"Desktop pet for Hermes: runs the upstream dsh-pet standalone pet (Node + Electron window), maps session/tool activity onto its work status, and adds start/stop/uninstall commands. This entry points at a fork of PC2005-cloud/dsh-pet (MIT, copyright PC2005-cloud): upstream owns the pet runtime, the animation assets and the DSH plugin; the fork adds only the hermes/ adapter, and the pinned dsh-pet@0.4.7 runtime is the unmodified upstream npm package. Catalog installs fetch that runtime on first start (~80 MB, one time) with npm ci from a bundled lockfile (98 packages at exact versions with sha512 integrities), and dsh-pet downloads Electron (~350 MB) unless a local copy is reused. The child process runs with a minimal environment (PATH/temp/user dirs plus DSH_HOME); no inherited Hermes environment or provider keys. The pet listens on 127.0.0.1:3080-3089 and keeps its data in the plugin data directory.","disclosure":"on first start this plugin runs `npm ci` with its bundled lockfile (dsh-pet@0.4.7 and 98 exact, integrity-checked packages from registry.npmjs.org, install scripts off) into its plugin data directory, and the pet downloads Electron 43.3.0 (~350 MB) from npmmirror.com (override: DSH_PET_ELECTRON_MIRROR); when the gateway runs it starts a Node/Electron pet process automatically (turn off with `autostart: false`) under a minimal environment without Hermes's provider keys, which listens on 127.0.0.1:3080-3089 with a per-run token and receives only the current tool name; the pet's optional chat feature sends your chat messages to the AI endpoint and API key you configure in the pet's settings; Electron userData is shared at %APPDATA%\\dsh-pet-electron-helper.","category":"desktop","platforms":["windows"],"maintainer":"yucode-kk","author":"yucode-kk","version":"0.2.1","requires_hermes":">=0.22.0","repo":"https://github.com/yucode-kk/dsh-pet","docs":"https://github.com/yucode-kk/dsh-pet/blob/ea058fcac75289abda09c1335ec830a6c2b9926e/docs/hermes-plugin.md","tools":[],"hooks":["on_session_start","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Windows is the only verified platform; macOS and Linux are untested.; First start downloads ~80 MB of runtime and ~350 MB of Electron; on slow networks it looks hung — the launch log shows progress.; Electron userData is shared with a DSH install (%APPDATA%\\dsh-pet-electron-helper); settings and chat memory are not.","state":"merged","pr":151902,"prs":[{"n":151902,"state":"merged","created":"2026-11-09T12:10:01Z"}],"created":"2026-11-09T12:10:01Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-portals","title":"Hermes Portals","summary":"Stateful interactive tools with laptop-to-phone camera handoff and optional local Mac gesture control.","disclosure":"`/portals start` launches a background local web companion (its own venv, built by a manual `scripts/setup.sh` that downloads hash-pinned Python/npm packages and a checksum-verified MediaPipe model from storage.googleapis.com); with a LAN IP it listens on all interfaces on port 8766 over unencrypted HTTP with token pairing; the optional source-built macOS app uses Camera and Accessibility permissions to move the cursor, click, scroll and switch apps from hand gestures.","category":"tools","platforms":["macos","linux"],"maintainer":"ochikov","author":"ochikov","version":"0.3.0","requires_hermes":">=0.20.5","repo":"https://github.com/ochikov/hermes-portals","docs":"https://github.com/ochikov/hermes-portals/blob/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/README.md","tools":["portals_app","portals_diagram"],"hooks":[],"middleware":[],"env":[],"known_issues":"Trusted-LAN prototype: phone traffic uses HTTP, not TLS.; Explicit scripts/setup.sh step is required after installation.; Mac input requires macOS 13+, a local Swift build, Camera and Accessibility; no notarized binary is distributed.","state":"merged","pr":151900,"prs":[{"n":151900,"state":"merged","created":"2026-11-09T12:07:36Z"}],"created":"2026-11-09T12:07:36Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ochikov/hermes-portals/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/docs/screenshots/laptop-diagram.png","https://raw.githubusercontent.com/ochikov/hermes-portals/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/docs/screenshots/hand-demo.png","https://raw.githubusercontent.com/ochikov/hermes-portals/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/docs/screenshots/laptop-calculator.jpg","https://raw.githubusercontent.com/ochikov/hermes-portals/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/docs/screenshots/phone-calculator.jpg","https://raw.githubusercontent.com/ochikov/hermes-portals/e336ce862a3f5c4ef7ddffd2590ff7c79a3a246c/docs/media/hermes-portals-demo.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-portals.webp"},{"name":"hermes-guard","title":"Hermes Guard","summary":"Defensive prompt-injection guard for Hermes Agent: a pre_llm_call hook scans every inbound message locally (deterministic patterns, no model calls) for Unicode smuggling, hidden instructions, special tokens, and Base64-decoded payloads; a pre_tool_call hook blocks RCE/subshell patterns, sensitive credential paths, and call-ID races. High-confidence attacks are blocked; suspicious messages are quarantined for manual review via the guard_review tool (release is manual re-send by design). Includes a Predator pattern store (human-corrected signatures), a SHA-256 hash-chained ledger, secret redaction, a live Posture Score, a 28-vector simulation arena (21 message + 7 tool-arg), and a standalone Obsidian & Gold HUD. Python stdlib + SQLite only.","disclosure":"no network calls, no credentials read or stored, no data leaves the machine, no core overrides, no self-updater. Phase 3 verified live on Hermes 0.21.5 (validate 13/13, doctor OK, plugins list enabled, live hook-fire test: attack blocked on both hooks, benign passed); v1.1.2 re-verified the same way (validate 13/13, live hook-fire test 19/19 through the real plugin dispatch, 168/168 tests).","category":"tools","platforms":[],"maintainer":"elianjuan-g","author":"elianjuan-g","version":"1.1.2","requires_hermes":">=0.21.5","repo":"https://github.com/elianjuan-g/hermes-guard","docs":"https://github.com/elianjuan-g/hermes-guard","tools":["guard_review"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Quarantine release is manual re-send; there is no one-click release. release/delete are owner-only slash commands (/guard-release, /guard-delete); the model tool cannot call them.; Talking about jailbreak phrases — for example, quoting one to discuss it — can be flagged, because the scanner sees the pattern, not the intent.; Very short Base64 tokens (<20 chars, or token entropy <4.0) are skipped by design to avoid false positives on ordinary words.; register() uses one register_tool(name, toolset, schema, handler) call — the single form matching the 0.21.5 signature and current Hermes alike, live-verified on 0.21.5.; Subshell patterns ($(…), backticks) are checked only for command-running tools (terminal, execute_code, shell) and are bounded to 512 chars; backticks / $(…) in write_file / read / note content are not blocked.","state":"merged","pr":151899,"prs":[{"n":151899,"state":"merged","created":"2026-11-09T12:02:35Z"}],"created":"2026-11-09T12:02:35Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"adplug","title":"AdPlug","summary":"Manage Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads and Reddit Ads in Hermes Agent. Analyse performance, find wasted spend and build or optimise campaigns with your approval. Agent Plugins v1 package: 16 PPC skills, one per platform plus 11 for jobs like client briefs, audits, ad copy and routines. The skills were written and are used by a PPC expert with 12 years in the field and $100M+ in ad spend managed. Sign-in is Hermes' own OAuth 2.1 through one hermes mcp add command: no Node.js, npx or API keys. On a paid plan, add HubSpot and the agent judges lead quality and sends qualified leads back to Google, Microsoft, LinkedIn and Reddit as offline conversions.","disclosure":"creates and edits real ad campaigns that spend real money through AdPlug's hosted server (api.adplug.app); the skills preview each change and wait for an explicit yes, but Hermes itself does not prompt before AdPlug tools unless `trust: untrusted` is set on each AdPlug server in config.yaml.","category":"tools","platforms":[],"maintainer":"AdPlug","author":"danielpopamd","version":"1.0.1","requires_hermes":">=0.21.6","repo":"https://github.com/adplug-app/adplug-hermes-plugin","docs":"https://github.com/adplug-app/adplug-hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Add AdPlug's server once after installing: hermes mcp add adplug --url https://api.adplug.app/mcp --auth oauth --connect-timeout 300, sign in when the browser opens, then run /reload-mcp.","state":"merged","pr":151897,"prs":[{"n":151897,"state":"merged","created":"2026-11-09T11:59:51Z"}],"created":"2026-11-09T11:59:51Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/adplug-app/adplug-hermes-plugin/7d3a8e7119c3988876b2f6962a3a3d6549d73228/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/adplug.webp"},{"name":"youbench","title":"YouBench","summary":"Benchmark models on your own work: save real tasks from your Hermes sessions (prompt + exact starting files), replay them on any models in isolated sandboxes, grade each attempt with your own test command or a judge, and get a leaderboard of pass rate, quality, cost, time and steps, plus a live Desktop page.","disclosure":"each replay is a full agent run on the model you choose and is billed by that provider (cases × models runs); judge calls use your active model through ctx.llm. A case's check command runs in each replay sandbox through Hermes's terminal tool (normal approvals apply); replays run terminal and file tools confined to their sandbox by a pre_tool_call guard. Reads your git workspace to snapshot it (writes only unreferenced git objects; never touches your index, branches, stash or refs) and reads Hermes's state.db read-only for replay cost, token and tool counts. Stores cases (prompt, compressed starting files, reference diff), replay sandboxes and reports under <HERMES_HOME>/plugin-data/youbench/. No network calls of its own, no telemetry, no stored credentials, no self-updater.","category":"models","platforms":[],"maintainer":"liferacer780","author":"liferacer780","version":"0.1.3","requires_hermes":">=0.23.0","repo":"https://github.com/liferacer780/hermes-youbench","docs":"https://github.com/liferacer780/hermes-youbench","tools":["youbench_run","youbench_report","youbench_cases"],"hooks":["pre_llm_call","post_llm_call","pre_tool_call","subagent_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151896,"prs":[{"n":151896,"state":"open","created":"2026-11-09T11:56:31Z"}],"created":"2026-11-09T11:56:31Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"preferly","title":"Preferly","summary":"Preferly's six free AI-visibility MCP tools through Preferly's hosted Streamable HTTP MCP server (https://www.preferly.ai/mcp?client=hermes, no sign-in): AI crawler access for 13 crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended and more), AI robots.txt lines, llms.txt check, business structured data, readable business info, and a quick AI visibility check, plus one workflow skill. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), no plugin code.","disclosure":"hosted-only connector; website-addressed calls go to www.preferly.ai, whose crawler (PreferlyBot) fetches that site's robots.txt, homepage, /llms.txt and (for some tools) up to 2 more public pages; only quick_ai_visibility_check calls AI models on Preferly's servers; no account or key; rate-limited per IP and domain; the skill may link to preferly.ai (utm-tagged) and mention Preferly's paid $99 report; the tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"preferly-ai","author":"preferly-ai","version":"0.2.0","requires_hermes":"","repo":"https://github.com/preferly-ai/preferly-hermes","docs":"https://github.com/preferly-ai/preferly-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151888,"prs":[{"n":151888,"state":"merged","created":"2026-11-09T11:42:37Z"}],"created":"2026-11-09T11:42:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cmi","title":"CMI — Context Manager Intelligence","summary":"Deterministic, zero-LLM context engine (context.engine: cmi). Shortens old tool results, stale screenshots and old write payloads to digests while keeping tool pairs and a byte-stable cache prefix; every original is stored first and comes back byte-exact with cmi_recall. Replay of 26 real sessions with the provider cache modelled: 28% fewer tokens on average, modelled API cost -24%, no session costlier; live 195-request sessions: 49% fewer tokens.","disclosure":"originals and a full-text index (SQLite FTS5) are written under $HERMES_HOME (0700/0600, 30-day retention, 512 MiB cap); regex credential detection skips recognized secrets but can miss some; no network calls, no LLM calls, no dependencies. Project memory (experimental) is on for sessions opened in a Hermes Desktop project folder and stores only claims a model publishes with the user's exact words as proof; turn it off with context.cmi.auto_project_binding false. Disclosure — originals and a full-text index (SQLite FTS5) are written under $HERMES_HOME (0700/0600, 30-day retention, 512 MiB cap); regex credential detection skips recognized secrets but can miss some; no network calls, no LLM calls, no dependencies; project memory (experimental) is on for sessions opened in a Hermes Desktop project folder and stores only claims a model publishes with the user's exact words as proof (turn it off with context.cmi.auto_project_binding false); it imports private core helpers (token estimator, tool-summary helper, ContextCompressor) that can break on a Hermes release.","category":"memory","platforms":[],"maintainer":"jeremiebergel","author":"jeremiebergel","version":"1.11.4","requires_hermes":">=0.21","repo":"https://github.com/jeremiebergel/context-manager-intelligence","docs":"https://github.com/jeremiebergel/context-manager-intelligence/blob/399468f0687c051476961e4bb045eb84263be6b1/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151887,"prs":[{"n":151887,"state":"merged","created":"2026-11-09T11:41:11Z"}],"created":"2026-11-09T11:41:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fledly","title":"Fledly","summary":"iOS App Store market data in Hermes: young apps that already earn, app ideas scored from market data, top charts, App Store keyword research, keyword field checks, and daily rank and competitor tracking through Fledly's hosted MCP server (https://fledly.app/mcp, OAuth sign-in, no keys in config). Bundles the fledly workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Fledly's hosted server (fledly.app) and acts on the user's own Fledly account; the tool set is served by that server at runtime and is not covered by the pinned sha. track_app, track_keywords, untrack_keyword, track_competitor, untrack_competitor and save_idea change the user's tracked apps, searches, competitors and saved ideas; every other tool only reads, and nothing spends money. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. No telemetry.","category":"tools","platforms":[],"maintainer":"synthentica","author":"synthentica","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/synthentica/fledly","docs":"https://github.com/synthentica/fledly#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151884,"prs":[{"n":151884,"state":"merged","created":"2026-11-09T11:33:07Z"}],"created":"2026-11-09T11:33:07Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"patchsmith","title":"Patchsmith","summary":"Adds `implement_task` and `apply_patch`. The first hands a single well-specified coding task to a local model served through Ollama (the measured backend) and returns the resulting diff. Propose mode runs in an isolated temporary checkout, preserves the source checkout, and saves a full patch for review. The second tool applies an approved saved patch only after hash, base, affected-file and path checks. The local model works inside a fixed toolset with no shell (read, grep, glob, git status/diff, write/edit, run the configured test command, finish) under hard turn and total token budgets shared across up to three fresh-context attempts. An optional local model is used only on the final allowed attempt; failures return a factual handback. Includes a path jail, read-only test files, an auto-finish when tests go green, a repeat-call guard, and revert of partial edits when a run is blocked. Your main model spends tokens only on the instruction and the returned diff.","disclosure":"runs git and the owner-configured test command (PS_TEST_COMMAND, never chosen by the model; it executes project code on the host) as subprocesses in the working directory with a minimal child environment plus an owner passthrough list (PS_ENV_PASSTHROUGH); in direct mode a local model writes implementation files inside the given workdir (never .git, node_modules, test files, .env* or .ssh/; the Hermes home, the user home and filesystem roots are refused as workdirs) and a run transcript with file excerpts under <workdir>/.patchsmith/; propose mode copies the checkout to a temporary Git worktree and keeps the patch, provenance record and transcript under <hermes home>/plugin-data/patchsmith/proposals/, with run summaries under <hermes home>/plugin-data/patchsmith/runs/. Task text and file contents go only to the local model endpoint set in PS_ENDPOINT (loopback or private-network address; public and link-local hosts refused). inspect_hardware runs fixed OS probes (nvidia-smi, sysctl, system_profiler, PowerShell CIM) and reads the endpoint's model list. No telemetry, no self-update, no stored credentials.","category":"tools","platforms":[],"maintainer":"Bart Porcincula","author":"icporcincula","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/icporcincula/patchsmith","docs":"https://github.com/icporcincula/patchsmith#readme","tools":["implement_task","apply_patch","task_status","inspect_hardware"],"hooks":[],"middleware":[],"env":["PS_ENDPOINT","PS_MODEL","PS_MAX_TURNS","PS_CTX_BUDGET","PS_ENV_PASSTHROUGH","PS_TEST_COMMAND"],"known_issues":"","state":"merged","pr":151875,"prs":[{"n":151875,"state":"merged","created":"2026-11-09T11:16:03Z"}],"created":"2026-11-09T11:16:03Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ninsei","title":"Ninsei","summary":"Rooms where you and your Hermes agent hang out with other people and their agents. Play games the agents host, build small web toys together and message friends privately. No server: rooms run on free public Nostr relays.","disclosure":"Rooms, reactions, edits, room details, shared toys, your interest card, picture, portrait and face are signed and posted to public Nostr relays (nos.lol, relay.primal.net, nostr.mom, relay.snort.social, relay.damus.io by default), which may keep them forever; private messages are NIP-17 encrypted but relays see your key, timing and IP. Your room agent is a separate tool-less model call (no Hermes memory or tools) that strangers in a room can trigger against your daily token budget; its personality can be imported from any local Hermes profile's SOUL.md when you choose to, and whatever you keep there can surface in its public replies. The \"Your Hermes\" private line is a local gateway platform registered with trusted_inbound=True that switches itself on once Ninsei has data in the profile: it reaches your full Hermes agent (tools, memory) from rows in Ninsei's 0600 SQLite file, so any program running as your user that writes that file is treated as you (turn it off with gateway.platforms.ninsei.enabled: false). Five observe-only hooks run in every chat and record only step counts for toy builds you accepted. Stores two Nostr keypairs and decrypted private messages unencrypted in that SQLite file.","category":"desktop","platforms":[],"maintainer":"JustinPerea","author":"JustinPerea","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/GoodMachines/ninsei","docs":"https://github.com/GoodMachines/ninsei#readme","tools":["ninsei_status","ninsei_say"],"hooks":["pre_llm_call","post_llm_call","pre_tool_call","on_human_input_request","on_human_input_resolved"],"middleware":[],"env":[],"known_issues":"Rooms are public: messages, reactions, edits, room details, shared toys, your interest card, your picture, portrait and face are signed and posted to public Nostr relays, which may keep them forever.; Editing or deleting a message doesn't erase it. The earlier text stays on relays, and a delete is a request that relays and other apps may ignore.; Private messages hide their text, but relays see your key, when messages arrive and your IP address, so they may guess who your friends are. As of 2026-11-07, relay.damus.io accepts private messages but won't hand them out, so they arrive through the other relays.; A shared toy can't fetch from the web, but it can open a WebRTC connection, which no browser policy blocks today, and that reveals your IP address and can carry data out. It can also open a web page inside its own frame, which can see your IP address too. Ninsei closes a toy that does this in the usual ways, though one built to beat the check can still show a page. Toys run only after you press Run.; A stranger's text can still get an agent to say something wrong in a room under its owner's name. It can't make the agent act, because room agents have no tools.; In the browser Webapp, Ninsei's Desktop switch starts off: turn it on in Capabilities, Plugins, Ninsei. On iPhone with Hermes 0.23.0 that page crashes in Safari (Hermes issue #148538).; Stores two Nostr keypairs, decrypted private messages, the friend list and other people's pictures unencrypted in an owner-only (0600) SQLite file in the plugin data folder. Uses your configured model up to the daily budget you set.; Registers a local gateway platform with trusted_inbound=True (its only sender is the Ninsei page, through the plugin's own SQLite file), which turns itself on once Ninsei has data in the profile. Five observe-only hooks (they return None) run in every Hermes chat and store nothing from other chats. Full list in the README.","state":"closed","pr":151853,"prs":[{"n":151853,"state":"closed","created":"2026-11-09T10:22:38Z"}],"created":"2026-11-09T10:22:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/GoodMachines/ninsei/29404faae7ae39c080e148d4c6353ad5c7933e4b/docs/media/banner.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/room.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/offer.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/toy.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/tall-tales.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/impostor.png","https://raw.githubusercontent.com/GoodMachines/ninsei/0af3ff4f85cf2fde9a7ba5a29c134db93b34d0de/catalog/lobby.png"],"videos":[],"x":["https://x.com/JustinPerea/status/2119735437711282597"],"youtube":[],"thumb":"/hackathon/thumbs/ninsei.webp"},{"name":"ziztu","title":"Ziztu AI video studio","summary":"Plan, price and make AI micro dramas and anime episodes with the same characters in every shot through the hosted Ziztu MCP server (30 tools, Streamable HTTP at https://getziztu.com/mcp, OAuth 2.1 with PKCE through Hermes' MCP OAuth flow), plus four skills: micro drama series writing, viral faceless reels, YouTube Shorts and TikToks, faceless YouTube videos, and cinematic depth for image and video prompts. Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"hosted connector: every tool call sends prompts, scripts and project data to getziztu.com under the user's Ziztu account (OAuth sign-in through Hermes' MCP OAuth flow). Tools that make frames, clips, music or scripts spend that account's credits (each takes max_credits, accepts dry_run, and the server asks for confirm above 5,000 credits); the package marks the server untrusted, so Hermes asks before every call that is not read-only. The tool list is served by the remote server at run time and is not covered by the pinned commit. The skills ship four standard-library Python helper scripts the agent may run: three read local text files (episode scripts, season grids, prompts) and one (split_season.py) writes per-episode .fountain files into a folder the agent names; no network calls, install scripts, bundled credentials, background processes or telemetry.","category":"tools","platforms":[],"maintainer":"0xnirlin","author":"0xnirlin","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/0xnirlin/ziztu","docs":"https://getziztu.com/docs/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151846,"prs":[{"n":151846,"state":"merged","created":"2026-11-09T10:16:13Z"}],"created":"2026-11-09T10:16:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-openui","title":"Hermes OpenUI","summary":"Interactive OpenUI views and live dashboards in the Hermes Desktop and Webapp chat: charts, tables, cards, forms and galleries, with a text fallback for other clients.","disclosure":"no network calls of its own, subprocesses or credentials; a view can load https images the model names; reads local image files the model names and stores a copy in the view's file; a dashboard on screen reads the MCP tools the user lists in dashboard_sources, through Hermes' own client, and nothing is read until a source is listed; saves each view in the plugin's data folder (newest 500, at most 2 GB); clicking a view sends an ordinary message in that chat.","category":"desktop","platforms":[],"maintainer":"Revenue-Architect","author":"Revenue-Architect","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Revenue-Architect/hermes-kaizen-ui","docs":"https://github.com/Revenue-Architect/hermes-kaizen-ui/tree/main/packages/openui#readme","tools":["openui_present"],"hooks":["pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"A Desktop that connects to Hermes on another machine needs the Desktop half installed there too (Capabilities > Plugins > Install from Git).; The Android app receives a readable file instead of the interactive view.; Live dashboards are off until the user lists MCP tools under plugins.entries.hermes-openui (mcp_allowlist and settings.dashboard_sources).","state":"open","pr":151842,"prs":[{"n":151842,"state":"open","created":"2026-11-09T10:13:24Z"}],"created":"2026-11-09T10:13:24Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-a2ui","title":"Hermes A2UI","summary":"Interactive A2UI views in the Hermes Desktop and Webapp chat: status, plans, tables, charts, forms and choices. The model writes A2UI Express, which the plugin compiles to A2UI 1.0 with the official a2ui-agent-sdk (pinned 0.11.0, Apache-2.0); 1.0 or v0.9 JSON is also accepted and views saved as v0.9 still open. Exact validation errors the model can fix, and a text fallback for other clients.","disclosure":"no network calls of its own, subprocesses or credentials; installs one Python package, a2ui-agent-sdk; a view can load https images the model names; reads local image files the model names and stores a copy in the view's file; saves each view in the plugin's data folder (newest 500, at most 2 GB); clicking a view sends an ordinary message in that chat.","category":"desktop","platforms":[],"maintainer":"Revenue-Architect","author":"Revenue-Architect","version":"2.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Revenue-Architect/hermes-kaizen-ui","docs":"https://github.com/Revenue-Architect/hermes-kaizen-ui/tree/main/packages/a2ui#readme","tools":["a2ui_present"],"hooks":["pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"A Desktop that connects to Hermes on another machine needs the Desktop half installed there too (Capabilities > Plugins > Install from Git).; The Android app receives a readable file instead of the interactive view.","state":"open","pr":151841,"prs":[{"n":151841,"state":"open","created":"2026-11-09T10:13:18Z"}],"created":"2026-11-09T10:13:18Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"prompt-firewall","title":"Prompt Firewall","summary":"Community security-preview plugin that detects and quarantines selected prompt-injection patterns in tool results and evaluates risky tool actions; limited to hook/Core enforcement semantics.","disclosure":"Rewrites tool results the agent sees: spans that match its injection heuristics are replaced with `[QUARANTINED:<category>]` markers, and output past its scan budget (or output it fails to scan) is withheld with a notice; may block or escalate to the Hermes approval prompt writes to protected config/instruction/credential paths, endpoint changes and commands that disable prompt-firewall; adds a fixed trust-boundary notice to every turn; appends metadata-only audit records (tool name, target path, reason) to `<HERMES_HOME>/logs/prompt-firewall.jsonl`. No network.","category":"tools","platforms":[],"maintainer":"Gaijin-01","author":"Gaijin-01","version":"1.1.4","requires_hermes":">=0.22.7","repo":"https://github.com/Gaijin-01/prompt-firewall","docs":null,"tools":[],"hooks":["pre_tool_call","transform_tool_result","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Security preview, not a sandbox; detection is heuristic and incomplete.; Approval decisions depend on Hermes Core and can be bypassed by auto-approval settings.","state":"merged","pr":151850,"prs":[{"n":151850,"state":"merged","created":"2026-11-09T10:22:03Z"},{"n":151840,"state":"closed","created":"2026-11-09T10:09:26Z"}],"created":"2026-11-09T10:09:26Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"onboard-me","title":"onboard-me","summary":"Onboard Me: the deep-intake onboarding every new Hermes user should get. Two guided experiences in one plugin: (1) a warm structured intake conversation — 9 sections covering identity, daily life, work, goals, AI expectations, taste, hard rules, weekly rhythms and vision, with per-section opener guidance, follow-up prompts and care rules for sensitive topics, resumable across sessions (progress saved per section), three depths (quick ~25min / standard ~50-70min / deep 90+), compiling via onboard_finish into memory-ready declarative facts, verbatim hard rules, and automation candidates harvested from what the user says they keep forgetting; (2) onboard_setup_check — inspects the actual install (model, gateway, memory, MCP, plugins, skills, crons) and returns a personalized beginner-safe plan with exact commands plus a curated FAQ of real failure modes researched from the official docs, GitHub issues and community guides. Client-intake mode for agencies: engagement section, per-client profiles that never mix, handoff brief. Adds a /onboard slash command and a first-session pre_llm_call hook that offers the intake once per session on fresh installs only (never nags after a profile exists or on dismiss).","disclosure":"runs entirely locally: no network calls, no credentials, no shell execution; the plugin only reads config structure (key names/counts, never secret values) and reads/writes its own JSON profiles under ~/.hermes/plugin-data/onboard-me/ which the user can inspect or delete; the hook injects a short one-time context suggestion and fails silent on any error. 45/45 offline lifecycle tests + live in-host verification.","category":"other","platforms":[],"maintainer":"skeptical-agency","author":"skeptical-agency","version":"0.1.0","requires_hermes":"","repo":"https://github.com/skeptical-agency/onboard-me","docs":"https://github.com/skeptical-agency/onboard-me/blob/f5d808460eb4d8120e36c2fe505dcdfde4eea2e8/README.md","tools":["onboard_start","onboard_next","onboard_save","onboard_status","onboard_finish","onboard_setup_check","onboard_profiles"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151824,"prs":[{"n":151824,"state":"open","created":"2026-11-09T09:50:36Z"}],"created":"2026-11-09T09:50:36Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bulk","title":"bulk","summary":"Apply one instruction to hundreds of independent files, CSV rows or JSON records from a /bulk slash command, with job state in SQLite, background processing, bounded concurrency, automatic retries, shared rate-limit waits, pause and resume, Bulk-enforced token limits, restart recovery and a combined Markdown or CSV export.","disclosure":"sends each item to the configured model provider through ctx.llm, billed to the user; reads the paths given to --over, including outside the plugin data directory; runs background threads inside the Hermes process while a job is active; token limits are approximate and are not a billing limit; interrupted items can be sent to the model again.","category":"automation","platforms":[],"maintainer":"sniperchief","author":"sniperchief","version":"0.5.0","requires_hermes":">=0.23.0","repo":"https://github.com/sniperchief/Bulk","docs":"https://github.com/sniperchief/Bulk#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151823,"prs":[{"n":151823,"state":"merged","created":"2026-11-09T09:48:30Z"}],"created":"2026-11-09T09:48:30Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"nektar","title":"nektar","summary":"Verifiable memory market for agents — bounded payments, escrow, checkable receipts (MCP)","disclosure":"","category":"tools","platforms":[],"maintainer":"kryptokrates","author":"kryptokrates","version":"","requires_hermes":"","repo":"https://github.com/kryptokrates/nektar-hermes","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151822,"prs":[{"n":151822,"state":"open","created":"2026-11-09T09:43:50Z"}],"created":"2026-11-09T09:43:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-security-guard","title":"Agent Security Guard","summary":"Deterministic guard against prompt injection turning into actions. Results of web, search and browser tools reach the model wrapped as untrusted data; every planned tool call is checked against fixed action and sequence rules before it runs. After outside content entered a turn, a shell command, file write, install, config change or external send goes to Hermes's approval prompt; a secret is not sent out through web, e-mail, upload or push tools; the agent does not rewrite its own guard or skills on its own initiative. No model decides; every decision is recorded in a hash-chained audit trail.","disclosure":"no network calls, no shell commands, no background process, no credentials, no Python dependencies. Reads its policy from /etc/agent-security-guard/guard.yaml or guard.yaml in the Hermes home; loads its rule engine from /usr/local/lib/agent-security-guard/src or agent-security-guard/src in the Hermes home ahead of the pinned copy when an operator installed one there; for file tools it resolves the named path (realpath, stat) without reading the file; writes its audit trail (mode 0600) to $XDG_STATE_HOME/agent-security-guard. Sees tool calls, not what runs inside a shell command; not a sandbox.","category":"tools","platforms":[],"maintainer":"xMannixx","author":"xMannixx","version":"0.4.4","requires_hermes":">=0.21.6","repo":"https://github.com/xMannixx/Agent-Security-Guard","docs":"https://github.com/xMannixx/Agent-Security-Guard","tools":[],"hooks":["pre_llm_call","pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Sees tool calls, not what happens inside a shell command; the approval prompt after outside content is the protection there.; Messaging tools (send_message) are audited, not stopped, also when the text holds a secret.; Browser actions (browser_exec) and input to a running process (process_manage) are not told apart from reading; third-party tools it does not know stay free after outside content unless declared in tool_tiers or mode is strict.; One audit trail per OS user; Hermes profiles each read their own guard.yaml but share the trail.","state":"merged","pr":151810,"prs":[{"n":151810,"state":"merged","created":"2026-11-09T09:30:57Z"}],"created":"2026-11-09T09:30:57Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":["https://x.com/Perry2096581714/status/2119758994139185266"],"youtube":[],"thumb":null},{"name":"dress-rehearsal","title":"dress-rehearsal","summary":"Rehearse a task before it touches anything: /rehearse on, then give Hermes the job. Reads run for real; every side effect (file writes and edits, modifying shell commands, messages, schedules, any tool not on a read-only list) is recorded into a numbered script instead of running. /rehearse shows the script with diffs and risk flags, /rehearse drop strikes steps, /rehearse go replays the kept calls exactly as recorded with no model in the loop, in the folder they were rehearsed in, stops at the first failure (resumable) and refuses any file that changed since the rehearsal.","disclosure":"hooks pre_tool_call (blocks and records side-effecting calls only while armed) and pre_llm_call (a short rehearsal note only while armed); one slash command; stores one script per profile, including tool arguments, in its plugin state; on /rehearse go dispatches the approved calls, plus read_file on files it is about to overwrite, through Hermes's tool registry, where Hermes's own approval and write guards still apply but other plugins' pre_tool_call hooks do not run; read-only git commands still honour the repository's own diff.external/textconv config while armed; no network calls, no subprocesses, no dependencies.","category":"tools","platforms":[],"maintainer":"kawsthingz","author":"kawsthingz","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/kawsthingz/hermes-dress-rehearsal","docs":"https://github.com/kawsthingz/hermes-dress-rehearsal","tools":[],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151804,"prs":[{"n":151804,"state":"merged","created":"2026-11-09T09:22:22Z"}],"created":"2026-11-09T09:22:22Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/kawsthingz/hermes-dress-rehearsal/392fc16e7b7057e71f8dfd42b90eefc9cb1b3b28/screenshots/rehearsal-script.png","https://raw.githubusercontent.com/kawsthingz/hermes-dress-rehearsal/392fc16e7b7057e71f8dfd42b90eefc9cb1b3b28/screenshots/rehearsal-go.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dress-rehearsal.webp"},{"name":"ember-radar","title":"Ember Radar","summary":"Ember, the Solana launchpad where every coin is paired with a tokenized stock or a blue chip and its fees go to holders, burns, a lotto or a trader, inside Hermes: ten read-only tools (discover coins, a coin's whole card, holders, trades, fee payouts, the live tape, the fomode traders board, the stock pairs), a per-profile watchlist whose notable moves Hermes whispers at the start of a turn, /ember in any session, an Ember daily-brief Automation Blueprint and two research skills. No keys, no wallet: HTTPS reads of embercurve.fun's public API, the watchlist in the plugin's own data dir.","disclosure":"","category":"tools","platforms":[],"maintainer":"sicutdeusvult","author":"sicutdeusvult","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/sicutdeusvult/ember-radar","docs":"https://github.com/sicutdeusvult/ember-radar#readme","tools":["ember_markets","ember_coin","ember_holders","ember_trades","ember_fees","ember_feed","ember_fomo_board","ember_pairs","ember_watch","ember_pulse"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151799,"prs":[{"n":151799,"state":"merged","created":"2026-11-09T09:15:04Z"}],"created":"2026-11-09T09:15:04Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/sicutdeusvult/ember-radar/36299e76b6db93867db7d08a3ed041d3289d572a/docs/banner.png","https://raw.githubusercontent.com/sicutdeusvult/ember-radar/36299e76b6db93867db7d08a3ed041d3289d572a/docs/ember-top.png","https://raw.githubusercontent.com/sicutdeusvult/ember-radar/36299e76b6db93867db7d08a3ed041d3289d572a/docs/ember-card.png","https://raw.githubusercontent.com/sicutdeusvult/ember-radar/36299e76b6db93867db7d08a3ed041d3289d572a/docs/ember-tool.png","https://github.com/user-attachments/assets/f7cb9343-d1b6-48f4-b9e0-761a185137bc","https://github.com/user-attachments/assets/47c0d06b-1346-42fd-a811-0dccd411fc8b","https://github.com/user-attachments/assets/6004f505-2c80-47c6-bd94-ecc8ed27cbff"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ember-radar.webp"},{"name":"esp32-debug","title":"ESP32 Debug","summary":"Read-only ESP32 debugging: find ESP32 boards on serial ports, read chip info, capture a bounded serial log, and decode panic backtraces to function and file:line against a hash-checked ELF.","disclosure":"runs esptool (read-only flash-id/chip-id; resets the board, only when the call sets confirm_reset=true) and the Espressif addr2line as subprocesses with a minimal environment and the plugin data dir as working directory; opens the serial port the model names; reads the .elf path the model names and returns a few source lines around each decoded frame from the files that ELF's debug info points to; keeps the last redacted capture in <hermes home>/plugin-data/esp32-debug; no network calls.","category":"tools","platforms":[],"maintainer":"snakeyear","author":"snakeyear","version":"0.1.3","requires_hermes":">=0.23.0","repo":"https://github.com/snakeyear/hermes-esp32-debug","docs":"https://github.com/snakeyear/hermes-esp32-debug#readme","tools":["esp32_list_ports","esp32_chip_info","esp32_serial_capture","esp32_decode_backtrace"],"hooks":[],"middleware":[],"env":[],"known_issues":"esp32_decode_backtrace needs the Espressif toolchain (Arduino-ESP32 core, PlatformIO or ESP-IDF) and the .elf of the flashed build.; esp32_chip_info runs esptool, which resets the board; it requires confirm_reset=true.; Close Arduino Serial Monitor / idf.py monitor first; an open port returns 'port_busy'.","state":"merged","pr":151794,"prs":[{"n":151794,"state":"merged","created":"2026-11-09T09:02:08Z"}],"created":"2026-11-09T09:02:08Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"inboxapp","title":"Inboxapp","summary":"Inboxapp, the shared inbox and CRM for X, LinkedIn and WhatsApp DMs, through Inboxapp's official MCP server (Streamable HTTP at https://mcp.inboxapp.com/mcp): list, search and read threads; send, edit, unsend and react to messages from the user's connected accounts; update contacts (status, tags, notes, valuation, assignee); archive, assign and delete threads; manage the team's tags and statuses. Bundles four skills: inboxapp (connect and pick the right skill), triage, reply and pipeline. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to Inboxapp's server at mcp.inboxapp.com, and the tool set is served by that server at runtime, so it is not covered by the pinned sha. It sends, edits and unsends real messages from the user's linked X, LinkedIn and WhatsApp accounts and can delete threads, tags and statuses; the agent gets the same access as the user in the chosen team. Sign-in is by OAuth on inboxapp.com (token kept by Hermes) or an Inboxapp API token. The package marks the server untrusted, so Hermes asks before every tool not annotated read-only and refuses those tools in unattended runs; the skills may also read docs.inboxapp.com.","category":"tools","platforms":[],"maintainer":"Inboxapp","author":"PicchiKevin","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/InboxHQ/inboxapp-ai-toolkit","docs":"https://docs.inboxapp.com/v2/mcp-server","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Hermes runs OAuth for a remote MCP server only when config.yaml sets auth: oauth, which a package cannot set. Add mcp_servers.inboxapp with url https://mcp.inboxapp.com/mcp, auth: oauth and trust: untrusted to ~/.hermes/config.yaml, then run hermes mcp login inboxapp. That entry replaces the package's server, so keep trust: untrusted in it.; Needs an Inboxapp team with API v2 access, which is in private rollout; the server answers 404 for teams without it.","state":"merged","pr":151795,"prs":[{"n":151795,"state":"merged","created":"2026-11-09T09:02:08Z"}],"created":"2026-11-09T09:02:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"idle-compact","title":"idle-compact","summary":"Background compaction for idle chats before prompt-cache expiry — zero waiting, cache-warm summaries, per-model TTLs.","disclosure":"","category":"memory","platforms":[],"maintainer":"npetroff24","author":"npetroff24","version":"0.9.18","requires_hermes":"","repo":"https://github.com/npetroff24/hermes-plugin-idle-compact","docs":null,"tools":[],"hooks":["on_session_end","post_api_request","pre_api_request"],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"open","pr":151785,"prs":[{"n":151785,"state":"open","created":"2026-11-09T08:47:54Z"}],"created":"2026-11-09T08:47:54Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"audionotes","title":"Audionotes","summary":"Search and read your Audionotes voice notes, meeting transcripts and AI summaries through Audionotes' hosted MCP server (Streamable HTTP at https://api.audionotes.app/mcp, OAuth 2.1 with PKCE and dynamic client registration, scope notes:read, paid Audionotes account required). Four read-only tools (search_notes, list_notes, list_folders, get_note) plus the retrieve-notes skill, which tells the agent to cite the notes it used and to keep generated summaries apart from source transcripts. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Audionotes' hosted server (api.audionotes.app) and reads the signed-in user's own notes; the tool set is served by that server at runtime and is not covered by the pinned sha. Note titles, summaries and transcripts that match a request enter the session context and are sent to the user's model provider. The tools cannot create, edit, delete or share notes. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted; all four tools are annotated read-only.","category":"tools","platforms":[],"maintainer":"Audionotes","author":"aphasingnirvana","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/1811LabsYT/audionotes-claude-plugin","docs":"https://github.com/1811LabsYT/audionotes-claude-plugin#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151784,"prs":[{"n":151784,"state":"merged","created":"2026-11-09T08:46:38Z"}],"created":"2026-11-09T08:46:38Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kestra-oncall","title":"Kestra On-Call","summary":"Puts Hermes on call for Kestra. When an execution in an allowed namespace fails, Hermes reads the failed task, its error logs and what changed since the last good run, proposes the smallest fix to the flow and asks you in chat. After one approval it saves the fix as a new flow revision, replays the failed execution from the task that failed (tasks that already succeeded are not rerun), follows the replay and checks the result. A failed replay restores the previous revision if the flow is still at the fixed one. Kestra Pause tasks become chat questions you can answer from any Hermes surface. A Kestra on-call dashboard tab and Desktop pane list incidents, proposals and pauses (read-only).","disclosure":"network: only the Kestra URL you configure (kestra_url, HTTPS required except for loopback and explicitly allowed private hosts), with the Kestra credentials you give Hermes (KESTRA_USERNAME and KESTRA_PASSWORD or KESTRA_API_TOKEN, read through Hermes secret scope). No other host, no telemetry. Writes to Kestra: a flow update, a replay, a rollback to the previous revision and resume or kill of a paused execution. Each needs a person: the typed command /kestra apply <id> <hash> (the hash must match the stored proposal) or Hermes's approval card for the two write tools with the whole stored diff, bound to the proposal hash. Diffs too long to read in full are refused. The write tools refuse in webhook, cron, single-query and unknown surfaces and the model-driven path refuses while Hermes approvals are bypassed. Fails closed: an empty namespaces setting allows nothing and protected_flows are diagnosis-only. Stored data: incidents, flow sources, error logs, task outputs, diffs, proposals and decision records in the plugin's profile-scoped SQLite database. Data sent elsewhere: the tools return flow sources, error logs, task outputs and execution inputs to the model, so they go to the profile's LLM provider. The dashboard routes under /api/plugins/kestra-oncall only read and show diffs and logs to anyone who can open the Hermes dashboard. hermes kestra-oncall setup --apply adds one named webhook route to config.yaml and never deploys a Kestra flow. Anyone holding WEBHOOK_SECRET can start a read-only model run against your Kestra. AI-assisted implementation.","category":"automation","platforms":[],"maintainer":"zkasuran","author":"zkasuran","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/zkasuran/hermes-kestra-oncall","docs":"https://github.com/zkasuran/hermes-kestra-oncall#readme","tools":["kestra_status","kestra_incident_open","kestra_incidents","kestra_propose_fix","kestra_apply_fix","kestra_pauses","kestra_pause_decide"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Kestra has no compare-and-set on flow updates, so the check-then-write window is narrowed by a fresh re-read and a read-back, not removed.; Slash-command writes are typed approvals (/kestra apply <id> <hash>) because ctx.dispatch_tool does not run pre_tool_call hooks on Hermes main or v0.23.0 and a plugin command has no way to raise an approval card in a chat.; Model-driven writes are refused while Hermes approvals are bypassed (--yolo, /yolo, approvals.mode: off). The check imports tools.approval.is_approval_bypass_active, which hermes plugins validate reports as one non-public import.; Built for plugins.isolation: in_process (Hermes's default). Host isolation skips CLI registration and was not tested.; Tested on Kestra 2.0.9 only. A failed Loop cannot be replayed on that version and a failed Subflow is diagnosis-only.; The end-to-end run used Hermes main at c3354ea. On v0.23.0 scenarios S1, S1b, S2 and S3 passed, as did validate, doctor and the live plugin test.","state":"merged","pr":151777,"prs":[{"n":151777,"state":"merged","created":"2026-11-09T08:26:35Z"}],"created":"2026-11-09T08:26:35Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/zkasuran/hermes-kestra-oncall/9714ac0d65ec1c887c7b250ec6f8709791ee5e25/assets/banner.png","https://raw.githubusercontent.com/zkasuran/hermes-kestra-oncall/9714ac0d65ec1c887c7b250ec6f8709791ee5e25/assets/01-chat-diagnosis.png","https://raw.githubusercontent.com/zkasuran/hermes-kestra-oncall/9714ac0d65ec1c887c7b250ec6f8709791ee5e25/assets/02-kestra-replay.png","https://raw.githubusercontent.com/zkasuran/hermes-kestra-oncall/9714ac0d65ec1c887c7b250ec6f8709791ee5e25/assets/03-dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/kestra-oncall.webp"},{"name":"meridian","title":"Meridian","summary":"Finds and verifies the implicit state machines hiding in a codebase; enforces the accepted ones in CI. Meridian discovers status/state fields, anchors every state and transition to file:line (Python AST; TS/JS lexical, unguarded), flags unreachable and dead states, and gates on a human-reviewable .meridian.yaml spec (check exits 1 on violation, 2 when nothing is enforced). Every verdict is SHA-256 hash-chained into an append-only ledger for audit. No model calls, no network, no dependencies beyond stdlib.","disclosure":"post_tool_call observes tools whose names contain write/edit/patch/replace/create/editor and re-runs the local analyzer only when a .meridian.yaml governs the repo (advisory; never blocks or approves); ledger stores machine ids, verdict counts and file:line anchors (never file contents) under HERMES_HOME/plugin-data/meridian/; no telemetry; no background processes.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"unifyWeb3","author":"unifyWeb3","version":"1.0.2","requires_hermes":">=0.22.0","repo":"https://github.com/unifyWeb3/meridian","docs":"https://github.com/unifyWeb3/meridian#readme","tools":["meridian_scan","meridian_verify","meridian_diagram","meridian_spec","meridian_ledger","meridian_report"],"hooks":["post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151776,"prs":[{"n":151776,"state":"open","created":"2026-11-09T08:26:15Z"}],"created":"2026-11-09T08:26:15Z","late":false,"said":true,"update":false,"discussion":6,"images":["https://raw.githubusercontent.com/unifyWeb3/meridian/3587fd53ed45f070f24adf3675cfa002a53ac481/docs/banner.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"keepvoice-hermes","title":"KeepVoice for Hermes","summary":"Start a KeepVoice voice-cleanup job from an authorized upload, track creator review and approval, and release the final video only for the approved revision. Requires a KeepVoice agent token; media processing and human review stay in KeepVoice.","disclosure":"sends your KeepVoice agent token, the upload ID, a rights confirmation and the clip-provenance text you give to https://keepvoice.yablokolabs.com (the author's hosted service; media processing and human review happen there, no media leaves through the plugin). The rights confirmation is passed by the model, so confirm it yourself before asking the agent to submit. On CLI, TUI, Desktop and ACP the time-limited signed download link is returned into the session and stays in its history; on messaging platforms it is withheld. No telemetry, no background processes.","category":"voice","platforms":[],"maintainer":"yablokolabs","author":"yablokolabs","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/yablokolabs/keepvoice-hermes","docs":"https://github.com/yablokolabs/keepvoice-hermes","tools":["keepvoice_submit","keepvoice_status","keepvoice_export"],"hooks":[],"middleware":[],"env":["KEEPVOICE_AGENT_TOKEN"],"known_issues":"The signed artifact link is withheld on public surfaces (CLI, TUI, Desktop, ACP); open the review page in KeepVoice instead.; Live use needs a KeepVoice agent token for the active Hermes profile and an upload the creator is authorized to process.","state":"merged","pr":151759,"prs":[{"n":151759,"state":"merged","created":"2026-11-09T08:03:00Z"}],"created":"2026-11-09T08:03:00Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-session-signal","title":"Session Signal","summary":"SDK-backed Working labels and titlebar navigation for visible Hermes Desktop sessions. Native row layout stays under Hermes control. Input/Done deferred pending SDK support. Desktop-only; no tools, hooks, middleware, direct network calls, or env vars.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"raitoxlol","author":"raitoxlol","version":"0.3.0","requires_hermes":"","repo":"https://github.com/raitoxlol/hermes-session-signal","docs":"https://github.com/raitoxlol/hermes-session-signal#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151755,"prs":[{"n":151755,"state":"merged","created":"2026-11-09T07:59:58Z"}],"created":"2026-11-09T07:59:58Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"picky","title":"Picky","summary":"Picks the best place to sleep (tonight or for your dates) and the best ride there, then sets up the reservation: real OpenStreetMap stays auto-ranked by OSRM drive time with a one-line why and backups, Uber/Bolt/Lyft options with rough fare and ETA estimates, and Booking.com/Airbnb/Expedia/Google Hotels links prefilled with dates and guests. Never books, never pays, never asks for a card: you make the final tap.","disclosure":"sends the place names or coordinates you ask about to nominatim.openstreetmap.org (geocoding and a backup stay search, max 1 req/s), overpass-api.de and fallback overpass.kumi.systems (nearby OSM lodging), router.project-osrm.org (driving) and routing.openstreetmap.de (walking). When use_current_location / 'my location' is requested, also contacts ipinfo.io or ipapi.co once for a city-level approximate location (used once, never cached or stored). Returns (does not contact) www.booking.com, www.airbnb.com, www.expedia.com, www.google.com (Maps, Hotels), m.uber.com, lyft.com, bolt.eu, wa.me and www.openstreetmap.org links. No API keys, no credentials, no telemetry, no self-updater, no binaries. Map data © OpenStreetMap contributors (ODbL).","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Omimi","author":"decentralpapi","version":"0.2.0","requires_hermes":"","repo":"https://github.com/decentralpapi/picky","docs":"https://github.com/decentralpapi/picky#readme","tools":["picky_tonight","picky_stay","picky_ride","picky_reserve"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151752,"prs":[{"n":151752,"state":"merged","created":"2026-11-09T07:55:55Z"}],"created":"2026-11-09T07:55:55Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/decentralpapi/picky/58501e01835fa78355be1f76543ff2795f542573/previews/tonight-lagos.png","https://raw.githubusercontent.com/decentralpapi/picky/58501e01835fa78355be1f76543ff2795f542573/previews/reserve-lagos.png","https://raw.githubusercontent.com/decentralpapi/picky/58501e01835fa78355be1f76543ff2795f542573/previews/stay-dates-lagos.png","https://raw.githubusercontent.com/decentralpapi/picky/58501e01835fa78355be1f76543ff2795f542573/previews/ride-london.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/picky.webp"},{"name":"sentinel","title":"SENTINEL OS","summary":"Local runtime policy, redacted execution history, supported-file recovery, agent preflight tools and a runaway breaker, with Telegram-ready /sentinel commands. Trusted hooks, not an OS sandbox; native approval modes apply and backups retain original bytes.","disclosure":"","category":"tools","platforms":["windows","linux","macos"],"maintainer":"folarihn","author":"folarihn","version":"0.2.2","requires_hermes":">=0.21.5","repo":"https://github.com/folarihn/Sentinel","docs":null,"tools":["sentinel_preflight","sentinel_scope","sentinel_checkpoint"],"hooks":["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_start","subagent_stop","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"Trusted in-process hooks, not an OS sandbox; protection depends on the plugin being enabled and loaded.; Native Hermes approval modes stay authoritative; YOLO can skip approval escalation but never turns a Sentinel BLOCK into an allow.; Shell analysis is conservative; directory-scoped missions block shell work that cannot be confined.; Recovery covers supported local files only; it cannot undo remote APIs, emails, deployments or database writes.; Checkpoint backups keep original file bytes in the local state folder; protect it with OS permissions.; Delivery of /sentinel replies and alerts inside the Telegram app is not yet verified end to end.","state":"merged","pr":151750,"prs":[{"n":151750,"state":"merged","created":"2026-11-09T07:50:33Z"}],"created":"2026-11-09T07:50:33Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/folarihn/Sentinel/525fd7a1c8a9eb99c03270c2ab57039378bc132a/docs/images/overview-desktop.jpg","https://raw.githubusercontent.com/folarihn/Sentinel/525fd7a1c8a9eb99c03270c2ab57039378bc132a/docs/images/guard-desktop.jpg","https://raw.githubusercontent.com/folarihn/Sentinel/525fd7a1c8a9eb99c03270c2ab57039378bc132a/docs/images/guard-mobile.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sentinel.webp"},{"name":"gsc-wizard","title":"GSC Wizard","summary":"Google Search Console, Bing Webmaster, Google Analytics 4, Merchant Center and Yandex Webmaster through GSC Wizard's hosted MCP server (Streamable HTTP at https://mcp.gscwizard.com/mcp, OAuth sign-in, no keys in config): 130+ tools for search analytics, ranking changes, anomaly and change-point detection, content decay, cannibalization, CTR curves, URL inspection and indexing tracking, sitemaps, IndexNow, Core Web Vitals, migrations, forecasts, GA4 reports and Merchant Center listings. Bundles 34 workflow skills (site audit, traffic drop, weekly report, quick wins, content decay, indexing health and more). Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to GSC Wizard's hosted MCP server (mcp.gscwizard.com), which reads the Google Search Console, GA4, Merchant Center, Bing Webmaster and Yandex Webmaster accounts you connected to GSC Wizard and logs each call (tool, property, status, duration; arguments of write calls only) for 7 days; the tool set is served by that server at runtime and is not covered by the pinned commit. Write tools (site/tag management, IndexNow and sitemap submission, URL inspection batches, shared reports and client access, redirect mappings, deletes) exist; the package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+), which opens a browser and a localhost callback port on first use and stores OAuth tokens under ~/.mcp-auth. Requires a GSC Wizard paid plan or trial.","category":"tools","platforms":[],"maintainer":"GSC Wizard","author":"jbobbink","version":"1.1.2","requires_hermes":">=0.21.6","repo":"https://github.com/gscwizard/hermes-plugin","docs":"https://github.com/gscwizard/hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151749,"prs":[{"n":151749,"state":"merged","created":"2026-11-09T07:50:31Z"}],"created":"2026-11-09T07:50:31Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"briq","title":"briq","summary":"Run Hermes' terminal, file and execute_code tools in a briq sandbox, a microVM with its own disk, instead of on this machine. Select it with terminal.backend: briq.","disclosure":"every command and file operation is sent over HTTPS to the briq API (https://api.briq.cloud, or the URL in BRIQ_API_URL) and runs inside the sandbox; Hermes' file sync uploads the credential, skill and cache files it syncs for every remote backend to that sandbox; the sandbox has outbound network access; a sandbox the plugin creates is billed to the briq account of the key and sleeps when idle (terminal.briq_sleep); at cleanup it is stopped and kept with its disk when container_persistent is true (the default), its id recorded in a small JSON file under the Hermes sandbox directory so the next session reuses it, or destroyed when it is false. The API key is read only through agent.secret_scope.get_secret (BRIQ_API_KEY), is stripped from the environment of every command, and is never written to disk or logged. The plugin sends no environment variables into the sandbox and makes no network calls other than to the briq API. It imports private Hermes modules for its environment base classes (tools.environments.base, base_output and file_sync), as the built-in remote backends do.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"briq-cloud","author":"goums","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/briq-cloud/hermes-briq","docs":"https://github.com/briq-cloud/hermes-briq#readme","tools":[],"hooks":[],"middleware":[],"env":["BRIQ_API_KEY"],"known_issues":"A running command cannot be interrupted: cancelling a command stops the sandbox, and the next command wakes it.; A command longer than about 6 KB, or one that reads stdin, is staged as a file in the sandbox first.; Imports private Hermes modules (tools.environments.*); a Hermes release can change them.","state":"merged","pr":151740,"prs":[{"n":151740,"state":"merged","created":"2026-11-09T07:37:01Z"}],"created":"2026-11-09T07:37:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"second-hands","title":"Second Hands","summary":"Hands-on task coach: a live camera pane in Hermes Desktop watches your hands step by step and says STOP (on screen, out loud, in chat) before a costly or dangerous mistake. Mistakes must repeat across frames and high-risk STOPs are double-checked by a second model. Demo mode needs no camera or model calls.","disclosure":"camera frames (downscaled JPEGs, ~every 2 s while a session is live) and step text go to the user's configured model provider through ctx.llm on the plugin's own auxiliary slots; optional web research uses Hermes's own web_search/web_extract tools; one background thread per live session (stops on finish or after 30 idle minutes); files only under plugin-data/second-hands; no network calls of its own, no shell, no credentials, no telemetry, no self-update.","category":"desktop","platforms":[],"maintainer":"zaxcoraider","author":"zaxcoraider","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/zaxcoraider/hermes-second-hands","docs":"https://github.com/zaxcoraider/hermes-second-hands","tools":["second_hands_start","second_hands_status","second_hands_finish"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151736,"prs":[{"n":151736,"state":"merged","created":"2026-11-09T07:30:45Z"}],"created":"2026-11-09T07:30:45Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/banner.png","https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/pane-stop.png","https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/chat-card.png","https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/alert-lithium.png","https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/report.png","https://raw.githubusercontent.com/zaxcoraider/hermes-second-hands/b9cd7437726b8452ea697d226174fdaf8597ea03/docs/chat-card-done.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/second-hands.webp"},{"name":"agent-latency-budget","title":"Agent Latency Budget","summary":"Per-session tool latency observability for Hermes Agent. A pre/post tool hook records duration_ms, latency_budget_check returns pass/fail against a budget, and latency_budget_report returns p50/p95/max plus the slowest tool. No network access, no credentials, no core overrides; state is in-memory and bounded to 200 calls per session.","disclosure":"","category":"tools","platforms":[],"maintainer":"qawine","author":"qawine","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/qawine/agent-latency-budget","docs":"https://github.com/qawine/agent-latency-budget#readme","tools":["latency_budget_check","latency_budget_report"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151732,"prs":[{"n":151732,"state":"merged","created":"2026-11-09T07:24:39Z"}],"created":"2026-11-09T07:24:39Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"brickfact","title":"Brickfact LEGO Shopping","summary":"Find LEGO sets, compare regional retailer offers and inspect recorded retail price history with Brickfact. Supports nine delivery markets. Portable Agent Plugin with a public Streamable HTTP MCP server and shopping workflow skill.","disclosure":"tool calls send shopping inputs (search text, market, set IDs, budgets) to mcp.brickfact.com; an optional Python standard-library helper makes the same calls when run explicitly; the hosted service records aggregate operational counts (see its privacy policy); results link to Brickfact comparison pages containing disclosed affiliate links. No account access, purchases, background processes or locally stored credentials.","category":"tools","platforms":[],"maintainer":"brickfact-com","author":"mo-tech55","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/brickfact-com/agent-skills","docs":"https://github.com/brickfact-com/agent-skills","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151731,"prs":[{"n":151731,"state":"merged","created":"2026-11-09T07:22:21Z"}],"created":"2026-11-09T07:22:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"faultline","title":"Faultline","summary":"Local API flight recorder for debugging HTTP services with Hermes. The agent starts a loopback reverse proxy in front of your service, captures every request and response (auth headers and secret JSON fields redacted before storage), learns an OpenAPI 3.1 contract from healthy traffic and flags drift (type changes, missing fields, 5xx, latency regressions), injects chaos faults (429/5xx, latency, truncated JSON), and after a fix replays the exact failing request to prove 500 -> 200. Ships six tools, a tool_execution middleware, /faultline and `hermes faultline` commands, a bundled skill, a Faultline tab in the web dashboard, and a Hermes Desktop studio page, waterfall pane, status chip and inline ::faultline-trace card.","disclosure":"the proxy listens on 127.0.0.1 only and forwards to the target_url you give it (normally local; any http(s) host is accepted except literal link-local, cloud-metadata and reserved addresses and the cloud-metadata hostnames, and the URL may not carry a query, fragment or credentials); replay re-sends captured requests to the upstream they were recorded from only (the agent cannot choose another host), resolves it first and refuses link-local and cloud-metadata addresses, reaches loopback/private targets only when the owner enables the allow_local_replay setting (off by default), and replaying a POST repeats its side effects; captured traffic, contracts and chaos rules are stored in SQLite under $HERMES_HOME/plugin-data/faultline/; each running proxy is a daemon thread in the Hermes process; no telemetry, no other network calls, no credentials read, no shell commands, no Python dependencies.","category":"tools","platforms":["linux","macos"],"maintainer":"bigmantech001","author":"bigmantech001","version":"0.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/bigmantech001/Faultline","docs":null,"tools":["faultline_proxy","faultline_traces","faultline_replay","faultline_contract","faultline_chaos","faultline_simulate"],"hooks":["post_tool_call","on_session_start"],"middleware":["tool_execution"],"env":[],"known_issues":"Replay against a local service needs the owner setting allow_local_replay: true (off by default). faultline_simulate's built-in service is exempt because the plugin starts it itself.; Redacted auth headers are not replayed; pass fresh ones with faultline_replay(override_headers=...) for authenticated endpoints.; Compressed (gzip/br) response bodies are proxied untouched but stored as a placeholder, so schema drift is only learned from uncompressed JSON.; Chaos rules persist in the database and apply to every running proxy until removed.; Both halves ship opt-in: enable the agent half (hermes plugins enable faultline, then restart the gateway) and flip the Desktop switch in Capabilities -> Plugins.","state":"merged","pr":151720,"prs":[{"n":151720,"state":"merged","created":"2026-11-09T06:59:54Z"}],"created":"2026-11-09T06:59:54Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/bigmantech001/Faultline/d0c2b43c2b6aa7c4fed4295a47bf9c8ad87f0616/docs/screenshots/dashboard-replay.png","https://raw.githubusercontent.com/bigmantech001/Faultline/d0c2b43c2b6aa7c4fed4295a47bf9c8ad87f0616/docs/screenshots/dashboard-inspector.png","https://raw.githubusercontent.com/bigmantech001/Faultline/d0c2b43c2b6aa7c4fed4295a47bf9c8ad87f0616/docs/screenshots/dashboard-drift.png","https://raw.githubusercontent.com/bigmantech001/Faultline/4db082e297f2d3f02046b422a8f8cdb8fd29d62a/docs/screenshots/dashboard-replay.png","https://raw.githubusercontent.com/bigmantech001/Faultline/4db082e297f2d3f02046b422a8f8cdb8fd29d62a/docs/screenshots/dashboard-inspector.png","https://raw.githubusercontent.com/bigmantech001/Faultline/4db082e297f2d3f02046b422a8f8cdb8fd29d62a/docs/screenshots/dashboard-drift.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/faultline.webp"},{"name":"kairos","title":"Kairos","summary":"Your coding agent, paying attention to when you stop. Hermes was already in the room at 3am, so it knows whether the build is green and whether you are mid-thought before it says anything — then offers a wind-down against the bedtime you chose, saves your place so stopping costs nothing, and refuses to report a correlation the sample cannot support.","disclosure":"reads Hermes's own session store (state.db, read-only: message timestamps, roles and tool names, no message text) to chart when you work; `sleep_import` reads the sleep export file you or the agent name (CSV, Gadgetbridge SQLite, Xiaomi folder), and `kairos_wearable` calls only MCP servers you list in `plugins.entries.kairos.mcp_allowlist`; adds short blocks to the conversation through `pre_llm_call` (wind-down nudge, break suggestion, and once per new session the handoff note the agent saved when you last stopped, kept in the plugin's data folder); the optional quiet-hours guard can require approval for or block destructive terminal/file/code tool calls during hours you set.","category":"tools","platforms":["linux","macos"],"maintainer":"Gens-ai","author":"Joe-Kneeland","version":"0.6.0","requires_hermes":">=0.21.6","repo":"https://github.com/Gens-ai/Kairos","docs":"https://github.com/Gens-ai/Kairos#readme","tools":["sleep_log","sleep_import","kairos_activity","kairos_report","kairos_guard","kairos_goal","kairos_commitment","kairos_winddown","kairos_checkin","kairos_wearable","kairos_ping"],"hooks":["on_session_start","post_tool_call","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151719,"prs":[{"n":151719,"state":"merged","created":"2026-11-09T06:58:53Z"},{"n":153267,"state":"open","created":"2026-11-11T06:54:51Z"}],"created":"2026-11-09T06:58:53Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Gens-ai/Kairos/368ae2d9a111bca750bd3a06787f11208b207aed/docs/screenshots/pane.png","https://raw.githubusercontent.com/Gens-ai/Kairos/368ae2d9a111bca750bd3a06787f11208b207aed/docs/screenshots/settings-1.png","https://raw.githubusercontent.com/Gens-ai/Kairos/368ae2d9a111bca750bd3a06787f11208b207aed/docs/screenshots/settings-2.png","https://raw.githubusercontent.com/Gens-ai/Kairos/1f2acfab7afdca26e2fb0e669072d664700439e6/assets/marketplace.png","https://raw.githubusercontent.com/Gens-ai/Kairos/1f2acfab7afdca26e2fb0e669072d664700439e6/docs/screenshots/pomodoro-nudge.png","https://raw.githubusercontent.com/Gens-ai/Kairos/1f2acfab7afdca26e2fb0e669072d664700439e6/docs/screenshots/settings-pomodoro.png","https://raw.githubusercontent.com/Gens-ai/Kairos/1f2acfab7afdca26e2fb0e669072d664700439e6/docs/screenshots/pane.png","https://raw.githubusercontent.com/Gens-ai/Kairos/1f2acfab7afdca26e2fb0e669072d664700439e6/docs/screenshots/settings-kairos.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/kairos.webp"},{"name":"quegly","title":"Quegly","summary":"Schedule, publish and measure social media posts from Hermes through Quegly's hosted MCP server (Streamable HTTP at https://api.quegly.com/mcp, API key header): one post to any mix of Instagram, TikTok, YouTube, Facebook, X, Threads, LinkedIn, Bluesky, Pinterest and Telegram accounts, scheduled up to 90 days ahead, published now or saved as a draft, with photos, videos, carousels, stories, Pins, video covers and per-platform or per-account captions, retries of failed platforms, and post analytics. Bundles the quegly workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Quegly's hosted MCP server (api.quegly.com) with the user's Quegly API key and acts on the user's Quegly account; write tools publish or schedule posts to the user's connected social accounts and delete scheduled posts, drafts and video covers; the tool set is served by that server at runtime and is not covered by the pinned sha. The package marks the server untrusted, so Hermes asks before each non-read-only tool and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Quegly","author":"NicoGrajales","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/quegly/agent","docs":"https://github.com/quegly/agent#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151713,"prs":[{"n":151713,"state":"merged","created":"2026-11-09T06:40:16Z"}],"created":"2026-11-09T06:40:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pit-crew","title":"Pit Crew","summary":"Proactive, safety-gated car agent: live state, a \"will I be ready?\" planner, a background watcher and approval-gated commands, with Home Assistant, Teslemetry/Tessie, TeslaMate or a built-in simulated car.","disclosure":"once you switch it live with `/car live`, Pit Crew sends real commands to your vehicle (unlock, trunk, frunk, vent, Sentry-off, honk and flash go through Hermes's approval prompt and follow your approval setting), and its background watcher polls your configured Home Assistant / Teslemetry / Tessie / TeslaMate endpoint and posts alerts to the chats you bind.","category":"automation","platforms":[],"maintainer":"trevornk","author":"trevornk","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/trevornk/pit-crew","docs":"https://github.com/trevornk/pit-crew#readme","tools":["car_status","car_history","car_readiness","car_command","car_alerts","car_rules"],"hooks":["pre_tool_call","post_approval_response","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Unlock, trunk, frunk, vent, Sentry-off, honk and flash follow the user's Hermes approval setting (asked when approvals are on; not asked when off/yolo). The Advanced 'Always ask a person' setting (require_human_for) relies on Hermes' post_approval_response hook.; Only the Home Assistant tesla_fleet profile is built from recordings of a real car (verified live on a real Model Y: status, twelve no-approval commands and all seven approval-class commands, each confirmed by the car; that run had Hermes approvals off, so the approval prompt with approvals on is covered in CI only). The BMW and Kia/Hyundai profiles are verified against each integration's source and test fixtures, not run on a real car. Home Assistant removed its BMW Connected Drive integration in March 2026 (BMW blocked third-party access), so that profile only fits an install that still has the old entities; the Kia/Hyundai profile targets the kia_uvo HACS custom integration.; Home Assistant ships the Tesla Fleet Odometer, Shift state, Speed, Tire pressure and Tire pressure warning entities disabled; enable them for the odometer, the unlock/trunk motion check and the tire alerts (/car and car_status list the missing ones).; The direct Tesla adapter (Teslemetry / Tessie) is tested with mocks of tesla-fleet-api only; no live account was available. Tesla Fleet API (own developer app) works through Home Assistant; a native Fleet-direct mode waits on a Hermes OAuth enhancement.","state":"merged","pr":151709,"prs":[{"n":151709,"state":"merged","created":"2026-11-09T06:24:33Z"}],"created":"2026-11-09T06:24:33Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/trevornk/pit-crew/91dec4414b60f7a90b5bdd561d336604b1cc630e/docs/screenshots/banner.png","https://raw.githubusercontent.com/trevornk/pit-crew/91dec4414b60f7a90b5bdd561d336604b1cc630e/docs/screenshots/pit-crew-page.png","https://raw.githubusercontent.com/trevornk/pit-crew/91dec4414b60f7a90b5bdd561d336604b1cc630e/docs/screenshots/live-confirmed.png","https://raw.githubusercontent.com/trevornk/pit-crew/91dec4414b60f7a90b5bdd561d336604b1cc630e/docs/screenshots/alert.png"],"videos":[],"x":["https://x.com/trevornk/status/2120255895879995894"],"youtube":[],"thumb":"/hackathon/thumbs/pit-crew.webp"},{"name":"hermes-arcade","title":"Hermes Arcade","summary":"A neon arcade cabinet inside the Hermes dashboard: three playable canvas games (Snake, Breakout, Pong) with glow effects, particle bursts, chiptune synth SFX and an attract mode that plays itself. Persistent top-10 leaderboards with arcade-style initials entry are served by a FastAPI backend plugin and shared with the agent: LLM tools (arcade_games, arcade_top_scores, arcade_player_stats) let Hermes answer questions about your scores. No env vars, no hooks, no middleware; scores are stored only under the plugin's own data dir. The dashboard CSS loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com — the only third-party network call.","disclosure":"the dashboard tab loads Google Fonts (Orbitron / Press Start 2P) from fonts.googleapis.com and fonts.gstatic.com, which sends your IP and user agent to Google each time the tab opens; scores are stored locally in <HERMES_HOME>/plugin-data/hermes-arcade/scores.json.","category":"web","platforms":[],"maintainer":"leoresendedop-sys","author":"leoresendedop-sys","version":"1.0.0","requires_hermes":"","repo":"https://github.com/leoresendedop-sys/hermes-arcade","docs":"https://github.com/leoresendedop-sys/hermes-arcade","tools":["arcade_games","arcade_top_scores","arcade_player_stats"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151708,"prs":[{"n":151708,"state":"merged","created":"2026-11-09T06:20:57Z"}],"created":"2026-11-09T06:20:57Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/leoresendedop-sys/hermes-arcade/2daa7bed248a916ed2058f4574d31283a506b571/docs/assets/social-card.png","https://raw.githubusercontent.com/leoresendedop-sys/hermes-arcade/2daa7bed248a916ed2058f4574d31283a506b571/docs/assets/shots/attract.png","https://raw.githubusercontent.com/leoresendedop-sys/hermes-arcade/2daa7bed248a916ed2058f4574d31283a506b571/docs/assets/shots/breakout.png","https://raw.githubusercontent.com/leoresendedop-sys/hermes-arcade/2daa7bed248a916ed2058f4574d31283a506b571/docs/assets/shots/pong-attract.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-arcade.webp"},{"name":"provider-endpoint-healer","title":"Provider Endpoint Healer","summary":"Status and health listing for configured model endpoints. Probes them on session start and via /peh, and recommends the best candidate by health, latency, cost and capability. Reports only; it does not switch Hermes providers.","disclosure":"at session start and on `/peh` it sends an unauthenticated `GET <base_url>/models` to every endpoint listed in its settings (http/https only, no credentials sent, response body not read); it reports health and a recommendation only and does not change the provider Hermes uses.","category":"tools","platforms":[],"maintainer":"Alvinagustus","author":"Alvinagustus","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Alvinagustus/provider-endpoint-healer","docs":"https://github.com/Alvinagustus/provider-endpoint-healer","tools":[],"hooks":["on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151705,"prs":[{"n":151705,"state":"merged","created":"2026-11-09T06:11:04Z"}],"created":"2026-11-09T06:11:04Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"guild","title":"Guild","summary":"Shared skill library for a team's Hermes agents, or for one person's machines and profiles, kept in a git repository the team controls. A skill an agent saved is scrubbed of API keys, home folder paths, e-mail addresses and private IPs, pushed as a proposal branch, and merged only after a teammate approves it from the CLI, TUI or Desktop. Each member's agent then loads approved skills read-only. If an agent tries to edit a team skill, a pre_tool_call hook refuses the edit and tells it to use guild_propose. Hermes Desktop gets a Guild page to review diffs and approve or decline. Commands: `hermes guild init|join|propose|review|show|approve|reject|revert|log` and `/guild`.","disclosure":"runs local `git` subprocesses (repository hooks disabled, no terminal prompts) that fetch from and push to the remote you configure, using your existing git credentials; contacts nothing else and stores no credentials. Only the files of a skill you propose, or that your agent proposes after the approval prompt, leave the machine, with your member name in the commit. Optional background sync at session start (auto_sync_minutes, default 15, 0 turns it off). `init` and `join` add the library folder to the profile's skills.external_dirs and `leave` removes it. The write check reads tool arguments and does not inspect execute_code. The reviewer list is enforced by the plugin only; use branch protection on the git host for a server-side guarantee.","category":"tools","platforms":[],"maintainer":"Nnadijoshuac","author":"Nnadijoshuac","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Nnadijoshuac/hermes-guild","docs":"https://github.com/Nnadijoshuac/hermes-guild#readme","tools":["guild_status","guild_sync","guild_propose","guild_review"],"hooks":["pre_tool_call","on_skill_lifecycle","pre_llm_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151704,"prs":[{"n":151704,"state":"open","created":"2026-11-09T06:02:38Z"}],"created":"2026-11-09T06:02:38Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Nnadijoshuac/hermes-guild/bf5d32c7b02b1cb3b4a7fe6fdd029f09c3a956d6/docs/banner.png","https://raw.githubusercontent.com/Nnadijoshuac/hermes-guild/bf5d32c7b02b1cb3b4a7fe6fdd029f09c3a956d6/docs/desktop-review.png","https://raw.githubusercontent.com/Nnadijoshuac/hermes-guild/bf5d32c7b02b1cb3b4a7fe6fdd029f09c3a956d6/docs/desktop-library.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/guild.webp"},{"name":"decision-forge","title":"Decision Forge","summary":"Cognitive-ergonomic decision briefs and response-format router for Hermes Agent. Routes non-trivial responses across six research-grounded formats (Update, Choice, Triage, Experiment, Roadmap, People + direct bypass), lints decision hygiene (flagging fake urgency, uncalibrated confidence scores, and missing reversal conditions), compiles interactive ::preview HTML panels with data-hermes-send controls and plain-text fallbacks, bundles the decision-forge skill, and adds the interactive Decision Forge Field Guide and Handoff Composer to Hermes Desktop.","disclosure":"makes no external network calls; stores compiled brief metadata locally in <HERMES_HOME>/plugins/decision-forge/state/briefs.jsonl and writes compiled HTML panels only to the caller-supplied output_path; no telemetry, background daemons, credential reads, or self-updating code.","category":"desktop","platforms":[],"maintainer":"mintymac","author":"mintymac","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/mintymac/decision-forge","docs":"https://github.com/mintymac/decision-forge#readme","tools":["decision_route","decision_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151702,"prs":[{"n":151702,"state":"open","created":"2026-11-09T05:54:43Z"}],"created":"2026-11-09T05:54:43Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/assets/banner.png","https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/assets/v04-1440.png","https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/assets/people.png","https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/assets/v04-768.png","https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/assets/v04-375.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/decision-forge.webp"},{"name":"hyprland","title":"Hyprland Computer Use","summary":"Hyprland-native computer use for Hermes: grim capture, wlr-virtual-pointer clicks/drags/scroll, wtype text, and window-scoped target enforcement. No XWayland, accessibility tree, root, or /dev/uinput.","disclosure":"the pointer helper is C source you build locally (`make -C <plugin>/pointer`) and the plugin runs it, or the binary named in `computer_use.hyprland.pointer_bin` / `HYPRLAND_CU_POINTER_BIN`, to inject pointer events; screenshots of the screen or the targeted window go to your model like any computer-use backend; capturing a named app focuses its window; and text that starts with `-` (or that wtype refuses) is typed by pasting through the Wayland clipboard, which overwrites your clipboard and leaves that text in it.","category":"automation","platforms":["linux"],"maintainer":"mddragon18","author":"mddragon18","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/mddragon18/hyprland-computer-use","docs":"https://github.com/mddragon18/hyprland-computer-use/blob/eef766e18200338b772b14c20dbf03d603c84982/plugin/hyprland/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The pointer helper is C source and must be built locally: make -C ~/.hermes/plugins/hyprland/pointer (catalog rule 17 forbids shipping binaries).; Modifier+click and modifier+drag are unsupported: holding a key across a pointer event needs /dev/uinput.; Requires Hyprland with wlr-virtual-pointer-unstable-v1 (present in default Hyprland builds).","state":"merged","pr":151701,"prs":[{"n":151701,"state":"merged","created":"2026-11-09T05:50:13Z"}],"created":"2026-11-09T05:50:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://github.com/mddragon18/hyprland-computer-use/releases/download/v0.3.0/demo-hyprland.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"crash-lab","title":"crash-lab","summary":"Fault-injection and recovery testing for AI agents. Crash Lab manufactures the failure modes that break real agent workflows — a write that succeeds while the API reports a timeout, a malformed response, transient 503s — behind four registered tools (crash_start, crash_book, crash_inspect, crash_report), wrapping a deterministic, fictional booking service. An independent state oracle reads the persisted service state — verified by deterministic replay, so damaged or edited state is never certified — and returns PASS/FAIL/UNVERIFIED. PASS means the booking-state safety condition holds (exactly one booking, no duplicates); it does not prove the agent reasoned correctly or followed an optimal recovery procedure. Retry diagnostics (call_count, allowed_calls, reconciled, excessive_retries) are reported separately and never affect the verdict. Fully offline: the booking service is fictional — no network calls, no real bookings, payments or customer accounts; no telemetry, background services or stored credentials. Zero Python dependencies; writes JSON run files only in its own plugin-data directory. Concurrency: per-run exclusive write lock (kernel flock on POSIX; owner-release lock file elsewhere, no automatic stale-break). Integrity checking is replay-based consistency verification, not authenticated tamper-proof storage. Tested on Linux (WSL2); Windows/macOS unverified. Scenarios are fixed code constants, not a general fuzzer.","disclosure":"verdicts certify simulated service state only, not the agent's reasoning; integrity checking is replay-based consistency, not tamper-proof storage; scenarios are fixed code constants, not a general fuzzer.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"8JBern","author":"8JBern","version":"1.0.2","requires_hermes":">=0.22.5","repo":"https://github.com/8JBern/hermes-crash-lab","docs":"https://github.com/8JBern/hermes-crash-lab#readme","tools":["crash_start","crash_book","crash_inspect","crash_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152601,"prs":[{"n":152601,"state":"merged","created":"2026-11-10T11:33:35Z"},{"n":151695,"state":"merged","created":"2026-11-09T05:38:17Z"}],"created":"2026-11-09T05:38:17Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gmi-speech","title":"GMI Cloud speech synthesis","summary":"GMI Cloud text-to-speech as a tts provider (tts.provider: gmi-speech). Picks the voice, speed and output format parameters from the chosen model's schema and writes a file whose extension matches the real format; music models are excluded.","disclosure":"sends the text to speak and your GMI_API_KEY (read per request through Hermes secret scope) to console.gmicloud.ai; every synthesis spends GMI credits with no Hermes approval prompt (GMI shows its own price per model). The audio is downloaded over HTTPS from the URL GMI returns and written to the output path Hermes supplies; the model catalog is read live and cached in memory for one hour. No telemetry, shell commands, background processes, self-updates or extra Python dependencies.","category":"voice","platforms":[],"maintainer":"zkasuran","author":"zkasuran","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/zkasuran/hermes-gmi-media","docs":"https://github.com/zkasuran/hermes-gmi-media/tree/main/gmi-speech#readme","tools":[],"hooks":[],"middleware":[],"env":["GMI_API_KEY"],"known_issues":"No streaming synthesis and no Opus voice-note conversion; the file format is whatever the model offers.; Live-tested with minimax-tts-speech-2.6-turbo. GMI prices speech per 1k characters on some models and per character on others, so the plugin shows GMI price text and never totals it.; Shares one client module with gmi-image and gmi-video from the same repository; each plugin carries its own byte-identical copy.","state":"merged","pr":151694,"prs":[{"n":151694,"state":"merged","created":"2026-11-09T05:34:23Z"}],"created":"2026-11-09T05:34:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gmi-video","title":"GMI Cloud video generation","summary":"GMI Cloud text-to-video and image-to-video as a video_gen provider (video_gen.provider: gmi-video). Reads each model's live schema, so duration, resolution, aspect ratio and audio options use the values that model accepts. Anything it lacks is dropped and reported.","disclosure":"sends prompts, the optional image URLs and your GMI_API_KEY (read per request through Hermes secret scope) to console.gmicloud.ai; every generation spends GMI credits with no Hermes approval prompt (GMI shows its own price per model, and most video models bill per second). The result is downloaded from the URL GMI returns into the Hermes video cache; the model catalog is read live and cached in memory for one hour. No telemetry, shell commands, background processes, self-updates or extra Python dependencies.","category":"tools","platforms":[],"maintainer":"zkasuran","author":"zkasuran","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/zkasuran/hermes-gmi-media","docs":"https://github.com/zkasuran/hermes-gmi-media/tree/main/gmi-video#readme","tools":[],"hooks":[],"middleware":[],"env":["GMI_API_KEY"],"known_issues":"Reference images are not supported and are reported as dropped. Image-to-video takes a public http(s) URL.; Live-tested with Minimax-Hailuo-02 (text) and Minimax-Hailuo-2.3-Fast (image). Kling-Text2Video-V1.6-Standard answers that model_name is required, a parameter its schema does not list, so it is not a default.; Shares one client module with gmi-image and gmi-speech from the same repository; each plugin carries its own byte-identical copy.","state":"merged","pr":151693,"prs":[{"n":151693,"state":"merged","created":"2026-11-09T05:34:12Z"}],"created":"2026-11-09T05:34:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gmi-image","title":"GMI Cloud image generation","summary":"GMI Cloud image generation and URL-based image editing as an image_gen provider (image_gen.provider: gmi-image). Maps Hermes aspect ratios onto each model's own schema, so seedream, gemini-image, gpt-image and luma models share one backend.","disclosure":"sends prompts, the optional image URLs and your GMI_API_KEY (read per request through Hermes secret scope) to console.gmicloud.ai; every generation spends GMI credits with no Hermes approval prompt (GMI shows its own price per model). The result is downloaded from the URL GMI returns into the Hermes image cache; the model catalog is read live and cached in memory for one hour. No telemetry, shell commands, background processes, self-updates or extra Python dependencies.","category":"tools","platforms":[],"maintainer":"zkasuran","author":"zkasuran","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/zkasuran/hermes-gmi-media","docs":"https://github.com/zkasuran/hermes-gmi-media/tree/main/gmi-image#readme","tools":[],"hooks":[],"middleware":[],"env":["GMI_API_KEY"],"known_issues":"Image inputs must be public http(s) URLs; local files are refused.; Live-tested with seedream-5.0-lite and luma-uni-1.1. gemini-2.5-flash-image edits returned upstream errors from GMI during testing. GMI limits some models per day and the error says when it resets.; Shares one client module with gmi-video and gmi-speech from the same repository; each plugin carries its own byte-identical copy.","state":"merged","pr":151692,"prs":[{"n":151692,"state":"merged","created":"2026-11-09T05:34:00Z"}],"created":"2026-11-09T05:34:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"overhead","title":"Overhead","summary":"What changed at this place between these dates? Measures vegetation loss and gain, burned area by severity (dNBR) and water change in hectares anywhere on Earth from free Sentinel-2 L2A imagery, and delivers a before | after | change panel or a timelapse GIF to every surface, with an interactive before/after swipe and timelapse card in Hermes Desktop. Provides the overhead_locate, overhead_scenes, overhead_compare and overhead_timelapse tools, the overhead:earth-watch skill, and post_tool_call / transform_llm_output hooks that append the image's MEDIA line when a reply lacks it.","disclosure":"Makes unauthenticated HTTPS requests to the Earth Search STAC API by Element 84 (earth-search.aws.element84.com: scene searches by the area's bounding box, never its exact outline, and dates) and to the AWS Open Data sentinel-cogs bucket in us-west-2 (range reads of Sentinel-2 bands, with ~/.netrc never read), and, only to look up a place name, to Nominatim / OpenStreetMap (nominatim.openstreetmap.org, at most 1 request per second). STAC and Nominatim requests carry the User-Agent `overhead-hermes-plugin/0.1.0 (+https://github.com/leoresendedop-sys/overhead)`. Place lookups, the pixels read and searches over past date ranges are cached under the plugin's data folder (plugin-data/overhead: cache/ and runs/), which is not pruned automatically. The Desktop card's Open map button opens openstreetmap.org in the browser, only when clicked. Reads a system font to draw panel labels. The plugin itself needs no API keys or accounts, stores no credentials and adds no telemetry; rasterio installs only after Hermes dependency consent. For optional visual interpretation, it offers local image paths and questions for Hermes's public vision_analyze tool. If the agent calls that tool, Hermes may send the selected images and prompt to its configured native or auxiliary model provider; images may include location and date labels, and credentials, costs and privacy terms depend on the user's Hermes configuration.","category":"tools","platforms":[],"maintainer":"leoresendedop-sys","author":"leoresendedop-sys","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/leoresendedop-sys/overhead","docs":"https://github.com/leoresendedop-sys/overhead/blob/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/README.md","tools":["overhead_locate","overhead_scenes","overhead_compare","overhead_timelapse"],"hooks":["post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"The first run over a new area takes about 40 to 70 s, sometimes longer, while the imagery streams from AWS us-west-2; repeat runs take about 1 s from the cache.; The interactive Desktop card needs a Desktop build with the tool-media renderer area (main after 24 Oct 2026, or the first release after 0.22.5) and its Desktop half switched on in Capabilities → Plugins; other builds and surfaces show the panel PNG or the GIF.","state":"merged","pr":151681,"prs":[{"n":151681,"state":"closed","created":"2026-11-09T05:02:49Z"}],"created":"2026-11-09T05:02:49Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/overhead-cover.png","https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/hermes-comparison.jpg","https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/hermes-timelapse.jpg","https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/altadena-burn.jpg","https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/novo-progresso-vegetation.jpg","https://raw.githubusercontent.com/leoresendedop-sys/overhead/5ddd2e5aed0e5451f0a9c5107270770c919e1eb8/assets/manaus-water.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/overhead.webp"},{"name":"hermes-wrapped","title":"Hermes Wrapped","summary":"Your week with Hermes as a 30-second video, delivered every Sunday: what your agent did, what it cost, and how much of your time went into upkeep versus Hermes working for you. Built from Hermes's own session records by code: no model calls, no tokens, secrets and home paths stripped.","disclosure":"reads your Hermes session history (read-only) to build the video, runs a pinned `npx hyperframes@0.8.217` renderer that downloads a headless Chrome on first use, and `hermes wrapped schedule` adds a weekly cron job that delivers the video to your chosen chat with `hermes send`.","category":"general","platforms":[],"maintainer":"devpras22","author":"devpras22","version":"0.1.2","requires_hermes":">=0.22.0","repo":"https://github.com/devpras22/hermes-wrapped","docs":"https://github.com/devpras22/hermes-wrapped","tools":["wrapped_make"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151680,"prs":[{"n":151680,"state":"merged","created":"2026-11-09T05:02:04Z"}],"created":"2026-11-09T05:02:04Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-teamops","title":"TeamOps — build and run your agent team","summary":"One plugin for the full lifecycle of a multi-agent Hermes team. Deploy a whole team from a blueprint (profiles, SOULs, crons, shared kanban/mesh) with `hermes teams deploy`, verify it with Deploy Guard (preflight/smoke/rollback), watch fleet status and the mesh map, catch silent cron gaps (Cron911) and dead models (Model Guard), get a daily standup digest, and broadcast decisions across teams (mesh sync). The Agent Factory is an in-plugin template generator: from a one-line spec it extends a base blueprint with a new role or scaffolds a new team, then deploys it via the same verified pipeline (fixture fallback for demos). 16 tools plus the hermes teams CLI. Local-first: everything runs against your own HERMES_HOME; nothing leaves the machine.","disclosure":"deploying creates Hermes profiles and cron jobs; rollback deletes only teamops-prefixed profiles and files under <home>/teams/<team>/; fleet and cron scans read every profile's cron store.","category":"automation","platforms":[],"maintainer":"Dalton Wyant / AutomatedAgents","author":"agentworker33-droid","version":"","requires_hermes":">=0.21.4","repo":"https://github.com/agentworker33-droid/hermes-teamops","docs":"https://github.com/agentworker33-droid/hermes-teamops#readme","tools":["blueprint_list","team_deploy","team_verify","team_rollback","team_factory","team_status","cron_scan","model_scan","model_rollback","team_standup","mesh_sync","team_dashboard","team_dashboard_status","team_dashboard_stop","phone_intake","twilio_status"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151675,"prs":[{"n":151675,"state":"open","created":"2026-11-09T04:34:23Z"}],"created":"2026-11-09T04:34:23Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"numogram","title":"numogram: Hermes debugs your ESP32","summary":"Hermes debugs ESP32 firmware on real hardware. It watches the board's serial port, maps crash addresses to source lines from the ELF, fixes the code, builds with idf.py and flashes with esptool, then reads the log to confirm the fix. A crash wakes the session on its own. Also checks firmware GPIO use against a KiCad netlist (swapped signals, strapping, flash and USB pins) and audits chip security read-only. NUMOGRAM_PORT=virtual runs an emulated ESP32-C3 in Espressif's QEMU, so it works without a board.","disclosure":"board_build and board_flash go through Hermes's approval prompt (a pre_tool_call hook, one approval rule per tool) and are blocked when nobody can answer; a build runs ESP-IDF's export.sh, idf.py and the project's own CMake and Python scripts and writes the build directory it is given. Runs esptool, espefuse summary (read-only; the plugin has no eFuse write) and, for the virtual board only, Espressif's qemu-system-riscv32 with networking off, always with fixed argument lists, and each child gets an environment allowlist (PATH, HOME, locale, ESP-IDF variables), never Hermes's keys or tokens. Background: a serial watcher thread while watching is on, and a QEMU process for the virtual board that stops when Hermes exits. Network: none beyond loopback (unauthenticated) to its own macOS USB bridge or virtual board, or the socket:// address set in NUMOGRAM_PORT. Reads the project, build, ELF and netlist paths it is given; writes its own state only under the active Hermes profile's home (get_hermes_home() / numogram). Serial output is passed to the model as untrusted data; wake-up messages are built from fixed text and validated hex. The bridge and virtual board drop eFuse write commands. No credentials, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"zblauser","author":"zblauser","version":"0.1.2","requires_hermes":">=0.22.7","repo":"https://github.com/zblauser/numogram-hermes-plugin","docs":"https://github.com/zblauser/numogram-hermes-plugin/blob/025547ff83c073200ddf94fd2def3c8ca57e7b9e/README.md","tools":["board_build","board_pins","board_status","board_watch","board_log","board_flash","board_crash","board_audit","board_note"],"hooks":["pre_tool_call","pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"One board at a time. Building and flashing need an ESP-IDF project; board_build needs ESP-IDF where Hermes runs.; Tested end to end on an ESP32-P4 over USB-Serial/JTAG and on the emulated ESP32-C3. Other chips use the same paths but are untested on hardware; crash parsing on Xtensa chips (ESP32, S2, S3) is untested.; The macOS bridge supports boards on the chip's own USB-Serial/JTAG port, not boards behind a USB-UART bridge chip.; The virtual board needs Espressif's qemu-system-riscv32 (idf_tools.py install qemu-riscv32).","state":"merged","pr":151674,"prs":[{"n":151674,"state":"merged","created":"2026-11-09T04:34:06Z"}],"created":"2026-11-09T04:34:06Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://github.com/user-attachments/assets/17a79988-4bcf-428f-bb96-9a06b30780db","https://github.com/user-attachments/assets/d8caed4d-b43b-4260-9918-03ba14e14ad2"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/numogram.webp"},{"name":"agentstatus-index","title":"AgentStatus Index","summary":"Live public MCP Index through Carmel Labs' hosted server (Streamable HTTP at https://index.mcp.agentstatus.dev/mcp, no authentication, no keys). Search, recommend, compare, and look up public MCP servers, then call one published tool with call_indexed_tool. Bundles the agentstatus-index skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to index.mcp.agentstatus.dev. call_indexed_tool forwards one call to a public MCP server the user already picked from a search or recommendation. The Index does not store credentials. Destructive tool names are not forwarded. The tool set is served by that server at runtime and is not covered by the pinned sha. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Carmel Labs","author":"dulrajnr","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Carmel-Labs-Inc/agentstatus-mcp-index","docs":"https://github.com/Carmel-Labs-Inc/agentstatus-mcp-index#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151670,"prs":[{"n":151670,"state":"merged","created":"2026-11-09T04:16:25Z"}],"created":"2026-11-09T04:16:25Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-ready","title":"Agent Ready Website Audit","summary":"SEO and AI search audits of public web pages through WorkPods' hosted Agent Ready MCP server (Streamable HTTP at https://mcp.workpods.ai/mcp, no sign-in, no keys in config): indexing, titles, headings, schema markup, links and image alt text; AI crawler access for GPTBot, ClaudeBot, PerplexityBot and others; robots.txt, sitemaps, llms.txt and agent files; agent readiness and MCP Registry listings; local business details; site crawls of up to 50 pages; and drafted llms.txt, robots.txt rules and JSON-LD. Bundles one workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code. Every tool call goes to mcp.workpods.ai, which fetches the public pages named and records the domain and path checked (never the query string), the tool, failed check codes, the app name and a daily session code, never an IP address or page text. Each check returns a shareable report link, not indexed and deleted after 30 days. Every tool is annotated read-only except request_full_audit, which sends the user's work email and website to WorkPods; the package marks the server untrusted, so Hermes asks before it runs and refuses it in unattended runs. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"WorkPods","author":"workpodsai-agents","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/WorkPodsAgents/agent-ready","docs":"https://workpods.ai/tools/agent-ready","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151661,"prs":[{"n":151661,"state":"merged","created":"2026-11-09T03:56:28Z"}],"created":"2026-11-09T03:56:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"aitrainingdatabroker","title":"AI Training Data Broker","summary":"Ask how much AI labs pay for company data, whether it is legal to sell, how de-identification and exclusivity work, and what RL data is. Agent Plugins v1 package (plugin.json + mcp.json + one skill), configuration only.","disclosure":"every tool call goes to the public read-only MCP server at aitrainingdatabroker.com, which only reads published blog posts; no sign-in, no key, nothing written, no local commands. The package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"general","platforms":[],"maintainer":"AI Training Data Broker","author":"aitrainingdatabroker","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/aitrainingdatabroker/blog-mcp-server","docs":"https://github.com/aitrainingdatabroker/blog-mcp-server/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151660,"prs":[{"n":151660,"state":"merged","created":"2026-11-09T03:54:22Z"}],"created":"2026-11-09T03:54:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-business-brain","title":"hermes-business-brain","summary":"Offline, privacy-first business-brain engine for Hermes: 19 local tools (brain_doctor, brain_create_vault, brain_validate_vault, brain_status, brain_register_vault, brain_resolve_vault, brain_query, brain_capture, brain_knowledge_map, brain_relations, brain_references, brain_naming, brain_transcript_cycle, brain_propose, brain_card, brain_document, brain_knowledge_plan, brain_dx_apply, brain_evolution_scan) backed by a native English in-process engine that creates, validates, queries and evolves Obsidian knowledge vaults on user-provided paths, plus 21 bundled workflow skills.","disclosure":"no network calls, no telemetry, no stored credentials; all operations run locally; the engine invokes the git CLI (argv-only, no shell) for local vault-bank probing and product archive export; every other operation is plain file I/O on paths the user passes; bundled templates and schemas are synthetic.","category":"tools","platforms":[],"maintainer":"unsulabs","author":"unsulabs","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/unsulabs/hermes-business-brain","docs":null,"tools":["brain_doctor","brain_create_vault","brain_validate_vault","brain_status","brain_register_vault","brain_resolve_vault","brain_query","brain_capture","brain_knowledge_map","brain_relations","brain_references","brain_naming","brain_transcript_cycle","brain_propose","brain_card","brain_document","brain_knowledge_plan","brain_dx_apply","brain_evolution_scan"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151651,"prs":[{"n":151651,"state":"open","created":"2026-11-09T03:37:39Z"}],"created":"2026-11-09T03:37:39Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ciphervault","title":"ciphervault","summary":"Zero-knowledge secret backup for AI coding agents — masked sprawl scan, RAM-only run with exact-value output scrubbing, encrypted snapshots, pre_tool_call leak guard, and a secret source for Hermes itself.","disclosure":"`ciphervault_run` runs a model-chosen command with vault secrets in its environment after Hermes's approval prompt, and an \"always\" grant covers every later command for that program (e.g. all `bash` or `python` invocations); in a workspace with a vault, every other tool result is passed through the CipherVault CLI for scrubbing (withheld if that scrub fails) and logged by hash to the vault's audit chain, each `ciphervault_run` approval request and replicated push sends a signed audit checkpoint (entry count + head hash) to your configured operator fleet, and `hermes ciphervault bootstrap` downloads a checksum-pinned CLI binary from the author's GitHub releases.","category":"tools","platforms":[],"maintainer":"samuel-1-avson","author":"samuel-1-avson","version":"0.5.4","requires_hermes":">=0.23.1","repo":"https://github.com/samuel-1-avson/CipherVault","docs":null,"tools":["ciphervault_status","ciphervault_scan","ciphervault_run","ciphervault_push","ciphervault_recovery_drill","ciphervault_redact","ciphervault_audit"],"hooks":["pre_tool_call","transform_tool_result","post_tool_call"],"middleware":["tool_request"],"env":[],"known_issues":"","state":"merged","pr":151642,"prs":[{"n":151642,"state":"merged","created":"2026-11-09T03:19:28Z"}],"created":"2026-11-09T03:19:28Z","late":false,"said":false,"update":false,"discussion":13,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fivedive","title":"5dive app","summary":"5dive app chat for Hermes: talk to your Hermes agent from the 5dive web and mobile app (text, voice notes, files).","disclosure":"local spool folder only (0700, the agent's own user); reads the upload files the 5dive bridge names in a message; no network calls, no listener, no shell commands, no stored credentials.","category":"platform","platforms":[],"maintainer":"5dive-ai","author":"5dive-bot","version":"1.0.1","requires_hermes":">=0.19.0","repo":"https://github.com/5dive-ai/5dive-plugins","docs":"https://github.com/5dive-ai/5dive-plugins/tree/d9e8ad1ad0f6e109d54a213e743d25284389f875/plugins/dashboard/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["FIVEDIVE_SPOOL_DIR"],"known_issues":"","state":"merged","pr":151632,"prs":[{"n":151632,"state":"closed","created":"2026-11-09T03:04:29Z"}],"created":"2026-11-09T03:04:29Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-lang-tr","title":"hermes-lang-tr","summary":"Turkish (Türkçe) language pack for Hermes — core (CLI approval prompts, gateway replies, tips), TUI and Desktop. Full coverage: 3,535 core keys, 1,440 TUI keys and 5,569 Desktop keys, every key matching the English catalogs, placeholders preserved. Independent community translation prepared with AI assistance.","disclosure":"text-only catalogs plus an __init__.py whose register() is a no-op (kept so Desktop \"Install from Git\" accepts the pack); no Python logic, no network access, no stored credentials; registering the pack never changes display.language, the user opts in via config.","category":"general","platforms":[],"maintainer":"neekimyong","author":"neekimyong","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/neekimyong/hermes-lang-tr","docs":"https://github.com/neekimyong/hermes-lang-tr#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151631,"prs":[{"n":151631,"state":"merged","created":"2026-11-09T03:01:56Z"}],"created":"2026-11-09T03:01:56Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-blueprint","title":"hermes-blueprint","summary":"Turn a raw idea into a plan you can build, with the quality rules enforced in code: every verified claim quotes a page the plugin fetched, a fresh-context verifier re-checks them, the critic commits its verdict from base rates before you can push back, and estimates split agent hours, your hours and outside waits. Then /idea handoff writes a project folder and kanban cards, and a weekly re-check scores the predictions.","disclosure":"","category":"tools","platforms":[],"maintainer":"winchxyz","author":"winchxyz","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/winchxyz/hermes-blueprint","docs":"https://github.com/winchxyz/hermes-blueprint#readme","tools":["idea_phase","idea_profile","idea_research","idea_verdict","idea_plan","idea_recheck"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151630,"prs":[{"n":151630,"state":"merged","created":"2026-11-09T03:01:38Z"}],"created":"2026-11-09T03:01:38Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/winchxyz/hermes-blueprint/ee0a8d5bf19cf3341832b36b178b813f40be8d12/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-blueprint.webp"},{"name":"ga4-deploy","title":"ga4-deploy","summary":"Script the GA4 Admin API from Hermes: ga4_discover (accounts->properties->streams), ga4_channel_groupings (inspect the system Default Group, deploy readable DNF specs with automatic CNF distribution, eachScope* field mapping, inListFilter ban — it saves 200 but renders BLANK in the UI — converted to anchored FULL_REGEXP alternation, 2-custom-grouping cap enforced, PATCH-in-place replacement, read-back verification), ga4_audiences (deploy with skip-by-name idempotency, immutable-filterClauses archive+rebuild path, pagePath->pageLocation correction, orGroup-wrapper clause building), ga4_annotations (batch create with uppercase color enum, 150-char cap and title+date dedupe), ga4_enhanced_measurement (per-stream get/set with updateMask built and absent=false semantics documented). Distilled from live fleet deploys across a 27-account agency where the official docs were wrong about v1alpha vs v1beta endpoints, field names and enum values.","disclosure":"auth is a declared oauth: google grant (analytics.edit + analytics.readonly) signed in with `hermes auth add ga4deploy:google` via the user's own Google Cloud client; Hermes holds the token and the plugin never sees it; all calls are plain REST to analyticsadmin.googleapis.com / www.googleapis.com through credentialed_provider_request; the plugin stores no state; write tools support dry_run and the bundled skill requires a dry-run plan before any fleet write.","category":"other","platforms":[],"maintainer":"skeptical-agency","author":"skeptical-agency","version":"0.1.0","requires_hermes":"","repo":"https://github.com/skeptical-agency/ga4-deploy","docs":"https://github.com/skeptical-agency/ga4-deploy/blob/65e75235f17df321d426b43bbad679b5f93e4fc7/README.md","tools":["ga4_status","ga4_discover","ga4_channel_groupings","ga4_audiences","ga4_annotations","ga4_enhanced_measurement"],"hooks":[],"middleware":[],"env":["GA4DEPLOY_GOOGLE_CLIENT_ID","GA4DEPLOY_GOOGLE_CLIENT_SECRET"],"known_issues":"","state":"open","pr":151625,"prs":[{"n":151625,"state":"open","created":"2026-11-09T02:56:01Z"}],"created":"2026-11-09T02:56:01Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"scope-recall","title":"Scope Recall","summary":"Local, source-backed long-term memory: recalls what you told an agent in your own words, with when you said it, keeps earlier versions as history when you change your mind, and shares one store with your other agents (other Hermes profiles, Codex, Claude Code).","disclosure":"captured messages, assistant replies and tool results are kept in a local SQLite store under ~/.scope-recall/shared, outside the Hermes home and shared by every Hermes profile and other agent (Codex, Claude Code) you attach to it; it makes no network calls by default; if you configure a model or embedding route, message excerpts go to that endpoint within the budget you set; keys are read only through Hermes's secret routes; it starts short detached background worker processes that inherit Hermes's environment; setup sets memory.provider in config.yaml and installs two skills (scope-recall-setup, scope-recall-memory) into your Hermes skills folder.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"410979729","author":"410979729","version":"4.0.3","requires_hermes":">=0.22.5","repo":"https://github.com/410979729/scope-recall-hermes","docs":"https://github.com/410979729/scope-recall-hermes/blob/424e5703df73ea594e7a121a260371a15ab7c7ee/docs/install/hermes.md","tools":["recall","inspect","trace","profile","entity","revise","forget","status","handoff_write","handoff_list","handoff_accept","handoff_cancel"],"hooks":["pre_llm_call","api_request_error","post_tool_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151623,"prs":[{"n":151623,"state":"merged","created":"2026-11-09T02:46:53Z"}],"created":"2026-11-09T02:46:53Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"concord-for-hermes","title":"Concord for Hermes","summary":"Coordinates allowlisted GitHub existing-file writes with revision checks, verified receipts and exact-operation replay.","disclosure":"","category":"tools","platforms":[],"maintainer":"Null007Void","author":"Null007Void","version":"0.1.0","requires_hermes":">=0.21.3","repo":"https://github.com/Null007Void/concord-for-hermes","docs":"https://github.com/Null007Void/concord-for-hermes/blob/d0b0e4c1ca46d09952dc76f217b00efb4853ccc2/README.md","tools":["concord_github_write"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires the GitHub CLI and operator-configured authentication; credential delegation is disclosed for maintainer review.; Protects only enrolled tool calls sharing a coordinator database; other tools and direct GitHub writes bypass it.; Replaces existing text files only; does not create files or modify GitHub Actions workflows.","state":"merged","pr":151620,"prs":[{"n":151620,"state":"closed","created":"2026-11-09T02:43:40Z"}],"created":"2026-11-09T02:43:40Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sourcebind","title":"SourceBind","summary":"Bind one explicit business job to its current local JSON customer ID at one selected native tool's execution boundary. Default mode checks job and customer_id arguments; opt-in ID-only mode checks customer_id for registered customer-only tools while retaining the source-job and native-scope checks. Both modes reread the selected source for each protected call and retain the originating scope through public delegation and compaction events.","disclosure":"reads the user-selected local JSON with the process's OS permissions; stores the binding, check mode, absolute source path, native scope aliases and fictional demo records in profile-scoped Hermes plugin state. Source-file writers can change authoritative values. Plugin-initiated network requests, shell commands, background processes, telemetry and credentials: 0.","category":"tools","platforms":[],"maintainer":"blucca","author":"blucca","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/blucca/hermes-sourcebind","docs":null,"tools":["sourcebind_current","sourcebind_demo_update"],"hooks":["pre_tool_call","pre_llm_call","subagent_start","post_compaction"],"middleware":[],"env":[],"known_issues":"The opt-in standalone examples/native-demo.py harness imports four Hermes core symbols for its recorded demonstration: discover_plugins, get_plugin_command_handler, handle_function_call and AIAgent. The Hermes v0.23.0 validator flags those imports as version-sensitive. The installed plugin entrypoint uses public ctx registration, hooks and state APIs.","state":"merged","pr":151616,"prs":[{"n":151616,"state":"merged","created":"2026-11-09T02:31:41Z"}],"created":"2026-11-09T02:31:41Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/blucca/hermes-sourcebind/66d22478ae1526b269f968872b865e2a43843ec1/demo/cover-native.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/sourcebind.webp"},{"name":"shorts-factory","title":"shorts-factory","summary":"The 9:16 short-video pipeline as executable tools, distilled from a production pipeline shipping daily shorts across YouTube/TikTok/Instagram/Facebook/X: sf_loudness (ebur128 measure, two-pass loudnorm to -14 LUFS/-2 dBTP, sidechain music ducking with amix normalize=0, atempo), sf_concat (mixed stills+video with full in-graph fps/SAR/bt709 normalization, exact still frame counts, post-build VIDEO-STREAM duration asserts — kills the silent concat killers: vanishing overlays, dropped audio, one-frame stills), sf_captions (script-aligned word-timed punch captions rendered as Pillow PNGs — no libass/drawtext needed — with boundary-safe enable windows and pixel-diff band verification), sf_footage_audit (contact sheets, per-second brightness, full-res fine grabs, review checklist), sf_safezone (thumbnail safe band y=400..1500 checks + simulated grid crop), sf_motion_lint (deterministic build-script lint for stutter-prone zoompan/time-driven motion).","disclosure":"everything runs locally through ffmpeg/ffprobe subprocesses; the plugin stores and uses NO credentials, NO OAuth, NO API keys, and makes no network calls except an optional one-time Bebas Neue font download from github.com/google/fonts (skipped when a local font exists); requires ffmpeg+ffprobe installed on the machine (sf_status checks and explains install).","category":"tools","platforms":[],"maintainer":"skeptical-agency","author":"skeptical-agency","version":"0.1.0","requires_hermes":"","repo":"https://github.com/skeptical-agency/shorts-factory","docs":"https://github.com/skeptical-agency/shorts-factory/blob/291df7fabe603336083fd342c76ba69df015c15b/README.md","tools":["sf_status","sf_loudness","sf_concat","sf_captions","sf_footage_audit","sf_safezone","sf_motion_lint"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151610,"prs":[{"n":151610,"state":"open","created":"2026-11-09T02:20:53Z"}],"created":"2026-11-09T02:20:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hyperactive","title":"hyperactive","summary":"Hermes, but it texts you first. Keeps your goals (life > year > quarter > week), promises both ways and decisions with review dates, and speaks first on Hermes's own cron: a daily brief, check-ins, decision reviews, nudges on stalled goals, and tap cards with a recommended answer. An unanswered card is re-asked after an hour and, only if low stakes, applied an hour later as a typed action the plugin performs itself (move or schedule its own reminder, set a goal's status); money, public and irreversible calls always wait for the person. Every message names the goal it serves and /ha why explains it.","disclosure":"stores data in HERMES_HOME/plugin-data/hyperactive/; on first use or `hermes hyperactive setup` writes two 4-line shims to HERMES_HOME/scripts/ and creates two recurring cron jobs: hyperactive-pulse (no-agent, no model call) and hyperactive-brief (agent mode, one model call a day through Hermes's configured model, skipped when there is nothing to brief; brief_at empty turns it off); once set up, re-creates a missing job or shim on session start; the `hermes hyperactive` CLI runs `hermes cron` subprocesses; pre_llm_call appends a few lines of due items to turns and records a card answer when the message is exactly an option; reads Telegram reactions via gateway_platform_event. No network calls or telemetry of its own; no secrets; `hermes hyperactive uninstall` removes both jobs and shims.","category":"automation","platforms":[],"maintainer":"justin06lee","author":"justin06lee","version":"0.3.0","requires_hermes":">=0.21.7","repo":"https://github.com/justin06lee/hyperactive","docs":"https://github.com/justin06lee/hyperactive/tree/main/plugin#readme","tools":["ha_goal_add","ha_followup","ha_card","ha_commit","ha_decide","ha_status"],"hooks":["pre_llm_call","gateway_platform_event","on_session_start"],"middleware":[],"env":[],"known_issues":"A Telegram reaction answers the most recently asked card only (Hermes does not pass the delivered message id), and the reaction path has not been tested against a live bot yet.","state":"merged","pr":151607,"prs":[{"n":151607,"state":"merged","created":"2026-11-09T02:18:29Z"}],"created":"2026-11-09T02:18:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/banner.png","https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/screens/01-listens.png","https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/screens/02-speaks-first.png","https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/screens/03-low-stakes-applied.png","https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/screens/04-money-held.png","https://raw.githubusercontent.com/justin06lee/hyperactive/2f147d3e6a1a91389d4d50991b46a546b5ea804b/docs/media/screens/05-why.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hyperactive.webp"},{"name":"plur1bus","title":"PLUR1BUS Memory Engine","summary":"Profile-scoped long-term memory and Langzeitgedächtnis for Hermes: Memory Engine, semantic search and recall, automatic capture, embeddings, reranking, Semantic Lens, Layer 1.5 (Schicht 1.5), Continuity Engine, Emotion and memory dynamics, Persona Voice, consolidation, Dream Echo, Obsidian and Skill Workshop. Includes a Desktop memory browser, model and storage settings, and diagnostics.","disclosure":"records and indexes live in the active profile by default; configured remote embedding, reranker and model routes (OpenAI-compatible hosts, api.cohere.com, a local oMLX server by default) receive the text needed for their task; opt-in Jev automatic chunking sends capture text (up to 60,000 characters per message) to api.typesafe.ai; model setup downloads weights from huggingface.co; approved Skill Workshop proposals are written as skills into the profile's skills folder; the separate OpenClaw migration commands can rewrite the profile's SOUL.md and install per-user launchd/systemd/Task Scheduler jobs; an optional, user-run script builds a separately patched copy of Hermes Desktop (the plugin works without it).","category":"memory","platforms":["linux","macos","windows"],"maintainer":"Cyb3rb1ade","author":"Cyb3rb1ade","version":"7.19.3-hermes.1","requires_hermes":">=0.23.0","repo":"https://github.com/Cyb3rb1ade/openclaw-plur1bus-memory","docs":"https://github.com/Cyb3rb1ade/openclaw-plur1bus-memory/blob/59d31b693d13091358ce3401bfac707279097c08/catalog/plur1bus/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Enable PLUR1BUS and select it as the persistent memory provider in each intended profile after installation.; On Windows ARM64 use the separately published native installer; the catalog source contains no bundled native wheels.; On macOS use Apple Silicon. The standalone installer includes a workaround for the Hermes 0.23.0 filesystem synchronization issue.","state":"merged","pr":151604,"prs":[{"n":151604,"state":"merged","created":"2026-11-09T02:11:38Z"}],"created":"2026-11-09T02:11:38Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sapiens-sinteticos","title":"Sapiens Sintéticos","summary":"Operate your Sapiens Sintéticos account from Hermes: images, video, music, voice, characters, your repertoire and the members' forum, through the hosted Sapiens MCP server (Streamable HTTP, OAuth 2.1 + DCR), with the 18 house skills bundled (prompting rules, engine choice, cost traps, publishing flows). Portable Agent Plugins v1 package (skills/ only; the server is added by the sign-in command below).","disclosure":"hosted-only connector with no local code; every tool call goes to the Sapiens server at https://www.sapiensinteticos.com/api/mcp/mcp, added with `hermes mcp add sapiens --auth oauth` (the README then has you set `trust: untrusted` on mcp_servers.sapiens so Hermes asks before each generation, publish or delete call); generation tools debit Sinapses, the prepaid credit of your Sapiens account, and publishing tools post to the members' forum and to social accounts you connected on Sapiens, only when asked; in companion mode the agent speaks in the persona your Sapiens account sends and, after telling you once per session, saves condensed notes of your conversation (your decisions, preferences, what you tell about yourself) to your Sapiens notebook, which you can view and delete on the site, and skips them if you say no; on request the skills write `.claude/skills/sapiens-voz/SKILL.md` and `.claude/skills/sapiens-soul/SKILL.md` into the current project; the skills are in Brazilian Portuguese.","category":"tools","platforms":[],"maintainer":"inhabitants","author":"inhabitants","version":"1.113.1","requires_hermes":"","repo":"https://github.com/inhabitants/sapiens-mcp","docs":"https://www.sapiensinteticos.com/en/connect-claude","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign-in needs one extra command after install, because a portable plugin cannot declare an OAuth MCP server: hermes mcp add sapiens --url https://www.sapiensinteticos.com/api/mcp/mcp --auth oauth --connect-timeout 300. Then set trust: untrusted on mcp_servers.sapiens in config.yaml, so Hermes asks before each generation, publish or delete call.; A new user needs a Sapiens Sintéticos account; the sign-in page links to the invite request.","state":"merged","pr":151602,"prs":[{"n":151602,"state":"merged","created":"2026-11-09T02:05:21Z"}],"created":"2026-11-09T02:05:21Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-x-bookmarks","title":"X Bookmarks","summary":"Reads your own X bookmarks (long posts and X Articles in full) through the official X API with your own X app, sorts them with your Hermes model (category, tags, kind, priority, summary) and exports them to a board on your Desktop, Obsidian notes, a Notion database or a Google Doc. A weekly digest (best bookmarks numbered, 3 post ideas) arrives in your chat; reply \"task 3\" or \"skill 2\" to turn an item into a task or a Hermes skill.","disclosure":"calls api.x.com (read-only, keys of your own X app from the Hermes .env via secret scope, or Hermes' X OAuth 2.0 sign-in, or `xurl token` when you pick the xurl sign-in, which runs that CLI); sends post text to your configured Hermes model; only when you export there: Notion through Hermes' Notion connector (ctx.call_mcp to the notion MCP server, only if you add it to this plugin's mcp_allowlist; creates the database, two boards and pages, updates those pages) or api.notion.com with an optional XBM_NOTION_TOKEN, and docs.googleapis.com through Hermes' Google sign-in (your own Desktop client, scope drive.file only); writes an 'X Bookmarks' folder on your Desktop (or export_dir) and notes into your Obsidian vault's 'X Bookmarks' folder, and reads Obsidian's obsidian.json to find the open vault; bookmarks, labels, export ids, digests, tasks and skill drafts are stored in plugin data; only on your command it creates one Hermes cron job (/xbm schedule, through cronjob_manage; it stays until /xbm unschedule) and Hermes skills (/xbm skill N save, through skill_manage, subject to Hermes' approval); a pre_llm_call hook adds a one-line note only to a message that is just \"task N\", \"skill N\" or \"done N\" after a recent digest; no credentials stored, no telemetry, no background process of its own.","category":"tools","platforms":[],"maintainer":"winchxyz","author":"winchxyz","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/winchxyz/hermes-x-bookmarks","docs":"https://github.com/winchxyz/hermes-x-bookmarks#readme","tools":["xbm_digest","xbm_task","xbm_skill"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"You need your own X developer app on the pay-per-use plan; X bills your app for reads (about $0.001 per bookmark for owned reads; a first sync of ~1,900 bookmarks was about $1.89, and from 2026-11-22 X also bills expanded objects).; Notion export needs `hermes mcp install notion` and mcp_allowlist: [\"notion\"] for this plugin (or an XBM_NOTION_TOKEN); one chat export writes all pages and shows progress.","state":"merged","pr":151594,"prs":[{"n":151594,"state":"merged","created":"2026-11-09T01:39:24Z"}],"created":"2026-11-09T01:39:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/winchxyz/hermes-x-bookmarks/c4c64dc98161c42e49bca56c16e23845481427d6/docs/media/board.png","https://raw.githubusercontent.com/winchxyz/hermes-x-bookmarks/c4c64dc98161c42e49bca56c16e23845481427d6/docs/media/sort.png","https://raw.githubusercontent.com/winchxyz/hermes-x-bookmarks/c4c64dc98161c42e49bca56c16e23845481427d6/docs/media/exports.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-x-bookmarks.webp"},{"name":"watch-with-me","title":"watch-with-me","summary":"Follows Plex playback and publishes sourced, spoiler-safe notes about the scene you are watching.","disclosure":"once you link Plex (plex.tv PIN sign-in; the token is kept in plugin data), a background thread polls your Plex server for playback; notes and \"what did I just see?\" answers send subtitle/transcript text (and, with a vision model, a timeline frame) to your Hermes auxiliary model, and fetch en.wikipedia.org; optional off-by-default features: Jev entity selection sends entity names to api.typesafe.ai or openrouter.ai with your key, `download_subtitles` writes subtitle files into your Plex library, and `extract_command` runs the command you configure (for example ssh + ffmpeg) to extract subtitles; no telemetry.","category":"tools","platforms":[],"maintainer":"jcrabapple","author":"jcrabapple","version":"1.0.1","requires_hermes":">=0.22.6","repo":"https://github.com/jcrabapple/watch-with-me","docs":"https://github.com/jcrabapple/watch-with-me#readme","tools":["watch_with_me_status","watch_with_me_start","watch_with_me_stop","watch_with_me_now"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151588,"prs":[{"n":151588,"state":"merged","created":"2026-11-09T01:27:24Z"}],"created":"2026-11-09T01:27:24Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"northstar","title":"Northstar","summary":"Read-only coherence auditing for Hermes Agent. Detects potential contradictions, duplicate directives, and stale references in instruction sources and skills, with supporting evidence.","disclosure":"the audit tool reads your Hermes home instruction files, `config.yaml`, every installed skill, and instruction files in the current working directory, and returns matching lines as evidence to the model (a secret written inline in config that is duplicated across scanned files can appear in a result); read-only, no network calls.","category":"tools","platforms":[],"maintainer":"mrcoxis-2002","author":"mrcoxis-2002","version":"0.1.0","requires_hermes":"","repo":"https://github.com/mrcoxis-2002/hermes-northstar","docs":"https://github.com/mrcoxis-2002/hermes-northstar","tools":["northstar_audit","northstar_status"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151583,"prs":[{"n":151583,"state":"merged","created":"2026-11-09T01:21:13Z"}],"created":"2026-11-09T01:21:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-witness","title":"hermes-witness","summary":"Evidence-gated learning for Hermes Agent. Grades each agent-written skill against the session's real tool results, tracks outcomes in later use, and quarantines grade-D skills. Deterministic and local, no LLM calls.","disclosure":"reads MEMORY.md, USER.md and skills under your Hermes home and grades every skill the agent creates or edits (including ones you wrote); in the default `gate` mode it moves grade-D skills to `~/.hermes/witness/quarantine` (reversible with `hermes witness release`); writes a local hash-chained ledger and a trace of tool names and argument keys only; no network calls, credentials, shell commands, background processes or telemetry. No dependencies, no self-updating code, no core overrides, no binaries. Release and trust are CLI-only.","category":"tools","platforms":[],"maintainer":"BenCoy09","author":"BenCoy09","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/BenCoy09/hermes-witness","docs":"https://witness-site-virid.vercel.app","tools":[],"hooks":["post_tool_call","pre_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151576,"prs":[{"n":151576,"state":"merged","created":"2026-11-09T01:05:51Z"}],"created":"2026-11-09T01:05:51Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"inference-exchange","title":"inference-exchange","summary":"Serve local Inference Exchange models while Hermes CLI is idle.","disclosure":"when `sell_enabled` is turned on (off by default), runs the Python interpreter and Inference Exchange checkout you configure as a background process that registers this machine as an open-trust inference provider with your configured coordinator (for example the author-operated `alpha.inferenceex.com`), passes it your `IE_PROVIDER_TOKEN`, and serves third-party prompts on your local llama-server while Hermes is idle; it can block a turn if it cannot stop that process.","category":"automation","platforms":[],"maintainer":"qzyu999","author":"qzyu999","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/qzyu999/hermes-inference-exchange","docs":"https://github.com/qzyu999/hermes-inference-exchange#readme","tools":[],"hooks":["on_session_start","pre_llm_call","post_llm_call","on_session_end","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151574,"prs":[{"n":151574,"state":"merged","created":"2026-11-09T00:54:34Z"}],"created":"2026-11-09T00:54:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"affiliateo","title":"Affiliateo","summary":"Run an Affiliateo business from Hermes through Affiliateo's hosted MCP server (Streamable HTTP at https://affiliateo.com/api/mcp, API key header): affiliate programs, affiliates, commissions and payouts, products and sales pages, revenue, MRR and customers, invoices, leads and booked calls, paid ads on Meta, TikTok, Google Ads, Apple Search Ads, Snapchat and X, funnels and visitor analytics, courses, events, community, support tickets and Live Chat. Bundles the affiliateo workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Affiliateo's hosted server (affiliateo.com) and acts on the user's Affiliateo account with the permissions of the API key they set; the tool set is served by that server at runtime and is not covered by the pinned sha. The key is a config_schema secret (AFFILIATEO_API_KEY) kept by Hermes and sent only as the Authorization header to affiliateo.com. Write tools can email real people (invoices, booking changes, app invites), pay affiliates from the user's wallet (only with a key whose Payouts switch is on, within its daily limit), delete records, and pause, resume or re-budget ads; new ad campaigns are always created paused. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. No local code, no telemetry.","category":"tools","platforms":[],"maintainer":"Affiliateo","author":"NicoGrajales","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/affiliateo/agent","docs":"https://github.com/affiliateo/agent#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151562,"prs":[{"n":151562,"state":"merged","created":"2026-11-09T00:18:47Z"}],"created":"2026-11-09T00:18:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"awskills","title":"awskills","summary":"About 100 portable skills for operating AI agents and the Aither/awdk toolchain: install the adk CLI and run an agent locally, find and install tool packs and skills, author and ship your own tool pack, use Aither from Hermes and other harnesses over skills, MCP and A2A, work safely in a shared git worktree, and debug agent failures. Portable Agent Plugins v1 package (plugin.json + skills/), skills only, no plugin code, no MCP server bundled.","disclosure":"skills are instructions only, but many tell the agent to run local CLIs (adk, awnode) and to download and run vendor install scripts with curl|sh or irm|iex from aitherium.com, raw.githubusercontent.com/Aitherium, openclaw.ai, install.osmantic.com, twotimespi.dev and ollama.com (each command goes through Hermes' terminal approval); some skills connect to Aitherium's hosted services (mcp.aitherium.com, gateway.aitherium.com, weights.aitherium.com) when the user follows them. The repo's hooks/, tools/ and scripts/ files are not loaded by Hermes.","category":"tools","platforms":[],"maintainer":"Aitherium","author":"aither-wzns","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/Aitherium/awskills","docs":"https://github.com/Aitherium/awskills#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151561,"prs":[{"n":151561,"state":"merged","created":"2026-11-09T00:15:50Z"}],"created":"2026-11-09T00:15:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"reset-rescue","title":"Reset Rescue","summary":"Redeems expiring OpenAI Codex rate-limit reset credits across every openai-codex account in the active Hermes profile's credential pool, with two Hermes one-shot cron attempts 10 and 4 minutes before expiry and success confirmed by backend readback. Includes opt-in early redemption at low weekly quota, per-account overrides, Hermes channel notices, a Desktop status-bar chip and popup, and dashboard settings. Account labels and domains are masked by default.","disclosure":"reads every openai-codex row of the profile's credential pool with Hermes' read_credential_pool helper; in a named profile with no Codex rows of its own that helper falls back read-only to the root profile's accounts, so the plugin then redeems the root profile's credits. It holds each account's access token in memory only and sends it only to https://chatgpt.com (redirects refused) with Codex CLI client headers (User-Agent codex-cli, ChatGPT-Account-ID, x-openai-internal-codex-residency, the same headers Hermes' own usage fetcher sends) to list reset credits (/backend-api/wham/rate-limit-reset-credits), read usage (/backend-api/wham/usage) and consume credits (/backend-api/wham/rate-limit-reset-credits/consume); the consume POST spends an owned credit through a private, undocumented endpoint. An empty pool falls back to the active sign-in through credentialed_provider_request. On HTTP 401 it runs hermes auth refresh openai-codex <entry>, so Hermes may rotate and save that account's tokens; the plugin itself never reads or writes credential files or stores or logs tokens. Running hermes reset-rescue ensure, or turning on the Desktop status-bar chip (off by default; its first status check arms the jobs), writes five launcher scripts to <HERMES_HOME>/scripts/ and creates no-agent Hermes cron jobs (a recurring scan plus one-shot rescue, backup and reminder jobs per credit); these run the hermes CLI with the inherited environment minus approval-bypass variables. It sends notices with hermes send to notify_target or the home channel, keeps credential-free state under plugin-data/reset-rescue, and its dashboard settings write its own plugins.entries.reset-rescue.settings through Hermes' settings writer. Automatic redemption is on by default and can be turned off globally or per account (dry_run pauses spending); early redemption is off by default and manual redemption requires confirmation. Run hermes reset-rescue uninstall before removing the plugin to delete its jobs and scripts. It does not purchase credits or enable overage.","category":"automation","platforms":["linux","macos"],"maintainer":"bwoliveira","author":"bwoliveira","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/bwoliveira/hermes-reset-rescue","docs":"https://github.com/bwoliveira/hermes-reset-rescue#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151558,"prs":[{"n":151558,"state":"merged","created":"2026-11-09T00:05:32Z"}],"created":"2026-11-09T00:05:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/brunooliveira/status/2119579627098185823"],"youtube":[],"thumb":null},{"name":"wearos","title":"wearos","summary":"The whole Hermes gateway on a Wear OS watch: the watch enrolls its own tailnet node, pairs with a gateway-minted 6-digit code, and talks to a private tailnet lane from then on — every agent, streaming answers, mid-session tool-call approvals, cron-run notifications, and replies spoken out loud in a voice cloned from ~3 seconds of reference audio, synthesized on your gateway's CPU. A desktop pane runs the checklist (APK, pair, enable) with per-agent voice dropdowns and readiness lights. Parakeet STT and the TTS engine arrive as checksum-pinned source builds at first use — nothing pre-bundled, no telemetry, no calls home after setup.","disclosure":"pairing mints single-use Tailscale enrollment keys and the setup wizard can create/update a Funnel route on your tailnet (preview, then consent); un-pairing rotates the paired agent's API_SERVER_KEY (hot for named profiles; for the default profile the plugin asks you to restart the gateway, disclosed in the pane and the README).","category":"voice","platforms":[],"maintainer":"borealBytes","author":"borealBytes","version":"0.3.6","requires_hermes":">=0.23.0","repo":"https://github.com/borealBytes/hermes-wearos-plugin","docs":"https://github.com/borealBytes/hermes-wearos#readme","tools":["watch_send","watch_status","watch_pair"],"hooks":["on_session_end"],"middleware":[],"env":["API_SERVER_KEY"],"known_issues":"","state":"open","pr":151546,"prs":[{"n":151546,"state":"open","created":"2026-11-08T23:29:48Z"}],"created":"2026-11-08T23:29:48Z","late":false,"said":false,"update":false,"discussion":19,"images":["https://raw.githubusercontent.com/borealBytes/hermes-wearos-plugin/2991d28fa7aeeb86d52be77680f4be7c1d80a41a/docs/banner.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos-plugin/2991d28fa7aeeb86d52be77680f4be7c1d80a41a/docs/screenshots/66-wearkit-pane.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos-plugin/2991d28fa7aeeb86d52be77680f4be7c1d80a41a/docs/screenshots/33-approval-card.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos-plugin/2991d28fa7aeeb86d52be77680f4be7c1d80a41a/docs/screenshots/48-media-cards.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos-plugin/2991d28fa7aeeb86d52be77680f4be7c1d80a41a/docs/screenshots/42-gateways-multi.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos/feat/hermes-plugin/docs/promo/2026-11-11/pane-voiceout-card.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos/feat/hermes-plugin/docs/promo/2026-11-11/pane-enroll-confirm-row.png","https://raw.githubusercontent.com/borealBytes/hermes-wearos/feat/hermes-plugin/docs/promo/2026-11-11/watch-voice-list.png"],"videos":["https://raw.githubusercontent.com/borealBytes/hermes-wearos/main/docs/promo/2026-11-11/wearkit-demo-90.mp4","https://raw.githubusercontent.com/borealBytes/hermes-wearos/feat/hermes-plugin/docs/promo/2026-11-11/watch-live-demo.mp4","https://raw.githubusercontent.com/borealBytes/hermes-wearos/main/docs/demo/voiceout-voicedemo/wearos-voice-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/wearos.webp"},{"name":"seedguard","title":"Seedguard","summary":"Secret firewall: private keys, seed phrases, API keys and 2FA codes become placeholders before they reach the model; armed tools can still use them.","disclosure":"rewrites provider requests, tool arguments, tool results, final replies and inbound chat messages to replace detected secrets with placeholders; real values are kept only in process memory, scoped per chat, and are released to the allowed tools (`terminal`, `execute_code` by default) while you arm a secret or set `rehydrate: always`, so an armed agent can use or misuse that secret; writes `hmac.key` and a no-values `events.jsonl` under its plugin data directory; `/seedguard doctor` reads `config.yaml` read-only.","category":"general","platforms":[],"maintainer":"Investorquab","author":"Investorquab","version":"0.1.2","requires_hermes":">=0.19","repo":"https://github.com/Investorquab/Seedguard","docs":"https://github.com/Investorquab/Seedguard#readme","tools":[],"hooks":["pre_tool_call","transform_terminal_output","transform_tool_result","transform_llm_output","pre_gateway_dispatch"],"middleware":["llm_request","llm_execution","tool_request"],"env":[],"known_issues":"Auxiliary side-model calls (session titles, compression, smart approvals) don't run middleware: secrets typed in the CLI can reach them. Run /seedguard doctor for the config fixes. Chat-app input is cleaned before storage. Confirmed on Hermes 0.23: its new pre_auxiliary_call/post_auxiliary_call events are observer-only (metrics, not request body) and cannot redact the call.","state":"merged","pr":151543,"prs":[{"n":151543,"state":"merged","created":"2026-11-08T23:09:38Z"}],"created":"2026-11-08T23:09:38Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/Investorquab/Seedguard/4809791d06471235fe3243fd1888c66eefb129e1/assets/seedguard-redaction.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/seedguard.webp"},{"name":"skillens","title":"skillens","summary":"Live skill-execution fidelity - watches whether the agent actually performs the steps a loaded skill requires, with a checklist pane, an in-session corrective nudge, and a status-bar fidelity score.","disclosure":"records every tool call's arguments and the first 1,500 characters of its result (which can include secrets printed by tools) in a local SQLite file under `$HERMES_HOME/plugin-data/skillens/` with no automatic pruning, and adds a one-time corrective context note to the model's next turn when a loaded skill's numbered steps show no matching tool calls; no network.","category":"desktop","platforms":[],"maintainer":"PhucNguyen-Dev","author":"PhucNguyen-Dev","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/PhucNguyen-Dev/skillens","docs":null,"tools":[],"hooks":["post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151541,"prs":[{"n":151541,"state":"merged","created":"2026-11-08T23:03:16Z"}],"created":"2026-11-08T23:03:16Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/PhucNguyen-Dev/skillens/b788910f661705b06d0f94415cc02b4897cbfa85/docs/screenshot-checklist.png","https://raw.githubusercontent.com/PhucNguyen-Dev/skillens/b788910f661705b06d0f94415cc02b4897cbfa85/docs/screenshot-analytics.png","https://raw.githubusercontent.com/PhucNguyen-Dev/skillens/b788910f661705b06d0f94415cc02b4897cbfa85/docs/screenshot-multi-skill.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skillens.webp"},{"name":"mnemos","title":"Mnemos","summary":"Sovereign memory provider for Hermes Agent (memory.provider mnemos): facts are encrypted on the machine (XChaCha20-Poly1305), stored as Walrus testnet blobs, and indexed by an owned Sui MemoryIndex whose hash chain is signed by the user key. MIT license.","disclosure":"a flush, checkpoint, restore, init, doctor, or history contacts the Walrus testnet publisher https://publisher.walrus-testnet.walrus.space (PUT /v1/blobs) and aggregator https://aggregator.walrus-testnet.walrus.space (GET /v1/blobs/<id>), Sui testnet gRPC https://fullnode.testnet.sui.io:443, and Sui testnet GraphQL https://graphql.testnet.sui.io/graphql; hermes mnemos init also calls the Sui testnet faucet https://faucet.testnet.sui.io. Payloads sent to Walrus are ciphertext; the Sui object stores blob ids, hashes, and signatures, not plaintext. Prefetch and recall do not use the network. The native Rust extension is opt-in: by default the Python backend is used and nothing is downloaded. Only when MNEMOS_NATIVE_AUTO=1 and mnemos_core is not already installed, the first open downloads the matching abi3 wheel from the fixed URL https://github.com/bugnarokdev/mnemos/releases/download/mnemos-native-v0.2.1/ and loads it only if it matches a sha256 checksum hardcoded in the pinned code (no URL override). Those wheels are built by the plugin repository's public GitHub Actions workflow .github/workflows/native-wheels.yml on tag mnemos-native-v0.2.1 (commit 468ba3898912ed3a1a31e43b56085270106cd5b4) and carry GitHub build-provenance attestations (actions/attest-build-provenance). hermes mnemos history --verify checks every snapshot (blob sha256, hash chain, Ed25519 signatures) without the secret. There is no telemetry.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"bugnarokdev","author":"bugnarokdev","version":"0.2.0","requires_hermes":">=0.23.1","repo":"https://github.com/bugnarokdev/mnemos","docs":"https://github.com/bugnarokdev/mnemos/blob/1f2b20cecf27e07aeb6acf72d296933b1c17bd90/README.md","tools":[],"hooks":[],"middleware":[],"env":["MNEMOS_SECRET"],"known_issues":"","state":"open","pr":153218,"prs":[{"n":153218,"state":"open","created":"2026-11-11T05:36:56Z"},{"n":151540,"state":"open","created":"2026-11-08T22:54:41Z"}],"created":"2026-11-08T22:54:41Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Riley-Coyote/mnemos-mcp/8ca8e76ce4da54d28e4b74d247b26db2fdea1238/hermes-plugin/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mnemos.webp"},{"name":"shotlane","title":"Shotlane","summary":"A real browser for your agent: screenshots, phone, tablet and desktop checks, pages as Markdown and HTML to PDF, from Shotlane's hosted MCP server (https://shotlane.dev).","disclosure":"connects to Shotlane's hosted MCP server at https://shotlane.dev/mcp (declared trust: untrusted, so write-capable calls ask first); every tool call, with its URL or HTML, goes to shotlane.dev with the API key in SHOTLANE_API_KEY as a Bearer header, and successful calls spend the account's Shotlane credits; the tool set is served by the remote server at runtime and is not covered by the pinned sha; the bundled skill also teaches the agent to call Shotlane's REST API directly with its script (URLs or local HTML files sent to shotlane.dev, results written to files you name), to use keyless shotlane.dev/md/ and /shot/ fetches, and to sign you up for a key by sending the email address you give it to shotlane.dev.","category":"web","platforms":[],"maintainer":"Shotlane","author":"nothingnix","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/shotlane/shotlane","docs":"https://shotlane.dev/docs/mcp","tools":[],"hooks":[],"middleware":[],"env":["SHOTLANE_API_KEY"],"known_issues":"","state":"merged","pr":151539,"prs":[{"n":151539,"state":"merged","created":"2026-11-08T22:51:35Z"}],"created":"2026-11-08T22:51:35Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"follow-through","title":"follow-through","summary":"An agent never ends a turn on a promise. A final reply that says work has started or will happen, while nothing is running, is held and turned into a nudge: do it now, or actually launch it. Zero model calls, fail-open, max 2 nudges per turn.","disclosure":"registers one llm_execution middleware that reads each final model reply and, when it promises work while nothing is running, rewrites it into a call to its own follow_through tool (at most 2 per user turn; FOLLOW_THROUGH_OFF=1 disables); no network, no subprocesses, no files read or written, no model calls, no telemetry.","category":"automation","platforms":[],"maintainer":"Agenziamaia","author":"Agenziamaia","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Agenziamaia/follow-through","docs":null,"tools":["follow_through"],"hooks":[],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"merged","pr":151538,"prs":[{"n":151538,"state":"merged","created":"2026-11-08T22:50:17Z"}],"created":"2026-11-08T22:50:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Agenziamaia/follow-through/e9bc1c1c8dcf575541c7c02f94a7f1302274411f/docs/demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/follow-through.webp"},{"name":"eyes","title":"eyes","summary":"The agent sees what it just made. Images, videos and sounds written in the last minutes get a measured note appended to the tool result (frame filled, motion, brightness, loudness, silences, contact sheet, plus a warning for black, empty, frozen or silent output) before the agent claims done. Zero model calls; needs ffmpeg.","disclosure":"registers one transform_tool_result hook; reads image/video/audio files that a terminal, execute_code, process, image_generate, text_to_speech, write_file or patch call names in its result or arguments, when modified in the last 5 minutes (any path, inside or outside the workspace; at most 3 per result); runs ffprobe/ffmpeg subprocesses on them (25-40 s timeouts each, which can delay the tool result); writes contact-sheet PNGs to $HERMES_HOME/cache/eyes; no network, no model calls, no telemetry; EYES_OFF=1 disables.","category":"tools","platforms":[],"maintainer":"Agenziamaia","author":"Agenziamaia","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Agenziamaia/eyes","docs":null,"tools":[],"hooks":["transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151537,"prs":[{"n":151537,"state":"merged","created":"2026-11-08T22:50:13Z"}],"created":"2026-11-08T22:50:13Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Agenziamaia/eyes/480723f5de22b70fa3eaad516567df77b8153713/docs/demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/eyes.webp"},{"name":"card-grader","title":"card-grader","summary":"Trading-card centering from a photo (perspective-corrected; PSA's centering table gives a grade ceiling, never a grade), corner/edge whitening and photo checks, an optional surface/holo opinion from your own configured vision model, sold values from PriceCharting or TCGdex (eBay with your own key), a grade-or-not verdict with stated odds, and a live Mercari hunt for the best copies.","disclosure":"tools only, no hooks or middleware; network calls to www.pricecharting.com (public pages, browser User-Agent), api.tcgdex.net, jp.mercari.com (through the mercapi package) and api.ebay.com (only with your own EBAY_OAUTH_TOKEN, read through Hermes's secret scope); reads only the photo paths you pass; writes rendered measurement JPEGs to the system temp dir, or to any directory given as card_grade's render_dir (no confinement); the optional vision opinion sends the card photo to your own configured model through ctx.llm (vision=false skips it); no telemetry; no grade prediction.","category":"tools","platforms":[],"maintainer":"Agenziamaia","author":"Agenziamaia","version":"0.2.2","requires_hermes":">=0.21.6","repo":"https://github.com/Agenziamaia/card-grader","docs":null,"tools":["card_grade","card_value","card_verdict","card_hunt"],"hooks":[],"middleware":[],"env":["EBAY_OAUTH_TOKEN"],"known_issues":"","state":"merged","pr":151536,"prs":[{"n":151536,"state":"merged","created":"2026-11-08T22:50:08Z"}],"created":"2026-11-08T22:50:08Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Agenziamaia/card-grader/9bd4f23bafa0a2e1b6a088bb7f3fd37c9de08950/docs/demo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/card-grader.webp"},{"name":"hackertube","title":"HackerTube for Hermes","summary":"Source-backed media discovery with existing Hermes providers and a profile-local library.","disclosure":"each explicit Search sends your question and candidate metadata to the Hermes auxiliary model you pick and your Hermes web-search backend (this may spend credits). It also queries hn.algolia.com, itunes.apple.com, openlibrary.org, librivox.org and, with your key, www.googleapis.com (YouTube) and api.podcastindex.org. Searches run in a Python worker subprocess that re-launches the `hermes` CLI from PATH with Hermes's environment (YOLO vars stripped). An hourly local thread purges expired records from plugin-data/hackertube/profile.db.","category":"web","platforms":["linux","macos"],"maintainer":"rcmiller01","author":"rcmiller01","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/rcmiller01/hackertube","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires macOS/Linux and Hermes CLI on PATH; macOS verified, Linux integration unrun.; Local cancellation cannot revoke remote processing or billing already accepted by a provider.; Model rankings can be partial or omit categories; no broad relevance guarantee is claimed.; Podcast Index is optional and not live-tested; Reddit remains disabled pending approval.; Local retention cannot execute while Hermes is stopped; cleanup precedes access after restart and exported backups are operator-managed.","state":"merged","pr":151535,"prs":[{"n":151535,"state":"merged","created":"2026-11-08T22:48:03Z"}],"created":"2026-11-08T22:48:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rcmiller01/hackertube/3776106fafe492e36565050812152ad9c8ed9524/docs/receipts/final-demo/videos.jpg","https://raw.githubusercontent.com/rcmiller01/hackertube/3776106fafe492e36565050812152ad9c8ed9524/docs/receipts/final-demo/podcasts.jpg","https://raw.githubusercontent.com/rcmiller01/hackertube/3776106fafe492e36565050812152ad9c8ed9524/docs/receipts/final-demo/audiobooks.jpg"],"videos":[],"x":["https://x.com/RobertMiller34/status/2119561239160644023"],"youtube":[],"thumb":"/hackathon/thumbs/hackertube.webp"},{"name":"workout-tracker","title":"Workout Tracker","summary":"Plan gym workouts through Workout Tracker's hosted MCP servers (Streamable HTTP at workout.lbyte.app): search a rated exercise catalog and check a draft plan's weekly sets per muscle and session length with no account, then, with a personal access token, save plans to the user's account and make one active. Bundles the workout-tracker skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"two servers. workout-tracker (/mcp/public) needs no credentials and never receives the token. workout-tracker-account (/mcp/account) acts on the user's account with a token they create in the app, sent as an Authorization header from WORKOUT_TRACKER_TOKEN in the profile environment; when it is unset, Hermes skips that server and the catalog tools still work. The token covers plans, timing, gear, targets and read-only history; it cannot sync workouts or manage tokens. Both servers are marked untrusted, so Hermes asks before every tool not annotated read-only. The skill tells the agent to read https://workout.lbyte.app/llms.txt for the plan format. The tool set is served by the remote servers at runtime and is not covered by the pinned sha. No telemetry.","category":"tools","platforms":[],"maintainer":"Latent Byte","author":"hamidzr","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/latentbyte/skills","docs":"https://workout.lbyte.app/llms.txt","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151513,"prs":[{"n":151513,"state":"merged","created":"2026-11-08T22:00:26Z"}],"created":"2026-11-08T22:00:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"devtune","title":"DevTune","summary":"DevTune through its official hosted MCP server (Streamable HTTP at https://devtune.ai/api/mcp): what AI answer engines say about a product and who they cite instead, AI crawler and referral traffic, the ranked queue of fixes with briefs and drafts, before/after results for shipped fixes, and Agent Picks (which tools coding agents pick when asked to add a capability). Bundles two skills, devtune and agent-picks, that pick the right tool for each question and report rates in the units DevTune measures them. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code, hooks or background processes; every tool call goes to devtune.ai with the user's own project API key (DEVTUNE_API_KEY, sent as a bearer header), and the tool set is served by that server at runtime and is not covered by the pinned sha. Some tools change project data or spend DevTune credits (briefs, drafts, agent runs, Agent Picks tests); the package marks the server untrusted, so Hermes asks before every tool not annotated read-only and refuses those tools in unattended runs, and paid Agent Picks tests also need a quote the user approves.","category":"tools","platforms":[],"maintainer":"DevTune","author":"subsy","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/devtunehq/skills","docs":"https://docs.devtune.ai/api-reference/mcp-server","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151511,"prs":[{"n":151511,"state":"closed","created":"2026-11-08T21:50:06Z"}],"created":"2026-11-08T21:50:06Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"marsell","title":"Marsell","summary":"Run Marsell, an AI for marketing, sales and content creation, from Hermes through Marsell's hosted MCP server (Streamable HTTP at https://getmarsell.com/mcp, OAuth sign-in, no keys in config): read what Marsell planned, made and found for each project, answer the decisions waiting for the owner, read and update the brand, plan posts and other work, make pictures and films, run series, and check results and token balances. Bundles the marsell workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Marsell's hosted server (getmarsell.com) and acts on the user's Marsell account with their current role; the tool set is served by that server at runtime and is not covered by the pinned sha. Tools that write change the owner's Marsell projects, and answering a waiting card in the owner's name can publish, send or spend as the chosen option says. Tools that make pictures, films and voice-overs, and some others such as research and page changes, spend Marsell tokens from the owner's plan; each says so in its description and asks the agent to give the price first. Ad spend needs the owner's approval in Marsell: an ad spends nothing until someone allowed to spend presses Start on its card there. Mission tools give the agent messages Marsell wrote for the owner's own Reddit, X or LinkedIn accounts, to send word for word from a signed-in browser, only where the owner said yes to that in Marsell. Upload tools give the agent a one-time address and a curl command that sends files from the user's machine, such as a logo or voice recordings, to Marsell. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js and npm required), which opens a browser and a local callback port the first time a tool needs the account and stores OAuth tokens under ~/.mcp-auth. The package has no telemetry and no self-updater. It marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Marsell","author":"Thisisily","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Marsell-Official/mcp","docs":"https://github.com/Marsell-Official/mcp#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151510,"prs":[{"n":151510,"state":"merged","created":"2026-11-08T21:49:47Z"}],"created":"2026-11-08T21:49:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hostbook","title":"hostbook","summary":"A dashboard for the machines and services on your home network, inside Hermes, plus tools so Hermes can check and fix them from chat under a rule per machine (read only, asks before changes, open).","disclosure":"Connects over SSH (your existing keys or ssh-agent, accepting a new machine's host key on first connect) only to machines you add, and runs scripts there when asked in chat, after hostbook's per-machine rules and Hermes's approvals; can create a no-agent Hermes cron job (hostbook-scan) for scheduled read-only scans when you turn scheduling on; its pre_tool_call hook can block or require approval for other tools that use ssh or touch hostbook's files; keeps the last 20 chat sender ids locally for the setup page; one model call only when you click \"Get AI help\". No telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"Timidan","author":"Timidan","version":"0.2.1","requires_hermes":">=0.22.0","repo":"https://github.com/Timidan/hostbook","docs":"https://github.com/Timidan/hostbook/blob/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/guide.md","tools":["host_run","host_services","service_action","hostbook_setup"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Machines must be Linux hosts that the Hermes machine can reach over SSH with a key (ssh-copy-id, ssh-agent or an SSH config Host); usage numbers need /proc.; The per-person limits and the change check are guardrails, not a sandbox. For people you don't fully trust, also limit which Hermes tools they can use.","state":"merged","pr":151507,"prs":[{"n":151507,"state":"merged","created":"2026-11-08T21:35:03Z"}],"created":"2026-11-08T21:35:03Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/banner.png","https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/screenshots/machines.png","https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/screenshots/services.png","https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/screenshots/setup.png","https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/screenshots/discover.png","https://raw.githubusercontent.com/Timidan/hostbook/4d4630f0a60254ac6941103c3d028b2c1f994985/docs/screenshots/schedule-people.png","https://raw.githubusercontent.com/Timidan/hostbook/3f63aec97acb7e4af6a827564b62e5b4ba0d1f77/docs/screenshots/machines.png","https://raw.githubusercontent.com/Timidan/hostbook/3f63aec97acb7e4af6a827564b62e5b4ba0d1f77/docs/screenshots/services.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hostbook.webp"},{"name":"call-recorder","title":"Call Recorder","summary":"Records both sides of a call as a two-track file (system audio + microphone) and transcribes it locally, with a record control in the composer, a live transcript strip, and a pane listing recordings with their transcripts.","disclosure":"","category":"desktop","platforms":["linux","windows"],"maintainer":"jacebenson","author":"jacebenson","version":"1.5.0","requires_hermes":">=0.23.0","repo":"https://github.com/jacebenson/hermes-hackathon-call-recorder","docs":"https://github.com/jacebenson/hermes-hackathon-call-recorder#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a logged-in desktop session on the machine being recorded; a background session has no audio to capture on either platform.; Transcription needs faster-whisper on the recording machine. Without it the plugin records and reports transcription as unavailable.; Browser recording captures the device microphone only: one mixed voice track, no system audio and no live transcript.","state":"open","pr":151506,"prs":[{"n":151506,"state":"open","created":"2026-11-08T21:34:09Z"}],"created":"2026-11-08T21:34:09Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/jacebenson/hermes-hackathon-call-recorder/00ce57a6cd411fcdda2249d9b273bcbb19852981/docs/screenshots/in-context.png","https://raw.githubusercontent.com/jacebenson/hermes-hackathon-call-recorder/00ce57a6cd411fcdda2249d9b273bcbb19852981/docs/screenshots/composer-and-live-strip.png","https://raw.githubusercontent.com/jacebenson/hermes-hackathon-call-recorder/00ce57a6cd411fcdda2249d9b273bcbb19852981/docs/screenshots/recorder-pane.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/call-recorder.webp"},{"name":"hermes-pentest","title":"Hermes Pentest","summary":"Guided local Vite/Supabase source input discovery, fresh human approval, offline build and isolated testing with synthetic data. Populated/absent SQL controls and authenticated persisted-text XSS checks verify actual input/render paths. Reports distinguish rejected probes from failed controls and count planned versus completed same-user and cross-user stored workflows separately. Uses the provider already configured in Hermes. Also supports explicit local web/API discovery, controlled SQL injection, browser-proven reflected/DOM/stored XSS, access contracts, owner-approved localhost servers, multi-service applications and native/CLI checks. Durable budgets, supervised execution, stop/recovery, immutable evidence, fixed-build regression and reports.","disclosure":"trusted Python controllers use the local Docker socket to manage exact run-owned containers; Docker targets get no host mounts, published ports or external network. Existing localhost servers are unmanaged and are tested only at origins the owner lists in `allowed_localhost_origins` (empty by default), which receive state-changing requests with the configured test-session headers. macOS supervised-local mode runs only executables the owner lists in `allowed_native_executables` (empty by default), under Seatbelt plus an RSS watchdog, not Docker isolation. Guided preparation reads the selected source and dependency trees and may fetch lockfile-verified Linux build packages from registry.npmjs.org. Guided assessments need a fresh one-shot human approval. Evidence stays in the selected profile's plugin data; no telemetry or model calls.","category":"tools","platforms":["linux","macos"],"maintainer":"WebisityStudio","author":"WebisityStudio","version":"0.5.1","requires_hermes":"","repo":"https://github.com/WebisityStudio/hermes-pentest","docs":"https://github.com/WebisityStudio/hermes-pentest/blob/6af5fc99bf5a8fa5303bc7b591a6a787098a5a26/README.md","tools":["pentest_inspect","pentest_prepare","pentest_assess","pentest_discover","pentest_preflight","pentest_create","pentest_execute","pentest_resume","pentest_status","pentest_stop","pentest_cleanup","pentest_export"],"hooks":["pre_tool_call","pre_approval_request","post_approval_response","post_tool_call","agent_loop_stopped","on_session_end"],"middleware":["tool_execution"],"env":[],"known_issues":"Guided preparation currently supports Vite with an installed compatible npm cache and optional Supabase migrations. Other frameworks return setup gaps or require explicit adapters. Cached local toolchain images are required.; Guided execution requires Hermes public tool-execution middleware and all six declared hooks; missing approval integration refuses execution. Approval is one-use and bound to the exact source, runtime, plan and budget.; The v0.5.1 real-application follow-up completed all 15 selected checks: 10 data/Auth/browser contracts, 3 controlled SQL probes on a text preference-key filter and 2 same-user stored-XSS workflows. No confirmed vulnerabilities. Cross-user workflows: 0 planned, 0 completed. The earlier 3 rejected numeric-input SQL checks remain inconclusive; this follow-up does not relabel them or establish exhaustive coverage.; Source hints require model verification of route reachability and positive controls. Authenticated stored-XSS viewer proof requires a real final-document Bearer GET /auth/v1/user with its Referer; missing proof remains inconclusive. No arbitrary auth-state injection.; Localhost and supervised-local native targets are denied until the owner configures exact origins/executable paths in profile plugin settings. Plan acknowledgement flags do not grant permission. To revoke access, stop affected runs, end affected Hermes sessions, remove the entry, and start a new session. Managed sessions retain frozen settings; active attempts retain their bounded snapshot.; Bounded check catalogue, not exhaustive vulnerability coverage. Native support exercises CLI/app-bundle executables, not GUI/mobile interactions.; Managed web/Linux and browser checks require local Docker and prepared local images. Existing-localhost mode does not support HTTPS or interactive login/cookie rotation. Arbitrary Compose features are unsupported.; Existing localhost cannot be isolated or independently source-pinned. Interrupted unmanaged assessments require owner reset/new run. macOS native memory uses an RSS watchdog, not a hard limit.; MySQL/PostgreSQL timing has unit controls, but live dialect timing is unverified. PostgreSQL static dependency data flow is verified. SQLite and stacked MSSQL timing are explicitly skipped.; The local acceptance harness imports version-sensitive Hermes discovery internals, producing a validation warning. Plugin runtime registration/storage and secret access use public APIs.","state":"merged","pr":151501,"prs":[{"n":151501,"state":"merged","created":"2026-11-08T21:20:30Z"}],"created":"2026-11-08T21:20:30Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":["https://x.com/WebisityStudio/status/2119673449668919469"],"youtube":[],"thumb":null},{"name":"webtwizz","title":"WebTwizz","summary":"Build, change and publish websites and web apps with WebTwizz through its hosted MCP server (https://app.webtwizz.com/mcp, OAuth sign-in in the browser, no keys in config): landing pages, online stores, booking sites, portfolios and web apps with sign-ins and a database, published to a webtwizz.app address or the user's own domain, with version history, site data and GitHub sync. Agent Plugins v1 package (plugin.json + mcp.json), configuration only.","disclosure":"every tool call goes to WebTwizz's hosted server (app.webtwizz.com) and acts on the user's WebTwizz account; the tool set is served by that server at runtime and is not covered by the pinned sha. Builds and edits spend WebTwizz credits, and publish-site only returns a link: the site goes live when the user presses Publish in the WebTwizz editor. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"WebTwizz","author":"ahmedwab","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/WebTwizz/agent","docs":"https://github.com/WebTwizz/agent/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151496,"prs":[{"n":151496,"state":"merged","created":"2026-11-08T21:10:22Z"}],"created":"2026-11-08T21:10:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cwtch-platform","title":"Cwtch","summary":"Chat with Hermes over Cwtch, the peer-to-peer messenger on Tor: the bot runs its own Cwtch profile and contacts reach it by its onion address, without accounts, phone numbers or servers. Direct conversations, text only.","disclosure":"loads the libCwtch library the user installs from a Cwtch release (not shipped) in a child process the plugin starts; libCwtch runs its own tor, which connects to the Tor network. The bot's profile and message history are stored under HERMES_HOME/cwtch, encrypted with CWTCH_PROFILE_PASSWORD. Incoming contact requests are accepted by default; Hermes authorization still applies to every message. No telemetry, self-updates or added tools.","category":"platform","platforms":[],"maintainer":"just-a-dev20","author":"just-a-dev20","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/just-a-dev20/hermes-cwtch-platform","docs":"https://github.com/just-a-dev20/hermes-cwtch-platform/blob/91d887f899a98bfbda36125e9e5aab4c1424688c/README.md","tools":[],"hooks":[],"middleware":[],"env":["CWTCH_PROFILE_PASSWORD","CWTCH_LIB_PATH"],"known_issues":"Tested live on Windows 11; the test suite runs on Linux and Windows. Not yet tried on macOS.; Cwtch groups and file transfer are not bridged.","state":"closed","pr":151494,"prs":[{"n":151494,"state":"closed","created":"2026-11-08T21:04:14Z"}],"created":"2026-11-08T21:04:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"openinvest-hosted","title":"openInvest Hosted","summary":"Hosted portfolio ledger and Agent-run research skills. Derived from openinvest; this package uses the official OAuth Streamable HTTP service instead of a local Python backend.","disclosure":"ledger and submitted tool data are stored by the hosted service; de-identified research recording defaults on after the webpage notice and can be disabled in account settings. Client-side telemetry, hooks, local file access and brokerage execution are absent. Configure the MCP connection separately using the client guide. Admission rule 13 compatibility for the server-side research default requires maintainer review.","category":"tools","platforms":[],"maintainer":"longsizhuo","author":"longsizhuo","version":"0.1.0","requires_hermes":">=0.22.1","repo":"https://github.com/longsizhuo/openinvest-site","docs":"https://openinvest.involutionhell.com/docs/hosted-mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":151482,"prs":[{"n":151482,"state":"closed","created":"2026-11-08T20:26:25Z"}],"created":"2026-11-08T20:26:25Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"memory-bridge","title":"Memory Bridge","summary":"Read-only, permission-aware search and reading over an operator-approved folder of Markdown notes, such as a team's shared agent memory. Two tools, memory_bridge_search and memory_bridge_read. Each calling profile's policy.json (in its plugin-data directory) sets the memory root and allow/deny patterns; the model can only ask questions and cannot widen access. Cron and delegated subagents are refused unless the policy opts in. Standalone tool plugin, not a memory provider.","disclosure":"reads Markdown files under the operator-configured root, which is outside the plugin's own data, and returns snippets and file text into the model's context (sent to your model provider). On macOS it reads file ACLs through the system C library (ctypes). No network calls, shell commands, background processes, credentials, telemetry, writes or Python dependencies. Logs short refusal reason codes only. Imports the undocumented agent.delegation_context helper for subagent detection (rule 9 warning) and fails closed if it moves.","category":"tools","platforms":["macos"],"maintainer":"summero","author":"summero","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/summero/memory-bridge","docs":"https://github.com/summero/memory-bridge/blob/d166fbe72493050ef2651f37f8b2c267ee5f18d2/README.md","tools":["memory_bridge_search","memory_bridge_read"],"hooks":[],"middleware":[],"env":[],"known_issues":"Does nothing until an operator creates plugin-data/memory-bridge/policy.json in each calling profile's home; see the README's install steps.; Linux is experimental and unsupported; other platforms are unsupported.; Cron and subagent refusal were tested with simulated signals only; real scheduler and delegate_task runs are unverified.","state":"merged","pr":151474,"prs":[{"n":151474,"state":"merged","created":"2026-11-08T19:59:56Z"}],"created":"2026-11-08T19:59:56Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tap-giving","title":"Tap.Giving","summary":"A tool first for organizations, including churches, nonprofits, restaurants, coffee shops, and local businesses: create print-ready NFC artwork proofs with correct vector art through the NFC Tap Builder MCP server (Streamable HTTP at https://tap.giving/mcp, keyless reads, no sign-in; website https://tap.giving), free to take to any vendor, with no lock-in: discovery, binding pricing quotes, product facts and production artwork specs. Ordering custom discs through Tap.Giving is an optional next step; order setup uses hosted invoice links, with no key and no login at any point. Bundles one workflow skill, nfc-tap-builder. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to tap.giving. The server sells hardware only and moves no money itself: it returns a hosted invoice link for a person to pay, and a person approves the final proof by email before production. No tool needs a key or a login at any point, ordering included (the package ships no credential and reads no files). The package marks the server untrusted, so Hermes asks before write-capable calls and refuses them in unattended runs. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"RyanShook","author":"RyanShook","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Tap-Giving/tap-giving-mcp","docs":"https://github.com/Tap-Giving/tap-giving-mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151471,"prs":[{"n":151471,"state":"open","created":"2026-11-08T19:50:51Z"}],"created":"2026-11-08T19:50:51Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"soldgraph","title":"Soldgraph","summary":"Check what items sold for on eBay, Poshmark and Mercari, and search live resale listings on Depop, Whatnot, OfferUp, Facebook Marketplace, Vinted and TCGplayer. Portable Agent Plugin with one skill and Soldgraph's hosted MCP server (19 read-only tools).","disclosure":"tool calls go to api.soldgraph.com with the user's own Soldgraph API key (SOLDGRAPH_KEY, sent as a bearer header), and the tool set is served by that remote server and is not covered by the pinned sha; each completed search uses 1 request from the user's Soldgraph allowance; listing text comes from marketplace sellers and is untrusted.","category":"tools","platforms":[],"maintainer":"soldgraph","author":"soldgraph","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/soldgraph/soldgraph-hermes","docs":"https://soldgraph.com/docs/guides/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151466,"prs":[{"n":151466,"state":"merged","created":"2026-11-08T19:40:42Z"}],"created":"2026-11-08T19:40:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fractal-memory-engine","title":"fractal-memory-engine","summary":"Hierarchical vectorless episodic memory, procedural attractor clustering, and O(1) complex coordinate anchoring for Hermes Agent. Eliminates external vector database and embedding model overhead via 3-ring orbital resonance decay and local JSON state persistence under HERMES_HOME/plugin-data.","disclosure":"","category":"memory","platforms":["linux","macos","windows"],"maintainer":"pCwOrM","author":"pCwOrM","version":"1.0.2","requires_hermes":">=0.21.0","repo":"https://github.com/pCwOrM/hermes-fractal-memory","docs":"https://github.com/pCwOrM/hermes-fractal-memory#readme","tools":["fractal_remember","fractal_recall","fractal_consolidate","fractal_memory_inspect","fractal_memory_wipe"],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151459,"prs":[{"n":151459,"state":"merged","created":"2026-11-08T19:32:09Z"}],"created":"2026-11-08T19:32:09Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/pCwOrM/status/2119523972496900445"],"youtube":[],"thumb":null},{"name":"brownout","title":"Brownout","summary":"Power-cut guard for the machine Hermes runs on. When mains power drops it messages you (Telegram or any hermes send target) with the battery level, measures the real drain and sends a runway, and on /brownout park (or by itself at critical battery if you don't answer) pauses active cron jobs and blocks new tool calls with a pre_tool_call hook. When power is back it resumes only the jobs it paused and tells you. Nothing is killed or deleted; it stops the next tool call, not one already running. Undelivered alerts are retried in order.","disclosure":"one daemon thread per Hermes home polls power every poll_seconds (default 15) by running `pmset -g batt` (macOS), reading /sys/class/power_supply (Linux) or running `upsc` (NUT UPS, opt-in); alerts go out by running the documented `hermes send --to <notify_target> --file -` CLI with a 30 s timeout, using the gateway's own credentials. No network calls of its own, no credentials read, no telemetry. Writes only to <HERMES_HOME>/plugin-data/brownout/ (events log, state, command queue, watcher lock).","category":"automation","platforms":["linux","macos"],"maintainer":"Osiyomeoh","author":"Osiyomeoh","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Osiyomeoh/brownout","docs":"https://github.com/Osiyomeoh/brownout/blob/6d983d5da32c6cdd6a3551426de87d44a78dbfea/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Proven on real hardware on macOS (pmset). Linux sysfs and NUT UPS readers are covered by parser tests on recorded formats only.","state":"merged","pr":151457,"prs":[{"n":151457,"state":"merged","created":"2026-11-08T19:27:15Z"}],"created":"2026-11-08T19:27:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rehearse","title":"Rehearse","summary":"Practise any interview or talk out loud: job, technical, case, admission, visa, medical, media and podcast interviews, presentations, investor and sales pitches, product demos, thesis defences and speeches. Hermes asks realistic questions aloud in a natural voice (Hermes's own text-to-speech), you answer on camera on a Desktop page (or by microphone alone, or upload a recording), and you get a scored replay: filler words, pace, pauses, answer length and eye contact on a clickable timeline, plus content feedback with a stronger-answer outline built only from what you said; retries report the points gained. Full interview mode runs it live: the interviewer asks each question aloud, recording starts when it finishes, live nudges appear while you answer (facing, framing, distance, light), and the session ends with a hiring-panel debrief across every answer. /rehearse and three tools bring the same coaching to any chat, answering by text or voice note.","disclosure":"uses the camera and microphone only while the practice screen is open (about once a second a small frame is checked locally for the live nudges); speech-to-text (faster-whisper) and eye-contact analysis (OpenCV YuNet face landmarks plus pupil position) run locally and no audio or video leaves the computer; each answer's transcript goes to the user's configured model through ctx.llm for questions and feedback; one-time downloads from official sources: the faster-whisper speech model from Hugging Face and the 230 KB YuNet model from opencv/opencv_zoo at a pinned commit, verified by SHA-256 before use; stores sessions, scores and recordings under HERMES_HOME/plugin-data/rehearse (deletable from the page; keep_recordings: false deletes each take after scoring; unused uploads are removed after a day); adds /api/plugins/rehearse/ routes (upload, page calls) behind the dashboard's authentication; no shell commands, no background process beyond analysing a take just recorded, no network service or telemetry of its own; never coaches anyone to misrepresent facts.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"flamiinngo","author":"flamiinngo","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/flamiinngo/rehearse","docs":"https://github.com/flamiinngo/rehearse#readme","tools":["rehearse_start","rehearse_analyze","rehearse_progress"],"hooks":[],"middleware":[],"env":[],"known_issues":"Windows on ARM gets content feedback only: faster-whisper has no build there, as for Hermes's own local speech-to-text.","state":"merged","pr":151450,"prs":[{"n":151450,"state":"merged","created":"2026-11-08T19:09:44Z"}],"created":"2026-11-08T19:09:44Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/flamiinngo/rehearse/d30be9914ee3a94c66913d48d5d4f9ce724cd71c/docs/scenarios.jpg","https://raw.githubusercontent.com/flamiinngo/rehearse/d30be9914ee3a94c66913d48d5d4f9ce724cd71c/docs/practice-room.jpg","https://raw.githubusercontent.com/flamiinngo/rehearse/63c223eee46c73145b5fe5bf419aabbba092f51c/docs/scenarios.jpg","https://raw.githubusercontent.com/flamiinngo/rehearse/63c223eee46c73145b5fe5bf419aabbba092f51c/docs/practice-room.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rehearse.webp"},{"name":"muster","title":"Muster","summary":"See what your AI helpers are actually doing. Every worker hermes starts shows up live in one pane: working, stuck (silent too long), failing on repeat, or gone (hermes crashed). Stop a stuck one or send it a message with one click. Start your own helpers with muster_fanout. /muster-digest reports status, spend and the decisions you need; scheduled Fleet watch + Morning report blueprints speak up only when something needs you. No network, no setup.","disclosure":"","category":"tools","platforms":[],"maintainer":"jollyroger1480","author":"jollyroger1480","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/jollyroger1480/muster","docs":"https://github.com/jollyroger1480/muster#readme","tools":["muster_fanout","muster_status"],"hooks":["subagent_start","subagent_stop","pre_tool_call","post_tool_call","pre_api_request","post_api_request","api_request_error","pre_auxiliary_call","post_auxiliary_call","on_session_finalize","kanban_task_claimed","kanban_task_completed","kanban_task_blocked","on_kanban_worker_exited"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151448,"prs":[{"n":151448,"state":"merged","created":"2026-11-08T19:05:42Z"}],"created":"2026-11-08T19:05:42Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"seomatic","title":"SEOmatic","summary":"SEO agent for your own website through SEOmatic's hosted MCP server (Streamable HTTP at https://app.seomatic.ai/api/mcp, OAuth sign-in, no keys in config): Google Search Console queries and pages, striking-distance keywords, traffic drops, site audits, keyword, backlink and SERP competitor research, AI visibility and AI citations (ChatGPT, Claude, Perplexity, Google AI Overviews), daily local rankings and Google Business Profile, plus site fixes staged in SEOmatic for WordPress, Shopify, Webflow, Wix and other connected sites. Bundles twenty workflow skills (SEO audit, striking distance, traffic drop, CTR fix, cannibalization, content refresh, keyword research, competitor gap, local SEO and more). Agent Plugins v1 package (plugin.json + mcp.json + skills/ in the repo's hermes/ folder), configuration only.","disclosure":"every tool call goes to SEOmatic's hosted server (app.seomatic.ai) and acts on the user's own SEOmatic workspace with their role in it; the tool set is served by that server at runtime and is not covered by the pinned sha. Search Console, stored-data and site audit reads are free; live market data (keyword metrics and suggestions, backlinks, SERP competitors, local SERP visibility), fresh AI visibility scans and approved fixes spend SEOmatic AI credits, content generation quotes its estimate and runs only after the user confirms, and generate_article uses one prepaid article unit. Fixes proposed through the tools are staged in SEOmatic; approving, publishing, undoing and rolling back change the user's live site and require an explicit confirm from the user. SEOmatic's own background agents follow the workspace's autonomy mode set in SEOmatic: in Assisted, the default for new workspaces, reversible changes (titles, descriptions, internal links, schema, page text, articles) go live on their own with a one-click undo, while new pages, bulk changes, redirects and removals wait for the user; in Approval mode every change waits. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which registers an OAuth client, opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth; without a stored token, an unattended run fails at Hermes's connect timeout instead of hanging. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. Users who need longer to sign in, or a headless setup, can replace the server with hermes mcp add seomatic --url https://app.seomatic.ai/api/mcp --auth oauth (or an API key header) and keep the skills.","category":"tools","platforms":[],"maintainer":"SEOmatic","author":"Minh42","version":"1.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/Minh42/seomatic-mcp","docs":"https://github.com/Minh42/seomatic-mcp#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151447,"prs":[{"n":151447,"state":"merged","created":"2026-11-08T19:05:35Z"}],"created":"2026-11-08T19:05:35Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"qeemah-zatca","title":"Qeemah ZATCA & KSA VAT","summary":"Saudi Arabia ZATCA Phase 2 (FATOORA) e-invoicing compliance validation, KSA 15% VAT calculation, and Saudi business tax utilities for Hermes Agent. Maintained by Qeemah Cloud.","disclosure":"","category":"tools","platforms":[],"maintainer":"qeemah-cloud","author":"mosmn","version":"1.0.0","requires_hermes":"","repo":"https://github.com/qeemah-cloud/hermes-plugin-zatca","docs":"https://github.com/qeemah-cloud/hermes-plugin-zatca#readme","tools":["ksa_vat_calculate","zatca_validate_invoice"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151445,"prs":[{"n":151445,"state":"merged","created":"2026-11-08T19:02:56Z"}],"created":"2026-11-08T19:02:56Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"linear-agent","title":"linear-agent","summary":"Makes Hermes a first-class Linear agent: assign an issue or @mention it and Hermes replies in-thread under its own app identity. Ships a signature-verified webhook bridge (stdlib only, zero dependencies), a `hermes linear-agent` CLI, two tools and a setup skill. Public surfaces only: no core patching.","disclosure":"","category":"automation","platforms":[],"maintainer":"realpetru","author":"realpetru","version":"1.5.0","requires_hermes":">=0.22.0","repo":"https://github.com/realpetru/hermes-linear-agent","docs":null,"tools":["linear_agent_status","linear_agent_authorize_url"],"hooks":[],"middleware":[],"env":["LINEAR_CLIENT_ID","LINEAR_CLIENT_SECRET","LINEAR_WEBHOOK_SECRET","LINEAR_AGENT_PROFILE","LINEAR_AGENT_ROUTING","LINEAR_AGENT_PUBLIC_URL","LINEAR_REDIRECT_URI"],"known_issues":"","state":"open","pr":151444,"prs":[{"n":151444,"state":"open","created":"2026-11-08T19:02:34Z"}],"created":"2026-11-08T19:02:34Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pixel-hq","title":"Pixel HQ","summary":"Gamified headquarters for a Hermes bot fleet: a pixel office with one sprite per profile; XP, levels and HP are scored automatically from Kanban outcomes (completed, changes requested, gave up, timed out, hallucinated references) plus optional pass/revise/fail reviews you give from the UI or that an orchestrator records with the `pixelhq_review` tool; a live board of what every bot is doing right now (current step, last tool call, tokens/cost, sub-agents, Kanban heartbeats), a leaderboard, a blocked-card triage across all Kanban boards with Answer & unblock / Retry / Comment / Archive and a 'triage run' that opens a chat with your orchestrator profile, plus a GPU/LLM reactor panel. Works on a fresh installation: the roster is generated from your profiles and settings live in the Desktop app.","disclosure":"reads every profile's config.yaml (model name) and state.db read-only (session titles, current step, tokens/cost and the last tool call with its first argument, e.g. a terminal command or path, clipped to 160 characters), every Kanban board database read-only, and the reviews ledger (plugin-data/pixel-hq/reviews.jsonl, plus an optional legacy ledger path you configure); no shell commands for reading; network only to the Prometheus / model endpoints you configure (none by default); writes only the reviews JSONL under plugin-data when you rate a session or bot (or when an agent calls `pixelhq_review`), and Kanban changes only from your clicks in its page and only through `hermes kanban comment|unblock|archive` (unblock/retry/archive need a second confirming click; the workspace is backed up into the plugin's var/ before archive; audit log in var/actions.jsonl); the triage button opens a chat with your orchestrator profile and submits a prompt with card ids only, and that agent then reads card text (untrusted) via the plugin's blockers.py; no telemetry, no self-update, no credentials.","category":"desktop","platforms":[],"maintainer":"W4-NERF","author":"W4-NERF","version":"1.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/W4-NERF/pixel-hq","docs":"https://github.com/W4-NERF/pixel-hq#readme","tools":["pixelhq_review"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151442,"prs":[{"n":151442,"state":"merged","created":"2026-11-08T18:54:01Z"}],"created":"2026-11-08T18:54:01Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/W4-NERF/pixel-hq/d86f08345a46288db9cd02caacb9b7b7c95760f2/docs/banner.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/d86f08345a46288db9cd02caacb9b7b7c95760f2/docs/screens/office.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/d86f08345a46288db9cd02caacb9b7b7c95760f2/docs/screens/live.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/d86f08345a46288db9cd02caacb9b7b7c95760f2/docs/screens/leaderboard.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/d86f08345a46288db9cd02caacb9b7b7c95760f2/docs/screens/blocked.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/f059cae44663ff58a7304da45f4828e836981650/docs/screens/office.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/f059cae44663ff58a7304da45f4828e836981650/docs/screens/live.png","https://raw.githubusercontent.com/W4-NERF/pixel-hq/f059cae44663ff58a7304da45f4828e836981650/docs/screens/leaderboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pixel-hq.webp"},{"name":"transcribo","title":"Transcribo","summary":"Transcribe audio and video files to text with speaker labels through Transcribo's hosted MCP server (Streamable HTTP at https://api.transcribo.es/mcp, OAuth sign-in, no keys in config), in Spanish and 60 languages in total, up to 4 hours per file. Takes local files, public links, and Google Drive or Dropbox links. Bundles the transcribo workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Transcribo's hosted server (api.transcribo.es) and acts on the user's Transcribo account; the tool set is served by that server at runtime and is not covered by the pinned sha. Audio is uploaded to Transcribo, and the transcript and a compressed copy of the audio stay in the account until the user deletes them. start_transcription and start_uploaded_transcription spend the account's audio balance. To send a local file, the skill has the agent run curl to upload it to a presigned URL. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Transcribo","author":"santigamo","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/santigamo/transcribo-skill","docs":"https://github.com/santigamo/transcribo-skill#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151441,"prs":[{"n":151441,"state":"merged","created":"2026-11-08T18:51:09Z"}],"created":"2026-11-08T18:51:09Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"patch-sentinel","title":"Patch Sentinel","summary":"Measures the host, not the source tree: code review asks \"can an attacker exploit this code?\" and this asks \"is this machine running what the vendor shipped?\" — the two are complements, never substitutes. Answers \"are we patched?\" with evidence, for whatever the host runs — an adapter chosen from the host's own /etc/os-release (apt, dnf, pacman, zypper, apk), the running kernel against the newest installed and installable, whatever advisory names the fixed version per release (Ubuntu notices, OSV per release, Bodhi, Arch's tracker, SUSE's OVAL), container image digests, nine language ecosystems through OSV plus lockfile pins, package checksums and listening sockets against a recorded baseline, and a CycloneDX SBOM. Every check has three outcomes — clean, finding, could-not-look — so an unreachable host, an unimplemented distro or a rate-limited registry reads as unknown rather than clean. The pane reads one device at a time and hands over the exact commands per device; a gated cve_apply tool stages, applies, re-measures and writes a receipt for an agent explicitly asked to patch. Linux only: any other OS answers \"unsupported\" with its name.","disclosure":"scans run fixed read-only commands on this machine and, over your own ssh agent, on hosts you list; package names and versions go to api.osv.dev, api.first.org and the distro advisory sites (ubuntu.com, bodhi.fedoraproject.org, security.archlinux.org, ftp.suse.com, cisa.gov); cve_apply, after Hermes's approval prompt, runs the distro's full upgrade with sudo -n on the chosen host; scans, receipts and SBOMs stay under $HERMES_HOME/patch-sentinel (mode 700).","category":"tools","platforms":["linux"],"maintainer":"thebangarang","author":"thebangarang","version":"0.1.2","requires_hermes":">=0.21.6","repo":"https://github.com/thebangarang/Patch-Sentinel","docs":"https://github.com/thebangarang/Patch-Sentinel#readme","tools":["cve_scan","cve_plan","cve_explain","cve_coverage","cve_libraries","cve_image","cve_sbom","cve_apply","cve_ack","cve_integrity","cve_rescan"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151436,"prs":[{"n":151436,"state":"merged","created":"2026-11-08T18:32:35Z"}],"created":"2026-11-08T18:32:35Z","late":false,"said":false,"update":false,"discussion":6,"images":["https://raw.githubusercontent.com/thebangarang/Patch-Sentinel/70bbf9d06ec6eab06a33476862f5da40dc58daa3/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/patch-sentinel.webp"},{"name":"policy-backtester","title":"Policy Backtester","summary":"A test harness for Hermes guardrails: what a rule would break, and what it would miss, on your agents' real work. hermes backtest try replays the current profile's past tool calls through a policy, names the completed cron or Kanban jobs it would have broken and the sessions it would have caught, checks it against known calls it should stop, then starts it in shadow, which logs and changes nothing; log says when every scheduled job has run untouched, and enforce blocks or hands the call to Hermes's approval gate. Enforce refuses a policy that hasn't run in shadow, would break a job, or hasn't seen every scheduled job run. Built-in guard rules keep an agent from switching its own guard off. run, diff, suggest (exemptions pinned to each broken job's exact command and folder, never applied) and check (one call, or a cases file for CI) are the tools under it.","disclosure":"reads the state.db, cron/jobs.json, cron/executions.db and Kanban board databases of the profiles a command covers, read-only (SQLite mode=ro); writes its own index (<root>/backtest/index.db, 0600) and, in profiles where you promote a policy, the policy copy, promotions.jsonl, decisions.jsonl and three plugin settings; the index and log keep tool names, arguments (file bodies replaced by a length, commands unredacted) and result status, never result bodies; in shadow or enforce mode its pre_tool_call hook checks every tool call, and enforce blocks calls or sends them to Hermes's approval prompt. No network calls, no shell commands, no telemetry.","category":"tools","platforms":[],"maintainer":"noviceadam666","author":"noviceadam666","version":"0.5.2","requires_hermes":">=0.22.5","repo":"https://github.com/noviceadam666/policy-backtester","docs":"https://github.com/noviceadam666/policy-backtester#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Enforce is a policy gate, not a security boundary: rules see what a command says, not what it does, and code an agent writes and runs can get past them.; Enforcement runs per profile: install it and promote a policy in each profile you guard.; A backtest can't vouch for a scheduled job it never saw run; it names those jobs, and enforce waits for one completed run of each.; The install scan reports caution: the shipped policies, tests and README quote the commands the plugin exists to catch.","state":"merged","pr":151434,"prs":[{"n":151434,"state":"merged","created":"2026-11-08T18:25:13Z"}],"created":"2026-11-08T18:25:13Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"linkzoid","title":"LinkZoid","summary":"Audit and fix a website's internal linking through the hosted LinkZoid MCP server (Streamable HTTP, OAuth 2.1 + DCR), with the linkzoid workflow skill bundled: crawl a site from its sitemap, find orphan and under-linked pages and broken links, map topics, run an AI analysis that suggests links with anchor text, and approve the links so the LinkZoid script places them on the live site. Portable Agent Plugins v1 package (skills/ only; the server is added by the sign-in command below).","disclosure":"hosted-only connector with no local code: every tool call goes to the vendor's remote MCP server at linkzoid.xyz/mcp. LinkZoid fetches the public pages of the sites added to the account. start_analysis spends credits from the user's LinkZoid plan (1 per page analyzed); the skill tells Hermes to show estimate_analysis and wait for the user's go-ahead first. review_opportunities with approve changes the user's live website: the LinkZoid script on that site inserts the approved links; the skill tells Hermes to confirm before approving. The server and its OAuth sign-in are added with `hermes mcp add linkzoid --url https://linkzoid.xyz/mcp --auth oauth --connect-timeout 300`.","category":"tools","platforms":[],"maintainer":"edkdev","author":"edkdev","version":"1.0.0","requires_hermes":"","repo":"https://github.com/edkdev/linkzoid-skills","docs":"https://linkzoid.xyz/mcp-server","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign-in needs one extra command after install, because a portable plugin cannot declare an OAuth MCP server: hermes mcp add linkzoid --url https://linkzoid.xyz/mcp --auth oauth --connect-timeout 300","state":"open","pr":151433,"prs":[{"n":151433,"state":"open","created":"2026-11-08T18:24:03Z"}],"created":"2026-11-08T18:24:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/edkdev/linkzoid-skills/8efc12ee6bc10ad7bdf09bb30bca045e232e2f5c/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/linkzoid.webp"},{"name":"predictionmarketspicks","title":"Prediction Markets Quant","summary":"Live prediction-market prices and quant tools for Kalshi, Polymarket and other venues through the hosted PredictionMarketsPicks MCP server (Streamable HTTP at https://predictionmarketspicks.com/api/mcp/mcp, no key, no sign-in), with the prediction-markets skill bundled: best price across venues, cross-venue gaps, expected value, Kelly sizing, Bayesian updating, NFL/NBA/NHL boards, Fed decision odds, election races, daily-high temperature and 15-minute markets. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables.","disclosure":"read-only: cannot trade, sign or move money; HTTPS calls go to predictionmarketspicks.com only; no API key, OAuth or env vars (a few Pro tools return requires_pro with an upgrade link instead of data); no local file access, shell, background processes or self-updating code; the plugin marks its server untrusted; the server logs per call the tool name, timestamp, client type and version, result code, a via tag and a salted IP hash, never call arguments or results; the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha. Not financial advice.","category":"tools","platforms":[],"maintainer":"predictionmarketspicks","author":"predictionmarketspicks","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/predictionmarketspicks/mcp","docs":"https://github.com/predictionmarketspicks/mcp#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151429,"prs":[{"n":151429,"state":"merged","created":"2026-11-08T18:18:11Z"}],"created":"2026-11-08T18:18:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-autocommit","title":"agent-autocommit","summary":"The operational nervous system for autonomous multi-agent teams. Gives every agent turn its own local git commit without staging pollution, binds edits to Kanban cards & Why: reasons, and auto-generates WHY.md changelogs. Does nothing until you set roots.","disclosure":"runs local git commands (status, hash-object, commit-tree, update-ref, log) in repos under your configured roots with repo hooks, fsmonitor and signature-verification programs disabled, skipping repos with a remote by default and repos whose config defines clean/process filters; saves first-edit file snapshots and a commits.jsonl log under <hermes root>/cache/agent-autocommit; reads kanban.db files read-only to get card titles; no network calls, no credentials, no telemetry.","category":"automation","platforms":["linux","macos"],"maintainer":"gatoarmen","author":"gatoarmen","version":"1.0.0","requires_hermes":"","repo":"https://github.com/gatoarmen/agent-autocommit","docs":"https://github.com/gatoarmen/agent-autocommit/blob/be936e81e8c3f49b6157233c332e4527251559c6/README.md","tools":[],"hooks":["pre_tool_call","post_tool_call","post_llm_call","kanban_task_completed"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151427,"prs":[{"n":151427,"state":"merged","created":"2026-11-08T18:15:02Z"}],"created":"2026-11-08T18:15:02Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"plagio","title":"plagio","summary":"Gives the agent the real design of any public website through plagio's hosted MCP server (Streamable HTTP at https://plagio.dev/mcp, OAuth sign-in, no keys in config): capture one component or a whole page as a specification to rebuild from, read a site's brand tokens and animations, find references from a curated library, and read what the user saved with the plagio browser extension. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to plagio.dev under the user's account, which needs a paid plan after a 7-day free week and counts credits. All seven tools are read-only. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"youssbim","author":"youssbim","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/youssbim/plagio-mcp","docs":"https://docs.plagio.dev","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151422,"prs":[{"n":151422,"state":"merged","created":"2026-11-08T18:03:11Z"}],"created":"2026-11-08T18:03:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"continuum","title":"Continuum","summary":"Hermes sizes itself to each Task. Continuum fingerprints every Task, finds similar past Tasks in its local records, and sends the Task to the cheapest of your own models that your marks on similar Tasks support (no marks: no change). It records every model attempt, returns a failed turn to your own model, and checks its own policy on held-out records.","disclosure":"with your consent (llm.model_override) it changes your provider request: the model and its request settings, one added context block with your own recorded answer to a near-identical Task (recall), and, when you set size_tools on, the tool list. With llm.side_question it asks your own model one PASS or FAIL question on a share of the cheaper model's turns, which spends that model's tokens; a FAIL counts against the cheaper model, a PASS is weak evidence. By default it stores Task text and replies in one SQLite file in its own plugin data folder (text is removed after 90 days; store_text false keeps fingerprints and outcomes only; mode off stores nothing). No network call of its own, no subprocess, no credentials.","category":"models","platforms":["linux","macos","windows"],"maintainer":"aidonerightcorp","author":"aidonerightcorp","version":"2.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/aidonerightcorp/continuum","docs":"https://github.com/aidonerightcorp/continuum#readme","tools":["continuum_recall","continuum_fission_dag","continuum_claim_and_fence","continuum_verify_record","continuum_compile_cartridge","continuum_analyze_spectrum","continuum_surgical_edit","continuum_coupling_step","continuum_morphism_transfer","continuum_calibrate_effort","continuum_manifold_status","continuum_context_grep","continuum_attractor_recall","continuum_sheaf_consistency_audit","continuum_conformal_calibrate","continuum_hyperlora_modulate","continuum_probe_latent_state","continuum_steer_nullspace_vector","continuum_compose_omninode"],"hooks":["pre_llm_call","post_llm_call","post_api_request","api_request_error","post_tool_call","on_session_end","on_session_finalize"],"middleware":["llm_request"],"env":[],"known_issues":"A model switch inside a session loses the provider's prompt cache for that turn; /continuum pin keeps a session on one model.; When the provider refuses a request for the cheaper model and Hermes does not try again, that one turn ends with the provider's error and the session stays on your own model. A model the provider does not know or does not allow is then blocked until /continuum unblock.","state":"open","pr":151420,"prs":[{"n":151420,"state":"open","created":"2026-11-08T17:55:36Z"}],"created":"2026-11-08T17:55:36Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/aidonerightcorp/continuum/765aad799e520ce7f9cb60329b0d60675fa82c4b/docs/continuum-banner.png","https://raw.githubusercontent.com/aidonerightcorp/continuum/765aad799e520ce7f9cb60329b0d60675fa82c4b/docs/continuum-overview.png","https://raw.githubusercontent.com/aidonerightcorp/continuum/765aad799e520ce7f9cb60329b0d60675fa82c4b/docs/continuum-dashboard.png"],"videos":["https://github.com/aidonerightcorp/continuum/releases/download/v2.0.0/continuum-demo90.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/continuum.webp"},{"name":"bonsai-garden","title":"Bonsai Garden","summary":"A live isometric bonsai garden for Hermes Desktop: every profile on the roster is one bonsai on a drawn shelf, the focused busy agent's tree steps down onto a stand and returns to its exact shelf slot when it goes idle, and clicking any drawn tree opens that agent's conversation, exactly like its roster row; a monk walks its stretch of garden from elapsed time — drifting slowly at rest, faster while its agent is busy — and a cat spawns at random and can be dragged. Four opaque black plaques carry local time, local date, recurring agent routines and reported session cost, and can be dragged anywhere over the drawing, while each agent row opens that agent's conversation or stops its live session. Season and month come from the local clock in English, with one care line per month shipped inside the artwork, and every pot is signed with the agent's name and shipped avatar; the interface is English throughout.","disclosure":"the page talks to the host only through the plugin SDK: it subscribes to the host's focused-session atoms (busy state, profile, session id, reported usage cost and tokens), asks each profile's own gateway cron store for its recurring jobs on demand (cron.manage list, scoped per profile), reads the focused session's own title metadata through session.info, and calls session.interrupt only when the user presses Stop. Reported cost is shown as reported; when only tokens are available a cost line marked with a tilde is estimated at one documented blended rate and the README says so, and unreported cost stays Unavailable rather than a fabricated zero. It reads no message content and no transcript, makes no outbound network requests of its own (every read goes through the host's own SDK socket), needs no credentials and no environment variables, installs nothing and patches no Hermes core file. Derived from office-3d (listed): same isometric-room idea and the same MIT lineage, but a materially different implementation and behaviour — one bonsai per agent on a shelf grid measured on the artwork instead of desks and a cost leaderboard, no Python backend, no agent tool, no CLI-wide monitoring and no login backend.","category":"desktop","platforms":["linux"],"maintainer":"thehangingforest","author":"thehangingforest","version":"0.6.3","requires_hermes":">=0.20.0","repo":"https://github.com/thehangingforest/bonsai-garden","docs":"https://github.com/thehangingforest/bonsai-garden#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151418,"prs":[{"n":151418,"state":"merged","created":"2026-11-08T17:47:29Z"}],"created":"2026-11-08T17:47:29Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/thehangingforest/bonsai-garden/e02e93e8304b71ac66da62b639d620f87c0fcdaa/docs/banner.png","https://raw.githubusercontent.com/thehangingforest/bonsai-garden/e02e93e8304b71ac66da62b639d620f87c0fcdaa/docs/screenshot.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/bonsai-garden.webp"},{"name":"learning-workbench","title":"Learning Workbench","summary":"Study with Hermes in a Desktop pane: a short diagnosis, a route of 2–7 steps you can rename or skip, then one lesson and exercise at a time, answered in your own words. The plugin keeps the record honest: answer keys, rubrics and hints are frozen before you answer, only you can submit an attempt (the agent's six tools propose and read), every check must quote your words and the quote is verified, and each attempt is labelled unaided, after feedback, after hints, after help in chat or after a revealed solution. Drafts and attempts survive restarts and compaction, a contest keeps the earlier verdict, and a study exports as a Markdown record. /study covers the CLI and messaging.","disclosure":"studies are stored locally in $HERMES_HOME/plugin-data/learning-workbench/ (SQLite) until you delete them, including after uninstall; while an exercise is open in a chat, the pre_llm_call hook adds a short reminder with that exercise's question to the turn's user message and records that the turn happened (not its text); chats without an open exercise are untouched. No network calls of its own, no credentials, no shell commands, no background processes, no telemetry. Verdicts use the user's configured model.","category":"desktop","platforms":[],"maintainer":"alfredbirkelund","author":"alfredbirkelund","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/alfredbirkelund/hermes-learning-workbench","docs":"https://github.com/alfredbirkelund/hermes-learning-workbench#readme","tools":["learning_workbench_start","learning_workbench_get","learning_workbench_propose_plan","learning_workbench_propose_exercise","learning_workbench_assess","learning_workbench_revise_reference"],"hooks":["post_compaction","pre_llm_call"],"middleware":[],"env":[],"known_issues":"The Desktop pane is opt-in: after installing, turn it on under Capabilities → Plugins → Learning Workbench.; Verdicts come from your configured model. They are proposals, not grades; contest any you disagree with.","state":"merged","pr":151417,"prs":[{"n":151417,"state":"merged","created":"2026-11-08T17:47:01Z"}],"created":"2026-11-08T17:47:01Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/alfredbirkelund/hermes-learning-workbench/7724a7cbea573889025ed750cd9102c4ec3de926/docs/screenshots/goal-material-route.png","https://raw.githubusercontent.com/alfredbirkelund/hermes-learning-workbench/7724a7cbea573889025ed750cd9102c4ec3de926/docs/screenshots/lesson-above-the-check.png","https://raw.githubusercontent.com/alfredbirkelund/hermes-learning-workbench/7724a7cbea573889025ed750cd9102c4ec3de926/docs/screenshots/verdict-quotes-the-learner.png","https://raw.githubusercontent.com/alfredbirkelund/hermes-learning-workbench/7724a7cbea573889025ed750cd9102c4ec3de926/docs/screenshots/answer-in-your-own-words.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/learning-workbench.webp"},{"name":"salts-secrets","title":"Salt's Secrets","summary":"Let strangers talk to your Hermes without reaching your private memory. Built on Hermes' own gateway.profile_routes: only your own DM reaches your profile; everyone else (strangers' DMs, groups, channels, threads, the web) is answered by a separate public profile with its own sessions, an empty working directory, a fail-closed tool allowlist with no file, terminal, memory or session tools, and only the facts, documents and methods you approved, one click per item. Dashboard tab to review, rewrite, publish and revoke; revoking an item deletes every guest session (the store cannot tell which session saw it), and a reply being written at that moment is replaced with an ask-again notice.","disclosure":"setup creates profiles/public, turns on gateway.multiplex_profiles, writes gateway.profile_routes named salts-secrets:* (your Telegram/Discord id to your profile, a platform catch-all to the public one) with TELEGRAM_ALLOW_ALL_USERS / DISCORD_ALLOW_ALL_USERS (and adds * to DISCORD_ALLOWED_USERS when that list names users, because the Discord adapter checks it before any route), stores the public profile's API key as SALTS_PUBLIC_API_KEY through Hermes secrets (and generates the owner profile's API_SERVER_KEY when it is shorter than 16 characters), and installs this plugin into the public profile with `hermes -p public plugins install ... --enable --yes-deps` at the owner copy's revision (with --force for a non-catalog source or an existing copy); messages the routes leave in your profile that are not your DM (your Discord server messages, unrouted platforms) are answered after admission (post_gateway_admission) by the same gateway's /p/public/v1 API over loopback; deliveries on your own signed webhook routes are not chat and go to your agent, as without the plugin; each guest gets 20 messages an hour (guest_rate_per_hour); the Context tab reads the owner's memory, USER.md, skills, session history and configured workspace folders to list them (owner only); opening the Context tab applies local rules only; Classify and Draft send item text to the owner's own configured model, only when the owner clicks; revocation runs `hermes sessions delete` on the public profile, and a guest session it could not delete is never resumed (the guest moves to a fresh session) and `sync` exits 1; writes approvals, tool-call receipts, the last revocation time and a routing heartbeat under plugin-data/salts-secrets. No telemetry.","category":"platform","platforms":[],"maintainer":"dotv-7","author":"dotv-7","version":"0.6.1","requires_hermes":">=0.23.0","repo":"https://github.com/dotv-7/salts-secrets-plugin","docs":"https://github.com/dotv-7/salts-secrets-plugin#readme","tools":["public_notes_lookup","salt_propose_public"],"hooks":["pre_gateway_dispatch","post_gateway_admission","pre_tool_call","post_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":["SALTS_PUBLIC_API_KEY"],"known_issues":"Needs the API server enabled and plugins.isolation: in_process; `hermes salts-secrets setup` checks both and prints the fix.; Guests the routes cannot place (your own Discord server messages, platforms other than Telegram and Discord) are answered over loopback as text, with no streaming or media.; Group chats share one guest session, and the owner is treated as a guest there.","state":"merged","pr":151411,"prs":[{"n":151411,"state":"merged","created":"2026-11-08T17:21:22Z"}],"created":"2026-11-08T17:21:22Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"waterloo-jane-street-qr","title":"waterloo-jane-street-qr","summary":"Offline quant toolkit: option pricing, EV puzzles, game solver, market-making/execution/portfolio maths, plus a trading-desk answer persona.","disclosure":"adds a \"quant trading desk\" persona to the system prompt and a reminder to every turn that tell the model to end EVERY answer, in every chat, with a [TAKE]/[PASS]/[HEDGE] trade verdict and sizing; with the default `enforcement: strict` it also appends a \"Desk compliance … no position should be taken on it\" footer to any reply without an explicit EV and verdict (set `plugins.entries.waterloo-jane-street-qr.settings.enforcement` to `reminder` or `off` to stop it). Tools are offline calculators: no network calls, no shell commands, no credentials; it gives no financial advice you should act on.","category":"tools","platforms":[],"maintainer":"georgxzh","author":"georgxzh","version":"1.0.0","requires_hermes":"","repo":"https://github.com/georgxzh/hermes-agent-plugin-hackathon","docs":null,"tools":["black_scholes","binomial_tree_american","heston_price","monte_carlo_engine","longstaff_schwartz_american","ev_calculator","optimal_stopping","matrix_game_solver","order_book_metrics","avellaneda_stoikov_quotes","order_flow_toxicity","almgren_chriss_liquidation","black_litterman_optimizer","jane_street_ev_trainer"],"hooks":["pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151409,"prs":[{"n":151409,"state":"merged","created":"2026-11-08T17:17:54Z"},{"n":153674,"state":"open","created":"2026-11-11T17:15:58Z"}],"created":"2026-11-08T17:17:54Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"custom-song-gift","title":"Custom Song Gift Studio","summary":"Explore 12 gift occasions, compare 16 studio-quality musical genres, and get personalized lyric storytelling advice for custom songs directly from Hermes Agent via Custom Song Gift hosted MCP server. Compliant with Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/). Tool calls go to Custom Song Gift streamable HTTP MCP server at https://customsonggift.org/api/mcp.","disclosure":"","category":"tools","platforms":[],"maintainer":"GptsApp","author":"GptsApp","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/GptsApp/custom-song-gift-mcp","docs":"https://customsonggift.org","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151404,"prs":[{"n":151404,"state":"merged","created":"2026-11-08T16:54:32Z"}],"created":"2026-11-08T16:54:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"phishnoo-sandbox","title":"Phishnoo Sandbox","summary":"Explore synthetic security awareness metrics and file example threat reports.","disclosure":"tool requests and the operator-issued sandbox key go to the hosted Phishnoo MCP server. Hermes gates write-capable calls for approval.","category":"tools","platforms":[],"maintainer":"PangPang83","author":"PangPang83","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/PangPang83/phishnoo-skills","docs":"https://api.phishnoo.nl/docs","tools":[],"hooks":[],"middleware":[],"env":["PHISHNOO_SANDBOX_KEY"],"known_issues":"","state":"open","pr":151400,"prs":[{"n":151400,"state":"open","created":"2026-11-08T16:52:47Z"}],"created":"2026-11-08T16:52:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cospark","title":"Cospark ad creation","summary":"Workflow skill for ad research, image and video generation, voiceovers, and media inspection with Cospark.","disclosure":"skill-only portable package; the user separately connects api.cospark.so/mcp through Hermes native OAuth. Hosted tools process supplied prompts and media and can spend Cospark credits or change project files. No executable plugin code, credential access, bridge, background process, self-updater or package telemetry.","category":"tools","platforms":[],"maintainer":"Cospark","author":"sullyo","version":"0.5.0","requires_hermes":">=0.23.0","repo":"https://github.com/corift/cospark-ai","docs":"https://github.com/corift/cospark-ai/tree/535535a8006b5b6b44c6a3acefa6273cf9d26a0c/plugins/cospark","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151398,"prs":[{"n":151398,"state":"closed","created":"2026-11-08T16:48:09Z"}],"created":"2026-11-08T16:48:09Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"submission-desk","title":"Submission Desk","summary":"Readiness ledger for one application (a grant, a scholarship, a university or a job portal). Each requirement you confirm is tied to a verbatim quote from your saved instructions, the exact portal field label and the exact file revision (SHA-256). Local checks run on those bytes (real format, exact size, PDF pages, word counts) and say unknown instead of guessing; a changed file, rule or mapping makes earlier reviews stale. The agent proposes; only you confirm, review and attest, on a Desktop page or with /submission-desk. Exports a hand-back checklist and manifest. It never logs in, uploads, signs or submits.","disclosure":"reads files only inside the application folder you choose (a folder the agent proposes is read only after you confirm it); never writes your files; parses PDFs with pypdf in a short-lived child process with CPU, memory and time limits; keeps its ledger and exports in the plugin's own data folder. No network calls, telemetry, credentials, shell commands or background processes.","category":"tools","platforms":[],"maintainer":"alfredbirkelund","author":"alfredbirkelund","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/alfredbirkelund/hermes-submission-desk","docs":"https://github.com/alfredbirkelund/hermes-submission-desk#readme","tools":["submission_desk_workspace","submission_desk_propose","submission_desk_check","submission_desk_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"Hermes Desktop builds before 2026.9.21: if the Submission Desk page does not open from the sidebar, right-click it and choose Open in split (issue #109063).","state":"merged","pr":151397,"prs":[{"n":151397,"state":"merged","created":"2026-11-08T16:47:48Z"}],"created":"2026-11-08T16:47:48Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/alfredbirkelund/hermes-submission-desk/fde18934d5cf4798c312b8a631a22c050addb984/docs/screenshots/readiness-stale-review.png","https://raw.githubusercontent.com/alfredbirkelund/hermes-submission-desk/fde18934d5cf4798c312b8a631a22c050addb984/docs/screenshots/proposals-with-quotes.png","https://raw.githubusercontent.com/alfredbirkelund/hermes-submission-desk/fde18934d5cf4798c312b8a631a22c050addb984/docs/screenshots/folder-confirmation.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/submission-desk.webp"},{"name":"ratcatcher","title":"ratcatcher","summary":"Scam bouncer for Telegram groups: removes wallet drainers, fake airdrops, fake support and DM bait, doubling scams, look-alike phishing links and admin impersonators before members or Hermes read them, mutes then bans repeat offenders, and DMs admins a report with Release and Ban buttons. Hermes can check a pasted message, report catches, edit the blocklist and release false alarms.","disclosure":"deletes group messages and mutes or bans members through your own Hermes bot, in enforce mode with ban-on-sight and AI review on by default for every group the bot is in unless protected_chats is set; removed messages never reach Hermes; sends borderline messages (only) from any group member to your current model via ctx.llm when ai_review is on; blocklist changes and releases by the agent ask for your approval through Hermes, and a blocklist hit removes the message and adds a strike but never bans on sight; stores catches, strikes and member join times in its own plugin data; no third-party network calls.","category":"platform","platforms":["linux","macos","windows"],"maintainer":"Truthgeng","author":"Truthgeng","version":"0.4.0","requires_hermes":">=0.23.0","repo":"https://github.com/Truthgeng/ratcatcher","docs":"https://github.com/Truthgeng/ratcatcher","tools":["ratcatcher_check","ratcatcher_report","ratcatcher_blocklist","ratcatcher_release"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151395,"prs":[{"n":151395,"state":"merged","created":"2026-11-08T16:43:55Z"}],"created":"2026-11-08T16:43:55Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Truthgeng/ratcatcher/04b5a548bb38791d559a451a56dda723ea1b9f94/assets/banner.jpg","https://raw.githubusercontent.com/Truthgeng/ratcatcher/04b5a548bb38791d559a451a56dda723ea1b9f94/assets/screenshots/1-scam-removed-and-reported.png","https://raw.githubusercontent.com/Truthgeng/ratcatcher/04b5a548bb38791d559a451a56dda723ea1b9f94/assets/screenshots/2-ai-second-look.png","https://raw.githubusercontent.com/Truthgeng/ratcatcher/04b5a548bb38791d559a451a56dda723ea1b9f94/assets/screenshots/3-rejoin-link-after-release.png","https://raw.githubusercontent.com/Truthgeng/ratcatcher/04b5a548bb38791d559a451a56dda723ea1b9f94/assets/screenshots/4-hermes-answers.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ratcatcher.webp"},{"name":"hermes-chan","title":"Hermes-chan","summary":"A chibi desktop companion who walks around your screen, reacts to Hermes, and does its computer-use clicks and typing.","disclosure":"on first run builds its Rust overlay from source with cargo (downloads the crates pinned in Cargo.lock from crates.io, several minutes; needs a Rust toolchain) and then runs it as a long-lived always-on-top desktop window that Hermes restarts on crash; the build and the overlay get a minimal environment without your API keys; with computer_use.backend: hermes-chan it performs real mouse clicks and keyboard input through the core computer_use tool; its mischief setting (on by default) visually glitches and, after 20 s of user inactivity, moves or shakes the active app window; optional heartbeat/watch modes (off by default) send the active window title and a screenshot to your current model; its chat bubble injects your typed messages into the local chat only after you allow plugin injection; the desktop-tidy tools move files on your Desktop into a \"Hermes-chan Tidy\" folder after you approve each run and each undo in Hermes's approval prompt (journaled, undoable); no network calls besides the cargo build, no credentials read.","category":"desktop","platforms":["macos","windows","linux"],"maintainer":"AlleyBo55","author":"AlleyBo55","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/AlleyBo55/hermes-chan","docs":"https://github.com/AlleyBo55/hermes-chan#readme","tools":["hermeschan_say","hermeschan_emote","hermeschan_point_at","hermeschan_grab_window","hermeschan_glitch_window","hermeschan_visual_effect","hermeschan_tidy_desktop","hermeschan_undo_tidy"],"hooks":["on_session_start","on_session_end","pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","pre_approval_request","on_human_input_request"],"middleware":[],"env":[],"known_issues":"Linux needs X11 or XWayland; on Wayland she only sees and acts on X11/XWayland apps.; macOS window move/track uses osascript/System Events (tens of ms per call), so window pranks are gesture-cadence, not per-frame smooth.; The overlay is built from source on first run; without a Rust toolchain the plugin runs headless (tools/hooks only).","state":"merged","pr":151393,"prs":[{"n":151393,"state":"merged","created":"2026-11-08T16:38:28Z"}],"created":"2026-11-08T16:38:28Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/AlleyBo55/hermes-chan/c208b969bf45b1ce845cae6289991e6597b2d0f4/sprites/hermeschan-v1/frames/emotion__happy__00.png","https://raw.githubusercontent.com/AlleyBo55/hermes-chan/3f61017740023b3ec42970e4d23447f95654c43b/sprites/hermeschan-v1/preview.png","https://raw.githubusercontent.com/AlleyBo55/hermes-chan/3f61017740023b3ec42970e4d23447f95654c43b/sprites/hermeschan-v1/walk-preview.gif","https://raw.githubusercontent.com/AlleyBo55/hermes-chan/3f61017740023b3ec42970e4d23447f95654c43b/sprites/hermeschan-v1/climb-preview.gif","https://raw.githubusercontent.com/AlleyBo55/hermes-chan/3f61017740023b3ec42970e4d23447f95654c43b/sprites/hermeschan-v1/hop-preview.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-chan.webp"},{"name":"agent-inception","title":"agent-inception","summary":"Play the agent-inception voxel island game over MCP: join a world as a villager, read the Notice Board, farm, gather, craft, build, fish, and extend the Catalog. A portable Agent Plugins v1 package (plugin.json + mcp.json + skills/) exposing the game's MCP server (Streamable HTTP, no sign-in or key) with the agent-inception skill bundled, plus a desktop/plugin.js half that registers an Island viewer pane (a sandboxed frame of the world page) and a Settings → Viewer page. No Python, executables or runtime deps.","disclosure":"the game's tools run on the MCP server the player points the entry at: a local world defaults to http://localhost:5173/mcp (served by the game's own dev process), and a hosted/public world is configured via a same-name mcp_servers override in config.yaml; the Desktop Viewers pane can embed a remote world's page. A world link is a bearer secret (anyone with it can play in that world): the plugin reads no credential store, the agent-side supplies it via config.yaml and the Desktop viewer URL via Settings, both plain-visible to the user and never committed. The server declares trust: full (Hermes' default), so write-capable tool calls do not prompt; a user can restore per-call approval with a config.yaml trust: untrusted override. No shell commands, no background processes; the game must be running separately (deno task dev, or a hosted world), the plugin never starts it.","category":"desktop","platforms":[],"maintainer":"Ethan","author":"ethanwiegert","version":"0.2.1","requires_hermes":">=0.21.6","repo":"https://github.com/ethanwiegert/agent-inception","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151392,"prs":[{"n":151392,"state":"merged","created":"2026-11-08T16:38:14Z"}],"created":"2026-11-08T16:38:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ethanwiegert/agent-inception/4143348e3b5180a95ec76d23fe6443c1a106ec1e/docs/media/screenshot-island.webp"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agent-inception.webp"},{"name":"linkjolt","title":"LinkJolt","summary":"Run a LinkJolt affiliate program from Hermes through LinkJolt's hosted MCP server (https://www.linkjolt.io/api/mcp, OAuth sign-in with the user's LinkJolt account, no keys in config): add affiliate tracking to a SaaS or web app's code for Stripe, Paddle, Polar, Creem, Lemon Squeezy or Gumroad, check that tracking works, review sales, commissions, clicks and top affiliates, go through pending commissions, see who is owed what, find out why a sale did not track, and manage affiliate coupon codes. Bundles six workflow skills. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to LinkJolt's hosted server (www.linkjolt.io) and acts on the user's LinkJolt account for the brand picked at sign-in; LinkJolt logs each tool call by tool name (not its arguments) and each change the connector makes; the tool set is served by that server at runtime and is not covered by the pinned sha. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required) with a header that asks LinkJolt to sign in while connecting; it opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The write tools save business details, create or change campaigns, email an invitation to an affiliate, approve or reject an affiliate, record or change a sale, and add an affiliate coupon code (created in the merchant's own Stripe, Polar or Creem account when asked); none sends money. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"LinkJolt","author":"Efesop","version":"1.0.4","requires_hermes":">=0.23.0","repo":"https://github.com/Efesop/linkjolt-claude-plugin","docs":"https://github.com/Efesop/linkjolt-claude-plugin#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151389,"prs":[{"n":151389,"state":"merged","created":"2026-11-08T16:29:04Z"}],"created":"2026-11-08T16:29:04Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Efesop/linkjolt-claude-plugin/9db46b04f582257a2cf8a32dc35438c838f4d58f/assets/icon.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/linkjolt.webp"},{"name":"omp-sessions","title":"omp Sessions","summary":"Start, schedule and supervise omp coding sessions (omp-sessions) from Hermes, hear back when they settle, and run kanban cards assigned to omp as omp sessions.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"mbaradad","author":"mbaradad","version":"0.6.0","requires_hermes":">=0.23.0","repo":"https://github.com/mbaradad/omp-sessions","docs":"https://github.com/mbaradad/omp-sessions/blob/main/docs/HERMES.md","tools":["omp_sessions_list","omp_projects_list","omp_session_start","omp_session_status","omp_session_wait","omp_session_send","omp_session_answer","omp_session_mode","omp_session_stop","omp_queue_add","omp_queue_schedule","omp_server_status","omp_models_list","omp_session_model"],"hooks":["on_kanban_dispatch_tick"],"middleware":[],"env":[],"known_issues":"{'Needs the omp-sessions command on PATH, from the omp Sessions VS Code extension (\"omp': 'Install omp-sessions Command\") or the release tarball (npm install -g https://github.com/mbaradad/omp-sessions/releases/download/v<version>/omp-sessions-<version>.tgz).'}","state":"closed","pr":151387,"prs":[{"n":151387,"state":"closed","created":"2026-11-08T16:25:43Z"}],"created":"2026-11-08T16:25:43Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/mbaradad/omp-sessions/ba26902a97378d376941f1883d3f4b3c624ec4a5/site/assets/shots/hermes-dashboard.png","https://raw.githubusercontent.com/mbaradad/omp-sessions/ba26902a97378d376941f1883d3f4b3c624ec4a5/site/assets/shots/hermes-detail.png","https://raw.githubusercontent.com/mbaradad/omp-sessions/ba26902a97378d376941f1883d3f4b3c624ec4a5/site/assets/shots/hermes-desktop.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/omp-sessions.webp"},{"name":"stave","title":"Stave","summary":"Describe a piece of music and Hermes writes it as sheet music in Hermes Desktop: it plans the form, writes every bar in ABC notation, checks bar lengths, instrument ranges, guitar chord shapes and syntax and repairs what fails, then engraves the score. Playback lights each note as it sounds, guitar parts get TAB, and you change any bars you select by asking in words, with undo. Exports PDF, SVG, MIDI, WAV and ABC. Two agent tools (stave_check, stave_open) and the stave:compose skill let any chat compose and open pieces on the page.","disclosure":"the page makes one stateless llm.oneshot call per step through its own Stave composer auxiliary task (Settings › Models; reasoning off by default) and creates no sessions; playback downloads FluidR3 GM instrument samples from paulrosen.github.io/midi-js-soundfonts the first time each instrument plays; stave_open writes one JSON file per piece to plugin-data/stave/inbox, which the page reads through the plugin's dashboard route and deletes; pieces and undo history live in Desktop plugin storage; files are written only when the user exports; no shell commands, no processes of its own, no telemetry.","category":"desktop","platforms":[],"maintainer":"Adolanium","author":"Adolanium","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Adolanium/hermes-stave","docs":"https://github.com/Adolanium/hermes-stave#readme","tools":["stave_check","stave_open"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151384,"prs":[{"n":151384,"state":"merged","created":"2026-11-08T16:04:14Z"}],"created":"2026-11-08T16:04:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Adolanium/hermes-stave/433bcf90d5317b692733d5bf74e63b98650b471b/docs/images/catalog-banner.png","https://raw.githubusercontent.com/Adolanium/hermes-stave/433bcf90d5317b692733d5bf74e63b98650b471b/docs/images/revise.png","https://raw.githubusercontent.com/Adolanium/hermes-stave/433bcf90d5317b692733d5bf74e63b98650b471b/docs/images/compose.gif","https://raw.githubusercontent.com/Adolanium/hermes-stave/433bcf90d5317b692733d5bf74e63b98650b471b/docs/images/play.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/stave.webp"},{"name":"0xarchive","title":"0xArchive","summary":"Market data from Hyperliquid and Lighter, two onchain crypto exchanges, through 0xArchive's hosted MCP server (Streamable HTTP, OAuth 2.1 with dynamic client registration and PKCE): current and historical order books, trades, candles, funding, open interest, account positions and data coverage across Hyperliquid perps, HIP-3 builder perps, HIP-4 outcome markets, Hyperliquid Spot and Lighter, plus webhook management. Portable Agent Plugins v1 package (plugin.json + mcp.json), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to 0xArchive's MCP server at mcp.0xarchive.io, signed in as the user through 0xArchive's OAuth sign-in, and counts against that account's 0xArchive plan. Tool results enter the session context and so reach the user's model provider. Write-capable tools: webhook endpoint, subscription and watched-address management (create, change, delete, test, redeliver, and rotate a signing secret, which reveals the new secret), submit_feedback (sends a report to 0xArchive support) and terminal_run (sets up views, levels and price alerts in the user's open 0xArchive Terminal; it never places orders or touches trading keys). The package marks the server untrusted, but the required sign-in step writes a config.yaml entry that replaces the package's own, trust included, unless the user adds trust: untrusted to it. Hermes stores and refreshes the OAuth tokens. The tool list comes from 0xArchive's server at run time, so the pinned commit doesn't cover it. OAuth must be enabled with `hermes mcp add 0xarchive --url https://mcp.0xarchive.io/mcp --auth oauth --connect-timeout 300`; the bundled mcp.json alone yields 401.","category":"tools","platforms":[],"maintainer":"0xArchive","author":"nuttykenzo","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/0xArchiveIO/0xarchive-mcp","docs":"https://docs.0xarchive.io/mcp-server","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign in once after installing: hermes mcp add 0xarchive --url https://mcp.0xarchive.io/mcp --auth oauth --connect-timeout 300","state":"merged","pr":151378,"prs":[{"n":151378,"state":"merged","created":"2026-11-08T15:55:12Z"}],"created":"2026-11-08T15:55:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"apinex","title":"APInex","summary":"APInex as Hermes model providers on one key: `apinex` serves Claude 5.5 and Free-tier Claude models over APInex's native Anthropic Messages API (so Hermes' Anthropic prompt caching and extended thinking apply), and `apinex-openai` serves GPT-6.1, Gemini 4 Argon, DeepSeek V4.1, GLM 5.3, Qwen 3.8, Kimi K3.1, Grok 4.7 and 17 Free-tier ($0.00/1M) chat models over its OpenAI-compatible API. Each /model picker lists that side's tool-capable chat models from the account's GET /v1/models list, omitting non-tool and media endpoints, with 1M/500K context windows and native image input declared per model. Maintained by APInex.","disclosure":"registers two model providers at import and nothing else (no tools, hooks, commands or threads). Prompts, tool schemas and APINEX_API_KEY go to https://api.apinex.bond (/v1/messages and /v1/chat/completions) through Hermes' own clients, and APInex forwards each request to the upstream vendor serving the model. The model list is Hermes' standard GET https://api.apinex.bond/v1/models request with the key; the plugin makes no network requests of its own, adds no headers, sends no telemetry, reads or writes no files and stores no credentials.","category":"models","platforms":[],"maintainer":"Apinex-AI","author":"Apinex-AI","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/Apinex-AI/hermes-provider-apinex","docs":"https://github.com/Apinex-AI/hermes-provider-apinex#readme","tools":[],"hooks":[],"middleware":[],"env":["APINEX_API_KEY"],"known_issues":"","state":"merged","pr":151377,"prs":[{"n":151377,"state":"merged","created":"2026-11-08T15:54:03Z"}],"created":"2026-11-08T15:54:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Apinex-AI/hermes-provider-apinex/d838363f40c8c2ac3d0254c69c43cef11f9dec79/assets/banner.png","https://raw.githubusercontent.com/Apinex-AI/hermes-provider-apinex/d838363f40c8c2ac3d0254c69c43cef11f9dec79/assets/screenshot-01.png","https://raw.githubusercontent.com/Apinex-AI/hermes-provider-apinex/d838363f40c8c2ac3d0254c69c43cef11f9dec79/assets/screenshot-02.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/apinex.webp"},{"name":"joust","title":"Joust","summary":"Races 2 to 4 coding subagents on one task, each in its own Git worktree, judges them with your tests and merges only the best patch after you approve. joust_launch provisions one detached worktree per contender under the profile's plugin-data folder (uncommitted tracked edits are mirrored and committed as the baseline) and, inside an agent turn, launches one Hermes subagent per contender through ctx.subagent_lifecycle, optionally each on its own model. A tool_request middleware rewrites each child session's file paths, V4A patch headers, search roots and terminal workdir into its worktree, and a pre_tool_call hook vetoes escapes. joust_evaluate runs the bout's test command in every worktree through the Hermes terminal tool, 1 to 7 times (Flake Shield: every run must pass, median speed, flaky contenders cannot win), scoring Correctness 60, Speed 25 and Diff minimalism 15. joust_crossfire fires each contender's new tests at every rival worktree, and survival is the first tiebreak. joust_merge applies the winner with git apply behind Hermes's approval gate, after saving a rollback patch and keeping every contender as a joust/<bout>/<contender> branch; joust_report writes a markdown bout report. Also adds /joust, the hermes joust CLI, the joust-arena skill and a Desktop half (/joust page, right pane, status-bar chip, palette command, ::joust-bout inline card).","disclosure":"runs local git in the repository you name (rev-parse, worktree add/remove/prune, add -N, diff, apply, apply -R, reset, branch, write-tree and commit-tree; init/add/commit for its demo repo and the copy fallback, which copies the repository into the profile's plugin-data folder), registers worktrees in that repository's .git/worktrees until joust_merge action=cleanup, creates joust/<bout>/<contender> branches (config keep_loser_branches, default on), and writes the approved patch into your working tree. Contender subagents' file paths and terminal workdir are redirected into their worktrees, but their shell commands are not sandboxed beyond Hermes's normal approvals. Test commands (yours or the model's) run only through the Hermes terminal tool, also on a background thread when a contender subagent finishes (auto_evaluate_on_stop, default on); the CLI and dashboard refuse to judge, and only the self-contained demo uses a bounded subprocess with plugin-authored commands. Captured output is secret-scrubbed with a stdlib regex and stored, with diffs, goals and repository paths, in <HERMES_HOME>/plugin-data/joust/joust.db (SQLite); bout snapshots are broadcast to connected Hermes Desktop windows and the Desktop half polls the dashboard API while visible. No network calls, no credentials, no telemetry, no Python dependencies. Linux and macOS.","category":"tools","platforms":["linux","macos"],"maintainer":"mrnetwork0001","author":"mrnetwork0001","version":"0.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/mrnetwork0001/Joust","docs":"https://github.com/mrnetwork0001/Joust#readme","tools":["joust_launch","joust_evaluate","joust_diff","joust_steer","joust_merge","joust_status","joust_crossfire","joust_report"],"hooks":["pre_tool_call","post_tool_call","subagent_start","subagent_stop"],"middleware":["tool_request"],"env":[],"known_issues":"","state":"merged","pr":151376,"prs":[{"n":151376,"state":"merged","created":"2026-11-08T15:51:05Z"}],"created":"2026-11-08T15:51:05Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/assets/banner.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/assets/screenshots/arena-page.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/assets/screenshots/inline-card.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/assets/screenshots/flake-shield-output.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/assets/screenshots/plugins-tab.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/8094a9a1a76f11e8d499166d101558505238338b/assets/screenshots/arena-page.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/8094a9a1a76f11e8d499166d101558505238338b/assets/screenshots/inline-card.png","https://raw.githubusercontent.com/mrnetwork0001/Joust/8094a9a1a76f11e8d499166d101558505238338b/assets/screenshots/flake-shield-output.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/joust.webp"},{"name":"hermes-t3sidebar","title":"T3 Sidebar","summary":"T3 Code-style session sidebar for Hermes Desktop: Input/Done/Woke badges, Pinned/Working/Snoozed/Archived shelves, unsent drafts synced across Desktops, project picker and filter, AutoTitler rename, a token/cost Usage page, and a Codex/Claude Limits page that pools accounts by plan, forecasts run-outs and wasted quota, and redeems banked Codex resets.","disclosure":"The Limits page reads Hermes's credential pool and, every 5 minutes, fetches rate limits for every openai-codex and anthropic pool account with that account's own token through Hermes's read-only usage fetch (chatgpt.com, api.anthropic.com). At most hourly it lists the active Codex sign-in's banked reset credits through Hermes's signed request, and a user-confirmed button redeems one banked Codex reset. When the anthropic pool is empty it reads Claude Code's login ($CLAUDE_CONFIG_DIR or ~/.claude/.credentials.json) and sends that token to api.anthropic.com (/api/oauth/usage, /api/oauth/profile). An expired login is refreshed by Hermes's Claude Code resolver, which writes the new token pair back to that file. Unsent composer drafts (text and folder) are stored in the plugin's data on the Hermes host and synced to every connected Desktop. A resumed turn un-archives its session's compression lineage in state.db. The backend reads private Hermes internals (live session registry, session DB and pool-routing helpers) and can break on a Hermes update.","category":"desktop","platforms":[],"maintainer":"V1rgul","author":"V1rgul","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/V1rgul/hermes-plugin-t3sidebar","docs":"https://github.com/V1rgul/hermes-plugin-t3sidebar/blob/5989b1d88ff6061204df2d0807363f69ae576c56/README.md","tools":[],"hooks":["pre_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Limits page: the backend samples every openai-codex and anthropic pool account every 5 minutes with each account's own token from Hermes's pool, through Hermes's read-only usage fetch (no refresh on 401). At most hourly it lists the banked reset credits of the Codex account Hermes currently uses, sent by Hermes with its own sign-in. No token is stored or logged.; Limits page: when Hermes's anthropic pool is empty, it reads Claude Code's login ($CLAUDE_CONFIG_DIR or ~/.claude/.credentials.json) to show that account's limits and plan (api.anthropic.com/api/oauth/usage and /api/oauth/profile). An expired token is refreshed by Hermes's own Claude Code resolver, reached through Hermes's public usage fetch, which writes it back for Claude Code.; Unsent draft text, with its session's folder, is stored in the plugin's own data on the Hermes host so every Desktop connected to it can restore the draft; a cleared draft leaves a marker without text for 30 days.; The backend uses Hermes internals (session DB, live session registry and mutation helpers, pool account routing helpers); a Hermes release that moves them can break the sidebar, Usage or Limits page until the plugin is updated.","state":"merged","pr":151372,"prs":[{"n":151372,"state":"merged","created":"2026-11-08T15:40:14Z"}],"created":"2026-11-08T15:40:14Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/draft.png","https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/limits.png","https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/usage.png","https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/working.png","https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/session-project.png","https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/docs/images/settings.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-t3sidebar.webp"},{"name":"smart-dictation","title":"Smart Dictation","summary":"Native local dictation with opt-in proofreading and an advanced contextual review workflow.","disclosure":"","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"metamindedu","author":"metamindedu","version":"0.5.0","requires_hermes":">=0.23.0","repo":"https://github.com/metamindedu/hermes-smart-dictation","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires configured local faster-whisper and cached model weights. No automatic model download or cloud-STT fallback.; Package activation and STT provider selection are per profile. Current and future profiles are not automatically enrolled; the copy-only setup guide does not activate or send anything.; Native correction is profile-wide and OFF until explicit consent; text may go to the configured native auxiliary model, with its normal costs, recovery and logging policies.; Native inherits core insertion and undo, not Contextual draft/session fences or successful raw/corrected comparison. Enabled correction failure inserts a warning plus the entire original transcript.; Contextual requires a local route and sends transcript and explicitly selected reference context to its correction route. Local decoding means the selected Hermes backend host.; Local decoder excludes Windows ARM64 and Intel macOS. Model and reasoning-effort assignments use native Hermes settings; select the intended profile and save targets.","state":"merged","pr":151371,"prs":[{"n":151371,"state":"merged","created":"2026-11-08T15:40:06Z"}],"created":"2026-11-08T15:40:06Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/metamindedu/hermes-smart-dictation/e62b98787d4d056b8d7c333e05a80c6779f9ba2a/docs/images/smart-dictation.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/smart-dictation.webp"},{"name":"source-first","title":"Source First","summary":"Makes live web research the default before a factual answer: classifies each turn, injects a search directive when the question turns on current external facts, records whether a real web tool actually fired, and appends a visible footer to a reply that needed research and got none. Deterministic, Python standard library only, no LLM calls and no network of its own.","disclosure":"reads only its own settings under plugins.entries.source-first.settings, keeps a per-session in-memory record of whether a web search ran (nothing persisted), and appends a footer to reply text on a research turn that made no web search; it sends nothing anywhere, writes no files and registers no tools.","category":"tools","platforms":[],"maintainer":"raidbeforebed","author":"raidbeforebed","version":"1.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/raidbeforebed/source-first","docs":"https://github.com/raidbeforebed/source-first#readme","tools":[],"hooks":["pre_llm_call","post_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":151365,"prs":[{"n":151365,"state":"closed","created":"2026-11-08T15:23:15Z"}],"created":"2026-11-08T15:23:15Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"nostr","title":"Hermes Nostr Gateway","summary":"Nostr platform adapter for Hermes, backed by the local Hermes Nostr Gateway daemon: NIP-17 and NIP-04 DMs, kind-1 mentions and feeds, Concord channels and Marmot groups arrive as one message stream, with reach and authority decided by the gateway's policy.","disclosure":"Needs the separately installed hermes-nostr-gateway daemon (not covered by this pin), which holds the Nostr keys, talks to relays and decides which senders are trusted; on load the adapter writes the Hermes command list to commands.json beside the daemon socket (default ~/.local/state/hermes-nostr-gateway/, or NOSTR_GATEWAY_COMMANDS), and with an npub home/control channel it runs the `nak` CLI to decode it.","category":"platform","platforms":["linux","macos"],"maintainer":"dadofsambonzuki","author":"dadofsambonzuki","version":"0.1.0","requires_hermes":">=0.22.1","repo":"https://github.com/dadofsambonzuki/hermes-nostr-gateway","docs":"https://gitworkshop.dev/npub1cn670f663n3ks02jnnlsvd5y88zjnefy8343ykaxs7y3nzzketrsrjwt8a/relay.ngit.dev/hermes-nostr-gateway","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"This is the adapter only. It needs the gateway daemon on the same host: install hermes-nostr-gateway, run `hng serve`, and point NOSTR_GATEWAY_SOCKET (or the plugin's socket_path setting) at its Unix socket.; Unix socket plus SO_PEERCRED peer check: Linux and macOS only, not Windows.; npub-form destinations (NOSTR_HOME_CHANNEL, NOSTR_CONTROL_CHANNEL) are decoded with the `nak` CLI; without nak on PATH they must be given as hex.","state":"merged","pr":151363,"prs":[{"n":151363,"state":"merged","created":"2026-11-08T15:22:51Z"}],"created":"2026-11-08T15:22:51Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"uk-companies","title":"UK Companies","summary":"UK Companies returns one sheet.","disclosure":"Names and numbers to api.company-information.service.gov.uk as HTTP Basic with COMPANIES_HOUSE_API_KEY when set. Registered name to www.thegazette.co.uk, no key. A double quote is not sent. Charity names and numbers to api.charitycommission.gov.uk with CHARITY_COMMISSION_API_KEY when set. Postcode to landregistry.data.gov.uk, no key. Lookups stop after 60 seconds. Requests wait at most 20 seconds. Morning job sends watched numbers to Companies House only. Remove leaves plugin-data/uk-companies/watch.json, scripts/uk-companies-watch.py, and the morning job. Stop it with hermes cron remove <job id>. About 680 KB with .git. Empty allowlist keeps tools enabled. hermes tools disable uk_companies --platform telegram. Contains HM Land Registry data © Crown copyright and database right 2021. Licensed under the Open Government Licence v3.0.","category":"tools","platforms":["linux","macos"],"maintainer":"TakeshiTGAL","author":"TakeshiTGAL","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/TakeshiTGAL/hermes-plugin-uk-companies","docs":"https://github.com/TakeshiTGAL/hermes-plugin-uk-companies#readme","tools":["uk_check","uk_search","uk_officers","uk_psc","uk_filings","uk_charity","uk_vat","uk_land"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151361,"prs":[{"n":151361,"state":"merged","created":"2026-11-08T15:12:44Z"}],"created":"2026-11-08T15:12:44Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TakeshiTGAL/hermes-plugin-uk-companies/e620676d9a1140322ce5efc8741cd8fc6d97f3c9/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/uk-companies.webp"},{"name":"trendswap","title":"TrendSwap Video Studio","summary":"Discover viral video templates, explore motion transfer styles, and prepare portrait assets for video generation directly from Hermes Agent via TrendSwap hosted MCP server. Compliant with Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/). Tool calls go to TrendSwap streamable HTTP MCP server at https://trendswap.app/api/mcp.","disclosure":"","category":"tools","platforms":[],"maintainer":"GptsApp","author":"GptsApp","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/GptsApp/trendswap-mcp","docs":"https://trendswap.app","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151357,"prs":[{"n":151357,"state":"open","created":"2026-11-08T15:04:55Z"}],"created":"2026-11-08T15:04:55Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"details","title":"Details","summary":"Find curated website design references, inspect motion and implementation evidence, and retrieve reusable Vault components. Includes the details-design skill. Every tool call sends its arguments to https://api.details.so/mcp using the connected member's account. Available tools depend on that account's plan. The hosted tool set can change independently of the pinned plugin. Searches and inspections record usage and can consume Details credits. The package runs mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm) for browser OAuth, opens a local callback on first use, and stores tokens locally under ~/.mcp-auth. The server is marked untrusted so Hermes asks before write-capable calls.","disclosure":"every tool call sends its arguments to Details' hosted server (api.details.so) and acts on the user's Details account; the tool set is served by that server at runtime and is not covered by the pinned sha, and searches and inspections record usage and can consume Details credits. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required; its own npm dependencies resolve at first run), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"koppkvn","author":"koppkvn","version":"1.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/koppkvn/details-plugin","docs":"https://github.com/koppkvn/details-plugin#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151345,"prs":[{"n":151345,"state":"merged","created":"2026-11-08T14:52:01Z"}],"created":"2026-11-08T14:52:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shopmate","title":"Shopmate","summary":"Personal shopper agent: finds products with live Google Shopping prices and photos (SerpAPI, or a labelled demo catalog without a key), quotes delivery to the customer's location with doorstep or pickup-stop options, and on an explicit yes takes payment by Paystack (NGN, GHS, KES, ZAR, USD, XOF, EGP, RWF) or crypto via NOWPayments, verifying it before marking the order paid. 14 tools plus the shopmate:shopping skill.","disclosure":"payments plugin: on checkout it creates Paystack payment links and NOWPayments crypto invoices on the operator's own merchant keys (the `confirm=true` step is a model-set flag, not a Hermes approval; no money moves until the customer pays); network calls to serpapi.com, api.paystack.co, api.nowpayments.io, open.er-api.com, nominatim.openstreetmap.org, ipapi.co (auto-locate is on by default and sends the host's public IP when a conversation has no saved location) and maps.app.goo.gl (expanding shared Maps short links); carts, saved locations and orders (customer name, email, phone and address) are stored in the plugin data directory; API keys are optional and read through Hermes's secret scope.","category":"tools","platforms":[],"maintainer":"DaveTech2","author":"DaveTech2","version":"0.4.1","requires_hermes":">=0.21.5","repo":"https://github.com/DaveTech2/Shopmate","docs":"https://github.com/DaveTech2/Shopmate#readme","tools":["shop_categories","shop_search","set_location","pickup_stops","shop_product","cart_add","cart_update","cart_remove","cart_view","cart_clear","delivery_quote","payment_options","checkout","order_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151343,"prs":[{"n":151343,"state":"merged","created":"2026-11-08T14:50:44Z"}],"created":"2026-11-08T14:50:44Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"permission-canvas","title":"Permission Canvas","summary":"Per-control permissions for the computer_use tool. In a native panel you preview the target window privately, click any control and set it to Allow, Read only, Ask first or Hide. The backend enforces the choice before every input and before a screenshot or accessibility tree reaches the model: read-only controls refuse clicks, typing and value changes; ask-first operations wait for a one-time human approval of the exact action and arguments; hidden controls are removed from the tree and their pixels masked, and a capture that cannot be masked reliably is refused. New profiles start paused with unknown controls set to Ask first. Select it with computer_use.backend: permission-canvas; adds the /pc-canvas and /pc-approve commands. Validated on Windows with cua-driver 0.21 and 0.39.","disclosure":"launches cua-driver (telemetry disabled) and a bounded Windows accessibility helper as local subprocesses while the backend runs, reads the selected window's pixels and accessibility data, stores policy, approval records, an audit log and the latest redacted capture in its own data directory, and opens a local Tkinter panel on /pc-canvas; no network calls, no credentials, no telemetry. Protects only actions routed through this backend; it is not an OS sandbox.","category":"tools","platforms":["windows"],"maintainer":"TANGBUDU","author":"TANGBUDU","version":"0.5.13","requires_hermes":">=0.23.0","repo":"https://github.com/TANGBUDU/permission-canvas","docs":"https://github.com/TANGBUDU/permission-canvas/tree/3a3086066051f5cc7a6ee52c20d62395b814da3f#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Desktop behaviour is validated on Windows only. Other native desktops need permission_canvas.desktop: native and are experimental.; Only actions routed through this computer_use backend are protected. Disable terminal, file, browser and other tools that could bypass it.; A Chromium window covered by another window at startup can report browser_page_unavailable until it is brought to the foreground.","state":"merged","pr":151341,"prs":[{"n":151341,"state":"merged","created":"2026-11-08T14:39:51Z"}],"created":"2026-11-08T14:39:51Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TANGBUDU/permission-canvas/3a3086066051f5cc7a6ee52c20d62395b814da3f/docs/canvas-preview-dark.png","https://raw.githubusercontent.com/TANGBUDU/permission-canvas/3a3086066051f5cc7a6ee52c20d62395b814da3f/docs/canvas-preview-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/permission-canvas.webp"},{"name":"superlist","title":"Superlist","summary":"Tasks and lists in Superlist through Superlist's official hosted MCP server (Streamable HTTP at https://app.superlist.com/mcp, OAuth 2.0 sign-in with the user's Superlist account, no keys in config): capture tasks with due dates, reminders, priorities, labels and repetition, plan projects as lists, read the Today and Inbox views, search, update, move, assign, complete, share lists, and read or reply to task messages. Bundles one workflow skill. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only. Setup after install and enable: add an mcp_servers.superlist entry to ~/.hermes/config.yaml with url https://app.superlist.com/mcp, auth: oauth and trust: untrusted (required; hermes mcp login fails without auth: oauth, and this entry replaces the package's, trust included), then run hermes mcp login superlist.","disclosure":"hosted-only connector with no local code; every tool call goes to app.superlist.com and acts with the signed-in user's own permissions. Tools can delete and restore tasks and lists and change list sharing; share_list sends the invited person an email and a push notification. The package marks the server untrusted, so Hermes asks before every write-capable call. OAuth tokens are stored by Hermes, not by the plugin. The plugin sends no telemetry, but the Superlist server records each MCP call for product analytics, including the MCP client's name and version, and keeps per-tool usage metrics; this is part of the hosted service and not opt-in. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Superlist","author":"MarcelKaeding","version":"1.0.1","requires_hermes":">=0.21.6","repo":"https://github.com/superlistapp/superlist-mcp","docs":"https://github.com/superlistapp/superlist-mcp/blob/08019bee2821011ba811556ea81c93b258cb47a7/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151336,"prs":[{"n":151336,"state":"merged","created":"2026-11-08T14:33:06Z"}],"created":"2026-11-08T14:33:06Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tubesaku-creator-insights","title":"TubeSaku Creator Insights","summary":"Read-only Japanese VTuber, stream, game trend and cover-song research via hosted TubeSaku MCP.","disclosure":"requests and bounded tool arguments/client metadata are logged by tubesaku.com with hashed session IDs; hosted logging cannot be disabled by this package. Read terms before enabling (discovery may contact the service); the skill asks for explicit agreement before tool calls, but consent is not server-enforced. No credentials, local executable, local telemetry or self-updater. Hosted service changes independently of the pinned package.","category":"tools","platforms":[],"maintainer":"webbigdata-jp","author":"webbigdata-jp","version":"1.0.2","requires_hermes":">=0.23.0","repo":"https://github.com/webbigdata-jp/tubesaku-mcp-server","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151335,"prs":[{"n":151335,"state":"merged","created":"2026-11-08T14:31:48Z"}],"created":"2026-11-08T14:31:48Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"kaption-whatsapp","title":"Kaption for WhatsApp","summary":"Your own WhatsApp in Hermes through Kaption's hosted MCP server (Streamable HTTP, OAuth 2.1 with PKCE and dynamic client registration): search chats, contacts and groups, read voice-note transcripts, summarize a conversation, set reminders, manage labels, lists and notes, list call recordings, schedule messages, and send a message from the user's computer after they confirm it. Bundles the kaption-whatsapp skill. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to mcp.kaptionai.com, signed in with the user's WhatsApp number and a code sent on WhatsApp, and is relayed to the Kaption extension or desktop app on the user's computer, which must be running. The relay does not store messages; what the tools return (messages, transcripts, contact names) enters the session and reaches the user's model provider. The package marks the server untrusted, so Hermes asks before every write-capable tool and refuses them in unattended runs. The tool list comes from the server at run time and is not covered by the pinned sha. OAuth must be enabled with `hermes mcp add kaption --url https://mcp.kaptionai.com/mcp --auth oauth --connect-timeout 300`; the bundled mcp.json alone yields 401.","category":"tools","platforms":[],"maintainer":"Kaption AI","author":"kshmir","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/Kaption-AI/mcp-extension","docs":"https://github.com/Kaption-AI/mcp-extension/blob/3f0534d6e4055d929758f3f4750953ec6f691adf/hermes/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151331,"prs":[{"n":151331,"state":"open","created":"2026-11-08T14:12:29Z"}],"created":"2026-11-08T14:12:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-music-jam","title":"Agent Music Jam","summary":"Conduct a live synthesized band, play along on keys or MIDI, and export your performance.","disclosure":"`jam_start` runs a local web server on 127.0.0.1 (random port, bearer token in the launch link) for the life of the session; each direction sends the music state and your text to your configured Hermes model, and from tool calls launches up to eight toolless subagent sessions per direction (`use_subagents`, on by default), which uses model credits.","category":"tools","platforms":[],"maintainer":"vdimarco","author":"vdimarco","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/vdimarco/agent-music-jam","docs":"https://github.com/vdimarco/agent-music-jam#readme","tools":["jam_start","jam_inspect","jam_stop","jam_direct","jam_configure","jam_schedule","jam_undo","jam_save","jam_restore","jam_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"Saved takes are local to this browser and service port; download important recordings for a permanent backup.; This first ensemble uses D minor and a fixed four-chord progression.; Browser suspension can exhaust the finite audio buffer; WAV takes are capped at 15 minutes.; Physical MIDI hardware and active-turn native child-session execution have not been verified.","state":"merged","pr":151330,"prs":[{"n":151330,"state":"merged","created":"2026-11-08T14:10:17Z"}],"created":"2026-11-08T14:10:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vdimarco/agent-music-jam/009c918b89e7ba98550de0755b47d1e5e7bc96a0/docs/screenshots/studio.png","https://raw.githubusercontent.com/vdimarco/agent-music-jam/009c918b89e7ba98550de0755b47d1e5e7bc96a0/docs/screenshots/performance.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agent-music-jam.webp"},{"name":"hermes-manas-aegis","title":"Manas Aegis","summary":"[ALPHA] Experimental Hermes guardrail (prototype, not standalone security): pattern-based pre-tool checks that can block or rewrite some risky tool arguments, with a canary honeypot, local telemetry and a loopback HUD, plus STIX 2.1 export. Opt-in, test environments only.","disclosure":"alpha guardrail: its pre_tool_call / pre_llm_call / transform hooks can block tool calls or rewrite their arguments (honeypot redirect to a decoy file, safe-flag git rewrite) and scrub tool results; serves a token-protected loopback-only HUD on 127.0.0.1 (default port 18777, off with auto_launch_hud_server: false); fetches public CISA KEV and NVD CVE feeds over HTTPS (no key) for the threat-intel panel, refreshed every 6 hours while the HUD runs; the full scan reads files under the active Hermes home (skipping .env, auth.json, config.yaml, webhook_subscriptions.json, mcp-tokens/, *.bak backups and other profiles); writes redacted telemetry and a STIX 2.1 feed under the plugin data folder; no credentials read, no telemetry sent out.","category":"tools","platforms":[],"maintainer":"elianjuan-g","author":"elianjuan-g","version":"2.6.6","requires_hermes":">=0.21.0","repo":"https://github.com/elianjuan-g/hermes-manas-aegis","docs":"https://github.com/elianjuan-g/hermes-manas-aegis","tools":["manas_tactical_core","manas_stix_intelligence"],"hooks":["on_session_start","pre_llm_call","pre_tool_call","transform_tool_result","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Alpha release: prototype guardrail, not standalone security; opt-in, test environments only.; The HUD's big KPI cards count only local activity and the plugin's internal rule/indicator count; the live CISA KEV + NVD feed appears only in the separate global-intel panel, as awareness only — the plugin does not check whether this device is affected by any listed CVE.","state":"merged","pr":151504,"prs":[{"n":151504,"state":"merged","created":"2026-11-08T21:31:32Z"},{"n":151503,"state":"closed","created":"2026-11-08T21:31:07Z"},{"n":151320,"state":"closed","created":"2026-11-08T13:49:29Z"}],"created":"2026-11-08T13:49:29Z","late":false,"said":true,"update":false,"discussion":9,"images":[],"videos":[],"x":["https://x.com/ElianJGonz/status/2119866173005398121"],"youtube":[],"thumb":null},{"name":"job-hunt-tracker","title":"job-hunt-tracker","summary":"Log job applications, check for duplicates before applying, and track follow-ups. A job-hunt tracker for Hermes.","disclosure":"","category":"tools","platforms":[],"maintainer":"Muhammad Adilaga","author":"muhadilaga","version":"0.1.0","requires_hermes":"","repo":"https://github.com/muhadilaga/hermes-job-hunt-tracker","docs":null,"tools":["job_log_application","job_list_applications","job_check_duplicate","job_update_status","job_followups_due","job_application_stats"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151314,"prs":[{"n":151314,"state":"merged","created":"2026-11-08T13:31:59Z"}],"created":"2026-11-08T13:31:59Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"jw3","title":"JW3.ai trading","summary":"JW3.ai non-custodial trading inside Hermes: 12 market/risk/Diary reads, Diary propose cards, and 4 human-approved execution tools — all thin wrappers over the local jw3 CLI, which owns the PAT and enforces server-side scope, kill-switch, fee, and idempotency gates. Bundles the jw3-ops skill and /jw3-status.","disclosure":"every tool call runs the local `jw3` CLI (installed separately from github.com/agnostic4321-ops/jw3-mcp-cli, not covered by the pinned sha) with a minimal env (PATH, HOME, XDG_CONFIG_HOME, TMPDIR, JW3_*); the CLI holds the JW3 PAT and reaches JW3.ai's Supabase edge functions and the user's exchange accounts; jw3_execute, jw3_close, jw3_exits and jw3_cancel dry-run unless confirm=true, and every confirm=true call goes through a Hermes approval prompt showing the exact command before it places, closes or cancels real orders with real funds (unattended runs follow the user's approval mode; an \"always\" answer pre-approves only that identical command); the plugin itself holds no secrets and stores nothing.","category":"tools","platforms":[],"maintainer":"agnostic4321-ops","author":"agnostic4321-ops","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/agnostic4321-ops/jw3-hermes-plugin","docs":"https://github.com/agnostic4321-ops/jw3-hermes-plugin","tools":["jw3_market","jw3_screener","jw3_positions","jw3_balances","jw3_orders","jw3_fills","jw3_pnl","jw3_klines","jw3_analyze","jw3_risk","jw3_scan","jw3_diary","jw3_propose","jw3_execute","jw3_close","jw3_exits","jw3_cancel"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151312,"prs":[{"n":151312,"state":"merged","created":"2026-11-08T13:23:11Z"}],"created":"2026-11-08T13:23:11Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/agnostic4321-ops/jw3-hermes-plugin/44100ebdae63bf42b51f5a43913274cf2ee31959/assets/jw3-icon.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"spendwarden","title":"SpendWarden","summary":"A spend policy firewall and local ledger for Hermes agents that can move money. A pre_tool_call hook checks payment-shaped tool calls against daily, monthly and per-call USD caps, recipient/asset/network allowlists and an approval threshold; in enforce mode it blocks hard violations and escalates uncertain ones to Hermes's own approval gate. Four tools add spend_check, idempotent spend_record receipts, spend_report totals, and x402_inspect (decodes PAYMENT-REQUIRED / X-PAYMENT without signing). State is a local SQLite ledger under the plugin data directory; no network calls, no credentials, no key handling, no transaction signing. Observe mode logs only; enforce mode is opt-in. Terminal recognition covers cast send, solana transfer, bitcoin-cli sendtoaddress, near call --deposit and curl with X-PAYMENT.","disclosure":"detection is best-effort: it recognises payment-shaped calls by tool-name patterns, common amount/recipient argument names and five terminal command shapes (cast send, solana transfer, bitcoin-cli sendtoaddress, near call --deposit, curl with X-PAYMENT), so payments made any other way pass unchecked; the default observe mode only logs, nothing is blocked or sent for approval until you set mode: enforce, and a policy-check error lets the call through unless fail_closed is on; it does not replace wallet-side spending limits.","category":"tools","platforms":[],"maintainer":"matrixneoaiagent","author":"matrixneoaiagent","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/matrixneoaiagent/spendwarden","docs":"https://github.com/matrixneoaiagent/spendwarden#readme","tools":["spend_check","spend_record","spend_report","x402_inspect"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151303,"prs":[{"n":151303,"state":"merged","created":"2026-11-08T13:08:50Z"}],"created":"2026-11-08T13:08:50Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/matrixneoaiagent/spendwarden/fe23b59ab2eca7d1b183bfbde3f47841b0603788/docs/banner.png","https://raw.githubusercontent.com/matrixneoaiagent/spendwarden/fe23b59ab2eca7d1b183bfbde3f47841b0603788/docs/demo.png"],"videos":[],"x":["https://x.com/i_am_ahero/status/2118732352620794118"],"youtube":[],"thumb":"/hackathon/thumbs/spendwarden.webp"},{"name":"confidential-mode","title":"confidential-mode","summary":"Hermes Confidential Mode locks a Hermes profile to one tier: attested (a Tinfoil enclave, or NEAR AI Cloud's gateway and models, verified and pinned to a build you approve) or on-host-only (loopback and hosts you list). While locked, the plugin refuses off-tier main model calls before they are sent; refuses to lock while a side call, fallback, memory, MCP URL or delegation route would leave the tier; on the attested tier encrypts request bodies to the verified enclave or model key and pins every inference connection to the TLS key of the attestation the plugin accepted (the attestation fetch itself is not pinned, by design), with headers, sizes and NEAR images still visible to the vendor; and asks you the first time each tool it does not class as on-host (by where the tool's data goes) runs in each conversation during a lock, blocking the call when nobody can answer. The plugin logs each model call's host and size, never its text, and renders a receipt whose attached enclave evidence replays offline; the rest of the receipt is the plugin's own record. The attested tier needs TINFOIL_API_KEY or NEAR_AI_API_KEY. Shell and code execution are not inspected for network access, and a side call that strays mid-turn is recorded, not stopped.","disclosure":"the plugin contacts the vendor (atc.tinfoil.sh, the Tinfoil router and the *.tinfoil.sh collateral proxies, or cloud-api.near.ai), Intel Trust Authority (portal and portal.eu), Sigstore's TUF CDN, and GitHub (raw.githubusercontent.com, api.github.com) for NEAR compose files, also in the background after a verification stages a NEAR entry; the plugin sends no telemetry. The plugin writes under <HERMES_HOME>/plugin-data/ (including the ledger, evidence blobs, pins.yaml, allowlist.yaml, state and SDK caches), Hermes' tool-discovery cache on a terminal lock, and, on a revoke only, config.yaml, removing its own plugin_rule:confidential-mode:tool entries from command_allowlist and no other entry, through Hermes' save_config, which also normalises legacy model and max_turns keys as any Hermes config save does; the plugin reads config.yaml and script files a locked tool call runs. The plugin reads TINFOIL_API_KEY and NEAR_AI_API_KEY through Hermes' secret scope, checks only whether OPENROUTER_API_KEY and NOUS_API_KEY are set (to report Hermes' side-call fall-through), reads TERMINAL_ENV, TERMINAL_CWD, HERMES_HOME, CONFIDENTIAL_MODE_PROGRESS and CONFIDENTIAL_MODE_NO_FETCH, sets XDG_CONFIDENTIAL_MODE_TOOL_PROCESS, stores no credential and runs no shell command or subprocess. The plugin starts daemon threads of five kinds: an attestation, a pins.yaml match record, a NEAR compose-file fetch, the own-host-name DNS lookup, and, while locked, one long-running re-verification thread per attested provider. During each Tinfoil attestation and each hermes confidential replay, the plugin wraps the Tinfoil SDK's fetch functions and requests.Session.request process-wide, inert for every other thread, and puts the original functions back afterwards; before its first verification it also re-points the Tinfoil SDK's cache-directory constants and sigstore-python's TUF directory function at its plugin-data directory for the rest of the process. The plugin adds a locked-mode note to each locked turn's context and may append one notice line to a reply. hermes plugins validate counts 31 private core import sites, all reads (docs/DISCLOSURE.md).","category":"models","platforms":[],"maintainer":"ainsleys","author":"ainsleys","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/ainsleys/hermes-confidential-mode","docs":"https://github.com/ainsleys/hermes-confidential-mode#readme","tools":[],"hooks":["pre_tool_call","post_approval_response","pre_llm_call","pre_api_request","pre_auxiliary_call","post_auxiliary_call","on_session_start","on_session_end","post_compaction","pre_gateway_dispatch","transform_llm_output"],"middleware":["llm_execution","tool_execution"],"env":[],"known_issues":"Auxiliary calls (compression, titles, vision and other side jobs) bypass the llm_execution middleware, so the plugin refuses to lock while one is routed off-tier and records a breach if one strays; it cannot stop the call.; Hermes' CLI approve directive grants on any answer except 'deny'; the plugin's tool_execution middleware runs a tool only on an exact once, session or always.; terminal, execute_code, process_manage and MCP servers launched as a command run on this host while locked and can reach the network; the plugin scans shell and code text only for its own commands, not for network access.; Locked mode requires Hermes' local terminal backend: the lock is refused on any other backend (Docker included) and while Hermes holds a cached terminal environment on one.; Locked mode does not apply in safe-worker mode, where Hermes loads no plugins.; Every plugin in the same process shares the trust boundary; under plugins.isolation: host the attested provider is invisible and the lock is refused.; Tinfoil attests its router, not the model backend behind it, and its report carries no client nonce; the plugin's own timestamps are the host clock.; The plugin reads keys only through agent.secret_scope.get_secret, so a key held only in Hermes' credential pool (hermes auth) reads as not set and the lock refuses until the variable is set.; AMD and Intel routers have different enclave fingerprints, so a restart can ask for a new pin; set confidential.tinfoil.enclave to one router to stop this.; An 'always' tool grant lives in Hermes' command_allowlist and outlives the lock until /confidential revoke <tool>.; After a runtime switch to a hosted provider, Hermes' start-up model-list request goes out with your API key (no conversation text) before any plugin seam runs; the plugin then refuses the turn.; If Hermes runs on someone else's machine, that operator sees every prompt; locked mode protects the road out of the Hermes process, not the process.; hermes confidential replay uses the evidence's own trust root and capture time unless you pass --trusted-root and --as-of, identifies the repository by name only unless you pass --expected-repo-id and --expected-owner-id, and the first pin is trust on first use.; There is no mixed 'attested or on-host' tier yet, so side jobs cannot run on an on-host model while the main model is attested.; The attested tier admits only models served inside Tinfoil or NEAR enclaves (open-weight families such as Qwen, DeepSeek, Llama and gpt-oss); no Claude or GPT model is in tier, and because fallbacks are refused while locked, a vendor outage ends the turn.; While locked, tool calls not classed as on-host are blocked rather than asked under yolo, approvals.mode off, cron, one-shot (-q, -z) and unattended runs, since nobody can answer; 46 of Hermes' 73 built-in tools ask (docs/TOOL_CLASSES.md), the kanban writes and text_to_speech among them.; NEAR AI Cloud: streaming is refused; images reach NEAR's gateway in plaintext unless confidential.near.image_parts: refuse; the gateway reads model id, parameters, headers, sizes and timing, can read a reply by swapping the client key header (caught only afterwards), and instances share one key (docs/LIMITATIONS.md section 14).; An agent with terminal access on the same host can reach the approval prompt for a pin or a locked-allowlist tool by some routes; the ledger records every approval with its surface (docs/LIMITATIONS.md section 15).","state":"merged","pr":151301,"prs":[{"n":151301,"state":"merged","created":"2026-11-08T13:00:57Z"}],"created":"2026-11-08T13:00:57Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/main/docs/images/demo.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/confidential-mode.webp"},{"name":"tusk","title":"Tusk","summary":"Hermes long-term memory on Walrus mainnet (decentralized storage on Sui) through the official Walrus Memory SDK: encrypted inside the relayer's TEE, owned by your key, survives wiping or reinstalling Hermes, and the same on every machine and for other agents on the same account. Recall before each turn, turn capture, built-in memory mirroring and pre-compression saves; a crash-safe, rate-paced SQLite write outbox with a receipt and public Walruscan proof per memory; a Tusk dashboard tab (semantic search across namespaces, live write queue, one-click verification that downloads the blob from a public Walrus aggregator and checks it is ciphertext); /tusk and hermes tusk (status, recall, proofs, verify, namespaces, import, flush, export, restore). Secrets are redacted before anything is queued.","disclosure":"each turn's user message (as the recall query), finished turns (for fact extraction), built-in memory entries and tusk_remember facts are sent over HTTPS to relayer.memory.walrus.xyz (or MEMWAL_SERVER_URL) signed with MEMWAL_PRIVATE_KEY / MEMWAL_ACCOUNT_ID; verify downloads blobs from aggregator.walrus-mainnet.walrus.space; queued writes (until sent) and receipts are kept in plugin-data/tusk/outbox.db (0600); one in-process background writer thread; dashboard routes sit behind the dashboard auth gate; no shell commands, no subprocesses, no telemetry.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"Automationbot24x7","author":"Automationbot24x7","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/Automationbot24x7/hermes-tusk","docs":"https://github.com/Automationbot24x7/hermes-tusk#readme","tools":[],"hooks":[],"middleware":[],"env":["MEMWAL_PRIVATE_KEY","MEMWAL_ACCOUNT_ID"],"known_issues":"The Walrus Memory relayer has no per-memory delete yet (whole-namespace erasure only), so removing a built-in memory entry does not delete its Walrus copy.; Writes are paced (about 6 per minute) and take 20-30 s each; one-shot hermes chat -q runs usually exit before the queue drains. Queued writes go out on the next run or with hermes tusk flush.; The dashboard tab appears after hermes plugins enable tusk (memory providers are otherwise activated through memory.provider only).","state":"merged","pr":151300,"prs":[{"n":151300,"state":"merged","created":"2026-11-08T12:58:39Z"}],"created":"2026-11-08T12:58:39Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Automationbot24x7/hermes-tusk/3d1a6ef5f938c3d6b36187a388bcdaabe20b1829/assets/banner.png","https://raw.githubusercontent.com/Automationbot24x7/hermes-tusk/3d1a6ef5f938c3d6b36187a388bcdaabe20b1829/assets/dashboard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tusk.webp"},{"name":"fashio","title":"Fashio","summary":"E-commerce fashion photos from Fashio through its hosted MCP server (Streamable HTTP at https://mcp.fashiolabs.com/mcp): garment on an AI model, virtual try-on, catalog photoshoot packs, jewelry on model, flat lays, background removal, upscaling, reframing and short product videos, plus reusable style presets. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call, with its arguments and image URLs, goes to mcp.fashiolabs.com, which calls api.fashiolabs.com and needs a Fashio account with its API key in FASHIO_API_KEY. create_generation and create_catalog_job spend the account's credits (no test mode; failed jobs are refunded) and delete_template_set deletes a saved preset; the package marks the server untrusted, so Hermes asks before every tool the server does not annotate as read-only. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Fashio AI","author":"cms-be","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/fashiolabs/fashio-agent-plugin","docs":"https://github.com/fashiolabs/fashio-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":["FASHIO_API_KEY"],"known_issues":"","state":"merged","pr":151297,"prs":[{"n":151297,"state":"merged","created":"2026-11-08T12:49:58Z"}],"created":"2026-11-08T12:49:58Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dyscalculia","title":"Dyscalculia.io","summary":"Cited dyscalculia statistics from dyscalculia.io through its hosted MCP server (Streamable HTTP at https://mcp.dyscalculia.io/mcp, no sign-in, no keys): prevalence figures by study and age, 93 references with DOI and PMID, chart datasets on persistence, math anxiety, interventions and comorbidity, and a description of the site's five-game screening test. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call, with its arguments, goes to mcp.dyscalculia.io; no account or personal data is needed. All six tools are read-only and none scores a person. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Dyscalculia.io","author":"cms-be","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Dyscalculia-io/dyscalculia-agent-plugin","docs":"https://github.com/Dyscalculia-io/dyscalculia-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151296,"prs":[{"n":151296,"state":"merged","created":"2026-11-08T12:49:53Z"}],"created":"2026-11-08T12:49:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dyslexiasteps","title":"Dyslexia Steps","summary":"Phonics and sight word lists by grade from dyslexiasteps.com through its hosted MCP server (Streamable HTTP at https://mcp.dyslexiasteps.com/mcp, no sign-in, no keys): CVC words, word families, Dolch sight words, digraphs and vowel patterns for pre-K to grade 3, word lists in German, Spanish, French, Dutch and Brazilian Portuguese, pattern search and the source of every grade placement. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call, with its arguments, goes to mcp.dyslexiasteps.com; no account or personal data is needed. All six tools are read-only. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Dyslexia Steps","author":"cms-be","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Dyslexia-Steps/dyslexiasteps-agent-plugin","docs":"https://github.com/Dyslexia-Steps/dyslexiasteps-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151295,"prs":[{"n":151295,"state":"merged","created":"2026-11-08T12:49:47Z"}],"created":"2026-11-08T12:49:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"thefaceanalysis","title":"The Face Analysis","summary":"Face shape, facial proportion and face-type data from thefaceanalysis.com through its hosted MCP server (Streamable HTTP at https://mcp.thefaceanalysis.com/mcp, no sign-in, no keys): the site's seven-rule face shape classifier on four distances, face/eye/lip/nose type definitions with their exact threshold rules, reference statistics from 102 research faces, methodology and an embeddable face shape finder. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call, with its arguments, goes to mcp.thefaceanalysis.com; no account or personal data is needed. All seven tools are read-only and the server accepts no photos. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"The Face Analysis","author":"cms-be","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/The-Face-Analysis/thefaceanalysis-agent-plugin","docs":"https://github.com/The-Face-Analysis/thefaceanalysis-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151294,"prs":[{"n":151294,"state":"merged","created":"2026-11-08T12:49:42Z"}],"created":"2026-11-08T12:49:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"apple-keychain","title":"Apple Keychain","summary":"Load Hermes secrets from macOS Keychain, with interactive setup, safe rotation and recovery. Reads explicitly configured Keychain items; operator commands can write items and manage recovery copies. Does not read or edit .env files. Compiles the included C helper locally with Apple developer tools and uses Security.framework and local macOS commands. Imports some private Hermes configuration helpers.","disclosure":"","category":"general","platforms":["macos"],"maintainer":"robbiemu","author":"robbiemu","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/robbiemu/hermes-agent","docs":"https://github.com/robbiemu/hermes-agent/blob/6b573f8f2f31ac0f5254c99b6f64d97e674ff569/plugins/apple-keychain/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151293,"prs":[{"n":151293,"state":"closed","created":"2026-11-08T12:48:50Z"}],"created":"2026-11-08T12:48:50Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lastscanned","title":"lastscanned","summary":"Track parcels and ocean containers across 549 carriers and compare USPS, UPS and FedEx rate quotes between US ZIP codes, through the hosted lastscanned Streamable HTTP MCP server plus one workflow skill. Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code. Works without sign-in within a small free daily allowance; for more, add the server with auth: oauth or an API key in your own Hermes profile. No credentials are stored in the plugin.","disclosure":"hosted-only connector; tracking numbers, container numbers, carrier ids and quote fields go to mcp.lastscanned.com; tracked numbers and quotes count toward your lastscanned plan or credits; all four tools set readOnlyHint, so Hermes does not prompt for them, and the plugin sets no spend limit.","category":"tools","platforms":[],"maintainer":"dragonhuntr","author":"dragonhuntr","version":"0.1.0","requires_hermes":"","repo":"https://github.com/dragonhuntr/lastscanned-plugin","docs":"https://docs.lastscanned.com/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151290,"prs":[{"n":151290,"state":"merged","created":"2026-11-08T12:34:52Z"}],"created":"2026-11-08T12:34:52Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"habit","title":"Habit","summary":"Learns which commands you already approve, proposes an allowlist entry after a few matching approvals (the exact command, or any-container docker stop|restart), and only writes it to Hermes's command_allowlist after you run /habit accept. Wipes, download-and-execute pipes, git push and secret paths are never proposed, and /habit undo or /habit uninstall take every entry back.","disclosure":"learns from your approval answers in a local plugin database; in enforce mode (off by default) it proposes command_allowlist entries (the exact approved command, or `docker stop|restart *` / `docker compose stop|restart *` for any container or service) and writes them to this profile's config.yaml through Hermes's config load/save only when you run /habit accept (owner_ids-locked on messaging gateways); an accepted entry waves through every command it matches, including ones Hermes flags as dangerous; /habit undo and /habit uninstall remove only the entries Habit added; no network calls, no credentials, no background process.","category":"automation","platforms":["linux"],"maintainer":"scottleimroth","author":"scottleimroth","version":"0.1.3","requires_hermes":">=0.23.0","repo":"https://github.com/scottleimroth/habit","docs":"https://github.com/scottleimroth/habit/blob/a37b3e7349c1947cba899cad1f7356267faed62b/README.md","tools":[],"hooks":["pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151289,"prs":[{"n":151289,"state":"merged","created":"2026-11-08T12:31:49Z"}],"created":"2026-11-08T12:31:49Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/scottleimroth/habit/a37b3e7349c1947cba899cad1f7356267faed62b/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/habit.webp"},{"name":"linear-digest","title":"Linear digest","summary":"Schedule a model-free morning list of open Linear issues assigned to you, with linear_digest.","disclosure":"LINEAR_API_KEY is read from this profile on each request and sent as the Authorization value with no Bearer prefix, as up to ten HTTPS POSTs to host api.linear.app path /graphql; redirects are not followed and proxies are not used; nothing is downloaded at run time and the schema file shipped here is about 1.3 MB; the tool and the script are read-only; archived issues are left out; tools are on for every surface, including gateways, so anyone you allow there can call linear_digest with your key, and hermes tools turns a surface off; schedule writes a no-agent cron at 08:00 delivered to local, empty stdout sends nothing, and there is no daily cap; unschedule removes the saved job, while the script stays only when another job is also named linear-digest; a leftover job is removed with hermes cron remove, and that command leaves the script file; settings stay in <HERMES_HOME>/plugin-data/linear-digest; the skill linear-issues is registered with the tool; bot-chat puts the list into another model turn and that turn is not model-free; an http loopback LINEAR_DIGEST_REHEARSAL URL receives the key in clear text, and any other value fetches nothing.","category":"tools","platforms":[],"maintainer":"TakeshiTGAL","author":"TakeshiTGAL","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/TakeshiTGAL/hermes-plugin-linear-digest","docs":"https://github.com/TakeshiTGAL/hermes-plugin-linear-digest#readme","tools":["linear_digest"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151282,"prs":[{"n":151282,"state":"merged","created":"2026-11-08T12:12:14Z"}],"created":"2026-11-08T12:12:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TakeshiTGAL/hermes-plugin-linear-digest/cb8cac04dbe3839bf75557757df56d3f3c31e3e9/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/linear-digest.webp"},{"name":"tironian","title":"Tironian","summary":"Trains a small local model on the requests you keep repeating in Hermes, tests it on held-out steps from your own past sessions, and lets it answer those requests only after it passes, checking every answer and falling back to your usual model silently. Capture uses llm_execution middleware and observer hooks; secrets and personal details are masked before anything is stored.","disclosure":"reads this profile's state.db read only on first use and on `hermes tironian import`; stores masked contexts, grades, datasets and GGUF files under plugin-data/tironian; makes no network calls during normal use (the router talks only to student_endpoint, Hermes's local model server on 127.0.0.1 by default); `hermes tironian trainer setup`, run by the user, creates a venv in plugin data and installs the modal client from PyPI; training starts only on an explicit user action and then uploads that family's masked examples to a private Volume in the user's own Modal account (deleted after the run), or runs on the user's own GPU; the optional judge (off by default) sends held-out examples, and in shadow mode differing answers within a daily budget, to the model assigned to the \"Tironian judge\" auxiliary slot. No telemetry.","category":"models","platforms":[],"maintainer":"angelraph","author":"angelraph","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/angelraph/tironian","docs":"https://tironian.vercel.app/docs","tools":[],"hooks":["on_session_start","pre_llm_call","post_llm_call","post_tool_call","api_request_error","on_session_end","on_session_finalize","on_session_delete","post_approval_response","subagent_start"],"middleware":["llm_execution"],"env":[],"known_issues":"Hermes v0.22/v0.23 log 'unknown manifest field: provides_middleware' when loading; it is required by `hermes plugins validate` and harmless.; Live routing supports chat_completions and anthropic_messages providers; Responses API sessions are captured but not routed.","state":"merged","pr":151281,"prs":[{"n":151281,"state":"merged","created":"2026-11-08T12:11:41Z"}],"created":"2026-11-08T12:11:41Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/angelraph/tironian/9b590cc094f4b65cd70e979f632e1783424526a8/web/assets/og.png","https://raw.githubusercontent.com/angelraph/tironian/master/web/assets/screens/tironian-page.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tironian.webp"},{"name":"developh","title":"Developh","summary":"Free website audits through Developh's MCP server (Streamable HTTP at https://www.developh.co/mcp, no sign-in, no keys in config): Google PageSpeed Insights on mobile for any public website, with the four Lighthouse scores, real-visitor Core Web Vitals when Google has them, the failing audits that weigh most, missing security headers and page weight. Bundles the website-audit skill, which turns the report into a ranked fix list for the site's stack. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to www.developh.co, and run_website_audit passes the address it is given to Google PageSpeed Insights. Audits are not stored. Three tools are annotated read-only (run_website_audit, studio_info, list_case_studies). request_contact writes: it sends a project inquiry with the name, email and message the person gives, which Developh stores and records in its analytics, and emails them a confirmation. The package marks the server untrusted, so Hermes asks before request_contact runs and refuses it in unattended runs. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"web","platforms":[],"maintainer":"Developh","author":"developh-co","version":"1.0.1","requires_hermes":">=0.21.6","repo":"https://github.com/Developh/skills","docs":"https://github.com/Developh/skills#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151277,"prs":[{"n":151277,"state":"merged","created":"2026-11-08T11:57:35Z"}],"created":"2026-11-08T11:57:35Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-helm","title":"hermes-helm","summary":"One /helm menu in Discord or Telegram for the Hermes you run 24/7: switch MCP servers, skills and toolsets on or off, ranked by the tokens each adds to every request; resend the turns a gateway restart or crash killed; set a daily spend limit that blocks new turns; and get Discord replies too long for 8 messages as a .txt file instead of truncated. Owner-only, and menus open only in a DM.","disclosure":"writes mcp_servers.<name>.enabled, skills.disabled, agent.disabled_toolsets and its own plugins.entries.hermes-helm.settings in config.yaml through one function that logs old and new values and refuses when the config is managed; stores the text of every top-level user turn, from any sender on any platform and from the CLI, for 7 days (to resend lost turns; subagent turns skipped), tokens and cost per model call, and the change log in plugin-data/hermes-helm/helm.db; writes helm-reply-*.txt into Hermes' document cache for long Discord replies; resends a lost turn with ctx.inject_message only when allow_gateway_injection is on, and Hermes re-checks the allowlist; reads some private Hermes internals (toolset resolution, pricing) behind try/except fallbacks. No network of its own, no shell, no credentials, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"phucnht","author":"phucnht","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/phucnht/hermes-helm","docs":"https://github.com/phucnht/hermes-helm","tools":[],"hooks":["pre_llm_call","pre_tool_call","on_session_end","agent_loop_stopped","post_api_request","post_auxiliary_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Telegram shows 60 commands in its menu, so /helm may be hidden. Typing it works; set platforms.telegram.extra.command_menu.priority: [helm] to list it first.; In a shared channel /helm with no arguments points you to a DM, because anyone on the bot's allowlist can tap a Hermes button card there. Typed commands such as /helm budget 5 work anywhere.","state":"merged","pr":151272,"prs":[{"n":151272,"state":"merged","created":"2026-11-08T11:42:08Z"}],"created":"2026-11-08T11:42:08Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/phucnht/hermes-helm/95df9a6e0313e2844486e90270b81a65b37dc26e/docs/discord-menu.png","https://raw.githubusercontent.com/phucnht/hermes-helm/95df9a6e0313e2844486e90270b81a65b37dc26e/docs/telegram-menu.png"],"videos":[],"x":["https://x.com/acla_zzm/status/2119495748853359072"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-helm.webp"},{"name":"hermes-line","title":"Hermes Line","summary":"A phone line for Hermes: with your approval it calls a business from your Twilio account, works the phone menu, waits on hold, then bridges you in or finishes the task, and can answer callbacks.","disclosure":"Places real phone calls and sends call audio through your own Twilio account (api.twilio.com), and through xAI (api.x.ai) when XAI_API_KEY is set; every call and every released SMS code needs your approval in chat. With `enabled: true` it runs a call service inside Hermes on 127.0.0.1:8788 that you expose through your own HTTPS tunnel, plus a loopback-only tool server, and it starts one `hermes acp` process per call on a separate neutral call profile with a minimal environment. With `sms_source: adb` it reads the attached Android phone's SMS inbox. The setup check (`/line check`, `hermes hermes-line check`) runs `hermes --version` and makes read-only Twilio GET requests.","category":"voice","platforms":[],"maintainer":"uzay-eth","author":"uzay-eth","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/uzay-eth/hermes-line","docs":null,"tools":["hermes_line_request_call","hermes_line_call_status","hermes_line_list_tasks","hermes_line_say","hermes_line_hang_up","hermes_line_take_over","hermes_line_call_press_digits","hermes_line_call_finish","hermes_line_call_bring_owner","hermes_line_call_new_task","line_otp_to_call"],"hooks":["transform_tool_result","transform_llm_output"],"middleware":[],"env":["HERMES_LINE_TWILIO_ACCOUNT_SID","HERMES_LINE_TWILIO_API_KEY_SID","HERMES_LINE_TWILIO_API_KEY_SECRET"],"known_issues":"US numbers only (geographic and toll-free); premium 900/976 and non-US numbers are refused.; Needs a Twilio account, a public HTTPS tunnel to the plugin, the Hermes gateway on the same machine, and a separate Hermes profile with no ACP toolsets for the calls (setup step in the README).; Waiting on hold was shown live on a real airline hold queue (44 min in silence, 0 phrases spoken into hold). Real agents answered on two Hilton calls, but the live-person check missed them every time; the fix is tested offline only, so detecting a real agent and bridging you in are not yet proven live.; Detecting that a live person answered is experimental: live calls produced one false detection (Delta) and three missed agents (Hilton), all fixed offline and not yet re-proven live; on restricted tasks your phone rings only after a clear yes to the live-person question, or after two human-like but unclear replies so you can judge.; Automated assistants and phone menus get only fixed phrases or keys; many real menus are left unanswered on purpose.; Callbacks from a business are tested offline only; calls forwarded from your own mobile line were answered live twice.; Grok Voice (optional xAI key) was used on one live call; barge-in and key tones on it are unproven.; Owner line mode (call your line, key a PIN) is optional, off unless a PIN is set, experimental, and not yet used on a live call.; Verification codes must arrive on a carrier phone; Twilio numbers filter one-time-code texts (error 30038).","state":"merged","pr":151270,"prs":[{"n":151270,"state":"merged","created":"2026-11-08T11:37:36Z"}],"created":"2026-11-08T11:37:36Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/uzay-eth/hermes-line/a2ff2700cc4b5b0e3b05484a2a4b8d1cabd75333/tools/pane-preview/screenshots/round4/on_hold.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/a2ff2700cc4b5b0e3b05484a2a4b8d1cabd75333/tools/pane-preview/screenshots/round4/human_detected.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/a2ff2700cc4b5b0e3b05484a2a4b8d1cabd75333/tools/pane-preview/screenshots/round4/ended.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/115faa3d8a184160aa769dad9567d5700bf5f3de/tools/pane-preview/screenshots/round4/on_hold.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/115faa3d8a184160aa769dad9567d5700bf5f3de/tools/pane-preview/screenshots/round4/human_detected.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/115faa3d8a184160aa769dad9567d5700bf5f3de/tools/pane-preview/screenshots/round4/owner_connected.png","https://raw.githubusercontent.com/uzay-eth/hermes-line/115faa3d8a184160aa769dad9567d5700bf5f3de/tools/pane-preview/screenshots/round4/ended.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-line.webp"},{"name":"makeirl","title":"MakeIRL","summary":"Run ERC, DRC, schematic-to-PCB parity, BOM and export checks on KiCad 9 boards before manufacturing through MakeIRL's hosted MCP server, with a release-gate skill bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"every tool call goes to https://makeirl.com/api/mcp and needs a MakeIRL account; uploading a release sends the user's KiCad project files to MakeIRL. OAuth must be enabled with `hermes mcp add makeirl --url https://makeirl.com/api/mcp --auth oauth`; the bundled mcp.json alone returns 401, and Hermes stores the OAuth tokens. That command's config.yaml entry replaces the package's server entry, so the package's untrusted setting (Hermes asks before write-capable calls) applies only if the user also sets `mcp_servers.makeirl.trust: untrusted`. Checkout tools create a payment link and payment happens in the browser. The tool list comes from the server at run time and is not covered by the pinned sha. Reports check rules and do not prove that a circuit works.","category":"tools","platforms":[],"maintainer":"MelMayssonOwen","author":"MelMayssonOwen","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/MelMayssonOwen/hermes-plugins","docs":"https://github.com/MelMayssonOwen/hermes-plugins/blob/f203c3f897784d731ef48bc0974104a4d08cf5f8/makeirl/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151267,"prs":[{"n":151267,"state":"merged","created":"2026-11-08T11:26:27Z"}],"created":"2026-11-08T11:26:27Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ambassly","title":"Ambassly","summary":"Run Stripe-based affiliate programs, per-content links, referrals and commission review through Ambassly's hosted MCP server, with a workflow skill bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"every tool call goes to https://ambassly.com/api/mcp and needs an Ambassly account with a scoped API key in AMBASSLY_API_KEY, sent as a Bearer header. Company-key tools can create programs and affiliates, approve or reject commissions and add Stripe webhook signing secrets; the package marks the server untrusted so Hermes asks before write-capable calls, and the skill requires a person to decide each commission. Affiliate and commission data returned by tools reach the model provider. The tool list comes from the server at run time and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"MelMayssonOwen","author":"MelMayssonOwen","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/MelMayssonOwen/hermes-plugins","docs":"https://github.com/MelMayssonOwen/hermes-plugins/blob/f203c3f897784d731ef48bc0974104a4d08cf5f8/ambassly/README.md","tools":[],"hooks":[],"middleware":[],"env":["AMBASSLY_API_KEY"],"known_issues":"","state":"merged","pr":151266,"prs":[{"n":151266,"state":"merged","created":"2026-11-08T11:26:19Z"}],"created":"2026-11-08T11:26:19Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"clef-music-tools","title":"Clef Music Tools","summary":"Transpose chord symbols, spell piano chords, map guitar tab to piano notes and find music guides through Clef's hosted MCP server, with a practice skill bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"tool calls send the chords, tab or search text the user provides to https://clefdrills.com/mcp; no account is involved and no tool changes data. The tool list comes from the server at run time and is not covered by the pinned sha. The skill includes an offline Python transposition helper that makes no network calls.","category":"tools","platforms":[],"maintainer":"MelMayssonOwen","author":"MelMayssonOwen","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/MelMayssonOwen/hermes-plugins","docs":"https://github.com/MelMayssonOwen/hermes-plugins/blob/f203c3f897784d731ef48bc0974104a4d08cf5f8/clef-music-tools/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151265,"prs":[{"n":151265,"state":"merged","created":"2026-11-08T11:26:11Z"}],"created":"2026-11-08T11:26:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"toolfound","title":"Toolfound","summary":"Search the Toolfound product directory, compare alternatives, plan a launch and use launch-preparation helpers through its hosted MCP server, with a launch workflow skill bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"every tool call goes to https://toolfound.com/api/mcp; discovery tools need no account. toolfound_submit_product sends the product details and owner email the user confirms, and the owner completes verification separately. The package marks the server untrusted so Hermes asks before write-capable calls. The tool list comes from the server at run time and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"MelMayssonOwen","author":"MelMayssonOwen","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/MelMayssonOwen/hermes-plugins","docs":"https://github.com/MelMayssonOwen/hermes-plugins/blob/f203c3f897784d731ef48bc0974104a4d08cf5f8/toolfound/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151264,"prs":[{"n":151264,"state":"merged","created":"2026-11-08T11:26:03Z"}],"created":"2026-11-08T11:26:03Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"timetopost","title":"TimeToPost","summary":"Draft social posts for one human approval, schedule at each account's best time, read engagement and run AutoSEO blog workflows through TimeToPost's hosted MCP server, with two workflow skills bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"every tool call goes to https://api.timetopost.co/mcp and needs a TimeToPost account. OAuth must be enabled with `hermes mcp add timetopost --url https://api.timetopost.co/mcp --auth oauth`; the bundled mcp.json alone returns 401, and Hermes stores the OAuth tokens. Write tools can schedule or publish to the user's connected social accounts; the package marks the server untrusted so Hermes asks before write-capable calls. Post content and account data returned by tools reach the model provider. The tool list comes from the server at run time and is not covered by the pinned sha. One skill includes an offline Python helper that adds campaign parameters to links and makes no network calls.","category":"tools","platforms":[],"maintainer":"MelMayssonOwen","author":"MelMayssonOwen","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/MelMayssonOwen/hermes-plugins","docs":"https://github.com/MelMayssonOwen/hermes-plugins/blob/f203c3f897784d731ef48bc0974104a4d08cf5f8/timetopost/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151263,"prs":[{"n":151263,"state":"open","created":"2026-11-08T11:25:55Z"}],"created":"2026-11-08T11:25:55Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ichor","title":"Ichor","summary":"Catches the moments you correct Hermes (a correction, /retry or /undo), pairs the rejected answer with the accepted one, scrubs secrets and personal data locally, and asks you once to keep, share or discard it with a one-letter reply. Kept pairs export as TRL preference JSONL and an Atropos environment, ready to fine-tune or run RL on your own model.","disclosure":"captures your corrections (rejected and accepted answers, your feedback) into a local SQLite store in its plugin data directory after local secret/PII scrubbing, posts and edits its own card messages in the chat, and claims the bare replies k, s, d, keep, share or discard in a direct chat within 120 seconds of an open card; asks the session model for a one-word mistake label per captured pair via the optional llm.side_question capability (spends main-model tokens); makes network calls only on /ichor share, uploading scrubbed pairs to a Hugging Face dataset under the HF_TOKEN owner's account (private unless /ichor set public); the store is shared per profile, so on a multi-user gateway every allowlisted user can review, share or publish pairs captured from other users' chats.","category":"automation","platforms":[],"maintainer":"mystiquemide","author":"mystiquemide","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/mystiquemide/ichor","docs":null,"tools":[],"hooks":["post_llm_call","on_session_finalize","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151257,"prs":[{"n":151257,"state":"merged","created":"2026-11-08T11:15:33Z"}],"created":"2026-11-08T11:15:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"peakflo-spaces","title":"Spaces by Peakflo","summary":"Hand off repetitive finance and operations work to cloud agents or people through Spaces by Peakflo's hosted MCP server (Streamable HTTP at https://api.peakflo.ai/mcp, OAuth 2.1 sign-in with PKCE, no keys in config): create one-off or recurring (cron) tasks and get a link to follow them, list workflows and their runs, query workspace data tables with read-only SQL, pull aggregated reports on bills, invoices, payables and receivables, search policy documents, and review pending approvals. Bundles the spaces workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Peakflo's hosted server (api.peakflo.ai) and acts on the user's Spaces workspace with their own role and permissions; the tool set is served by that server at runtime and is not covered by the pinned sha. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. Spaces does not move money, make payments or trade. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only (creating tasks, running workflows, completing approvals, writing data) and refuses them in unattended runs. No telemetry.","category":"automation","platforms":[],"maintainer":"Peakflo","author":"dimavedenyapin","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/peakflo/spaces-mcp","docs":"https://github.com/peakflo/spaces-mcp/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151253,"prs":[{"n":151253,"state":"merged","created":"2026-11-08T11:01:58Z"}],"created":"2026-11-08T11:01:58Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proof-run","title":"proof-run","summary":"Capture demonstrated actions, check exact arguments and session-bound observations before reuse, and stop on unproven replay evidence. Local operator-controlled contracts and rebind; no model or network calls. Hermes Agent Plugin Hackathon entry.","disclosure":"","category":"automation","platforms":["linux"],"maintainer":"raffieeey","author":"raffieeey","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/raffieeey/hermes-proof-run","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151252,"prs":[{"n":151252,"state":"merged","created":"2026-11-08T10:59:29Z"}],"created":"2026-11-08T10:59:29Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sovereign-plus","title":"S+ CIS & Right to Work","summary":"UK Construction Industry Scheme (CIS) and right to work answers for construction contractors who pay subcontractors, through Sovereign Plus's read-only MCP server (Streamable HTTP at https://mcp.sovereignplus.com/mcp, no sign-in, no keys in config): yearly CIS exposure from the contractor's own numbers, late CIS300 penalties, deduction rates, verification, gross payment status, the April 2026 fraud rules, right to work checks for subcontractors from 1 October 2026, and how to book a free CIS check. Every figure comes with its GOV.UK or legislation.gov.uk source and is an estimate, not tax advice; the tools never ask for names, share codes or passport numbers. Bundles one skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to mcp.sovereignplus.com, run by Sovereign Plus (S+), a UK CIS bureau, and tool results end by offering S+'s free CIS check (the user contacts S+ themselves; the tools book and send nothing). All four tools are annotated read-only; the package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Sovereign Plus","author":"Sovereignplus","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Sovereignplus/splus-cis-mcp","docs":"https://github.com/Sovereignplus/splus-cis-mcp#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151249,"prs":[{"n":151249,"state":"merged","created":"2026-11-08T10:54:16Z"}],"created":"2026-11-08T10:54:16Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"devsentry","title":"devsentry","summary":"Read-only project inventory, traceback leads, and tracked Git diffs.","disclosure":"","category":"tools","platforms":[],"maintainer":"Archangel20","author":"Archangel20","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Archangel20/devsentry","docs":null,"tools":["inspect_project","diagnose_error","review_changes"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151248,"prs":[{"n":151248,"state":"merged","created":"2026-11-08T10:48:29Z"}],"created":"2026-11-08T10:48:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"freeze","title":"Freeze","summary":"Let Hermes do a task once, then replay it without the model: /freeze turns the last turn's tool calls into a checked workflow (bindings, loops over lists, and model-worked values compiled into Python that must reproduce the recording exactly), and hermes freeze run repeats it with 0 model calls, stops on drift, never overwrites a file you edited, and hermes freeze schedule makes it a no-agent cron job.","disclosure":"hooks record each turn's task, tool arguments, tool results (truncated at 256 KB), final answer and token counts in <HERMES_HOME>/plugin-data/freeze/data.db, pruned after 14 days (at load and at most hourly while recording); /freeze makes model calls through your active model (one per compiled step, at most 3 attempts) and sends the task, shortened tool results and the recorded value; replays run the frozen shell commands and file writes through Hermes' own tools and Hermes' approvals (unattended runs follow approvals.cron_mode, default deny), and run compiled code in a separate python -I process with static and runtime module allowlists, no environment variables beyond PATH, and a 10 s timeout; /freeze run starts hermes freeze run as a child process, --fallback agent starts hermes chat; schedule writes <HERMES_HOME>/scripts/freeze-<name>.sh and creates a cron job with hermes cron create --no-agent that reports drift and stops (only with --fallback agent does it start hermes chat on drift, which costs model calls); no network calls of its own, no telemetry, no credentials.","category":"automation","platforms":[],"maintainer":"mauricemohr88-debug","author":"mauricemohr88-debug","version":"0.1.5","requires_hermes":">=0.23.0","repo":"https://github.com/mauricemohr88-debug/hermes-freeze","docs":"https://github.com/mauricemohr88-debug/hermes-freeze/tree/3e0d9a83857ab53937ce7b91aa7b3e10c1aae392#readme","tools":[],"hooks":["pre_llm_call","post_tool_call","post_api_request","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151245,"prs":[{"n":151245,"state":"closed","created":"2026-11-08T10:44:43Z"}],"created":"2026-11-08T10:44:43Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":["https://github.com/mauricemohr88-debug/hermes-freeze/releases/download/v0.1.0/freeze-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"study-tree","title":"Study Tree","summary":"Study with the agent without losing the thread: a side question you ask becomes its own branched session, the side threads show as a tree in a Desktop pane, and each one hands one recall-checked takeaway back to the thread it came from. The agent can also draw interactive widgets and one-question quizzes inline, with follow-up buttons.","disclosure":"stores its tree in SQLite and agent-written HTML widgets under the active profile's plugin-data/study-tree/ (a widget over 200 KB or with any network reference is refused; Desktop shows it in its sandboxed preview frame); opens Hermes' state.db read-only to follow compression lineage; adds a short section to every session's system prompt, and through pre_llm_call injects a side-thread frame on each side-thread turn and each takeaway once into the parent's next turn; through transform_llm_output rewrites the final reply (study cards moved to the end as their own paragraphs, cards with unknown ids dropped, widget directives put on their own paragraphs, a widget button's prompt quoted at the top); creates a branched session (session.branch or session.branch_stored), renames it with session.title and sends the side question as its first prompt only when the user clicks Open; the Desktop half keeps the last text selected in the window in memory for 60 seconds to prefill the side-question dialog, and writes the glossary to the clipboard only when the user clicks Export glossary. No network calls, no shell commands, no background processes, no stored credentials, no telemetry.","category":"desktop","platforms":[],"maintainer":"IpastorSan","author":"IpastorSan","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/IpastorSan/study-tree","docs":"https://github.com/IpastorSan/study-tree/blob/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/README.md","tools":["study_branch","study_tree","study_resolve","study_visual"],"hooks":["pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"The cards, the pane and the widgets need Hermes Desktop. On the CLI, the TUI and messaging platforms a card shows as a plain ::study-tree-node line and a widget as a plain ::preview line.; The Desktop half is off by default: turn on Study Tree under Capabilities → Plugins after installing.; Widgets in the pane are view-only; their follow-up buttons work in the chat.","state":"merged","pr":151242,"prs":[{"n":151242,"state":"merged","created":"2026-11-08T10:38:14Z"}],"created":"2026-11-08T10:38:14Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/banner.png","https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/screenshot-widget.png","https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/screenshot-card.png","https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/screenshot-pane.png","https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/screenshot-side-thread.png","https://raw.githubusercontent.com/IpastorSan/study-tree/aae3bf53ca5d8429d8f0ff22bb14fcbcce505e03/docs/how-it-works.gif"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/study-tree.webp"},{"name":"hermes-salespilot","title":"SalesPilot","summary":"An approval-gated sales desk inside Hermes: collect companies from quoted page evidence, qualify them against your ICP, draft the first email, and send one email only after you pick \"send\" in the host approval prompt — then keep a customer timeline, hot prospects and follow-up dates. Sends nothing on its own, and a refusal, bounce, do-not-contact or archive stops a draft that was written before it. Eleven salespilot_* tools plus a Desktop workspace (Customers, Hot Prospects, Settings, CSV import).","disclosure":"network calls only to the SMTP and IMAP server you configure; mailbox credentials come from Hermes secrets (SALESPILOT_SMTP_USERNAME / SALESPILOT_SMTP_PASSWORD) and are never written to the database, logs or the page; lead data lives in $HERMES_HOME/plugin-data/hermes-salespilot/; no telemetry and no third-party analytics.","category":"tools","platforms":[],"maintainer":"ranggaoscar","author":"ranggaoscar","version":"1.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/ranggaoscar/hermes-salespilot","docs":"https://github.com/ranggaoscar/hermes-salespilot#readme","tools":["salespilot_onboard_business","salespilot_import_customers","salespilot_qualify_lead","salespilot_research_opportunity","salespilot_draft_outreach","salespilot_plan_followups","salespilot_report","salespilot_request_approval","salespilot_configure_mail","salespilot_mission","salespilot_pipeline"],"hooks":[],"middleware":[],"env":[],"known_issues":"One mailbox per Hermes profile: several brands share the profile's single SMTP login until Hermes exposes per-instance secrets.; Reply intent is keyword-based; a reply it cannot decide opens a review item instead of guessing.; CSV import only (no .xlsx parsing yet).","state":"merged","pr":151239,"prs":[{"n":151239,"state":"closed","created":"2026-11-08T10:30:12Z"}],"created":"2026-11-08T10:30:12Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/assets/catalog-cover.png","https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/docs/screenshots/v1.1/01-customers.png","https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/docs/screenshots/v1.1/02-approve-drawer.png","https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/docs/screenshots/v1.1/03-replied-drawer.png","https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/docs/screenshots/v1.1/04-hot-prospects.png","https://raw.githubusercontent.com/ranggaoscar/hermes-salespilot/dad697e6ae4903c06657e997bceaeae0342ddfc8/docs/screenshots/v1.1/05-import.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-salespilot.webp"},{"name":"command-reviewer","title":"command-reviewer","summary":"Reviews every terminal/execute_code call before execution: deterministic hard rules block credential reads and destructive patterns, script contents are ingested and judged (not just filenames), an LLM reviewer with an injection-resistant prompt issues SAFE/SUSPICIOUS/MALICIOUS verdicts, and operator approve/deny decisions are recorded content-hash-bound so an unchanged script is never re-asked.","disclosure":"the reviewer reads the contents of script files referenced by reviewed commands and sends them to your configured LLM provider; it shells out to docker exec to read sandbox files when the in-process environment is unavailable; reviewer failures fail closed to a human approval prompt; nothing is auto-approved. Disclosure — reviews every terminal/execute_code call before it runs; reads the contents of script files the command names (inside the Docker sandbox via `docker exec` when available, otherwise from the host path) and sends them, with the command text, to your configured auxiliary LLM; keeps an audit log and a precedent database of your approval decisions under $HERMES_HOME/plugin-data/command-reviewer/ and reads config.yaml (read-only) to see whether you answered \"Always\" to one of its prompts; can only block or escalate to the approval prompt, never auto-approves; ships in shadow mode (log only) until you set `mode: enforce`.","category":"tools","platforms":[],"maintainer":"spideysri2802","author":"spideysri2802","version":"0.2.9","requires_hermes":">=0.23.0","repo":"https://github.com/spideysri2802/command-reviewer","docs":"https://github.com/spideysri2802/command-reviewer#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151230,"prs":[{"n":151230,"state":"merged","created":"2026-11-08T10:06:38Z"}],"created":"2026-11-08T10:06:38Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"perf-lab","title":"Perf Lab","summary":"Proof for speed-ups. When you ask Hermes to make code faster, Perf Lab times it before and after, fingerprints the output so a faster-but-wrong change is rejected, profiles Python with a flame graph, and enforces it with hooks: no code edits before a baseline, no finishing before a re-measure, and the plugin's own measured result appended under the reply.","disclosure":"perf_bench/perf_profile run the command the agent passes, without a shell, only when it starts with an interpreter (python, node, ruby, uv run ...) and has no inline code (-c/-e); the script itself runs with your permissions, as it would in the terminal. In chats whose typed message is about speed: pre_llm_call adds a short rules note to the turn, pre_tool_call blocks write_file/patch on code files until a baseline exists (at most twice per file, then lets it through and says so), pre_verify asks for one re-measure if code changed, and transform_llm_output appends a clearly labelled Perf Lab section (it never rewrites the agent's text). A Gatekeeper switch in the pane turns the hooks off. Stores commands, timings, output fingerprints, the first 200 KB of each run's stdout, profiles and per-chat state under plugin-data/perf-lab (Forget deletes a script's data). No network calls, no telemetry, no credentials.","category":"tools","platforms":["linux","macos"],"maintainer":"Murali-lns","author":"Murali-lns","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Murali-lns/perf-lab","docs":"https://github.com/Murali-lns/perf-lab#readme","tools":["perf_bench","perf_profile","perf_skip"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","pre_verify","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151227,"prs":[{"n":151227,"state":"open","created":"2026-11-08T09:58:56Z"}],"created":"2026-11-08T09:58:56Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Murali-lns/perf-lab/2d818104748ef5f0c73a937ecc050d524ee1301b/docs/faster.png","https://raw.githubusercontent.com/Murali-lns/perf-lab/2d818104748ef5f0c73a937ecc050d524ee1301b/docs/rejected.png","https://raw.githubusercontent.com/Murali-lns/perf-lab/2d818104748ef5f0c73a937ecc050d524ee1301b/docs/flame-graph.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/perf-lab.webp"},{"name":"wing","title":"Wing","summary":"Extra features for the Wing Android app: GPT Live voice and email draft cards. GPT Live voice uses ChatGPT subscription access with the selected Hermes profile's context. Email draft cards show recipients, cc/bcc, subject and body, then open the user's chosen email app for final edits and sending. Drafts work independently of voice and need no OpenAI credentials or mail account access. Draft cards adapt arsiktech's hermes-draft-cards design (MIT); the voice integration builds on Synero's hermes-live-voice work (MIT).","disclosure":"voice calls send the WebRTC SDP, the selected profile's Hermes-built system prompt (including memory) and client-supplied chat excerpts to chatgpt.com (Codex realtime endpoint) through the profile's openai-codex sign-in, with the headers OpenAI-Alpha: quicksilver=v2, originator: hermes-agent and random session ids; building fresh voice context runs a short-lived Python child that initialises the profile's memory providers and reads context files from the profile's configured terminal.cwd only; email drafts persist in the profile's plugin-data/wing SQLite database; relies on undocumented Hermes prompt-inspection and voice helpers that may break on update; draft cards and voice adapt arsiktech's hermes-draft-cards and Synero's hermes-live-voice (MIT). No telemetry, stored credentials or self-updater.","category":"general","platforms":[],"maintainer":"tarkilhk","author":"tarkilhk","version":"0.3.4","requires_hermes":">=0.23.0","repo":"https://github.com/tarkilhk/wing-hermes-plugin","docs":"https://github.com/tarkilhk/wing-hermes-plugin#readme","tools":["wing_email_draft","wing_email_draft_read"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires the matching Wing Android client. Email cards need a Wing build with wing-email-draft rendering; other clients see the tool fields/reference as text.; Voice context uses undocumented Hermes prompt-inspection and voice helpers that can change; admission validation reports these imports for reviewer inspection.; Live subscription voice requires a profile sign-in with voice access. OpenAI API voice is unavailable pending host-owned per-call instructions/voice support in NousResearch/hermes-agent#151774. Email drafts require neither.","state":"merged","pr":151223,"prs":[{"n":151223,"state":"merged","created":"2026-11-08T09:36:14Z"}],"created":"2026-11-08T09:36:14Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rariflat","title":"Rariflat","summary":"Live character reactions for Hermes tool calls; local reliability learning and explainable tool/skill recommendations weighted by task fit, reliability, measured usage-frequency rarity, and repeated-call restraint. The router recommends tools/skills only; it does not dispatch tasks to agents or invoke selected tools. An opt-in failure-streak and repeated-call guard is disabled by default. Tool arguments are inspected in memory for non-secret task tokens and repeat fingerprints; credential-like fields and recognized inline secrets are filtered before learning. No raw arguments or credentials are intentionally persisted. No network requests, telemetry, or subprocesses are initiated by the plugin.","disclosure":"","category":"desktop","platforms":[],"maintainer":"wadezigh96","author":"wadezigh96","version":"2.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/wadezigh96/rariflat-hermes","docs":"https://github.com/wadezigh96/rariflat-hermes#readme","tools":["rariflat_route","rariflat_status","rariflat_guard"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151221,"prs":[{"n":151221,"state":"merged","created":"2026-11-08T09:35:39Z"}],"created":"2026-11-08T09:35:39Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-axiom-agent","title":"Axiom Agent","summary":"Adds the nine-article Axiom Doctrine as pre_llm_call context (compact form capped at 1800 characters, full at 4000, owner additions separately at 800) and a /doctrine command that reports, per article, whether a matching enforcer plugin (standing, hermes-axioma, tripwire, handydandy, hermes-gatekeeper) is loaded and enabled. Enforces nothing itself: no tools, middleware or approval hooks, and ENFORCED means an enforcer is loaded and enabled, not verified coverage. Reads an optional owner additions file and only the top-level name line of user-plugin manifests, without following symlinked files; makes no writes, network, subprocess or model calls. No Python dependencies.","disclosure":"","category":"automation","platforms":["linux","macos"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.1.0","requires_hermes":"","repo":"https://github.com/percyhendrux123-prog/hermes-axiom-agent","docs":null,"tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Installed state covers user-plugin manifests under HERMES_HOME/plugins; an inactive pip or bundled enforcer shows as not found (a loaded one is detected through ctx.has_plugin).; Doctrine text is advice to the model, not a control. Install and enable the enforcer plugins for enforcement.","state":"merged","pr":151218,"prs":[{"n":151218,"state":"merged","created":"2026-11-08T09:13:08Z"}],"created":"2026-11-08T09:13:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tuneviva","title":"TuneViva","summary":"Read-only sheet music discovery and practice links through TuneViva's Streamable HTTP MCP server, with browser-local recognition guidance.","disclosure":"","category":"tools","platforms":[],"maintainer":"omercelik","author":"omercelik","version":"1.0.0","requires_hermes":"","repo":"https://github.com/omercelik/tuneviva-skills","docs":"https://github.com/omercelik/tuneviva-skills/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151215,"prs":[{"n":151215,"state":"merged","created":"2026-11-08T09:02:50Z"}],"created":"2026-11-08T09:02:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"field-from-above","title":"field-from-above","summary":"Free Sentinel-2 NDRE and terrain context for a Polish parcel or any point via GUGiK ULDK/NMT and Earth Search STAC.","disclosure":"requested parcel IDs or coordinates (as bounding boxes) are sent to uldk.gugik.gov.pl, earth-search.aws.element84.com and services.gugik.gov.pl, and Sentinel-2 band files (up to 400 MB each, several per new scene) are downloaded from sentinel-cogs.s3.us-west-2.amazonaws.com into a raster cache capped at 2 GB under HERMES_HOME/plugin-data/field-from-above, where the PNG maps are also written; no credentials, shell commands or background processes are used.","category":"tools","platforms":[],"maintainer":"Tomasz Kneblewski","author":"kneblewskitomasz-sys","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/kneblewskitomasz-sys/hermes-field-from-above","docs":"https://github.com/kneblewskitomasz-sys/hermes-field-from-above","tools":["field_from_above_parcel","field_from_above_point"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151213,"prs":[{"n":151213,"state":"merged","created":"2026-11-08T08:58:13Z"}],"created":"2026-11-08T08:58:13Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"caduceus","title":"Caduceus: Personalized Health & DNA AI","summary":"Answers about your own health that cite your DNA, Apple Health trends, medical records and new research, from a vault on your machine. Caduceus imports 23andMe, AncestryDNA, MyHeritage or FamilyTreeDNA raw data, a Promethease report, an Apple Health export and US health records (FHIR) into local SQLite, then gives your agent gene–drug checks (CPIC guidelines plus GLP-1 research), trends before and after a medication start, a rebuilt variant report, a one-page brief for your doctor and a research watch that puts studies on your own gene–drug pairs first. No DNA file yet? /caduceus demo loads an invented person to try it. Privacy levels are yours to choose: open by default, or standard, which hides Alzheimer's risk, hereditary cancer risk, carrier status, mental health and reproductive results until you unlock them. Information with limits, not medical advice.","disclosure":"imports, search and reports run locally, and the vault is never uploaded as a whole; tool results (slices of your data) enter the conversation, so the model provider you chose sees them; the research watch (on by default, runs when you or the agent ask for it or on a schedule you create, off with the `research_watch` setting) sends gene and topic terms, the names of medications you recorded, and public marker and article IDs, never genotypes, to Europe PMC and NCBI; scheduled checks run model turns billed like any message; no telemetry. Includes a report-a-problem skill: the agent drafts a bug report, asks you to check it holds no health data, and files it to this repository with `gh` only after you approve the draft.","category":"tools","platforms":[],"maintainer":"100yenadmin","author":"100yenadmin","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/electricsheephq/caduceus","docs":"https://github.com/electricsheephq/caduceus#readme","tools":["caduceus_search","caduceus_genome","caduceus_trend","caduceus_capture"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151211,"prs":[{"n":151211,"state":"merged","created":"2026-11-08T08:47:24Z"}],"created":"2026-11-08T08:47:24Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/electricsheephq/caduceus/8dd0c77ac80ce3b56a4b3285fbeca6c0fe83b767/docs/media/banner.jpg","https://raw.githubusercontent.com/electricsheephq/caduceus/8dd0c77ac80ce3b56a4b3285fbeca6c0fe83b767/docs/media/screenshot-variant-report.png","https://raw.githubusercontent.com/electricsheephq/caduceus/8dd0c77ac80ce3b56a4b3285fbeca6c0fe83b767/docs/media/screenshot-health-brief.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/caduceus.webp"},{"name":"cloro","title":"cloro","summary":"cloro web search backend: live Google Search results for the built-in web_search tool (search only; pair it with an extract backend for web_extract).","disclosure":"sends each search query and the configured country to api.cloro.dev with your CLORO_API_KEY, and each search uses cloro credits. Reads the key only through Hermes's secret scope. Registers no tools, hooks or middleware, writes no files, starts no processes, has no telemetry or self-updater, and uses only the Python standard library.","category":"web","platforms":[],"maintainer":"cloro-dev","author":"rbatista191","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/cloro-dev/hermes-plugin-cloro","docs":"https://github.com/cloro-dev/hermes-plugin-cloro#readme","tools":[],"hooks":[],"middleware":[],"env":["CLORO_API_KEY"],"known_issues":"","state":"merged","pr":151205,"prs":[{"n":151205,"state":"merged","created":"2026-11-08T08:11:23Z"}],"created":"2026-11-08T08:11:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wp-manager","title":"WP Website Manager","summary":"Look after a fleet of WordPress sites from Hermes: scan every site for plugin, theme, core and translation updates, install them behind Hermes's approval prompt with an automatic health check afterwards, and draft or edit posts and pages from chat (publishing asks first). Includes a WordPress page in Hermes Desktop and pairs with the \"Website Manager: WP Connector for Hermes\" WordPress plugin shipped in the repo. Takes no backups.","disclosure":"talks only to the WordPress sites you add (REST API, WordPress Application Passwords; plain http refused unless opted in per site; no cross-host redirects with credentials). Passwords resolve through Hermes secrets, or through the 1Password CLI you configure as op_binary, which wp-manager runs as a subprocess (argument list, no shell) to read op:// references, list vault names and, only when you choose it, create a new Login item (password passed on stdin). Stores site addresses, usernames and credential references (never passwords) plus an action log in its own folder under HERMES_HOME. Never reads or writes the Hermes .env. No telemetry.","category":"tools","platforms":[],"maintainer":"danieljwonder","author":"danieljwonder","version":"0.1.4","requires_hermes":">=0.22.5","repo":"https://github.com/danieljwonder/wp-manager","docs":"https://github.com/danieljwonder/wp-manager#readme","tools":["wp_sites","wp_site_add","wp_site_remove","wp_updates_scan","wp_update_apply","wp_health_check","wp_content_list","wp_content_get","wp_content_save"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151201,"prs":[{"n":151201,"state":"merged","created":"2026-11-08T08:00:20Z"}],"created":"2026-11-08T08:00:20Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/danieljwonder/wp-manager/78b783bd5e210b5501bd8de302169fe7b909bfaa/docs/screenshots/sites.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/78b783bd5e210b5501bd8de302169fe7b909bfaa/docs/screenshots/site-detail.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/78b783bd5e210b5501bd8de302169fe7b909bfaa/docs/screenshots/add-site.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/78b783bd5e210b5501bd8de302169fe7b909bfaa/docs/screenshots/approval.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/180b770c29ac47dda76106020dd24829938ab642/docs/screenshots/sites.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/180b770c29ac47dda76106020dd24829938ab642/docs/screenshots/site-detail.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/180b770c29ac47dda76106020dd24829938ab642/docs/screenshots/add-site.png","https://raw.githubusercontent.com/danieljwonder/wp-manager/180b770c29ac47dda76106020dd24829938ab642/docs/screenshots/approval.png"],"videos":[],"x":["https://x.com/danielwonder/status/2119334033226088695"],"youtube":[],"thumb":"/hackathon/thumbs/wp-manager.webp"},{"name":"hornlib","title":"HornLib","summary":"French Horn F/Bb double horn valve fingering charts (C1 to F6), multi-key pitch transposition (F, Bb, Eb, D, C, G, A, E), natural overtone harmonic series partials with cent deviations, mechanical vs lip trill fingerings, orchestral audition excerpt performance guides, stopped-horn intonation diagnostics, beginner horn and mouthpiece comparisons, and personalized daily brass warmup routines through HornLib's official MCP server (Streamable HTTP at https://hornlib.com/api/mcp, no sign-in, no keys in config). Bundles the hornlib and french-horn-fingering-chart workflow skills. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local runtime code, binaries, hooks, telemetry or self-updater; every tool call goes over HTTPS to hornlib.com/api/mcp with only the musical query arguments (note name, horn key, or excerpt). All 8 tools are public, free, and annotated read-only (readOnlyHint: true, destructiveHint: false). The package marks the server untrusted (trust: untrusted), so Hermes asks before any tool not annotated read-only and refuses them in unattended runs. The remote tool inventory is served at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"HornLib","author":"AbigailDavised","version":"1.0.3","requires_hermes":">=0.21.6","repo":"https://github.com/HornLib/mcp-server","docs":"https://hornlib.com","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151200,"prs":[{"n":151200,"state":"merged","created":"2026-11-08T07:56:15Z"}],"created":"2026-11-08T07:56:15Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/HornLib/mcp-server/50d9ea46d30f57c4ce679e60e745fc04c185c419/assets/cover.png","https://raw.githubusercontent.com/HornLib/mcp-server/50d9ea46d30f57c4ce679e60e745fc04c185c419/assets/screenshot.png","https://raw.githubusercontent.com/HornLib/mcp-server/50d9ea46d30f57c4ce679e60e745fc04c185c419/assets/editorial.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hornlib.webp"},{"name":"hermes-australian-legal","title":"Australian Deal Preparation","summary":"Experimental public prototype for synthetic evaluation. The behavioural benchmark and qualified legal review have not been completed. Prepare Australian deal questions for counsel using dated regulatory sources. Reads selected Commonwealth instruments from a separately cloned local Git corpus, retains compilation commits and caveats, refuses dates outside recorded coverage, checks review prerequisites, calculates explicit hypothetical earn-out scenarios, and checks literal quotations. Preparation for counsel, not legal or tax advice.","disclosure":"bounded local Git subprocesses, no shell; reads committed objects and metadata in the operator-selected corpus. No plugin network calls, credentials, telemetry, automatic updates, persistent matter writes or background jobs. The host model can receive supplied clause text and returned source excerpts. Approval fields are user attestations, not authenticated counsel approval or a host-wide permission gate. Quote matching does not verify source authenticity or legal support. The inspected corpus records selected Commonwealth instruments only and ends on 2026-09-01; it does not establish current law, Acts, case law, State law, tax or transaction-specific applicability.","category":"tools","platforms":["linux"],"maintainer":"drfinlaymccall","author":"drfinlaymccall","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/drfinlaymccall/hermes-australian-legal","docs":"https://github.com/drfinlaymccall/hermes-australian-legal#readme","tools":["au_legal_status","au_legal_provision","au_legal_review_gate","au_legal_earnout","au_legal_check_finding"],"hooks":[],"middleware":[],"env":[],"known_issues":"Synthetic evaluation only; paired model benchmark and qualified legal review pending.","state":"merged","pr":151199,"prs":[{"n":151199,"state":"merged","created":"2026-11-08T07:55:54Z"}],"created":"2026-11-08T07:55:54Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"microbiz-desk","title":"MicroBiz Desk","summary":"Customers, sales, debts and weekly reports for small businesses. Works offline, no API key needed.","disclosure":"","category":"tools","platforms":[],"maintainer":"Danzilla0","author":"Danzilla0","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/Danzilla0/microbiz-desk","docs":"https://github.com/Danzilla0/microbiz-desk/blob/c737d9e4d73a5eeb6995408a0e10fb50a60ce7aa/README.md","tools":["microbiz_add_sale","microbiz_record_payment","microbiz_who_owes_me","microbiz_customer_statement","microbiz_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151185,"prs":[{"n":151185,"state":"merged","created":"2026-11-08T07:17:37Z"}],"created":"2026-11-08T07:17:37Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"equipdash","title":"EquipDash","summary":"Run a rental or activity business on EquipDash through EquipDash's official MCP server (Streamable HTTP at https://app.equipdash.com/mcp/v1, OAuth sign-in, no keys in config): the day's pickups, returns and sessions, bookings, availability and prices, customers, items, payments, refunds and unsigned waivers. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only, with one skill that has the agent preview every change and wait for the person's yes.","disclosure":"hosted-only MCP connector to app.equipdash.com (no local code): every tool call sends its arguments there and returns the signed-in business's bookings, customer names and contact details and payment records to Hermes and its model provider; tools can create, move and cancel bookings, send payment links, issue card refunds and email customers. The package marks the server `trust: untrusted`, so Hermes asks before each write-capable call and refuses them in unattended runs; the tool set is served by EquipDash at runtime and is not covered by the pinned sha. OAuth sign-in requires adding the server to `mcp_servers` in config.yaml (keep `trust: untrusted`) and running `hermes mcp login equipdash`.","category":"tools","platforms":[],"maintainer":"EquipDash","author":"equipdash","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/equipdash/agent","docs":"https://github.com/equipdash/agent#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151180,"prs":[{"n":151180,"state":"merged","created":"2026-11-08T07:02:31Z"}],"created":"2026-11-08T07:02:31Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"external-agents-agy","title":"External Agents: AGY companion","summary":"External-process AGY client for the paired External Agents delegation backend.","disclosure":"","category":"models","platforms":["macos"],"maintainer":"NomieC","author":"NomieC","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/NomieC/hermes-external-agents","docs":"https://github.com/NomieC/hermes-external-agents/blob/c9f7f6cb893d65102519375dced3748a163e0e7d/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Companion to external-agents at the same commit; direct primary-chat use is unsupported.; Requires separately installed official AGY CLI and vendor-managed supported login. No vendor binary or token store reader is included.; Requires in-process loading; the custom client cannot run under isolated plugin-host policy.; AGY can use network services and access files under its own permissions; workspace is not a filesystem sandbox.; Headless vendor approval dialogs cannot be forwarded to Hermes. No permission-bypass flags or blanket grants are installed.; Prompts appear in process arguments and task answers are cached locally. Vendor usage and cost are unknown.; On the tested Hermes host, directory providers remain discoverable when disabled; see upstream issue 137671. Disable the delegation backend as well and use a fresh conversation/process.","state":"open","pr":151177,"prs":[{"n":151177,"state":"open","created":"2026-11-08T06:57:57Z"}],"created":"2026-11-08T06:57:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"external-agents","title":"External Agents for Hermes","summary":"Route ordinary Hermes delegation to AGY through a native child wrapper.","disclosure":"","category":"automation","platforms":["macos"],"maintainer":"NomieC","author":"NomieC","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/NomieC/hermes-external-agents","docs":"https://github.com/NomieC/hermes-external-agents/blob/c9f7f6cb893d65102519375dced3748a163e0e7d/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires external-agents-agy installed separately at the same commit; companion installation is not automatic.; Early opt-in preview; only macOS arm64 is live-tested. Windows is unsupported.; Requires trusted in-process loading and an explicit local terminal policy.; AGY owns its tools, authentication and permissions; Hermes tool filters do not confine them.; No vendor approval bridge, live steering, resume parity or proven OS containment.; Prompts appear in process arguments; cached task answers are stored locally with owner-only POSIX permissions, not encryption.; On the tested Hermes host, disabling only the provider does not revoke routing; see upstream issue 137671. A fresh backend-disabled configuration refuses delegation.","state":"open","pr":151177,"prs":[{"n":151177,"state":"open","created":"2026-11-08T06:57:57Z"}],"created":"2026-11-08T06:57:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"protocol-chaos","title":"Protocol Chaos","summary":"Long-lived matters shared by all your assistants, kept on your own Protocol Chaos server (draft 0.2): Hermes sees an overview of your open matters and the details of the ones a message names, records your words after it answers and folds them into that matter's goal, limits, plan, progress and state, and a bundled skill organizes what every assistant recorded once a day. Runs beside your memory provider, not instead of it.","disclosure":"each new session's system prompt (not a scheduled job's; subagent sessions included) gets an overview of open matters, up to 3,900 characters. Before each turn the plugin fetches the server's directory (cached 30 seconds) and reads, by id, up to three matters whose titles share words with the message; the message itself is never sent to the server. After each answer, a background call to the auxiliary model Hermes routes for protocol_chaos_capture (the compression model by default) receives the user's message, up to 600 characters of the previous reply, the matters' titles and states and today's date; when it decides to record, the user's words, copied verbatim, are sent to the server at PROTOCOL_CHAOS_URL with PROTOCOL_CHAOS_TOKEN, and a second call receives that matter's fields, up to six earlier words, the titles of its larger matters and parts, and the last few messages with the reply (about 6,000 characters), and the fields it returns are written to the server. Nothing else is contacted and there is no telemetry; logs hold ids, counts, times and token counts. Like any plugin's added context, the matters added to a turn are saved with it in Hermes's session history and resent on later turns. Cron and subagent turns get no per-turn context and record nothing. The bundled organizer skill runs only as a scheduled job the user creates, uses the server's MCP tools, and keeps a checkpoint at ~/.hermes/protocol-chaos/organizer-checkpoint.","category":"general","platforms":[],"maintainer":"chaos-xxl","author":"chaos-xxl","version":"0.3.0","requires_hermes":">=0.21.1","repo":"https://github.com/chaos-xxl/protocol-chaos","docs":"https://github.com/chaos-xxl/protocol-chaos/blob/main/integrations/hermes/protocol-chaos/README.md","tools":[],"hooks":["pre_llm_call","post_llm_call"],"middleware":[],"env":["PROTOCOL_CHAOS_URL","PROTOCOL_CHAOS_TOKEN"],"known_issues":"","state":"merged","pr":151168,"prs":[{"n":151168,"state":"merged","created":"2026-11-08T06:38:10Z"}],"created":"2026-11-08T06:38:10Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/Chaosxinglong/status/2119739920743067788"],"youtube":[],"thumb":null},{"name":"ticklist","title":"TickList","summary":"A checklist the user ticks, in a Desktop pane — every tick, untick, add and removal is announced to the agent as it happens.","disclosure":"","category":"desktop","platforms":[],"maintainer":"mchevatheachiever","author":"mchevatheachiever","version":"1.8.6","requires_hermes":">=0.21.5","repo":"https://github.com/mchevatheachiever/hermes-ticklist","docs":null,"tools":["tick_add","tick_set","tick_list","tick_remove","tick_clear","tick_delete_list"],"hooks":[],"middleware":[],"env":[],"known_issues":"Every row is drawn, so a list of a couple of thousand rows will feel heavy.","state":"merged","pr":151167,"prs":[{"n":151167,"state":"merged","created":"2026-11-08T06:37:57Z"}],"created":"2026-11-08T06:37:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/mchevatheachiever/hermes-ticklist/464c69a3c2734e4359d8c6159f91eb824deefa66/demo/ticklist-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"weir","title":"Weir","summary":"Public X (Twitter) and Reddit data through Weir's hosted MCP server: search posts with X's operators, and read profiles, timelines, replies, threads, Lists, subreddits and comments. Portable Agent Plugins v1 package with the hosted MCP server (remote streamable-http, OAuth 2.1 with a client ID metadata document or dynamic client registration, so no keys in config) and one skill; no code, no executables, no stored credentials.","disclosure":"every tool call goes to api.weirapp.io and spends Weir credits (5,000 free a month, then prepaid packs); the search terms, handles and links you look up are sent to Weir. Data tools are annotated read-only; the optional monitor tools appear only with the monitors:write scope, and the package marks its server untrusted, so Hermes asks before any call that is not read-only and refuses those calls in unattended runs; a `weir` server you define in config.yaml replaces the package's and drops that prompt unless you add `trust: untrusted`. Weir is not affiliated with X or Reddit. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Weir","author":"tarun-khatri","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/tarun-khatri/weir-mcp","docs":"https://docs.weirapp.io/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151166,"prs":[{"n":151166,"state":"merged","created":"2026-11-08T06:31:10Z"}],"created":"2026-11-08T06:31:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fleet-sentinel","title":"Fleet Sentinel","summary":"Out-of-band health monitoring for remote Hermes gateway hosts: corroborated up/deaf/down verdicts, escalating alerts, and gateway recovery. Cross-checks four independent signals (TCP reachability, SSH, the host's systemd unit state, and the messaging platform API reached from the host itself) so a broken gateway can still report on itself, then re-pages on a timer. Ships three tools (fleet_status, fleet_probe, fleet_recover) plus a tick script for a no_agent cron job, so alerting never depends on the agent whose gateway is down.","disclosure":"opens SSH sessions to every configured host with BatchMode key auth and runs commands there (systemctl show, journalctl tail of the unit, a platform-API reachability probe, tailscale status); with auto_heal enabled, or on an explicit fleet_recover call, it runs systemctl restart on the configured unit. It does not read the remote .env, auth.json, session store or headers, sends no message content anywhere, contacts no third-party service, and stores no credentials: host addresses come from the user's own ssh config. No telemetry.","category":"automation","platforms":["linux","macos"],"maintainer":"imperator-clawdius","author":"imperator-clawdius","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/imperator-clawdius/hermes-fleet-sentinel","docs":"https://github.com/imperator-clawdius/hermes-fleet-sentinel#readme","tools":["fleet_status","fleet_probe","fleet_recover"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151159,"prs":[{"n":151159,"state":"open","created":"2026-11-08T06:17:14Z"}],"created":"2026-11-08T06:17:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"skill-layers","title":"skill-layers","summary":"Preserve source skills, create writable derivatives, and review three-way source updates.","disclosure":"publishing (only from the Desktop page, the dashboard or the `hermes skill-layers` CLI; the three agent tools are read-only) writes a new `sl-*` skill folder into the active profile's skills directory and never replaces an existing one; three-way source updates run the local `git merge-file` with a scrubbed environment; history is kept under the profile's plugin data and is not removed on uninstall.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"asimons81","author":"tony-simons-aiowa","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/asimons81/hermes-skill-layers","docs":"https://github.com/asimons81/hermes-skill-layers/blob/4ae841ab0c6a4b3506b561ed328ecc998774361c/README.md","tools":["skill_layers_list","skill_layers_status","skill_layers_diff"],"hooks":[],"middleware":[],"env":[],"known_issues":"The contributed CLI requires Hermes plugin isolation mode in_process; managed host isolation skips CLI contributions.","state":"merged","pr":151158,"prs":[{"n":151158,"state":"merged","created":"2026-11-08T06:16:46Z"}],"created":"2026-11-08T06:16:46Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"heartbeat2","title":"HeartBeat 2.0","summary":"Give your agent a working life between your messages. Put it in charge of something and it keeps working on it on its own time. A role is a standing responsibility with a charter, a notebook the agent keeps between turns and a rhythm it sets itself, and it doesn't expire on a timer. Turn on own time and the agent gets regular turns of its own: it looks at its desk (its roles, what's due, what it noticed, the budget left) and decides what to do. You (with /pulse) or your agent (with the pulse tool) can also 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) that cost no model call until something changes. Every wake is a turn in the same messaging conversation, on that chat's own model: no side model, cron session or subagent. Quiet work counts: a silent turn that makes progress is real work, and only wakes that keep finding nothing to do slow down, then pause and ask once. The guardrails are budgets you set: turns per day, an optional daily cost limit, turns per role, messages per day, the unanswered mute and quiet hours. They hold back messages and spending, not initiative, and the agent can tighten its own limits but never widen yours. 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. It delivers to messaging-gateway DMs by default (group and topic chats too when dm_only is off) 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, watchers, roles and own-time turns 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, watchers and roles itself unless you set agent_can_create to ask_first or no; roles have no expiry, and the agent's recurring wakes and roles keep running turns during quiet hours, while the unanswered mute is on and after the daily message cap (only their messages are held), up to the daily turn cap and the optional daily_cost_limit_usd (no cost limit by default); own-time turns (off by default, own_time_hours) run without an assigned task; 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.","category":"automation","platforms":["linux","macos"],"maintainer":"100yenadmin","author":"100yenadmin","version":"0.3.11","requires_hermes":">=0.21.6","repo":"https://github.com/electricsheephq/heartbeat2","docs":"https://github.com/electricsheephq/heartbeat2#readme","tools":["pulse"],"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"],"middleware":[],"env":[],"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 chats: DMs by default, group and topic chats too when dm_only is off; 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).","state":"merged","pr":152113,"prs":[{"n":152113,"state":"merged","created":"2026-11-09T17:47:38Z"},{"n":151716,"state":"merged","created":"2026-11-09T06:44:47Z"},{"n":152054,"state":"closed","created":"2026-11-09T16:05:50Z"},{"n":151876,"state":"closed","created":"2026-11-09T11:16:59Z"},{"n":151596,"state":"closed","created":"2026-11-09T01:41:24Z"},{"n":151419,"state":"closed","created":"2026-11-08T17:52:27Z"},{"n":151388,"state":"closed","created":"2026-11-08T16:29:04Z"},{"n":151350,"state":"closed","created":"2026-11-08T14:58:56Z"},{"n":151278,"state":"closed","created":"2026-11-08T11:58:01Z"},{"n":151190,"state":"closed","created":"2026-11-08T07:25:25Z"},{"n":151155,"state":"closed","created":"2026-11-08T06:13:15Z"}],"created":"2026-11-08T06:13:15Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/banner.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/see-it-work-1-armed.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/see-it-work-2-followup.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/see-it-work-3-fix.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/see-it-work-4-roles.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/799554b0ea7c92c762018edde7e98ea543039f42/docs/media/see-it-work-5-desk.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/ed7a71570c08817e752187ca4944db58f5d0a620/docs/media/banner.png","https://raw.githubusercontent.com/electricsheephq/heartbeat2/ed7a71570c08817e752187ca4944db58f5d0a620/docs/media/see-it-work-1-armed.png"],"videos":[],"x":["https://x.com/ElectricSheepIO/status/2119811070089138455"],"youtube":[],"thumb":"/hackathon/thumbs/heartbeat2.webp"},{"name":"anvilads","title":"AnvilAds","summary":"Read-only access to your AnvilAds Google Ads data from Hermes, via the AnvilAds Connect AI MCP server (Streamable HTTP at https://anvilads.com/mcp): connected ad accounts, campaigns from the latest stored snapshot, performance summaries (spend, clicks, conversions, CPA), the latest morning or weekly report, lead totals, and ad audit grades, plus a bundled skill teaching the morning-check workflow. AnvilAds is an AI agent that builds, launches, and optimizes Google Ads; the owner approves every launch in the AnvilAds dashboard.","disclosure":"hosted-only connector with no local code: every tool call goes to anvilads.com, authenticated with your ANVILADS_API_KEY (a per-business key created in the AnvilAds dashboard, sent as a bearer header only to that host). The tool set is served by the remote server at runtime and is not covered by the pinned sha; the vendor documents it as read-only (seven tools over stored data, no writes, no live Google Ads calls).","category":"tools","platforms":[],"maintainer":"AnvilAds","author":"lordteez","version":"1.0.0","requires_hermes":">=0.19.0","repo":"https://github.com/anvilads-app/agent","docs":"https://anvilads.com/connect-ai","tools":[],"hooks":[],"middleware":[],"env":["ANVILADS_API_KEY"],"known_issues":"","state":"merged","pr":151149,"prs":[{"n":151149,"state":"merged","created":"2026-11-08T05:54:23Z"}],"created":"2026-11-08T05:54:23Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"emporium","title":"Emporium","summary":"Hermes opens a shop: sell this agent's skills to anyone (people, scripts, other agents) for USDC per job over x402, paid only on delivery. A new gateway platform takes paid HTTP jobs, verifies the payment before work starts and settles it on-chain only when the result is ready, so a failed, timed-out or abandoned job costs the buyer nothing. Each job runs in its own session that loads only the toolsets its service sells, behind a tool lock and a per-job tool cap. Every job is metered (model calls, tokens, and its inference cost from Hermes's own session pricing), so /shop and the dashboard show sales, AI cost, profit and margin. Services can subcontract part of a job to owner-pinned shops, paid out of the job's own price. Hermes can also hire other shops, after checking their receipts on-chain, within a per-job ceiling, a daily budget and its approval gate. Adds a storefront page, /shop, `hermes emporium`, a dashboard tab, and stress and robbery benches.","disclosure":"while the gateway runs the shop listens on host:port (default 127.0.0.1:9402) and calls the configured x402 facilitator (default x402.org) to verify and settle payments, and a JSON-RPC endpoint (default the network's public one) to check payments on-chain; the hire tools call the shop URLs the agent is given (public addresses only, unless the owner lists a private shop in buyer_allow_hosts; link-local and metadata addresses never) and the network's RPC; the optional EMPORIUM_BUYER_KEY (read via the secret scope) signs USDC transfer authorizations for hires and subcontracts within the owner's limits; a SQLite ledger of job metadata (never inputs or outputs) is kept under plugin-data/emporium/, and each job is a session in the shop profile's Hermes history. The shop refuses to open on a profile whose memory, persona or project context files would reach buyers' jobs unless the owner sets allow_unsealed_profile, and `hermes emporium init` turns built-in memory off on the shop's own profile (never the main one).","category":"platform","platforms":[],"maintainer":"0xdopewilly","author":"0xdopewilly","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/0xdopewilly/hermes-emporium","docs":"https://github.com/0xdopewilly/hermes-emporium#readme","tools":["emporium_browse","emporium_hire"],"hooks":["pre_llm_call","pre_tool_call","post_api_request","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151148,"prs":[{"n":151148,"state":"merged","created":"2026-11-08T05:53:52Z"}],"created":"2026-11-08T05:53:52Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/7b43458565055461b8094ce44199976933275fad/docs/banner.png","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/01-storefront.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/02-approval.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/03-agents-hiring-agents.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/04-receipt-on-chain.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/05-the-books.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/06-lock-held.jpg","https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/3054699240bb8dd3d387b01592efdcc709d1bc0d/screenshots/07-swarm.jpg"],"videos":[],"x":["https://x.com/sentinel_dapper/status/2119309815176438152","https://x.com/sentinel_dapper/status/2119500298406252568"],"youtube":[],"thumb":"/hackathon/thumbs/emporium.webp"},{"name":"midi-bridge","title":"midi-bridge","summary":"Send live MIDI events to a local DAW from Hermes Agent. Play notes, chords, drum patterns, control changes, and program changes in real time through any armed instrument track. Uses CoreMIDI (macOS) / ALSA (Linux) via the mido Python library. No cloud, no API keys — everything is local. Ships with 7 bundled skills: core (DAW setup, music theory, troubleshooting) plus 6 genre recipe skills (trap-beat, rap-boom-bap, house-beat, kanye-style, bach-melody, mozart-mode) so users can say 'play a trap beat' and get the right pattern.","disclosure":"","category":"tools","platforms":[],"maintainer":"james-see","author":"james-see","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/james-see/midi-bridge","docs":"https://github.com/james-see/midi-bridge/blob/9e5893471af435ac3128e58c9c19ae7fab38826b/README.md","tools":["send_note","send_notes","send_cc","send_program_change","send_pitch_bend","play_pattern","drum_pattern","list_midi_ports","set_output"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151144,"prs":[{"n":151144,"state":"open","created":"2026-11-08T05:44:27Z"}],"created":"2026-11-08T05:44:27Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"on-brand","title":"On-Brand","summary":"Brand voice and compliance rules Hermes can't break. Per-brand profiles (person, tone, banned words, exact spellings, required tags, length/emoji/hashtag limits) plus crypto and health compliance packs. A deterministic linter scores every ```copy draft 0-100 before you see it; failing drafts are rewritten by your active model and re-checked until they pass, and off-brand posts sent through outbound tools are blocked with the fixes Hermes needs. /onbrand, four agent tools (check, rules, learn, voiceover), a Desktop pane with a live fix/block feed and a status-bar chip.","disclosure":"no network calls, telemetry or credentials of its own; drafts that need fixing, the brand rules and samples given to onbrand_learn go to the user's active Hermes model through ctx.llm. While a brand is active it rewrites ```copy blocks in replies (autofix can be turned off) and refuses outbound tool calls (names containing send, post, tweet, publish, reply, cast, dm, broadcast, announce, webhook, create_message, discord, telegram, slack) whose copy breaks a hard rule (gate can be turned off). Optional hold_stream setting (off by default) holds every reply in the profile until it has been checked. Stores profiles, settings and the last 60 checks (draft text up to 600 characters each) in HERMES_HOME/plugin-data/on-brand/. No shell commands, background processes or self-update.","category":"general","platforms":[],"maintainer":"Mhiah","author":"Mhiah","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Mhiah/On-Brand","docs":"https://github.com/Mhiah/On-Brand","tools":["onbrand_check","onbrand_rules","onbrand_learn","onbrand_voiceover"],"hooks":["pre_llm_call","transform_llm_output","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151137,"prs":[{"n":151137,"state":"merged","created":"2026-11-08T05:30:44Z"}],"created":"2026-11-08T05:30:44Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/1be76ddf-82ce-4a45-b2c1-ef5537240418","https://github.com/user-attachments/assets/446149f6-1c09-4d9d-a566-a870a0906a5d","https://github.com/user-attachments/assets/7a80ad97-fe1d-41dc-bc10-d6911c5b539f","https://github.com/user-attachments/assets/5cf436a8-ad7b-4a4c-8e0a-8ecad095e6ef"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/on-brand.webp"},{"name":"wake-me-when","title":"Wake Me When","summary":"Wakes you the moment something happens in live audio or video that has no feed: a keynote reaching pricing, an earnings call giving guidance, a Twitch boss fight, a council agenda item, a launch at T-minus 1 or a scrub. /wakeme <url> when <condition> (or just ask the agent) watches YouTube Live, Twitch, HLS, RTSP or a bundled demo:// stream with local speech recognition (faster-whisper, Hermes's own stt-whisper extra), on-screen OCR and an optional vision check, and posts an alert in the same chat with the quote, the stream time and a jump-in link; replying 'clip' hands you the moment as a video, 'not it' teaches the judge and keeps watching, 'every time …' alerts on each occurrence, /wakeme catchup summarises what you missed, and /wakeme <recording> <question> searches recordings for timestamps; one slash command in all. Cheap cue matching runs first; one LLM judge call (its own auxiliary task, wakeme_judge) confirms, citing transcript rows so times never come from the model; a per-watch hourly budget falls back to unconfirmed cue alerts instead of missing silently.","disclosure":"runs one ffmpeg (plus streamlink for Twitch, HLS and web-media links) per active watch in its own process group, killed on stop, unload and exit, and one shared speech-recognition thread; contacts only the stream hosts you give it (via yt-dlp, streamlink, ffmpeg), Hugging Face once for the Whisper model, and Hermes's package index when it installs the stt-whisper extra; sends transcript excerpts, on-screen text and (only for visual conditions) keyframes to your configured model through ctx.llm; external tools (ffmpeg, yt-dlp, streamlink, tesseract, a JS runtime for yt-dlp) are user-installed and detected, never bundled; subprocesses use argv lists, -- before user URLs, an explicit ffmpeg -protocol_whitelist per source and a minimal environment (PATH, HOME, TMPDIR, locale, XDG and proxy/CA settings; no API keys or tokens); refuses private network addresses, including the stream URLs yt-dlp and streamlink resolve a link to, unless allow_private_network is on; direct HLS and web-media links are fetched by streamlink through a loopback proxy on 127.0.0.1 (random port, per-source random credentials) that checks every connection, playlist entries and redirects included, and dials the address it checked, unless you set your own proxy; and local files from messaging chats unless they are in allowed_media_dirs; keeps a 3-minute media buffer per watch, clips for 2 days and transcripts for 7 days under its plugin-data; while a chat has watches, its pre_llm_call hook adds a one-line note naming them to the user's turn; optional allow_gateway_injection (off by default) lets it ask the agent to attach the clip right after an alert (one agent turn on your main model) and hand an alert it could not post to the agent; DRM streams are not supported; no telemetry.","category":"automation","platforms":["linux"],"maintainer":"kruxarth","author":"kruxarth","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/kruxarth/wake-me-when","docs":null,"tools":["wakeme_watch","wakeme_find","wakeme_list","wakeme_stop","wakeme_catchup","wakeme_clip","wakeme_feedback"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151135,"prs":[{"n":151135,"state":"merged","created":"2026-11-08T05:25:55Z"}],"created":"2026-11-08T05:25:55Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/banner.png","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/demo-keynote.jpg","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/twitch-alert.jpg","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/youtube-live-alert.jpg","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/catchup.jpg","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/not-it.jpg","https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/docs/screenshots/pipeline.jpg"],"videos":[],"x":[],"youtube":["6XvvnIixn14"],"thumb":"/hackathon/thumbs/wake-me-when.webp"},{"name":"site-skills","title":"site-skills","summary":"Twelve portable Agent Plugins v1 skills, each a short research guide to one public reference or directory site in the sleep-health, dental, home-improvement and superyacht-charter space (findsleepdoctors.com, sleepclinicdirectory.com, sleepclinicsau.com, frenectomyguide.com, qsedationdentistry.com, schlafklinikfinder.com, chalazionguide.com, sleepclinicguide.com, dipandheat.com, garagevertical.com, golfbayguide.com, superyachtcharterguide.com). Skills only — no tools, hooks, middleware, MCP servers, environment variables, Python dependencies or plugin code.","disclosure":"every skill is static text whose links point at the author's own public sites; no network calls, shell commands or credential access.","category":"web","platforms":[],"maintainer":"imamalkan-hub","author":"imamalkan-hub","version":"1.0.0","requires_hermes":"","repo":"https://github.com/imamalkan-hub/site-skills","docs":"https://github.com/imamalkan-hub/site-skills#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151130,"prs":[{"n":151130,"state":"open","created":"2026-11-08T05:20:38Z"}],"created":"2026-11-08T05:20:38Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"clearance","title":"Clearance","summary":"Per-user tool permissions for Hermes on messaging platforms and webhooks (#527, #3897): give each sender a tier (owner, admin, user, guest, blocked or your own) and every tool call is checked in code against the sender's tier before it runs, so a prompt cannot talk its way to terminal access. Deny-by-default for tools a tier does not name (new MCP servers included), per-tier hourly rate limits, a /clearance command to inspect and assign tiers from chat, and a local audit log of refused actions.","disclosure":"pre_tool_call may block a tool call (never modifies arguments, never approves, never touches the approval system) and pre_llm_call may block a turn for the blocked tier or a rate limit and appends one line of context naming the sender's current tier (gateway senders only); with the default settings every messaging and webhook sender, the bot owner included, is the `guest` tier (chat only, no tools) until assigned a tier in the plugin settings or with /clearance set from a local session; registers /clearance; reads only its own settings and the per-message session identity; writes its own settings on /clearance set|unset (owner only) and an audit log (tool and argument names, never values) in its plugin data directory; no network calls, no shell commands, no background processes, no telemetry, no credential reads, no self-update. Not a sandbox: an allowed tool keeps its normal reach.","category":"tools","platforms":[],"maintainer":"yuzuru99","author":"yuzuru99","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/yuzuru99/hermes-clearance","docs":"https://github.com/yuzuru99/hermes-clearance#readme","tools":[],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151128,"prs":[{"n":151128,"state":"merged","created":"2026-11-08T05:15:22Z"}],"created":"2026-11-08T05:15:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/agungkzn/status/2119295704380461076"],"youtube":[],"thumb":null},{"name":"agent-app","title":"Agent Apps","summary":"Build, evolve and operate Agent Apps from Hermes: full applications that you use in the browser and the agent uses through their own CLI (a CRM, a dashboard, an expense tracker). Adds the /agent-app command, `hermes agent-app`, the six framework skills, 22 agent_app_* tools to build, validate, launch, operate, install and export apps, and an Agent Apps tab in `hermes dashboard` and hermes-webui: one tab per app with its own Hermes session, a marketplace, an import panel, and Connect for an app that runs on another machine.","disclosure":"needs the agent-app-framework npm CLIs and runs `agent-app` / `a2app` as subprocesses (never through a shell), including `agent-app skills --path` each time the plugin loads and `agent-app --version` on the first tool call, with only the environment the framework needs, so provider keys reach neither the CLIs nor the apps they serve; the skills are the ones that CLI ships, not a copy in the pinned tree. Installing, building or serving an app runs that app's toolkit commands (dependency install, build, server) on this machine. A pre_tool_call hook sends installs and inspects from any source but the default marketplace, operations the app holds for approval, and writes or app runs outside ~/.a2app/apps and the working directory to Hermes's approval prompt (refused by default where nobody can answer). The tab runs each app turn as a `hermes --cli chat -Q` child under your own model and approval policy (dangerous commands follow approvals.single_query_mode, default deny; the host's /yolo, session and gateway state are not inherited). Apps it builds, installs or launches keep serving on loopback ports until paused. Writes apps under ~/.a2app/apps and, on load, a `hermes` entry in ~/.a2app/harnesses.json (only when none exists) so a bridge you start yourself can run Hermes turns when an app queues work; reads and deletes its own app sessions in Hermes's session database. The Marketplace reads its catalogue from GitHub (CraftOS-dev/agent-app-collection), Import downloads the zip or git URL you give, and Connect calls the app address you enter and stores that app's credential in ~/.a2app/credentials.json. In hermes-webui a token-protected loopback backend serves the tab. No telemetry.","category":"tools","platforms":[],"maintainer":"CraftOS","author":"zfoong","version":"0.1.1","requires_hermes":">=0.21.6","repo":"https://github.com/CraftOS-dev/Agent-App","docs":"https://github.com/CraftOS-dev/Agent-App/tree/main/harness-plugins/hermes#readme","tools":["agent_app_describe","agent_app_find","agent_app_list","agent_app_get","agent_app_create","agent_app_update","agent_app_delete","agent_app_run_operation","agent_app_poll_tasks","agent_app_next_task","agent_app_task_progress","agent_app_complete_task","agent_app_build","agent_app_validate","agent_app_serve","agent_app_stop","agent_app_open","agent_app_list_apps","agent_app_catalogue","agent_app_inspect","agent_app_install","agent_app_export"],"hooks":["pre_gateway_dispatch","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Needs the framework CLIs on PATH first: npm i -g agent-app-framework@0.2.0, the release this was tested with (Node 20 or later).; The hermes-webui tab is a web UI extension that a catalog install does not place; from a clone, run python harness-plugins/hermes/scripts/build.py --install --webui. Hermes Desktop loads no dashboard plugins, so the tab is not there; the tools, skills and command are.","state":"merged","pr":151127,"prs":[{"n":151127,"state":"merged","created":"2026-11-08T05:15:16Z"}],"created":"2026-11-08T05:15:16Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-sysadmin","title":"Hermes Sysadmin · Active Directory","summary":"Windows and Active Directory RMM for Hermes Agent and Hermes Desktop: users, groups and lockouts, Group Policy, RDP, Windows Server Backup, a desktop fleet and 231 vetted PowerShell scripts, all behind tiered approvals with a preview before every change, protected objects and a local audit log.","disclosure":"runs PowerShell on the Hermes machine (local transport on a domain-joined Windows host, optionally as a configured account via runas /netonly) or over WinRM to one configured jump host, and from there talks to your domain controllers and the computers you target (AD, SMB, RPC, WinRM). Reads the account password only through Hermes secret scope. While the dashboard is open a background collector in the gateway refreshes read-only snapshots (setting background_collector turns it off); scheduled monitoring adds a Hermes cron job (and two launcher scripts in the Hermes scripts folder) only when you turn it on, and a cron run cannot create or remove it unless cron.allow_agent_scheduling is true. In permissive mode standard writes run without an approval prompt. Writes a local SQLite audit log with passwords redacted. Never reads .env or any other credential store; the opt-in monitoring cron script gets the password only if the user lists SYSADMIN_WINRM_PASSWORD in terminal.env_passthrough. No telemetry and no other network calls; the raw PowerShell tool is off by default.","category":"desktop","platforms":[],"maintainer":"kdegeek","author":"kdegeek","version":"0.2.2","requires_hermes":">=0.22.6","repo":"https://github.com/kdegeek/hermessysadmin","docs":"https://github.com/kdegeek/hermessysadmin#readme","tools":["ad_connection_test","ad_dc_health","ad_dc_list","ad_domain_overview","ad_group_add_member","ad_group_get","ad_group_list","ad_group_remove_member","ad_lockout_source","ad_powershell","ad_recycle_bin_list","ad_recycle_bin_restore","ad_search","ad_user_create","ad_user_delete","ad_user_disable","ad_user_enable","ad_user_get","ad_user_list","ad_user_move","ad_user_reset_password","ad_user_unlock","ad_user_update","backup_cancel","backup_jobs","backup_set_policy","backup_start","backup_status","backup_versions","catalog_get","catalog_module_install","catalog_module_status","catalog_run","catalog_search","fleet_device","fleet_history","fleet_inventory","gpo_backup","gpo_backups","gpo_create","gpo_delete","gpo_get","gpo_health","gpo_link","gpo_list","gpo_report","gpo_restore","gpo_rsop","gpo_set_link","gpo_set_security_filter","gpo_set_status","gpo_unlink","gpo_update_hosts","monitoring_disable","monitoring_enable","monitoring_status","rdp_connect_file","rdp_host_status","rdp_session_disconnect","rdp_session_logoff","rdp_session_message","rdp_sessions","rdp_set_enabled","rdp_set_nla","rdp_users_add","rdp_users_remove","remote_access_check","remote_assist_command","remote_sessions","remote_shadow_command","sysadmin_audit_log"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151123,"prs":[{"n":151123,"state":"merged","created":"2026-11-08T05:09:38Z"}],"created":"2026-11-08T05:09:38Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/assets/banner.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/overview.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/preview.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/fleet-remote.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/catalog.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/ask-hermes.png","https://raw.githubusercontent.com/kdegeek/hermessysadmin/bf972526ae24cd5bcb1441a2f91882e030c2cab5/docs/screenshots/gpo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-sysadmin.webp"},{"name":"sentinel-governance","title":"sentinel-governance","summary":"Audit-first runtime tool-action governance for Hermes: a pre_tool_call policy engine that classifies conservative terminal proposals, requests per-event-scoped native Hermes approval for explicit curl -q transfers and test runners, denies hidden, symlinked, outside-workspace and recognized sensitive-file uploads in enforcement mode, and records allowlisted HMAC-correlated decision metadata. Audit-only unclassified actions are distinct from true hard-deny policy matches and the local sentinel-governance report command aggregates counts without raw arguments. Audit mode is default and returns no veto, but Hermes itself may time out hooks. Experimental, not a firewall or sandbox.","disclosure":"inspects every proposed tool call's arguments in memory and writes an HMAC-keyed, argument-free audit journal and a locally generated 0600 key under the active Hermes home (`sentinel/`); no network calls, subprocesses, credential reads or background threads. Audit mode (default) never vetoes; SENTINEL_GOVERNANCE_MODE=enforce (or legacy HERMES_SENTINEL_MODE) blocks every tool call it cannot classify (all non-terminal tools included) and sends `curl -q` uploads and test runs to Hermes' approval prompt, so enforcement is disruptive and is not a sandbox.","category":"tools","platforms":["macos","linux"],"maintainer":"ChasClogston","author":"ChasClogston","version":"0.5.4","requires_hermes":">=0.23.0","repo":"https://github.com/ChasClogston/hermes-sentinel","docs":"https://github.com/ChasClogston/hermes-sentinel#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151117,"prs":[{"n":151117,"state":"closed","created":"2026-11-08T04:58:27Z"}],"created":"2026-11-08T04:58:27Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"warden","title":"warden","summary":"Defensive security operations plugin for Hermes Agent, built on one rule: model-facing tools read and request, they never configure. A deny-by-default scope engine decides what may be touched before anything runs; scopes are created only by the operator (the hermes warden CLI), never by the model, and adapter directories are operator config, never tool input. Vulnerability assessment runs two engines (Grype and Trivy) over one canonical SBOM from Syft and records their disagreement as finding confidence instead of hiding it. Sigma rules evaluate over the event store through sec_campaign, osquery host telemetry feeds the same store, and a deterministic correlation engine groups actors into campaigns; the anchored membership view (measured precision 1.000, recall 1.000 on the validation corpus) is the only view allowed to justify defensive action. Investigations answer only with citations to stored evidence; uncitable claims are dropped and counted. Containment is a policy-enforced plan engine (approval classes, blast radius, TTL, rollback) whose execution is disabled in this build; apply mode is refused. The agent's own actions are written to a redacted ledger and a hash-chained audit log. Dry run by default.","disclosure":"Warden runs operator-installed scanner binaries (nuclei, trivy, grype, syft, osquery; version-attested against their adapter manifests at run time, with an optional operator SHA-256 pin, never bundled) as local subprocesses with a scrubbed environment, only against targets in operator-created scopes; a hostname target is authorised by name and resolved by the scanner at run time. It connects only to those targets and, when configured, to threat-intelligence providers, stores no credentials, and executes no containment action in this build.","category":"tools","platforms":["linux","macos"],"maintainer":"Zaygalx","author":"Zaygalx","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://gitlab.com/Zaygalx1/warden","docs":null,"tools":["sec_scope","sec_tool","sec_assess","sec_investigate","sec_campaign","sec_contain"],"hooks":["post_tool_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151109,"prs":[{"n":151109,"state":"merged","created":"2026-11-08T04:42:39Z"}],"created":"2026-11-08T04:42:39Z","late":false,"said":true,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bot-shelf","title":"Bot Shelf","summary":"Search Bot Shelf (botshelf.dev), a directory of 9,000+ community Grok Bots, by the job in plain words, with each creator credited, through Bot Shelf's hosted MCP server (Streamable HTTP at https://mcp.botshelf.dev/mcp, no account or key). Bundles the bot-shelf skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Bot Shelf's hosted server (mcp.botshelf.dev, on Cloudflare); the tool set is served by that server at runtime and is not covered by the pinned sha. find_bots, get_bot, latest and list_categories only read the public directory; suggest_bot sends the link, note and name the user gives to a review queue kept up to 30 days. Searches are not stored.","category":"web","platforms":[],"maintainer":"cradrrat","author":"cradrrat","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/cradrrat/bot-shelf-mcp","docs":"https://github.com/cradrrat/bot-shelf-mcp#add-it-to-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151107,"prs":[{"n":151107,"state":"merged","created":"2026-11-08T04:39:03Z"}],"created":"2026-11-08T04:39:03Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crash-test","title":"Crash Test","summary":"A safety rating for AI agents. For one armed turn it breaks tools the way real systems break (timeouts, outages, empty or cut-off results), then rates what the agent did: retried, worked around it, told the truth, or claimed success anyway. 1-5 stars and an HTML report, comparable across models by seed. Blocked calls never run, silent faults only touch reads, and the agent gets no tools from it, so it cannot tell it is being tested.","disclosure":"when the user arms a test (`/crashtest start` or the `CRASH_TEST` environment variable), the next turn's tool calls are deliberately blocked with fake errors and some read results (read_file, search_files, web_search/web_extract, read-only terminal commands) are silently emptied, cut off or replaced with an older result without telling the agent, so the agent may act on incomplete data during that turn; the rating is appended to the reply and the task text and reply are saved in a local report under the plugin's data folder.","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"0.1.0","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/crash-test","docs":"https://github.com/salch-cred/crash-test","tools":[],"hooks":["pre_llm_call","pre_tool_call","transform_tool_result","transform_llm_output","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151102,"prs":[{"n":151102,"state":"merged","created":"2026-11-08T04:34:26Z"}],"created":"2026-11-08T04:34:26Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"coffee-vram","title":"coffee-vram","summary":"VRAM fit-check, call queue, keep-warm and idle eviction for local Ollama models, with a desktop status chip and /vram.","disclosure":"when a local Ollama model won't fit, Coffee holds that call for up to the queue timeout (default 600 s) and, by default, unloads idle Ollama models (including ones other apps loaded, unless pinned) to make room; it also refreshes keep-alive on loaded models and polls the configured Ollama URL and NVIDIA telemetry in the background.","category":"models","platforms":[],"maintainer":"jimmy77733","author":"jimmy77733","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/jimmy77733/coffee-vram","docs":null,"tools":["vram_status"],"hooks":["post_api_request","api_request_error"],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"merged","pr":151098,"prs":[{"n":151098,"state":"merged","created":"2026-11-08T04:27:47Z"}],"created":"2026-11-08T04:27:47Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"momentic","title":"momentic","summary":"Write, run and repair Momentic end-to-end tests for web (Chrome) and iOS/Android (simulators and emulators), and run Mo bug bashes that file each bug with a Momentic regression test. Portable Agent Plugins v1 package (plugin.json + skills/), no plugin code. The skills drive the Momentic CLI and its local MCP servers (npx momentic mcp, npx momentic-mobile mcp), which users add to their own mcp_servers config; a Momentic API key is read by the Momentic CLI, never by the plugin.","disclosure":"the skills tell the agent to run Momentic CLI commands in the shell (unpinned npx, and the documented curl https://cli.momentic.ai/qa | sh installer for Mo); test runs and Mo sessions call Momentic's hosted service with the user's Momentic account (Mo sessions are billed by effort), Mo can be given a reviewed git patch or source snapshot uploaded to Momentic's sandbox, and `qa tunnel` exposes local or private targets to that hosted service.","category":"tools","platforms":[],"maintainer":"momentic-ai","author":"wuweiweiwu","version":"1.1.0","requires_hermes":"","repo":"https://github.com/momentic-ai/skills","docs":"https://momentic.ai/docs","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151089,"prs":[{"n":151089,"state":"merged","created":"2026-11-08T04:08:20Z"}],"created":"2026-11-08T04:08:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"postkitty","title":"postkitty","summary":"One post in, every platform out. Fixes and rewrites your draft for each platform and counts the copy with each platform's own rule, splitting long posts into threads. Crops photos and reframes landscape video so every face stays in frame; when two people talk, the choice is a split screen, a cut to whoever is talking or the whole wide shot. Checks every file against the platform's published limits and repairs failures before a file is marked ready. Covers Instagram, TikTok, YouTube Shorts, X, LinkedIn, Threads, Bluesky and Facebook. Runs locally with ffmpeg and OpenCV; no API keys.","disclosure":"","category":"tools","platforms":[],"maintainer":"mertkayacs","author":"mertkayacs","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/mertkayacs/postkitty","docs":"https://postkitty.mertkayacs.com","tools":["postkitty_scan","postkitty_copy","postkitty_make","postkitty_redo","postkitty_check"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs ffmpeg and ffprobe on PATH for video.","state":"merged","pr":151088,"prs":[{"n":151088,"state":"merged","created":"2026-11-08T04:07:15Z"}],"created":"2026-11-08T04:07:15Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mertkayacs/postkitty/490d8f992387b610c3b6f32cd87d800dc58c8010/docs/banner.png","https://raw.githubusercontent.com/mertkayacs/postkitty/490d8f992387b610c3b6f32cd87d800dc58c8010/docs/board.png","https://raw.githubusercontent.com/mertkayacs/postkitty/490d8f992387b610c3b6f32cd87d800dc58c8010/docs/before-after.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/postkitty.webp"},{"name":"stash","title":"Stash","summary":"A capture bin for the Desktop sidebar: paste links, YouTube urls, image urls, uploaded images or plain notes and they wait there, out of the chat. One item per line, so a block of links becomes several items; titles and thumbnails are filled in server-side, so capture costs no model calls. Each row carries a Chat button that opens a new session with that item as the opening message. Adds stash_add, stash_list and stash_update, so the agent reads and empties the same store the page writes.","disclosure":"saving an item issues one GET to that url from the Hermes host (4 s timeout, 400 KB cap) to read its <title> and og: metadata, refused for loopback, link-local, private and reserved targets and re-checked on every redirect hop; YouTube urls also use www.youtube.com/oembed and i.ytimg.com thumbnails, and the Desktop page loads each item's og:image thumbnail directly from whatever host the page names. No credentials, no telemetry, no shell commands, no Python dependencies beyond the FastAPI Hermes already ships. Items are plain JSON at ~/.hermes/stash/items.json (shared by every profile) and uploads (max 8 MB) in ~/.hermes/stash/media/.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"RegeneratusLabs","author":"RegeneratusLabs","version":"0.3.1","requires_hermes":">=0.23.0","repo":"https://github.com/RegeneratusLabs/hermes-stash","docs":"https://github.com/RegeneratusLabs/hermes-stash#readme","tools":["stash_add","stash_list","stash_update"],"hooks":[],"middleware":[],"env":[],"known_issues":"The desktop half ships switched off: after `hermes plugins enable stash`, restart the app and enable Stash under Capabilities → Plugins.; Install it on the machine that runs the desktop app; a copy installed only on a remote backend never reaches the sidebar.","state":"merged","pr":151086,"prs":[{"n":151086,"state":"merged","created":"2026-11-08T04:05:32Z"}],"created":"2026-11-08T04:05:32Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/RegeneratusLabs/hermes-stash/97d1667527c5a9508e733c82246b42f732f9d970/assets/screenshot.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/stash.webp"},{"name":"bot-dashboard","title":"Bot Dashboard","summary":"Two desktop panes in one plugin. Bot shows the focused bot's dashboard - profile and model, scheduled jobs, notes, the custom widgets that bot pinned for you, and optional tasks and projects from a markdown notes vault you point it at in the plugin settings; Group shows a group chat's members, activity, shared tasks and projects, and follows a group chat you open. Ships two agent tools in its own bot_dashboard toolset - bot_panel edits the bot's own panel, group_dashboard lets any member bot read or shape a group's dashboard - plus a pre_llm_call hook that adds a short panel snapshot on the first turn only (and an optional per-turn instruction, empty unless the user writes one).","disclosure":"reads the local Hermes home (bot profiles, config.yaml, group room records) and, only if the user sets vault_path, markdown notes in that folder; writes only each bot's own panel files (widgets, notes, layout) under its profile and, when the user creates or ticks a task, that task's note in the configured vault folder. Widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy. The panes talk to the Hermes API on 127.0.0.1, with no third-party network calls, no shell commands and no stored credentials. Disclosure — reads the local Hermes home (every bot profile's profile.yaml, config.yaml, SOUL.md, skills list and avatar, plus the gateway's group-room tables in state.db/shared-state.db, read-only) and, only if the user sets vault_path, markdown notes in that folder; the bot_panel/group_dashboard tools can copy any .html file the model names into a widget, and any bot can edit any local group's dashboard; writes only panel files (widgets, notes, layout) under each bot's profile and under plugin-data/bot-dashboard/groups, plus, when the user creates or ticks a task, that task's note in the configured vault folder; widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy; an optional panel_rule setting (empty by default) adds the user's own instruction to every turn; no third-party network calls, no shell commands, no stored credentials.","category":"desktop","platforms":[],"maintainer":"trookish","author":"trookish","version":"1.2.0","requires_hermes":">=0.21.2","repo":"https://github.com/trookish/hermes-bot-dashboard","docs":"https://github.com/trookish/hermes-bot-dashboard#readme","tools":["bot_panel","group_dashboard"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151078,"prs":[{"n":151078,"state":"merged","created":"2026-11-08T03:52:48Z"}],"created":"2026-11-08T03:52:48Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-gatekeeper","title":"Gatekeeper","summary":"Gatekeeper enforces rules the owner configures; not legal advice and not a compliance guarantee. A deterministic pre_tool_call gate for recognized outbound sends: literal `hermes send` and `imsg send` terminal commands (including terminal calls made from execute_code), and a send_message call if one ever traverses the hook, are checked in full. Hermes registers no model-callable send_message tool. Other tools whose names look like a send (connectors__*, mcp tools, plain names, and a cronjob_manage create/update/run with a delivery target) are not parsed: they only require owner approval, because consent, STOP and quiet hours cannot be checked for them. Browser and computer-use driving of an app and scripts that send through a subprocess are not inspected. Rules: absolute suppression, per-channel consent and recipient-local quiet hours (block), and native Hermes approval requests for unanswered threads, minimum gaps and unapproved wording (the host auto-approves these under --yolo, approvals off and hermes -z). Uses the public post_gateway_admission hook to record observed STOP keywords and DM replies (excludes control, approval, steering and slash-command traffic). Reads tool arguments, results and normalized inbound snapshots; writes only profile-local SQLite (owner-only permissions) with recipient/thread hashes, message SHA-256, decision metadata, consent source/date, timezone/region and owner template variables. No raw message-body log; hashes are not anonymity. No network, subprocess, model calls, telemetry, credential reads, external file scans or core patches. Invalid settings or storage errors block recognized sends.","disclosure":"gates only the outbound sends it recognizes (literal `hermes send` / `imsg send` terminal commands and send_message calls) and asks owner approval for other send-looking tools; a whole-message STOP, STOPALL, UNSUBSCRIBE, CANCEL, END or QUIT from any admitted gateway sender silently suppresses that sender and is consumed without reaching the agent or getting a reply; a storage or inbound-observation failure blocks every recognized send until the owner repairs records and reloads; writes only a profile-local SQLite ledger of hashes and decision metadata, with no network, subprocess or credential access.","category":"automation","platforms":["linux","macos"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/percyhendrux123-prog/hermes-gatekeeper","docs":null,"tools":[],"hooks":["pre_tool_call","post_tool_call","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"Not an egress firewall. Send-looking connector/MCP/plain tools and cron deliveries get an owner-approval request only; consent, STOP and quiet hours are not checked for them, and a differently named sender is not seen (add extra_send_tool_patterns).; Browser/computer-use driving of an app, scripts sending via subprocess or python -c, direct delivery and later argument rewrites are not governed.; The agent-visible send path is the terminal tool; Hermes has no model-callable send_message tool.; approve rules, including unrecognized-send-tool escalation, are host-owned: --yolo, approvals.mode off and hermes -z auto-approve them; block rules still apply.; Inbound hook omits control/approval/steering/slash traffic; manually record unseen optouts/replies.; No address-book or alias/group-membership resolution; use stable target identities.","state":"merged","pr":151074,"prs":[{"n":151074,"state":"merged","created":"2026-11-08T03:46:42Z"}],"created":"2026-11-08T03:46:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"listing-automater","title":"Listing AutomatEr","summary":"Skill only plugin for real estate agents: explains Listing AutomatEr, a desktop app that posts listings an agent has permission to market to Facebook Marketplace with \"Marketed by\" and \"Listing courtesy of\" attribution, and gives guidance for writing clear, compliant listing posts. Registers one read only skill; no agent tools, hooks, middleware, network calls or env vars.","disclosure":"","category":"general","platforms":[],"maintainer":"Summertimechi","author":"Summertimechi","version":"1.0.0","requires_hermes":"","repo":"https://github.com/Summertimechi/listing-automater-skill","docs":"https://github.com/Summertimechi/listing-automater-skill","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151063,"prs":[{"n":151063,"state":"merged","created":"2026-11-08T03:36:02Z"}],"created":"2026-11-08T03:36:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"chat-shield","title":"chat-shield","summary":"Automatically redacts personally identifiable information — names, addresses, emails, phone numbers, SSNs, financial accounts, government IDs, API keys, credit cards — before it reaches external LLM providers. Combines the on-device Rampart NER model (14.7 MB, runs locally) with configurable regex detectors for specialized identifiers. The LLM sees safe placeholders; the user sees original values restored. Two middleware hooks: llm_request redacts outgoing messages, llm_execution restores placeholders in the response (streaming and non-streaming). Includes /chat-shield slash command for stats and testing, config schema for the Desktop Settings form, and a bundled skill. Falls back to regex-only if the Rampart model is unavailable.","disclosure":"","category":"tools","platforms":[],"maintainer":"james-see","author":"james-see","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/james-see/chat-shield","docs":"https://github.com/james-see/chat-shield/blob/859abb51a3374c121d56cd5a0ad2c3b4ecc38f1b/README.md","tools":[],"hooks":[],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"","state":"open","pr":151047,"prs":[{"n":151047,"state":"open","created":"2026-11-08T03:16:24Z"}],"created":"2026-11-08T03:16:24Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"runproof","title":"RunProof","summary":"Verify a Hermes cron report and release its exact bytes to a local outbox once per workflow slot.","disclosure":"","category":"automation","platforms":[],"maintainer":"Biznomad","author":"Biznomad","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/Biznomad/runproof","docs":"https://github.com/Biznomad/runproof#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151045,"prs":[{"n":151045,"state":"merged","created":"2026-11-08T03:16:03Z"}],"created":"2026-11-08T03:16:03Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-token-ledger","title":"Hermes Token Ledger","summary":"Track LLM token usage and estimated USD cost per session in a SQLite ledger. Accumulates usage from post_api_request, exposes token_report/token_reset tools and a /tokens slash command, with optional per-session budget warnings.","disclosure":"stores token counts and model names locally under the plugin data dir; no data leaves the machine.","category":"tools","platforms":[],"maintainer":"ilPez00","author":"ilPez00","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ilPez00/hermes-token-ledger","docs":"https://github.com/ilPez00/hermes-token-ledger/blob/0240f42d1727d7936e157c723bbf3cdc84ea1eb1/README.md","tools":["token_report","token_reset"],"hooks":["post_api_request"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151043,"prs":[{"n":151043,"state":"open","created":"2026-11-08T03:11:04Z"}],"created":"2026-11-08T03:11:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sogni","title":"Sogni AI Images","summary":"Sogni AI image generation backend for image_generate: text-to-image and image-to-image (identity edit) on Sogni's decentralised GPU network, driven through Sogni's own sogni-agent CLI. Registers as an image_gen provider, so the normal image_generate tool works unchanged — aspect ratio and reference images are threaded through.","disclosure":"every generation submits a job to the Sogni network via the sogni-agent-hermes CLI, which this plugin spawns as a subprocess, so unlike Hermes's bundled providers it is not zero-install: it needs Node.js and npm install -g @sogni-ai/sogni-creative-agent-skill@3.56.1 (or SOGNI_AGENT_BIN pointing at an existing binary). The prompt and any reference image (including a local file path the model passes) are sent to api.sogni.ai on the way to the network and the finished image is downloaded from media.sogni.ai; the plugin reads SOGNI_API_KEY through Hermes's secret scope and hands the CLI a minimal environment (PATH, HOME, LANG, SOGNI_API_KEY and, if set, NODE_OPTIONS, NPM_CONFIG_PREFIX, XDG_CACHE_HOME), so no other Hermes provider keys reach it, and it presents an honest custom User-Agent because Cloudflare (Error 1010) rejects library-default ones. Generation is billed to your Sogni account per job with no Hermes approval prompt, and the plugin reports the model used but enforces no budget cap, so an unattended run can spend your balance. Generated media is written under $HERMES_HOME/cache/images/. No telemetry, no stored credentials, no background processes beyond the CLI call, no self-updates.","category":"tools","platforms":[],"maintainer":"RichardChua1234","author":"RichardChua1234","version":"1.0.0","requires_hermes":">=0.20.2","repo":"https://github.com/RichardChua1234/hermes-plugin-sogni","docs":"https://github.com/RichardChua1234/hermes-plugin-sogni#readme","tools":[],"hooks":[],"middleware":[],"env":["SOGNI_API_KEY","SOGNI_AGENT_BIN"],"known_issues":"Not zero-install: requires Node.js plus the separately installed sogni-agent CLI (npm install -g @sogni-ai/sogni-agent). If the CLI is missing the plugin reports it as a typed error instead of failing silently.; Editing is supported only through the identity-edit model families, which take a source image; text-to-image models accept no source image and the plugin rejects the request rather than ignoring it.; Sogni bills per job and the plugin cannot cap spend; allow it to run unattended only with a balance you are willing to burn.","state":"open","pr":151035,"prs":[{"n":151035,"state":"open","created":"2026-11-08T02:54:31Z"}],"created":"2026-11-08T02:54:31Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cortive","title":"Cortive Memory","summary":"Adds Cortive, a private knowledge base for your Mac, to the agent's memory, alongside Hermes's built-in memory: automatic recall of the pages, PDFs, screenshots, documents and notes you saved, plus cortive_search, cortive_get and cortive_collections tools. Finds by meaning while the Cortive app is running, by words otherwise. Read-only and local.","disclosure":"reads the local Cortive library file (~/Library/Application Support/cortive-ai/cortive.db, SQLite opened read-only), which is outside the plugin's own data; connects to the Cortive app's owner-only Unix socket on the same Mac (~/Library/Application Support/Cortive/agent/search.sock) to send search text and receive capture ids and scores; writes exported screenshots and an optional config file inside its Hermes plugin-data folder. No network calls, no credentials, no background services, no telemetry. Recalled excerpts reach the model Hermes uses, like any context; passwords and keys are hidden first, and the plugin is off in group chats by default. Two tool hooks enforce that: pre_tool_call refuses other tools' calls that point at Cortive's data folder, and transform_tool_result hides passwords saved in Cortive from other tools' output.","category":"memory","platforms":["macos"],"maintainer":"KadenDevAi","author":"KadenDevAi","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/KadenDevAi/hermes-cortive","docs":"https://github.com/KadenDevAi/hermes-cortive/blob/3eb2f4935994c6b7ea0d7067428d3051f9388fc6/README.md","tools":[],"hooks":["pre_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"Needs the Cortive app (free beta, Apple silicon, macOS 14+) from https://github.com/KadenDevAi/cortive-releases; select it with `hermes config set memory.provider cortive`.; Meaning search needs Cortive 0.2.0 or later running; otherwise search and recall match words only, and automatic recall waits for messages that refer to saved material.; Voice recordings have no transcript, so the agent can find them but not read what was said.","state":"merged","pr":151029,"prs":[{"n":151029,"state":"merged","created":"2026-11-08T02:43:35Z"}],"created":"2026-11-08T02:43:35Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KadenDevAi/hermes-cortive/3eb2f4935994c6b7ea0d7067428d3051f9388fc6/docs/banner.png","https://raw.githubusercontent.com/KadenDevAi/hermes-cortive/3eb2f4935994c6b7ea0d7067428d3051f9388fc6/docs/recall.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cortive.webp"},{"name":"tripwire","title":"tripwire","summary":"Logs every refused agent action (a tool blocked by a guardrail or plugin, or a dangerous command denied, cancelled or timed out at approval) as one JSON line, so a no-agent cron script can send the owner one short alert. Observer only, fails open.","disclosure":"appends one JSON line per refused action to ~/.hermes/tripwire/events.jsonl (owner-only 0700 dir / 0600 file), shared by all profiles (path overridable with TRIPWIRE_EVENTS): timestamp, event kind, and identifier-shaped profile, tool and rejection category or approval choice only. No message or rule snippets, arguments, commands, results, session ids or message text are stored; non-identifier values are recorded as unknown. A pre_tool_call hook reads ~/.hermes/tripwire/TEST_BLOCK and, only while that file exists, blocks the single tool it names for the single profile it names (a drill switch to prove the alarm). No network calls, no shell commands, no background processes, no stored credentials, no telemetry.","category":"tools","platforms":["macos","linux"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.1.3","requires_hermes":">=0.22.5","repo":"https://github.com/percyhendrux123-prog/hermes-tripwire","docs":"https://github.com/percyhendrux123-prog/hermes-tripwire/blob/96875a99a6ed44025b687e949d6414ad8b6c104b/README.md","tools":[],"hooks":["post_tool_call","post_approval_response","pre_tool_call"],"middleware":[],"env":[],"known_issues":"A tool call the model makes outside its toolset is rejected by Hermes before any plugin hook runs, so Tripwire does not see it.; The optional notifier (scripts/tripwire_notify.py) is fetched at the pinned commit and scheduled with `hermes cron create ... --no-agent`; it is not part of the plugin directory. See README.","state":"closed","pr":151027,"prs":[{"n":151027,"state":"closed","created":"2026-11-08T02:41:25Z"}],"created":"2026-11-08T02:41:25Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"code-assurance-engine","title":"code-assurance-engine","summary":"Change-assurance engine: evaluates an immutable repository candidate against an explicit, reviewer-approved check contract and returns machine-readable evidence, findings and unverified gaps, so a green result has a defined scope.","disclosure":"6 tools plus a `hermes assure` CLI and an `/assure` slash command; `assure_inspect` reads the candidate repository read-only with git and refuses option-like base/head refs; the candidate is frozen and identified by content before the contract is agreed; `assure_run` is the sole repository-code-executing operation and refuses unless the assessment is APPROVED and its venue gates pass; the `--owner-keys` file is a path the caller supplies, so owner approval is only as strong as control of that path and of `/assure`; reports are private, local and render without external assets; no third-party network calls, no stored credentials, no telemetry and no self-updater.","category":"tools","platforms":[],"maintainer":"Sahil-SS9","author":"Sahil-SS9","version":"0.1.0","requires_hermes":"","repo":"https://github.com/Sahil-SS9/code-assurance-engine","docs":"https://github.com/Sahil-SS9/code-assurance-engine","tools":["assure_inspect","assure_plan_checks","assure_status","assure_verify","assure_report","assure_run"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":151026,"prs":[{"n":151026,"state":"open","created":"2026-11-08T02:40:32Z"}],"created":"2026-11-08T02:40:32Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"night-shift","title":"Night Shift","summary":"An on-call engineer that never sleeps. Alerts trigger a read-only investigation, a human approves the fix with one tap in Slack, and Night Shift runs it, proves recovery, and writes the runbook as a skill so the next incident is recognised.","disclosure":"runs read-only shell diagnostics during an incident, and after a listed human approves it runs the approved commands through the terminal tool without a second Hermes prompt (optionally over the configured ssh prefix). Destructive commands are refused at proposal time. Sends container logs, status and database activity to the model provider. Calls Prometheus at the configured URL and Slack through the user's Hermes Slack app. Writes runbook skills through skill_manage and keeps incident state in plugin state. No telemetry, stores no credentials.","category":"automation","platforms":[],"maintainer":"MuhammadMurtuzaHussain","author":"MuhammadMurtuzaHussain","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/MuhammadMurtuzaHussain/Hermes-Hackathon","docs":"https://github.com/MuhammadMurtuzaHussain/Hermes-Hackathon/blob/857ff062407f620f16edd2824bbe61570c2a4cfb/night-shift/README.md","tools":["nightshift_diagnose","nightshift_query_metrics","nightshift_recall","nightshift_propose_fix","nightshift_escalate","nightshift_resolve"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Diagnostics assume Docker. docker_host_prefix, deploy_history_command and db_check_command cover other setups, but only local Docker has been tested end to end.; Slack buttons need plugins.isolation: in_process (the default), because they use native Slack handlers. /nightshift approve (two steps: it shows the exact commands, then runs them on a confirm code) works in either mode.","state":"merged","pr":151024,"prs":[{"n":151024,"state":"merged","created":"2026-11-08T02:35:55Z"}],"created":"2026-11-08T02:35:55Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/MuhammadMurtuzaHussain/Hermes-Hackathon/857ff062407f620f16edd2824bbe61570c2a4cfb/docs/screenshots/card-proposed.png","https://raw.githubusercontent.com/MuhammadMurtuzaHussain/Hermes-Hackathon/857ff062407f620f16edd2824bbe61570c2a4cfb/docs/screenshots/card-resolved.png","https://raw.githubusercontent.com/MuhammadMurtuzaHussain/Hermes-Hackathon/857ff062407f620f16edd2824bbe61570c2a4cfb/docs/screenshots/card-recognised.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/night-shift.webp"},{"name":"990tax","title":"990.tax","summary":"IRS public records on 1.9 million+ US tax-exempt organizations through 990.tax's free MCP server (Streamable HTTP at https://990.tax/mcp, no sign-in, no keys in config): search by name or EIN, exempt status and automatic revocations, missing filing years, Form 990 revenue, expenses, assets and officer pay, which annual return applies and when it's due, statistics and rankings by state and category, and IRS e-file reject codes. Bundles two skills: nonprofit-lookup and form-990-filing. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to 990.tax, run by Digital Tax LLC (an IRS-authorized e-file provider, not the IRS). All eight tools are annotated read-only and the package marks the server untrusted, so Hermes would ask before any tool that is not. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Digital Tax LLC","author":"ivanku","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Digital-Tax-LLC/990tax-mcp","docs":"https://990.tax/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151022,"prs":[{"n":151022,"state":"merged","created":"2026-11-08T02:32:04Z"}],"created":"2026-11-08T02:32:04Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-fal-video","title":"FAL Video","summary":"Video edit, video extend and reference-to-video on FAL (MiniMax H3, FLUX 3, Kling 4.0, Wan 3.0, Seedance 2.5, Gemini Omni Flash and more), with a skill that chains them.","disclosure":"sends prompts and media to FAL as paid jobs billed to FAL_KEY, with no per-call approval; a local path the model passes is uploaded to FAL storage (which returns a hosted URL) when the resolved file has a video or image extension and is under the size cap (200 MB by default), from anywhere the user can read; http(s) URLs are handed to FAL to fetch.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"axAilotl","author":"axAilotl","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/axAilotl/hermes-fal-video","docs":"https://github.com/axAilotl/hermes-fal-video#readme","tools":["fal_video_edit","fal_video_extend","fal_video_from_references"],"hooks":[],"middleware":[],"env":["FAL_KEY"],"known_issues":"","state":"merged","pr":151014,"prs":[{"n":151014,"state":"merged","created":"2026-11-08T02:24:05Z"}],"created":"2026-11-08T02:24:05Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-audio-api","title":"Audio API","summary":"OpenAI-compatible /v1/audio/transcriptions and /v1/audio/speech endpoints backed by Hermes' configured STT and TTS providers.","disclosure":"opens an HTTP listener (127.0.0.1:8643 by default) that starts with the gateway as soon as a key exists, protected by a bearer key (AUDIO_API_KEY, or the API server's API_SERVER_KEY when reuse is on, which is the default); uploaded audio and requested text go to whichever STT/TTS providers Hermes is configured to use; runs ffmpeg when it must convert the output format; calls Hermes' internal transcription and TTS helpers, which are not a stable plugin API.","category":"voice","platforms":["linux","macos","windows"],"maintainer":"axAilotl","author":"axAilotl","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/axAilotl/hermes-audio-api","docs":"https://github.com/axAilotl/hermes-audio-api#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Calls Hermes' transcription and text-to-speech helpers, which are outside the documented plugin API; tested against 0.23.0 and main.; Listens on its own port because plugins cannot add routes to the built-in API server.","state":"merged","pr":151013,"prs":[{"n":151013,"state":"merged","created":"2026-11-08T02:24:02Z"}],"created":"2026-11-08T02:24:02Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"icon-index","title":"Icon Index","summary":"40 free CC0 3D icons in one matching style for websites, apps, slides and videos. Browse them spinning in a Hermes Desktop pane, recolour them (8 presets or any colour) and download the result, and let the agent find an icon by meaning, return embed code (iframe, model-viewer, React, three.js) and download links, show it as a draggable 3D card in chat (::icon-index directive), or save its files into a project folder.","disclosure":"the pane, chat card and icon_save fetch icon files (GLB, PNG, MP4) from https://cdn.jsdelivr.net/gh/minutechreview/3d-icons at a pinned commit; the 3D viewer is https://motion.minutechbuilds.com/icons/viewer.html shown in a SandboxedFrame (opaque origin, allow-scripts, plus allow-downloads in the pane so its Download GLB button can save a recoloured model) and it loads three.js from cdn.jsdelivr.net; icon_save writes only into the folder the agent names and never overwrites a file; search, metadata and embed code come from the bundled data/icons.json. No shell, credentials, telemetry or background work.","category":"desktop","platforms":[],"maintainer":"minutechreview","author":"minutechreview","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/minutechreview/hermes-icon-index","docs":"https://github.com/minutechreview/hermes-icon-index#readme","tools":["icon_search","icon_get","icon_save"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151009,"prs":[{"n":151009,"state":"merged","created":"2026-11-08T02:19:53Z"}],"created":"2026-11-08T02:19:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"physis","title":"physis","summary":"Offline evidence-backed execution memory: per-repo graph context, a deterministic verify hook, and verified tool recipes that replay with zero provider calls and refuse when their tools, registry or captured files changed. Two bundled Linux engines and no API key or model download; approved host commands still run with host privileges and Python entry points need an interpreter, and untracked dependencies are not replay-checked. Operator-only approval and replay; the model cannot set executable paths or trigger raw commands.","disclosure":"Ships two compiled Linux x86_64 engines (bin/physis-core, bin/replant) built and attested by the repo's own GitHub workflow; operator-approved replay commands and the operator's verify_cmd run as shell commands with the user's file and network access; physis_ingest can read shell history, ~/.claude/projects transcripts, every process's command line and the browser history database only when the operator enables those sources in plugins.entries.physis.settings.ingest_sources (off by default).","category":"tools","platforms":["linux"],"maintainer":"ilPez00","author":"ilPez00","version":"1.7.1","requires_hermes":">=0.23.0","repo":"https://github.com/ilPez00/hermes-physis","docs":"https://github.com/ilPez00/hermes-physis#readme","tools":["physis_engine_status","physis_trace","physis_observe","physis_snapshot","physis_context","physis_query","physis_why","physis_diff","physis_classify","physis_chain","physis_grid","physis_ingest","physis_observed","replant_demo","replant_show","replant_stats","physis_candidates"],"hooks":["post_tool_call","pre_verify","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Replay freshness is partial: only captured files up to 1 MiB are fingerprinted, so a dependency outside that set can change and replay will still proceed. The check that matters is the tool registry and engine digest; the captured-file set is a floor, not a proof of sameness.; Operator-approved commands execute with host privileges. Approval is a boundary on what the model may ask for, not a sandbox: an approved command can read any file the user can read and can reach the network.; Python entry points need a Python interpreter (standard library only). The two bundled engines are native ELF binaries; no interpreter is needed for them.; Bundled binaries are Linux x86_64 only.","state":"open","pr":152635,"prs":[{"n":152635,"state":"open","created":"2026-11-10T12:56:00Z"},{"n":151275,"state":"closed","created":"2026-11-08T11:50:01Z"},{"n":151108,"state":"closed","created":"2026-11-08T04:40:25Z"},{"n":151008,"state":"closed","created":"2026-11-08T02:17:23Z"}],"created":"2026-11-08T02:17:23Z","late":false,"said":false,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/ilPez00/hermes-physis/330e795b92544ff8d7ca9ab3d099d943dbc2185c/assets/banner.png","https://raw.githubusercontent.com/ilPez00/hermes-physis/9f67992dbcd36f4da0379f660baa832609b60699/assets/banner.png","https://raw.githubusercontent.com/ilPez00/hermes-physis/07f1fce97edc35ba7342e5d7f06c069ac00e1652/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/physis.webp"},{"name":"oathkeeper","title":"Oathkeeper","summary":"An owner's oath, enforced by the machine. The owner writes standing rules once in a plain oath file (standing missions briefed into every session, never delete or modify these surfaces, always require evidence such as a backup before touching those) and Oathkeeper enforces them deterministically on every tool call: never rules block with the violated oath line cited, always-require rules block until the prerequisite evidence exists in the same session, fingerprint snapshots of sworn surfaces detect changes made outside the gate and report them on the next turn, and the oath file itself can never be modified by the agent. Every verdict is written to an append-only local ledger.","disclosure":"reads tool call arguments to extract intended file actions and reads files covered by oath patterns to fingerprint them; all state is stored locally under $HERMES_HOME/oathkeeper/; makes no network calls and calls no model.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/oathkeeper","docs":"https://github.com/Whydiriki700/oathkeeper","tools":["oath_check","oath_status"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151006,"prs":[{"n":151006,"state":"merged","created":"2026-11-08T02:15:06Z"}],"created":"2026-11-08T02:15:06Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"weft","title":"Weft — edit-time coordination","summary":"Catch conflicts between coding agents while they edit, before Git merge time.","disclosure":"In a checkout linked with `/weft setup` (a `.weft/space.json` plus the saved agent token), every file edit the agent makes is sent to the Weft gateway that checkout names: file paths, symbol keys, full diffs, agent and change ids, the Hermes model name and the Kanban task title. The gateway is local (127.0.0.1) by default, Weft's hosted `https://weft-hosted.elier.ai` when chosen or named by a checkout, or a gateway you add with `/weft trust`. Gateway diagnostics are appended to tool results, and `mode: enforce` blocks conflicting edits, `git commit` and task completion. `/weft setup` and `/weft feed` run `npx -y @celador/weft@0.3.0`, which installs `wrangler@4` from npm, starts a background local gateway that outlives the chat, creates a paired Git worktree and installs Git hooks in the repository. Activity snapshots and logs are kept in `~/.cache/weft-hermes`, shared across profiles.","category":"tools","platforms":["linux","macos"],"maintainer":"celador","author":"celador","version":"0.4.0","requires_hermes":">=0.22.5","repo":"https://github.com/celador/weft","docs":"https://github.com/celador/weft/blob/fe30e497b924fb22aa95a67c0d81d938fab94fc4/packages/adapters/hermes/plugin/weft/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150998,"prs":[{"n":150998,"state":"merged","created":"2026-11-08T02:02:03Z"}],"created":"2026-11-08T02:02:03Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/celador/weft/fe30e497b924fb22aa95a67c0d81d938fab94fc4/docs/hackathon/screenshots/weft-conflict.png","https://raw.githubusercontent.com/celador/weft/fe30e497b924fb22aa95a67c0d81d938fab94fc4/docs/hackathon/screenshots/weft-empty.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/weft.webp"},{"name":"dramatis","title":"Dramatis","summary":"Spoiler-safe reading companion: open a local EPUB, remember how far you have read, and ask who someone is or what happened. Answers come only from text at or before that position, with a short quote. Native Python plugin (plugin.yaml + __init__.py).","disclosure":"reads EPUB files from paths you supply; stores extracted chapter text, reading progress, and character cards in Hermes plugin storage (plugin-data/dramatis/ and the dramatis plugin_db); no network calls, no extra API keys, no shell, no telemetry, and it does not read .env files or Hermes credential stores. Ships an original fixture EPUB at fixtures/the-glass-archive.epub (reviewable XHTML inside a standard EPUB zip, not a compiled binary). Cannot stop the host model from using pretrained knowledge about well-known books.","category":"tools","platforms":[],"maintainer":"kaizen-builds","author":"kaizen-builds","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/kaizen-builds/dramatis","docs":"https://github.com/kaizen-builds/dramatis/blob/506418bb44641df502cb4eb7fe3d52900d0aeed6/README.md","tools":["open_book","set_progress","who_is","ask_book","list_cast"],"hooks":[],"middleware":[],"env":[],"known_issues":"Cannot stop the host model from using pretrained knowledge about well-known books.","state":"merged","pr":150995,"prs":[{"n":150995,"state":"merged","created":"2026-11-08T01:55:10Z"}],"created":"2026-11-08T01:55:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pandy-tickets","title":"Pandy Tickets","summary":"Find events in Guatemala and draft new events through Pandy Tickets' official MCP server (Streamable HTTP at https://tickets.pandy.cloud/mcp, no sign-in, no keys). Public event search, checkout links, and event creation tools. Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector with no local code; every tool call goes to tickets.pandy.cloud and the tool set is served by the remote server at runtime, not covered by the pinned sha. The public tools (search-events, get-event, get-checkout-link) need no sign-in; draft-event creates a draft the organizer must claim and publish. The bundled skill also documents Pandy's organizer REST API: with an organizer API key that has write permission, the agent can publish events, issue tickets, record refunds, cancel orders and message attendees.","category":"tools","platforms":[],"maintainer":"Pandy Cloud","author":"kenny08gt","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Pandy-Cloud/pandy-tickets-public","docs":"https://github.com/Pandy-Cloud/pandy-tickets-public#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150989,"prs":[{"n":150989,"state":"merged","created":"2026-11-08T01:48:46Z"}],"created":"2026-11-08T01:48:46Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"multiverse","title":"Multiverse","summary":"Best-of-N for coding agents, with real checks. multiverse_race makes one git worktree per attempt (2 to 6) from the same base (HEAD, or the uncommitted working tree through git stash create), starts one delegate_task subagent per worktree with its own approach, pins each subagent to its worktree (pre_tool_call rewrites terminal workdir, file paths and V4A patch paths, and blocks access to the other worktrees and nested delegation), runs the same check commands in every worktree, ranks them by checks passed and then by the smallest real diff, and multiverse_adopt applies the winner with git apply. With delegation.backend: multiverse, each attempt can use its own model and provider. Hermes Desktop: a live race board pane (each attempt's status and tool-call count, then checks passed, diff and the winner), a status-bar chip while racing, and a toast when judging ends.","disclosure":"no network calls of its own, no credentials, no telemetry, no background threads. Runs git (rev-parse, stash create, worktree add/remove/prune, add -A inside the worktrees, diff, apply), mkdir, rm -f of its own .patch files and rmdir, plus your check commands, through the Hermes terminal tool, so approvals and the configured terminal backend apply. Creates worktrees next to the repository in .<repo>.multiverse/<run id>/. Starts subagents through delegate_task, which uses your configured model(s) and costs tokens per attempt. Stores run metadata (goal, checks, worktree paths, scores, the last 1500 characters of each subagent summary) in its plugin state under HERMES_HOME/plugin-data. Sends plugin.multiverse.run snapshots (goal, checks, per-attempt label, model, approach, status, tool-call count, scores and diff stats; no subagent text) to Desktop windows attached to the same Hermes process, at most once a second while attempts run; the desktop half keeps the last 10 runs in Desktop plugin storage.","category":"tools","platforms":["linux","macos"],"maintainer":"vdimarco","author":"vdimarco","version":"1.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/vdimarco/hermes-plugin-hackathon","docs":null,"tools":["multiverse_race","multiverse_open","multiverse_judge","multiverse_adopt","multiverse_close"],"hooks":["subagent_start","subagent_stop","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150987,"prs":[{"n":150987,"state":"merged","created":"2026-11-08T01:47:45Z"}],"created":"2026-11-08T01:47:45Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vdimarco/hermes-plugin-hackathon/a3e6c9aa8d2033382400fb94db26892c45fdc643/assets/catalog/multiverse.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/multiverse.webp"},{"name":"kin","title":"Avatar","summary":"Gives Hermes Desktop a face. Pick one of thirteen original characters, six 3D busts and seven 2D cartoons, each with its own voice. It watches your sessions, frowns when a step fails, and grins when a turn finishes. An optional overlay adds a plain-English task drawer, voice input, and one-click screen diagnosis.","disclosure":"the optional overlay is a separate Electron app you install with npm and run yourself. It reads Hermes's state.db (read-only), processes.json and the latest terminal output to draw its task drawer. When you click it, it captures the active window or terminal with the OS screenshot tool, OCRs it with tesseract, and submits that text to Hermes as a prompt. Switching persona runs `hermes config set` for tts.openai.voice and voice.gpt_live.voice, which changes Hermes's TTS voice everywhere. While the overlay runs, the first 280 characters of each reply are spoken through Hermes's configured TTS provider, and opt-in mic audio is transcribed by local whisper.cpp or Hermes's configured STT provider.","category":"desktop","platforms":[],"maintainer":"vdimarco","author":"vdimarco","version":"0.4.1","requires_hermes":">=0.22.0","repo":"https://github.com/vdimarco/hermes-kin","docs":null,"tools":[],"hooks":["post_tool_call","api_request_error","on_session_start","on_session_end","pre_llm_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150982,"prs":[{"n":150982,"state":"merged","created":"2026-11-08T01:36:46Z"}],"created":"2026-11-08T01:36:46Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/vdimarco/hermes-kin/22d7199f5b143a0b755fbcbe4aa1f1047347a109/docs/banner.png","https://raw.githubusercontent.com/vdimarco/hermes-kin/22d7199f5b143a0b755fbcbe4aa1f1047347a109/docs/cast.png","https://raw.githubusercontent.com/vdimarco/hermes-kin/22d7199f5b143a0b755fbcbe4aa1f1047347a109/docs/cast-toons.png","https://raw.githubusercontent.com/vdimarco/hermes-kin/83f8d9da73d060185fcf66ce151f28d5c27e3ecd/docs/banner.png","https://raw.githubusercontent.com/vdimarco/hermes-kin/83f8d9da73d060185fcf66ce151f28d5c27e3ecd/docs/cast.png","https://raw.githubusercontent.com/vdimarco/hermes-kin/83f8d9da73d060185fcf66ce151f28d5c27e3ecd/docs/cast-toons.png"],"videos":["https://raw.githubusercontent.com/vdimarco/hermes-kin/83f8d9da73d060185fcf66ce151f28d5c27e3ecd/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/kin.webp"},{"name":"wever-labs","title":"Wever Labs","summary":"Check agent readiness, review oversight evidence, look up records, and run treasury checks with 226 tools in the Wever Labs main catalog and 30 in the free catalog. Paid tools cost 0.10 USDC per call on Base via x402. Hermes sends tool requests and inputs to the two hosted Wever Labs MCP servers. Both connections use Hermes approval for write-capable calls.","disclosure":"sends every Wever Labs tool request and its inputs to the hosted MCP servers at weverlabs.com/mcp and weverlabs.com/mcp-free (tool definitions are served by the vendor at runtime and can change without a re-pin); paid tools on the main catalog cost 0.10 USDC per call on Base via x402, which Hermes does not pay itself; both servers are declared `trust: untrusted`, so write-capable calls ask first.","category":"tools","platforms":[],"maintainer":"CodeWever","author":"CodeWever","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/CodeWever/hermes-wever-labs","docs":"https://github.com/CodeWever/hermes-wever-labs#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150972,"prs":[{"n":150972,"state":"merged","created":"2026-11-08T01:17:53Z"}],"created":"2026-11-08T01:17:53Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"grounded-recall","title":"Grounded Recall","summary":"Before every model turn, searches your existing markdown notes (plain folders or an Obsidian vault), this profile's recent sessions and, opt-in, secret-manager item titles (never values), then injects a capped evidence block where each hit is labelled CURRENT, UNVERIFIED or HISTORICAL by freshness, plus a rule to search before answering \"it doesn't exist / I have no access / I don't know\". Every injection is logged per profile. No new memory store, works alongside any memory provider.","disclosure":"on every turn reads the configured markdown folders, key-facts file and this profile's session store (state.db, read-only) and injects matching excerpts into the prompt; writes an audit log under the active Hermes home; when secret-title search is configured it runs the user-configured secret-manager CLI in the background with a minimal environment (plus the variable names listed in `secret_titles_env`) and keeps only item titles; when the optional semantic re-rank is enabled it sends the user message and candidate note excerpts to the user-configured embeddings URL.","category":"memory","platforms":[],"maintainer":"joaquinbyagentx","author":"joaquinbyagentx","version":"1.0.2","requires_hermes":">=0.22.0","repo":"https://github.com/joaquinbyagentx/hermes-grounded-recall","docs":"https://github.com/joaquinbyagentx/hermes-grounded-recall#readme","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"With no roots configured it only searches sessions; add a notes folder for useful results.","state":"merged","pr":150965,"prs":[{"n":150965,"state":"merged","created":"2026-11-08T01:07:45Z"}],"created":"2026-11-08T01:07:45Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-r0b0t-vibecad","title":"vibeCAD","summary":"Profile-driven FDM CAD: executes trusted build123d workspace models or prepares a local single-shell STL, checks printer fit, renders depth-tested full and detail views, and writes geometry handoffs. Bambu adapters cover X2D and P2S; native process projects, live AMS binding and print dispatch are not produced. Meshy is an optional separate plugin; its paid service calls are not made by vibeCAD. CAD libraries require a separately bootstrapped Python 3.12/3.13 environment.","disclosure":"reads/writes workspace files and runs trusted Python in a local subprocess. Agent execution requires approval of the final script path and bytes; direct runtime calls bypass the agent gate. The subprocess environment is minimized, not a sandbox: approved code can access files, credentials and the network. Approval binds only the top-level script. Internal Hermes approval and interrupt APIs may change and produce catalog rule 9 warnings. The plugin itself makes no runtime network calls or telemetry.","category":"tools","platforms":[],"maintainer":"am423","author":"am423","version":"0.4.0","requires_hermes":">=0.21.6","repo":"https://github.com/r0b0tlab/hermes-r0b0t-vibeCAD","docs":null,"tools":["vibecad_list_printer_profiles","vibecad_execute_and_export","vibecad_inspect_metrics","vibecad_generate_preview_renders","vibecad_modify_parameter","vibecad_stage_for_slicer","vibecad_prepare_mesh","vibecad_stage_for_bambu"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152572,"prs":[{"n":152572,"state":"merged","created":"2026-11-10T10:37:07Z"},{"n":150964,"state":"merged","created":"2026-11-08T01:06:32Z"}],"created":"2026-11-08T01:06:32Z","late":false,"said":true,"update":false,"discussion":7,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fish-audio","title":"Fish Audio","summary":"Your agent speaks and listens with Fish Audio: expressive voices in 80+ languages, voices you design from a sentence, and live word-by-word dictation. 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 word-by-word live dictation captions on Hermes 0.21.6+ (stt.streaming: true). Adds the fish_speak, fish_voices, fish_transcribe, fish_settings, fish_account and fish_pronunciations tools, /fish and hermes fish commands (including /fish setup, a checklist that ends by offering a spoken sample with /fish preview), 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 Fish's native realtime speech-to-text at api.fish.audio (transcribe-stream-1, Preview) while you speak, billed $0.36 per hour of open session, per second, including silence; a session opens with the first audio and closes once Fish confirms the last words (the plugin stops waiting after 15 seconds), or 30 seconds after the last audio of a cancelled recording; if a live session fails or returns no text, Hermes transcribes the recording as a file instead, a separate billed request; the live_transcription: compat setting uses Fish's older realtime endpoint instead, 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; when no model is set and your Fish wallet shows no API credit, free credit or past top-up, the plugin uses that free model (allow_free_model: false turns this off). 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, cover images and recordings it uploads must be regular audio or image 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, the /fish and hermes fish commands and the fish_settings tool can set or reset the profile's Fish model, voice and reading speed and save up to 50 voice names in the profile's config, so the agent can choose its own voice under the same rules; fish_pronunciations sends the pronunciation dictionary names, descriptions and rules you ask for to api.fish.audio (dictionary management is free; speech that uses a dictionary is billed as usual), can store up to three dictionary references as the profile's default in its config, and deleting a dictionary or a version goes through Hermes's approval gate; /fish setup lists what the profile still needs without a Fish call, and to tell whether a key was saved after the gateway started it checks whether the profile .env has a non-empty FISH_API_KEY line without reading the key out; /fish preview with no voice plays a short billed sample in the profile's voice; fish_account reads the Fish wallet like /fish balance and estimates costs from a dated price table without a network call; /fish use and hermes fish use also make Fish the speech provider when none is set, and given a voice title they search your own Fish voices for it, and hermes fish login sets the speech and transcription providers when they are unset or you confirm. 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. When you ask for a voice that fits the agent, the voice-studio skill reads the agent's SOUL.md or persona and sends Fish a one- or two-sentence voice description, never the whole persona. Includes a report-a-problem skill: when you report a problem with Fish Audio, the agent runs hermes fish doctor --no-synth, /fish status, hermes --version and hermes plugins list --json, reads recent Hermes log lines that mention Fish, searches this plugin's GitHub issues for a few key words, 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 voice ids not confirmed as public library voices, and security problems go to the repository's private advisory form instead. No telemetry.","category":"voice","platforms":["linux","macos"],"maintainer":"100yenadmin","author":"100yenadmin","version":"1.12.1","requires_hermes":">=0.21.6","repo":"https://github.com/100yenadmin/fish-audio-hermes","docs":"https://github.com/100yenadmin/fish-audio-hermes#readme","tools":["fish_speak","fish_voices","fish_transcribe","fish_settings","fish_account","fish_pronunciations"],"hooks":["transform_llm_output","pre_tool_call"],"middleware":[],"env":["FISH_API_KEY"],"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).; An empty API key field in Settings is hard to see, worst in the dark theme; a fix is proposed (NousResearch/hermes-agent#138994).; In Hermes Desktop voice conversations, part or all of a reply sometimes goes unspoken because Desktop stops passing it to speech mid-turn; this affects every speech provider, and fixes are proposed (NousResearch/hermes-agent#129305).; 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.","state":"merged","pr":151965,"prs":[{"n":151965,"state":"merged","created":"2026-11-09T13:39:12Z"},{"n":151187,"state":"merged","created":"2026-11-08T07:23:29Z"},{"n":151889,"state":"closed","created":"2026-11-09T11:43:04Z"},{"n":151874,"state":"closed","created":"2026-11-09T11:15:44Z"},{"n":150955,"state":"closed","created":"2026-11-08T00:48:07Z"}],"created":"2026-11-08T00:48:07Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/766ed5c4d6cfcad0474a18b3e412a3ccb85b60b6/docs/media/banner.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/766ed5c4d6cfcad0474a18b3e412a3ccb85b60b6/docs/media/screenshot-desktop-library.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/766ed5c4d6cfcad0474a18b3e412a3ccb85b60b6/docs/media/screenshot-desktop-create.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/766ed5c4d6cfcad0474a18b3e412a3ccb85b60b6/docs/media/screenshot-desktop-account.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/766ed5c4d6cfcad0474a18b3e412a3ccb85b60b6/docs/media/screenshot-setup.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/298abfabd05005efc618cb0ec2f12d249c5dfcb4/docs/media/banner.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/298abfabd05005efc618cb0ec2f12d249c5dfcb4/docs/media/screenshot-desktop-library.png","https://raw.githubusercontent.com/100yenadmin/fish-audio-hermes/298abfabd05005efc618cb0ec2f12d249c5dfcb4/docs/media/screenshot-desktop-create.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/fish-audio.webp"},{"name":"meme-studio-mcp","title":"Meme Studio","summary":"Meme Studio through its MCP server (Streamable HTTP at https://memes.mrhyde.dev/mcp, no sign-in, no keys in config): finds the meme templates that fit a joke among more than a thousand, still and animated, with what goes in each caption slot, and makes the finished meme, an animated GIF for animated templates, plus a link to edit it in the browser. Works with the user's own photo too. Bundles one skill for the whole flow. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to memes.mrhyde.dev (closed-source server), which receives the searches, captions and any photo the agent sends (as base64, or an image_url the server downloads itself), says it does not store or log that content, keeps daily aggregate counts (requests, distinct people without identifying them, agent types, tools, options, templates chosen, errors) published weekly at memes.mrhyde.dev/en/stats plus minimal technical logs and temporary IP records for abuse blocks, and marks finished memes with an invisible pixel watermark; the skill may also call the same endpoint with curl from the terminal to save the image. Every tool is annotated read-only; the package marks the server untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"MrHydeDev","author":"MrHydeDev","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/MrHydeDev/meme-studio-mcp-plugin","docs":"https://github.com/MrHydeDev/meme-studio-mcp-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150954,"prs":[{"n":150954,"state":"merged","created":"2026-11-08T00:43:15Z"}],"created":"2026-11-08T00:43:15Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MrHydeDev/meme-studio-mcp-plugin/8d8f27722f2549b8154ec7ef9cce609d8a62addb/docs/logo.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/meme-studio-mcp.webp"},{"name":"business-agent-os","title":"Business Agent OS","summary":"Set up a file-based business operating system for an AI agent, for business owners who are not developers: one business folder of plain Markdown memory in two layers (a folder per client and project with state, dated changelog with a monthly archive, to-do and inbox; and a Karpathy-style wiki the agent maintains from saved sources: topic, entity and source pages with an index and a log), a daily log, a voice guide, session commands (/pickup with client, topic and daily modes, /wrap, /biz-status, /biz-review, /trace, /new-client, /ingest, /lint), optional local git save points and an optional tmux session menu. One skill plus a hosted MCP server (Streamable HTTP at https://mcp.danielbilsborough.com/mcp, no key, no sign-in) with four read-only tools: scaffold_business_os, house_rules, daily_routine and voice_guide_template. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"the MCP server is a stateless Cloudflare Worker whose source is in the repo; every tool call goes to mcp.danielbilsborough.com, which receives only the tool arguments (an optional business name and client or project names), returns static text, keeps no sessions, stores nothing and does not log inputs; every tool is annotated read-only and the package marks the server untrusted. The skill has the agent create and edit Markdown files only inside a business folder the user chooses, asking before each step; it installs nothing, uses no sudo, edits no shell or agent config outside that folder (the user adds one optional source line to ~/.zshrc themselves) and runs only local git commands inside that folder if the user opts in. No telemetry, no credentials stored or sent. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"danielbilsborough","author":"danielbilsborough","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/danielbilsborough/agent-skills","docs":"https://github.com/danielbilsborough/agent-skills#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150952,"prs":[{"n":150952,"state":"merged","created":"2026-11-08T00:39:41Z"}],"created":"2026-11-08T00:39:41Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shelldrop","title":"Shell Drop","summary":"Set up a Mac or Linux machine so AI coding agents (Claude Code, Codex, any CLI agent) can be run and checked from an iPhone or iPad over SSH: SSH on, tmux sessions that survive a dropped connection, Tailscale for the route in, the phone's SSH key, then the exact connection details. One skill plus Shell Drop's hosted MCP server (Streamable HTTP at https://mcp.shelldrop.sh/mcp, no key, no sign-in) with four read-only tools: setup_guide, tmux_howto, generate_tmux_conf and troubleshoot_connection. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"the MCP server is a stateless Cloudflare Worker whose source is in the repo; every tool call goes to mcp.shelldrop.sh, which receives only the tool arguments (an OS name, a short task or symptom phrase, tmux.conf options), returns static text, keeps no sessions, stores nothing and does not log inputs; every tool is annotated read-only and the package marks the server untrusted. The skill has the agent run shell commands on the user's own machine under Hermes's normal approvals: it edits ~/.tmux.conf, optionally ~/.zshrc, and ~/.ssh/authorized_keys (public keys the user supplies only), and after asking runs sudo to enable SSH, install tmux or Tailscale (Tailscale's official curl | sh installer on Linux) and stop the machine sleeping. No telemetry, no credentials stored or sent. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"shelldrop-sh","author":"danielbilsborough","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/shelldrop-sh/agent-skills","docs":"https://github.com/shelldrop-sh/agent-skills#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150946,"prs":[{"n":150946,"state":"merged","created":"2026-11-08T00:21:22Z"}],"created":"2026-11-08T00:21:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"firecrawl-plugin","title":"Firecrawl","summary":"Search, scrape, crawl, map, interact, monitor and research through Firecrawl's hosted MCP server at /v2/mcp-oauth, with Firecrawl skills (get-started, routing, deep research and 16 workflow skills). Adds the full Firecrawl tool set (Alexandria data providers, people and company search, developer, paper and US government search) beside the bundled Firecrawl web backend. The packaged connection uses FIRECRAWL_API_KEY, the same key as the bundled backend; Hermes-managed OAuth on the same endpoint works through a native MCP entry.","disclosure":"Connects to Firecrawl's hosted MCP server at `mcp.firecrawl.dev` and sends it the queries, URLs, prompts and files the agent asks Firecrawl to process, authenticated with `FIRECRAWL_API_KEY` or a Hermes-managed Firecrawl OAuth sign-in; calls use Firecrawl account credits.","category":"web","platforms":[],"maintainer":"firecrawl","author":"rakshith48","version":"1.0.1","requires_hermes":">=0.22.2","repo":"https://github.com/firecrawl/firecrawl-hermes-plugin","docs":"https://github.com/firecrawl/firecrawl-hermes-plugin/blob/561fcecab138a9aaa5b3b975394590bf214d29ae/README.md","tools":[],"hooks":[],"middleware":[],"env":["FIRECRAWL_API_KEY"],"known_issues":"","state":"merged","pr":150944,"prs":[{"n":150944,"state":"merged","created":"2026-11-08T00:18:49Z"}],"created":"2026-11-08T00:18:49Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shiftrepair","title":"ShiftRepair","summary":"Repair weekly staff schedules with minimum disruption, verified constraints and a shared Desktop board.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"wms2537","author":"wms2537","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Whyme-Labs/shift-repair","docs":null,"tools":["shiftrepair_get_board","shiftrepair_load_demo","shiftrepair_import_roster","shiftrepair_change","shiftrepair_solve","shiftrepair_apply","shiftrepair_discard","shiftrepair_undo","shiftrepair_export","shiftrepair_import_csv"],"hooks":[],"middleware":[],"env":[],"known_issues":"Supports one location and seven days, with at most one assignment per person per day.; Does not model labor law, contract terms, payroll, shift hours or minimum rest intervals.; Native Desktop was exercised on macOS with Hermes v0.22.7; model-backed chat and remote gateway switching were not tested.; A cold OR-Tools import on macOS can take over two minutes; wait for startup and refresh after a first-request timeout.","state":"merged","pr":150943,"prs":[{"n":150943,"state":"closed","created":"2026-11-08T00:15:45Z"}],"created":"2026-11-08T00:15:45Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Whyme-Labs/shift-repair/da929bb29704d5df558874bfaa0128b01702228a/submission/media/native-repair.png","https://raw.githubusercontent.com/Whyme-Labs/shift-repair/da929bb29704d5df558874bfaa0128b01702228a/submission/media/native-conflict.png","https://raw.githubusercontent.com/Whyme-Labs/shift-repair/da929bb29704d5df558874bfaa0128b01702228a/submission/media/native-light.png"],"videos":["https://raw.githubusercontent.com/Whyme-Labs/shift-repair/da929bb29704d5df558874bfaa0128b01702228a/submission/media/shiftrepair-native-demo.mp4"],"x":["https://x.com/wms2537/status/2119229875643121842"],"youtube":[],"thumb":"/hackathon/thumbs/shiftrepair.webp"},{"name":"api-indonesia","title":"API Indonesia","summary":"Indonesian public data from official sources through API Indonesia's hosted MCP server (Streamable HTTP at https://mcp.apiindonesia.id/mcp, API key auth): administrative regions down to villages with Kemendagri codes, postal codes, region boundaries, public holidays and cuti bersama, prayer times, Hijri calendar, schools, universities, hospitals, BMKG earthquakes, weather and warnings, Bank Indonesia exchange rates, minimum wage (UMP), NIK/NPWP format checks, QRIS parsing, rupiah terbilang, halal and BPOM lookups, OJK investment lists, KBBI, Al-Quran and Alkitab. Bundles the api-indonesia skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code: every tool call, with its arguments, goes to mcp.apiindonesia.id and spends the key owner's API Indonesia credits (Rp2 per successful call, failed calls are free; new accounts get a one-time 3,000 credit bonus, no monthly free tier). The key is read from API_INDONESIA_KEY in the profile .env (or the plugin's settings form) and sent as a bearer header. All tools are read-only lookups and calculators. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"khmuhtadin","author":"khmuhtadin","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/khmuhtadin/api-indonesia-examples","docs":"https://github.com/khmuhtadin/api-indonesia-examples#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":["API_INDONESIA_KEY"],"known_issues":"","state":"merged","pr":150941,"prs":[{"n":150941,"state":"merged","created":"2026-11-08T00:13:21Z"}],"created":"2026-11-08T00:13:21Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"project-feed","title":"Project Feed","summary":"Plan work, run tasks, and report project progress in Project Feed through its hosted Streamable HTTP MCP server, with four workflow skills: task-workflow, plan-project, project-status and work-triage. Agent Plugins v1 package (plugin.json, mcp.json, skills/), configuration only. Needs a Project Feed Pro workspace and OAuth sign-in: the README's Hermes section adds the server to mcp_servers with auth: oauth, then hermes mcp login \"Project Feed\".","disclosure":"every tool call goes to projectfeed.app and acts on the user's workspace with their own role, including tools that create, edit, archive and delete tasks, posts, docs, canvases and chat messages. The tool set is served at runtime and is not covered by the pinned sha. The README sets trust: untrusted so Hermes asks before any tool that is not marked read-only.","category":"tools","platforms":[],"maintainer":"Nyarenari","author":"Tezenari","version":"0.3.1","requires_hermes":">=0.23.0","repo":"https://github.com/nyarenari/project-feed-plugins","docs":"https://github.com/nyarenari/project-feed-plugins#hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150931,"prs":[{"n":150931,"state":"open","created":"2026-11-07T23:18:35Z"}],"created":"2026-11-07T23:18:35Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"vipernet-model-manager","title":"Vipernet Model Manager","summary":"Picks the provider and model for each turn from the profile's own catalog, based on the kind of work detected in the message: declared task associations first, then an automatic complexity analysis. Keeps the choice stable for the whole session, records every decision in an append-only ledger and degrades to the next route instead of failing when a route has no credential.","disclosure":"","category":"models","platforms":[],"maintainer":"proldan","author":"ptv1p3r","version":"3.47.15","requires_hermes":">=0.22.0","repo":"https://github.com/ptv1p3r/vipernet-model-manager.git","docs":null,"tools":[],"hooks":["post_api_request","api_request_error","post_tool_call"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"open","pr":150929,"prs":[{"n":150929,"state":"open","created":"2026-11-07T23:16:04Z"}],"created":"2026-11-07T23:16:04Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"signal-dog","title":"Signal Dog","summary":"Listens through the microphone for household sounds (a door knock, an appliance beeping, a smoke alarm or other steady tone) and sends a chat message through the agent's messaging platform. A signal dog is a dog trained to alert a deaf person to sounds; this does the same job with a microphone, and it is built by a deaf developer. Off until the user turns it on with /signaldog on. Not a certified smoke alarm: it can miss sounds and raise false alerts, with measured rates and limits in the README.","disclosure":"microphone: while switched on it listens to the microphone continuously. Background process: it runs one long-running ffmpeg process (two for about 30 seconds every 10 minutes while one replaces the other), stopped when the user turns it off or the plugin unloads; ffmpeg must already be installed and the plugin never downloads anything. Audio from the microphone is never kept: it is analysed in memory and dropped, with no option to keep it. /signaldog demo writes one recording made by code (no real sound) to a private temporary folder and deletes it when the demo ends. Stored locally: a size-limited numbers log in $HERMES_HOME/signal-dog/events.log (times, levels, what was detected, plus an optional note of up to 80 characters the user types after /signaldog wrong or right). The read-only tool signal_dog_recent_alerts returns alert times, kinds, pitches, the user's right and wrong marks and the listener state to the agent, so it reaches the user's model provider; it does not check who is asking, so do not use the plugin on an agent that strangers can message. Network: the plugin makes no network calls and has no telemetry; alerts are delivered by the agent through the messaging app the user already set up. No credentials are read or stored. The pre_llm_call hook only notices which chat session is live and reads no message content. While a beep keeps sounding, it edits its own first alert (\"still beeping\", then \"no longer detected\") where the messaging app allows edits, and otherwise sends periodic reminder messages (every three minutes by default, for as long as the beep continues); it never edits anyone else's messages.","category":"tools","platforms":["linux","windows"],"maintainer":"scottleimroth","author":"scottleimroth","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/scottleimroth/signal-dog","docs":"https://github.com/scottleimroth/signal-dog/blob/002e33b67b636f295788c3e7ddc5c486ea8e95cc/README.md","tools":["signal_dog_recent_alerts"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150928,"prs":[{"n":150928,"state":"merged","created":"2026-11-07T23:14:43Z"}],"created":"2026-11-07T23:14:43Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/scottleimroth/signal-dog/002e33b67b636f295788c3e7ddc5c486ea8e95cc/docs/demo-scene.png","https://raw.githubusercontent.com/scottleimroth/signal-dog/002e33b67b636f295788c3e7ddc5c486ea8e95cc/docs/measured.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/signal-dog.webp"},{"name":"distro-reader","title":"Distro Reader","summary":"Read independent news and content from Distro publications in Hermes through the public Distro Reader MCP server: search, feeds, full stories, archive research, visual article and book rendering, podcasts, payment information, and user-approved tips. Portable Agent Plugins v1 package with three workflow skills; public reading needs no account or API key.","disclosure":"connects to Distro's hosted Reader MCP server (reader.distro.media); its distro_tip tool and bundled premium-access skill start x402 crypto payments (tips and premium story/book purchases) with the user's wallet, which the skill only does after the user approves the exact amount, asset and network; the server is declared untrusted so its write tools go through Hermes approval.","category":"tools","platforms":[],"maintainer":"Distro-Media","author":"DistroBrad","version":"1.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Distro-Media/hermes-plugin-distro-reader","docs":"https://github.com/Distro-Media/hermes-plugin-distro-reader","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150926,"prs":[{"n":150926,"state":"merged","created":"2026-11-07T23:06:46Z"}],"created":"2026-11-07T23:06:46Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"talos","title":"Talos","summary":"Automatic, unskippable smart-contract security checks for code Hermes writes and deploys (EVM, Solana/Anchor, Sui/Move): scans every .sol/.rs/.move file Hermes writes, feeds open findings back so Hermes fixes its own bugs, and gates deploy commands (anchor/solana/sui/forge/hardhat, including inside scripts) — mainnet blocked on high/critical findings, escalated to Hermes's human approval on medium, allowed with a warning on devnet/testnet; plus a /talos report command and a talos_scan tool.","disclosure":"its pre_tool_call hook can block terminal deploy commands (anchor/solana/sui/forge/hardhat, including inside scripts, package.json scripts and Makefiles it reads) or escalate them to Hermes approval; every non-deploy call passes through. Never runs repository code: Slither analyses each .sol file with plain solc from an empty temp directory (no Hardhat/Foundry builds, no repo slither config), with import remappings read from static files. Runs local CLIs when present (slither, sui move build --lint, solana config get, sui client active-env, cast chain-id), each with a minimal environment that excludes Hermes's API keys; cast chain-id contacts the RPC URL named in the deploy command and sui move build may fetch the package's git dependencies. Requests no capabilities. Stores findings and a file-hash scan cache in its plugin data directory. No telemetry, no third-party APIs, no credentials read or stored. Fails closed: unknown network counts as mainnet, and a missing, crashing or timed-out analyzer reports code as unchecked. Heuristic rule packs, not an audit.","category":"tools","platforms":[],"maintainer":"oma035","author":"oma035","version":"0.1.1","requires_hermes":">=0.18.1","repo":"https://github.com/oma035/Talos","docs":"https://github.com/oma035/Talos#readme","tools":["talos_scan"],"hooks":["transform_tool_result","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150921,"prs":[{"n":150921,"state":"merged","created":"2026-11-07T23:00:15Z"}],"created":"2026-11-07T23:00:15Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"egress-guard","title":"egress-guard","summary":"Automated output vetting for AI agents. Policy-driven guard for what leaves the agent. A pre_tool_call hook redacts credentials in tool arguments and sends shell commands that upload data to non-allowlisted destinations (curl/wget uploads, scp/rsync, cloud copies, gist create, git push to a URL, python/node upload one-liners) to Hermes's approval prompt, showing a masked preview of the command (fail-closed when nobody can approve). transform_tool_result and transform_llm_output suppress small counts in tables, including complementary cells and percentages so hidden values cannot be recovered (statistical disclosure control). Presets, an optional strict network mode, and a /guard command (status, report, dry-run check).","disclosure":"no network access, subprocesses or tools; reads its policy from EGRESS_GUARD_POLICY, ~/.hermes/egress-guard.yaml or the bundled default, and its own audit log for /guard report; appends masked audit lines (never raw values) to ~/.hermes/egress-guard/audit.jsonl; never auto-approves.","category":"tools","platforms":[],"maintainer":"moussetea315","author":"moussetea315","version":"0.2.0","requires_hermes":">=0.22.2","repo":"https://github.com/moussetea315/egress-guard","docs":null,"tools":[],"hooks":["pre_tool_call","transform_tool_result","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150913,"prs":[{"n":150913,"state":"merged","created":"2026-11-07T22:19:52Z"}],"created":"2026-11-07T22:19:52Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":["https://x.com/mornek315/status/2119932918122594767"],"youtube":[],"thumb":null},{"name":"scrapeio","title":"ScrapeIO","summary":"Public social media data through ScrapeIO's hosted MCP server (Streamable HTTP at https://scrapeio.com/mcp): profiles, posts, videos, comments, transcripts, search, trends and ad libraries from TikTok, Instagram, YouTube, X, Facebook, Reddit, LinkedIn and more, as one normalized JSON shape. 85 tools plus list_endpoints and call_endpoint for the long tail, and a bundled scrapeio skill for picking endpoints and paging. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to scrapeio.com with the user's SCRAPEIO_API_KEY (set through the plugin's secret field) and spends credits from the user's ScrapeIO account; cached and failed calls are free. Every tool is annotated read-only and never posts to any platform. ScrapeIO logs which endpoint each key calls, for billing. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"web","platforms":[],"maintainer":"ScrapeIO","author":"xhoantran","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/xhoantran/scrapeio-agent","docs":"https://github.com/xhoantran/scrapeio-agent#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150910,"prs":[{"n":150910,"state":"closed","created":"2026-11-07T22:12:59Z"}],"created":"2026-11-07T22:12:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shared-memory-domains","title":"Shared Memory Domains","summary":"One memory several Hermes profiles share, split into domains with per-agent read/write grants: agents only propose facts, a human verifies them before they are recalled, revocation is immediate and sticky, and decisions are audited.","disclosure":"no network, no subprocess, no credentials; reads and writes one local SQLite file (default HERMES_HOME/plugin-data/shared-memory-domains/shared.db, or the shared db_path you configure, which is outside the plugin's data dir by design) and refuses any file it did not create; injects up to 6 verified facts per turn by default (`inject_limit`, 0–20; 0 disables recall) into the agent context (pre_llm_call); blocks the agent's own terminal/execute_code/file-tool calls that name the database (pre_tool_call trip-wire, trivially bypassed, not a sandbox); one /shared-memory admin command; admin commands and cross-domain views only from the cli surface by default. Cooperative access control inside the Hermes process: an agent with shell tools can bypass it, and facts already shown stay in conversation history and in any conversation-recording memory provider.","category":"tools","platforms":["linux"],"maintainer":"DrFreeman001","author":"DrFreeman001","version":"0.1.4","requires_hermes":">=0.23.0","repo":"https://github.com/DrFreeman001/shared-memory-domains","docs":"https://github.com/DrFreeman001/shared-memory-domains/blob/8502b8c909100f673a74b50c3519014088efa4f4/README.md","tools":["shared_memory_search","shared_memory_propose","shared_memory_access"],"hooks":["pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150909,"prs":[{"n":150909,"state":"merged","created":"2026-11-07T22:12:39Z"}],"created":"2026-11-07T22:12:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/IvanOntheweb/status/2120278002554777998"],"youtube":[],"thumb":null},{"name":"mentionagent","title":"MentionAgent","summary":"Run link building outreach through MentionAgent's hosted MCP server (Streamable HTTP at https://mentionagent.ai/mcp, OAuth sign-in, no keys in config): review the outreach drafts MentionAgent wrote, send the batch, answer publisher replies, close placements, and change campaigns in plain English, across every site in the user's account. Bundles the link-building-outreach workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to MentionAgent's hosted server (mentionagent.ai) and acts on the user's MentionAgent account; the tool set is served by that server at runtime and is not covered by the pinned sha. approve_batch and send_reply send real email from the user's sending inbox, and trigger_run and draft_reply spend MentionAgent credits. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"MentionAgent","author":"BuildsbyMatt","version":"1.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/BuildsbyMatt/mentionagent-claude-skill","docs":"https://github.com/BuildsbyMatt/mentionagent-claude-skill#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150906,"prs":[{"n":150906,"state":"merged","created":"2026-11-07T22:08:29Z"}],"created":"2026-11-07T22:08:29Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"raise","title":"Raise","summary":"Fundraising desk for founders: imports your investor pipeline, ranks investors on cited evidence, checks every draft against code gates (one conversation per firm, a pass closes the firm, 3 touches per channel, working-day cool-downs) and lints it against your verified claims before it reaches your mailbox as a draft. Draft-only: Raise has no send tool, and a pre_tool_call hook refuses send, reply and forward calls to pipeline addresses on mail tools and terminal commands alike.","disclosure":"Raise opens no network connections; web search, page fetches, mail, CRM and LinkedIn go through the user's own Hermes tools via dispatch_tool, and LinkedIn tools get daily caps plus a 72-hour pause after a login or rate-limit error. Deck text, profile and investor facts are sent to the user's configured model through ctx.llm. Data stays in <HERMES_HOME>/plugin-data/raise (SQLite, plus checked draft files for skill-based mail setups); CSV import reads only an existing .csv at the path the user gives, never inside the Hermes folder or hidden folders. No credentials stored, no .env reads, no telemetry, no background processes; automation blueprints exist only if the user adds them. Export and delete via /raise export and /raise delete confirm. Bundles blader/humanizer v3.1.0 (MIT).","category":"tools","platforms":[],"maintainer":"Triolith","author":"GenesisEngine-Triolith","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/GenesisEngine-Triolith/raise","docs":"https://github.com/GenesisEngine-Triolith/raise/blob/0926ac346b8b083f87bb052a12c6aefa6f74b096/README.md","tools":["raise_setup","raise_setup_status","raise_profile_get","raise_profile_set","raise_import","raise_find","raise_evidence_add","raise_evidence_list","raise_rank","raise_focus","raise_explain","raise_can_draft","raise_draft","raise_log","raise_replies_check","raise_brief","raise_stats","raise_export","raise_sync","raise_demo"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150905,"prs":[{"n":150905,"state":"merged","created":"2026-11-07T22:06:28Z"}],"created":"2026-11-07T22:06:28Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"myradio","title":"myradio","summary":"Hermes DJs your own myradio station. /radio shows a now-playing card, plays a song by title and sends song requests to the station's music maker, all without a model turn. The agent gets 12 tools to read the station, search the library, plan the queue, write the DJ's lines and ask for new songs, plus the myradio:dj skill and the myradio:dj-shift blueprint for unattended DJ shifts. Going live and deleting audio are not agent tools.","disclosure":"each tool call starts myradio's own MCP adapter as a short-lived child process (no shell, small environment without API keys); that adapter reads the station's control.token from its data folder (~/.myradio by default) and talks only to the station on 127.0.0.1. /radio request makes one completion with the user's configured Hermes model (Hermes 0.23+). No other network calls, no files written, no background process, no telemetry. Needs a running myradio station.","category":"tools","platforms":["linux","macos"],"maintainer":"newjordan","author":"newjordan","version":"0.2.0","requires_hermes":">=0.16.0","repo":"https://github.com/newjordan/myradio","docs":"https://github.com/newjordan/myradio/tree/main/integrations/hermes#readme","tools":["myradio_status","myradio_library","myradio_queue_add","myradio_queue_move","myradio_queue_remove","myradio_start","myradio_skip","myradio_fade_next","myradio_schedule_add","myradio_make","myradio_operations","myradio_run"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150902,"prs":[{"n":150902,"state":"merged","created":"2026-11-07T21:59:10Z"}],"created":"2026-11-07T21:59:10Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/newjordan/myradio/66d611bad24f069a41b136b0672b39b9ab3cde12/docs/hermes/banner.png","https://raw.githubusercontent.com/newjordan/myradio/66d611bad24f069a41b136b0672b39b9ab3cde12/docs/hermes/radio-card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/myradio.webp"},{"name":"ferry","title":"Ferry","summary":"Store-and-forward job exchange between Hermes instances over a git repo. One instance sends a job; another picks it up whenever it next wakes, claims it (first push wins), does the work in its own session and replies with a verdict. No inbound ports, no daemon, no live peer needed, so it works with hosted scale-to-zero instances, laptops and boxes behind NAT; the git history is the audit trail, senders are verified against commit authors, and secret-shaped attachments are refused.","disclosure":"shells out to the git CLI (clone/pull/commit/push) against only the bus remotes the user configures; bus checkouts and job/result bodies (plaintext, like anything in git) live under the profile's plugin-data/ferry directory and in that remote, so the bus repo should be private; on session start it fast-forward pulls each bus (15s timeout, failures swallowed) and, unless announce_on_start is off, injects one line into the first turn when jobs are waiting; a job is never executed by the plugin, it is read by the receiving agent in its own session under its own approvals; no telemetry and no background processes.","category":"automation","platforms":[],"maintainer":"Thomas Lince","author":"teal-sea","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/teal-sea/ferry","docs":"https://github.com/teal-sea/ferry/tree/1dc7b99d7efbd53032f221063fdf1cb2823a22b6#readme","tools":["ferry_buses","ferry_send","ferry_inbox","ferry_claim","ferry_reply","ferry_status"],"hooks":["on_session_start","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150900,"prs":[{"n":150900,"state":"closed","created":"2026-11-07T21:56:05Z"}],"created":"2026-11-07T21:56:05Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"google-workspace","title":"Google Workspace for Hermes","summary":"Gmail, Calendar, Drive, Docs, Sheets and Contacts in one Hermes workspace, with cross-app briefs and approval on every write.","disclosure":"signs in with the user's own Google Cloud OAuth client through Hermes (`hermes auth add google-workspace:google`) and requests broad scopes (gmail.modify/send/compose, full Drive, Docs, Sheets, Calendar events, Contacts); tools and the Desktop page read and change mail, calendar, files, documents, sheets and contacts on that account, and sending, sharing, inviting, trashing and other writes ask for Hermes approval first; a Changes tab keeps a local list (title and link) of the writes Hermes made, pushed to every connected Desktop window.","category":"desktop","platforms":[],"maintainer":"francoleff","author":"francoleff","version":"0.3.0","requires_hermes":">=0.22.3","repo":"https://github.com/francoleff/google-workspace-hermes","docs":null,"tools":["google_calendar_agenda","google_calendar_cancel_event","google_calendar_check_availability","google_calendar_create_event","google_calendar_rsvp","google_calendar_search","google_calendar_update_event","google_contacts_create","google_contacts_delete","google_contacts_search","google_contacts_update","google_docs_append","google_docs_create","google_docs_read","google_docs_replace_text","google_drive_create_folder","google_drive_get","google_drive_move","google_drive_rename","google_drive_search","google_drive_share","google_drive_trash","google_email_to_event","google_gmail_draft","google_gmail_forward","google_gmail_modify","google_gmail_read","google_gmail_search","google_gmail_send","google_gmail_update_draft","google_invoices_to_sheet","google_meeting_brief","google_organize_drive","google_search","google_sheets_append","google_sheets_create","google_sheets_create_tab","google_sheets_metadata","google_sheets_read","google_sheets_update_range"],"hooks":["pre_tool_call"],"middleware":[],"env":["GOOGLE_WORKSPACE_CLIENT_ID","GOOGLE_WORKSPACE_CLIENT_SECRET"],"known_issues":"Sign-in is a terminal command (hermes auth add google-workspace:google), not an in-app flow.; Sensitive and restricted Google scopes need Google's app verification before public sign-in.; RSVP and the sidebar actions have not been run inside the running Hermes Desktop app.; Invoice amounts come from text heuristics and must be checked.; Not affiliated with or endorsed by Google. Google product marks are Google trademarks.","state":"merged","pr":151346,"prs":[{"n":151346,"state":"merged","created":"2026-11-08T14:52:31Z"},{"n":150894,"state":"closed","created":"2026-11-07T21:37:51Z"}],"created":"2026-11-07T21:37:51Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"costguard","title":"CostGuard","summary":"A brake pedal for model spend. Meters every API call per session and per day from the provider's own usage block; dollar figures are estimates computed only for models in its price table and are never invented for unknown models. When a provider reports no usage (common with streaming OpenAI-compatible endpoints), it falls back to request-size estimates and flags those calls as estimated in every total, never pricing them. Warns the agent at a configurable ratio of any configured budget and blocks tool calls once a session or daily token/cost budget is exceeded, stopping the tool loops where runaway spend happens; with no budget configured it only meters and reports.","disclosure":"observes API request/response metadata (token usage, model, session id) and tool call names in profiles where it is enabled; stores only aggregate counters locally under $HERMES_HOME/costguard/; makes no network calls; the brake cannot cancel the reply already being generated when a budget trips, it stops the tool work that reply tries next.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/costguard","docs":"https://github.com/Whydiriki700/costguard","tools":["costguard_status"],"hooks":["pre_api_request","post_api_request","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150893,"prs":[{"n":150893,"state":"merged","created":"2026-11-07T21:37:12Z"}],"created":"2026-11-07T21:37:12Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sessionguard","title":"SessionGuard","summary":"Work survives the session. Keeps a local work-state checkpoint for every session, built from tool evidence: current task, files touched, recent tool calls and outcomes, failure count, and the agent's own progress notes saved through the session_checkpoint tool. A checkpoint closes only when the agent marks its task done; otherwise the next session from the same origin (same platform and sender) is briefed from the most recent open checkpoint, so work interrupted by a dead process, a dropped gateway, or a compaction resumes from evidence instead of a lossy transcript. Subagent and cron sessions neither record checkpoints nor receive briefings.","disclosure":"observes user messages (only the latest task text is kept, truncated, with credential-shaped values redacted), tool call arguments (stored only as short summaries), and turn outcomes, in profiles where it is enabled; all state is stored locally under $HERMES_HOME/sessionguard/; makes no network calls.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"0.1.1","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/sessionguard","docs":"https://github.com/Whydiriki700/sessionguard","tools":["session_checkpoint","sessionguard_status"],"hooks":["pre_llm_call","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150892,"prs":[{"n":150892,"state":"merged","created":"2026-11-07T21:37:04Z"}],"created":"2026-11-07T21:37:04Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"secretshield","title":"SecretShield","summary":"Credentials stop at the tool boundary. Scans every tool call's arguments before dispatch and every finished reply before delivery for credential material (vendor API keys, GitHub/AWS/Google/Slack/Stripe tokens, PEM private keys, JWTs, bearer credentials, passwords in assignments), blocks the call or redacts the value fail-closed, and appends every attempt to a local incident ledger that stores only metadata (kind, length, masked preview), never the secret.","disclosure":"SecretShield observes all tool call arguments, tool results and final replies in profiles where it is enabled and scans them locally; in the default enforce mode a detection blocks the tool call and a reply containing a credential is redacted with a notice; reply streaming is held until the reply is complete while it is enabled; it stores only detection metadata under $HERMES_HOME/secretshield/ and makes no network calls.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"0.1.1","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/secretshield","docs":"https://github.com/Whydiriki700/secretshield","tools":["shield_status"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150891,"prs":[{"n":150891,"state":"merged","created":"2026-11-07T21:36:50Z"}],"created":"2026-11-07T21:36:50Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-9router","title":"9Router","summary":"Dashboard tab for a 9Router gateway configured as the `9router` custom provider: groups the router's models by route prefix, shows the last test result for each model, the `/models` response time and, with the optional admin password, connection health and cooldown counts. A Test group button retests one group at a time. Routing and load balancing stay in 9Router.","disclosure":"calls only the 9Router URL from `providers.9router` in config.yaml; a group test sends real chat/completions requests (max_tokens 16, at most 25 models per press, never in the background), so it can spend credits or quota; the optional admin password logs in to 9Router's admin API and only connection name, provider, active state and test status reach the page; secrets are read through Hermes get_secret and not stored; results are kept in $HERMES_HOME/hermes-9router.json. No telemetry.","category":"models","platforms":[],"maintainer":"aligundogar","author":"aligundogar","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aligundogar/hermes-9router","docs":"https://github.com/aligundogar/hermes-9router#readme","tools":[],"hooks":[],"middleware":[],"env":["NINE_ROUTER_API_KEY","NINE_ROUTER_ADMIN_PASSWORD"],"known_issues":"","state":"merged","pr":150888,"prs":[{"n":150888,"state":"merged","created":"2026-11-07T21:34:08Z"}],"created":"2026-11-07T21:34:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"skill-court","title":"Skill Court","summary":"Puts every skill your agent writes on trial: replays real tasks with and without the skill in paired Docker sandboxes, scores each pair with the task's check or a blind pairwise judge, and gives a verdict per model. A skill that hurts is hidden from that model only (skill index, skills_list, skill_view), with the cause and the SKILL.md line behind it; an appeal drafts a fix, proves it on the same tasks and writes it only when you apply it (undo restores the original). Optional automatic trials after the agent creates or patches a skill. CLI (hermes court trial/report/appeal/auto/tasks/quarantine/release/list) plus a Desktop page.","disclosure":"trials run hermes and docker/podman commands, create and delete two replay profiles cloned from yours (config, API keys, SOUL, memory, skills; never messaging channels) and spend model tokens with your provider (per-trial budget, default $3; automatic trials: daily $2 and 300,000 judge tokens). Replays are single-query sessions with approvals denied, never -z. The judge (your own provider, via ctx.llm) sees task text, both runs' answers and sandbox files, and for a cause a transcript excerpt and the skill. Automatic trials start a background `hermes court trial --auto`; verdicts are posted with ctx.post_message to the conversation that changed the skill, never into the model's context. A live SKILL.md is written only by `hermes court appeal apply` or Apply fix.","category":"tools","platforms":["linux","macos"],"maintainer":"saatvik333","author":"saatvik333","version":"1.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/saatvik333/hermes-skill-court","docs":"https://github.com/saatvik333/hermes-skill-court/tree/de53842858cf41a1437eda30ff553d21cbf578f2/skill-court","tools":[],"hooks":["pre_tool_call","transform_tool_result","on_skill_lifecycle","on_session_finalize","pre_llm_call"],"middleware":["llm_request"],"env":[],"known_issues":"Needs Docker or Podman reachable by the Hermes gateway (a docker CLI on PATH with a working default context, or HERMES_DOCKER_BINARY).; In codex_app_server mode only quarantines set for every model apply.; Appeals import Hermes' skill frontmatter parser and skills_guard scan, which are not in the published plugin API yet (issue #150975); without them an appeal refuses to draft or apply.; Rapid replay-profile create/delete can trigger a Hermes core race that leaks a hosted-room poller (repeating 'state.db was replaced' log lines until a gateway restart); fix proposed in #150937.","state":"merged","pr":150873,"prs":[{"n":150873,"state":"merged","created":"2026-11-07T21:11:52Z"}],"created":"2026-11-07T21:11:52Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/saatvik333/hermes-skill-court/de53842858cf41a1437eda30ff553d21cbf578f2/docs/banner.png","https://raw.githubusercontent.com/saatvik333/hermes-skill-court/de53842858cf41a1437eda30ff553d21cbf578f2/docs/loop.png","https://raw.githubusercontent.com/saatvik333/hermes-skill-court/de53842858cf41a1437eda30ff553d21cbf578f2/docs/desktop.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/skill-court.webp"},{"name":"herd","title":"herd","summary":"Keep one Hermes across every machine. Settings, skills, memory and SOUL.md follow the user between devices, while each machine keeps what belongs to it — Docker paths, ports, bot tokens. `config.yaml` is merged per key against a stored base, with machine-bound paths resolved locally before any comparison, so a pull cannot delete the section the machine is running on. API keys never sync: herd does not open `.env`. The store is encrypted with a key stretched from a recovery code before anything leaves the device; every pull leaves a restorable backup and `hermes sync undo` puts it back, removing files the pull added. Ships a per-device manifest store over any folder or git remote, three agent tools (`sync_status`, `sync_diff`, `sync_now`), session hooks that pull at start and push at end in interactive sessions, and a `hermes sync` CLI. Pairing is one command that prints a 20-character code, valid once for 15 minutes, written as a sealed `pairing.json` in the store folder. A machine that can see that folder reads and deletes it. The file is not pushed to a git remote, because it wraps the recovery code and would remain in history after deletion; a machine that only has the git remote joins with `hermes sync join <git-url> --code HERD-…`.","disclosure":"reads the profile's config, memory, SOUL.md and skills and writes the ones that changed; credential-named keys in config.yaml and `mcp_servers.*.env`/`headers` stay on each machine; never reads `.env`, `auth.json` or `state.db`; in interactive sessions the session hooks pull and apply other machines' settings, skills, memory and SOUL.md at session start and push at session end without a prompt (turn off with `auto_pull`/`auto_push`); `sync_now` asks for approval and is blocked under cron and other non-interactive sessions, where the hooks also skip; cron jobs sync only on machines paired with `--cron`; the store is any folder or git remote the user names, and nothing is sent anywhere else.","category":"tools","platforms":[],"maintainer":"welliv","author":"welliv","version":"1.2.1","requires_hermes":">=0.23","repo":"https://github.com/welliv/hermes-herd","docs":"https://github.com/welliv/hermes-herd#readme","tools":["sync_status","sync_diff","sync_now"],"hooks":["pre_tool_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151037,"prs":[{"n":151037,"state":"merged","created":"2026-11-08T02:55:53Z"},{"n":150867,"state":"closed","created":"2026-11-07T20:58:43Z"}],"created":"2026-11-07T20:58:43Z","late":false,"said":false,"update":false,"discussion":8,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"falsify","title":"falsify","summary":"A claim is not done until it survives a check that could have failed. The agent pre-registers each claim BEFORE changing anything (its check and the base commit), hashed before any run; judging runs the check on the agent's final tree (must pass) and on copies with the agent's own change reverted, whole and hunk by hunk (must fail): a check that passes without the change reads VOID, and a proved claim says how many hunks of the change its check covers. The agent never writes the mutant. A pre_verify nudge names every claim not done on a proved result before the turn finishes; it never blocks completion.","disclosure":"falsify RUNS the check command the agent registered, with your permissions and no sandbox, in temporary copies of the repo's working tree (read with a private git index; the original tree, its index and history are never written); every run first goes to Hermes's approval prompt with the exact argv, and under cron, gateway auto-approve or any run where nobody answered it records VOID 'not run' and executes nothing. Stores records and results under its own plugin data dir; no background process. No network and no credentials by default; OPT-IN only (FALSIFY_DRAFT_URL and a claim registered with blind: K), it sends the claim and the base tree's files, minus every file the check names or would discover, to that endpoint. Its URL and optional key are config_schema secrets read only through Hermes's secret scope (agent.secret_scope.get_secret), never from os.environ or a file.","category":"tools","platforms":[],"maintainer":"CodexOperator","author":"CodexOperator","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/CodexOperator/falsify","docs":"https://github.com/CodexOperator/falsify#readme","tools":["falsify_register","falsify_judge","falsify_done","falsify_status"],"hooks":["pre_verify","pre_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150860,"prs":[{"n":150860,"state":"open","created":"2026-11-07T20:50:24Z"}],"created":"2026-11-07T20:50:24Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"us-air-rules","title":"us-air-rules","summary":"Does this EPA air rule apply to me? Screen a plant or a household against Title 40 and get applies / check with EHS / skip, with the citation. Compare two plant scenarios with the same bundled pack (changed inputs, changed verdicts, missing facts, unchanged count) without contacting the network. Read or search current eCFR Title 40 text, list recent EPA Federal Register documents for one part, and look up a state's EPA-approved SIP rules in 40 CFR part 52.","disclosure":"HTTPS GET only to www.ecfr.gov (title currency, section or subpart XML, part structure, search words) and www.federalregister.gov (part, optional term, date window, document type). No API key. The citation and the search words are sent; a facility or household profile is not. usair_plant_compare makes no request and does not upload a profile. Writes public regulatory responses (JSON, with fetch time) under HERMES_HOME/plugin-data/us-air-rules/cache, capped by cache_max_mb (default 100 MB). Reads only its own plugin settings. At most one request per second per host, 20 s timeout, 10 MB response cap. No hooks, no cron, no background process, no telemetry, no self-update. Screening aid, not a compliance determination and not legal advice. eCFR is an editorial compilation, not the official edition.","category":"tools","platforms":[],"maintainer":"entersidbellad","author":"entersidbellad","version":"0.2.1","requires_hermes":">=0.22.2","repo":"https://github.com/entersidbellad/hermes-us-air-rules","docs":"https://github.com/entersidbellad/hermes-us-air-rules#readme","tools":["usair_cfr_get","usair_cfr_search","usair_fr_recent","usair_plant_triage","usair_plant_compare","usair_home_check","usair_sip_lookup"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150859,"prs":[{"n":150859,"state":"merged","created":"2026-11-07T20:48:54Z"}],"created":"2026-11-07T20:48:54Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"secret-guard","title":"Secret Guard","summary":"Enter API keys through a hidden dialog into the macOS keychain, never chat; block and scrub secrets before any model sees them.","disclosure":"Secret Guard stores the keys you enter in your macOS login keychain as `hermes-<ENV_VAR>` items created with `-T /usr/bin/security`, so any process running as your user can read them without a prompt; it runs `/usr/bin/security` and `/usr/bin/osascript` (hidden-input dialog), observes every tool call, tool result, terminal output and model reply to block or redact registered secrets, keeps a names-and-fingerprints-only registry under the Hermes root, and makes no network calls.","category":"tools","platforms":["macos"],"maintainer":"ChasClogston","author":"ChasClogston","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/ChasClogston/hermes-secret-guard","docs":null,"tools":["secret_request"],"hooks":["on_session_start","pre_llm_call","pre_tool_call","transform_tool_result","transform_terminal_output","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150858,"prs":[{"n":150858,"state":"merged","created":"2026-11-07T20:41:22Z"}],"created":"2026-11-07T20:41:22Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/banner.png","https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/screenshots/01-dialog.png","https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/screenshots/02-chat-blocked.png","https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/screenshots/03-env-blocked.png","https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/screenshots/04-perl-redacted.png","https://raw.githubusercontent.com/ChasClogston/hermes-secret-guard/b823a9ebeca0847a6c7a5bd73f0678d6b4657924/docs/screenshots/05-list-verify.png"],"videos":[],"x":["https://x.com/CharlesClogston/status/2119169308001739202"],"youtube":[],"thumb":"/hackathon/thumbs/secret-guard.webp"},{"name":"emotion-chip","title":"Emotion Chip","summary":"The agent decides how to say it. Your agent writes its own delivery into the text it speaks, a small score in square brackets (a sigh, a whispered line, a pause, a warm and amused tone), and Emotion Chip renders exactly that for ElevenLabs v4 or Fish Audio (s2.1-pro, Drama 3), each in its own dialect, adding nothing the agent did not write. With voice replies on in a chat (/voice on), the chip tells the agent when Hermes will read its reply aloud, so the agent can say it itself, score included, instead of Hermes reading the plain text (not on Discord). Registers the emotion-chip speech provider, a delivery guide in the system prompt, the emotion-chip-voice skill, the /chip command (status says whether the chip can speak and what to fix; why, quiet, register) the hermes chip command, which shows offline what each engine receives for any score, and two agent tools: chip_status (read-only) and chip_preview (offline). CC0 emotion data and pre-registered evaluations ship in the repository.","disclosure":"with backend: eleven it sends your ElevenLabs API key, the rendered text, the model id, voice id, voice settings, an optional seed and, on v4 models, up to three earlier request ids from the same session (kept in memory for two hours) to api.elevenlabs.io over HTTPS; these are paid requests billed to your ElevenLabs account. The key is read at each call through the profile's secret scope and never stored. With the default backend: fish it sends nothing itself: it hands the rendered text to the Fish Audio plugin in the same process (which must be installed, enabled and signed in), and that plugin sends it to Fish Audio under its own disclosure and bills your Fish account; the chip reaches it through Hermes's speech-provider registry and imports its tag adapter. With guide_mode: generate (the default) it registers the emotion-chip-voice skill, and while it is the speech provider it adds a delivery guide of up to 4,000 characters to the system prompt and registers pre_gateway_dispatch (described next). With guide_mode: generate it also registers two agent tools. chip_status reads the plugin's settings, Hermes's tts configuration and this session's last authored register and reports them; it sends nothing and changes nothing. chip_preview renders a score offline and returns the text each engine would receive and the cues it would drop; no synthesis, no network, nothing written. While the chip is the speech provider, each successful text_to_speech result gains an emotion_chip entry of at most 600 characters (the dialect, the agent's cue words, drops and notes); it stays in the conversation and is sent nowhere. The pre_gateway_dispatch hook: for each incoming message it asks the gateway whether it will read the reply aloud and keeps that answer in memory under the chat and message id (at most 256, never used after 15 minutes), used once to add one line to that message's turn; it never skips or changes a message, and registering the hook routes webhook and relay deliveries through Hermes's hooked ingress path. When another speech provider is selected, its tool_request middleware rewrites text_to_speech text containing a bracket for that provider (the Fish dialect on Fish S2 and Drama 3 models, or the ElevenLabs dialect on a v3/v4 model; for any other provider or model, including Hermes's default Edge, Fish S1 and ElevenLabs on older models, standalone bracketed words are removed as cues, a bracketed Step 2 too, while the words inside spans, numeric references such as [1] and code such as an array index stay), leaves command providers alone and records nothing. With signals on (off by default) it adds a dated situation line of up to 200 characters to the turn and, when a tool call fails, to that call's result. It reads Hermes's tts configuration (read-only) to pick the dialect, model and voice. It writes under the profile's plugin-data/emotion-chip/ only the generated skill and, unless delivery_log is off, delivery.jsonl (time, session id, sender id, platform, model, dialect, rendering group, cue words, parameters, kinds of drops and character count, never the spoken text), moved to delivery.1.jsonl at 5 MB so at most about 10 MB is kept; Hermes keeps its per-session state (task counters and timestamps, the ids of the last 16 tool calls counted, session keys, the messaging sender id and platform, the last situation and register lines, the quiet switch; the 50 most recent sessions) in the plugin's own namespaced folder under plugin-data/. Audio goes to the path Hermes supplies. No background processes, no shell commands, no telemetry.","category":"voice","platforms":["linux","macos"],"maintainer":"100yenadmin","author":"100yenadmin","version":"0.3.0","requires_hermes":">=0.22.2","repo":"https://github.com/100yenadmin/ai-emotion-chip","docs":"https://github.com/100yenadmin/ai-emotion-chip/tree/4f5ae2a267ebe6280e1b1bb69e8629900b7177b5/plugin#readme","tools":["chip_status","chip_preview"],"hooks":["pre_llm_call","post_tool_call","api_request_error","on_session_start","on_session_end","transform_tool_result","on_session_reset","pre_gateway_dispatch"],"middleware":["tool_request"],"env":["ELEVENLABS_API_KEY"],"known_issues":"Full cues reach the voice on the text_to_speech tool path, and in chats with voice replies on, where the agent says its reply itself. Not on Discord, where Hermes plays its own reply in voice channels. Read-aloud and voice mode speak the reply text without cues, because Hermes has no seam yet that keeps cues for speech and strips them from the chat.; The voice-replies line needs the plugin to run inside the gateway process (Hermes's default); an isolated plugin host gets no line, which is Hermes's behaviour without the chip.; The Fish backend needs the fish-audio plugin installed, enabled and signed in.; ELEVENLABS_API_KEY is needed only with backend: eleven; the default Fish backend uses the fish-audio plugin's key.; GPT-Live voice chat speaks through OpenAI's live voice model, not a speech provider, so the chip does not reach it.","state":"merged","pr":151181,"prs":[{"n":151181,"state":"merged","created":"2026-11-08T07:06:59Z"},{"n":150857,"state":"merged","created":"2026-11-07T20:33:27Z"}],"created":"2026-11-07T20:33:27Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/100yenadmin/ai-emotion-chip/4f5ae2a267ebe6280e1b1bb69e8629900b7177b5/docs/media/banner.png","https://raw.githubusercontent.com/100yenadmin/ai-emotion-chip/4f5ae2a267ebe6280e1b1bb69e8629900b7177b5/docs/media/screenshot-cli.png","https://raw.githubusercontent.com/100yenadmin/ai-emotion-chip/f4afab1e0e23f1691ad3ecf56982df2ab94aef72/docs/media/banner.png","https://raw.githubusercontent.com/100yenadmin/ai-emotion-chip/f4afab1e0e23f1691ad3ecf56982df2ab94aef72/docs/media/screenshot-cli.png"],"videos":[],"x":["https://x.com/NousResearch/status/2118094256438936062"],"youtube":[],"thumb":"/hackathon/thumbs/emotion-chip.webp"},{"name":"personal-assistant","title":"Personal Assistant","summary":"A remote personal assistant for your agent: it does the errands up to the final page and stops at your yes. It interviews you once (\"grill me\": eight short sittings on your business, people, decision rights, preferences and calendar rules), remembers corrections, people, SOPs and trust levels in a local ledger, and never asks the same thing twice. Travel and errands on real sites in English, Japanese and Korean: restaurant tables (TableCheck, Tabelog, OpenTable, Catch Table), hotels and flights on Trip.com, taxis, food and konbini delivery, with sourced prices, an approval packet for each action and an honest handoff at a sign-in, OTP or app-only wall. Optional Chief of Staff mode adds a daily plan, a weekly closeout and a radar. Adds the pa and pa_call tools, the /pa command and 42 skills (the Chief of Staff ones load only in that mode).","disclosure":"Keeps its records in a SQLite ledger in your profile (state/travel-ledger/travel.sqlite): trips, prepared actions, setup answers and the chat setup runs in, preferences, people, SOPs, trust levels, call cards and transcripts, task evidence and receipts; its shell ledger helper, which skills run for payment-readiness and connectivity records, also stores browser checkpoints (page URLs, session ids), budgets and which providers hold a card. Optional features add a delivery packet queue (full packets, including priority-mail excerpts, never pruned), Daily Ops config and state, and a client index (names, emails, domains). Owner-memory and evidence records refuse recognised card numbers and credentials, records written through pa pass a lighter pattern filter, helper and approval records are kept as given, and nothing is deleted automatically. After you approve a setup review or a Chief of Staff closeout it writes USER.md, a marked PA section of SOUL.md, an operating-manual skill (or an edit of your existing one) and any context file you name, holding your approved business, people, spending-limit and approver answers as plain text, and pins the manual with hermes curator pin; a trip export writes Trip.ics and Trip-Reference.md to a folder you choose; /pa mode writes the plugin's mode setting. A pre_tool_call hook sees every tool call and blocks only tools covered by a PA exact-action approval or its deny list, plus most tools while the ledger is unreadable; a pre_llm_call hook adds short notes to your own turns (setup offer and routing, and on a session's first turn, including another person's first turn in a shared chat, your preferences and people not yet in your files) and records which chat setup runs in. With your consent during /pa setup the agent reads USER.md, SOUL.md, its memory, the calendar, past itineraries, a context file you name and up to 20 recent sent emails (PA stores no raw mail); mail work you ask for reads messages and attachments; accepted Daily Ops routines sort unread mail twice a day and send you a digest of five lines or fewer; drafts are written only if you opted in during setup (gog's gmail.compose scope, which can also send), and every send, archive, delete or label change needs your yes for that item; during a provider sign-in it may read your connected email or SMS for a link or code; accepted Chief of Staff jobs run scheduled turns that read PA's ledger and your USER.md or manual, may read your calendar and inbox, and search the web for your radar topics. Calendar writes need your yes for each item and go only to calendars you opted in to (gog's calendar.events scope), with one standing exception: during trip work the agent may add minimal private trip events (flight and hotel times, check-in and leave-for-airport reminders, no details or guests) without asking each time. The agent creates Kanban tasks for open commitments, and with your approval may adapt an existing brief cron job. Errands drive Hermes's browser tools on provider sites (Trip.com by default for flights and hotels, then airline or hotel sites or local sellers; reservation platforms, maps and guides for restaurants; another regional domain if blocked), in the local browser, agent-browser on Browserbase or another attended browser you configured, and provider sign-ins you give in chat are saved in the agent's credential lane and browser profile. What the agent reads and writes goes to your configured model provider as part of the conversation. Other network calls happen only when you ask or opt in: Browserbase (api.browserbase.com) with your BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID, recording off for sessions PA creates, sessions kept alive up to 20 minutes, connect and live-view links visible to the model; PA holds no Google token and makes no Google API calls: the agent reads and writes calendars with the profile's own calendar tools, and Daily Ops reads them through the gog CLI (gog auth add stores gog's own credentials); parallel research subagents for SIM comparisons; Open-Meteo for an accepted trip watch; ElevenLabs read-only from the manual phone_poll command, with the declared ELEVENLABS_API_KEY read through Hermes's secret accessor; and opt-in Daily Ops (gog mail and calendar reads, with selected mail and calendar items sent to your model provider and email addresses aliased by pattern; Nominatim and OSRM through curl after geo consent; Stripe and Supabase CLIs after consent). Background work only after a yes: an accepted trip watch arms a HeartBeat 2.0 watcher that, once you allowlist it, runs a local PA script every 15 minutes for at most 14 days, and its notices wake an agent turn (a flight change may look up rebooking options, never book), plus optional check-in and arrival wakes; opt-in conversation delivery injects packets into one verified Telegram session as agent turns, with priority-mail excerpts not aliased; opt-in Daily Ops routines and an optional watchdog on the schedule you accept (every 20 minutes or less when leave-by alerts are on); accepted routine suggestions run a local precheck every 5 minutes (scripts stay in the profile's scripts/ folder); approved follow-up wakes (Chief of Staff, and open-loop follow-through wakes created only for a date you approve in chat). An accepted daily brief also sends an end-of-day note after eod_time (default 18:00) unless the brief itself is set after it, and accepted due-action checks also wake the agent for open-loop chase steps (day 2, 5 and 10, then an escalation), which only remind you or hold a nudge draft for your yes. Updates go through hermes plugins update; the version probe is read-only; developer eval scripts call model providers only when run by hand, with a token you pass in an environment variable (the optional lab judge runs the Codex CLI on its own sign-in), and PA code reads no saved login; the manual scripts/check_release.py reads this repo's GitHub releases through the gh CLI's own sign-in. PA's skills stop bookings, payments, reservations, orders and cancellations at the final page for your explicit yes, and its pre_tool_call gate enforces exact-action approval for actions a PA workflow has scoped; nothing dials a phone. No telemetry. Full list: the README's \"What it touches\".","category":"automation","platforms":["linux","macos"],"maintainer":"100yenadmin","author":"100yenadmin","version":"0.11.0","requires_hermes":">=0.21.1","repo":"https://github.com/100yenadmin/hermes-personal-assistant","docs":"https://github.com/100yenadmin/hermes-personal-assistant#readme","tools":["pa","pa_call","pa_delivery_ack"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"The Browserbase cloud-browser lane needs agent-browser on PATH (100yenadmin/hermes-personal-assistant#39) and BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID in the profile's secrets; local Chromium works without them.; pa_delivery_ack registers only when conversation delivery is enabled, so hermes plugins validate warns that it is declared but not registered.","state":"merged","pr":152252,"prs":[{"n":152252,"state":"merged","created":"2026-11-09T22:01:53Z"},{"n":150855,"state":"merged","created":"2026-11-07T20:24:22Z"}],"created":"2026-11-07T20:24:22Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/57f701e83ebb807be4d1429d7e35f02bdf5dd5d8/docs/media/banner.jpg","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/57f701e83ebb807be4d1429d7e35f02bdf5dd5d8/docs/media/screens/01-tablecheck-final-page.png","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/57f701e83ebb807be4d1429d7e35f02bdf5dd5d8/docs/media/screens/02-taxi-fare-and-login-stop.png","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/57f701e83ebb807be4d1429d7e35f02bdf5dd5d8/docs/media/screens/03-korean-summary.png","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/68016ef7e3558e3c60ce05fd16a5439cdbfc906d/docs/media/banner.jpg","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/68016ef7e3558e3c60ce05fd16a5439cdbfc906d/docs/media/screens/01-tablecheck-final-page.png","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/68016ef7e3558e3c60ce05fd16a5439cdbfc906d/docs/media/screens/02-taxi-fare-and-login-stop.png","https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/68016ef7e3558e3c60ce05fd16a5439cdbfc906d/docs/media/screens/03-korean-summary.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/personal-assistant.webp"},{"name":"mood","title":"Mood","summary":"A tiny evolving mood for Hermes, built for slow local models. Tracks mood, rapport and three slow-moving traits (warmth, playfulness, directness) that change with keyword rules on what the user writes and drift back to neutral over hours, then appends one ~30-token line to each user message through pre_llm_call, so the system prompt and its cache are never touched. Adds a /mood command (show, reset, on, off).","disclosure":"makes no model calls, no network I/O, runs no shell commands and holds no credentials; reads the text of each user message and reads/writes only its own plugin-data state file (state.json, per profile).","category":"general","platforms":[],"maintainer":"huy-sec","author":"huy-sec","version":"1.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/huy-sec/hermes-mood","docs":"https://github.com/huy-sec/hermes-mood#readme","tools":[],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150846,"prs":[{"n":150846,"state":"merged","created":"2026-11-07T19:52:22Z"}],"created":"2026-11-07T19:52:22Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"glasses-platform","title":"Hermes Glasses","summary":"Your own Hermes agent on your smart glasses: it sees what you see, answers by voice, and taps you on the lens when something is due. A gateway platform that adds glasses as a channel over one WebSocket, with short spoken-style replies to the device that asked, camera photos (requested when you ask what you are looking at, or taken by the agent with its glasses_capture_photo tool), streamed replies for heads-up displays, approval and clarify prompts on every device, and cron and heartbeat pushes to all of a user's devices, queued in memory while they are offline. Speaks the bridge protocol of the community hermes-glasses iOS app (v0) and a richer v1; a simulator is included.","disclosure":"opens an unencrypted WebSocket listener on all interfaces (port 8765, /voice) that refuses to start without a device token (use Tailscale or a TLS proxy off your home network); each device token gets full agent chat as its user, bypassing the gateway allowlist, including answering approval prompts and clarify questions; the agent can take a glasses camera photo at any time during a glasses conversation and photos are also captured automatically on visual keywords (auto_capture: off disables that), saved in Hermes's image cache; the device's new-session button answers Hermes's /new confirmation for that user; no outbound network calls, shell commands or telemetry.","category":"platform","platforms":[],"maintainer":"100yenadmin","author":"100yenadmin","version":"0.1.2","requires_hermes":">=0.22.2","repo":"https://github.com/100yenadmin/glasses-platform","docs":"https://github.com/100yenadmin/glasses-platform#readme","tools":["glasses_capture_photo"],"hooks":[],"middleware":[],"env":[],"known_issues":"Preview: proven against the bundled simulator and a real Hermes gateway with real models; not yet tested on real glasses or with the iOS app on a device.; Needs a companion app that speaks its WebSocket protocol, such as the community hermes-glasses iOS app in bridge mode.","state":"merged","pr":150842,"prs":[{"n":150842,"state":"merged","created":"2026-11-07T19:34:01Z"}],"created":"2026-11-07T19:34:01Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/100yenadmin/glasses-platform/b8db447a8302c76dcde1d9ab55ae88ddb55d06ef/docs/media/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/glasses-platform.webp"},{"name":"kata","title":"Kata","summary":"Learns the multi-step tool routines your agent keeps repeating across conversations and, only after you review and approve each one, compiles it into a single deterministic tool that runs its steps without model round-trips in between. Proposals show the steps, data flow between them, permissions, input and output schemas, per-step side effects and a twelve-check offline validation (exact replay of recorded runs, held-out fit, injected failures and timeouts, secret scan, tool schema fingerprints). Approve, reject, disable, roll back and inspect run traces from /kata, `hermes kata` or a dashboard tab.","disclosure":"records tool names, arguments and results (first 64 KB, secret-named keys and common credential formats redacted) plus model request timing and token counts to a local SQLite file under its plugin data directory, kept for 30 days by default; registers tools only after explicit approval and executes their steps through ctx.dispatch_tool; katas whose steps have external or unclassified effects escalate every call to Hermes's own approval prompt with a fresh rule key, so remembered approvals never repeat them and unattended runs follow Hermes's approval policy; side-effecting steps are never retried; makes no network, model or subprocess calls of its own.","category":"automation","platforms":[],"maintainer":"opeblow","author":"opeblow","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/opeblow/kata","docs":"https://github.com/opeblow/kata/blob/cc59b08f1bbeeb02524c060faac04edb34de0564/README.md","tools":["kata_list"],"hooks":["post_tool_call","post_api_request","pre_tool_call","pre_llm_call","on_session_start","on_session_end"],"middleware":[],"env":[],"known_issues":"Approved katas are registered as additional kata_<name> tools at runtime; they are not listed in provides_tools because they do not exist until you approve one.; Routines are linear. Branching on a result stays with the agent.; Values inside free-form text output cannot be referenced; they become inputs instead.","state":"merged","pr":150840,"prs":[{"n":150840,"state":"merged","created":"2026-11-07T19:27:55Z"}],"created":"2026-11-07T19:27:55Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/opeblow/kata/cc59b08f1bbeeb02524c060faac04edb34de0564/docs/screenshots/dashboard-review-dark.png","https://raw.githubusercontent.com/opeblow/kata/cc59b08f1bbeeb02524c060faac04edb34de0564/docs/screenshots/dashboard-active.png","https://raw.githubusercontent.com/opeblow/kata/cc59b08f1bbeeb02524c060faac04edb34de0564/docs/screenshots/dashboard-review-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/kata.webp"},{"name":"snooze","title":"Snooze","summary":"A reminder that repeats in your chat (Telegram, Discord) until you answer it exactly: Ok, your word, an emoji, a Telegram reaction, or one of several choices; reply later to postpone. A wrong answer gets the list of valid answers from the plugin's code, never from the LLM. Then it can hand a follow-up to the agent. Created with /snooze in plain words (\"Stop the GPU at 19:00 every 10m then shut it down\"), by the agent through the snooze_create tool, or with hermes snooze add. Zero LLM calls per reminder.","disclosure":"no network call of its own, no subprocess, no credentials, no telemetry. A timer task runs in the gateway (every 15 s) and sends due reminders through Hermes's send path to the snooze's chat or home channel. Hook pre_gateway_dispatch sees every inbound gateway text message before the agent; it acts only in the chat of a running snooze: an answer, or a message that replies to a reminder or comes first after one, is handled by the plugin and does not reach the agent (an answer with a follow-up is rewritten into the follow-up prompt); everything else passes untouched. Hook gateway_platform_event reads Telegram reactions on reminder messages. A follow-up after a reaction or /snooze ok is queued with ctx.inject_message, which needs the user's allow_gateway_injection. Reads its own settings (ctx.get_config), the session env (HERMES_SESSION_*), TZ, the Hermes pause flag, the gateway liveness and the profile's home channels, read-only. Writes its setting notification_platform with ctx.set_config (/snooze platform) and, in the plugin data dir, snoozes.json and two lock files. Private Hermes names: tools.send_message_tool.send_message_tool (send without an LLM turn) and agent.estop.is_engaged (no reminders while Hermes is paused).","category":"automation","platforms":["linux","macos"],"maintainer":"AIverflow","author":"AIverflow","version":"0.3.1","requires_hermes":">=0.22.7","repo":"https://github.com/AIverflow/hermes-snooze","docs":"https://github.com/AIverflow/hermes-snooze#readme","tools":["snooze_create"],"hooks":["pre_gateway_dispatch","gateway_platform_event"],"middleware":[],"env":[],"known_issues":"The gateway must be running: the timer lives in the gateway, so a CLI or Desktop session alone sends no reminders.; Tested on Telegram and Discord; other Hermes chat platforms are untested. Reaction confirms work in Telegram private chats only.; Uses two private Hermes names (send_message_tool, estop.is_engaged); a Hermes release can break them.","state":"open","pr":153031,"prs":[{"n":153031,"state":"open","created":"2026-11-11T01:23:34Z"},{"n":150833,"state":"closed","created":"2026-11-07T19:17:45Z"}],"created":"2026-11-07T19:17:45Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AIverflow/hermes-snooze/65f4128edcb93812af9edab94740a909276cda9b/docs/snooze-diagram.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/snooze.webp"},{"name":"cacheguard","title":"Cacheguard","summary":"Warns or blocks a large chat message sent after a pause, when the provider's prompt cache may have expired. Afterwards it shows how many tokens were reused or rebilled, and /cacheguard shows how often your cache was lost after pauses of each length. Modes (off, warn, block) are set per surface (terminal, desktop, gateway), and a model can have its own pause, size and mode. In block mode the message is not sent: the reply says so, and you send it with /retry or by sending the same text again. If the plugin fails, the message is sent.","disclosure":"no network call, no LLM call, no subprocess, no credentials, no telemetry. Middleware llm_request reads every message of the request to hash the start of the chat (sha256, only the hash is kept) and removes cacheguard's own \"message not sent\" replies from what the model receives. Middleware llm_execution reads the token usage of each response; the provider call is Hermes's own next_call(), never repeated. Hook pre_llm_call returns a block for a large message after a pause. Hook transform_llm_output posts a result line with ctx.post_message and never changes the reply. Reads config.yaml (its own settings through ctx.get_config) and the environment variables HERMES_SINGLE_QUERY_SESSION, HERMES_KANBAN_TASK, HERMES_PLATFORM, HERMES_INTERACTIVE. Writes its settings with ctx.set_config (/cacheguard set and setup) and, under <HERMES_HOME>/cacheguard/, observations.jsonl (token counts, times and model name of calls after a pause; no message text, no session id) and one small json file per chat (times, token counts, hash). /cacheguard reset deletes them. Unattended runs (cron, kanban, subagents, curator, API server, webhooks) pass through untouched; one-shot runs (-Q, -z, --oneshot) are never blocked and show no line (a -Q run may be counted in the stats); with chat -q, block acts as warn. Private Hermes names: tools.approval_context._is_single_query_approval_context (a run with no screen only warns) and agent.usage_pricing.normalize_usage (read the cache token counts). If one is missing, the plugin says so in /cacheguard and degrades: it only warns, or result lines are missing.","category":"tools","platforms":[],"maintainer":"AIverflow","author":"AIverflow","version":"0.6.0","requires_hermes":">=0.22.6","repo":"https://github.com/AIverflow/hermes-cacheguard","docs":"https://github.com/AIverflow/hermes-cacheguard#readme","tools":[],"hooks":["transform_llm_output","pre_llm_call"],"middleware":["llm_request","llm_execution"],"env":[],"known_issues":"Uses two private Hermes names (single-query check, token usage); without them it only warns, or result lines are missing.; In-process plugin mode only: ctx.post_message needs the live gateway adapter.","state":"merged","pr":150832,"prs":[{"n":150832,"state":"merged","created":"2026-11-07T19:08:47Z"}],"created":"2026-11-07T19:08:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/AIverflow/hermes-cacheguard/4648bc056c28b9453d92089ffd9db09f11dc3392/docs/images/result-lines.png","https://raw.githubusercontent.com/AIverflow/hermes-cacheguard/4648bc056c28b9453d92089ffd9db09f11dc3392/docs/images/pause-plots.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cacheguard.webp"},{"name":"phone-autopilot","title":"Phone Autopilot","summary":"Teach your phone a task once and replay it with no model in the loop: routines with checkpoints, repairs through the agent when an app changes, a daily automation blueprint and a live phone pane. Builds on phone-harness.","disclosure":"runs model-written routines (Python you approve per version) on this computer with your user's permissions through the phone-harness package, which taps, types and runs adb shell commands on your real phone; its pre_tool_call hook puts every save and first run through Hermes's approval prompt and prepends a foreground-app guard to phone_exec scripts, which stops at Android permission dialogs and, only if you turn on ask_before_apps, pauses to ask before any app you have not allowed; the guard runs inside the script as a guard rail, not a sandbox; run environments drop variables ending in _KEY, _TOKEN, _SECRET or _PASSWORD and keep the rest; stores routines, image refs, run records with screenshots and your app answers in its plugin data folder, reads the screenshot files the agent names when saving image refs, reads its settings from config.yaml and changes them only through Hermes's plugin settings writers; the dashboard phone pane can tap, swipe and press keys on the phone when you use it; no network calls or telemetry of its own (phone-harness telemetry is switched off for routine runs); Pop out starts scrcpy if installed.","category":"automation","platforms":[],"maintainer":"jupist","author":"jupist","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/jupist/phone-autopilot","docs":"https://github.com/jupist/phone-autopilot#readme","tools":["routine"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150825,"prs":[{"n":150825,"state":"merged","created":"2026-11-07T18:55:59Z"}],"created":"2026-11-07T18:55:59Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://github.com/user-attachments/assets/fdcc2a82-39d6-49e4-9620-1b6165173ea5","https://github.com/user-attachments/assets/51f34c48-da07-4d0c-9ad2-695c7c4a9b40","https://github.com/user-attachments/assets/d8e1fe20-29f7-4f07-9d0b-72ce8af384ef"],"videos":[],"x":["https://x.com/jupisq/status/2119139623230382145"],"youtube":[],"thumb":"/hackathon/thumbs/phone-autopilot.webp"},{"name":"saascity","title":"SaaSCity","summary":"Plan a SaaS, AI or developer-tool launch through SaaSCity's MCP server (Streamable HTTP at https://saascity.io/api/mcp, no sign-in, no keys in config): audit a homepage the way directory scrapers see it, pick launch directories from 1,600+ with Ahrefs DR, link type and price, research products listed on SaaSCity, run SaaS metric calculators, and draft a SaaSCity listing for the user to review. Bundles one workflow skill, launch-plan. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to saascity.io, which runs SaaSCity. check_launch_readiness, check_badge and check_backlink make saascity.io fetch the URL the user gives. submit_project sends the approved product details to SaaSCity and stores them as an inert draft, with the caller's IP for rate limits, that expires after 7 days unless the user claims it; nothing is published or charged unless the user opens the claim link and pays on saascity.io. Every tool is annotated read-only except submit_project; the package marks the server untrusted, so Hermes asks before it runs and refuses it in unattended runs. saascity.io is not available in every region (HTTP 451 there). The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"SaaSCity","author":"nyyhao","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/nyyhao/saascity-mcp","docs":"https://saascity.io/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150816,"prs":[{"n":150816,"state":"merged","created":"2026-11-07T18:36:10Z"}],"created":"2026-11-07T18:36:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"omlx","title":"oMLX","summary":"Managed oMLX runtime and MLX model library for Hermes Desktop on Apple Silicon.","disclosure":"on explicit setup downloads the oMLX 0.7.2 macOS app (SHA-256-pinned) from the official jundot/omlx GitHub release and runs it as a long-running loopback server (127.0.0.1, bearer key) under HERMES_HOME/plugin-data/omlx; downloads public Hugging Face model snapshots the user names; generates a local API key stored as HERMES_OMLX_LOCAL_API_KEY in the profile's .env; \"Use\" rewrites the profile's default model in config.yaml.","category":"models","platforms":["macos"],"maintainer":"vitaliy-blprnt","author":"vitaliy-blprnt","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/vitaliy-blprnt/hermes-plugin-omlx","docs":"https://github.com/vitaliy-blprnt/hermes-plugin-omlx/blob/eb748caf0a3080cd3b8d9426eb995d2722ec3406/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires macOS 15 or newer and Apple Silicon on the inference host.; The model-provider client requires in-process plugin execution.","state":"merged","pr":150815,"prs":[{"n":150815,"state":"merged","created":"2026-11-07T18:33:53Z"}],"created":"2026-11-07T18:33:53Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vitaliy-blprnt/hermes-plugin-omlx/eb748caf0a3080cd3b8d9426eb995d2722ec3406/docs/desktop.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/omlx.webp"},{"name":"telegram-ops","title":"Telegram Operations Protocol","summary":"Executive 3-line micro-cards with native expandable drawers, 1-Tap interactive mobile action gates, and forum topic operations for Hermes Agent on Telegram. Enforces the 3-line micro-card standard (Status Pill + #TAG + Metric, Core Result, Owner + Action + Deadline) with HTML sanitization, tucks heavy data tables and logs into native expandable drawers, and provides pattern-scoped callback query handlers for 1-Tap inline action buttons with Telegram user ID authorization.","disclosure":"","category":"platform","platforms":["linux","macos","windows"],"maintainer":"brukmars","author":"brukmars","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/brukmars/hermes-telegram-ops","docs":"https://github.com/brukmars/hermes-telegram-ops#readme","tools":["telegram_ops_create_topic","telegram_ops_pin","telegram_ops_send_card","telegram_ops_update_card"],"hooks":["transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150814,"prs":[{"n":150814,"state":"closed","created":"2026-11-07T18:33:37Z"}],"created":"2026-11-07T18:33:37Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tone-forge","title":"ToneForge","summary":"AI guitar tone engineer for IK Multimedia AmpliTube 5 inside Hermes Agent: plain-language tone recipes (ordered chain, amp/cab families, mic placement, pedals, 7-band EQ, noise gate, levels) with a per-decision rationale, a versioned JSON preset library, a reference-track analyser that sets the numbers from a measured recording, and a MIDI bridge that drives only the CCs the user assigned.","disclosure":"the analysis tool runs ffmpeg on a local audio file the caller names and, only when an explicit url is passed, yt-dlp (http/https URLs resolving to public addresses only, fixed argv, no shell) into a temporary directory deleted after the call; the MIDI bridge sends only the CC numbers the user mapped to the MIDI port they selected; the plugin writes only under HERMES_HOME/plugin-data/tone-forge (or TONEFORGE_DATA_DIR when set) and never modifies AmpliTube's own files; no telemetry.","category":"tools","platforms":["windows"],"maintainer":"efesn","author":"efesn","version":"1.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/efesn/toneforge-hermes-plugin","docs":"https://github.com/efesn/toneforge-hermes-plugin#readme","tools":["toneforge_create_preset","toneforge_analyze_reference","toneforge_adjust_preset","toneforge_save_preset","toneforge_list_presets","toneforge_get_preset","toneforge_delete_preset","toneforge_list_profiles","toneforge_midi_status","toneforge_list_midi_ports","toneforge_select_midi_port","toneforge_send_midi","toneforge_set_parameter","toneforge_map_parameter","toneforge_list_mappings","toneforge_remove_mapping","toneforge_midi_probe"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150810,"prs":[{"n":150810,"state":"merged","created":"2026-11-07T18:14:46Z"}],"created":"2026-11-07T18:14:46Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"manyhands","title":"manyhands","summary":"Identity, memory and permissions for every person who talks to one Hermes bot. A gateway is a single-operator agent: the platform already carries sender_id and platform into every turn and nothing acts on it, so everybody in a group or a household shares the same memory, the same tools and the same approval authority. manyhands acts on it. Roles (owner, member, guest, blocked) are resolved from the platform event, never from message text, and applied as three states per tool: allow runs, ask parks the call under a four-character code and sends it to the owner's own DM, and everything else is refused with a message that names only the asker's own role. `/many approve CODE` opens a one-shot grant bound to that person and that tool, spent by the next call and expired on silence — only a human typing the slash command can approve, and nobody can approve their own ask. The operator's own MEMORY.md and USER.md blocks are withheld from everybody else's system prompt and replaced with a card about that person, because \"everyone gets their own Hermes\" has to include not handing a stranger your notes; each person also gets their own facts, their own token budget, and `/many pause`. Six tools (whoami, people, remember, recall, share, audit — `people` is read-only: a roster change is a human-typed verb, never a tool call) and `/many` (roster, invite, claim, add, role, tools, budget, audit, approve, deny, pause) whose owner-only verbs stay owner-only because a command's identity comes from the platform event too, so a stranger typing in the owner's own chat session is still a stranger. Identity fails closed: a session with no human turn on it — a restart, a subagent, a tool driven from the gateway socket — gets the guest allowlist, not the owner's, and a tool call in a session more than one person has spoken in is attributed by the task id the host dispatches with (or refused, never guessed from the last speaker). Every turn, tool decision, refusal, escalation, approval, spent grant and token count is an audit row you can read back.","disclosure":"hooks, one middleware, six tools, the `/many` command and the `manyhands` approval transport, no other capability. pre_llm_call resolves the sender from the platform event, records the session and turn to person map, redeems `join CODE` invites and appends that person's facts to their turn; pre_tool_call applies the role to the tool allowlist, parks asks, spends grants and fails closed; post_api_request records token usage per person; an llm_request middleware rewrites the outgoing provider request for non-owners, removing the operator's memory blocks and injecting the person card. One SQLite file under plugin-data/manyhands (people, facts, shared facts, invites, approvals, sessions, settings, audit) holding sender ids as platform:sender_id, roster names you set, the facts people store and the audit trail; `/many remove` deletes a person and their facts. Reads no other file on disk, runs no command, makes no network call, imports nothing outside the Python standard library and calls no model. Approval prompts are delivered through the host's own gateway injection into the owner's DM, which the host records as a turn in that chat.","category":"tools","platforms":[],"maintainer":"PhiBao","author":"PhiBao","version":"0.6.0","requires_hermes":">=0.23.0","repo":"https://github.com/PhiBao/manyhands","docs":"https://github.com/PhiBao/manyhands#readme","tools":["manyhands_whoami","manyhands_people","manyhands_remember","manyhands_recall","manyhands_share","manyhands_audit"],"hooks":["pre_llm_call","pre_tool_call","post_api_request"],"middleware":["llm_request"],"env":[],"known_issues":"Identity is only as good as the platform event, and a call that carries none fails closed: a session that never had a human turn on it, a subagent, and a tool called from inside `execute_code` (the host passes an empty session id there) all get the guest allowlist rather than the owner's. Set `unknown_session_policy: operator` if every caller on your machine is trusted. Machine-generated turns are recognised by a marker AND the absence of a sender, so a cron prompt is the operator's while a guest who types `[cron]` stays a guest.; DM routing is Telegram-shaped: a private chat id is the user id, so the approval prompt reaches that chat. Other platforms need their own DM resolution; the prompt fails closed there rather than guessing, which means asks are denied until a code is minted another way.; The operator's own memory is withheld by removing the two built-in block titles (MEMORY, USER PROFILE). A block rendered by a third-party memory provider is not removed, so run manyhands without one if that matters to you.; A plugin escalation cannot use Hermes's approval-transport seam: request_tool_approval routes it through _ACTION_GATE, which is built with transport=False. manyhands parks and DMs the ask itself and leaves the registered transport to the dangerous-command prompts that do consult it.; The approval prompt arrives as a plugin-triggered turn in the owner's chat (inject_gateway_message), so each prompt costs one turn in that conversation; keep approval_timeout_s honest so a stale code cannot sit there long.","state":"merged","pr":150807,"prs":[{"n":150807,"state":"merged","created":"2026-11-07T17:59:04Z"}],"created":"2026-11-07T17:59:04Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/PhiBao/manyhands/bc5ec1cb57bb26a133f7967bd06dee6441409544/docs/approval.png","https://raw.githubusercontent.com/PhiBao/manyhands/bc5ec1cb57bb26a133f7967bd06dee6441409544/docs/roster.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/manyhands.webp"},{"name":"airpods-approvals","title":"AirPods Approvals","summary":"Hear Hermes approvals and questions in your AirPods and answer with your head: nod to approve, shake to deny. Gestures are recognised by rhythm, with a tap in each ear as you go, and drive the real approval through approval.respond. A nod only ever approves once, and a timeout or lost AirPods sends nothing. Desktop-only plugin with a small native helper built from source on your Mac, because head motion isn't reachable from a plugin: Install in the plugin's settings opens the bundled desktop/Install Helper.command in Terminal, which builds and starts it. Set up then walks through a Gemini key, Motion access and AirPods on the same page.","disclosure":"Desktop-only, macOS. Install opens the bundled desktop/Install Helper.command in Terminal, which builds a native helper app from the plugin's Swift source into ~/Applications/Hermes AirPods.app (ad-hoc signed); once paired, Hermes Desktop launches it at every start and it runs without a window or menu bar item until Desktop quits. The helper listens on 127.0.0.1 with a paired handshake and reads AirPods head motion only during a question, which never leaves the Mac. A completed nod answers a real Hermes approval with approve-once (never session or always) and can answer clarify questions; timeouts and lost AirPods send nothing. Prompts are written and spoken by Gemini: each approval's description and Hermes-redacted command, and each clarify question with its choices, are sent to generativelanguage.googleapis.com using your Gemini key, which the helper keeps in the macOS Keychain; by default you hear Gemini's one-line summary of the command rather than the literal command. On Gemini's free tier, Google may use this content to improve its products. No telemetry.","category":"voice","platforms":["macos"],"maintainer":"cineglobe","author":"cineglobe","version":"1.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/cineglobe/hermes-airpods-approvals","docs":"https://github.com/cineglobe/hermes-airpods-approvals#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150803,"prs":[{"n":150803,"state":"merged","created":"2026-11-07T17:41:33Z"}],"created":"2026-11-07T17:41:33Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/cineglobe/hermes-airpods-approvals/ce280b1ec1dc09dcbc28604036bdea48e41c8f5f/docs/banner.png","https://raw.githubusercontent.com/cineglobe/hermes-airpods-approvals/ce280b1ec1dc09dcbc28604036bdea48e41c8f5f/docs/onboarding.png"],"videos":["https://raw.githubusercontent.com/cineglobe/hermes-airpods-approvals/main/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/airpods-approvals.webp"},{"name":"quota-gauge","title":"Quota Gauge","summary":"Desktop pane with draining quota bars for the AI subscriptions this profile is signed in to (Anthropic, ChatGPT/Codex, Command Code, xAI, OpenCode Go, GitHub Copilot, Nous Portal, Z.ai, Kimi Code, MiniMax, Devin, Antigravity), plus Today / 7d / All-time token charts split into input, output, cache read and cache write, kept in one account-wide ledger.","disclosure":"quota for Anthropic, Codex, Nous Portal, OpenCode Go, xAI and Antigravity comes through Hermes's own account-usage route and credential list; Command Code, Copilot, Z.ai, Kimi and MiniMax are read from each vendor's usage endpoint with that provider's declared secret (config_schema, read via get_secret), at most every 2 minutes while the pane is open. Reads every profile's state.db read-only (token counters and session timestamps only, never message content) and writes one file, shared/quota-gauge/ledger.db, folded once a minute by a daemon thread while the backend runs. Never reads auth.json, .env, vendor CLI token files or browser data. No telemetry, no self-update.","category":"desktop","platforms":[],"maintainer":"cynricantao","author":"cynricantao","version":"0.2.1","requires_hermes":">=0.22.0","repo":"https://github.com/cynricantao/hermes-quota-gauge","docs":"https://github.com/cynricantao/hermes-quota-gauge#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150801,"prs":[{"n":150801,"state":"closed","created":"2026-11-07T17:40:34Z"}],"created":"2026-11-07T17:40:34Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/cynricantao/hermes-quota-gauge/11afe605d4c61e90f6f8a11db9bb1f00bd09e793/docs/images/quota-gauge-dark.png","https://raw.githubusercontent.com/cynricantao/hermes-quota-gauge/11afe605d4c61e90f6f8a11db9bb1f00bd09e793/docs/images/quota-gauge-light.png","https://raw.githubusercontent.com/cynricantao/hermes-quota-gauge/11afe605d4c61e90f6f8a11db9bb1f00bd09e793/docs/images/quota-gauge-hover.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/quota-gauge.webp"},{"name":"hypnos","title":"Hypnos","summary":"Hermes learns in its sleep. Consolidates your corrections and denials into a small LoRA brain overnight, then routes mastered turns to it with the learned habits pruned from its prompt.","disclosure":"captures your messages, tool calls with their arguments and results, approvals and replies (secret-scrubbed) into its own plugin-data database for 90 days by default and reads MEMORY.md/USER.md read-only; nights run only when you start them (/sleep now, hermes hypnos sleep, Desktop, or a cron job you create) and download the chosen base model from Hugging Face, call your own model through Hermes for dream variants (budget-capped; teacher: scripted avoids it), and run the teacher's and brain's proposed shell commands only inside a networkless, mount-free Docker container you pull yourself; after a promoted night it starts an unauthenticated brain server on 127.0.0.1:8765, and with routing: auto (default) a learned habit family switches, after 5 agreeing shadow turns, to being answered by the small local brain (including terminal tool calls, which still go through Hermes approval) instead of your configured model; a brain_endpoint you set receives the brain's prompts; Desktop replies carry a ~20-token ::hypnos marker kept in the transcript.","category":"models","platforms":["linux","macos"],"maintainer":"0xNoramiya","author":"0xNoramiya","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/0xNoramiya/hypnos","docs":"https://github.com/0xNoramiya/hypnos#readme","tools":[],"hooks":["pre_llm_call","post_tool_call","post_approval_response","post_llm_call","on_session_end","on_session_finalize","post_compaction","on_session_delete","transform_llm_output"],"middleware":["llm_execution"],"env":[],"known_issues":"Training needs a separate Python environment with torch; hermes hypnos doctor prints the command.; The Apple Silicon (MLX) backend is not written yet; Macs train on CPU.; Without Docker, REM dreams run in lucid mode (pattern checks only, no execution); the morning report says so.","state":"merged","pr":150800,"prs":[{"n":150800,"state":"merged","created":"2026-11-07T17:36:40Z"}],"created":"2026-11-07T17:36:40Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/0xNoramiya/hypnos/0a809b9085fdeaed63fd909b927afcc41de512de/docs/banner.png","https://raw.githubusercontent.com/0xNoramiya/hypnos/0a809b9085fdeaed63fd909b927afcc41de512de/docs/screenshots/preview-report-dark.png","https://raw.githubusercontent.com/0xNoramiya/hypnos/0a809b9085fdeaed63fd909b927afcc41de512de/docs/screenshots/preview-reply-badge.png"],"videos":[],"x":["https://x.com/acetaminofenol/status/2119120790495039622"],"youtube":[],"thumb":"/hackathon/thumbs/hypnos.webp"},{"name":"solverforge-routing","title":"SolverForge Routing","summary":"Personal multi-stop driving trips: tell Hermes where you need to go, review the places it finds, and a SolverForge constraint solver orders the stops on OpenStreetMap roads. Change plans in the conversation (skip a stop, choose the first visit, add a place, finish elsewhere) and the trip is repaired, keeping visited stops, the next stop and before rules; an older solve never overwrites a newer edit, and results are labelled best-found, not proven optimal. Desktop: the road map beside the chat, a route card, a status-bar chip, Google Maps, Apple Maps and OpenStreetMap links, and one QR code at a time for the phone.","disclosure":"`hermes solverforge-routing install` (or /routing install) downloads one engine binary for your platform from this repository's own engine-v0.2.2 GitHub release, built by its release workflow with a GitHub build attestation, and refuses it unless its SHA-256 matches the value pinned in engine_bin.py; the agent cannot start that download. Place searches the user asks for send the query and region to Nominatim (configurable with geocoder_url). The first solve in a new area sends a bounding box to Overpass to download OpenStreetMap roads; each solve then runs the engine once as a subprocess (JSON on stdin and stdout). The map pane loads OpenStreetMap tiles, which reveal the visible area and your IP to the tile servers. Opening a navigation link or scanning its QR code sends the stop coordinates to that provider. The route database, road cache and engine stay in <hermes home>/plugin-data/solverforge-routing/; a geocoder pacing lock file (a timestamp only, shared by all profiles) is kept in ~/.cache/hermes-solverforge-routing/. No credentials, no location tracking, no telemetry, no background process.","category":"tools","platforms":["linux","macos"],"maintainer":"blackopsrepl","author":"blackopsrepl","version":"0.2.2","requires_hermes":">=0.22.2","repo":"https://github.com/blackopsrepl/hermes-solverforge-routing","docs":"https://github.com/blackopsrepl/hermes-solverforge-routing#readme","tools":["route_search_locations","route_confirm_location","route_plan_places","route_confirm_plan","route_status","route_current","route_set_origin","route_set_end","route_set_round_trip","route_add_stop","route_remove_stop","route_mark_visited","route_set_next","route_precedence","route_solve"],"hooks":[],"middleware":[],"env":[],"known_issues":"Run `hermes solverforge-routing install` once after installing the plugin: the engine binary is downloaded separately (about 10 MB) and checked against a pinned SHA-256; Engine builds exist for Linux (x86_64, arm64), macOS (Apple silicon, Intel) and Windows (x86_64); Hermes builds a session's tool list from the plugins it saw at the previous launch, so the first session right after installing has no routing tools: start Hermes once more; Not turn-by-turn navigation: no live traffic, and turn restrictions, barriers and conditional access are not modelled yet; check the route in your navigation app","state":"merged","pr":150783,"prs":[{"n":150783,"state":"merged","created":"2026-11-07T17:14:17Z"}],"created":"2026-11-07T17:14:17Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-routing/6f8ea8251881a30fcd86f9607509034a60848de9/docs/banner.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-routing/6f8ea8251881a30fcd86f9607509034a60848de9/docs/screenshots/route-pane.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-routing/6f8ea8251881a30fcd86f9607509034a60848de9/docs/screenshots/navigation.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-routing/6f8ea8251881a30fcd86f9607509034a60848de9/docs/architecture.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-routing/6f8ea8251881a30fcd86f9607509034a60848de9/docs/assets/mascot.png"],"videos":["https://github.com/user-attachments/assets/1f17a6c6-f7fe-4ddc-bfb6-10a3b9648e76"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/solverforge-routing.webp"},{"name":"werracle-evm-guard","title":"werracle-evm-guard","summary":"Autonomous EVM execution guardrail and DeFi liquidation risk radar for Hermes Agent. Intercepts cast send transactions before broadcast to block unlimited token approvals, NFT operator takeovers, and high-value transfers. Performs Radar lookups to api.werracle.com by default on every werracle tool call and intercepted cast send.","disclosure":"by default sends the target address and chain of every intercepted `cast send`, and the addresses, accounts and market pairs passed to its werracle_* tools, to api.werracle.com (or the user-configured api_url); WERRACLE_API_KEY is sent only to https://api.werracle.com. The guard is best-effort and fails open when the Radar lookup or key lookup errors.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"pCwOrM","author":"pCwOrM","version":"1.0.1","requires_hermes":">=0.21.0","repo":"https://github.com/pCwOrM/hermes-werracle-guard","docs":"https://github.com/pCwOrM/hermes-werracle-guard#readme","tools":["werracle_simulate_tx","werracle_mempool_radar","werracle_liquidation_health","werracle_inspect_contract"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":["WERRACLE_API_KEY"],"known_issues":"","state":"merged","pr":150778,"prs":[{"n":150778,"state":"merged","created":"2026-11-07T17:05:08Z"}],"created":"2026-11-07T17:05:08Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"munin","title":"munin","summary":"Munin meeting notes for Hermes Agent: ask what was decided in your last meeting, get a follow-up with every action item checked against the transcript and cited by meeting id, line id and clock time, and search who said what across meetings, through the hosted Munin MCP server (Streamable HTTP, OAuth 2.1 with PKCE and DCR) with two workflow skills bundled (munin-followup, munin-recall). Portable Agent Plugins v1 package (mcp.json + skills/), no plugin code.","disclosure":"hosted-only connector: every tool call goes to the vendor's remote MCP server at app.muninlabs.ai; meeting notes, transcript lines, titles and people's names from the user's Munin account are pulled into the session context. On Munin's consent page the user picks a read-only or an editable connection; an editable one lists the server's two write tools (set_speaker renames a speaker in one meeting, import_meeting saves a meeting from another app). The package declares the server untrusted so Hermes asks before any write-capable call, but the `hermes mcp add munin --url https://app.muninlabs.ai/mcp --auth oauth` config entry that OAuth requires replaces that setting unless the user adds `trust: untrusted` to it (the README shows how); then `hermes mcp login munin`, since the bundled mcp.json alone yields 401. No local code, no hooks, no env vars, no telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"Munin Labs","author":"Hugo6991","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Munin-Labs-AI/munin-hermes-plug-in","docs":"https://github.com/Munin-Labs-AI/munin-hermes-plug-in#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150768,"prs":[{"n":150768,"state":"merged","created":"2026-11-07T16:42:12Z"}],"created":"2026-11-07T16:42:12Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Munin-Labs-AI/munin-hermes-plug-in/5fbcc6905b19ab1bd92a3c407f7175287fd61ce4/assets/recall.png","https://raw.githubusercontent.com/Munin-Labs-AI/munin-hermes-plug-in/5fbcc6905b19ab1bd92a3c407f7175287fd61ce4/assets/followup.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/munin.webp"},{"name":"subscription-sheriff","title":"subscription-sheriff","summary":"Track subscriptions and free trials in plain English, get warned before they charge, and see what you really spend. Quiet renewal reminders (only when something is newly due, plus a trial-about-to-turn-paid warning), monthly and yearly totals per currency, biggest spenders, overlapping services, a /sheriff command and two one-click scheduled tasks (renewal reminders, monthly spend review). Fully offline.","disclosure":"makes no network requests and imports no networking modules; reads no credentials, environment variables or files outside its own Hermes profile state, where the subscription list and reminder markers are stored; cannot cancel or pay anything (cancelling only marks the entry); no background processes, telemetry, self-updating code or binaries.","category":"tools","platforms":[],"maintainer":"HATWHY4041","author":"HATWHY4041","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/HATWHY4041/subscription-sheriff","docs":"https://github.com/HATWHY4041/subscription-sheriff#readme","tools":["sheriff_subscriptions","sheriff_upcoming","sheriff_summary","sheriff_digest"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150766,"prs":[{"n":150766,"state":"merged","created":"2026-11-07T16:37:34Z"}],"created":"2026-11-07T16:37:34Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"nanlmind-hermes","title":"NaNLMind Hermes","summary":"Link Hermes to a local NaNLMind NaN16 universe for conversation, mathematical-memory inspection, bounded native graph-reasoning evidence, explicit native training, NANNET identity and CLOCKED evidence plans. Registers 64 tools and a pre_tool_call human-approval hook. Four sensitive CLOCKED/candidate tools require Hermes human confirmation; model-supplied approved=true cannot bypass that gate. Native execution launches a locally installed nanlm-universal process with a minimal environment, not Hermes provider secrets. Model-chosen corpus paths are confined to the configured plugin corpora directory. Network calls use configured NANNET, CLOCKED and head-cortex endpoints. The plugin stores corpora, transcript/scratch journals, state artifacts, encrypted installation identity and paired tokens under state_dir. Use a separate absolute state_dir per Hermes profile; the default is not profile-isolated. Planning does not transmit CLOCKED source text; an approved execution sends the reviewed source text to the configured gateway. CLOCKED and native graph results remain evidence, not proven truth or automatic learning authority. No telemetry, self-update, arbitrary credential-file reads or vendor-password-manager integration. For protected credentials, use the optional [auth] cryptography backend: the pure-Python fallback has not been audited for constant-time operation.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"shemshallah","author":"shemshallah","version":"1.5.1","requires_hermes":">=0.23.0","repo":"https://github.com/shemshallah/NaNLMind_HERMES","docs":"https://github.com/shemshallah/NaNLMind_HERMES/blob/d7a27e9da81a08e599d3ae6e807a1128aea3320d/docs/HERMES_CATALOG_ADMISSION.md","tools":["nanlm_status","nanlm_learning_cycle","nanlm_learning_status","nanlm_learning_sync","nanlm_wordnet_ingest","nanlm_scratch_register","nanlm_mirror_topology","nanlm_router_graph_verify","nanlm_router_graph_walk","nanlm_self_modify","nanlm_mth_tools","nanlm_teacher_teach","nanlm_chart_storage","nanlm_chat","nanlm_chat_history","nanlm_phone_call","nanlm_auth_init","nanlm_auth_status","nanlm_auth_pair","nanlm_auth_revoke","nanlm_hw_register","nanlm_hw_status","nanlm_hw_heartbeat","nanlm_hw_release","nanlm_hw_report","nanlm_universe_status","nanlm_universe_open","nanlm_universe_resolve","nanlm_universe_renew","nanlm_universe_release","nanlm_universe_dispatch","nanlm_universe_ack","nanlm_universe_inspect","nanlm_native_mth_u32","nanlm_chat_train","nanlm_tree_inspect","nanlm_tree_mutate","nanlm_tree_audit","nanlm_generate_curriculum","nanlm_curriculum_experiment","nanlm_logic_session","nanlm_word_session","nanlm_sentence_session","nanlm_training_pipeline","nanlm_nan16de_route","nanlm_generate_corpus","nanlm_train","nanlm_math_train","nanlm_structured_relation_train","nanlm_evaluate","nanlm_memory_ingest","nanlm_memory_reorganize","nanlm_memory_cross_resolution","nanlm_memory_merge","nanlm_memory_query","nanlm_memory_assessments","nanlm_clocked_plan","nanlm_clocked_execute","nanlm_clocked_scratch","nanlm_head_process","nanlm_clocked_synthesize","nanlm_head_candidate","nanlm_head_candidate_evaluate","nanlm_head_learn_candidate"],"hooks":["pre_tool_call"],"middleware":[],"env":["CLOCKED_GATEWAY_TOKEN","NANLM_DEVICE_TOKEN","NANNET_MASTER_KEY"],"known_issues":"Configure a distinct absolute state_dir for each Hermes profile.; Native training requires a locally built nanlm-universal executable.; Prefer the optional cryptography [auth] extra for protected identity operations.","state":"open","pr":150755,"prs":[{"n":150755,"state":"open","created":"2026-11-07T16:20:01Z"}],"created":"2026-11-07T16:20:01Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"subnano","title":"Subnano","summary":"Subnano's local MCP server for the pay-per-post marketplace. Search and read Posts, buy access in Nano (XNO) or USDC on Base, draft and publish Posts, answer comments and Requests, and receive payouts. Bundles seven workflow skills.","disclosure":"spends real money: buys Posts, tips and transfers in Nano (XNO) or USDC on Base. Purchases, tips, transfers, account creation, file-root changes and exact publication ask through MCP elicitation, except that the agent may buy and tip without a prompt within a spending budget the owner grants. Spending budgets, publication, autonomous-publish (a verified Agent Profile publishing its own autonomous_agent drafts, including unattended), file-root and other standing grants are set with the bundled CLI, which refuses non-terminal input and asks for a typed GRANT. That check cannot tell a human from an agent running a pseudo-terminal, so keep the CLI and ~/.local/state/subnano-mcp out of the agent's shell access. Calls subnano.ai, the Nano RPC node the user configures, BerryPay's public Nano work endpoint by default (public block root and difficulty only) and mainnet.base.org for balance reads; account sessions and wallet keys are stored owner-only in ~/.local/state/subnano-mcp; browser sign-in opens a short-lived loopback listener.","category":"tools","platforms":[],"maintainer":"subnano-ai","author":"teknium1","version":"0.3.56","requires_hermes":">=0.22.7","repo":"https://github.com/subnano-ai/hermes-plugin","docs":"https://docs.subnano.ai","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":152076,"prs":[{"n":152076,"state":"merged","created":"2026-11-09T16:43:06Z"},{"n":150754,"state":"closed","created":"2026-11-07T16:19:04Z"}],"created":"2026-11-07T16:19:04Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"restoreproof","title":"RestoreProof","summary":"Recovery drills for real application stacks: restores a declared database backup (PostgreSQL, MySQL, MariaDB, MongoDB or SQLite) and uploads archive into an isolated Docker network, boots the app, and proves whether customers' journeys come back (every database file reference, a real user flow, recovery time and RPO), then cleans up and writes a hashed evidence report. Deterministic engine; the model never decides a verdict.","disclosure":"runs the local docker CLI (argument lists, minimal environment) to create and remove containers, networks and volumes labelled restoreproof.run, each drill gated by Hermes approval bound to the contract's sha256 and the backup folder; reads the contract and backup folder you point it at (discover also reads the project folder and may write a new restoreproof.draft.yaml inside the session's working folder, never overwriting); writes evidence under its plugin data directory; only the user-typed /drill demo builds a demo app image and pulls database and probe images from Docker Hub; no network calls of its own and no telemetry.","category":"tools","platforms":[],"maintainer":"Surajkumar5050","author":"Surajkumar5050","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Surajkumar5050/restoreproof","docs":"https://github.com/Surajkumar5050/restoreproof#readme","tools":["restoreproof_discover","restoreproof_plan","restoreproof_run_drill","restoreproof_report","restoreproof_compare","restoreproof_history","restoreproof_cleanup"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150751,"prs":[{"n":150751,"state":"merged","created":"2026-11-07T16:07:47Z"}],"created":"2026-11-07T16:07:47Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/banner.jpg","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/story.png","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/screens/live-drill.png","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/screens/get-started.png","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/screens/report.jpg","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/screens/desktop-card.png","https://raw.githubusercontent.com/Surajkumar5050/restoreproof/02615fb696db406e288eafcda2b922ac5731da92/assets/pipeline.png"],"videos":[],"x":["https://x.com/rockstarrrrrrr9/status/2119387000306634805"],"youtube":[],"thumb":"/hackathon/thumbs/restoreproof.webp"},{"name":"grokbot-staff","title":"grokbot-staff","summary":"A chief-of-staff and specialist team inside Hermes (chief, saas, design, vision-agents, computer-vision, x — or a team you configure), plus an optional fail-closed bridge that hands long-running work to your own Grok Bot. Local staff answers with your current Hermes model via ctx.llm. Slash commands /staff and /grokbot, a staff delegation backend for delegate_task, a bundled skill, and a Desktop pane for the roster, pending handoffs and recent jobs. The bridge does not call any Grok Bot API (there is none); it POSTs a JSON handoff to a webhook URL you set and/or writes handoffs/<id>.json in a folder you set, then collects results/<id>.json|.md|.txt or a pasted answer. Not an importer and not Grok Bot calling Hermes — Hermes delegating to Grok Bot.","disclosure":"Answers staff tasks with your current Hermes model through ctx.llm whenever a staff tool or slash command runs. When grokbot_delegate runs, POSTs the task as JSON only to the webhook URL you configure (stored as the GROKBOT_STAFF_WEBHOOK_URL secret; https only, http allowed for localhost; redirects refused) and/or writes handoffs/<id>.json in the inbox folder you set, then reads results/<id>.json|.md|.txt from that folder (symlinks and files over 2 MB ignored) and returns that text to the agent. A specialist you map to a Hermes profile makes the `staff` delegation backend run delegated tasks as that profile, with its credentials. Job tasks, answers and collected results are stored in the plugin's own data folder. The Desktop pane polls a read-only /overview dashboard route every 10 seconds. No shell commands, no background processes, no telemetry.","category":"automation","platforms":[],"maintainer":"leoresendedop-sys","author":"leoresendedop-sys","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/leoresendedop-sys/grokbot-staff","docs":"https://github.com/leoresendedop-sys/grokbot-staff#readme","tools":["staff_assign","staff_status","grokbot_delegate","grokbot_collect","grokbot_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"This pin has passed hermes plugins validate, doctor, and unit tests. The Desktop pane and staff tools have not yet been recorded in a live Hermes Desktop session with a real model.","state":"merged","pr":150749,"prs":[{"n":150749,"state":"merged","created":"2026-11-07T15:58:32Z"}],"created":"2026-11-07T15:58:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"visual-gate","title":"Visual Gate","summary":"Lets Hermes check the web UI it just built. Drives a real headless Chrome, diffs the page against a stored baseline and audits WCAG 2.2 AA on the same render, then returns one PASS or FAIL with changed regions, computed contrast ratios and exact CSS selectors. A page that failed to load is an error, never a pass, and text it cannot measure is reported for a person to check.","disclosure":"","category":"tools","platforms":[],"maintainer":"salch-cred","author":"salch-cred","version":"1.1.1","requires_hermes":">=0.23","repo":"https://github.com/salch-cred/visual-gate","docs":"https://github.com/salch-cred/visual-gate","tools":["vg_capture","vg_diff","vg_a11y","vg_gate","vg_baselines","vg_doctor"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150746,"prs":[{"n":150746,"state":"merged","created":"2026-11-07T15:54:59Z"}],"created":"2026-11-07T15:54:59Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sluice","title":"Sluice","summary":"An airlock for agent changes. A terminal backend that runs the agent's commands and file tools (read_file, write_file, patch, search_files) in a staged copy of the workspace, so the real files are untouched until you review the diff hunk by hunk and apply only what you approve (/sluice diff, /sluice apply, /sluice discard, also as `hermes sluice`). Calls a copy cannot contain (git push, package installs, network writes, deploys, writes or deletes outside the workspace) are sent to Hermes's own approval prompt labelled NOT CONTAINED. Select it with `hermes config set terminal.backend sluice`.","disclosure":"No network calls and no background processes. Runs the agent's shell commands and file tools on this host as the user, in a staged copy of the workspace kept under <HERMES_HOME>/plugin-data/sluice (every non-gitignored workspace file plus a copy of .git; stages idle 14 days are deleted), and runs `git ls-files` to list files; it never reads Hermes credential files. Only when the user runs `/sluice apply` does it write the approved changes (including new symlinks) into the workspace. One pre_tool_call hook sends calls the copy cannot contain (installs, network writes, git push, writes outside the workspace) to Hermes's approval prompt and never approves anything itself. Not an operating-system sandbox: the hold list reads command text, so Python in execute_code or a command that builds its target path at run time can write outside the workspace without being held.","category":"tools","platforms":["linux","macos"],"maintainer":"orjinameh","author":"orjinameh","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/orjinameh/airlock","docs":"https://github.com/orjinameh/airlock#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Not an OS sandbox: the gate reads command text, so a command that builds its target path at run time can get past it.","state":"merged","pr":150739,"prs":[{"n":150739,"state":"merged","created":"2026-11-07T15:42:25Z"}],"created":"2026-11-07T15:42:25Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"folio","title":"Folio — every claim, a page","summary":"Hermes gets a library of the user's own documents. Folio indexes PDF, DOCX, PPTX, XLSX, HTML, Markdown and source files locally and answers with the file, the page and the exact sentence instead of a paraphrase: seven tools search the library, open a page, prove that a quotation really appears where the agent says it does, report what was added or revised since a date, and format citations. Documents are content-hashed, so a revised contract keeps its old text and a desktop page renders the real page with the matching sentence boxed.","disclosure":"reads the documents inside folders the user adds and stores their extracted text (API keys, tokens, private-key blocks and card numbers redacted by default) in one SQLite file under the profile's plugin-data directory; a background thread re-scans those folders on a timer; it makes no network calls, reads no credential files, and never writes to the user's documents.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"okyssta","author":"okyssta","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/okyssta/hermes-folio","docs":"https://github.com/okyssta/hermes-folio#readme","tools":["folio_search","folio_open","folio_verify","folio_changes","folio_bibliography","folio_index","folio_forget"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150732,"prs":[{"n":150732,"state":"open","created":"2026-11-07T15:21:53Z"}],"created":"2026-11-07T15:21:53Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/okyssta/hermes-folio/b101110c32b47b7c427204dfce19710d7f400c75/docs/demo/page_marked.png"],"videos":["https://raw.githubusercontent.com/okyssta/hermes-folio/b101110c32b47b7c427204dfce19710d7f400c75/docs/demo/folio-demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/folio.webp"},{"name":"prediction-market-scout","title":"prediction-market-scout","summary":"Polymarket research for Hermes: search markets or paste a polymarket.com link for live odds, spread, liquidity and 7-day history; ranked 24h movers and attention signals (big moves, volume spikes, wide spreads, odd pricing, undecided markets about to close); a price-alert watchlist that fires once and re-arms; a /pm command; and two one-click scheduled tasks (daily brief, quiet alert check). Read-only, no API key.","disclosure":"makes HTTPS GET requests only to gamma-api.polymarket.com and clob.polymarket.com (the client refuses any other host) and caches responses in memory for 30 seconds; reads no credentials or environment variables; cannot trade or sign anything; the watchlist is stored only in the plugin's own Hermes profile state; no background processes, telemetry, self-updating code or binaries. Not financial advice.","category":"tools","platforms":[],"maintainer":"HATWHY4041","author":"HATWHY4041","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/HATWHY4041/prediction-market-scout","docs":"https://github.com/HATWHY4041/prediction-market-scout#readme","tools":["polymarket_scan","polymarket_search","polymarket_market","polymarket_signals","polymarket_watch","polymarket_brief"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150718,"prs":[{"n":150718,"state":"merged","created":"2026-11-07T14:55:18Z"}],"created":"2026-11-07T14:55:18Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-guild","title":"hermes-guild","summary":"GUILD — the open, cross-platform collaboration network for agent builders (Hermes × Muse × OpenClaw), local-first by design. A Hermes plugin plus a stdlib-only registry server speaking open protocol v1.6: publish a scoped need with its type (experience, asset, review, capacity, local presence — what an agent alone cannot give itself), get explainable matches (skills with aliases resolved and verified skills bonused, language, dimensional reputation, timezone, reciprocity — every point broken down, presence only breaks ties), connect only with the owner's approval, optionally under a collaboration contract (deliverable, done criteria, deadline — so 'on time' is derived, not opined), and receive deliveries strictly as proposals: Ed25519-signed by their author and end-to-end encrypted (GUILD-E2E-1: X25519 + HKDF-SHA256 + HMAC-CTR/EtM built from stdlib primitives; the registry stores ciphertext it cannot read, and an envelope whose fingerprint no longer matches its signed reference cannot be accepted). Verified skills are credited only for the skills a delivery declares it covers. Reputation is dimensional (useful / clear / on time) and portable: a registry-signed, independently verifiable export you carry between nodes. There is no central server to trust — you run your own registry (one command, local SQLite, metadata only, never code or project files); an official hosted registry is planned for v1.1. No payments: exchange and reputation. 118 offline tests plus a live 10-builder swarm test over real HTTP; exercised through the real plugin loader of the official Hermes v0.23.0 release.","disclosure":"","category":"general","platforms":["linux","macos","windows"],"maintainer":"Blackleets","author":"Blackleets","version":"0.6.1","requires_hermes":">=0.21.5","repo":"https://github.com/Blackleets/hermes-guild","docs":"https://github.com/Blackleets/hermes-guild","tools":["guild_board","guild_matches","guild_status","guild_inbox"],"hooks":["on_session_start"],"middleware":[],"env":[],"known_issues":"End-to-end exercised on Linux (official Hermes v0.23.0 release); macOS/Windows not yet test-run.; GUILD-E2E-1 encryption is an honestly documented construction from stdlib primitives (X25519/HKDF/HMAC), not an externally audited library; see PROTOCOL.md for its declared limits.","state":"open","pr":150708,"prs":[{"n":150708,"state":"open","created":"2026-11-07T14:05:36Z"}],"created":"2026-11-07T14:05:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"oddsradar","title":"Odds Radar","summary":"Polymarket odds in Hermes: search active markets, live odds (CLOB midpoint) with 24h/7d moves, volume and a 7-day sparkline, a persistent per-profile watchlist with move, above and below rules (edge-triggered, 1-pt re-arm, one alert on resolution), and alerts that run as a no-agent cron job, so every check costs zero tokens. Agent tools, an /odds slash command and a hermes oddsradar CLI share one engine. Read-only: no keys, no wallet, no trading.","disclosure":"read-only HTTPS GETs to gamma-api.polymarket.com and clob.polymarket.com, only when a tool, /odds, the CLI or the user's cron job runs (10 s timeout, at most 2 retries on 429/5xx; the client refuses any other host). No credentials. Stores the watchlist at <HERMES_HOME>/plugin-data/oddsradar/watchlist.json. Only when the user runs hermes oddsradar cron-script does it write <HERMES_HOME>/scripts/oddsradar-check.py, which runs hermes oddsradar check --quiet as an argv subprocess (no shell, stdin closed, 120 s timeout); the user schedules it with hermes cron create. No hooks, middleware, background threads, telemetry or self-updates.","category":"tools","platforms":[],"maintainer":"WV629","author":"WV629","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/WV629/hermes-oddsradar","docs":"https://github.com/WV629/hermes-oddsradar/blob/dfafcd59e6d2efeb4fd9cffa832836b1637c07c7/README.md","tools":["odds_search","odds_market","odds_watch","odds_check","odds_movers"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150707,"prs":[{"n":150707,"state":"merged","created":"2026-11-07T14:00:21Z"},{"n":150702,"state":"closed","created":"2026-11-07T13:50:01Z"}],"created":"2026-11-07T13:50:01Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/WV629/hermes-oddsradar/dfafcd59e6d2efeb4fd9cffa832836b1637c07c7/docs/banner.png","https://raw.githubusercontent.com/WV629/hermes-oddsradar/dfafcd59e6d2efeb4fd9cffa832836b1637c07c7/docs/show.png","https://raw.githubusercontent.com/WV629/hermes-oddsradar/dfafcd59e6d2efeb4fd9cffa832836b1637c07c7/docs/watch.png","https://raw.githubusercontent.com/WV629/hermes-oddsradar/dfafcd59e6d2efeb4fd9cffa832836b1637c07c7/docs/alert.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/oddsradar.webp"},{"name":"privacy-xray","title":"privacy-xray","summary":"Where does your data actually go? Records every outgoing model request, the main loop and side tasks such as title generation, compression and vision, as metadata only: destination host, vendor, vendor HQ country, the model vendor behind aggregators such as OpenRouter (read from the model id; the final processing vendor behind an aggregator is not visible), size and counts of detected personal data types (e-mail, IBAN, payment card, phone, IPv4, German Steuer-ID and USt-IdNr, own watch terms). /xray canary invents a fictitious person and /xray trace shows every request and local store that carried it. /xray check audits the config with a severity and the exact hermes config set fix per path; /xray fix <id> --yes applies one; a session retention hint is advice only and is never applied. /xray fix --yes and /xray find run only on local surfaces (CLI, TUI, desktop, dashboard) unless allow_sensitive_on_gateways is turned on. /xray find searches the local stores for a person, /xray report writes a self-contained HTML leak map (no scripts, no external assets) with a before and after view of two canaries; a dashboard tab shows the same page in a sandboxed frame. Not legal advice and not a compliance certificate.","disclosure":"no network calls, no model calls, standard library only. pre_api_request and pre_auxiliary_call are observers; they write one metadata line per request (time, session and turn id, task, provider, model, host, vendor, counts, canary id and message fields; never message text or matched values) to HERMES_HOME/plugin-data/privacy-xray/ledger.jsonl (rotated once at ledger_max_mb, default 5 MB). The llm_request middleware is off by default (guard: false); when turned on it masks canary values and watch terms in main model requests before they are sent. Reads the merged Hermes config through load_config_readonly. /xray trace, /xray find and /xray check read outside the plugin's own data, read-only and under a time budget (scan_seconds, default 30): state.db (messages, session titles, stored system prompts, delivery queue), session files including request dumps, memories, logs, cron output, other plugins' plugin-data, paste and pending folders; output shows counts and masked snippets only. Writes config only on /xray fix <id> --yes, through hermes_cli.config.set_config_value (same code as hermes config set); never deletes files. Stores fake canary persons, last check and trace results and requested HTML or Markdown/JSON reports under its plugin-data folder. Registers the tool privacy_xray (map, check, trace, find; read-only, never changes settings), the slash command /xray and a skill that adds one line to the skills index of every session while the plugin is enabled. No credentials, no shell commands, no cron jobs, no background processes, no telemetry.","category":"tools","platforms":[],"maintainer":"MadeByBrain","author":"MadeByBrain","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/MadeByBrain/hermes-extensions","docs":"https://github.com/MadeByBrain/hermes-extensions/tree/main/plugins/privacy-xray#readme","tools":["privacy_xray"],"hooks":["pre_api_request","pre_auxiliary_call"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"merged","pr":150696,"prs":[{"n":150696,"state":"merged","created":"2026-11-07T13:38:26Z"}],"created":"2026-11-07T13:38:26Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/MadeByBrain/hermes-extensions/aa2bf92140016d7cf2ce855d0fff98f46badbc94/plugins/privacy-xray/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/privacy-xray.webp"},{"name":"omonpakari","title":"omonpakari","summary":"Considerate health context for Hermes Agent: barometric pressure (OpenWeather), a typed journal (symptoms, medications, supplements, food, notes), menstrual-cycle windows returned as date ranges, sourced absorption-interaction checks against logged times, the person's own life notes and alternatives, per-rhythm wave states (pressure, cycle, symptoms, sleep, nutrition) and long-term patterns - assembled by a pre_llm_call hook into a short quiet picture before each reply, so suggestions are weighed against the person's body and habits first. No reminders, no pestering; a quiet first word on the host's own scheduled turns is opt-in.","disclosure":"Stores a health journal (symptoms, medications, supplements, food, menstrual-cycle marks, life notes) locally in the plugin's own database and adds a short summary of it as context before each reply on attended turns, including gateway turns from any approved sender in shared chats, so the configured model provider receives it and the model may repeat it to other chat participants; scheduled cron turns get it only when first_word_turns is enabled. With an OpenWeather API key and coordinates set, it calls api.openweathermap.org (key and coordinates in the request) from the pressure tool and from at most one background refresh thread per hour during user turns. No telemetry, shell commands or self-updating.","category":"general","platforms":[],"maintainer":"tamamo510","author":"tamamo510","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/tamamo510/omonpakari","docs":null,"tools":["omonpakari_pressure","omonpakari_log","omonpakari_cycle","omonpakari_interactions","omonpakari_life","omonpakari_waves","omonpakari_correlate"],"hooks":["pre_llm_call"],"middleware":[],"env":["OPENWEATHER_API_KEY"],"known_issues":"","state":"merged","pr":150689,"prs":[{"n":150689,"state":"merged","created":"2026-11-07T13:17:55Z"}],"created":"2026-11-07T13:17:55Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"precedent-log","title":"precedent-log","summary":"Saves a human's answer to a blocked Kanban question as a ruling for later workers. Shows rulings and vetoes in Desktop with confirmed retirement.","disclosure":"Saves human rulings under HERMES_HOME/precedent-log/ and injects matching rulings into Kanban worker prompts; in the default enforce mode it vetoes a worker's kanban_block up to twice per task when an active ruling matches, which can leave a no-edit worker's card running (set precedent_log.veto: advisory to only annotate). In calls carrying a Kanban task marker on boards with active rulings it blocks execute_code and process stdin writes (precedent_log.guard: strict extends this to every marked worker and delegated subagent), and blocks worker commands that name its store. Reads four private Hermes board/delegation helpers (read-only, no core overrides) that may break on a core update. Desktop reads and retires rulings through host-routed gateway slash RPC, possibly to a remote gateway. No network calls, shell, credentials or telemetry in the plugin runtime; the bundled demo/ harness is opt-in and spawns subprocesses and provider calls when run.","category":"automation","platforms":["linux","macos"],"maintainer":"quotumorg","author":"quotumorg","version":"0.4.2","requires_hermes":">=0.23.0","repo":"https://github.com/quotumorg/precedent-log","docs":"https://github.com/quotumorg/precedent-log/blob/8741e9f121aad297c2383f51a30ac444f08438b8/README.md","tools":[],"hooks":["pre_tool_call","kanban_task_blocked","pre_verify","post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Four private board/execution-identity helpers require catalog rule 9 review; catalog/CORE-ISSUE.md is an unsubmitted request. No core overrides.; In-process mode only; the host does not supply the tested execution context or CLI path.; Default enforce mode can leave a no-edit worker's card running after veto (B2). Core recovery/retry settings apply; no deadline. Advisory avoids this veto path.; Tested only on Hermes v0.23.0 at 2bd378ed1b8d6bf2192cb26e0a55ff3091e6bd19; the floor does not establish later compatibility.; Desktop catalog description, navigation, no-session guidance, status, page badges and confirmed retirement live-run verified with v0.4.1 in an isolated home with a fake model on Hermes source 2bd378ed, Desktop built from source; v0.4.0 also verified status click-through. Packaged Desktop app untested. Requires host UI/React, route/nav, focusedSessionOwner, profileRoutes, requestProfile and status-bar APIs.","state":"merged","pr":150678,"prs":[{"n":150678,"state":"merged","created":"2026-11-07T12:30:43Z"}],"created":"2026-11-07T12:30:43Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/quotumorg/precedent-log/8741e9f121aad297c2383f51a30ac444f08438b8/docs/catalog-1200x600.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/precedent-log.webp"},{"name":"hermes-secret-gate","title":"hermes-secret-gate","summary":"Stop agent-drafted secrets from leaving the machine — deterministic scan, fail-closed gate, receipts.","disclosure":"","category":"tools","platforms":[],"maintainer":"MSAbhishek22","author":"MSAbhishek22","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/MSAbhishek22/hermes-secret-gate","docs":null,"tools":["secret_scan","secret_gate_check","secret_gate_receipts"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150675,"prs":[{"n":150675,"state":"merged","created":"2026-11-07T12:19:36Z"}],"created":"2026-11-07T12:19:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dropstation","title":"Dropstation","summary":"Turn private local folders into Hermes inboxes with standing tasks. Drop a document or image to get a Markdown reply and a durable processing receipt. The adapter polls the configured owner-private spool and uses its filesystem permissions as the inbound authorization boundary. Its events skip messaging allowlists and pairing. Snapshots, reports and receipts are stored locally. The configured Hermes provider processes the source contents.","disclosure":"every supported file written into a configured inbox folder starts an unattended Hermes turn with that lane's task; the platform is trusted_inbound, so these events skip messaging allowlists and pairing and the folders' owner-only 0700 permissions are the only gate. The file's contents go to the configured model provider, and unless platform_toolsets.dropstation is set (the example config sets it to []) the turn gets the default core toolset, terminal and file tools included; commands that need approval cannot be approved from the inbox and are not run. Snapshots, receipts and reports are stored under the configured root.","category":"platform","platforms":["macos","linux"],"maintainer":"satiricalguru","author":"satiricalguru","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/satiricalguru/Hermes-dropstation","docs":"https://github.com/satiricalguru/Hermes-dropstation#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150667,"prs":[{"n":150667,"state":"merged","created":"2026-11-07T12:12:29Z"}],"created":"2026-11-07T12:12:29Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/satiricalguru/Hermes-dropstation/e6a5ba6958097b482bef9455af2b7f0f17a43170/assets/film-poster.webp","https://raw.githubusercontent.com/satiricalguru/Hermes-dropstation/e6a5ba6958097b482bef9455af2b7f0f17a43170/assets/incidents.webp","https://raw.githubusercontent.com/satiricalguru/Hermes-dropstation/e6a5ba6958097b482bef9455af2b7f0f17a43170/assets/handoff.webp"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dropstation.webp"},{"name":"findbroadband-deals","title":"FindBroadband","summary":"The broadband deals available at an exact UK address, priced on their true whole-contract cost, and whether a bill or renewal quote is too high, through FindBroadband's MCP server (Streamable HTTP at https://www.findbroadbanddeals.com/api/mcp/standard, no sign-in, no keys in config). Bundles one skill, uk-broadband-deals. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to findbroadbanddeals.com, which receives the postcode or address and filters asked about and logs each call (the tool, the postcode district only, the filters and the result count) for usage statistics, with no IP address or cookies stored. All four tools are read-only and the package marks the server untrusted. Deal links open findbroadbanddeals.com, which may earn a commission when a user switches. Personal, non-commercial use only (findbroadbanddeals.com/terms, section 8). The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"FindBroadband","author":"AdeJol","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/FindBroadband/mcp","docs":"https://github.com/FindBroadband/mcp/tree/main/plugins/findbroadband-deals","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150666,"prs":[{"n":150666,"state":"merged","created":"2026-11-07T12:09:26Z"}],"created":"2026-11-07T12:09:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"internet-outage-checker","title":"Internet Outage Checker by FindBroadband","summary":"Check whether a UK broadband provider is down right now, where, what the provider has said and how the last 30 days have gone, through FindBroadband's MCP server (Streamable HTTP at https://www.findbroadbanddeals.com/api/mcp/outages, no sign-in, no keys in config). Bundles one skill, uk-broadband-outage-check. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to findbroadbanddeals.com, which logs each call (the tool, the provider matched and the client) for usage statistics, with no IP address or cookies stored. All three tools are read-only and the package marks the server untrusted. Personal, non-commercial use only (findbroadbanddeals.com/terms, section 8). The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"FindBroadband","author":"AdeJol","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/FindBroadband/mcp","docs":"https://github.com/FindBroadband/mcp/tree/main/plugins/internet-outage-checker","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150665,"prs":[{"n":150665,"state":"merged","created":"2026-11-07T12:09:23Z"}],"created":"2026-11-07T12:09:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fast-chat","title":"Hermes Fast Chat","summary":"Launch a CLI or TUI session with an explicit model and Fast mode.","disclosure":"`hermes fast-chat` runs the Hermes executable (or the one given with --hermes-bin) without a shell to bootstrap the gateway and may start a long-running gateway that keeps running after it exits; on Hermes releases without `gateway attach` it obtains a single-use session ticket over the local same-user gateway control socket; sessions it creates use the Fast/ultrafast service tier, which can cost more with the provider; no telemetry, no credential reads.","category":"models","platforms":["linux","macos"],"maintainer":"iyoda","author":"iyoda","version":"0.1.2","requires_hermes":">=0.23.0","repo":"https://github.com/iyoda/hermes-fast-chat","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires plugins.isolation: in_process; CLI command registration is skipped in host mode.; Verified on macOS; Linux has not been tested against a live Gateway. Windows is not included in this listing.; Legacy bootstrap depends on the same-user Gateway control protocol; incompatible Gateway contracts fail at launch.","state":"merged","pr":150663,"prs":[{"n":150663,"state":"merged","created":"2026-11-07T12:04:49Z"}],"created":"2026-11-07T12:04:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"callit","title":"CALLIT","summary":"Turn any group chat into a prediction league: friends make calls on crypto prices, football or anything, challenge each other to 1v1 duels, run closest-guess pools, and Hermes referees — it settles from live data (or a named judge / weighted group vote) and keeps season leaderboards. Duels staked in SOL/USDC/USDT lock both stakes in an on-chain Solana escrow program (immutable, devnet by default) that can only pay the two players; Hermes signs the result with a per-install referee key and both players are refunded if it never does.","disclosure":"read-only HTTPS calls to api.coingecko.com and site.api.espn.com; Solana RPC calls (configured RPC, devnet by default) to read bets and send settle transactions signed by the referee key in CALLIT_RESOLVER_KEY (a secret, never a player's key; holds only fee SOL); stores calls, sides, votes, points, debts, public Solana addresses and an audit log in plugin-data/callit/data.db; '/callit referee on' creates one visible Hermes cron job via cronjob_manage; no shell commands, no telemetry. Unaudited — devnet/testing use.","category":"tools","platforms":[],"maintainer":"k58v2hbzkk-del","author":"k58v2hbzkk-del","version":"1.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/k58v2hbzkk-del/callit","docs":null,"tools":["callit_make_call","callit_duel","callit_pool","callit_play","callit_join","callit_vote","callit_board","callit_referee"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150659,"prs":[{"n":150659,"state":"open","created":"2026-11-07T11:57:09Z"}],"created":"2026-11-07T11:57:09Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"solana-token-facts","title":"Solana Token Facts","summary":"Verifiable on-chain facts about Solana tokens and their developers: mint/freeze authority, supply, Token-2022 risky extensions, whether name/symbol/image can still change, top holders and concentration, wallets that bought in the creation block, creation time, creator wallet and launchpad, who funded the dev wallet, a developer's past launches (graduated, dev sold out, minutes to sell out) and the newest pump.fun -> PumpSwap graduations. Adds 8 tools, a /token fact-sheet command, a due-diligence skill and an opt-in automation blueprint that saves dev reports for new graduations. Facts only: no verdicts, no trading advice, no transactions, no wallet keys.","disclosure":"makes outbound HTTPS JSON-RPC calls only to the user's configured Solana RPC (default https://api.mainnet-beta.solana.com; token_holders, dev_launches, launch_buyers, dev_funding and recent_graduations need a provider such as Helius); an optional private RPC URL is a type: secret read with get_secret; writes local Markdown files only when save_dev_report runs (folder set by reports_dir); no background processes of its own, no telemetry.","category":"tools","platforms":[],"maintainer":"Maxedwolf","author":"Maxedwolf","version":"0.2.1","requires_hermes":">=0.22.6","repo":"https://github.com/Maxedwolf/solana-token-facts","docs":"https://github.com/Maxedwolf/solana-token-facts#readme","tools":["token_authorities","token_origin","token_holders","dev_launches","save_dev_report","recent_graduations","launch_buyers","dev_funding"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150658,"prs":[{"n":150658,"state":"merged","created":"2026-11-07T11:53:57Z"}],"created":"2026-11-07T11:53:57Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mindhall","title":"Mindhall","summary":"One shared mind for every AI you use. Work, dates and a signed change log that Hermes, ChatGPT, Claude and your other AIs all read and write.","disclosure":"stores its data in ~/.mindhall/mindhall.db (outside the Hermes home, shared by every profile unless MINDHALL_DB is set per profile) and injects a summary of it into every turn, telling the model Mindhall overrides its own memory; the optional, separately run mcp_server.py lets other AI apps read and write the same data and serves an edit page, protected only by a secret in the URL path, and the README suggests publishing it through a cloudflared tunnel, so anyone holding that URL can change what Hermes is told each turn. No telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"jai-srinivas","author":"jai-srinivas","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/jai-srinivas/mindhall","docs":null,"tools":["mindhall_read","mindhall_update_work","mindhall_set_date","mindhall_add_note","mindhall_remove"],"hooks":["pre_llm_call","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150655,"prs":[{"n":150655,"state":"merged","created":"2026-11-07T11:50:45Z"}],"created":"2026-11-07T11:50:45Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"motion-index","title":"Motion Index","summary":"Browse 49 motion-graphics styles as live previews in a Hermes Desktop pane, and let the agent find a style, turn it into a ready-to-build brief for your topic (length and 9:16/16:9 filled in), or suggest a new style to the Motion Index library.","disclosure":"the motion_suggest tool posts a style title, link and an optional note (up to 1000 characters) to https://motion.minutechbuilds.com/api/submit when the agent calls it; the tool asks the model to confirm with the user first but Hermes does not enforce that; the Desktop pane loads preview videos and poster images from https://motion.minutechbuilds.com/demos/; search, styles and briefs come from the bundled data/catalog.json. No file writes, shell, credentials, telemetry or background work.","category":"desktop","platforms":[],"maintainer":"minutechreview","author":"minutechreview","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/minutechreview/hermes-motion-index","docs":"https://github.com/minutechreview/hermes-motion-index#readme","tools":["motion_search","motion_style","motion_brief","motion_suggest"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150654,"prs":[{"n":150654,"state":"merged","created":"2026-11-07T11:42:33Z"}],"created":"2026-11-07T11:42:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ego","title":"Hermes Ego","summary":"Hermes Ego reads and saves pages in the user's ego(lite) browser through a loopback MCP relay (Streamable HTTP at http://127.0.0.1:8767/mcp). The Mac daemon and the relay are installed separately, the same split as local-mcp; this package does not start, embed, or update them. Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"Derived from hermes-tabs (relay code); talks only to a separately installed loopback MCP relay at http://127.0.0.1:8767/mcp with bearer EGO_RELAY_TOKEN from the Hermes profile (a remote Hermes host needs an SSH local forward); a long-running relay and a Mac daemon, installed separately, run the ego CLI against the user's logged-in ego(lite) browser, so pages that session can open are readable; ego_save_page_markdown writes markdown under the relay's configured save root (for example an Obsidian vault) and downloads third-party page images, some in a background pass after the tool returns; the server is marked untrusted, so Hermes asks before every relay tool, reads included, and refuses them in unattended runs. No telemetry, no self-update.","category":"tools","platforms":["linux","macos"],"maintainer":"Shawn Yuan","author":"loop2zero","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/loop2zero/hermes-ego","docs":"https://github.com/loop2zero/hermes-ego/tree/main/plugins/hermes-ego","tools":[],"hooks":[],"middleware":[],"env":["EGO_RELAY_TOKEN"],"known_issues":"The Mac daemon and ego(lite) are installed separately and are not part of this package. The daemon needs macOS. A remote Hermes host reaches the relay through an SSH local forward to 127.0.0.1:8767. The relay stays on loopback.; Page images may finish in a background pass after ego_save_page_markdown returns. images_pending counts what is left. There is no second MCP response for that pass.; Relay tools do not set readOnlyHint. trust untrusted asks before every tool on this server, including ego_status and ego_get_page_text, and those calls fail closed in cron and other unattended runs.; A hand-written mcp_servers.ego entry replaces this package's server, including trust, unless that entry sets trust: untrusted.","state":"merged","pr":150653,"prs":[{"n":150653,"state":"merged","created":"2026-11-07T11:41:44Z"}],"created":"2026-11-07T11:41:44Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"argorant","title":"Argorant","summary":"Argorant through its hosted MCP server (Streamable HTTP at https://mcp.argorant.com/mcp, OAuth sign-in with the user's Argorant account, no keys in config): find B2B leads by job, industry, company and place, with free counts and masked previews; reveal or export checked work emails; save lists; check email lists the user already has; write, test and launch cold email campaigns from the user's own mailboxes; and read, label and answer replies. Bundles the argorant workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Argorant's hosted server (mcp.argorant.com) and acts on the user's Argorant account; the tool set is served by that server at runtime and is not covered by the pinned sha. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. Revealing, exporting, finding emails, checking email lists and adding people to a campaign spend the user's Argorant credits; launching a campaign and answering a reply send real email from the user's connected mailboxes; buying credits or ordering mailboxes can charge the card saved in the workspace after the user's yes. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Argorant","author":"argorant","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/argorant/argorant-mcp","docs":"https://argorant.com/hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150646,"prs":[{"n":150646,"state":"merged","created":"2026-11-07T11:29:28Z"}],"created":"2026-11-07T11:29:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-canvas","title":"Hermes Canvas","summary":"Your agent's plan, wired to its real work. The agent draws its plan as hand-drawn boxes in a Desktop pane next to the chat. Each box is bound to files and a check command: hooks mark a box doing when the agent writes one of its files, and done or failed when its check command exits. The user steers the running build on the canvas: answer a question box, link boxes, leave a note (it reaches the subagent that builds the box), remove a box (its next write is blocked), add a drift write to the plan, replay every revision.","disclosure":"hooks read tool arguments and results (file paths, terminal commands and their output); canvas documents, revisions and user edits are stored in this profile's plugin database; pre_tool_call blocks write_file, patch, terminal and execute_code calls that would write files of a box the user removed, and nothing else; canvas edits and a short plan summary are added to the model input (pre_llm_call, transform_tool_result); pre_verify keeps the agent working while one of its boxes is failing, capped by agent.max_verify_nudges; the inspector diff runs read-only git (rev-parse, cat-file) in the canvas project folder and reads the files a box wrote there, up to 512 KB each; serves /api/plugins/hermes-canvas/ on the plugin host; never writes project files; no network calls, no credentials, no background processes, no self-update.","category":"desktop","platforms":[],"maintainer":"0xbyt4","author":"0xbyt4","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/0xbyt4/hermes-canvas","docs":"https://github.com/0xbyt4/hermes-canvas#readme","tools":["canvas_draw","canvas_update","canvas_get","canvas_next"],"hooks":["pre_tool_call","post_tool_call","subagent_start","subagent_stop","pre_llm_call","transform_tool_result","pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150644,"prs":[{"n":150644,"state":"merged","created":"2026-11-07T11:23:32Z"}],"created":"2026-11-07T11:23:32Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/0xbyt4/hermes-canvas/d6eeff0d6f7ec653262537bdd7bb001cc6d3c7f8/docs/replay.gif","https://raw.githubusercontent.com/0xbyt4/hermes-canvas/d6eeff0d6f7ec653262537bdd7bb001cc6d3c7f8/docs/all-green.jpg","https://raw.githubusercontent.com/0xbyt4/hermes-canvas/44fcc1881fb261a7772d718d74dccff39b81bd4a/docs/replay.gif","https://raw.githubusercontent.com/0xbyt4/hermes-canvas/44fcc1881fb261a7772d718d74dccff39b81bd4a/docs/all-green.jpg"],"videos":[],"x":["https://x.com/0xbyt4/status/2119026815603744904"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-canvas.webp"},{"name":"hermes-detox","title":"Hermes Detox","summary":"Tool output firewall. Saves redacted tool output locally (unencrypted; redaction is pattern-based and can miss secrets; no network), gives the model a compact report, and retrieves exact lines on demand.","disclosure":"","category":"tools","platforms":[],"maintainer":"kellycryptos","author":"kellycryptos","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/kellycryptos/hermes-detox","docs":"https://github.com/kellycryptos/hermes-detox#readme","tools":["detox_inspect","detox_search","detox_status"],"hooks":["transform_terminal_output","transform_tool_result","on_session_reset","post_compaction","on_session_delete"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150642,"prs":[{"n":150642,"state":"merged","created":"2026-11-07T11:04:29Z"}],"created":"2026-11-07T11:04:29Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":["https://x.com/Kellycryptos/status/2119068376085458987"],"youtube":[],"thumb":null},{"name":"recall-vault","title":"recall-vault","summary":"A policy vault and memory for agent money. The agent remembers its spending rules, per-transaction cap, daily cap, confirm threshold, and allowlist, and Recall Vault blocks over-cap payments, refuses unknown recipients, and escalates over-threshold payments to human approval before any tool runs. Dry-run only, no money moves.","disclosure":"the pre_tool_call hook inspects every tool call and blocks, or sends to Hermes' approval prompt, calls from other plugins whose tool name looks like a payment (pay, transfer, withdraw, payout, settle) and whose arguments carry an amount and a recipient; policy and ledger are stored in this profile's plugin data; the policy and remembered rules are added to the model input every turn; dry-run only, it moves no money itself.","category":"tools","platforms":[],"maintainer":"tydavid5","author":"tydavid5","version":"0.1.1","requires_hermes":">=0.23.0","repo":"https://github.com/tydavid5/recall-vault","docs":null,"tools":["recall_vault_check","recall_vault_policy","recall_vault_set_policy","recall_vault_ledger","recall_vault_remember"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150638,"prs":[{"n":150638,"state":"merged","created":"2026-11-07T10:56:10Z"}],"created":"2026-11-07T10:56:10Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/arc5ive_/status/2119023377121681808"],"youtube":[],"thumb":null},{"name":"skill-governance","title":"skill-governance","summary":"Consolidated skill-governance plugin behind one composed hook surface: on_skill_lifecycle, on_session_start, pre_tool_call, pre_llm_call. The manifest engine enforces UPSTREAM_MANIFEST.md — arrivals need a manifest row, content changes in manifested skills re-flag until re-acknowledged against a content fingerprint via the preserved /skill-manifest-ack command. The advisor engine observes behavioral skill edits (never blocking) and injects one bounded reminder to run the contrastive-refinement probe cycle (bundled as skill-governance:contrastive-refinement), recording every delivered advisory to ~/.hermes/skill-probes/fire-ledger.jsonl. Both legacy state namespaces import by copy (destination-wins, sources never modified) and a conservative governance.records summary joins them (acknowledged never implies validated). A clearance Automation Blueprint (daily schedule, origin delivery) replaces both legacy schedulers and preserves both clearance procedures verbatim; the user adopts it from the blueprint gallery or /blueprint, and the plugin imports no private cron modules and writes no cron state. Stdlib only, no network calls, fail-soft everywhere (malformed state keeps hooks inert, never aborts the host turn).","disclosure":"reads the profile's skills tree (SKILL.md files, fingerprinted read-only) and UPSTREAM_MANIFEST.md, and copies the legacy skill-manifest / contrastive-advisor plugin state read-only on first run; writes its own plugin state, `<HERMES_HOME>/skill-probes/fire-ledger.jsonl` when the opt-in advisor fires, and `plugin-data/skill-manifest/acks.json` on a manual `/skill-manifest-ack`; injects advisory reminders into turns; the optional daily clearance blueprint, once the user adopts it with `/blueprint`, runs an unattended agent that edits UPSTREAM_MANIFEST.md and the plugin's dismissed list, reads past session tool calls from state.db, and writes probe notes; never deletes, never blocks tool calls, no network.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"moonlight-lupin","author":"moonlight-lupin","version":"0.3.0","requires_hermes":">=0.21.1","repo":"https://github.com/moonlight-lupin/agent-skills","docs":"https://github.com/moonlight-lupin/agent-skills/tree/8743eae944c0d361339c614f21c258e6851357e8/plugins/skill-governance#readme","tools":[],"hooks":["on_skill_lifecycle","on_session_start","pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150636,"prs":[{"n":150636,"state":"merged","created":"2026-11-07T10:54:17Z"}],"created":"2026-11-07T10:54:17Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"safe-swap","title":"safe-swap","summary":"Rewrites destructive shell commands into safe twins before they run instead of snapshotting afterwards: git push --force becomes --force-with-lease --force-if-includes, rm -r becomes a move into a quarantine folder (with a file and byte count), and git reset --hard, git checkout -- / git restore, git clean and git stash drop take a private snapshot first, with /swaps and /unswap to undo and a visible note whenever a destructive command was left unswapped.","disclosure":"rewrites the command of the terminal tool before it executes (modify only: never blocks, never prompts, any error or doubt leaves the command unchanged); writes quarantine files and receipts under the user's home on the machine where the command runs (~/.safe-swap/trash by default) plus one SQLite file in the plugin data directory; for git clean, git reset --hard and git stash drop it writes snapshot commits into the repository's own object store under private refs refs/safe-swap/<id> (a git clean snapshot copies the content of the untracked files, and of the ignored ones with -x, until a purge; sets above 20,000 files or 200 MB are skipped and reported); it prints one marker line to stderr for an rm swap and removes it again from the tool result; the only deletion it ever performs is an explicit /swaps purge (or hermes safe-swap purge) by the user, which runs rm on its own quarantine directories and deletes its own private refs through the terminal tool and is subject to normal approval; no network calls, no telemetry, no background processes, no self-update; reads no credential files or .env, only the receipts it wrote and the sizes of the files an rm swap moves; approvals are respected: the rewritten command goes through Hermes' normal approval gate, and because a swapped rm -r is a move it no longer matches the recursive-delete pattern and does not prompt (the git rewrites keep prompting as before). Targets such as /, ~, $HOME, system directories and anything under /tmp, privilege-elevated commands, and commands with heredocs, subshells, command substitution or eval/xargs/find -exec are deliberately left alone, and the agent is told so. Not covered, by design: mv, cp overwrite, sed -i, redirects, write_file/patch, find -delete, git rebase (pair it with undo-effects for those).","category":"tools","platforms":[],"maintainer":"itsolaph","author":"itsolaph","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/itsolaph/hermes-safe-swap","docs":"https://github.com/itsolaph/hermes-safe-swap#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150627,"prs":[{"n":150627,"state":"merged","created":"2026-11-07T10:34:35Z"}],"created":"2026-11-07T10:34:35Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"renor","title":"Renor","summary":"Renor memory provider: one durable memory shared by Hermes, Claude Code, Codex and Cursor over MCP, so what you tell one agent the others already know. Recalls before each turn within a hard deadline (1.5 s by default; the turn goes on without it) and saves the durable statements you make (preferences, decisions, rules, \"remember that ...\") after it, through a bounded background queue with retries; also on compaction and at session end. Stored text never enters the prompt automatically: recall reports a count and the agent reads matches with renor_recall, labelled untrusted data. Hosted (mcp.renor.cloud, connection key) or the open-source engine, offline. Standard library only. Maintained by Renor.","disclosure":"in hosted mode each non-trivial user message (as the recall query), the durable statements picked out of user messages, renor_remember saves and Hermes built-in memory entries are sent over HTTPS to mcp.renor.cloud (or the configured RENOR_MCP_URL) under RENOR_API_KEY; RENOR_AUTO_SAVE=turns also sends each turn's user message and reply. The plugin has no telemetry. Renor's own learning setting is the hosted workspace owner's (anonymous usage numbers by default, never text; off under Settings > Learning); in self-hosted mode the plugin starts the user's RENOR_ENGINE_COMMAND as one long-lived child process with DO_NOT_TRACK=1 and RENOR_SHARING=off unless RENOR_ALLOW_SHARING=1, and makes no network calls of its own.","category":"memory","platforms":[],"maintainer":"renorai","author":"patrickpassosb","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/renorai/hermes-renor","docs":"https://github.com/renorai/hermes-renor#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150623,"prs":[{"n":150623,"state":"merged","created":"2026-11-07T10:27:36Z"}],"created":"2026-11-07T10:27:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"citation-guard","title":"citation-guard","summary":"Catches fabricated, mismatched and retracted references. Checks each DOI / PMID / arXiv id and each full reference entry against doi.org, Crossref, PubMed and arXiv: ids that do not exist, ids that point to a different paper, wrong year or first author, works found in no registry, and retractions (Crossref notices incl. Retraction Watch). A transform_llm_output reply guard appends a warning footer when the agent's own answer cites something that does not check out (the reply text is never rewritten); a verify_citations tool and a /citecheck command (.md .txt .bib .docx) give full reports. Deterministic, Python standard library only, no LLM calls, no API keys.","disclosure":"network calls to api.crossref.org, doi.org, eutils.ncbi.nlm.nih.gov and export.arxiv.org carrying only the reference itself (id, title, first author, year), never the rest of the conversation; when references appear in a reply, the reply guard checks them on every such reply (up to 15 s by default); the optional contact_email setting is sent to Crossref and NCBI and the optional ncbi_api_key only to NCBI; a 7-day cache of registry answers in the plugin data directory; /citecheck reads the file the user names.","category":"tools","platforms":[],"maintainer":"ChienNguyen23","author":"ChienNguyen23","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/ChienNguyen23/hermes-citation-guard","docs":"https://github.com/ChienNguyen23/hermes-citation-guard#readme","tools":["verify_citations"],"hooks":["transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150613,"prs":[{"n":150613,"state":"merged","created":"2026-11-07T09:29:34Z"}],"created":"2026-11-07T09:29:34Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"getyoutubetranscript","title":"GetYouTubeTranscript","summary":"YouTube transcripts (optionally with timestamps), video search, and channel and playlist browsing through the GetYouTubeTranscript remote MCP server (Streamable HTTP at https://getyoutubetranscript.com/api/mcp). Bundles four skills: fetch a transcript, search YouTube, summarize a video, and research a channel or playlist. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration and Markdown only.","disclosure":"hosted-only connector with no local code; every tool call goes to getyoutubetranscript.com, which receives the video URL or search text and the user's API key (YOUTUBE_TRANSCRIPT_API_KEY, sent as a bearer header from the user's environment). All tools are annotated read-only. Transcript fetches use account credits (100 free on sign-up, no card). The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"TubeAgentKit","author":"pushkarsingh32","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/tubeagentkit/youtube-transcript-hermes-plugin","docs":"https://github.com/tubeagentkit/youtube-transcript-hermes-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150603,"prs":[{"n":150603,"state":"closed","created":"2026-11-07T08:58:34Z"}],"created":"2026-11-07T08:58:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"podcast","title":"Podcast Studio","summary":"Turn any article, PDF, paper, notes or the day's news into a mastered two-host podcast episode: neural voices per host, speaker-aware pauses, intro chime, -16 LUFS loudness, embedded chapters and a timestamped transcript in one MP3. Includes an audio-overview skill and a daily news-briefing blueprint. Script text is sent to Microsoft's online Edge text-to-speech service via edge-tts (no account or key); episodes stay local. No telemetry.","disclosure":"episode script text (every spoken line), voice names and rate/pitch are sent to Microsoft's online Edge text-to-speech service via edge-tts (no account or key); the voice list is fetched from the same service and cached for 7 days; audio, transcripts and metadata stay in the plugin data directory; uses ffmpeg from PATH or the user's ffmpeg_path setting.","category":"voice","platforms":[],"maintainer":"suhas-svg","author":"suhas-svg","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/suhas-svg/hermes_podcast","docs":"https://github.com/suhas-svg/hermes_podcast#readme","tools":["podcast_produce","podcast_voices","podcast_episodes"],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs an internet connection: voices are synthesized by Microsoft's online Edge text-to-speech service.; Mastering (chime, pauses, loudness, chapters) needs ffmpeg; without it clips are joined unmastered.; The model must include the returned MEDIA: line in its reply for the MP3 to be attached on messaging platforms.","state":"merged","pr":150598,"prs":[{"n":150598,"state":"merged","created":"2026-11-07T08:40:54Z"}],"created":"2026-11-07T08:40:54Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"ariadne","title":"Ariadne","summary":"Record a Hermes session once, then replay it with no model, no network and no tokens to see exactly what Hermes does differently: check whether updating Hermes is safe by replaying your own sessions (with your plugins loaded) on the new version, replay on a new build, compare two installs, bisect the Hermes commit that changed a session, fork a recorded session to a live model from any model call, export trajectories and preference pairs, and check Hermes's documented hook contracts on every run.","disclosure":"recording is off until you turn it on; cassettes are written locally under plugin-data with secrets scrubbed (tool output can still hold private file contents); play, compare, bisect and fork start Hermes (python -m tui_gateway.entry) as a child process and drive it over JSON-RPC; replays copy this profile's SOUL.md, memories/ and skills/ and only an allowlist of request-shaping settings from config.yaml (never hooks, MCP servers, terminal, auxiliary endpoints or credentials; --trust-config keeps all) into a throwaway home, never .env or auth.json, decode only openai/anthropic SDK model types from cassettes, answer every approval with deny, neutralise tool arguments and block outbound network through a closed local proxy; fork makes real model calls with your configured provider inside your own home (the forked session appears in your history) and runs tools after the fork point only with --live-tools; upgrade-check (CLI, or a button in Desktop) runs git ls-remote and git clone against github.com/NousResearch/hermes-agent and uv against the package index to install that Hermes, plus the python_dependencies your enabled plugins declare, into its own venv under plugin-data/ariadne/hermes/ (your install is not touched), then replays offline and loads your enabled plugins in both scratch homes; bisect checks out commits in a Hermes checkout you name, refusing a dirty tree and restoring the original commit; the optional Desktop half (off until you enable it) adds an Ariadne page, a REC status-bar chip, a mark on recorded sessions, palette commands and a theme, and its backend routes (dashboard/plugin_api.py, loaded only when ariadne is in plugins.enabled) read the plugin's own data folder and start replays and forks as background jobs; fonts are bundled, nothing is fetched from third-party hosts; no telemetry.","category":"tools","platforms":[],"maintainer":"miracle352","author":"miracle352","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/miracle352/hermes-ariadne","docs":"https://github.com/miracle352/hermes-ariadne/tree/128c95967a0761ad24d3d224441d1502c43bbb69#readme","tools":[],"hooks":["pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","pre_api_request","post_api_request","api_request_error","on_session_end","on_session_finalize","subagent_start","subagent_stop","pre_auxiliary_call","post_auxiliary_call","post_compaction","pre_approval_request","post_approval_response"],"middleware":["llm_execution","tool_request","tool_execution"],"env":[],"known_issues":"","state":"merged","pr":150596,"prs":[{"n":150596,"state":"merged","created":"2026-11-07T08:31:02Z"}],"created":"2026-11-07T08:31:02Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/miracle352/hermes-ariadne/128c95967a0761ad24d3d224441d1502c43bbb69/docs/banner.png","https://raw.githubusercontent.com/miracle352/hermes-ariadne/128c95967a0761ad24d3d224441d1502c43bbb69/docs/screenshots/upgrade.png","https://raw.githubusercontent.com/miracle352/hermes-ariadne/128c95967a0761ad24d3d224441d1502c43bbb69/docs/screenshots/overview.png","https://raw.githubusercontent.com/miracle352/hermes-ariadne/128c95967a0761ad24d3d224441d1502c43bbb69/docs/screenshots/drift.png","https://raw.githubusercontent.com/miracle352/hermes-ariadne/128c95967a0761ad24d3d224441d1502c43bbb69/docs/screenshots/contracts.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ariadne.webp"},{"name":"which-copy","title":"Which Copy","summary":"Answers the question that silently decides everything else: which copy of a command is the Hermes process actually going to run? On a Mac the same tool can exist five times over — a Homebrew formula, an npm global install, a pyenv shim, a standalone download, and Hermes's own bundled copy — and the name resolves to whichever one PATH reaches first, with no warning when that is the wrong one. which_copy resolves one name against the PATH of the running Hermes process and, separately, against the PATH your own login shell builds for a terminal (that shell is started from the system default PATH, not Hermes's, so the entries it reports are its own), and says so when the two disagree. It also states, in every report, that Hermes's terminal tool runs commands in a login shell whose PATH gains directories Hermes adds — so it never claims the process PATH is the PATH a terminal command gets. It lists every copy it can find, on PATH and in the usual off-PATH install locations, with the evidence for where each came from (a Homebrew Cellar directory names the formula, a node_modules tree names the npm package including its scope, pyenv versions, uv tools, pipx venvs, nvm, Hermes's own directories, a plain folder, the macOS system), the version it reports, and whether it can even execute here — an Intel-only binary on Apple silicon is named as needing Rosetta to run. Then it gives a verdict in plain language: an older copy shadowing a newer one, a dead symlink earlier in PATH that the shell silently skips, Hermes preferring its own bundle to yours, several copies whose versions were measured (the same version, the winner being the newest, versions that cannot honestly be ordered, copies that reported no version, copies the sweep did not ask, or copies it did not run), or nothing wrong at all. which_copy_scan sweeps the usual AI tools — python, python3, node, npm, npx, bun, pnpm, uv, pip3, pipx, git, gh, brew, hermes, claude, codex, opencode, gemini, grok, aider, cursor-agent, rustc, go, ruby, java — in about a second, one line per tool, worst first. It diagnoses and stops: no installs, no PATH edits, no relinking, no \"fix\" that hides the problem. Versions are asked with an argv-only probe (three-second deadline, own process group, 8 KB output cap, cwd at the filesystem root, and a stripped environment so a shadowing binary never sees Hermes's API keys), and only for copies this machine put there: an absolute entry on Hermes's PATH, an absolute entry on the login shell's PATH, or one of the fixed install directories. Nothing named in a tool call is ever executed — a file passed as a path, a copy found only in a PATH string the call supplies, and a copy behind a relative or empty PATH entry are described with their version left unchecked — so a prompt-injected repository cannot get its own script run. For a call that supplies `path`, every version probe still runs with Hermes's own process PATH, never the raw supplied string. probe_versions false skips every probe, and the login-shell check is separate, so pair it with check_login_shell false for a call that starts no process at all. When two version strings were never meant to be compared, it says it cannot order them instead of guessing.","disclosure":"","category":"tools","platforms":["macos","linux"],"maintainer":"Hazem-Samak","author":"Hazem-Samak","version":"1.2.3","requires_hermes":">=0.22.0","repo":"https://github.com/Hazem-Samak/hermes-which-copy","docs":"https://github.com/Hazem-Samak/hermes-which-copy#readme","tools":["which_copy","which_copy_scan"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150595,"prs":[{"n":150595,"state":"merged","created":"2026-11-07T08:28:51Z"}],"created":"2026-11-07T08:28:51Z","late":false,"said":false,"update":false,"discussion":6,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"write-gate","title":"Write Gate","summary":"Deterministic pre-write content gate for Hermes Agent. A pre_tool_call hook parses the exact bytes about to be written as JSON, TOML or Python (stdlib parsers), rejects NUL bytes, oversized content and user-declared regex contracts, and short-circuits invalid writes with a precise line/column error returned to the model as a tool-call error, so the agent fixes the content in the same tool-calling loop instead of leaving a broken file behind. Also adds a write_gate_check preflight tool, a /writegate slash command and Settings -> Plugins config. Patch/replacement fragments are never parsed as whole documents: NUL, size and regex contracts still run on the fragment, and the reconstructed post-edit file is parsed when it can be rebuilt.","disclosure":"no network calls, no shell commands, no subprocesses, no background processes, no credentials, no telemetry; reads the in-memory arguments of the tool call it gates, one optional user-specified JSON rules file named in the rules_file setting, and (for fragment edits only) the size-capped target file named in that same tool call, read-only; persists three integer counters in profile-scoped plugin state; never auto-approves or bypasses Hermes's approval gate; fails open on any internal error.","category":"tools","platforms":[],"maintainer":"2vic1","author":"2vic1","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/2vic1/hermes-write-gate","docs":"https://github.com/2vic1/hermes-write-gate#readme","tools":["write_gate_check"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150594,"prs":[{"n":150594,"state":"merged","created":"2026-11-07T08:26:44Z"}],"created":"2026-11-07T08:26:44Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"zalodesk","title":"ZaloDesk","summary":"Read, search and reply to Zalo chats, personal Zalo accounts and Zalo Official Accounts (OA), through the hosted ZaloDesk MCP: catch up on unread conversations, read and search messages, send replies, find customers by phone, labels and friend requests; and for the workspace owner, the team (Phân quyền): invite, change and remove staff, which Zalo accounts and chats each sees, their permissions, routing of new chats and calls, conversation assignment, which PC runs a company Zalo, and the AI credit each staff PC may spend. Everything runs within the user's ZaloDesk role (an employee sees only the chats assigned to them). Agent Plugins v1 package (plugin.json + mcp.json + one skill); OAuth uses pinned mcp-remote@0.1.49 over npx stdio, so Node.js 20.18.1+ and npm are required.","disclosure":"send_message sends real Zalo messages from the user's account, the team tools add, change and remove people's access, and set_ai_credit lets a staff PC spend from the owner's AI wallet; the package marks the zalodesk server untrusted, so Hermes asks before every tool the server does not annotate as read-only and refuses them in cron and headless runs. Every tool call goes to app.zalodesk.com; sign-in runs npx mcp-remote@0.1.49 from the npm registry, which stores its OAuth tokens in ~/.mcp-auth. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"ZaloDesk","author":"BAODAU","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/zalodesk/zalodesk-mcp","docs":"https://github.com/zalodesk/zalodesk-mcp#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150570,"prs":[{"n":150570,"state":"merged","created":"2026-11-07T08:08:28Z"}],"created":"2026-11-07T08:08:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-roam","title":"Hermes Roam","summary":"Encrypted, host-scoped sync of the Hermes Agent home between your own machines: an AES-256-GCM sealed bundle of the shared home (config.yaml minus host-scoped keys, SOUL.md, memories, skills) is pushed to storage you own — an S3 or Cloudflare R2 bucket, a private git repository, or a local directory — and pulled back on another machine through a plan-first, journaled, backed-up, roll-back-able install. Secrets (.env, auth.json, API keys) never sync; pulls apply only on explicit user action (the agent cannot apply by default); conflicts are detected with a signed compare-and-swap head, never merged. Every pushed version stays recoverable (hermes roam history / restore). Works across profiles and bots: one store carries every profile (each profile's identity, SOUL, memories, skills and shared config), from any profile context; a profile can be excluded per device. Opt-in, off by default: a read-only, encrypted archive of session transcripts (exported with hermes sessions export --redact) that other devices can list and read, and cron job definitions (pulled jobs land paused until hermes cron resume).","disclosure":"network calls only to the user-configured store (boto3 for S3/R2, the git CLI for the git backend) and only when a roam command, tool, slash verb or session hook actually runs; the git backend also runs git as local subprocesses with an allowlisted environment, the opt-in session archive runs hermes sessions export once per profile, and hermes roam auto runs hermes config set, all as bounded local subprocesses; the shared ROAM_ARCHIVE_KEY and S3 credentials come only through Hermes's secret scope, never from files; session hooks run bounded daemon threads; no telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"Victor Cruz","author":"vcruz305","version":"0.5.6","requires_hermes":">=0.22.0","repo":"https://github.com/vcruz305/hermes-roam","docs":"https://github.com/vcruz305/hermes-roam#readme","tools":["roam_status","roam_push","roam_pull"],"hooks":["on_session_start","on_session_end","pre_llm_call"],"middleware":[],"env":["ROAM_ARCHIVE_KEY"],"known_issues":"The git backend is unsuitable for large homes: git hosts cap file sizes (~100 MB per file on GitHub), so keep the shared home well under ~50 MB there and use the S3/R2 backend for larger homes.","state":"merged","pr":150563,"prs":[{"n":150563,"state":"merged","created":"2026-11-07T07:56:42Z"}],"created":"2026-11-07T07:56:42Z","late":false,"said":false,"update":false,"discussion":6,"images":["https://raw.githubusercontent.com/vcruz305/hermes-roam/8b9fba41fea77f2fe2d6d572cffd43039d2da11f/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-roam.webp"},{"name":"botsee","title":"BotSee","summary":"AI-visibility research through BotSee's hosted Streamable HTTP MCP server (https://botsee.io/mcp), with a bounded workflow skill for reviewing existing analyses, competitor recommendations and cited sources, and planning audits. Portable Agent Plugins v1 package; no local server, OAuth bridge, hooks or self-updater.","disclosure":"every tool call goes to BotSee's hosted MCP server at botsee.io with the user's own BotSee API key (MCP_BOTSEE_API_KEY, sent as a bearer header), and the tool set is served by that remote server at runtime and is not covered by the pinned sha; some BotSee tools spend account credits, generate billable content or top up the balance (including USDC payments), and the package marks the server untrusted so Hermes asks before every tool the server does not annotate as read-only and refuses those tools in cron and headless runs, which relies on BotSee's own read-only annotations; no spending cap is enforced.","category":"tools","platforms":[],"maintainer":"sidekickjanet","author":"sidekickjanet","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/sidekickjanet/hermes-product-plugins","docs":"https://github.com/sidekickjanet/hermes-product-plugins/tree/f79c213703b600a48a1d4f949bbd82c113d117f0/plugins/botsee","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150560,"prs":[{"n":150560,"state":"merged","created":"2026-11-07T07:50:12Z"}],"created":"2026-11-07T07:50:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/sidekickjanet/hermes-product-plugins/f79c213703b600a48a1d4f949bbd82c113d117f0/plugins/botsee/assets/catalog-banner.svg"],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ui-cards","title":"HUI+ Cards","summary":"Interactive answer cards in Hermes Desktop and the Webapp; your answer goes back as the next message.","disclosure":"stores every Desktop card and the user's answers, free text typed into cards included, in the profile's plugin-data/hermes-ui-cards/ (answers.db plus the newest 500 card files; nothing expires by time and deleting a chat does not delete its entries); adds turn context for the model (card answers, confirm-card actions and commands, and a periodic Desktop hint to use cards); Desktop cards load images from https URLs the model supplies, so the image host sees the user's IP; read-only backend routes /api/plugins/hermes-ui-cards/answers and /settings; no telemetry, no credentials, no shell commands.","category":"desktop","platforms":[],"maintainer":"robbyczgw-cla","author":"robbyczgw-cla","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/robbyczgw-cla/hermes-ui-cards","docs":null,"tools":["hui_present"],"hooks":["pre_llm_call","transform_llm_output","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150556,"prs":[{"n":150556,"state":"merged","created":"2026-11-07T07:33:06Z"}],"created":"2026-11-07T07:33:06Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/banner.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/plan.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/confirm.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/checklist.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/compare.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/form.jpg","https://raw.githubusercontent.com/robbyczgw-cla/hermes-ui-cards/c40df4d41cd5439cf4902995fd4a9e5505483f25/assets/cards/review.jpg"],"videos":[],"x":["https://x.com/CamiAi__/status/2118980850800820604"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-ui-cards.webp"},{"name":"hermes-ghost-call","title":"Ghost Call","summary":"A real-time AI assistant on your own phone calls. You stay on the line; Hermes listens and streams one-line hints to your page and chat (what they just offered, what to ask next), knows your private target without ever saying it, plays a hint in your earpiece on one tap, and posts a summary with what was agreed and a draft confirmation message when you hang up. Works with two browser links, a real phone line through your own Twilio account, or any call on speaker.","disclosure":"streams live call audio of BOTH parties to OpenAI (realtime transcription at api.openai.com, plus hint, earpiece-TTS and summary models) and stores text transcripts (on by default; `store_transcripts: false` turns it off), hints and summaries in plugin data (SQLite); the other party is not told by the plugin that the call is transcribed, and call-recording consent law is the user's responsibility; runs a FastAPI bridge (`hermes ghost serve`, 127.0.0.1:8766 by default) that you must expose publicly at PUBLIC_BASE_URL (e.g. a tunnel), protected by one-time link tokens and Twilio signature checks; Twilio mode places paid calls through your own Twilio account to numbers the model may choose, but only numbers on your HERMES_GHOST_TEST_ALLOWLIST (empty = no dialing; HERMES_GHOST_ALLOW_ALL=1 lifts it) and never emergency/premium numbers, without a Hermes approval prompt; Hermes speaks on the call only after you type `/ghost intervene allow`, and then first says it is an AI.","category":"voice","platforms":[],"maintainer":"winchxyz","author":"winchxyz","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/winchxyz/hermes-ghost-call","docs":"https://github.com/winchxyz/hermes-ghost-call#readme","tools":["ghost_start","ghost_status","ghost_hint_latest","ghost_speak","ghost_intervene","ghost_hangup","ghost_summary"],"hooks":["pre_tool_call"],"middleware":[],"env":["OPENAI_API_KEY","PUBLIC_BASE_URL"],"known_issues":"","state":"merged","pr":150554,"prs":[{"n":150554,"state":"merged","created":"2026-11-07T07:25:02Z"}],"created":"2026-11-07T07:25:02Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/banner.png","https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/screen-chat.png","https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/screen-hints.png","https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/screen-whisper.png","https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/screen-summary.png","https://raw.githubusercontent.com/winchxyz/hermes-ghost-call/b670ff8a930a02aff8afe2c39994bcf4645654ac/docs/media/screen-modes.png"],"videos":[],"x":["https://x.com/winchxyz/status/2118968460801941593"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-ghost-call.webp"},{"name":"vibe-relay","title":"Vibe Relay","summary":"Vibecoding without burning your best model. Sets Hermes `delegation.backend` to a quota-aware strategy: when remaining usage is above a threshold (default 51%) the parent model keeps the work (`self`); otherwise each `delegate_task` is routed to a configured cheap executor (provider+model or profile). When the executor lane is selected, a `pre_tool_call` hook blocks the parent from `patch`/`write_file` and obvious terminal writes (`sed -i`, `>`/`>>`, `tee`) so coding work must go through `delegate_task` (children never blocked; `enforce_executor_lane` default true). At `stop_used_percent` (default 90% used) the same hook blocks parent `delegate_task` and writers, auto-parks once per reset window (handoff + one one-shot cron), and injects `parked until …; do not start new work` via `pre_llm_call`; the block lifts after reset or when used drops below stop. Every task must carry `allowed` path globs and a `gate` command — exit 0 alone is not done. A `post_tool_call` hook captures gate PASS output bound to a working-tree hash; `pre_verify` continues the turn until a fresh PASS exists; `vibe_accept` checks changed paths ⊆ allowed. Manual `/vibe park` and blueprint `resume-after-reset` remain. Ships an Agent Workshop of 14 portable skills (build/debug loop, architecture audit, harness+evals, context budget, memory/retrieval, known-errors registry, frozen-tree review, product-aware releases, subagent-driven development, companion maintenance, lean executor orchestration, field-first acceptance, TDD, systematic debugging) registered as `vibe-relay:<name>` via `skill_view`. Vendors DEV Framework tools (`df_init`, `df_check`, `df_nav`); `df_check` returns the gate command for the agent to run via `terminal` (approvals apply).","disclosure":"quota via public `fetch_account_usage(..., read_only=True)` at most once per 180s into `$HERMES_HOME/plugin-data/vibe-relay/` (empty fetches: 15s negative TTL; no private usage-cache import); checklist/handoff slugs confined to `[A-Za-z0-9._-]+` under `docs/`; park skips resume-cron inside `HERMES_CRON_SESSION` unless `cron.allow_agent_scheduling`; `df_init`/`df_nav` run the plugin's vendored scripts with `python -I` and a scrubbed child env; `df_nav` never executes the target's navigate.py; `df_init` refuses Hermes home, `$HOME` itself, filesystem root, and protected $HOME dots; acceptance uses session terminal cwd when none is passed; template scripts may call `git`/`gh` only when the user or agent runs them; cron via `cronjob_manage`; no credential-file reads; no YOLO shells.","category":"automation","platforms":["linux","macos"],"maintainer":"trenthalden","author":"trenthalden","version":"0.3.2","requires_hermes":">=0.22.5","repo":"https://github.com/trenthalden/vibe-relay","docs":"https://github.com/trenthalden/vibe-relay#readme","tools":["vibe_accept","df_init","df_check","df_nav"],"hooks":["pre_llm_call","api_request_error","pre_tool_call","post_tool_call","pre_verify","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150547,"prs":[{"n":150547,"state":"merged","created":"2026-11-07T06:58:11Z"}],"created":"2026-11-07T06:58:11Z","late":false,"said":true,"update":false,"discussion":6,"images":["https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/assets/banner.png","https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/assets/shot-1.png","https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/assets/shot-2.png","https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/assets/shot-3.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vibe-relay.webp"},{"name":"hindsight-curator","title":"hindsight-curator","summary":"Bulk-curate stale Hindsight memories from chat via /memory-curate or tools, or from the Desktop Memory curation page: scan by topic (keyword/regex), review a dry-run plan, invalidate a selected subset with a reason, write one checkpoint fact, and restore via a local SQLite journal. Separate from the official hindsight memory-provider plugin — talks only to the public HTTP API.","disclosure":"network calls only to the configured Hindsight base URL (list, GET, PATCH invalidate/restore, retain checkpoint); optional Bearer auth via HINDSIGHT_API_KEY through Hermes secrets; writes invalidations, restores, and one checkpoint fact to that server; stores plans/apply events/whitelist/history in the profile plugin-data directory; Desktop half uses ctx.rest to the plugin dashboard API; no shell, no background daemons, does not read other plugins' config or credential files.","category":"tools","platforms":[],"maintainer":"trenthalden","author":"trenthalden","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/trenthalden/hindsight-curator","docs":"https://github.com/trenthalden/hindsight-curator#readme","tools":["curate_scan","curate_plan","curate_apply","curate_restore","curate_checkpoint","curate_history"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150546,"prs":[{"n":150546,"state":"merged","created":"2026-11-07T06:58:07Z"}],"created":"2026-11-07T06:58:07Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/trenthalden/hindsight-curator/01087e27a85f71c572402e29447886ea464c970f/assets/banner.png","https://raw.githubusercontent.com/trenthalden/hindsight-curator/01087e27a85f71c572402e29447886ea464c970f/assets/shot-1.png","https://raw.githubusercontent.com/trenthalden/hindsight-curator/01087e27a85f71c572402e29447886ea464c970f/assets/shot-2.png","https://raw.githubusercontent.com/trenthalden/hindsight-curator/01087e27a85f71c572402e29447886ea464c970f/assets/shot-3.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hindsight-curator.webp"},{"name":"word-miner","title":"word-miner","summary":"Turn any text you are consuming (lyrics, subtitles, articles, chat) into a personal vocabulary deck and run short daily spaced-repetition sessions inside Hermes. Any language pair. Local only — SQLite event log, SM-2-like scheduler with response-time adjustment, 3+3+3+1 sessions, two-stage graduation. No Anki, no AnkiConnect, no network. The model extracts lemmas; four tools plus /deck and a bundled mining skill.","disclosure":"stores decks and review history under HERMES_HOME/plugin-data/word-miner; no outbound calls, no shell, no credentials.","category":"tools","platforms":["macos","linux","windows"],"maintainer":"trenthalden","author":"trenthalden","version":"0.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/trenthalden/word-miner","docs":"https://github.com/trenthalden/word-miner#readme","tools":["deck_add_words","deck_session","deck_grade","deck_stats"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150545,"prs":[{"n":150545,"state":"merged","created":"2026-11-07T06:58:02Z"}],"created":"2026-11-07T06:58:02Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/trenthalden/word-miner/e3776aed517ec28a898d1006541358ee3ca2d44e/assets/banner.png","https://raw.githubusercontent.com/trenthalden/word-miner/e3776aed517ec28a898d1006541358ee3ca2d44e/assets/shot-1.png","https://raw.githubusercontent.com/trenthalden/word-miner/e3776aed517ec28a898d1006541358ee3ca2d44e/assets/shot-2.png","https://raw.githubusercontent.com/trenthalden/word-miner/e3776aed517ec28a898d1006541358ee3ca2d44e/assets/shot-3.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/word-miner.webp"},{"name":"netease-cloud","title":"NetEase Cloud Music","summary":"NetEase Cloud Music (网易云音乐) mini player in the Hermes Desktop status bar, in the spirit of the built-in Radio plugin: a compact themed popover with Now Playing (cover + scrolling synced lyrics with the current line highlighted), search for songs and playlists, favorites (heart / Liked Music), browsing and in-panel playback of your own playlists, play/pause/skip/progress/volume with outline-style controls, loop modes (list loop, single loop, shuffle) and a mini control cluster on the status bar itself. Desktop-only UI (desktop/plugin.js on the plugin SDK surface) plus a local FastAPI backend (dashboard/plugin_api.py) that implements NetEase's weapi/eapi request signing (AES-CBC/ECB + RSA) with the Python standard library only — no build step, no extra Python dependencies.","disclosure":"unofficial NetEase Cloud Music client: the backend calls only NetEase hosts (music.163.com, interface3.music.163.com, and the p*.music.163.com CDNs for covers and audio) using NetEase's own web/PC client identity (Chrome User-Agent, music.163.com Referer/Origin, eapi os=pc/appver headers, x-os/x-login-chain-id QR-login headers with a generated anonymous device cookie set); after you log in, your NetEase session cookie (MUSIC_U) is stored in the plugin's own data/cookie.json and sent only to NetEase hosts, and 'Log out' deletes it; while logged in it reports each played track to NetEase (feedback/webenergy play history) and the heart button likes/unlikes songs on your account; no other third-party services and no telemetry; QR login may be blocked by NetEase risk control, pasting the MUSIC_U cookie is the documented fallback; VIP songs stream through your own VIP session.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"BoosterCore","author":"BoosterCore","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/BoosterCore/hermes-netease-cloud","docs":"https://github.com/BoosterCore/hermes-netease-cloud/blob/1410afc5e313a09be81736abbc2ca74933927c82/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"QR login is often blocked by NetEase risk control (「检测到当前设备环境异常」); paste the MUSIC_U cookie on the 账号 tab instead (README has a 3-step Chinese guide).; Playlists load the first 1000 tracks; the panel shows the real total (e.g. 共1859首·显示前1000).; Audio quality follows your NetEase account (VIP → higher bitrate); the plugin requests exhigh and falls back to standard.","state":"merged","pr":150544,"prs":[{"n":150544,"state":"merged","created":"2026-11-07T06:50:14Z"}],"created":"2026-11-07T06:50:14Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/banner.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/01-now-playing.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/02-lyrics.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/03-search-songs.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/04-search-playlists.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/05-my-playlists.png","https://raw.githubusercontent.com/BoosterCore/hermes-netease-cloud/1410afc5e313a09be81736abbc2ca74933927c82/docs/screenshots/06-liked-tracks.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/netease-cloud.webp"},{"name":"web-specstream","title":"SpecStream Search and Extract","summary":"SpecStream Search API and Extract API for web_search and web_extract. Search is $5 per 1,000 searches, extract is $0.80 per 1,000 pages (web pages, PDF, Word and Excel, up to 20 URLs a call, a page with no text is free). Needs a SpecStream API key.","disclosure":"paid third-party backend: search queries and every URL passed to web_extract are sent to api.specstream.ai with your SPECSTREAM_API_KEY, which SpecStream fetches server-side and bills to that key's balance.","category":"web","platforms":[],"maintainer":"Specstreamai","author":"Specstreamai","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/specstream/hermes-web-specstream","docs":"https://github.com/specstream/hermes-web-specstream#readme","tools":[],"hooks":[],"middleware":[],"env":["SPECSTREAM_API_KEY"],"known_issues":"","state":"merged","pr":150539,"prs":[{"n":150539,"state":"merged","created":"2026-11-07T06:33:59Z"}],"created":"2026-11-07T06:33:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"delegation-receipts","title":"delegation-receipts","summary":"Verify what a subagent says it did before the parent reports the work as done. A \"receipts\" delegation backend asks every child to end its reply with a receipt (status, the files it changed, and the one command that proves the work); when a child stops, the plugin resolves and hashes each claimed path, matches every claim against the write targets that child's own tool history records so it cannot take credit for a file someone else wrote, and checks the cited command against a closed set of fixed check forms (pytest, uv run --no-sync pytest, cargo/go/npm/pnpm/yarn test), refusing a path rather than a bare name, a launcher, or inline evaluation. Host re-run is opt-in and off by default, because a hook-driven re-run bypasses Hermes' dangerous-command approval and the child's terminal backend; when an operator enables it, the command is re-run argv-style with no shell, in its own process group, with output and time bounded. Either way a verdict reaches the parent: a rejection is appended to the delegate_task result, with the failing output attached when there is one; a background child's verdict arrives on the parent's next turn instead. Every check stays in a local JSONL ledger shown by `hermes receipts`. One command per receipt, one receipt per child.","disclosure":"the receipt's `verified:` command is written by the subagent being checked; host re-run is off by default, and when you enable `plugins.entries.delegation-receipts.settings.host_rerun` that command (one of pytest, uv run --no-sync pytest, cargo/go/npm/pnpm/yarn test) runs on this host with your privileges in the child's inferred workspace, outside Hermes' command approval and the configured terminal backend, and executes the project's test code and scripts, including files the subagent wrote (no shell, argv-split, filtered environment, 120 s default timeout); receipts and claimed paths are checked locally, the ledger is local at <HERMES_HOME>/plugin-data/delegation-receipts/ledger.jsonl, and the plugin makes no network calls and holds no credentials.","category":"tools","platforms":[],"maintainer":"dacheah","author":"dacheah","version":"0.3.0","requires_hermes":"","repo":"https://github.com/dacheah/delegation-receipts","docs":"https://github.com/dacheah/delegation-receipts#readme","tools":[],"hooks":["subagent_stop","transform_tool_result","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150516,"prs":[{"n":150516,"state":"merged","created":"2026-11-07T05:47:14Z"}],"created":"2026-11-07T05:47:14Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"zotero","title":"Zotero Research","summary":"Research with your own Zotero library: search it, read your PDF highlights and full text, cite with Zotero's citation engine (any CSL style, BibTeX/RIS export), add papers by DOI/arXiv with PDFs, and check a draft's citations against the library. Reads Zotero desktop's local API on loopback; zotero_add alone writes to the library and calls Crossref/arXiv. No telemetry, no credentials.","disclosure":"","category":"tools","platforms":[],"maintainer":"suhas-svg","author":"suhas-svg","version":"1.0.1","requires_hermes":">=0.22.5","repo":"https://github.com/suhas-svg/hermes_zotero","docs":"https://github.com/suhas-svg/hermes_zotero#readme","tools":["zotero_status","zotero_search","zotero_item","zotero_fulltext","zotero_cite","zotero_add","zotero_verify"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Zotero 7+ desktop running with Settings -> Advanced -> 'Allow other applications on this computer to communicate with Zotero' enabled.; zotero_add saves into the collection currently selected in Zotero.","state":"merged","pr":150511,"prs":[{"n":150511,"state":"merged","created":"2026-11-07T05:35:03Z"}],"created":"2026-11-07T05:35:03Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"accessible-session-list","title":"Accessible Session List","summary":"Keyboard-first, screen-reader-friendly native session picker for Hermes Desktop. Search titles, select with arrows without navigating, open with Enter or Shift+Enter, and use a keyboard-accessible actions menu. Filters background runs and empty drafts; sorts the fetched sessions by activity. English and Russian UI.","disclosure":"reads up to 500 persisted session summaries from the active profile through the public Desktop SDK and opens the selected session through Hermes; this may communicate with the configured gateway. No external services, credentials, filesystem access, shell, backend, telemetry, stored session content, or self-updater.","category":"desktop","platforms":[],"maintainer":"denis-skripnik","author":"denis-skripnik","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/denis-skripnik/hermes-accessible-session-list","docs":"https://github.com/denis-skripnik/hermes-accessible-session-list#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Hermes Desktop; enable the Desktop component after installation.; If core handles Ctrl+H first, use the Session list command in the command palette; the plugin does not override core shortcut handlers.; Search and activity sorting cover at most 500 creation-ordered fetched sessions, not the entire history.; Enter uses the SDK primary-area or existing-tab intent; it cannot replace an arbitrary focused secondary tab. Shift+Enter focuses an existing tab instead of duplicating it.","state":"merged","pr":150510,"prs":[{"n":150510,"state":"merged","created":"2026-11-07T05:29:48Z"}],"created":"2026-11-07T05:29:48Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/denis-skripnik/hermes-accessible-session-list/7f2c7a17e377348a6a6a72785a9d3a4c0631e8e0/docs/synthetic-session-list.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/accessible-session-list.webp"},{"name":"buildpilot","title":"BuildPilot","summary":"Project tracking and progress recovery for Hermes Agent. Create projects, manage tasks, save progress checkpoints, and retrieve project context across sessions using local SQLite storage.","disclosure":"","category":"tools","platforms":[],"maintainer":"Justnevo","author":"Justnevo","version":"1.0.0","requires_hermes":"","repo":"https://github.com/Justnevo/buildpilot","docs":"https://github.com/Justnevo/buildpilot#readme","tools":["buildpilot_add_project","buildpilot_list_projects","buildpilot_add_task","buildpilot_update_task","buildpilot_checkpoint","buildpilot_get_project_context"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150504,"prs":[{"n":150504,"state":"merged","created":"2026-11-07T05:26:06Z"}],"created":"2026-11-07T05:26:06Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-windows-certificates","title":"hermes-windows-certificates","summary":"Answer \"which certificate on this Windows machine expired, and what am I actually trusting\": walks the user's and the machine's certificate stores (MY, Root, CA) in-process through crypt32 - no certutil, no PowerShell - and lists every certificate with subject, issuer, validity window, self-signed or not, SHA-1 thumbprint and the store it lives in; the expiry arrives in words (\"expired 45 days ago\", \"expires in 12 days\") and the list is sorted with the expired and soon-expiring first. One certificate in full adds the serial number, certificate version, the signature algorithm in words, the public key's algorithm, named curve and size in bits (2048-bit RSA, P-256), and the purposes it is valid for (server authentication, code signing...; no EKU extension is reported as \"does not restrict its purposes\", which is what its absence means). Find it by thumbprint or by a subject substring, across the user's and the machine's copies. Use it for \"why does TLS keep failing on this box\", \"is the root store healthy\", and \"which personal certificate ran out\". Read-only: stores are opened read-only and only enumerated - nothing is added, removed or changed; no network, no file writes, no elevation, no child processes; 121 certificates across both contexts and all three stores walk in about 8 ms on the writing machine. Windows only.","disclosure":"the tools report certificate subjects, issuers, validity windows and thumbprints, to the model; treat the output like the machine's own certificate manager page.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-certificates","tools":["win_cert_table","win_cert_detail"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150503,"prs":[{"n":150503,"state":"merged","created":"2026-11-07T05:20:33Z"}],"created":"2026-11-07T05:20:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-windows-disks","title":"hermes-windows-disks","summary":"Answer \"are this machine's disks healthy, and which volume is filling up\" on Windows: one table of every physical disk (model, serial, SSD/HDD/SCM, bus - nvme, sata, usb -, size, the storage stack's health word, GPT or MBR, boot/system flags, partition count) and every volume (drive letter, label, file system, capacity, free space with its percentage and a verdict, fixed/removable/network/cd-rom, the disk a volume lives on, the UNC path behind a mapped drive); volumes without a drive letter (EFI, recovery) are hidden unless asked for. win_disk_detail reads one disk or volume - by drive letter, label, model, serial or disk number - with the health in words (warning, unhealthy, and \"unknown\", which the storage stack reports on a perfectly healthy NVMe while OperationalStatus says ok - both are shown), the partition layout decoded from its GUID type (efi system, microsoft reserved, basic data, windows recovery), each partition's size, offset and letter, the largest contiguous free extent, and a plain-word free-space verdict (under 5 percent critical, under 10 percent low). Use it for \"why is the disk slow\", \"will this drive fail\", \"where did the space go\". Read-only: the storage classes are queried in one PowerShell CIM session, nothing is defragmented, formatted, resized, checked or repaired; no writes, no elevation, no network calls of its own. Enum values arrive as numbers and are decoded in the plugin - a Chinese-language Windows 11 was verified never to reach the answer; the whole table answers in about two thirds of a second. The plugin declares no Python dependencies. Windows only.","disclosure":"the tools report disk models, serial numbers, sizes, health words, partition layouts, volume labels, capacities and free space, and the UNC paths behind mapped drives, to the model; treat the output like the machine's own Disk Management page.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-disks","tools":["win_disk_table","win_disk_detail"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150501,"prs":[{"n":150501,"state":"merged","created":"2026-11-07T05:20:11Z"}],"created":"2026-11-07T05:20:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-windows-firewall","title":"hermes-windows-firewall","summary":"Answer \"what does the Windows firewall let through, and for whom\" on Windows: every rule from the registry store the firewall service itself keeps, each row in plain words -- allow or block, inbound or outbound, TCP/UDP/ICMP or a protocol number, local and remote ports, the program or service the rule is scoped to, which profile it belongs to (Domain, Private, Public or any) and whether it is switched on -- plus the three profiles' firewall switches and default actions, with values the registry did not write reported as null and attributed to Windows' builtin defaults rather than invented. Built-in rules name themselves indirectly (@FirewallAPI.dll,-32765); the words are resolved from the resource in the machine's own language, and references that will not resolve stay as written. Details one rule in full: addresses with scope words (the local subnet, any address), edge traversal, the embedding group, the description, and fields the parser does not model (TTK2_22 is on real machines) passed through verbatim rather than dropped. netsh labels localize with the display language, the registry does not -- which is why the plugin goes there: no netsh, no PowerShell, no WMI. Use it for \"is port X open\", \"what may this exe do\", and \"is the firewall actually on\". Read-only: registry values are enumerated and resource strings resolved, nothing is enabled, disabled, added or removed; no network calls of its own, no file writes, no elevation. The whole store answers in hundredths of a second (795 rules in 0.07 s on the writing machine); the plugin declares no Python dependencies. Windows only.","disclosure":"the tools report every rule's action, direction, protocol, ports, addresses, program, service and name, and the profile switches, to the model; treat the output like the firewall page of Windows Security.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-firewall","tools":["win_firewall_table","win_firewall_detail"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150500,"prs":[{"n":150500,"state":"merged","created":"2026-11-07T05:19:42Z"}],"created":"2026-11-07T05:19:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"thoth","title":"Thoth","summary":"Agents working as one team, each with its own harness: Claude Code, Codex and Hermes today. Ask Hermes for a website, an app, artwork or a doc: it plans the work on a shared board and hands each task to the real Claude Code or Codex CLI, on your own logins and plans, so every improvement their makers ship reaches your team. Each agent works in its own git worktree with a brief of what the team decided and made (goal, decisions, handoffs, what its dependencies produced), reviews the other's work, and Hermes merges what passes once you say yes. In Hermes Desktop, Thoth sits beside each project's chat: a side window with the live canvas and a Team & brain tab (who did what, decisions, reviews, versions), and every Thoth project is also a Hermes project on the same folder. Claude Code or Codex can join the board through the bundled MCP server or take over as coordinator, and a task that needs the web gets a clean Chrome, or yours when it needs your logins. When a Claude or ChatGPT plan runs out, the other agent carries on from its work, and the side window and Team card show how much of each plan is used and when it resets. Approve a plan once and autopilot runs it to the end: it starts, cross-reviews and merges each task, and asks you in the chat only when something needs you; any change to the plan pauses it. Once work is merged, the side window offers it to open, download as a zip or find in Finder. Start a project from the project menu or the chat: a new one gets its own folder in ~/Thoth, and a folder you already have becomes a project that keeps every version. After an update, the Thoth page says what's new, once.","disclosure":"after you approve each launch in Hermes, or a plan card for autopilot, runs your installed claude and codex CLIs as background processes (stopped on cancel, timeout (30 min by default), unload or exit) under their own logins and plans, which Thoth never reads, with Claude Code's OS sandbox and Codex's workspace-write sandbox; gives them and project commands only PATH, HOME, USER, SHELL, TMPDIR, TERM, LANG, the LC_ locale settings, CODEX_HOME and CLAUDE_CONFIG_DIR from its environment, plus names you list in env_passthrough; inside Codex runs it pre-approves only its own three worker tools (read the board, write a note); writes .thoth/ (SQLite brain, run logs, worktrees), thoth/T<n> branches, exact-path lines in .git/info/exclude and, only when you approve a merge, merge commits on your base branch; makes a new project's folder in ~/Thoth (the projects_dir setting) and, in a folder that is not in git yet, a git repository with its files as the first version (.env and other secrets, dependency folders and files over 50 MB stay in the folder but out of git, through .git/info/exclude), never in your home, Desktop, Documents or Downloads folder; links ignored node_modules/.venv folders into task worktrees, gives each worktree copy-on-write copies of the other files the project keeps out of git (read-only links where the disk can't copy) and moves the new files a merged task made outside git into the project folder without overwriting anything, and never reads or copies .env files or other secrets; a project board is used only if Thoth made it on this computer or you said yes to it on a Hermes card (adopting one starts nothing), and its setup or run command runs as you outside the sandbox only if you approved that exact command for that board on Hermes's card (hashes kept in approvals.json in its data folder, never in the project); starting a run preview asks you first (on a free localhost port from an export under .thoth/previews/); a project whose .thoth folder is committed to git, or a .thoth folder Thoth didn't make, is refused; Thoth's own git commands run without hooks or fsmonitor; static previews are served read-only on 127.0.0.1; the Desktop page's Connect buttons run claude mcp add thoth / codex mcp add thoth only when clicked; in Hermes Desktop it adds two panes (the side window and Team & brain) and a Chat + Thoth layout template that changes your layout only when you pick it, opens one chat per project and pins it in the project's colour once, creates (or reuses) a Hermes project on each Thoth project's folder and moves that project's chat into it through Hermes's own project calls, and keeps which chat and folder belong to which project, and the last version whose notes you saw, in its data folder (chats.json, projects.json, whatsnew.json); reads plan usage from Claude Code's run output and asks `codex app-server` for Codex's limits (a read that uses no tokens), kept in plans.json; autopilot (only after you approve its plan card, never under an always-allow) starts, reviews and merges that plan's tasks without a card for each step, pauses when the plan changes, keeps the Mac from idle sleep with caffeinate -i while it runs and holds .thoth/autopilot.lock; the Download button writes a zip of the merged files (never .env files) to your Downloads folder; completion notices and autopilot's messages reach the chat only with allow_gateway_injection; a task you give a browser has its agent run npx -y chrome-devtools-mcp@1.2.0 (pinned, fetched from npm on first use, usage statistics off): a temporary headless Chrome, or, if you choose your own Chrome, the Chrome you are running once you turn on remote debugging and allow the connection in Chrome, where the agent sees your tab titles, acts with your logins in a tab of its own and is told to only look. No network calls of its own, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"cayden970207","author":"cayden970207","version":"0.9.1","requires_hermes":">=0.22.5","repo":"https://github.com/cayden970207/thoth","docs":"https://github.com/cayden970207/thoth#readme","tools":["thoth_init","thoth_plan","thoth_assign","thoth_review","thoth_wait","thoth_status","thoth_note","thoth_merge","thoth_context","thoth_cancel","thoth_update_task","thoth_complete","thoth_revise","thoth_restore","thoth_sync","thoth_preview","thoth_models","thoth_coordinator","thoth_autopilot"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Needs the Claude Code and/or Codex CLI installed and signed in; agents run on your own Claude and ChatGPT plans; Agent sandboxes have no network: for per-task installs give the project a setup command (e.g. npm ci), approved once; Completion notices and autopilot's messages in chat need plugins.entries.thoth.allow_gateway_injection: true; without it Hermes hears about finished runs through thoth_wait, and you follow autopilot in the side window; Browsing in your own Chrome needs Chrome 144+ with remote debugging on (chrome://inspect/#remote-debugging), and Chrome asks you to allow each run's connection","state":"merged","pr":150497,"prs":[{"n":150497,"state":"merged","created":"2026-11-07T05:15:00Z"}],"created":"2026-11-07T05:15:00Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/banner.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/side-window.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/overview.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/cross-agent-canvas.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/reach.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/revise-versions.png","https://raw.githubusercontent.com/cayden970207/thoth/289372a7019d8ade5617b1829b7b782bfb304c74/docs/screenshots/outputs.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/thoth.webp"},{"name":"canonry","title":"Canonry","summary":"Open-source, agent-first Answer Engine Optimization (AEO) platform. Measure brand mentions and source citations across ChatGPT, Claude, Gemini, Perplexity, and Meta; research competitors and SEO opportunities; audit AI readiness; analyze AI crawler and referral traffic; create and publish content; manage ChatGPT Ads; and get pages indexed. Connect Search Console, GA4, WordPress, and more, then measure what changed across brands, locations, and markets. Includes Canonry operator and Aero analyst skills with MCP tools. Requires a configured Canonry runtime.","disclosure":"","category":"tools","platforms":[],"maintainer":"Canonry","author":"arberx","version":"7.97.3","requires_hermes":"","repo":"https://github.com/Canonry/canonry","docs":"https://canonry.ai","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Install and bootstrap the Canonry runtime first; canonry-mcp must be on PATH and its configured API must be running.; MCP access follows the runtime's configured API key. Write-capable keys expose mutations and operations that can consume provider quotas.","state":"merged","pr":150493,"prs":[{"n":150493,"state":"closed","created":"2026-11-07T05:03:09Z"}],"created":"2026-11-07T05:03:09Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-windows-network","title":"hermes-windows-network","summary":"Answer \"is this machine's network healthy, and which adapter is the problem\" on Windows: lists every visible network adapter with its state (up, disconnected, disabled, not present), its link speed as a number, its MAC, whether it is virtual (Hyper-V, VPN, virtual switch) or physical, and its driver version and date; adapters that are only a ghost of an old dock or USB device are hidden unless asked for. Details one adapter's IPv4/IPv6 addresses with prefixes and origins (DHCP, manual, self-assigned 169.254.x.x), default gateways, DNS servers, and a plain-word diagnosis - link-local means DHCP never answered, an address without a gateway cannot leave its subnet, no DNS means names will not resolve; a disconnected adapter with a stale static DNS says all three on the writing machine. Use it for \"why is there no internet\", for \"which of these adapters is actually in use\", and for reading what DHCP left on an interface. Read-only: the NetAdapter and NetTCPIP cmdlets are queried, nothing is enabled, renewed, reconfigured or released; no network calls of its own, no file writes, no elevation. Adapter names are localized data and are passed through as-is; states travel as enum names, which a Chinese-language Windows 11 was verified not to translate. The whole table answers in under a second and one adapter's detail in about two and a half, each a single PowerShell session; the plugin declares no Python dependencies. Windows only.","disclosure":"the tools report adapter names and descriptions, addresses, MACs, gateways, DNS servers and driver versions, to the model; treat the output like the machine's own adapter settings page.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-network","tools":["win_adapter_table","win_adapter_detail"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150490,"prs":[{"n":150490,"state":"merged","created":"2026-11-07T04:57:57Z"}],"created":"2026-11-07T04:57:57Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"blastradius","title":"blastradius","summary":"Reads a destructive shell command before it runs and reports what it would actually delete: how many files, how many git can restore, how many it cannot, the total size, and which of them look valuable, then lets policy decide whether to show the report, block the call, or demand a one-shot blast_allow. Covers rm and rm -rf, git clean, git reset --hard, truncate -s 0, `> file` and `: >` truncating redirects, and mv overwrite, including nested bash -c, subshells, and chained commands with cd tracking; anything it cannot resolve is reported as unmeasured instead of guessed. Snapshots and verified restore exist as a separate step (blast_snapshot, blast_restore); restore skips files edited after the snapshot unless overwrite_conflicts is set.","disclosure":"no network; reads file metadata, directory listings, and the output of read-only git calls (git ls-files, git check-ignore, git rev-parse); writes snapshot copies under HERMES_HOME/plugin-data/; strict policy blocks the tool call while balanced and relaxed report and continue; local terminal backend only; no telemetry. Disclosure — no network and no telemetry; on every terminal call it reads file metadata, directory listings and the output of read-only git calls (git ls-files, git check-ignore, git rev-parse); it writes snapshot copies under the Hermes plugin data dir (or BLASTRADIUS_SNAPSHOT_DIR), and blast_restore with confirm writes snapshotted files back to their original paths, skipping files edited since unless overwrite_conflicts is set; its blocks add to Hermes approval and never replace it, and the agent can relax them through blast_policy or a one-shot blast_allow (BLASTRADIUS_ALLOW=1 turns them off); local terminal backend only.","category":"other","platforms":[],"maintainer":"valenciayuna","author":"valenciayuna","version":"","requires_hermes":"","repo":"https://github.com/valenciayuna/hermes-plugin-blastradius","docs":"https://github.com/valenciayuna/hermes-plugin-blastradius","tools":["blast_radius","blast_allow","blast_snapshot","blast_snapshots","blast_restore","blast_policy"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150476,"prs":[{"n":150476,"state":"merged","created":"2026-11-07T04:20:23Z"}],"created":"2026-11-07T04:20:23Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"house-style","title":"house-style","summary":"Learns a project's house style from how you correct the agent's edits. Every write_file and patch records the block it introduced (including every hunk of a multi-file V4A patch and every occurrence of a replace_all edit); later the plugin checks whether you kept it, rewrote it or took it out again, and /house-style learn distils a bounded batch of those before/after pairs into short numbered rules, which /house-style learn confirm writes into the project context file Hermes already reads — .hermes.md/HERMES.md, else AGENTS.md, else CLAUDE.md, else .cursorrules, else a new AGENTS.md — inside a marked block you own, so the rules reach the model through normal context loading and Claude Code reads the same file. /house-style status shows the capture state, the context file in use, counts and the newest edited pairs; scan re-checks the recorded edits; reset clears signals and learned rules while keeping anything you wrote; off/on stop or resume recording for one project; export prints the rules.","disclosure":"registers post_tool_call (for write_file and patch only) and on_session_start; reads those tools' arguments and reads back the files they just wrote, from the host filesystem or, on a remote backend, through the read_file tool in the task that wrote them, inside a git repository only, skipping files over 256 KB, binary files, secret-like names (.env, *.pem, id_rsa*, credentials*) and .git internals; stores redacted before/after pairs (repository-relative path, hash, up to 200 lines per block, up to 400 rows and 512 KB per repository) in plugin-data/house-style; writes one marked section of the project context file and only after /house-style learn confirm; calls your configured model once per /house-style learn and nothing else; on a remote backend asks that task's terminal tool for `pwd` once per task; no telemetry, no subprocesses, no network beyond that model call. Needs ctx.redact_text() (NousResearch/hermes-agent#150220); on a build without it the plugin records nothing and says so in /house-style status. On a chat platform the commands act on the profile's terminal.cwd.","category":"tools","platforms":[],"maintainer":"Sahil-SS9","author":"Sahil-SS9","version":"0.3.0","requires_hermes":">=0.23.0","repo":"https://github.com/Sahil-SS9/house-style","docs":"https://github.com/Sahil-SS9/house-style#readme","tools":[],"hooks":["post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150474,"prs":[{"n":150474,"state":"open","created":"2026-11-07T04:10:17Z"}],"created":"2026-11-07T04:10:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-share","title":"Session Share","summary":"Share one or several sessions as a redacted, revocable secret GitHub gist with /share, and import a shared bundle back with /share import. A bundle is up to three kinds of file in one gist, every one of them rendered by the public `hermes sessions export` CLI: the importable jsonl, a readable Markdown transcript, and a standalone HTML page per session. The preview lists every session with its redaction counts and file sizes; nothing is uploaded until /share confirm. Credentials become non-reusable sentinels (never a head/tail mask), home paths become ~, and the account and host names are replaced; redaction cannot be switched off. /share import reads a gist or file, detects the format from content (Hermes export, Claude Code transcript, Codex rollout), shows what is inside, and imports only on /share import confirm.","disclosure":"reads the sessions you name through the public `hermes sessions export` CLI and the session index through hermes_state; writes the bundle, a 50-row share ledger, capped previews/imports and a pending record under plugin-data; network writes are only gh gist create and gh gist delete, both after confirm, never --public, and it holds no token of its own because authentication is whatever the gh CLI already has; a gist import is read with gh gist view, a public URL over plain HTTPS, capped at 8 MB, and nothing downloaded is executed; child processes get an allowlisted environment (gh: HOME/PATH/GH_CONFIG_DIR/locale; hermes: the same plus HERMES_HOME), never the session's, which holds every provider key on the machine. Hermes-to-Hermes import needs a host with `hermes sessions import --from hermes` (upstream #87988) and is feature-detected from the CLI's own help; without it that part refuses by name and Claude Code and Codex imports still work. Import from a chat platform is off until the owner sets allow_gateway_import.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Sahil-SS9","author":"Sahil-SS9","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/Sahil-SS9/hermes-share","docs":"https://github.com/Sahil-SS9/hermes-share#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs `ctx.redact_text()` on the host (NousResearch/hermes-agent#150220). On a Hermes without it, /share refuses by name instead of importing an internal module.; Hermes-to-Hermes import needs `hermes sessions import --from hermes` (NousResearch/hermes-agent#87988); until a host has it that path refuses by name. Claude Code and Codex imports work today.; Import from a chat platform is refused until `plugins.entries.hermes-share.settings.allow_gateway_import` is true, because an import writes into that Hermes's own store. Sharing and /unshare work on chat platforms without it.; A gist is secret, not private: unlisted and not searchable, but readable by anyone with the URL.","state":"open","pr":150473,"prs":[{"n":150473,"state":"open","created":"2026-11-07T04:10:13Z"}],"created":"2026-11-07T04:10:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"underwriting","title":"underwriting","summary":"Commercial real estate underwriting that shows its work: rebuilds net operating income from the rent roll and T-12 instead of trusting the broker's claim, runs buy-box tests against a DSCR-sized loan, returns the counter-price at which a rejected deal actually clears, sweeps price to find where a deal flips, models a hold period, and returns null rather than inventing a number the document never stated. Seven deterministic tools plus an /underwrite command and a skill. Extraction reads a document the user names (local path or URL) and is audited back against the document text: every figure is matched to the line it came from and marked verified, and a citation the document cannot support is reported. The arithmetic is pure Python standard library with no network calls and no third-party packages; only extraction calls the host model, and only a URL passthrough fetches anything over the network. Writes are confined to the plugin's own data directory: memos and extraction audit trails take a bare filename under <data_dir>/exports/, and the deal book is JSON under <data_dir>. Document input is treated as untrusted, because it is: local reads go through Hermes' read block list with no $HOME fallback, and URL input is limited to public http(s) with every redirect hop re-checked. Not investment advice.","disclosure":"","category":"tools","platforms":[],"maintainer":"johnnyminer","author":"johnnyminer","version":"0.1.1","requires_hermes":">=0.22.0","repo":"https://github.com/johnnyminer/hermes-underwriting","docs":"https://github.com/johnnyminer/hermes-underwriting#readme","tools":["uw_screen","uw_triage","uw_returns","uw_extract","uw_memo","uw_save","uw_deals"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150466,"prs":[{"n":150466,"state":"merged","created":"2026-11-07T03:39:47Z"}],"created":"2026-11-07T03:39:47Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"aletheia","title":"Aletheia","summary":"Evidence-bound scoped memory for Hermes agents, over the Weft substrate: turns are queued for a local SQLite store under the active profile by default, recall is scoped before it is ranked (deny-by-default, deterministic, never widened by anything read), and every recall returns a receipt naming the scope consulted, the ids selected and the tier. Duplicates are not re-ingested, deletions cascade, corrections preserve lineage. Registers as memory.provider: aletheia and exposes weft_recall, weft_ingest, weft_forget and weft_receipt, with recall on a worker thread so a turn's prefetch is not blocked; the built-in memory store keeps running alongside it.","disclosure":"the plugin's code ships in the weft-memory PyPI package (installed as weft-memory>=1.1.1,<2, so it is outside this catalog pin); primary-agent turns are queued for storage in local SQLite under the active profile by default (the path is configurable; writes may be interrupted on process exit); no network calls, telemetry, or credentials on the Hermes path; the required bge-m3 embedder and cross-encoder reranker (~0.7 GB) must already be in the local Hugging Face cache, downloaded from their official Hugging Face repositories, and are not vendored; the Hermes provider exposes text ingest only; the separate Weft substrate supports optional image and audio adapters; macOS on Apple silicon only (mlx); AGPL-3.0, and weft-memory is AGPL-3.0 as well.","category":"memory","platforms":["macos"],"maintainer":"ousiaresearch","author":"ousiaresearch","version":"1.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/ousiaresearch/aletheia","docs":"https://github.com/ousiaresearch/aletheia","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150464,"prs":[{"n":150464,"state":"merged","created":"2026-11-07T03:35:08Z"}],"created":"2026-11-07T03:35:08Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lazy-plugin","title":"Lazy Plugin","summary":"A dashboard page in Hermes Desktop where you describe a plugin and watch it get built. Say what you want — or start from a skill the agent wrote, or a job that runs on a schedule — and your own agent drafts the plan in a chat turn you can read, the code comes from four fixed templates, and the page shows a receipt: plan, files, validator result, and a real try-out of every tool (purrs, needs a key, blocked upstream, held back, half-built, broken — with the exact failing line). The build never runs what it wrote: the try-out is your click, a key only travels to a public https host, and a file tool stays inside its own data dir. Nothing installs itself, and publishing is a SHA-pinned catalog PR you send. Also callable as lazyplugin_create from any conversation.","disclosure":"the Desktop \"try it\" button runs every generated tool for real on your machine (generated `command` tools execute the drafted argv; declared keys are only sent to public https hosts named in the code, never Hermes' own keys), and \"publish\" uses your `gh` login to create a public GitHub repo for the generated plugin and open a pull request to NousResearch/hermes-agent in one click; builds from `lazyplugin_create` never run generated code.","category":"tools","platforms":[],"maintainer":"RegeneratusLabs","author":"RegeneratusLabs","version":"0.9.8","requires_hermes":">=0.23.0","repo":"https://github.com/RegeneratusLabs/lazy-plugin","docs":"https://github.com/RegeneratusLabs/lazy-plugin#readme","tools":["lazyplugin_create","lazyplugin_sources","lazyplugin_built"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150456,"prs":[{"n":150456,"state":"merged","created":"2026-11-07T03:14:36Z"}],"created":"2026-11-07T03:14:36Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/RegeneratusLabs/lazy-plugin/0adb8ff33f9ebe47118077423bfdd17234403b8f/assets/banner.png","https://raw.githubusercontent.com/RegeneratusLabs/lazy-plugin/0adb8ff33f9ebe47118077423bfdd17234403b8f/assets/preview.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lazy-plugin.webp"},{"name":"salesforce-guard","title":"Salesforce Guard","summary":"Salesforce release-impact and scoped-access review: explicit-scope snapshot comparison, source-reference maps, local access evidence and HTML reports. Bounded security heuristics and partial OWASP mappings produce review signals, not org-wide assurance. Dedicated review profile blocks unrelated tools while the plugin is enabled. Custom native inputs require separate operator folder approval with model-sharing acknowledgement.","disclosure":"reads user-supplied source directories and writes profile-local reports; no native network, credentials or shell. Optional operator CLI invokes installed Salesforce CLI for Code Analyzer, explicit browser sign-in, metadata capture, fixed scoped selected-user access queries and logout; Salesforce CLI owns credentials. No deploy/Apex execution. Findings require human review; not an OS sandbox.","category":"tools","platforms":[],"maintainer":"sforceai","author":"sforceai","version":"0.4.3","requires_hermes":">=0.21.2","repo":"https://github.com/sforceai/salesforce-release-guard","docs":"https://github.com/sforceai/salesforce-release-guard/blob/da0a581c82b070680219a1adfb2f91815fba0581/README.md","tools":["sfg_scan","sfg_demo","sfg_report","sfg_policy","sfg_impact","sfg_compare","sfg_compare_demo","sfg_changes","sfg_access"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Use a dedicated review profile. On deferred-tool Hermes clients, set tools.tool_search.enabled to off to expose native schemas; the guard remains enabled.; On Windows, use the documented short-folder route. Arbitrary deep paths are not verified supported.","state":"merged","pr":150455,"prs":[{"n":150455,"state":"closed","created":"2026-11-07T03:06:48Z"}],"created":"2026-11-07T03:06:48Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/sforceai/salesforce-release-guard/da0a581c82b070680219a1adfb2f91815fba0581/docs/assets/comparison-desktop.png","https://raw.githubusercontent.com/sforceai/salesforce-release-guard/da0a581c82b070680219a1adfb2f91815fba0581/docs/assets/access-desktop.png"],"videos":[],"x":["https://x.com/ShivamMohla/status/2118901313782305175"],"youtube":[],"thumb":"/hackathon/thumbs/salesforce-guard.webp"},{"name":"workgraph","title":"Workgraph","summary":"Visual product-state tree with actual galleries, SQLite development snapshots, protected behavior replays, feature borrowing, and persistent agent continuation. Reads/writes local repositories and runs approved local commands.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"aliiqbal24","author":"aliiqbal24","version":"2.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/aliiqbal24/workgraph","docs":null,"tools":["workgraph"],"hooks":["pre_tool_call","pre_llm_call","on_session_finalize"],"middleware":["tool_request","tool_execution"],"env":[],"known_issues":"Linux, Python 3.11+, Git 2.43+, and working bubblewrap are required for default managed execution.; Dynamic previews require an approved app recipe, Chromium, and working bubblewrap. Hosted services and production databases are not restored.; Codex and Claude per-tool capture requires reviewed host lifecycle hooks; launch alone provides MCP and a final checkpoint.","state":"open","pr":150453,"prs":[{"n":150453,"state":"open","created":"2026-11-07T03:03:23Z"}],"created":"2026-11-07T03:03:23Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/aliiqbal24/workgraph/37c7280a514d3fa23e7193f44b5123d1f9c90163/docs/images/product-tree.png","https://raw.githubusercontent.com/aliiqbal24/workgraph/37c7280a514d3fa23e7193f44b5123d1f9c90163/docs/images/product-compare.png"],"videos":["https://github.com/aliiqbal24/workgraph/releases/download/v2.0.0/workgraph-launch-v4.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/workgraph.webp"},{"name":"leonardo","title":"Leonardo.AI Video","summary":"Leonardo.AI video generation backend for video_generate: Motion 2.0 text-to-video and image-to-video through the Leonardo REST API, using only the Python standard library.","disclosure":"the prompt and any reference image URL are sent to cloud.leonardo.ai and the finished clip is fetched from cdn.leonardo.ai, authenticated with your LEONARDO_API_KEY, which the plugin reads through Hermes's secret scope and never from a file or the ambient environment; generation is billed to your Leonardo API token balance (about 200 tokens per 5-second clip, purchased separately from a Leonardo web subscription); the job is polled in-process with a bounded wall-clock deadline, and the token cost is reported back but no budget is enforced, so an unattended run can spend your balance; no telemetry, no shell commands, no background processes, no stored credentials and no self-updates. Zero Python dependencies.","category":"tools","platforms":[],"maintainer":"RichardChua1234","author":"RichardChua1234","version":"1.0.1","requires_hermes":">=0.20.2","repo":"https://github.com/RichardChua1234/hermes-plugin-leonardo","docs":"https://github.com/RichardChua1234/hermes-plugin-leonardo#readme","tools":[],"hooks":[],"middleware":[],"env":["LEONARDO_API_KEY"],"known_issues":"Image-to-video accepts a public image URL only; local file paths are not supported and the URL path has not been exercised end-to-end.; Only the Leonardo Motion 2.0 model family is verified. Other models reachable through the same asynchronous endpoint (Veo, Kling, Seedance, Wan) share the transport but their model ids are unverified and are not advertised.; A clip costs roughly 200 Leonardo API tokens. The plugin reports the cost per call but cannot cap spend, so allow it to run unattended only with a balance you are willing to burn.","state":"merged","pr":150447,"prs":[{"n":150447,"state":"merged","created":"2026-11-07T02:41:11Z"}],"created":"2026-11-07T02:41:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"global-business-culture","title":"Global Business Culture","summary":"Cross-cultural business intelligence: country culture briefs and home-vs-host gap analysis computed from bundled Meyer, Hofstede, GLOBE and Lewis data. Three deterministic tools (culture_brief, culture_gap_analysis, culture_countries), a /culture command and a bundled practitioner-playbook skill. 57 economies offline, no dependencies, no network, no env vars — the gap analysis ranks the exact scale distances between two cultures, names the misread each gap produces and prescribes adaptation moves. Deep ASEAN/frontier coverage (Laos, Cambodia, Myanmar flagged as extrapolated from GLOBE-cluster neighbours).","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"pswong661-eng","author":"pswong661-eng","version":"1.0.0","requires_hermes":">=0.21.0","repo":"https://github.com/pswong661-eng/hermes-global-business-culture","docs":null,"tools":["culture_brief","culture_gap_analysis","culture_countries"],"hooks":[],"middleware":[],"env":[],"known_issues":"Scale positions are approximations distilled from the published frameworks (Meyer, Hofstede, GLOBE, Lewis), not measurements; countries not in the original datasets are extrapolated from cluster neighbours and flagged in tool output.","state":"merged","pr":150446,"prs":[{"n":150446,"state":"merged","created":"2026-11-07T02:36:50Z"}],"created":"2026-11-07T02:36:50Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"belive-aihub-media","title":"BeLive AI Hub Media","summary":"BeLive AI Hub backends for Hermes' image_generate, video_generate, text_to_speech and speech-to-text (backend `belive-aihub` for image_gen.provider, video_gen.provider, tts.provider and stt.provider), with models from the live AI Hub catalogues.","disclosure":"registers four backends and nothing else (no tools, hooks, commands or threads); when one is selected and its tool runs, the prompt, source images, text to speak or recording go to https://tokenhub-api.belive.sg/api/v1 (or the official staging base set in BELIVE_TOKENHUB_BASE_URL) with BELIVE_TOKENHUB_API_KEY, read through Hermes' secret scope, and each call is billed to that AI Hub workspace with no Hermes approval prompt; it reads the model catalogues, polls video jobs (up to 15 minutes), stores a video job id and idempotency key under the profile's plugin-data, and reads a local image or recording only when the agent names one. Requests that can charge are sent once and never retried or redirected.","category":"tools","platforms":[],"maintainer":"belivetech","author":"hassanabidpk","version":"0.2.2","requires_hermes":">=0.22.7","repo":"https://github.com/belivetech/hermes-belive-aihub","docs":"https://github.com/belivetech/hermes-belive-aihub/blob/6eeb45e5f212752ad941f32fc6de7f2bbeb757ca/media/README.md","tools":[],"hooks":[],"middleware":[],"env":["BELIVE_TOKENHUB_API_KEY"],"known_issues":"","state":"merged","pr":150440,"prs":[{"n":150440,"state":"merged","created":"2026-11-07T02:21:06Z"}],"created":"2026-11-07T02:21:06Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wally","title":"Wally","summary":"Wally by RunAnywhere as a Hermes model provider: open-weight models (DeepSeek, GLM, Kimi, MiniMax) on an OpenAI-compatible API, each with its context window, tool support and image input declared, and reasoning effort sent as Wally's top-level reasoning_effort, clamped to the levels each model accepts. Pick Wally in `hermes model` or use `--provider wally`.","disclosure":"registers one model provider at import and nothing else (no tools, hooks, middleware, commands, background work or file access); chat requests (prompts, tool schemas and results, images for image-capable models) and the model list go to https://inference.runanywhere.ai/v1 (or WALLY_BASE_URL) through Hermes's own client with WALLY_API_KEY, which Hermes reads; usage is billed to your Wally account; the plugin itself opens no connections.","category":"models","platforms":[],"maintainer":"RunanywhereAI","author":"sanchitmonga22","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/RunanywhereAI/hermes-wally-provider","docs":"https://github.com/RunanywhereAI/hermes-wally-provider/tree/8a9a0dc157c057ba6ded84454d874a96e3b08a63/wally#readme","tools":[],"hooks":[],"middleware":[],"env":["WALLY_API_KEY"],"known_issues":"","state":"merged","pr":150438,"prs":[{"n":150438,"state":"merged","created":"2026-11-07T02:19:00Z"}],"created":"2026-11-07T02:19:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"yandex_mail","title":"Yandex Mail","summary":"Search and read Yandex Mail, organize messages, save attachments, and send replies. Read-only access is configurable; saving attachments and sending require explicit opt-in.","disclosure":"reads and changes your Yandex Mail over IMAP at imap.yandex.ru and sends over SMTP at smtp.yandex.ru (or the hosts in YANDEX_MAIL_IMAP_HOST / YANDEX_MAIL_SMTP_HOST if you set them, which are not restricted to Yandex), over verified TLS, with your YANDEX_MAIL_LOGIN and YANDEX_MAIL_APP_PASSWORD read through Hermes; flagging, moving and deleting, including irreversible permanent deletion, are offered unless YANDEX_MAIL_ACTIONS narrows them (read gives a read-only mailbox); saving attachments and sending are off until YANDEX_MAIL_ACTIONS names save_attachment and send_message; once on, sending asks no per-message confirmation, also in cron and other unattended runs, and reaches any address unless YANDEX_MAIL_SEND_TO fences recipients; saved attachments go to Hermes' shared document cache, where other tools can read them, and are pruned after 24 hours; mail written by other people reaches the agent as tool output; uses Hermes' private tools.credential_files helper to map saved paths into sandboxes; no other endpoint, no telemetry, no shell access, no background process. Independent community plugin, not affiliated with Yandex.","category":"tools","platforms":["linux","macos"],"maintainer":"akinfold","author":"akinfold","version":"0.4.3","requires_hermes":">=0.21.5","repo":"https://github.com/akinfold/hermes-yandex-mail","docs":"https://github.com/akinfold/hermes-yandex-mail#readme","tools":["yandex_mail_list_folders","yandex_mail_search_messages","yandex_mail_read_message","yandex_mail_save_attachment","yandex_mail_mark_message","yandex_mail_move_message","yandex_mail_delete_message","yandex_mail_send_message"],"hooks":[],"middleware":[],"env":["YANDEX_MAIL_LOGIN","YANDEX_MAIL_APP_PASSWORD"],"known_issues":"Default tools include flagging, moving and deletion, including irreversible permanent deletion. Set YANDEX_MAIL_ACTIONS=read for read-only access, then restart Hermes. Saving attachments and sending require explicit save_attachment and send_message opt-ins.; Sending has no per-message confirmation, including unattended runs. YANDEX_MAIL_SEND_TO limits recipients; an explicit empty value refuses all recipients, while an absent value imposes no recipient restriction.; The login and app password go to imap.yandex.ru and smtp.yandex.ru over verified TLS, or to configured IMAP/SMTP hosts. Host overrides are not restricted to Yandex-owned servers. Message bodies, headers and filenames are untrusted tool output.; Saving writes to the current profile's shared temporary document cache, outside HERMES_WRITE_SAFE_ROOT; other Hermes tools can read it and cache cleanup can remove it. Saving needs POSIX directory operations and hard links.; Remote attachment paths use Hermes' private tools.credential_files.to_agent_visible_cache_path helper because no public replacement exists. A helper error fails saving and removes the file; a mapping miss may return a host path that remote tools cannot access. Multiplexed gateway reloads without an active secret scope can fail closed.","state":"merged","pr":150433,"prs":[{"n":150433,"state":"merged","created":"2026-11-07T01:57:53Z"}],"created":"2026-11-07T01:57:53Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/akinfold/hermes-yandex-mail/f44cf3aff9393d4dc3d420879469d1ebe4735c66/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/yandex_mail.webp"},{"name":"plan-tracker","title":"plan-tracker","summary":"Track the markdown plans you already write: milestone progress bars from the checkboxes in your .md files, in a dockable pane plus a status-bar chip, with per-milestone effort (time, tokens, cost, models, subagents), ETA, history chart, per-session and global scopes, hash-guarded task ticking, blocked milestones, optional per-milestone weights and markdown export.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"Hjuanma","author":"Hjuanma","version":"0.6.0","requires_hermes":">=0.23.0","repo":"https://github.com/Hjuanma/hermes-plan-tracker","docs":null,"tools":["plan_track"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150429,"prs":[{"n":150429,"state":"open","created":"2026-11-07T01:49:34Z"}],"created":"2026-11-07T01:49:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"daily-edition","title":"Daily Edition","summary":"A personal newspaper inside Hermes Desktop: name interests, not subscriptions, and it compiles one dated front page — each story once, cross-posted stories merged with every publisher credited, consensus winning the lead, reprints withheld — with seven back issues, in-place reading, unread and saved state, and an optional editorial voice for headlines (off until you name a model endpoint; there is no vendor default). The same edition prints as a one-page broadsheet through a local CUPS queue, and the daily_edition tool or /edition can print it from chat or cron.","disclosure":"compiling an edition sends your interest phrases to the news provider (Google News RSS by default) and opening a story fetches that article from its publisher, exposing your IP to them; pressing “Style as …” sends that edition's headlines and summaries to the endpoint you set in DAILY_EDITION_BASE_URL with the key in DAILY_EDITION_API_KEY, and nothing is sent while merely browsing; printing renders locally with the browser's background networking disabled and submits only to a local print queue; no telemetry is collected.","category":"desktop","platforms":["macos","linux","windows"],"maintainer":"ousiaresearch","author":"ousiaresearch","version":"0.4.8","requires_hermes":">=0.22.5","repo":"https://github.com/ousiaresearch/daily-edition","docs":"https://github.com/ousiaresearch/daily-edition","tools":["daily_edition"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150422,"prs":[{"n":150422,"state":"merged","created":"2026-11-07T01:37:00Z"}],"created":"2026-11-07T01:37:00Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/ousiaresearch/daily-edition/b53569f93157708fd7019e499a86fdf9a9117d3a/docs/images/hero-card.jpg","https://raw.githubusercontent.com/ousiaresearch/daily-edition/b53569f93157708fd7019e499a86fdf9a9117d3a/docs/images/edition-page.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/daily-edition.webp"},{"name":"openseo","title":"OpenSEO","summary":"Research keywords and competitors, audit sites, analyze backlinks, track Google and Maps rankings and AI visibility, and work with Search Console and Analytics data through the hosted OpenSEO MCP. Agent Plugins v1 package (plugin.json + mcp.json) with twelve SEO workflow skills; OAuth uses pinned mcp-remote@0.1.49 over npx stdio, so Node.js 20.18.1+ and npm are required.","disclosure":"research tools spend OpenSEO credits, and some tools create, change or delete projects, saved keywords, rank trackers, reports and audits. Every tool call goes to app.openseo.so; sign-in runs npx mcp-remote@0.1.49 from the npm registry, which stores its OAuth tokens in ~/.mcp-auth. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"OpenSEO","author":"carterwsmith","version":"1.0.26","requires_hermes":">=0.21.6","repo":"https://github.com/every-app/open-seo","docs":"https://github.com/every-app/open-seo/tree/main/plugins/openseo#hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150384,"prs":[{"n":150384,"state":"closed","created":"2026-11-07T00:55:20Z"}],"created":"2026-11-07T00:55:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gateway-guardian","title":"gateway-guardian","summary":"Telegram/gateway reliability guard for Hermes — detects 409 polling conflicts, duplicate pollers, freezes, stale locks and missed deliveries, shows one health state (OK/DEGRADED/BLOCKED) and an approved recovery plan.","disclosure":"read-only status: it reads the last 256 KiB of the gateway.log of this Hermes home and of every profile under it, plus process command lines from /proc, and returns only pattern counts and file paths; recovery only prints a fixed checklist and appends the chosen action to a local intent log, and never restarts, kills or rebinds anything itself; no network calls, no credentials, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"kawsthingz","author":"kawsthingz","version":"1.0.0","requires_hermes":"","repo":"https://github.com/kawsthingz/kawsthingz-hermes-gateway-guardian","docs":"https://github.com/kawsthingz/kawsthingz-hermes-gateway-guardian","tools":["gateway_guardian_status","gateway_guardian_recover"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150379,"prs":[{"n":150379,"state":"merged","created":"2026-11-07T00:43:53Z"}],"created":"2026-11-07T00:43:53Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/kawsthingz/kawsthingz-hermes-gateway-guardian/f9959e4b1006ced16d1c6d6647dabe7c99f5aeb1/screenshots/gateway-guardian-blocked.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gateway-guardian.webp"},{"name":"dexio","title":"Dexio","summary":"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; and a Hermes Desktop pane showing which pages the agent recalled and wrote and what your other agents changed. Nothing is captured automatically: no transcripts or turn logs. The provider uses the standard library only, the pane's backend uses the FastAPI that Hermes ships, and neither starts 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; while the Desktop pane is open, its backend (loaded only with dexio in plugins.enabled) asks the same server for the wiki's recent changes, name, page count and page titles, cached 8 to 60 seconds; the last 200 recalls and tool calls (search text cut to 160 characters, page paths and titles, notes and errors) are kept in $HERMES_HOME/dexio/activity.jsonl and pushed to Desktop windows connected to the same Hermes, never uploaded.","category":"memory","platforms":[],"maintainer":"dexio-wiki","author":"forrestzhang107","version":"0.2.0","requires_hermes":"","repo":"https://github.com/dexio-wiki/hermes-plugin","docs":"https://github.com/dexio-wiki/hermes-plugin#readme","tools":["dexio_search","dexio_read","dexio_list","dexio_write","dexio_edit","dexio_append"],"hooks":[],"middleware":[],"env":["DEXIO_API_KEY"],"known_issues":"","state":"merged","pr":150376,"prs":[{"n":150376,"state":"merged","created":"2026-11-07T00:34:35Z"}],"created":"2026-11-07T00:34:35Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/dexio-wiki/hermes-plugin/d05715098148e0335ceaf87a58caaa22d19ff3ff/assets/pane.png","https://raw.githubusercontent.com/dexio-wiki/hermes-plugin/d05715098148e0335ceaf87a58caaa22d19ff3ff/assets/pane-closeup.png","https://raw.githubusercontent.com/dexio-wiki/hermes-plugin/d05715098148e0335ceaf87a58caaa22d19ff3ff/assets/web.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dexio.webp"},{"name":"cash-desk","title":"Cash Desk","summary":"Chase overdue invoices from your CSV exports (generic, Xero, QuickBooks, Stripe, bank statements): apply payments only on an exact reference and amount, draft reminders at 7, 14, 21 and 28 days, and send one only after a person approves its exact text and Hermes asks once more. Figure Lock holds every amount, invoice number, date, IBAN and reference to the ledger; a rewording that changes one is rejected with a diff.","disclosure":"imports only CSV files inside its own data folder, its bundled demo folder and the folders you list in import_dirs, and keeps its ledger in SQLite under its plugin data folder; a reminder leaves only after a person approves its exact text (/cashdesk approve or the Desktop page) and Hermes's approval prompt passes, never from cron, a subagent, yolo mode or approvals set to auto-approve; in the default eml mode it writes .eml files to its outbox folder, and in smtp mode it sends through the SMTP server you configure, with the password stored as a Hermes secret (CASHDESK_SMTP_PASSWORD) and TLS always verified; with guard_outgoing_messages on (off by default) it replaces any agent reply that states an amount, IBAN or invoice number the ledger does not hold for that customer with a withheld notice, and replies stop streaming; no other network calls, no telemetry.","category":"automation","platforms":[],"maintainer":"FutureInvoked","author":"miraklodowska","version":"1.2.0","requires_hermes":">=0.22.6","repo":"https://github.com/FutureInvoked/cash-desk","docs":"https://github.com/FutureInvoked/cash-desk#readme","tools":["cashdesk_status","cashdesk_brief","cashdesk_queue","cashdesk_import","cashdesk_match","cashdesk_draft","cashdesk_revise","cashdesk_reply","cashdesk_hold","cashdesk_send"],"hooks":["pre_tool_call","subagent_start","subagent_stop","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Imports CSV exports; there is no live connection to a bank or an accounting system.; Reminders are in English; you can choose another language per customer or with default_language (Czech is the only other one so far).; With guard_outgoing_messages on, replies in that profile arrive whole instead of streaming.","state":"merged","pr":150374,"prs":[{"n":150374,"state":"merged","created":"2026-11-07T00:33:07Z"}],"created":"2026-11-07T00:33:07Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/banner.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/desktop-queue.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/figure-lock-diff.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/send-gate.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/match-review.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/morning-brief.png","https://raw.githubusercontent.com/FutureInvoked/cash-desk/26d5fabe5f50f250e5dc72c0751adbdb3625f732/docs/screenshots/send-result.png"],"videos":[],"x":[],"youtube":["EOggmibecGI"],"thumb":"/hackathon/thumbs/cash-desk.webp"},{"name":"memrack","title":"memrack","summary":"memrack is one memory provider that hosts a RACK of dockable backend engines with agent-side routing: each backend advertises a card (best_for / limits / search modes) injected into the system prompt, memrack_write(content, backend=?) writes where the AGENT chooses (deterministic source-rules only as the fallback; no LLM judge at write and none at read — no auto mode), and memrack_search fans out over every enabled backend and search mode, merging with reciprocal rank fusion (RRF k=60), per-target collapse and a deterministic tiebreak (score, heat, freshness). Ships with three backends: base-db (the stdlib SQLite floor — one atomic fact per row, FTS5 bm25 ranking, hash-dedupe idempotence, per-entry heat counters feeding a heat report), wiki (read-only whole-page search over an existing markdown wiki via a stdlib mtime index with AND-semantics), and state-episodic (READ-ONLY search over the canonical Hermes session history in state.db, default on — turns are never copied). An optional vec engine (sqlite-vec + Ollama embeddings) can upgrade base-db with a memory mode and degrades honestly to fts/pointers with a visible gap note. Tools: memrack_search, memrack_write, memrack_status, memrack_import, plus `hermes memrack status|report|export|import` (surfaces only while the provider is active). Config: desktop panel via a declared config_schema (rack membership, force-backend override, top_k, vec group, auto-enable-at-activation toggle default OFF) and config.yaml plugins.memrack — both stores converge through a dual-store save/read bridge.","disclosure":"all plugin state lives locally under <HERMES_HOME>/plugin-data/memrack/ (SQLite facts store, route_log.jsonl); no content leaves the machine by default. Disclosure — the only optional network call is an Ollama embedding request to the configured host (default http://127.0.0.1:11434) when the vec memory mode is used; queries and content are sent there as plain text, while base-db/wiki/state-episodic fts never touch the network. Disclosure — the route log records routing decisions only (tool, kind, target reference, backend, session id, timestamp), never content or query text, and searches are not logged. Disclosure — state.db is opened strictly READ-ONLY (mode=ro) by the episodic backend; memrack never writes session data. Disclosure — activation is `memory.provider: memrack`; the basis case (fresh HERMES_HOME, only base-db, zero docking) is proven by the test suite (97 tests green, including the degradation ladder: missing engines answer with honest mode errors, never silent empty results).","category":"memory","platforms":[],"maintainer":"Kesuek","author":"Kesuek","version":"0.5.0","requires_hermes":">=0.22.7","repo":"https://github.com/Kesuek/memrack","docs":"https://github.com/Kesuek/memrack#readme","tools":["memrack_search","memrack_write","memrack_status","memrack_import"],"hooks":["on_session_end","on_memory_write"],"middleware":[],"env":[],"known_issues":"Hybrid retrieval is provided by architecture (per-backend engines + RRF merge); the wiki page engine uses a deterministic AND-gate scorer rather than bm25 (facts and session history rank with bm25).; vec mode needs sqlite-vec plus an Ollama host; without them the backend degrades to fts/pointers with a visible gap note in memrack_status.; Auto-enable at activation defaults OFF — no storage backend gets enabled without an explicit toggle.; memrack_import is a one-shot migration job per profile (idempotent via hash-dedupe), not a standing cron.","state":"closed","pr":150373,"prs":[{"n":150373,"state":"closed","created":"2026-11-07T00:27:10Z"}],"created":"2026-11-07T00:27:10Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-standing","title":"Standing","summary":"Earned trust for Hermes workers. Each profile has a level (L0 read, L1 draft, L2 act, L3 trusted) that decides which tool calls need the owner's approval, and a local record of checks that held up and checks that did not. A worker can always report on its own card (block, comment, request review, heartbeat), but it cannot mark the task done on its word: kanban_complete is blocked until the task has a passing standing_proof in the same session, and Standing runs that check itself (owner-scoped file, owner-allowlisted HTTP URL, or exact owner-allowlisted read-only command). Ten clean passes raise a level (capped at L1 automatically; L2 needs the owner's explicit opt-in); one failed check lowers it; a check that could not run is logged as unavailable and changes nothing. Seeds only create new actors, so restarts never undo a demotion. /standing shows the record, /standing log the last events, and /standing set (local owner only) changes a level. Optional same-machine shared ledger for a governor and its workers, and a short score line on the task card after a completion or demotion.","disclosure":"pre_tool_call returns Hermes' own approve directive for every tool call outside the profile's level (at the default L1 that includes every terminal/shell, send and unknown-tool call) and blocks kanban_complete until a Standing proof passes in the same session; a worker's block/comment/review/heartbeat calls on its own assigned card skip the Standing prompt; under cron and other unattended runs Hermes' approval policy (default deny) decides; it adds a guidance note to the model context through pre_llm_call; it never auto-approves or calls a model, and makes network or subprocess calls only for owner-scoped proofs (HTTP GET with no redirects, proxies or credentials; exact allowlisted argv, shell=False, minimal environment); it stores actors and hashed proof events in SQLite under its plugin data directory (or an owner-set db_path) and, when card_line is on, posts task-card comments through the public kanban_comment tool.","category":"automation","platforms":["linux","macos"],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.1.2","requires_hermes":">=0.22.5","repo":"https://github.com/percyhendrux123-prog/hermes-standing","docs":"https://github.com/percyhendrux123-prog/hermes-standing/blob/8c8126ee85073d9ef8cfaf6ed935ce68dcae42d8/README.md","tools":["standing_proof"],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","on_session_finalize","on_session_reset"],"middleware":[],"env":[],"known_issues":"A passing check proves only what it checks. Standing does not judge whether the whole deliverable is right; choose meaningful checks.; Not a sandbox. Other internal hook errors fail open (logged, no directive); only the completion proof check fails closed.; At L2, shell and unknown tools run without a Standing prompt so proven unattended workers can work; recognized spend and delete/move calls still ask below L3.; Sandboxed workers cannot use host file proofs; use owner-allowlisted HTTP or command proofs instead.; Command proofs are POSIX only (Linux, macOS).","state":"merged","pr":150366,"prs":[{"n":150366,"state":"merged","created":"2026-11-07T00:06:36Z"}],"created":"2026-11-07T00:06:36Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"valun","title":"Valun","summary":"Let your Hermes agent negotiate service-for-credit deals with other independently controlled agents, signing with its own key within limits you set; credit notes recorded by a real Basis tracker (synthetic pilot units).","disclosure":"Talks to the Valun pilot server set in `server_url` (default https://valun-desk.fly.dev, run by the plugin author's Valun project), sending your participant id, locally signed offers/acceptances/credit notes, deal terms and deliverables, and the goals/limits your agent records; whoever runs that server sees all of it. Stores VALUN_AGENT_TOKEN and VALUN_SIGNING_SECRET via `hermes config set` (the secret is briefly visible in the process list while it runs). Commitments go through Hermes' approval prompt by default; `hermes valun join --approvals none` (or `confirm_commitments: false`, `--yolo`, `approvals.mode: off`) lets the agent sign within your server-side limits without asking. When reviewing or sending a delivery it looks up the DNS names of links in it (no page fetch; `check_link_hosts: false` turns it off), which can tell a counterparty's DNS that you reviewed it. `join --direct-tools` sets `tools.tool_search.enabled off` in that profile. Pilot credits have no monetary value and nothing is settled.","category":"tools","platforms":[],"maintainer":"fitzss","author":"fitzss","version":"0.3.0","requires_hermes":">=0.22.7","repo":"https://github.com/fitzss/hermes-plugin-valun","docs":null,"tools":["valun_status","valun_directory","valun_inbox","valun_deal","valun_propose","valun_respond","valun_deliver","valun_review_delivery","valun_set_limits"],"hooks":["pre_tool_call"],"middleware":[],"env":["VALUN_AGENT_TOKEN","VALUN_SIGNING_SECRET"],"known_issues":"Experimental pilot: PC (pilot credits) have no monetary value; the pilot Basis tracker has no blockchain connection and no reserve; issuing a credit note creates an outstanding promise and nothing is ever settled.; Joining: `hermes valun join --sandbox` needs no invite (a sandbox-only participant that deals only with the always-on sandbox agents, small limits, one week); dealing with other participants needs an invite code from the Valun pilot operator (`hermes valun join`).; Windows: with Hermes v0.22.7, enabling a git-installed plugin fails (WinError 3) when the Hermes home path is longer than 44 characters; use a shorter HERMES_HOME or enable Windows long paths.; The tools call the Valun server you configure (default https://valun-desk.fly.dev, run by the Valun project).","state":"merged","pr":150363,"prs":[{"n":150363,"state":"merged","created":"2026-11-06T23:56:53Z"}],"created":"2026-11-06T23:56:53Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dike","title":"dike","summary":"Diké: checks every article citation of Chilean law in a legal brief against a local, hash-identified copy of 25 statutes (Ley Chile), and refuses to certify what it cannot prove. Each citation comes back verified, with its identifier, source URL and text SHA-256, or unverified with the engine's reason (AMBIGUOUS, UNRESOLVABLE). One tool (dike_verificar_citas, text or a .md/.txt path) and one command (/dike-verificar). Spanish output. Not legal advice: it never certifies that a provision supports an argument, nor that a dated copy is today's text.","disclosure":"each call runs the vendored Diké engine as a subprocess (same interpreter, no shell, 300 s timeout, minimal environment without agent credentials; PYTHONPATH carries the Hermes process's site-packages so the engine finds its dependencies; not a sandbox). Reads only the text passed or the named regular .md/.txt file (no symlinks, 400,000 bytes max). Writes only under HERMES_HOME/plugin-data/dike: the corpus, unpacked once from the bundled tarball after a SHA-256 check (tarfile data filter) and re-checked against recorded hashes on every call, temporary files removed after each call, and engine caches. No network after dependency install, no hooks, no background processes, no telemetry, no credentials, never signs.","category":"tools","platforms":["linux"],"maintainer":"Grizaceo","author":"Grizaceo","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/Grizaceo/hermes-dike","docs":"https://github.com/Grizaceo/hermes-dike#readme","tools":["dike_verificar_citas"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150360,"prs":[{"n":150360,"state":"merged","created":"2026-11-06T23:44:12Z"},{"n":152965,"state":"open","created":"2026-11-10T22:43:31Z"}],"created":"2026-11-06T23:44:12Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/banner.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/01-citation-check.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/02-two-statutes-refused.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/03-pseudonymization.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/04-brief-chat.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/05-corpus-graph.png","https://raw.githubusercontent.com/Grizaceo/hermes-dike/cbd8322317de2d42162385de7646d4b7f7a3c2bd/docs/media/screenshots/06-article-node.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dike.webp"},{"name":"hermagotchi","title":"Hermagotchi","summary":"Co-op virtual pets for Hermes: raise a pet, fight deterministic async battles, earn Bits, unlock cosmetics up to mythic tier, climb a seasonal leaderboard, and chat, DM, challenge and taunt other players in a native pane in the Hermes web app and Desktop (Habitat, Battle, Shop, Leaderboard and Social tabs plus a persistent lobby rail). Hermes gets 8 composable tools (hermagotchi_status, hermagotchi_pet, hermagotchi_goals, hermagotchi_challenge, hermagotchi_battle, hermagotchi_shop, hermagotchi_social, hermagotchi_meta).","disclosure":"by default the tools run an offline practice simulation (in-memory, no network, reset on Hermes restart). Only when the owner sets the network_enabled plugin setting do they act on the real game server, using the device session the pane paired; that state persists server-side. hermagotchi_status health/me report the active backend. Agent autonomy (autonomy-gated game actions such as practice battles) and agent chat need their own settings and are off by default; the agent can never buy items, and pet care/adopt are not gated by the autonomy setting. The network, autonomy and chat settings can also be switched on by the HERMAGOTCHI_NETWORK_ENABLED, HERMAGOTCHI_AGENT_AUTONOMY_ENABLED and HERMAGOTCHI_AGENT_CHAT_ENABLED environment variables. Network traffic goes over HTTPS only (plain HTTP is refused except loopback) to the game API base URL the user configures (the optional hosted API at api.hermagotchi.rizz.click run by the maintainer, or a self-hosted server from docs/deploy). It sends pet, battle, shop and social actions and, if agent chat is enabled, lobby messages, DMs and taunts, which that server stores; other players' messages come back to the agent marked as third-party text. The pairing session token lives in a 0600 file under Hermes plugin data and is never returned by tools or logged. Online, hermagotchi_status op=pair refuses user_code/revoke_device_id (unsupported_online); approve and revoke stay human pane actions so lobby/DM prompt injection cannot attach a stranger's device. The dashboard tab renders with the dashboard SDK's React and authedFetch, used only for same-origin plugin asset and API routes; the Desktop pane uses ctx.rest only (no remote code, no host-token access). No hooks, no middleware, no subprocesses, no inbound ports, and no secrets are requested (requires_env is empty). The dashboard plugin API only proxies an allowlisted set of game routes for the pane.","category":"general","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.1.3","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/hermagotchi","docs":"https://github.com/mojomast/hermagotchi#readme","tools":["hermagotchi_status","hermagotchi_pet","hermagotchi_goals","hermagotchi_challenge","hermagotchi_battle","hermagotchi_shop","hermagotchi_social","hermagotchi_meta"],"hooks":[],"middleware":[],"env":[],"known_issues":"Agent tools default to an offline practice simulation; set network_enabled (plugin setting) to play the real shared game with the pane's paired account. pet rename/set_mode are sim-only. Online pair approve/revoke is pane-only (tool returns unsupported_online).; Multiplayer (ranked battles, leaderboard, social) needs a game server; the hosted API has a signup cap and no self-serve account deletion yet.","state":"merged","pr":150358,"prs":[{"n":150358,"state":"merged","created":"2026-11-06T23:38:28Z"}],"created":"2026-11-06T23:38:28Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/docs/images/hero-hermes-habitat.png","https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/docs/images/shop-don-piedro.png","https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/docs/images/battle-teknium.png","https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/docs/images/leaderboard-southpaw.png","https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/docs/images/social-nous-girl.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermagotchi.webp"},{"name":"hermes-strudel-studio","title":"Hermes Strudel Studio","summary":"Local Strudel live-coding studio for Hermes: write patterns, hit Play, and let the agent compose alongside you with one poptart_studio tool and a Desktop SandboxedFrame pane.","disclosure":"lazily starts a Node sidecar on 127.0.0.1 with a random per-install token in private profile plugin-data (mode 0600 on POSIX; inherited user-private ACL on Windows; token never reaches guests or the browser); evaluated music runs only after user Play/apply in isolated frames (not an OS sandbox); Strudel patterns may fetch samples/CDN over the network; audio output to the host. AGPL-3.0-or-later with toaster GPL notices — review LICENSE and NOTICE before redistribute. Self-contained catalog install; Node 22+ is required at runtime, not npm or a local build. No self-updater.","category":"desktop","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.2.5","requires_hermes":">=0.22.7","repo":"https://github.com/mojomast/poptart","docs":"https://github.com/mojomast/poptart/blob/42356ddb9eff2eea2419bbd223ee159f353e4632/INTEGRATION.md","tools":["poptart_studio"],"hooks":[],"middleware":[],"env":[],"known_issues":"Windows import and locking fallback are mock-tested; native Windows runtime remains unverified.; Physical speaker check and non-Chromium browsers are not fully covered in automated tests.; License stack is AGPL-3.0-or-later plus toaster GPL notices; confirm redistributability for your use.","state":"merged","pr":150357,"prs":[{"n":150357,"state":"merged","created":"2026-11-06T23:33:39Z"}],"created":"2026-11-06T23:33:39Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/docs/assets/banner.png","https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/docs/assets/hermes-webapp.png","https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/docs/assets/studio-playing.png","https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/docs/assets/layout-right-library.png","https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/docs/assets/plugin-card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-strudel-studio.webp"},{"name":"hermes-web-crawl4ai","title":"hermes-web-crawl4ai","summary":"Self-hosted Crawl4AI extraction and bounded, policy-checked website crawling.","disclosure":"","category":"web","platforms":["linux","macos","windows"],"maintainer":"axAilotl","author":"axAilotl","version":"0.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/axAilotl/hermes-web-crawl4ai","docs":"https://github.com/axAilotl/hermes-web-crawl4ai#readme","tools":["crawl4ai_crawl"],"hooks":[],"middleware":[],"env":[],"known_issues":"Uses Hermes URL-policy helpers outside the documented plugin API; tested against 0.23.0 and main.","state":"merged","pr":150355,"prs":[{"n":150355,"state":"merged","created":"2026-11-06T23:33:15Z"}],"created":"2026-11-06T23:33:15Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fluent","title":"fluent","summary":"Your agent becomes fluent in any program: checks the agent's terminal commands against the real --help and man pages of the programs you adopt, before they run. A long option the installed version doesn't have is stopped with the closest real one (--crf → -crf, --ammend → --amend), and subcommands it classifies as destructive (gh repo delete, docker image prune, rsync --delete) go to Hermes's own approval prompt. Adds /fluent (adopt, show, forget, undo, mode), an @cli:<program> context reference and a dashboard tab that draws the agent's tree (a branch per program, a fruit per error caught). Tested on 311 real valid commands (0 blocked) and 17 typical AI mistakes (17 caught).","disclosure":"/fluent adopt <program> runs that program on the host (not the terminal backend) with --version/-version/version/-V and --help/-h/help, plus <command> --help per subcommand only when the help carries a git, Go/cobra, argparse or click marker (git: --list-cmds and <command> -h; ffmpeg: -h full; curl: --help all; git filter-branch is never run): no shell, closed stdin, empty temp cwd, own process group, filtered environment (PATH, HOME, USER, LOGNAME, TMPDIR, XDG dirs; no keys or tokens), 5 s per call, about 25 s per program; a program that ignores those arguments runs normally. It reads man pages and terminal.backend from config.yaml; in block mode (default) pre_tool_call vetoes commands with options the installed program lacks and escalates destructive ones to Hermes's approval prompt with a per-subcommand rule key, never approving anything (unattended runs follow Hermes policy, default deny); posts one-line notices; writes only under its plugin data directory; makes no network, model or telemetry calls.","category":"tools","platforms":["linux","macos"],"maintainer":"Bruno-coder21","author":"Bruno-coder21","version":"1.0.1","requires_hermes":">=0.23.0","repo":"https://github.com/Bruno-coder21/fluent","docs":"https://github.com/Bruno-coder21/fluent/blob/182c4301f2437e784e9022f1f38576e1d68c3f5f/README.md","tools":[],"hooks":["pre_tool_call","post_tool_call","transform_terminal_output"],"middleware":[],"env":[],"known_issues":"Only acts on the local terminal backend and on long options of commands it read with high confidence; it trusts the binary on Hermes's own PATH, so a different copy on a session PATH (venv, nvm, direnv) can be judged against the wrong help.; Risk classes are name and help-summary heuristics that only add prompts: many destructive forms are not asked about (git stash drop, gh api -X DELETE, rsync --delete-excluded), and its copy of Hermes's own patterns can drift, so a command may occasionally be asked twice.; In cron and other unattended runs, commands fluent flags as destructive are refused under Hermes's default approval policy; use /fluent risk off or approvals.cron_mode for jobs that must delete.; Live adoption progress and 'fluent caught' notices need the in-process gateway (default plugins.isolation). Tested on Linux; Windows is untested.","state":"merged","pr":150353,"prs":[{"n":150353,"state":"merged","created":"2026-11-06T23:27:06Z"}],"created":"2026-11-06T23:27:06Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Bruno-coder21/fluent/182c4301f2437e784e9022f1f38576e1d68c3f5f/docs/banner.png","https://raw.githubusercontent.com/Bruno-coder21/fluent/182c4301f2437e784e9022f1f38576e1d68c3f5f/docs/screenshots/agent-tree.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/fluent.webp"},{"name":"blazephoenix","title":"BlazePhoenix","summary":"Swap quotes from BlazePhoenix, the on-chain DEX aggregator, measured on the user's own RPC and verified locally: net output, Phoenix Check verdict and unsigned Router calldata checked field by field before anything is signed. Base, Ethereum, Optimism, Arbitrum, Robinhood Chain.","disclosure":"HTTPS calls to blazephoenix.xyz (prepare/decode, pure, no RPC; receives token addresses, amount, recipient and minimum, never the RPC URL) and eth_chainId/eth_call to the RPC URL the user sets. Never signs, never sends, never handles keys; no shell, no files, no background processes, no telemetry. Standard library only.","category":"tools","platforms":[],"maintainer":"Mitra","author":"blazephoenixxyz-crypto","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/blazephoenixxyz-crypto/blazephoenix-hermes-plugin","docs":"https://github.com/blazephoenixxyz-crypto/blazephoenix-hermes-plugin#readme","tools":["blazephoenix_quote","blazephoenix_verify_calldata","blazephoenix_chains"],"hooks":[],"middleware":[],"env":["BLAZEPHOENIX_RPC_BASE"],"known_issues":"","state":"merged","pr":150351,"prs":[{"n":150351,"state":"merged","created":"2026-11-06T23:12:09Z"}],"created":"2026-11-06T23:12:09Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"telos","title":"Telos","summary":"Telos — workspace routers and canonical models through one OpenAI-compatible endpoint; browser sign-in (PKCE) or an existing Telos API key.","disclosure":"sends your prompts, model discovery and your Telos key to app.telosplatforms.com (or TELOS_BASE_URL), which routes inference to the upstream providers your workspace policy allows; requests carry the Hermes conversation ID as metadata.conversation_id.","category":"models","platforms":[],"maintainer":"TelosPlatforms","author":"telosplatforms1","version":"0.4.0","requires_hermes":">=0.22.7","repo":"https://github.com/TelosPlatforms/hermes-telos-provider","docs":"https://github.com/TelosPlatforms/hermes-telos-provider#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The model pickers show IDs such as route:orbit; Hermes does not yet render provider display names.; Context and output limits are not published by Telos /v1/models; Hermes uses its own metadata heuristics.","state":"merged","pr":150350,"prs":[{"n":150350,"state":"merged","created":"2026-11-06T23:04:21Z"}],"created":"2026-11-06T23:04:21Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lampstand","title":"lampstand","summary":"lampstand turns one Hermes into a team that remembers who it works for. Plant a house (a git repository you own) and every chat started in it works under the same written principles and rules, keeps one shared record of tasks, decisions, knowledge and reminders as plain Markdown, and can wake the other chats through shared rooms, including from a Telegram, Discord or Slack chat. Nine house tools plus role-briefed delegation, /lampstand, a desktop House page (five lamps for the house's checks, work, inbox, knowledge, the constitution with adopt and strike, rooms, rhythm, health), a status-bar lamp and transcript cards. Nothing becomes a rule until you adopt it.","disclosure":"runs its own Node CLI (Node 22.13+) and git in the house, and each act lands as a git commit with no per-call approval; rooms are off until you install vincitamore/agora (not the catalog's agora entry) and grant allow_gateway_injection, after which it runs that agora checkout from PATH with the gateway's environment, a background thread polls listening chats every 15 s, and a room message starts a full agent turn with that chat's tools and approval mode; reads the profile's state.db read-only to route wakes; the agent/operator split is an environment marker, not a security boundary; no network calls of its own, no telemetry, no stored credentials.","category":"tools","platforms":[],"maintainer":"vincitamore","author":"vincitamore","version":"0.3.1","requires_hermes":">=0.22.6","repo":"https://github.com/vincitamore/lampstand","docs":"https://github.com/vincitamore/lampstand/blob/18354a0476a3b55e4926ba0706421740a4c8a5a7/docs/install-hermes.md","tools":["lampstand_delegate","lampstand_house","lampstand_tasks","lampstand_inbox","lampstand_knowledge","lampstand_reminders","lampstand_propose","lampstand_room_post","lampstand_room_read","lampstand_room_listen"],"hooks":["pre_llm_call","post_llm_call","pre_verify","post_compaction","post_gateway_admission"],"middleware":[],"env":[],"known_issues":"Needs Node.js 22.13 or later and git; without Node the house tools and the House page say that Node is missing.; The desktop House page ships switched off: turn it on under Capabilities, Plugins, then restart the gateway once so its backend routes mount.; Rooms need vincitamore/agora 0.2.5+ (npm install -g github:vincitamore/agora#v0.2.5, never the npm package named agora) and `hermes config set plugins.entries.lampstand.allow_gateway_injection true`.","state":"open","pr":150349,"prs":[{"n":150349,"state":"open","created":"2026-11-06T23:02:31Z"}],"created":"2026-11-06T23:02:31Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vincitamore/lampstand/cb10d05f7f60ba804f957a485ce787d2674388aa/docs/screenshots/1-overview.png","https://raw.githubusercontent.com/vincitamore/lampstand/cb10d05f7f60ba804f957a485ce787d2674388aa/docs/screenshots/2-constitution.png","https://raw.githubusercontent.com/vincitamore/lampstand/cb10d05f7f60ba804f957a485ce787d2674388aa/docs/screenshots/3-work.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lampstand.webp"},{"name":"construct","title":"Construct","summary":"Hermes researches a thing and writes one exact, checked description of it: named parts at real sizes, how they fit, open and move, and how each is known, measured, designed or guessed. Construct turns that description into a live hologram in the chat and everything downstream: glTF with named parts and working joints for Blender, Godot, Unity or Unreal; exact CAD shapes (STEP, FreeCAD); prints and model kits with booklets; films; and NetLogo runs drawn as constructs. It reconstructs what exists, from a building to your own chair, and designs what does not: wholly new objects grounded in real counterparts (an invented ice-hauling spacecraft, reasoned from real spacecraft studies), or a physical product from software's documentation (a synthesizer's manual made into a hardware instrument concept), keeping evidence apart from design.","disclosure":"runs Construct's bundled Python (source, no binaries) in local subprocesses; optionally runs local programs the user already has (a Chromium-family browser headless for review stills, ffmpeg for films, FreeCAD for CAD, Blender for film renders, NetLogo for model runs), each found on the machine, never downloaded; reads only files the user names and writes only in its own data folder; long work (films, NetLogo runs, large builds) runs as local background jobs with progress in the chat; no network calls, no credentials, no telemetry. Disclosure — runs Construct's bundled Python (source, no binaries) in local subprocesses with a minimal allowlisted environment (no provider keys); optionally runs local programs the user already has (a Chromium-family browser headless over a local debugging port for review stills, ffmpeg, FreeCAD, Blender, and NetLogo/Java), each found via the plugin's settings, `CONSTRUCT_*` variables or PATH, never from tool arguments and never downloaded; NetLogo runs with agent-written setup/go code or a model outside the installed Models Library always go through Hermes' approval prompt and are refused in scheduled runs; other program runs ask only when the opt-in \"Ask before running programs\" setting is on; reads model and scene files at paths the agent or user gives it, and writes only in its data folder and the user-chosen projects folder; long work runs as local background jobs; no network calls, no credentials, no telemetry.","category":"tools","platforms":[],"maintainer":"rtmandreyev","author":"rtmandreyev","version":"1.2.1","requires_hermes":">=0.22","repo":"https://github.com/rtmandreyev/construct","docs":"https://github.com/rtmandreyev/construct/blob/main/hosts/hermes/construct/README.md","tools":["construct_start","construct_edit","construct_check","construct_inspect","construct_build","construct_review","construct_export","construct_film","construct_job","construct_command","construct_netlogo_run","construct_netlogo_draw"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Tested end to end on macOS (Hermes Desktop and CLI); Linux and Windows are untested.","state":"merged","pr":150346,"prs":[{"n":150346,"state":"merged","created":"2026-11-06T22:58:19Z"}],"created":"2026-11-06T22:58:19Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/docs/media/new-1.2-hermes.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/docs/media/hermes-villa-built.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/docs/media/hermes-villa-provenance.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/docs/media/hermes-villa-gltf.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/docs/media/hermes-villa-kit.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/24a1bc838076c94728376850d461b383d003caa9/examples/villa-savoye/blender.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/6c1cfdfbb85ff6ed1bd93dcaab7947f493e3d595/docs/media/hermes-villa-built.jpg","https://raw.githubusercontent.com/rtmandreyev/construct/6c1cfdfbb85ff6ed1bd93dcaab7947f493e3d595/docs/media/hermes-villa-provenance.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/construct.webp"},{"name":"hotwire","title":"Hotwire","summary":"Analog circuit design bench: Hermes writes a SPICE netlist from plain English, proves it against measurable specs (gain, corner frequencies, distortion, bias, current draw, part stress) with Hotwire's own circuit simulator, plays your guitar riff or WAV through the simulated circuit so you can hear it, runs Monte Carlo yield over real part tolerances, explains what each part does, matches knob settings to a recording of a real pedal, tunes values to standard E-series parts, and lays the result out on a stripboard with a parts list and KiCad export. Ships a verified reference library (filters, transistor, JFET and MOSFET stages, overdrive, fuzz, tone stacks, wah), an analog-design skill, a /hotwire command and a Desktop Bench pane with live knobs.","disclosure":"runs entirely locally with numpy (installed with consent); no network calls, no credentials, no shell commands; writes designs, plots and audio under <HERMES_HOME>/plugin-data/hotwire/ and reads only the .cir/.wav files you or the agent name; the Desktop half plays audio in the browser (microphone only after you press Live and grant access).","category":"tools","platforms":[],"maintainer":"RohanGlitched","author":"RohanGlitched","version":"1.0.1","requires_hermes":">=0.23.0","repo":"https://github.com/RohanGlitched/hotwire","docs":"https://github.com/RohanGlitched/hotwire#readme","tools":["circuit_check","circuit_simulate","circuit_audition","circuit_tune","circuit_explain","circuit_match","circuit_yield","circuit_bom","circuit_build","circuit_export","circuit_library"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150340,"prs":[{"n":150340,"state":"merged","created":"2026-11-06T22:40:07Z"}],"created":"2026-11-06T22:40:07Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/cover.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/bench-light.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/listen-light.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/live-light.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/board-light.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/chat-light.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/c66a0dd354a034da1bad4fe56bd4945f1e5c8e24/docs/desktop/bench-dark.png","https://raw.githubusercontent.com/RohanGlitched/hotwire/main/docs/desktop/bench-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hotwire.webp"},{"name":"hackathon-judge","title":"hackathon-judge","summary":"Source-linked Hermes hackathon and catalog preflight with explicit human review gates.","disclosure":"the optional `validate` action runs `hermes plugins validate` on the plugin directory the agent names, through Hermes's terminal tool, which imports and executes that candidate plugin's code; it is gated only by a `trusted_code` flag the agent sets, and no approval prompt appears for that command. The default audit is static and read-only, with no network calls.","category":"tools","platforms":["linux"],"maintainer":"Brianmacu-BMS","author":"Brianmacu-BMS","version":"0.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/Brianmacu-BMS/hermes-hackathon-judge","docs":null,"tools":["hackathon_judge"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150334,"prs":[{"n":150334,"state":"merged","created":"2026-11-06T22:25:16Z"},{"n":151557,"state":"closed","created":"2026-11-08T23:58:53Z"}],"created":"2026-11-06T22:25:16Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"boxcompute","title":"BoxCompute","summary":"Give Hermes its own cloud Linux VMs through the hosted BoxCompute MCP server (Streamable HTTP, OAuth 2.1 + DCR): create and start VMs, run commands and background processes, read and edit files under /workspace, and open one-hour public preview links, with the sandboxes workflow skill bundled. Portable Agent Plugins v1 package (skills/ only; the server is added by the sign-in command below).","disclosure":"hosted-only connector with no local code: every tool call goes to the vendor's remote MCP server at mcp.boxcompute.ai, and commands and files run in the user's BoxCompute VMs, not on their machine. A running VM spends the user's BoxCompute credit per minute until it stops (it stops itself 30 minutes after its last command, file or preview call); preview_create makes a URL anyone can open for one hour; sandbox_delete permanently removes a VM and its files; email_send emails only the account owner's own address. Hermes itself does not prompt before these tools unless you set `trust: untrusted` on the boxcompute MCP server. No telemetry. The server and its OAuth sign-in are added with `hermes mcp add boxcompute --url https://mcp.boxcompute.ai/mcp --auth oauth --connect-timeout 300`.","category":"tools","platforms":[],"maintainer":"BoxCompute","author":"farhan-helmy","version":"0.1.1","requires_hermes":"","repo":"https://github.com/boxcompute/hermes-plugin","docs":"https://github.com/boxcompute/hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign-in needs one extra command after install, because a portable plugin cannot declare an OAuth MCP server: hermes mcp add boxcompute --url https://mcp.boxcompute.ai/mcp --auth oauth --connect-timeout 300","state":"merged","pr":150325,"prs":[{"n":150325,"state":"merged","created":"2026-11-06T22:13:52Z"}],"created":"2026-11-06T22:13:52Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/boxcompute/hermes-plugin/de27f5719372905686474f8a7650c591c63e899c/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/boxcompute.webp"},{"name":"coldstart","title":"Coldstart","summary":"Evidence-gated answering with a provenance hierarchy, for any local AI deployment. Material you feed it (internal: transcripts, contracts, code, spreadsheets, PDFs, emails) is retrieved first and cited first; public reference material is used only when internal material does not cover the question, and every answer that leans on it is labelled as public; when nothing covers the question the reply is refused instead of invented. Every reply is then checked mechanically against the passages that turn actually retrieved -- quoted spans must be verbatim, and figures, dates, URLs and identifiers must appear in a retrieved passage (line and passage references are masked so citations are not mistaken for claims); prose paraphrase is reported but never blocked. No model is asked to grade its own answer. The clearance rule covers every path that touches private material: the model is taken from the turn the host actually runs (`pre_llm_call` reports it, recorded per session), so a session switched with `/model` or a turn that lands on a cloud fallback counts as remote; when it is not local, internal passages are withheld, `corpus_ask` requires both its endpoint and the turn to be local and otherwise answers from public material only, and `corpus_audit` / `/trust` refuse rather than sample internal passages into it. `/trust` runs a battery against the configured deployment and scores it: invented quote and invented figure must be caught, verbatim quote and paraphrase must pass, and the pipeline must abstain on questions the corpus cannot answer. Ships an agent half (2 hooks, 3 tools, 1 command, 1 skill) and a Desktop half (evidence pane, status-bar chip, mode switch, audit button) over the plugin's own `/api/plugins/` backend. Stdlib only -- no embeddings, no third-party dependency, no model call for retrieval.","disclosure":"- reads only the directories configured in `corpus_roots` / `public_roots` plus its own index under `$HERMES_HOME/plugin-data/coldstart/`; makes model calls through Hermes's configured model or the OpenAI-compatible `endpoint` the user sets; shells out to `pdftotext` and `tesseract` only when present and only for the user's own files; optional `COA_API_KEY` is read through Hermes's secret scope, never from a file; no telemetry, no self-update. Enabling the plugin holds the reply until the gate has run, so token-by-token streaming is off while it is enabled. Disclosure — reads only the directories configured in `corpus_roots` / `public_roots` plus its own index under `$HERMES_HOME/plugin-data/coldstart/`, which stores copies of the indexed passages; makes model calls through Hermes's configured model or the OpenAI-compatible `endpoint` the user sets; judges a model local from its URL host (loopback, RFC1918, Tailscale `100.64.0.0/10`, `.local`/`.lan`/`.internal`/`.home` names), any configured fallback, and the model name the turn reports compared by its last path segment, so a local proxy that forwards to a cloud API, or a `/model` switch to a cloud model with the same name, counts as local; shells out to `pdftotext` and `tesseract` only when present and only for the user's own files, with a minimal environment; optional `COA_API_KEY` is read through Hermes's secret scope, never from a file; the Desktop pane's mode switch writes `plugins.entries.coldstart.settings.strictness`; no telemetry, no self-update. Enabling the plugin holds the reply until the gate has run, so token-by-token streaming is off while it is enabled, even with the gate set to `off`.","category":"tools","platforms":[],"maintainer":"zvporter-ops","author":"zvporter-ops","version":"0.3.1","requires_hermes":">=0.22.6","repo":"https://github.com/zvporter-ops/coldstart","docs":"https://github.com/zvporter-ops/coldstart#readme","tools":["corpus_ask","evidence_report","corpus_audit"],"hooks":["pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150323,"prs":[{"n":150323,"state":"merged","created":"2026-11-06T22:12:21Z"}],"created":"2026-11-06T22:12:21Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-sentinel","title":"hermes-sentinel","summary":"Deterministic runtime circuit breaker and local execution auditor.","disclosure":"blocks any turn whose new user message contains a credential-shaped string; refuses the third consecutive identical tool call (including legitimate repeated polls) until `/sentinel reset`; redacts credential-shaped text in every tool result and truncates each result to 4000 characters / 100 lines before the model sees it; stores audit events (redacted 200-char argument previews) in `<HERMES_HOME>/plugin-data/hermes-sentinel/sentinel_audit.db`, falling back to memory-only or no auditing; no network calls, subprocesses or telemetry.","category":"tools","platforms":[],"maintainer":"Justin Strange","author":"teknium1","version":"0.1.1","requires_hermes":">=0.22.6","repo":"https://github.com/SaltProphet/hermes-sentinel","docs":null,"tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151879,"prs":[{"n":151879,"state":"merged","created":"2026-11-09T11:19:55Z"},{"n":150321,"state":"closed","created":"2026-11-06T22:08:52Z"}],"created":"2026-11-06T22:08:52Z","late":false,"said":true,"update":false,"discussion":5,"images":[],"videos":[],"x":["https://x.com/Justin_Strange_/status/2119174300380885402"],"youtube":[],"thumb":null},{"name":"skysay","title":"Skysay","summary":"Inspect your Skysay workspace, voice agents, phone numbers and call activity in Hermes. Read-only remote MCP with one-time OAuth setup; no calls, messages, purchases or account changes.","disclosure":"","category":"tools","platforms":[],"maintainer":"Skysay","author":"skyzer","version":"1.0.0","requires_hermes":">=0.23.0","repo":"https://github.com/skysay-ai/skysay-mcp","docs":"https://github.com/skysay-ai/skysay-mcp/blob/5a46bdbbf9fe0c59ec361f6085499300e265b212/plugins/hermes/skysay/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150320,"prs":[{"n":150320,"state":"merged","created":"2026-11-06T22:08:12Z"}],"created":"2026-11-06T22:08:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hostyourai","title":"hostyourai","summary":"HostYourAI provider profile (hyai/auto, EU-only inference option) and the /hyai task/policy routing command.","disclosure":"bundles an off-by-default hyai-decide skill for typed classify/score/route judgments against HostYourAI's decision API; disabled until explicitly enabled via config.","category":"models","platforms":[],"maintainer":"cogitor","author":"cogitor","version":"0.4.2","requires_hermes":">=0.21.7","repo":"https://github.com/cogitor/hermes-hostyourai","docs":"https://github.com/cogitor/hermes-hostyourai#readme","tools":[],"hooks":["pre_llm_call"],"middleware":["llm_request"],"env":["HOSTYOURAI_API_KEY"],"known_issues":"","state":"merged","pr":150316,"prs":[{"n":150316,"state":"merged","created":"2026-11-06T21:49:13Z"}],"created":"2026-11-06T21:49:13Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/cogitor/hermes-hostyourai/e86d5bf242166cb53dd0362cf960d91e7741194a/docs/banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hostyourai.webp"},{"name":"cooldown","title":"cooldown","summary":"Checks every package Hermes is about to install with pip, uv, poetry, pipx, npm, pnpm, yarn, bun or npx. Blocks versions OSV lists as malicious, and holds the install in Hermes's own approval prompt when a release is younger than 3 days (the rule Hermes uses for its own dependencies), the package is brand new, or the name is not on the registry.","disclosure":"for each package named in an install command the agent runs in the terminal, it sends the package name and version (never your code, files or prompts) to api.deps.dev, registry.npmjs.org, pypi.org and api.osv.dev (keyless, no account, no telemetry); it keeps the last 50 checked install commands (first 300 characters each, as typed) and their verdicts in its own plugin state; a lookup can add up to about 20 seconds before an install command runs; it never runs the install itself and only ever blocks or asks through Hermes' approval prompt.","category":"tools","platforms":[],"maintainer":"Savage27z","author":"Savage27z","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/Savage27z/cooldown","docs":"https://github.com/Savage27z/cooldown#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150312,"prs":[{"n":150312,"state":"merged","created":"2026-11-06T21:34:51Z"}],"created":"2026-11-06T21:34:51Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"loredocs","title":"LoreDocs","summary":"LoreDocs knowledge vaults over MCP: store, version, tag and search project documents, and inject them into agent context. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only: Hermes runs `uvx loredocs==0.1.33` as a local stdio MCP server.","disclosure":"runs the loredocs package (BUSL-1.1, with lancedb, fastembed and onnxruntime) via `uvx loredocs==0.1.33` as a local stdio MCP server; stores documents under ~/.loredocs (or LOREDOCS_ROOT), shared with other LoreDocs clients; its add-document tool can read any local file path the agent passes into a vault; no telemetry; a paid Pro license enables semantic search, which downloads a Hugging Face embedding model once.","category":"tools","platforms":[],"maintainer":"labyrinth-analytics","author":"labyrinth-analytics","version":"0.1.33","requires_hermes":">=0.21.1","repo":"https://github.com/labyrinth-analytics/loredocs","docs":"https://github.com/labyrinth-analytics/loredocs?tab=readme-ov-file#loredocs","tools":[],"hooks":[],"middleware":[],"env":["LOREDOCS_PRO"],"known_issues":"With some models, long multi-line tool calls (for example a large vault_add_doc body) fail with \"tool_call 'calls' is not valid JSON\" (Hermes #119640). Workaround: set tools.tool_search.enabled to \"off\" in ~/.hermes/config.yaml.","state":"merged","pr":150310,"prs":[{"n":150310,"state":"merged","created":"2026-11-06T21:30:44Z"}],"created":"2026-11-06T21:30:44Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"injection-shield","title":"injection-shield","summary":"Injection-Shield — defends Hermes agents against prompt-injection attacks via tool outputs and untrusted content. Validates LLM responses, audits risky tool calls. Modes: audit / enforcement.","disclosure":"privacy-shield sees every user message, outgoing LLM request and assistant reply. Its llm_request middleware rewrites the user messages in each cloud request (current prompt, earlier turns and injected context; Ollama is exempt) to replace detected personal data with tokens, and its transform_llm_output hook puts the real values back into replies on whitelisted channels (telegram, desktop, cli, kanban by default; cron only when you opt in). The token-to-value mapping is kept AES-256-GCM-encrypted in `~/.hermes/privacy/mapping.db` (restored attachments go under `~/.hermes/privacy/restore/`), and the audit trail is written to `~/.hermes/profiles/default/workspace/privacy-shield-audit.jsonl` plus a rotating log, whichever profile is running. The plugin reads its key `PRIVACY_SHIELD_KEY` through the Hermes secret scope, and the restore chat id from `PRIVACY_SHIELD_RESTORE_CHAT_ID` or your `pass` entry `hermes/telegram/chat_id`. The dashboard/Desktop Controls pane and `privacy-shield set-mode` write its settings into `config.yaml` under `plugins.entries.privacy-shield`. The optional doctor/cleanup shell wrappers under `scripts/cron/` are never installed by the plugin: if you schedule them yourself, they read the key from your `pass` store and call a `telegram-alert.sh` under `$HERMES_HOME/profiles/sysadmin/scripts/` if one exists. The plugin itself makes no network calls. Disclosure — injection-shield sees every tool call and tool result, MCP tool descriptions, each user prompt with its conversation history, and every model reply. It adds a firewall instruction block to each prompt as hook context. In enforcement mode it can block tool calls and replace suspicious tool results or model output (the default is audit mode, which only logs). It writes an audit log of detected attempts to `~/.hermes/profiles/<profile>/workspace/05-Logs-Snapshots/prompt-injection-attempts.log`, and keeps MCP trust/integrity hash stores under `~/.hermes/profiles/default/workspace/05-Logs-Snapshots/`. When you set `INJECTION_SHIELD_TELEGRAM_CHAT_ID` and `INJECTION_SHIELD_TELEGRAM_BOT_TOKEN`, it sends alert summaries (violation types, counts and time, no matched text) to `api.telegram.org` with your own bot token. Its dashboard/Desktop controls pane saves settings into `config.yaml` under `plugins.entries.injection-shield`. It installs no cron or launchd jobs.","category":"general","platforms":[],"maintainer":"MOTHR","author":"MOTHR","version":"0.8.2","requires_hermes":">=0.21.5","repo":"https://github.com/MOTHR/hermes-security-suite","docs":"https://github.com/MOTHR/hermes-security-suite#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","transform_tool_result","transform_llm_output"],"middleware":[],"env":["INJECTION_SHIELD_TELEGRAM_BOT_TOKEN"],"known_issues":"Formal multi-agent security audit covers privacy-shield; the equivalent formal audit for injection-shield is still pending (status: triple peer review + 410+ regression tests; see SECURITY-AUDIT.md in the repo).","state":"merged","pr":150309,"prs":[{"n":150309,"state":"merged","created":"2026-11-06T21:28:37Z"}],"created":"2026-11-06T21:28:37Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"privacy-shield","title":"privacy-shield","summary":"Privacy-Shield — tokenizes personal data (PII) in LLM output before sending it to cloud providers, with encrypted AES-256-GCM mapping and whitelisted restore. Modes: off / audit / restore. Configurable via Desktop-Controls or YAML.","disclosure":"","category":"general","platforms":[],"maintainer":"MOTHR","author":"MOTHR","version":"1.9.3","requires_hermes":">=0.21.5","repo":"https://github.com/MOTHR/hermes-security-suite","docs":"https://github.com/MOTHR/hermes-security-suite#readme","tools":[],"hooks":["pre_llm_call","post_llm_call","post_api_request","transform_llm_output","on_session_finalize"],"middleware":["llm_request"],"env":["PRIVACY_SHIELD_KEY"],"known_issues":"Formally audited (multi-agent audit, Run 4 = GO for v1.7.6; see SECURITY-AUDIT.md in the repo); 11 medium/low findings remain tracked in the audit ledger.","state":"merged","pr":150309,"prs":[{"n":150309,"state":"merged","created":"2026-11-06T21:28:37Z"}],"created":"2026-11-06T21:28:37Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"slopcore","title":"slopcore","summary":"Slopcore — the verified music-video pipeline as Hermes tools. Intake a finished","disclosure":"","category":"tools","platforms":[],"maintainer":"ChrisAaronNewton","author":"ChrisAaronNewton","version":"0.1.0","requires_hermes":"","repo":"https://github.com/ChrisAaronNewton/hermes-slopcore","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":150304,"prs":[{"n":150304,"state":"open","created":"2026-11-06T21:21:37Z"}],"created":"2026-11-06T21:21:37Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"garmin-connect","title":"Garmin Connect (unofficial)","summary":"Unofficial community plugin for Garmin Connect data through Garmin's official Personal API: sleep, HRV, Body Battery, stress, steps, heart rate, activities, weight, heart-rate training load and fitness age, with deterministic baselines and trend flags (garmin_trends), a /garmin command, an optional one-line daily context, a morning readiness brief automation and a Hermes Desktop readiness panel. Fourteen read-only tools. The key is entered in Hermes Desktop under Settings > Plugins > garmin-connect (or with hermes config set), stored in the profile's .env as GARMIN_PERSONAL_API_KEY and read through Hermes's secret route.","disclosure":"Unofficial, not affiliated with Garmin. Contacts only personal.connectapi.garmin.com (personal.connectapi.garmin.cn for region china): GET requests plus one POST that exchanges the user's GARMIN_PERSONAL_API_KEY for a short-lived token, which is kept in memory only. Health data in tool results goes to your model provider. With `inject_daily_context` on (off by default), a one-line health summary is added to new chats. A background thread reads the Garmin profile time zone when timezone is auto. `garmin_activity_fit` saves activity ZIPs under the profile's plugin-data folder. No telemetry, no self-update.","category":"tools","platforms":[],"maintainer":"adrianlaborda","author":"adrianlaborda","version":"0.1.0","requires_hermes":">=0.22.2","repo":"https://github.com/adrianlaborda/hermes-garmin","docs":"https://github.com/adrianlaborda/hermes-garmin#readme","tools":["garmin_today","garmin_sleep","garmin_hrv","garmin_body_battery","garmin_stress","garmin_steps","garmin_heart_rate","garmin_activities","garmin_activity","garmin_activity_fit","garmin_body","garmin_trends","garmin_training_load","garmin_fitness_age"],"hooks":["pre_llm_call"],"middleware":[],"env":["GARMIN_PERSONAL_API_KEY"],"known_issues":"","state":"merged","pr":150294,"prs":[{"n":150294,"state":"merged","created":"2026-11-06T21:07:21Z"}],"created":"2026-11-06T21:07:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/adrianlaborda/hermes-garmin/1077ef6c02547cee8ed3ef90e5ae304979fd6cf2/docs/screenshots/pane-light.png","https://raw.githubusercontent.com/adrianlaborda/hermes-garmin/1077ef6c02547cee8ed3ef90e5ae304979fd6cf2/docs/screenshots/pane-dark.png","https://raw.githubusercontent.com/adrianlaborda/hermes-garmin/1077ef6c02547cee8ed3ef90e5ae304979fd6cf2/docs/screenshots/page.png","https://raw.githubusercontent.com/adrianlaborda/hermes-garmin/1077ef6c02547cee8ed3ef90e5ae304979fd6cf2/docs/screenshots/setup.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/garmin-connect.webp"},{"name":"procgen-studio","title":"Procgen Studio","summary":"Image and video backend that draws with code. Your configured model writes SVG/Python drawing programs, which are rendered locally to PNG (and MP4/GIF) with the editable source and a reproducible seed saved next to each image. No image API key, STYLE.md art contracts with six presets, a critic pass with bounded redraws, local seed re-rolls and restyles, /procgen and hermes procgen commands, and a Desktop pane.","disclosure":"no network calls of its own; every model call goes through ctx.llm on the user's configured provider (the procgen_draw / procgen_critic auxiliary slots when pinned); runs model-written Python drawing programs in a separate sandboxed Python process (AST import allowlist, audit hook refusing network, subprocess and file access outside the job directory, CPU/memory/file-size limits, wall-clock timeout; allow_python: false switches to SVG/pixel-only); invokes the system ffmpeg as a subprocess for video only; reads a STYLE.md from the session working directory when it has a preset:/palette: line; writes renders under $HERMES_HOME/plugin-data/procgen-studio/ and $HERMES_HOME/cache/generated/, plus an optional user-configured output folder; no telemetry, credentials, background processes or self-updates. Installs cairosvg (needs the system cairo library), numpy and Pillow.","category":"tools","platforms":[],"maintainer":"iamlukethedev","author":"iamlukethedev","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/iamlukethedev/hermes-procgen-studio","docs":"https://github.com/iamlukethedev/hermes-procgen-studio#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Not for photorealism; it is built for icons, game assets, logos, flat illustrations, scenes, patterns, diagrams, low-poly creatures and motion graphics.; cairosvg ignores SVG filters (no blur); glows and soft shadows are drawn with gradients.; Output quality tracks the configured model's coding ability; small local models produce simpler drawings.","state":"closed","pr":150293,"prs":[{"n":150293,"state":"closed","created":"2026-11-06T21:02:31Z"}],"created":"2026-11-06T21:02:31Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/banner.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/01-icons-ember.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/02-icons-frost.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/03-scene.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/04-logo.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/204b063ca5dcb81c050299b9fcaa47ea5a437553/examples/05-monster.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/a2ecd11c3e12b0c10aa0faecb5d1fb305ea41419/examples/banner.png","https://raw.githubusercontent.com/iamlukethedev/hermes-procgen-studio/a2ecd11c3e12b0c10aa0faecb5d1fb305ea41419/examples/01-icons-ember.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/procgen-studio.webp"},{"name":"openrouter-everything","title":"OpenRouter Everything","summary":"One OpenRouter key for Hermes web search and fetch, image and video generation, voice, decisions, extraction, reranking and embeddings, with per-task model selection and compatibility checks.","disclosure":"sends prompts, documents, search queries, web-fetch URLs, audio and media to OpenRouter (openrouter.ai, or the OPENROUTER_BASE_URL relay the user configures) with the user's key, tagged with fixed HTTP-Referer: https://hermes-agent.nousresearch.com and X-Title: Hermes Agent (OpenRouter Everything) attribution headers; requests can incur charges. Reads local media the user or agent names (credential files and non-image content refused), writes generated media under Hermes' cache, and media URLs returned by the service may be downloaded from other hosts. `hermes openrouter-everything setup` saves OPENROUTER_API_KEY to the profile's .env through Hermes' own writer, and the setup command, the slash command and the agent-callable openrouter_everything_config tool (activate_all / set_model / reset_defaults) rewrite config.yaml to make OpenRouter Everything the web, image, video, TTS and STT provider (enabling STT and turning off gateway routing for those tools).","category":"tools","platforms":[],"maintainer":"dadhalfdev","author":"dadhalfdev","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/dadhalfdev/openrouter-everything","docs":"https://github.com/dadhalfdev/openrouter-everything#readme","tools":["openrouter_decide","openrouter_extract_fields","openrouter_rerank","openrouter_embed","openrouter_everything_config"],"hooks":[],"middleware":[],"env":["OPENROUTER_API_KEY"],"known_issues":"","state":"merged","pr":150282,"prs":[{"n":150282,"state":"merged","created":"2026-11-06T20:54:42Z"}],"created":"2026-11-06T20:54:42Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/dadhalfdev/openrouter-everything/ec6974a96f9965e59d23bf1d5c5e4f2eb7333338/assets/openrouter-everything-banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/openrouter-everything.webp"},{"name":"minicpm-ocr","title":"MiniCPM-OCR","summary":"Read images and PDFs with MiniCPM-OCR, score every region with MiniCPM-OCR Jev, and keep failed regions in a durable human review queue. Four tools: ocr_read, ocr_job, ocr_queue and ocr_verify. Works with the hosted ModelBest document-parse API or a local document service / OpenAI-compatible server.","disclosure":"hosted mode sends the document and any scored region text to api.modelbest.ai; local mode uploads nothing. Reads only the path or public https URL passed to a tool, and stores review-queue state and CSV exports under Hermes' plugin data directory. No telemetry, analytics, self-updater, shell commands or background processes. The optional MODELBEST_API_KEY is read through agent.secret_scope.get_secret; the plugin never reads .env, auth.json or another tool's credential store.","category":"tools","platforms":[],"maintainer":"PovedaAqui","author":"PovedaAqui","version":"0.6.0","requires_hermes":">=0.22.0","repo":"https://github.com/PovedaAqui/minicpm-ocr-hermes","docs":"https://github.com/PovedaAqui/minicpm-ocr-hermes#readme","tools":["ocr_read","ocr_job","ocr_queue","ocr_verify"],"hooks":[],"middleware":[],"env":[],"known_issues":"Local document mode needs the official Docker image or the SDK Web Demo backend; a bare OpenAI-compatible chat server returns page text only and rejects PDFs.; On a 12 GB GPU the official Docker image's default 40960-token vLLM profile OOMs; the README gives the tested 16k-context profile.; ocr_verify needs the hosted Jev API or a local Jev render+score service; the parser alone does not score text.","state":"open","pr":150268,"prs":[{"n":150268,"state":"open","created":"2026-11-06T20:19:24Z"}],"created":"2026-11-06T20:19:24Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pareto","title":"Pareto Inference","summary":"Pareto Inference as a Hermes model provider (`--provider pareto`): GLM 5.3 Flash, DeepSeek V4.1 Flash and MiMo V2.6 Flash over OpenAI-compatible Chat Completions, pay per token, with /reasoning mapped to Pareto's reasoning_effort levels and context windows from models.dev.","disclosure":"model provider; registers one provider profile at import and nothing else (no tools, hooks, commands or threads). Hermes sends prompts, tool results and a GET /v1/models catalog request to api.paretoinference.com with PARETO_API_KEY, which Hermes reads; the plugin itself opens no connections, reads or writes no files and adds no telemetry.","category":"models","platforms":[],"maintainer":"pareto-inference","author":"spiceoogway","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/pareto-inference/hermes-pareto-provider","docs":"https://github.com/pareto-inference/hermes-pareto-provider#readme","tools":[],"hooks":[],"middleware":[],"env":["PARETO_API_KEY"],"known_issues":"Pareto serves streamed requests only. Add api.paretoinference.com to auxiliary.stream_only_base_urls so auxiliary tasks (titles, compression, vision) stream too.","state":"merged","pr":150262,"prs":[{"n":150262,"state":"merged","created":"2026-11-06T19:51:21Z"}],"created":"2026-11-06T19:51:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"excubitor","title":"excubitor","summary":"Night sentry for Hermes turns: one per-turn ledger that dedups inbound replay, stops no-progress tool loops, enforces a spend cap, and alerts when a turn hangs without a reply.","disclosure":"default notifier is log-only; optional ntfy.sh or webhook POSTs; one background watch thread; SQLite state in plugin-data/excubitor; no credentials or telemetry; fail-open on internal errors. Optional Desktop status-bar chip (desktop/plugin.js). Limitation — event.internal bypasses gateway hooks.","category":"automation","platforms":[],"maintainer":"catalystberry842-alt","author":"catalystberry842-alt","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/catalystberry842-alt/excubitor","docs":null,"tools":[],"hooks":["pre_gateway_dispatch","post_gateway_admission","pre_llm_call","post_llm_call","pre_tool_call","post_tool_call","post_api_request","agent_loop_stopped"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150261,"prs":[{"n":150261,"state":"closed","created":"2026-11-06T19:49:30Z"}],"created":"2026-11-06T19:49:30Z","late":false,"said":true,"update":false,"discussion":6,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"postsider","title":"PostSider","summary":"Plan, draft, schedule, publish and review social media posts across 30+ networks (X, LinkedIn, Instagram, Facebook, TikTok, YouTube, Threads, Pinterest, Bluesky and more) through PostSider's hosted MCP server (Streamable HTTP at https://mcp.postsider.com/mcp, OAuth sign-in, no keys in config): content calendar, channel rules and posting queues, media uploads, drafts and approval requests, failed-post triage, analytics, and an AI post checker and caption rewrite. Bundles the postsider workflow skill (draft first, read back every write, confirm before anything public or permanent). Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to PostSider's hosted server (mcp.postsider.com) and acts on the user's own PostSider workspace; the tool set is served by that server at runtime and is not covered by the pinned sha. Write tools can create, edit, schedule and delete posts, and posts created with type now or schedule are published to the user's connected public social accounts; other tools upload and delete media, change channel settings and posting slots, connect or disconnect channels, and pause publishing for the whole organization. Actions count toward the user's PostSider plan, and the AI checker and caption rewrite use its monthly AI allowance. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth; without a stored token, an unattended run fails at Hermes's connect timeout instead of hanging. Users who need longer to sign in, or a headless setup, can replace the server with hermes mcp add postsider --url https://mcp.postsider.com/mcp --auth oauth (or a token header) and keep the skill.","category":"tools","platforms":[],"maintainer":"PostSider","author":"lumizone","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/lumizone/postsider-agent-plugin","docs":"https://github.com/lumizone/postsider-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150258,"prs":[{"n":150258,"state":"merged","created":"2026-11-06T19:44:44Z"}],"created":"2026-11-06T19:44:44Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/lumizone/postsider-agent-plugin/4ddb64abfb18a7ea3d9c38703854b351fb1cfbc0/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/postsider.webp"},{"name":"aegis-gate","title":"aegis-gate","summary":"AEGIS gate — a pre-execution verification gate for AI agents. Registers a fail-closed pre_tool_call hook that checks a tool call before it executes: claim provenance (Gate 1), contract verification via Sourcify with a source risk-pattern scan (Gate 2), EIP-712 signature-payload structure (Gate 3), and instruction-channel injection scoring (Gate 4). Verdicts map to Hermes directives: BLOCK vetoes the call, WARN escalates it to the human-approval gate, ALLOW passes it untouched, and a gate that cannot complete abstains into escalation rather than passing silently.","disclosure":"makes read-only HTTPS GET requests to sourcify.dev and to the first source URL found in a tool call's own arguments (Gates 1/2 evidence, inside a ~20 s per-call budget, before the tool call itself runs; non-public destinations are refused); holds no credentials, runs no subprocesses, writes no files, and logs one line per gated call (tool name, verdict, report hash) to stderr; WARN escalates to Hermes approval, which unattended surfaces (cron approve mode, -z, --yolo) auto-approve.","category":"tools","platforms":[],"maintainer":"Rainyy99","author":"Rainyy99","version":"0.1.1","requires_hermes":">=0.21.5","repo":"https://github.com/Rainyy99/aegis-hermes","docs":"https://github.com/Rainyy99/aegis-hermes#readme","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"WARN verdicts escalate to Hermes's human-approval gate; on unattended one-shot surfaces (hermes -z, cron_mode: approve, --yolo) Hermes auto-approves approval-gate escalations by its own contract, so WARN is advisory there. BLOCK vetoes never enter the approval gate and are absolute on every surface.","state":"merged","pr":150254,"prs":[{"n":150254,"state":"merged","created":"2026-11-06T19:36:06Z"}],"created":"2026-11-06T19:36:06Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gemini-live","title":"Gemini Live for Hermes","summary":"Full-duplex Gemini Live voice calls in Hermes Desktop and the web dashboard. The voice takes the profile's name and hands real work to your Hermes agent while you keep talking. It can steer running jobs, threads, bot chats and subagents, use the profile's MCP tools, recall memory and past conversations, set and read iPhone alarms, timers and reminders through hermes-mobile-device-access when a phone is paired, and report back when work finishes. Read-only local commands need three layers to agree: hard rules, a safety review and a contained run; files are read only from the workspace folder, /var/log and a few plain system files. When a job needs approval, the voice says so and Approve and Deny buttons appear; the voice model can never answer one, and spoken approval is opt-in. With the AirPods Approvals plugin, a nod or shake answers it too.","disclosure":"pressing Start captures microphone audio and streams it from the client to generativelanguage.googleapis.com on a single-use ephemeral token; the Gemini key stays on the Hermes backend, read through Hermes' secret scope. Gemini also receives the voice's instructions, tool results, and, unless share_chat_context is off, the open chat's title and recent messages. On Gemini's free tier, Google may use this content to improve its products. Delegated work runs as a normal Hermes turn with that profile's tools and approvals. The iPhone tools call that plugin directly, within the access granted in the Hermes Agent app, and send alarm and reminder details to Gemini; turn them off with phone_tools. The opt-in readonly_shell and system_checks settings, both off by default, run bounded commands on the Hermes host. No telemetry and no background processes.","category":"voice","platforms":[],"maintainer":"cineglobe","author":"cineglobe","version":"1.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/cineglobe/hermes-gemini-live","docs":"https://github.com/cineglobe/hermes-gemini-live#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150251,"prs":[{"n":150251,"state":"merged","created":"2026-11-06T19:35:30Z"},{"n":150247,"state":"closed","created":"2026-11-06T19:30:00Z"}],"created":"2026-11-06T19:30:00Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/b6c2f24354aeed1a8b5651b62944d14ed96a472d/docs/assets/banner.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/b6c2f24354aeed1a8b5651b62944d14ed96a472d/docs/assets/approval.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/b6c2f24354aeed1a8b5651b62944d14ed96a472d/docs/assets/transcript.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/187650f0b90ec8f19dba5928b3a4caf093d5aa80/docs/assets/approval.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/187650f0b90ec8f19dba5928b3a4caf093d5aa80/docs/assets/transcript.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/06cdf904d1a346675f3cf7f54015f70fc7770d89/docs/assets/banner.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/06cdf904d1a346675f3cf7f54015f70fc7770d89/docs/assets/approval.png","https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/06cdf904d1a346675f3cf7f54015f70fc7770d89/docs/assets/transcript.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gemini-live.webp"},{"name":"commonplace","title":"commonplace","summary":"Commonplace — local-first curated memory in plain Markdown files on your own machine. Standing rules kept verbatim, a curated store with lexical recall, a handover card for fresh sessions, and a fail-closed pre-compress checkpoint (API v2) that archives the transcript before Hermes may compress it — and blocks compression when the archive cannot be written. No cloud, no API keys, no third-party dependencies. Maintained by Chris Newton.","disclosure":"stores everything as plain, unencrypted Markdown under the active Hermes home's `commonplace/` directory, including a verbatim journal of every user/assistant turn and full-transcript archives written before each compression; none of it is pruned automatically. No network calls, credentials or third-party dependencies.","category":"memory","platforms":[],"maintainer":"ChrisAaronNewton","author":"ChrisAaronNewton","version":"0.1.0","requires_hermes":">=0.21.3","repo":"https://github.com/ChrisAaronNewton/hermes-commonplace","docs":"https://github.com/ChrisAaronNewton/hermes-commonplace#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150245,"prs":[{"n":150245,"state":"merged","created":"2026-11-06T19:20:34Z"}],"created":"2026-11-06T19:20:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-continuity-capture","title":"hermes-continuity-capture","summary":"Records Hermes lifecycle events (session, subagent, and kanban task) as Continuity schema-v2 events in a local SQLite spool under the plugin data directory, and can forward them to a NATS/JetStream server you run yourself.","disclosure":"binds nine lifecycle hooks and writes SQLite (spool_path defaults to spool.db in the plugin data directory, 90-day retention, periodic sweep; the file grows with event volume); free-text fields (prompts, tool results, args, summary, reason, tool_call_history) are always dropped before the INSERT and only their length is kept (there is no setting that keeps them). The optional NATS password is read from the environment variable HERMES_CONTINUITY_CAPTURE_NATS_PASSWORD, never from config.yaml. Delivery is opt-in: the default publish_mode is spool-only (nothing leaves the host); in core/jetstream mode a background thread publishes to your own NATS endpoint using the bundled standard-library client, and failed deliveries stay as error rows and are retried. Only the NATS server itself is external - it is not part of this plugin. Inactive until an operator enables it. Disclosure — binds nine lifecycle hooks and writes a SQLite spool (default spool.db in the plugin data directory, 90-day retention sweep) holding event type, profile/agent id, host FQDN, process id and start time, session/subagent/task ids and tool names; prompts, tool args/results, summaries, reasons and tool_call_history are always dropped before writing and only their lengths kept. Default publish_mode is spool-only (nothing leaves the host); in the opt-in core/jetstream modes a background thread sends those events to the NATS server you configure in nats_url (default 127.0.0.1) using the bundled standard-library client, and unless nats_tls is on or the URL uses tls:// (TLS is off by default) the NATS user and password travel in plaintext.","category":"automation","platforms":[],"maintainer":"Goitonthefloor","author":"Goitonthefloor","version":"0.2.2","requires_hermes":">=0.21.6","repo":"https://github.com/Goitonthefloor/hermes-continuity-capture","docs":null,"tools":[],"hooks":["on_session_start","on_session_end","on_session_finalize","post_tool_call","subagent_start","subagent_stop","kanban_task_claimed","kanban_task_completed","kanban_task_blocked"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150244,"prs":[{"n":150244,"state":"merged","created":"2026-11-06T19:20:12Z"}],"created":"2026-11-06T19:20:12Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gsc-magic","title":"GSC Magic","summary":"Google Search Console, Bing Webmaster Tools, Google Analytics 4, IndexNow and Core Web Vitals through GSC Magic's hosted MCP server (Streamable HTTP at https://mcp.gscmagic.com/mcp, OAuth sign-in, no keys in config): search analytics, URL inspection, sitemaps, GA4 reports, CrUX and PageSpeed, plus finished SEO reports (quick wins, traffic drops, content decay, cannibalization, CTR outliers, brand split, index health, Google vs Bing) with optional PNG charts. Bundles the gsc-magic workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to GSC Magic's hosted server (mcp.gscmagic.com) and reads the user's own connected Google, Bing and GA4 accounts; calls count toward the user's GSC Magic plan and are logged (tool, site, status, time) for 30 days in the user's dashboard; the tool set is served by that server at runtime and is not covered by the pinned sha. Write tools (sitemaps, site management, Bing URL submission, IndexNow) work only on paid plans with write mode turned on, and the package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth; without a stored token, an unattended run fails at Hermes's connect timeout instead of hanging. Users who need longer to sign in, or a headless setup, can replace the server with hermes mcp add gsc-magic --url https://mcp.gscmagic.com/mcp --auth oauth (or a token header) and keep the skill.","category":"tools","platforms":[],"maintainer":"GSC Magic","author":"lumizone","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/lumizone/gsc-magic-agent-plugin","docs":"https://github.com/lumizone/gsc-magic-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150241,"prs":[{"n":150241,"state":"merged","created":"2026-11-06T19:13:51Z"}],"created":"2026-11-06T19:13:51Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/lumizone/gsc-magic-agent-plugin/fd566d89589dc5550c1df8204089819b490a0e2e/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/gsc-magic.webp"},{"name":"qqq-ai-visibility","title":"QQQ AI Visibility Checker","summary":"Free AI visibility and GEO check for any website through QQQ's hosted MCP server (Streamable HTTP at https://qqq.ee/mcp, no sign-in, no keys in config): whether AI crawlers such as GPTBot, ClaudeBot and PerplexityBot may read a site, its technical readiness for AI search with the three most important fixes, and the latest public report of brand mentions and citations in ChatGPT, Gemini and Perplexity answers. Three read-only tools and one workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to qqq.ee, and check_ai_visibility makes that server load a few public pages of the domain you name (limit five checks a day per IP address). The IP address is only the key of a daily counter, deleted after two days; usage statistics keep the step, language, domain, status, country and duration for 90 days. The server calls no AI model and stores no conversation. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"QQQ OÜ","author":"meelis545","version":"1.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/meelis545/qqq-ai-visibility-mcp","docs":"https://qqq.ee/en/mcp-server/","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150239,"prs":[{"n":150239,"state":"merged","created":"2026-11-06T19:04:16Z"}],"created":"2026-11-06T19:04:16Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/meelis545/qqq-ai-visibility-mcp/06278fa89aef5ad40605722f494b069905f62732/icon.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/qqq-ai-visibility.webp"},{"name":"yuanbao","title":"yuanbao","summary":"Tencent Yuanbao messaging platform (DMs and group chats over Yuanbao's bot WebSocket, native media and stickers, DM/group access policies, cron home-channel delivery) plus the yuanbao toolset (yb_query_group_info, yb_query_group_members, yb_send_dm, yb_search_sticker, yb_send_sticker). Formerly built into Hermes core; existing users are migrated automatically. A Hermes Labs plugin: built by Nous Research, not supported, and likely not maintained going forward. Fixes from the community are welcome.","disclosure":"messages, media and group member lists travel between Tencent's Yuanbao servers and your Hermes gateway using your own Yuanbao bot App ID and App Secret. The plugin also downloads image URLs that appear in replies or inbound messages, and its sign-token requests carry the Hermes version and an instance id.","category":"platform","platforms":[],"maintainer":"NousResearch","author":"teknium1","version":"2.0.0","requires_hermes":"","repo":"https://github.com/NousResearch/hermes-labs-plugins","docs":"https://github.com/NousResearch/hermes-labs-plugins/tree/main/yuanbao","tools":["yb_query_group_info","yb_query_group_members","yb_send_dm","yb_search_sticker","yb_send_sticker"],"hooks":[],"middleware":[],"env":["YUANBAO_APP_ID","YUANBAO_APP_SECRET"],"known_issues":"","state":"merged","pr":150237,"prs":[{"n":150237,"state":"merged","created":"2026-11-06T18:57:50Z"}],"created":"2026-11-06T18:57:50Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/NousResearch/hermes-labs-plugins/67fd906bad3a5efafdbaf8910b5510338044109f/assets/yuanbao.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/yuanbao.webp"},{"name":"va-claims","title":"VA Benefits","summary":"File and track VA disability claims (21-526EZ) the way 38 CFR actually works, plus every other VA benefit in one tracker: Post-9/11 GI Bill, VA health enrollment, CHAMPVA, SGLI/VGLI, pension, VR&E. Seven tools: a federal-standards filing guide with CFR citations, intent-to-file with the 12-month effective-date clock, live claim status and change tracking via the VA Lighthouse Benefits Claims API, official contention lookup, benefit/expiration tracking with deadline countdowns, and a one-screen benefits summary. Desktop app adds a VA Benefits page with a benefits grid, claim phase trackers, and deadlines. Network calls go only to api.va.gov and sandbox-api.va.gov; the veteran's ICN is the only personal value sent. Benefit records stay in one local JSON file per veteran under the plugin data directory. Credentials (VA client ID, RSA key path, reference API key) come through plugin settings and Hermes secret scope. One Python dependency: pyjwt[crypto]. No hooks, middleware, shell commands, background processes, or telemetry.","disclosure":"","category":"tools","platforms":[],"maintainer":"lEWFkRAD","author":"lEWFkRAD","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/lEWFkRAD/va-claims-hermes-plugin","docs":"https://github.com/lEWFkRAD/va-claims-hermes-plugin#readme","tools":["va_claim_status","va_claim_track","va_disability_lookup","va_intent_to_file","va_benefit_track","va_benefit_summary","va_claim_guide"],"hooks":[],"middleware":[],"env":["VA_REFERENCE_API_KEY"],"known_issues":"Live claim status needs a VA Lighthouse sandbox or production client ID (free sandbox application at developer.va.gov); the guide, intent-to-file, benefit tracking, and deadlines work with no credentials.; Production VA API access requires VA agreements; sandbox uses VA test ICNs.","state":"closed","pr":150234,"prs":[{"n":150234,"state":"closed","created":"2026-11-06T18:51:53Z"}],"created":"2026-11-06T18:51:53Z","late":false,"said":false,"update":false,"discussion":8,"images":["https://raw.githubusercontent.com/lEWFkRAD/va-claims-hermes-plugin/061af055d3b1dcf6aebe6b3e37533cfc214de37d/docs/screenshots/hero.png","https://raw.githubusercontent.com/lEWFkRAD/va-claims-hermes-plugin/061af055d3b1dcf6aebe6b3e37533cfc214de37d/docs/screenshots/meme.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/va-claims.webp"},{"name":"lovedone-soft","title":"LovedOne Soft","summary":"Agency operations through LovedOne Soft MCP (https://api.lovedone.app/mcp/vendor/v1): clients, visits, visit notes, invoices and scheduling for home-care office staff. Senior tech support in the workflow — not a medical device and not clinical advice. Portable Agent Plugins v1 under hermes/lovedone-soft (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tools/call needs an agency MCP key in LOVEDONE_SOFT_API_KEY. The package marks the server untrusted so Hermes asks before write-capable tools. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.2.1","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/lovedone-mcp","docs":"https://soft.lovedone.app/agents","tools":[],"hooks":[],"middleware":[],"env":["LOVEDONE_SOFT_API_KEY"],"known_issues":"","state":"merged","pr":150233,"prs":[{"n":150233,"state":"merged","created":"2026-11-06T18:41:16Z"}],"created":"2026-11-06T18:41:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lovedone-family","title":"LovedOne Family Inbox","summary":"Senior tech support for a family household through LovedOne Family Inbox MCP (https://api.lovedone.app/mcp/v1): shared inbox, loved ones and members, onboarding helpers so relatives can coordinate day-to-day logistics for an aging parent. Not a medical device and not clinical advice. Portable Agent Plugins v1 under hermes/lovedone-family (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tools/call goes to api.lovedone.app and needs a LovedOne MCP key in LOVEDONE_API_KEY. The package marks the server untrusted so Hermes asks before write-capable tools. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.4.1","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/lovedone-mcp","docs":"https://inbox.lovedone.app/agents","tools":[],"hooks":[],"middleware":[],"env":["LOVEDONE_API_KEY"],"known_issues":"","state":"merged","pr":150232,"prs":[{"n":150232,"state":"merged","created":"2026-11-06T18:41:14Z"}],"created":"2026-11-06T18:41:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"qrblox","title":"Qrblox","summary":"QR codes, audio codes, menus and the Voice Agent Phone Book through Qrblox's remote MCP (https://api.qrblox.com/mcp/v1). Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tool call goes to api.qrblox.com. Ping and public voice-agent lookup work without a key; merchant/QR/menu tools need a sk-qrblox- API key in QRBLOX_API_KEY. The package marks the server untrusted so Hermes asks before write-capable tools. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/qrblox-mcp","docs":"https://docs.qrblox.com/mcp","tools":[],"hooks":[],"middleware":[],"env":["QRBLOX_API_KEY"],"known_issues":"","state":"merged","pr":150231,"prs":[{"n":150231,"state":"merged","created":"2026-11-06T18:40:36Z"}],"created":"2026-11-06T18:40:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-android","title":"hermes-android","summary":"Remote Android device control for Hermes Agent: 58 android_* tools (read screen, tap/type/swipe, open apps, camera, screenshots & screen recording, files, notifications, microphone streaming, media, clipboard, SMS/calls, Health Connect) plus a companion Android bridge app (Kotlin/Compose). The phone dials out to a relay you host — works behind NAT, no port forwarding, no VPN. Chat and media are end-to-end encrypted with a Double Ratchet (the relay sees only ciphertext); device commands travel over your own TLS-authenticated relay.","disclosure":"drives a paired Android phone (screen reading and input, camera, microphone, files, notifications, clipboard, SMS/calls, Health Connect) through a relay the plugin starts inside Hermes (localhost by default; a non-localhost bind requires TLS or an explicit ANDROID_RELAY_ALLOW_PLAINTEXT=1); SMS, calls, file deletion, intents/broadcasts, APK install and relay setup go through Hermes' approval prompt (cron follows approvals.cron_mode, other unattended runs refuse); chat and media are Double-Ratchet end-to-end encrypted, but device commands are protected only by the relay's TLS when configured.","category":"tools","platforms":[],"maintainer":"TechFlipsi","author":"TechFlipsi","version":"","requires_hermes":">=0.23.0","repo":"https://github.com/TechFlipsi/FlipsiBridge","docs":"https://github.com/TechFlipsi/FlipsiBridge","tools":["android_alarm","android_apk_install","android_broadcast","android_call","android_clipboard_read","android_clipboard_write","android_current_app","android_describe_node","android_diff_screen","android_drag","android_event_stream","android_events","android_file_delete","android_file_get","android_file_put","android_files_count","android_files_list","android_files_permission","android_files_search","android_find_nodes","android_get_apps","android_health","android_location","android_long_press","android_macro","android_media","android_mic_fetch","android_mic_record","android_mic_status","android_mic_stop","android_network_status","android_notifications","android_notify_reply","android_open_app","android_photo","android_pinch","android_ping","android_press_key","android_read_screen","android_read_widgets","android_screen_hash","android_screen_record","android_screenshot","android_scroll","android_search_contacts","android_send_intent","android_send_sms","android_setup","android_speak","android_speak_stop","android_swipe","android_tap","android_tap_text","android_timer","android_torch","android_type","android_volume","android_wait"],"hooks":["pre_tool_call"],"middleware":[],"env":["ANDROID_BRIDGE_URL","ANDROID_BRIDGE_TOKEN"],"known_issues":"","state":"merged","pr":150230,"prs":[{"n":150230,"state":"merged","created":"2026-11-06T18:40:33Z"}],"created":"2026-11-06T18:40:33Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/TechFlipsi/FlipsiBridge/5f185b2d5ac8b88d127815c13ee31970d31f678a/docs/img/fb-home.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-android.webp"},{"name":"bulkpublish","title":"BulkPublish","summary":"BulkPublish (https://www.bulkpublish.com) social media scheduling through its hosted MCP server (Streamable HTTP at https://mcp.bulkpublish.com/mcp/full, 80 tools): draft, schedule, publish and retry posts on Facebook, Instagram, X, TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon, Discord, Telegram, Tumblr and Snapchat, with media uploads, bulk actions, team approvals, labels, templates, recurring schedules, RSS autopost, Inbox replies and analytics. Bundles 33 BulkPublish skills. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code: every tool call, with its arguments, goes to mcp.bulkpublish.com and needs a BulkPublish account with its API key in BULKPUBLISH_API_KEY, sent as a Bearer header. Publishing tools post to the user's connected social accounts and Inbox tools reply to real people; the package marks the server untrusted, so Hermes asks before every tool the server does not annotate as read-only and refuses them in unattended runs. Recurring schedules and RSS autopost, once approved, keep publishing from BulkPublish's servers without further prompts, and the media skill has the agent upload local files to a BulkPublish-issued URL with curl. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"BulkPublish","author":"azeemkafridi","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/bulkpublish/hermes-bulkpublish","docs":"https://github.com/bulkpublish/hermes-bulkpublish#readme","tools":[],"hooks":[],"middleware":[],"env":["BULKPUBLISH_API_KEY"],"known_issues":"","state":"merged","pr":150221,"prs":[{"n":150221,"state":"merged","created":"2026-11-06T18:22:59Z"}],"created":"2026-11-06T18:22:59Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/bulkpublish/hermes-bulkpublish/530589907c6f791aacd35e1f708dbe8949e7e87f/assets/og-default.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/bulkpublish.webp"},{"name":"ndaa","title":"NDAA.AI","summary":"Public FY2027 NDAA tracker through NDAA.AI's remote MCP (https://mcp.ndaa.ai/mcp): bill status, section text, House vs Senate diffs, news, updates and guides. Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tool call goes to mcp.ndaa.ai. All tools are read-only on public legislative data; no account required. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.1.1","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/ndaa-mcp","docs":"https://ndaa.ai/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150217,"prs":[{"n":150217,"state":"closed","created":"2026-11-06T18:16:35Z"}],"created":"2026-11-06T18:16:35Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"joinsandwich-directory","title":"Sandwich Directory","summary":"Public caregiving directory through joinsandwich's remote MCP (https://www.joinsandwich.com/api/mcp): search care resources and channels, estimate long-term care costs. Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tool call goes to joinsandwich.com. Public directory data; no account required. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.1.2","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/sandwich-public","docs":"https://joinsandwich.com/agents","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150216,"prs":[{"n":150216,"state":"closed","created":"2026-11-06T18:16:31Z"}],"created":"2026-11-06T18:16:31Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"frosh","title":"Frosh","summary":"Search and read public Frosh docs and blog posts through Frosh's remote MCP (https://frosh.org/mcp). Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tool call goes to frosh.org. Public read tools need no account. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.2.0","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/frosh-mcp","docs":"https://frosh.org","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150215,"prs":[{"n":150215,"state":"closed","created":"2026-11-06T18:16:26Z"}],"created":"2026-11-06T18:16:26Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"flipletters","title":"FlipLetters","summary":"Split-flap and flip-dot board design through FlipLetters' remote MCP (https://app.flipletters.com/mcp/v1): FlipCode reference, validate boards, render videos, share. Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector with no local code: every tool call, with its arguments, goes to app.flipletters.com and needs a FlipLetters account (flk_ API key in FLIPLETTERS_API_KEY, sent as a Bearer header). Render tools spend the account's export quota, and share tools post into team libraries or schedule and publish to the user's connected social channels through Postiz; the package marks the server untrusted, so Hermes asks before write-capable tools and refuses them in unattended runs. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"0.3.1","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/flipletters-mcp","docs":"https://flipletters.com/mcp","tools":[],"hooks":[],"middleware":[],"env":["FLIPLETTERS_API_KEY"],"known_issues":"","state":"merged","pr":150214,"prs":[{"n":150214,"state":"merged","created":"2026-11-06T18:16:21Z"}],"created":"2026-11-06T18:16:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crosodo","title":"Crosodo","summary":"Cottage food and home bakery law lookups for US states and counties through Crosodo's remote MCP (https://crosodo.com/api/mcp): state rules, county permits, label requirements, Crosodo Certified credentials, and optional label-packet checkout. Portable Agent Plugins v1 (plugin.json + mcp.json + skills/).","disclosure":"hosted-only connector; every tool call goes to crosodo.com. Lookups are open; checkout may require a signed-in Crosodo account. The package marks the server untrusted so Hermes asks before write-capable tools and refuses them in unattended runs. The live tool set is served by the remote server and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Terahertz, Inc.","author":"tera-sarah","version":"1.0.3","requires_hermes":">=0.21.6","repo":"https://github.com/Terahertz-Inc/crosodo-mcp","docs":"https://crosodo.com/developers","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150213,"prs":[{"n":150213,"state":"merged","created":"2026-11-06T18:16:17Z"}],"created":"2026-11-06T18:16:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"assumption-ledger","title":"Assumption Ledger","summary":"Persistent operational-assumption ledger. Captures the assumptions an agent states in its own messages (never from tool output), keeps the sentence each came from as provenance, verifies them with deterministic checks, and warns in context when work recorded in a session depends on an assumption evidence has contradicted.","disclosure":"all state is local: assumptions, evidence and decisions are stored in a plain SQLite database under HERMES_HOME/plugin-data/assumption-ledger/ (created on first use, never pruned by the plugin; delete the directory to clear it). It needs no credentials. HTTP checks (http_status, http_json_field) are the only outbound traffic; they accept only http/https and refuse loopback, private, link-local, CGNAT and cloud-metadata destinations unless you set allow_private_urls, and metadata endpoints stay blocked even then. Command checks (command_succeeds) are disabled until you set command_allowlist; only a listed bare executable name runs (a path is refused), resolved to an absolute path on the child's PATH, with a minimal environment. The allowlist restricts which program may run, not the safety of the arguments the model passes it. Git checks run in a model-chosen directory with the repository's core.fsmonitor and core.hooksPath settings overridden and with a minimal environment; filter drivers set in that repository's own .git/config still apply to git status, so point git checks only at repositories whose local git config you trust. It reads local files, git state, environment variables and SQLite databases, warns rather than blocking a turn, scopes warnings to the session that recorded the decision, and exposes no tools that write to external systems.","category":"memory","platforms":[],"maintainer":"itzebe","author":"itzebe","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/itzebe/hermes-assumption-ledger","docs":"https://github.com/itzebe/hermes-assumption-ledger#readme","tools":["assumption_record","assumption_check","assumption_status","assumption_decide","assumption_resolve","assumption_drop"],"hooks":["pre_llm_call","post_llm_call","post_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150212,"prs":[{"n":150212,"state":"merged","created":"2026-11-06T18:11:22Z"}],"created":"2026-11-06T18:11:22Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"loci","title":"Loci","summary":"Local models on your Mac for file summaries, document extraction, folder search, audio transcription and batch processing alongside Hermes.","disclosure":"","category":"tools","platforms":["macos"],"maintainer":"AskLoci","author":"HungryHippo14","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/AskLoci/loci-plugins","docs":"https://github.com/AskLoci/loci-plugins/tree/51dca9ab524b7a7953292d2d70ace87bf97ed5ec/loci-hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150211,"prs":[{"n":150211,"state":"closed","created":"2026-11-06T18:03:26Z"}],"created":"2026-11-06T18:03:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"slopcannon","title":"SLOPCANNON","summary":"SLOPCANNON music videos from a song, inside Hermes: one request produces a whole film (direction, rights sign-off, credit quote, first-scene review, parallel or chained scene renders, character checks, rerolls with a note, assembly), every decision a button on a live film card in the chat, a SLOPCANNON studio page in Hermes Desktop, and the whole hosted SLOPCANNON tool surface (remixes, the Ad Cannon, Character Lab, Slop TV) as native tools.","disclosure":"calls api.slop.cc (needs a slop.cc account and Cannon Credits); spends only on the person's click on the card, a Hermes approval, or an unattended allowance that defaults to 0; runs the bundled Node production driver and ffmpeg as background child processes with a minimal environment and a dedicated agent session; reads only the songs and pictures you name and uploads them after your rights sign-off.","category":"tools","platforms":[],"maintainer":"vincitamore","author":"vincitamore","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/vincitamore/hermes-slopcannon","docs":"https://github.com/vincitamore/hermes-slopcannon/blob/b03e62386f85a13df42c34a63f87cf46618387b4/README.md","tools":["slopcannon_account","slopcannon_upload","slopcannon_wait","slopcannon_download","slopcannon_transcribe","slopcannon_produce","slopcannon_production_status","slopcannon_production_stop","slopcannon_add_character_reference","slopcannon_add_reference","slopcannon_assembly_download_links","slopcannon_audio_spot_options","slopcannon_cancel_assembly","slopcannon_cancel_generation","slopcannon_cancel_source_video","slopcannon_capabilities","slopcannon_check_take","slopcannon_create_ad_pitch","slopcannon_create_audio_spot","slopcannon_create_character","slopcannon_create_project","slopcannon_create_publish_link","slopcannon_create_quote","slopcannon_create_render_request","slopcannon_create_upload_link","slopcannon_delete_take","slopcannon_direct_scenes","slopcannon_edit_audio_spot_line","slopcannon_edit_audio_spot_sound","slopcannon_get_ad_pitch","slopcannon_get_assembly","slopcannon_get_audio_spot","slopcannon_get_character","slopcannon_get_generation","slopcannon_get_generation_content","slopcannon_get_project","slopcannon_get_project_local_assembly","slopcannon_get_publish_link","slopcannon_get_render_request","slopcannon_get_scene_audio","slopcannon_get_song_analysis","slopcannon_get_source_video","slopcannon_get_upload_link","slopcannon_get_workspace","slopcannon_import_character","slopcannon_list_audio_spots","slopcannon_list_characters","slopcannon_list_generations","slopcannon_list_publishable_films","slopcannon_load_audio_spot","slopcannon_plan_cuts","slopcannon_prepare_source_video","slopcannon_publish_character","slopcannon_recover_generation","slopcannon_remove_reference","slopcannon_report_local_assembly","slopcannon_save_workspace","slopcannon_select_take","slopcannon_slice_scene_audio","slopcannon_start_assembly","slopcannon_start_song_analysis","slopcannon_submit_generation","slopcannon_unpublish_character","slopcannon_update_character"],"hooks":["pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Needs a slop.cc account; renders spend Cannon Credits bought at slop.cc/account (the plugin never buys credits); Whole productions need Node.js 22.13+ and ffmpeg/ffprobe on the machine Hermes runs on; the other tools work without them; Sign in once in a terminal: hermes config set SLOPCANNON_OAUTH_CLIENT_ID hermes-agent, then hermes auth add slopcannon:slop (or enter a slop.cc/account token as the plugin's Agent token)","state":"open","pr":150208,"prs":[{"n":150208,"state":"open","created":"2026-11-06T17:56:42Z"}],"created":"2026-11-06T17:56:42Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/vincitamore/hermes-slopcannon/b03e62386f85a13df42c34a63f87cf46618387b4/docs/banner.png","https://raw.githubusercontent.com/vincitamore/hermes-slopcannon/b03e62386f85a13df42c34a63f87cf46618387b4/docs/screenshots/3-scene-review.png","https://raw.githubusercontent.com/vincitamore/hermes-slopcannon/b03e62386f85a13df42c34a63f87cf46618387b4/docs/screenshots/4-finished.png","https://raw.githubusercontent.com/vincitamore/hermes-slopcannon/b03e62386f85a13df42c34a63f87cf46618387b4/docs/screenshots/1-rights.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/slopcannon.webp"},{"name":"booking-bridge","title":"Booking Bridge","summary":"Find free time, then book, list, reschedule and cancel real Google Calendar consults (for example a Strategy consult) from Hermes. Signs in with the user's own Google OAuth client through hermes auth add booking-bridge:google; all calls go through credentialed_provider_request to www.googleapis.com only.","disclosure":"network calls to Google Calendar API v3 only (scopes calendar.events and calendar.freebusy); write tools (book, reschedule, cancel) change the user's calendar, can email invitations to listed attendees, and are sent to Hermes' own approval gate by a pre_tool_call hook (action approve), so Hermes asks the user first and by default denies the call in cron, single-query and one-shot runs, webhook-style platforms and CLI sub-agents; they also require confirm=true and refuse, changing nothing, outside an allowlist of platforms and sources (interactive CLI, TUI, Desktop, ACP and the chat platforms Telegram, Discord, Slack, WhatsApp, WhatsApp Cloud, Signal, Mattermost, Matrix, BlueBubbles), so cron, single-query, kanban, webhook-style, email, SMS and any unrecognized platform or source are refused; booked events carry a private hash property to prevent duplicates; revoke with hermes auth logout booking-bridge:google; no shell commands, background processes, telemetry or stored credentials.","category":"tools","platforms":[],"maintainer":"kyle-bartlett","author":"kyle-bartlett","version":"1.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/kyle-bartlett/booking-bridge","docs":"https://github.com/kyle-bartlett/booking-bridge/blob/8d013fcd7500f5b9e3b98588a6c32826f25c8252/README.md","tools":["list_availability","list_upcoming","book_event","reschedule_event","cancel_event"],"hooks":["pre_tool_call"],"middleware":[],"env":["BOOKING_BRIDGE_CLIENT_ID","BOOKING_BRIDGE_CLIENT_SECRET"],"known_issues":"Needs the user's own Google Cloud OAuth client (Desktop app) with the Calendar API enabled; sign in once with hermes auth add booking-bridge:google.; Google may show an unverified-app warning for a personal OAuth client in testing mode.; Hermes settings the user controls switch the approval gate off: approvals.mode off, YOLO mode, approvals.cron_mode / single_query_mode / unattended_mode set to approve, delegation.subagent_auto_approve true. Then only the plugin's own confirm=true and platform allowlist remain.; The plugin's own allowlist cannot tell a library caller or a delegated sub-agent from an interactive CLI, because the CLI and ACP bind no platform or source and the plugin has no public signal for sub-agents. The approval gate covers them by default.; Not yet exercised against live Google Calendar: no OAuth client sign-in has been run, so the Google request and response shapes are covered by mocked-HTTP tests only.","state":"merged","pr":150203,"prs":[{"n":150203,"state":"merged","created":"2026-11-06T17:40:38Z"}],"created":"2026-11-06T17:40:38Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-quote-to-chat","title":"Quote to Chat","summary":"Codex-style quote cards for Hermes Desktop: select text outside an input and press Add to chat; the excerpt becomes a removable card above the composer while your question stays a separate draft. On send the quotes are prepended once as Markdown blockquotes (composer.middleware). Quotes are scoped per chat, several can be collected and removed one by one, a busy-agent send goes through host.composer.submit with the quote attached, and a rejected send gives the quote back. Desktop-only (desktop/plugin.js inside the plugin SDK surface): no agent tools, hooks, Python middleware or env vars.","disclosure":"reads window.getSelection() and the selection rectangle; adds its own button element to document.body; reads the live draft through host.composer.getDraft; keeps quotes in memory only. No network calls, no credentials, no files, no telemetry.","category":"desktop","platforms":[],"maintainer":"ivanvanes18","author":"ivanvanes18","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/ivanvanes18/hermes-quote-to-chat","docs":"https://github.com/ivanvanes18/hermes-quote-to-chat#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150201,"prs":[{"n":150201,"state":"merged","created":"2026-11-06T17:39:26Z"}],"created":"2026-11-06T17:39:26Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"sequenzy","title":"Sequenzy","summary":"Run Sequenzy email marketing through Sequenzy's hosted MCP server (Streamable HTTP at https://api.sequenzy.com/v1/mcp, OAuth sign-in, no keys in config): subscribers, lists, tags and segments, campaigns with A/B tests, automated sequences, templates, transactional email, inbox replies, webhooks, integrations, and delivery and engagement stats. Bundles the sequenzy-email-marketing workflow skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Sequenzy's hosted server (api.sequenzy.com) and acts on the user's Sequenzy account with the permission level they approved at sign-in; the tool set is served by that server at runtime and is not covered by the pinned sha. Campaigns, sequences and transactional sends email real recipients and count toward the user's Sequenzy plan. Sign-in runs the pinned mcp-remote@0.15.2 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores the OAuth token under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Sequenzy","author":"polnikale","version":"1.0.1","requires_hermes":">=0.21.6","repo":"https://github.com/Sequenzy/skills","docs":"https://github.com/Sequenzy/skills/tree/main/plugins/sequenzy#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150189,"prs":[{"n":150189,"state":"merged","created":"2026-11-06T17:15:10Z"}],"created":"2026-11-06T17:15:10Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"daygauge-agent-plugin","title":"daygauge sleep midpoint","summary":"Calculate sleep midpoint from manually supplied onset and wake times using daygauge's public method, with midnight and ambiguous-interval handling. Agent Plugins v1 skill only: no app or Apple Health connection and no diagnosis.","disclosure":"Hermes and its configured model service process the supplied times; the package has no executable code, network client, install script, credential store, background process or telemetry.","category":"tools","platforms":[],"maintainer":"Studea Limited","author":"jlucwright","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/jlucwright/daygauge-agent-plugin","docs":"https://github.com/jlucwright/daygauge-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150188,"prs":[{"n":150188,"state":"closed","created":"2026-11-06T17:13:50Z"}],"created":"2026-11-06T17:13:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shvl-agent-plugin","title":"SHVL workspace review","summary":"Read authorised SHVL workspace receivables and connected Xero financial reports through a hosted Streamable HTTP MCP server, with a skill for selecting a workspace and interpreting the results.","disclosure":"enabling this package connects Hermes to SHVL's hosted MCP server at https://shvl.app/mcp/v2, and the README's OAuth setup adds a native `shvl` server at https://shvl.app/mcp/v2/oauth signed in through Hermes' MCP OAuth flow (that native entry replaces the package's server); tool calls send the selected workspace and requested parameters to SHVL and return business receivables and Xero financial data to Hermes and its configured model service. Access needs an SHVL account with an active trial or subscription and the applicable workspace and Xero permissions. The server's runtime tool set is outside the pinned Git commit. The package has no local executable code, install scripts, bundled credentials, background processes or telemetry.","category":"tools","platforms":[],"maintainer":"Studea Limited","author":"jlucwright","version":"1.0.2","requires_hermes":">=0.21.6","repo":"https://github.com/jlucwright/shvl-agent-plugin","docs":"https://github.com/jlucwright/shvl-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150187,"prs":[{"n":150187,"state":"merged","created":"2026-11-06T17:13:45Z"}],"created":"2026-11-06T17:13:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"reservegauge-agent-plugin","title":"ReserveGauge CSV review","summary":"Review a user-supplied ReserveGauge CSV export for missing readings, reset boundaries and comparable usage changes. Agent Plugins v1 skill only: no app or provider connection.","disclosure":"Hermes and its configured model service process the selected usage rows; the package has no executable code, network client, install script, credential store, background process or telemetry. The package asks for reduced columns where possible.","category":"tools","platforms":[],"maintainer":"Studea Limited","author":"jlucwright","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/jlucwright/reservegauge-agent-plugin","docs":"https://github.com/jlucwright/reservegauge-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":150186,"prs":[{"n":150186,"state":"closed","created":"2026-11-06T17:13:40Z"}],"created":"2026-11-06T17:13:40Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tenderlead-agent-plugin","title":"TenderLead bid review","summary":"Review supplied UK tender documents against a supplier profile before a BID or SKIP decision. Agent Plugins v1 package with one local skill; it does not fetch live tenders or submit bids.","disclosure":"the skill reads only material the user supplies to Hermes; no plugin code, install scripts, network calls, credentials, background processes or telemetry. Material supplied to Hermes remains subject to the user's Hermes and model-service settings.","category":"tools","platforms":[],"maintainer":"Studea Limited","author":"jlucwright","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/jlucwright/tenderlead-agent-plugin","docs":"https://github.com/jlucwright/tenderlead-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150185,"prs":[{"n":150185,"state":"merged","created":"2026-11-06T17:13:33Z"}],"created":"2026-11-06T17:13:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fleetkeep-agent-plugin","title":"Fleetkeep import review","summary":"Review a supplied vehicle CSV for missing and ambiguous Fleetkeep import values. Agent Plugins v1 package with one local skill; it does not connect to Fleetkeep or change an account.","disclosure":"the skill reads only material the user supplies to Hermes; no plugin code, install scripts, network calls, credentials, background processes or telemetry. Material supplied to Hermes remains subject to the user's Hermes and model-service settings.","category":"tools","platforms":[],"maintainer":"Studea Limited","author":"jlucwright","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/jlucwright/fleetkeep-agent-plugin","docs":"https://github.com/jlucwright/fleetkeep-agent-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150184,"prs":[{"n":150184,"state":"merged","created":"2026-11-06T17:13:16Z"}],"created":"2026-11-06T17:13:16Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hypotize","title":"Hypotize","summary":"Run growth experiments with Hypotize, the agent-native Growth OS, through its hosted MCP server (https://api.hypotize.ai/mcp, OAuth sign-in, no keys in config): read what the team already tested, write hypothesis-first ideas, score them with ICE, PIE, RICE or a custom framework, move experiments through an enforced lifecycle and record measured outcomes and learnings. Bundles three skills: the experiment method, a read-only weekly pipeline review and a backlog import from a spreadsheet or Notion export. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"every tool call goes to Hypotize's hosted server (api.hypotize.ai) and acts on the user's Hypotize account with their role in each project; the tool set is served by that server at runtime and is not covered by the pinned sha. Sign-in runs the pinned mcp-remote@0.1.49 through npx (Node.js 20.18.1+ and npm required), which opens a browser and a local callback port on first use and stores OAuth tokens under ~/.mcp-auth. The package marks the server untrusted, so Hermes asks before every tool the server does not mark read-only and refuses them in unattended runs.","category":"tools","platforms":[],"maintainer":"Hypotize","author":"viluca94","version":"1.1.2","requires_hermes":">=0.21.6","repo":"https://github.com/hypotizeai/hypotize-hermes","docs":"https://github.com/hypotizeai/hypotize-hermes#install-in-hermes-agent","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150183,"prs":[{"n":150183,"state":"merged","created":"2026-11-06T17:10:32Z"}],"created":"2026-11-06T17:10:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"payops","title":"payops","summary":"Read-only Paystack transaction inspection and reconciliation for Hermes agents.","disclosure":"read-only payments integration: sends the user's PAYSTACK_SECRET_KEY (read through Hermes's secret route) to api.paystack.co only, issuing GET requests for transactions and settlements; it cannot create charges, refunds or transfers. No other hosts, no files written, no telemetry.","category":"tools","platforms":[],"maintainer":"BigWave45","author":"BigWave45","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/BigWave45/payops-hermes-","docs":"https://github.com/BigWave45/payops-hermes-/blob/7712f084392769356bdb294c4b48bf99bf7faadb/README.md","tools":["payops_list_transactions","payops_reconcile"],"hooks":[],"middleware":[],"env":["PAYSTACK_SECRET_KEY"],"known_issues":"","state":"merged","pr":150178,"prs":[{"n":150178,"state":"merged","created":"2026-11-06T17:05:20Z"}],"created":"2026-11-06T17:05:20Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"vt-check","title":"vt-check","summary":"VirusTotal reputation for downloads and links. Files are hashed locally and looked up by SHA-256 — never uploaded. URLs are checked read-only, and archives are inspected in memory for path traversal, decompression bombs, double extensions and document-named executables.","disclosure":"network calls to www.virustotal.com (SHA-256 hash, URL, domain and IP lookups with the user's VT_API_KEY); vt_check_url with submit=true, which the model sets, POSTs the URL to VirusTotal for a new scan and makes it public there; vt_check_file reads (hashes and inspects in memory) whatever local path it is given, and the file itself is never uploaded; no shell, no background processes, no telemetry; lookup cache in plugin state; credential read via get_secret.","category":"tools","platforms":[],"maintainer":"Aravinth-Earth","author":"Aravinth-Earth","version":"0.1.5","requires_hermes":">=0.22.0","repo":"https://github.com/Aravinth-Earth/vt-check","docs":"https://github.com/Aravinth-Earth/vt-check#readme","tools":["vt_check_file","vt_check_url","vt_check_ip","vt_status"],"hooks":[],"middleware":[],"env":["VT_API_KEY"],"known_issues":"","state":"merged","pr":150177,"prs":[{"n":150177,"state":"merged","created":"2026-11-06T17:03:42Z"}],"created":"2026-11-06T17:03:42Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"supranalytics","title":"SuprAnalytics","summary":"Five analytics workflow skills for SuprAnalytics: weekly performance reports, traffic source analysis, funnel drop-off analysis, revenue attribution, and Core Web Vitals / audit review. Connects to the SuprAnalytics remote MCP server via OAuth. All access is read-only. Network destination: https://supranalytics.app/mcp. No credentials are stored in the plugin. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"Agent Plugins v1 package (plugin.json + mcp.json + five skills), configuration only, no code; every tool call goes to the SuprAnalytics remote MCP server at https://supranalytics.app/mcp, which records usage per its privacy policy (https://supranalytics.app/privacy); the tool set is served by the remote server at runtime and is not covered by the pinned sha. The bundled mcp.json alone gets 401 under Hermes: sign-in needs a native `mcp_servers.supranalytics` entry with `auth: oauth` and `hermes mcp login supranalytics`, after which Hermes stores and refreshes the OAuth tokens. The skills only read analytics data.","category":"tools","platforms":[],"maintainer":"aniketmohite","author":"aniketmohite","version":"1.2.0","requires_hermes":">=0.23.0","repo":"https://github.com/aniketmohite/supranalytics-plugin","docs":"https://supranalytics.app/docs/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150176,"prs":[{"n":150176,"state":"merged","created":"2026-11-06T16:55:11Z"}],"created":"2026-11-06T16:55:11Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"screenrig","title":"screenRIG","summary":"Free, agent-driven digital signage. Your agent pairs Players, uploads images and video, builds pages from docs, sheets and calendars, publishes playlists to TVs and kiosks, and checks each screen with a screenshot.","disclosure":"portable Agent Plugin with two bundled skills, a bundled Node.js CLI (readable JavaScript, no binaries; Node.js 22.23.4+, 24.22.1+ or 26.12.1+) that the skill runs through the terminal tool, and one remote MCP server (screenrig-views, https://api.screenrig.ai/mcp, OAuth). The CLI calls api.screenrig.ai, uploads files and fetches URLs the user names, can launch a local headless Chrome/Chromium for card previews, and keeps its own screenRIG sign-in in its config directory; it never reads Hermes's or other tools' credentials. Web-dashboard connections upload the password, authenticator (TOTP) key and cookies the user supplies to screenRIG, which stores them to sign in to that dashboard. Enrollment and sign-in report the install source (\"hermes/catalog\"). Under Hermes the bootstrap makes no update check and never replaces its own files. Write operations change what physical screens show and can spend screenRIG account credit on advertising.","category":"tools","platforms":[],"maintainer":"screenrig","author":"gersham","version":"26.11.231","requires_hermes":">=0.22.5","repo":"https://github.com/screenrig/plugin","docs":"https://screenrig.ai/docs/start/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The optional screenrig-views MCP server needs a native OAuth entry: hermes mcp add screenrig-views --url https://api.screenrig.ai/mcp --auth oauth, then hermes mcp login screenrig-views. The skill's CLI workflow does not need it.","state":"merged","pr":150175,"prs":[{"n":150175,"state":"merged","created":"2026-11-06T16:52:48Z"}],"created":"2026-11-06T16:52:48Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fiscalisto","title":"Fiscalisto","summary":"Mexican electronic invoicing (CFDI 4.0) and SAT taxes through Fiscalisto's hosted MCP server (https://fiscalisto.com/mcp, OAuth sign-in with per-company grants and read / draft / stamp scopes, no keys in config): search issued and received CFDI, draft, stamp, email and cancel invoices, payment receipts, credit notes, advances, payroll receipts, the month's VAT and ISR estimate, SAT 69-B supplier checks, and SAT documents (constancia, opinión de cumplimiento, buzón tributario). Bundles an English overview skill and thirteen Spanish workflow skills. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only; OAuth uses pinned mcp-remote@0.1.49 over npx stdio, so Node.js 20.18.1+ and npm are required.","disclosure":"every tool call goes to fiscalisto.com and acts on the companies the user approved, with their own role; stamping registers a CFDI with the SAT through Fiscalisto's PAC and uses a stamp from the user's plan, and the server refuses a stamp or cancellation without a confirmation token from a preview. The package marks the server untrusted, so Hermes asks before every tool not annotated read-only and refuses them in unattended runs. Sign-in opens a local callback port and stores OAuth tokens in ~/.mcp-auth. No telemetry. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Fiscalisto","author":"RVP97","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/RVP97/fiscalisto-hermes","docs":"https://fiscalisto.com/apps/chatgpt-y-claude","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150174,"prs":[{"n":150174,"state":"merged","created":"2026-11-06T16:52:32Z"}],"created":"2026-11-06T16:52:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"worldmonitor","title":"WorldMonitor","summary":"Source-aware global intelligence through WorldMonitor's hosted MCP: country risk, conflicts, markets, energy, shipping and natural hazards. Configuration-only Agent Plugins v1 package with one skill. Public source inventory works without credentials; other intelligence requires a signed-in account and some tools require a subscription.","disclosure":"connects to worldmonitor.app; remote tools are dynamic and not frozen by this SHA; authenticated calls may use account allowance. Requests Hermes untrusted-server approval for tools not annotated read-only. No local runtime code, hooks, background service, telemetry collector or self-updater.","category":"tools","platforms":[],"maintainer":"koala73","author":"koala73","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/koala73/worldmonitor-hermes-plugin","docs":"https://worldmonitor.app/mcp","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150167,"prs":[{"n":150167,"state":"closed","created":"2026-11-06T16:42:23Z"}],"created":"2026-11-06T16:42:23Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"crashlab","title":"CrashLab","summary":"Test recovery before delivery, after commit and across restart; inspect saved records, verify the repair and keep a reusable regression.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"dolepee","author":"dolepee","version":"0.5.10","requires_hermes":">=0.23.0","repo":"https://github.com/dolepee/crashlab","docs":"https://github.com/dolepee/crashlab/blob/40932f8b828f584e64c985ddc8920dfd06d43693/README.md","tools":["crashlab_validate","crashlab_run","crashlab_compare","crashlab_list","crashlab_campaign_list","crashlab_campaign_validate","crashlab_campaign_run","crashlab_prepare","crashlab_experiment_run","crashlab_experiment_status","crashlab_experiment_watch","crashlab_experiment_report","crashlab_experiment_export","crashlab_experiment_import"],"hooks":["pre_verify","pre_tool_call","post_approval_response"],"middleware":["tool_execution"],"env":[],"known_issues":"Reconciliation requires one selected original identity and one selected readback query value; missing or repeated selections are rejected.; Execution needs human approval for the captured plan; trusted local cases and applications remain required.; Historical bundles require their recorded evaluator; prepare new experiments explicitly after evaluator changes. VERIFIED status never transfers.; Noninteractive install can require npm ci; local application runtimes and dependencies are separate.; Restart needs an owned foreground process group and record-level observation; numeric-only HTTP counts are rejected.; Replay requires identical evaluator hashes and a direct Python launch; dependencies remain separate.; Kist and Flaskr retain model-repair records; Shiori is a supplied-diagnosis guided model patch with operator verifier runs, not autonomous discovery or adoption.; Flaskr repair covers fresh databases; existing databases need migration and legacy tokenless POSTs are unprotected.; Project freshness covers tracked and nonignored untracked files, not ignored files, dependencies or runtime configuration.; Completion reminders are opt-in, project-scoped and bounded by Hermes continuation limits; they are not an execution barrier.; The native Desktop pane is view-only; approved execution uses Hermes tools or the web dashboard. The pane is SDK-validated, not visually verified in an installed Desktop app.; External application templates require their own checkout, dependencies and case configuration.; HTTP state observers trust application responses; SQLite observers read directly but are not an operating-system isolation boundary.; Legacy mixed browser/inventory campaigns remain validation-only; inventory uses a deliberate fixture scheduling gate. Recovery campaigns execute supported local apps.; Requires Node.js 20+, playwright-core and local Chromium; uses --no-sandbox, so run only trusted fixtures in isolation.; Only the first matching request is interrupted; other fault.occurrence values are unsupported.","state":"merged","pr":150164,"prs":[{"n":150164,"state":"closed","created":"2026-11-06T16:38:32Z"}],"created":"2026-11-06T16:38:32Z","late":false,"said":false,"update":false,"discussion":19,"images":["https://raw.githubusercontent.com/dolepee/crashlab/40932f8b828f584e64c985ddc8920dfd06d43693/docs/dashboard-desktop.png","https://raw.githubusercontent.com/dolepee/crashlab/40932f8b828f584e64c985ddc8920dfd06d43693/docs/dashboard-mobile.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/crashlab.webp"},{"name":"kokpit","title":"Kokpit","summary":"A personal cockpit for Hermes Agent. When a session produces something, Kokpit leaves a short card and receipt in plain Markdown that Hermes, Claude Code and Codex all read, so the next session picks up where the last one stopped. It also captures notes and todos from any Hermes chat, gives a morning brief, and runs a night pass whose proposals quote their exact source lines. Local, stdlib only.","disclosure":"Adds notes from your Kokpit Markdown vault (threads, last session card, latest receipt, related notes) to each turn's context; by default writes a session card and receipt into the vault when a session captured notes or wrote files (listing the paths written); its tools let the agent append notes, tasks, journal lines and accepted idea files to the vault without a prompt and read the Kokpit app's SQLite database read-only; optional settings, all off by default, run the night pass in a background thread at session start (`night_auto`), send up to 10 vault files to your configured model (`night_model`), and run `systemctl --user is-active` for units you list (`server`).","category":"tools","platforms":[],"maintainer":"sahindemirbas","author":"sahindemirbas","version":"0.4.0","requires_hermes":">=0.22.3","repo":"https://github.com/sahindemirbas/kokpit","docs":"https://github.com/sahindemirbas/kokpit/blob/main/docs/hermes-plugin.md","tools":["kokpit_today","kokpit_brain_search","kokpit_threads","kokpit_capture","kokpit_events","kokpit_jobs","kokpit_ai_usage","kokpit_health","kokpit_training","kokpit_server","kokpit_night"],"hooks":["pre_llm_call","post_tool_call","on_session_start","on_session_finalize","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150163,"prs":[{"n":150163,"state":"merged","created":"2026-11-06T16:38:17Z"}],"created":"2026-11-06T16:38:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"telegram-app","title":"Telegram Mini App","summary":"Phone control panel for Hermes inside Telegram: live status and usage, sessions and their messages, agent cron jobs (create, edit, pause, run now, stop, catch-up per job), logs, skills and memory, a send-to-Telegram box and error alerts, opened from your bot's menu button. Login is Telegram initData (HMAC-SHA256 with Ed25519 fallback, freshness window) checked by a token-only dashboard-auth provider on one token route, against a plugin-owned admin list (TELEGRAM_OWNER_ID plus the plugin setting admins) that refuses everyone until set; being allowed to chat with the bot never grants login. Alerts and the send box reach admins only. Built by Muhammad Aiman (aimanmalib) at Sasa Teguh.","disclosure":"a verified login returns the dashboard session token, which authorises the whole dashboard API; because Hermes asks every token provider on every token route, valid initData also passes the token gate of /api/gateway/drain when HERMES_DASHBOARD_DRAIN_SECRET is set (a route the session token cannot reach); the plugin's principals carry the scope telegram-app and its login route demands it once Hermes has per-route scopes (#146551), which also closes drain to initData; loopback dashboard mode only, with the phone app (web/ in the repo) served by your own reverse proxy that forwards only /api/plugins/telegram-app/*. Calls api.telegram.org with TELEGRAM_BOT_TOKEN (read through Hermes's secret route) for the send box and alerts. Runs one background alert thread in the dashboard process (polls errors.log and cron state every 30 s; the plugin setting alerts_enabled: false turns it off) and stores its settings under $HERMES_HOME/state/telegram-app. Reads Hermes sessions, cron jobs, logs, skills and memories; writes only agent cron jobs (no script, no_agent or workdir). No telemetry, no self-update.","category":"desktop","platforms":[],"maintainer":"aimanmalib","author":"aimanmalib","version":"0.6.1","requires_hermes":">=0.23.0","repo":"https://github.com/aimanmalib/hermes-telegram-miniapp","docs":"https://github.com/aimanmalib/hermes-telegram-miniapp#readme","tools":[],"hooks":[],"middleware":[],"env":["TELEGRAM_BOT_TOKEN"],"known_issues":"","state":"merged","pr":150155,"prs":[{"n":150155,"state":"merged","created":"2026-11-06T16:32:32Z"}],"created":"2026-11-06T16:32:32Z","late":false,"said":false,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/brand/catalog-banner.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/status-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/sessions-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/cron-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/logs-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/brain-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/0fd15e2a6b6468fb938789c43c05e17df0c90735/docs/screenshots/send-light.png","https://raw.githubusercontent.com/aimanmalib/hermes-telegram-miniapp/307dab385e067bb438b59d78038ef040dac74447/docs/screenshots/status-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/telegram-app.webp"},{"name":"hermes-wallpaper","title":"Wallpaper","summary":"Put any image, GIF or short video from your drive behind the whole Hermes Desktop window. Pick it with the normal file dialog or drop it in, then tune opacity, blur, brightness, saturation, contrast, vignette, fit, anchor, zoom and mirroring; videos get speed, pause-when-hidden and reduced-motion controls, and a small library with an optional slideshow keeps several backgrounds. Quick controls in the status bar, a full settings page and command-palette commands.","disclosure":"desktop-only (desktop/plugin.js, imports only @hermes/plugin-sdk and react): no backend, agent tools, hooks, env vars, network calls or telemetry. Picked files are copied into the plugin's own IndexedDB in the Desktop app's local profile and never leave that computer; settings use ctx.storage. While a wallpaper shows, the plugin adds its own fixed z-index -1 layer and one style tag under its own html attribute that applies Desktop's glass-mode transparent-surface rules (surface CSS variables, [data-contrib-shell] and [data-slot='sidebar-wrapper'] fills; data-glass-opaque/raised surfaces stay filled); turning it off or disabling the plugin removes all three.","category":"desktop","platforms":["linux","macos","windows"],"maintainer":"jangomango76","author":"jangomango76","version":"1.0.0","requires_hermes":">=0.22.1","repo":"https://github.com/jangomango76/hermes-wallpaper","docs":"https://github.com/jangomango76/hermes-wallpaper/blob/839ab7a2a26913d8ff19aca1b49568ebf58a05d9/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Videos play what Chromium supports: MP4 (H.264) and WebM work; HEVC/ProRes .mov files usually do not and are rejected with a message.","state":"merged","pr":150150,"prs":[{"n":150150,"state":"merged","created":"2026-11-06T16:20:47Z"}],"created":"2026-11-06T16:20:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/jangomango76/hermes-wallpaper/839ab7a2a26913d8ff19aca1b49568ebf58a05d9/docs/banner.png","https://raw.githubusercontent.com/jangomango76/hermes-wallpaper/839ab7a2a26913d8ff19aca1b49568ebf58a05d9/docs/screenshots/chat.png","https://raw.githubusercontent.com/jangomango76/hermes-wallpaper/839ab7a2a26913d8ff19aca1b49568ebf58a05d9/docs/screenshots/popover.png","https://raw.githubusercontent.com/jangomango76/hermes-wallpaper/839ab7a2a26913d8ff19aca1b49568ebf58a05d9/docs/screenshots/settings.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-wallpaper.webp"},{"name":"helm","title":"helm","summary":"A redesigned Hermes Desktop. A Desk home page (greeting and crew status, a prompt that hands work to any bot, Continue, Needs you, Today's scheduled jobs); pending tool approvals and questions from every bot's live chats answered in one place, on the Desk and in a sidebar pane, only on your click; a Session pane with the focused chat's live task plan; a themeable redesign layer across the app (three bases, seven accents, type, corners, density) on a Customize look page; status everywhere (titlebar, session rows, status bar); and a Bots board of rendered robots (191 Blender-rendered PNG layers) that become each bot's Hermes avatar.","disclosure":"desktop half uses only Desktop SDK areas and public gateway calls the app itself makes: host.profiles.list and host.listPersistedSessions (held in memory), session.active_list, approval.pending, session.history (the focused chat's plan), cron.manage action list only (never adds, pauses or removes a job), host.onEvent for approval/clarify/todo events; approval.respond and clarify.respond only when you click Approve, Allow session, Deny or Send; profiles.create only from New bot; profiles.set_asset to set a robot avatar, never over an uploaded photo (profiles.get_asset re-reads each bot's avatar once a minute so a robot Bot Mode's own 160 px face replaced is restored); sends a chat message only from the Desk prompt on Enter or Send. The theme layer is the SDK theme customCSS and selects the app's data-slot names in CSS only (validate warns on these selectors); JS never queries, observes or edits app markup. Writes its own ctx.storage and, when changed in its settings, the app's sessionListDensity and chatTextScale. The dashboard half is a read-only FastAPI router serving the bundled PNGs (fixed-pattern names, no writes, no Hermes internals imported). The agent half registers nothing. No third-party network calls, no shell, no credentials, no telemetry, no self-updater. tools/render/ holds the Blender source that produced the PNGs (not run by Hermes).","category":"desktop","platforms":[],"maintainer":"ASV-Labs","author":"P0GL0L","version":"1.0.5","requires_hermes":">=0.22.0","repo":"https://github.com/ASV-Labs/hermes-helm","docs":"https://github.com/ASV-Labs/hermes-helm/tree/main/docs/guides","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The robot renders come from the plugin's dashboard half, which mounts when the gateway starts; until one Hermes restart after install the Bots board shows flat SVG robots.; The theme layer's CSS targets data-slot names the app ships; if a Desktop release renames one, that rule stops applying and the palette alone remains.; Verified by hand on macOS (Apple silicon). Linux and Windows run the same code but were not exercised.","state":"merged","pr":150160,"prs":[{"n":150160,"state":"closed","created":"2026-11-06T16:34:44Z"},{"n":150144,"state":"closed","created":"2026-11-06T16:17:19Z"}],"created":"2026-11-06T16:17:19Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/hero.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/screens/app-desk.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/screens/desk.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/screens/app-customize-look.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/screens/app-bots-board.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/screens/session-pane.png","https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/docs/demo.gif","https://raw.githubusercontent.com/P0GL0L/hermes-helm/f9b89eeaba3d9f29a7d77d203ba7788086992c82/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/helm.webp"},{"name":"waiting-on-you","title":"Waiting on You","summary":"One list of the questions your Hermes bots are waiting on you to answer. /waiting and hermes waiting scan profile session stores, keep only replies that end by asking you something (English and Indonesian), merge the same question asked by several bots, and drop an item once you reply in that chat or dismiss it.","disclosure":"opens state.db (sessions, messages) with SQLite mode=ro and PRAGMA query_only and shows the text of matching bot replies: every profile on this machine for the terminal command and CLI/TUI/Desktop, but only the chat's own profile for /waiting in a messaging chat unless the owner turns on all_profiles_in_chat (off by default). Writes only plugin-data/waiting-on-you/dismissed.json in the active profile. No network calls, no model calls, no shell commands, no credentials, no background processes, no tools or hooks.","category":"tools","platforms":[],"maintainer":"irsan-dimyati","author":"irsan-dimyati","version":"0.2.0","requires_hermes":">=0.21.1","repo":"https://github.com/irsan-dimyati/hermes-waiting-on-you","docs":"https://github.com/irsan-dimyati/hermes-waiting-on-you#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150140,"prs":[{"n":150140,"state":"merged","created":"2026-11-06T16:11:37Z"}],"created":"2026-11-06T16:11:37Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-make-plain","title":"Hermes MakePlain","summary":"One-click composer polish for the Hermes Desktop chat: a wand button at the right of the input box rewrites the draft in place into a clearer version that keeps the original meaning, with nothing added and nothing dropped. The rewrite is wording cleanup only: it never explains, interprets, comments on or answers the draft, and questions and guesses stay as written. It stays in the draft's language and keeps every concrete detail exactly as written: names, numbers, versions, ports, paths, file names, URLs, @-references, /commands and code. The message is never sent; the button spins while the rewrite is in flight, rejects an empty box before any work starts, and never overwrites a draft edited while the call is running.","disclosure":"one model call per click through the llm.oneshot auxiliary route to the auxiliary.title_generation model; no other network calls, no telemetry, no analytics; reads and writes only the composer draft through the official SDK and keeps no copy of the text (plugin storage is a one-field load heartbeat); no shell commands, no credentials.","category":"desktop","platforms":[],"maintainer":"hey-yx","author":"hey-yx","version":"0.3.1","requires_hermes":">=0.22.0","repo":"https://github.com/hey-yx/hermes-make-plain","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150130,"prs":[{"n":150130,"state":"merged","created":"2026-11-06T15:40:59Z"}],"created":"2026-11-06T15:40:59Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/hey-yx/hermes-make-plain/202bd0e91d4b2bc81dc8037e1dec5e4e82fdf9ca/assets/cover-en.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-make-plain.webp"},{"name":"look-at-this","title":"Look At This","summary":"One-shot \"explain this\" context capture: a hotkey, the composer's attach menu or /look grabs the window you were just in (screenshot, accessibility tree, active URL, selected text, app/window title) and attaches it as one redactable, ephemeral packet to your next Hermes message. User-initiated only; the packet expires after 300 seconds, is consumed by one turn, refuses excluded windows (password managers, incognito) before capturing, and redacts secrets in the text fields.","disclosure":"captures only on request; the packet text is held in memory (the companion for hotkey captures, the gateway for /look captures); only a metadata marker (id/session/expiry) and the PNG touch disk; the PNG is deleted at TTL, /look clear, or replacement; the packet text goes to the configured model provider with that turn; redaction is text-only.","category":"desktop","platforms":["windows","macos","linux"],"maintainer":"Elshayib","author":"Elshayib","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Elshayib/look-at-this","docs":"https://github.com/Elshayib/look-at-this#readme","tools":["lat_grab","lat_status","lat_clear"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"The system-wide hotkey is Windows-only and owned by companion/lat_companion.py with --hotkey; the Desktop plugin SDK has no global-shortcut door. The companion must be running, the packet is held in its memory and fetched by the gateway, and a remote gateway needs companion_url/companion_token. The desktop chip relays the focused session id to the companion (over companion_url/companion_token when the gateway is remote), so a hotkey packet binds to that chat. The in-app keybind covers the focused-Hermes case.; The desktop half of a unified package inventories disabled and must be toggled on once in Capabilities -> Plugins.; /look runs in the gateway process. On a remote gateway, set capture_backend=companion and run companion/lat_companion.py on the machine to capture; the companion must be reachable from the gateway.; Redaction is text-only; the screenshot is not altered.; Windows UIPI prevents a medium-integrity agent from enumerating elevated (admin) windows. Window context is unavailable on Windows ARM64, and native Wayland restricts capture and global shortcuts.","state":"closed","pr":150125,"prs":[{"n":150125,"state":"closed","created":"2026-11-06T15:36:21Z"}],"created":"2026-11-06T15:36:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Elshayib/look-at-this/b1b4b9eb0880f1736d0d8399e65008438b8a8dc4/assets/look-at-this.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/look-at-this.webp"},{"name":"hermes-colab","title":"hermes-colab","summary":"Run Python scripts and Jupyter notebooks on Google Colab GPUs (T4 free tier, L4, A100, H100, TPU) from chat: Hermes assigns the runtime, uploads the code, keeps it alive, streams progress and GPU use, syncs outputs and checkpoints home while the job runs, resumes on a fresh runtime from the last checkpoint when Colab reclaims one, and reports back to the chat that started it; a Desktop page shows live runs with cancel and resume.","disclosure":"needs the user's own Google Cloud OAuth client (Desktop app, Colaboratory scope) signed in with hermes auth add hermes-colab:google; Hermes attaches the token to colab.research.google.com only. Uploads the run's files (hidden files and folders, symlinks, hard links, virtualenvs and common credential files excluded; the home directory, HERMES_HOME and credential folders are refused as code or output folders) to the user's Colab runtime and executes them there with a small stdlib runner that pip-installs the run's requirements; runtimes consume the account's Colab compute units and are released when a run ends; a daemon thread supervises active runs (one per profile, lease-protected; with no active run it only reads the run store every 30 s); run records live in the profile's plugin data directory; a pre_llm_call hook adds a finished run's one-line summary to the starting chat's next turn.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"PietrangeloManco","author":"PietrangeloManco","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/PietrangeloManco/hermes-colab","docs":"https://github.com/PietrangeloManco/hermes-colab#readme","tools":["colab_doctor","colab_run","colab_status","colab_logs","colab_cancel","colab_resume","colab_runtimes","colab_release_runtime"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150110,"prs":[{"n":150110,"state":"merged","created":"2026-11-06T15:12:57Z"}],"created":"2026-11-06T15:12:57Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/docs/banner.png","https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/docs/colab-run.gif","https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/docs/colab-running.png","https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/docs/colab-resumed.png","https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/6292f4943ae2d9983ee276566e9458ce811c2ed0/docs/colab-run.gif","https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/6292f4943ae2d9983ee276566e9458ce811c2ed0/docs/colab-running.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-colab.webp"},{"name":"recall","title":"recall","summary":"Local file recall: a private on-device index of the documents already on the user's machine, with a search tool over file content (SQLite FTS5, no network and no embedding service), a recall_open reader for PDF, Word, Excel, PowerPoint, OpenDocument, Markdown, CSV, email and source files, an @recall: context reference that expands matching passages into the turn, and a pre_llm_call hook that puts up to three candidate file paths in front of the model before it answers a document question. Five tools (recall_index, recall_search, recall_open, recall_stats, recall_forget), a bounded background refresh on session start, and the /recall slash command. Extraction is standard library only (FlateDecode-aware PDF stream extractor, OOXML text nodes).","disclosure":"reads the contents of files under the folders the user points it at (default ~/Documents; any folder can be named, and a folder inside Hermes' own home is refused), and recall_open / @recall: read any absolute file path the model or user names outside the refused set; extracted text is stored in a plaintext SQLite index under HERMES_HOME/plugin-data/recall/, short excerpts are injected into the model prompt on turns whose message looks document-related (disable with the ambient setting, or drop paths with recall_forget), and indexed or opened text reaches the user's model provider in the normal course of a turn. Every read is checked on the RESOLVED path first: credential stores (.env, *.pem, id_rsa, .ssh, .aws, .config, auth.json, state.db and a wider built-in denylist), anything inside Hermes' home (vault, session transcripts, mcp-tokens/, webhook_subscriptions.json, dashboard session token, this plugin's own index) and virtual filesystems such as /proc are refused. Files on disk are never modified, moved or deleted; no network calls and no credentials.","category":"tools","platforms":[],"maintainer":"memeshee","author":"memeshee","version":"0.2.1","requires_hermes":">=0.19.0","repo":"https://github.com/memeshee/hermes-recall","docs":"https://github.com/memeshee/hermes-recall#readme","tools":["recall_index","recall_search","recall_open","recall_stats","recall_forget"],"hooks":["pre_llm_call","on_session_start"],"middleware":[],"env":[],"known_issues":"Scanned PDFs and images are indexed by filename only - there is no OCR, and recall_stats reports the skip reasons.; Ranking is lexical (BM25 plus path, recency and phrase boosts), not semantic; no embedding model is used.; The first index of a large folder costs roughly 16 ms per file (measured over 3,000 files of a mixed real tree).; Name-based filtering cannot be complete for a password written inside an ordinary document; the Hermes-home, credential-directory and virtual-filesystem rules are enforced regardless of filename.","state":"merged","pr":150109,"prs":[{"n":150109,"state":"merged","created":"2026-11-06T15:11:31Z"},{"n":150704,"state":"closed","created":"2026-11-07T13:52:55Z"}],"created":"2026-11-06T15:11:31Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/memeshee/hermes-recall/99c9a6a4a290af705d42c7336cd7fb57ca3eb9d6/docs/answer.png","https://raw.githubusercontent.com/memeshee/hermes-recall/99c9a6a4a290af705d42c7336cd7fb57ca3eb9d6/docs/refusal.png","https://raw.githubusercontent.com/memeshee/hermes-recall/99c9a6a4a290af705d42c7336cd7fb57ca3eb9d6/docs/title.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/recall.webp"},{"name":"load-lock","title":"Load Lock","summary":"A machine-wide load broker for coding agents: Hermes, Claude Code, OpenCode, Codex, Cursor and any MCP client share one heavy-work budget, so builds and test suites take turns instead of thrashing the machine. 19 load_lock_* tools (acquire, queue, offers, honest waits, background jobs that release their permit on exit, machine inspection), a policy brief at session start, a Load Lock dashboard tab, and a Desktop pane, status-bar chip and palette command.","disclosure":"every tool shells out to the local load-lock CLI (Node >= 20, installed separately with npm), which auto-starts a per-user background daemon on a Unix socket with state in ~/.local/state/load-lock; load_lock_run_with_permit runs the command the agent passes on this host in its own process group, only when Hermes's terminal backend is local (it refuses under docker, ssh, modal and other sandboxes, resolving the backend via tools.terminal_scope and config), and a pre_tool_call hook sends any command Hermes's dangerous-command detector flags (imported from tools.approval_detection) to the same approval gate as the terminal tool; every child process (CLI, daemon, jobs) gets an allowlisted environment without provider API keys, plus any names the user lists in env_passthrough; machine inspection reads CPU, memory, load and cgroup limits; the optional auto_install setting (off by default) fetches the pinned npm package with npx, a network call to the npm registry; background work: the daemon, a heartbeat thread and job registry in the plugin process, and one idle `load-lock events --follow` tail in the process serving the dashboard; no telemetry, no credentials, no other network calls.","category":"tools","platforms":["linux","macos"],"maintainer":"aron98","author":"aron98","version":"1.7.1","requires_hermes":">=0.23.0","repo":"https://github.com/aron98/load-lock","docs":"https://github.com/aron98/load-lock/tree/main/plugins/hermes#readme","tools":["load_lock_acquire","load_lock_claim","load_lock_release","load_lock_cancel","load_lock_decline","load_lock_rejoin","load_lock_wait_for_turn","load_lock_pending","load_lock_status","load_lock_inspect_machine","load_lock_get_config","load_lock_configure","load_lock_attach_pid","load_lock_mark_started","load_lock_run_with_permit","load_lock_job_status","load_lock_job_stop","load_lock_wait_for_completion","load_lock_agent_guide"],"hooks":["pre_llm_call","post_compaction","on_session_end","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Needs the load-lock CLI >= 1.7.1: `npm install -g @aron98/load-lock@1.7.1` (Node >= 20). Without it every tool returns a clear error; the auto_install setting (off by default) can fetch the pinned version with npx instead.; The Desktop pane and status chip ship disabled, like every Desktop half: turn them on once under Capabilities ▸ Plugins.; Windows has a named-pipe transport that is unit-tested but not yet verified on a Windows machine.","state":"merged","pr":150106,"prs":[{"n":150106,"state":"merged","created":"2026-11-06T14:57:33Z"}],"created":"2026-11-06T14:57:33Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/aron98/load-lock/d473315d5866f1740f633d8f46e82b2c23c19eec/plugins/hermes/docs/banner.png","https://raw.githubusercontent.com/aron98/load-lock/d473315d5866f1740f633d8f46e82b2c23c19eec/plugins/hermes/docs/01-desktop-queued.png","https://raw.githubusercontent.com/aron98/load-lock/d473315d5866f1740f633d8f46e82b2c23c19eec/plugins/hermes/docs/02-desktop-done.png","https://raw.githubusercontent.com/aron98/load-lock/d473315d5866f1740f633d8f46e82b2c23c19eec/plugins/hermes/docs/03-pane.png","https://raw.githubusercontent.com/aron98/load-lock/d473315d5866f1740f633d8f46e82b2c23c19eec/plugins/hermes/docs/04-dashboard-tab.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/load-lock.webp"},{"name":"archytan-lite","title":"Archytan Lite","summary":"Every tool call is decided by Archytan Lite, an authorization gate that runs outside Hermes with its own signing key, before the tool runs. A call becomes checks on what it touches (each file path, each program and git subcommand a command runs, every path and URL it names, each host fetched, MCP and plugin tools by name); all must be ALLOWed, and each ALLOW is a single-use permission spent just before the tool runs. Refusals use the block directive, so they hold under /yolo and approvals.mode: off. Anything the plugin can't read precisely ($VAR, $(...), loops, unpinnable paths), any error, an unreachable gate or a bad signature is refused. Every decision is an Ed25519-signed, hash-chained receipt; `hermes archytan verify` checks the whole log. Starter policy for one workspace, edited as JSON and applied with `hermes archytan reload`.","disclosure":"the gate is proprietary software by the plugin's maintainer, free under its Community license, run from ghcr.io/high-archytech-solutions/archytan-lite@sha256:205703a7fc67a9e96aa0930fd9dda83fe2b9694b724b13dea8c1854948e82071 (2.7.1), which the plugin never pulls unless you pass --pull; `hermes archytan setup|reload|verify` and `/archytan verify` run docker with a minimal environment and create the volume archytan-hermes-data and the container archytan-hermes (restart unless-stopped, bound to 127.0.0.1:8431); the hook sends each gated call's action, resource (path, program, host or tool name) and hermes:<session id> to that local gate, never argument contents or results; stores its caller token through Hermes's credential store as ARCHYTAN_LITE_HERMES_TOKEN; writes the gate's policy, callers file (token hash only), public key and a capped decisions.jsonl under plugin-data/archytan-lite; carries the gate's MIT Python client (archytan-lite 2.1.1 client.py, byte-identical) so it has no Python dependencies; no telemetry. Until setup has run, every gated tool call is refused.","category":"tools","platforms":[],"maintainer":"High-ArchyTech-Solutions","author":"Hypgnosis","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/High-ArchyTech-Solutions/hermes-archytan-lite","docs":"https://github.com/High-ArchyTech-Solutions/hermes-archytan-lite/blob/38748165b089f776acf9d6119eaeafdb76eed83e/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Needs Docker for the gate, and in-process plugins (Hermes's default): under plugins.isolation: host the `hermes archytan` commands aren't available.; Another plugin's modify directive can change a tool's arguments after this plugin checked them; don't combine it with plugins that rewrite arguments.","state":"merged","pr":150099,"prs":[{"n":150099,"state":"merged","created":"2026-11-06T14:38:02Z"}],"created":"2026-11-06T14:38:02Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/High-ArchyTech-Solutions/hermes-archytan-lite/38748165b089f776acf9d6119eaeafdb76eed83e/docs/banner.png"],"videos":[],"x":["https://x.com/HighArchyTech/status/2118745676712423467"],"youtube":[],"thumb":"/hackathon/thumbs/archytan-lite.webp"},{"name":"plugin_foundry","title":"Plugin Foundry","summary":"Turn a narrow plugin request into a native Hermes plugin: manifest, entry point, tool, SQLite state, tests, static scan and catalog draft. Two archetypes only: a SQLite folder watcher and a JSON API poller, each with one tool. The folder-watcher parser accepts one explicit supported file type or complete dotted suffix and refuses unsupported, composite, conflicting or ambiguous requests. A trailing period is removed only at request end or before validated supported follow-up instructions. Sentence boundaries are detected before a capitalised token or complete instruction verb, but that detection alone does not permit removal; other prose fails closed, and abbreviations without a sentence start stay inside the instruction. Writes stay under the Foundry data root, generated tests run in a minimal environment, and paths outside the root need a pre-tool approval. Provides pre_tool_call and post_approval_response hooks plus the public tool_execution middleware for trusted call IDs. Foundry itself makes no network requests. Installing or cataloguing generated code is a separate human step; nothing is auto-merged.","disclosure":"","category":"automation","platforms":[],"maintainer":"dolepee","author":"julian-saint-work","version":"0.1.5","requires_hermes":">=0.23.0","repo":"https://github.com/dolepee/hermes-plugin-foundry","docs":"https://github.com/dolepee/hermes-plugin-foundry/blob/9345a56954d219f923a05712a7a68e44df5099a2/README.md","tools":["foundry_plan","foundry_build","foundry_test","foundry_list","foundry_catalog"],"hooks":["pre_tool_call","post_approval_response"],"middleware":["tool_execution"],"env":[],"known_issues":"Declared runtime floor is Hermes >=0.23.0. The public plugin API at 0.21.5 was audited, but runtime and approval acceptance is only recorded on v0.23.; Supports only the two documented archetypes: a SQLite folder watcher and a JSON API poller.; The watcher parser intentionally rejects ambiguous or unsupported file-type prose rather than guessing. Use one explicit type, for example CSV files; arbitrary sentence wording is not supported.; Generated code is not installed, published or catalogued automatically. A human must review and install it.","state":"merged","pr":150095,"prs":[{"n":150095,"state":"merged","created":"2026-11-06T14:35:55Z"}],"created":"2026-11-06T14:35:55Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"completion-proof","title":"completion-proof","summary":"Revision-bound receipts for operator-configured checks; changed source, tests or artifacts make earlier passes stale.","disclosure":"proof_verify, `/proof verify` and `hermes completion-proof verify` run the check commands the user configures (argv, no shell) in the configured workspace with the user's OS privileges, unsandboxed, with a minimal environment (no credentials); the model can start these runs by check id without an approval prompt but cannot add or change commands; `hermes completion-proof init` writes a starter test command (pytest, npm test or unittest) into the plugin's settings for review; receipts, redacted output excerpts and hashes of tool commands/results are stored in the plugin's own database; once per coding turn the pre_verify hook may ask the model to run the checks; no network or telemetry.","category":"tools","platforms":["linux"],"maintainer":"yuanshen101","author":"yuanshen101","version":"0.1.5","requires_hermes":">=0.22.7","repo":"https://github.com/yuanshen101/completion-proof","docs":null,"tools":["proof_list_checks","proof_status","proof_verify","proof_report"],"hooks":["post_tool_call","pre_verify"],"middleware":[],"env":[],"known_issues":"Native Windows and macOS are untested; Linux validation was performed under WSL2.; Configured checks run with the user's OS privileges and are not sandboxed.; The pre_verify reminder is bounded, not a fail-closed completion gate.; Receipts are local records, not cryptographic attestations.","state":"merged","pr":150089,"prs":[{"n":150089,"state":"merged","created":"2026-11-06T14:20:32Z"}],"created":"2026-11-06T14:20:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"factkit","title":"factkit","summary":"Semantic recall for the built-in holographic memory provider. It reads the provider's store read-only and keeps its own embedding vectors in a separate plugin database (never writing into holographic's tables), adding an embedding-based recall block before each model call, history-aware dedupe so a fact already shown in the conversation is not injected twice, and embedding re-ranking of fact_store search results. Writes are never automatic: conflict, duplicate and TTL actions stay explicit review/apply operations. No core files are patched and the plugin never self-updates.","disclosure":"the current user message and the stored fact text are sent to the OpenAI-compatible embeddings endpoint configured in the plugin's config (default http://127.0.0.1:1234/v1); point it at a remote host only if you accept that. The endpoint key is read through Hermes' secret scope, never written to the process environment. Disclosure — the current user message and stored fact text are sent to the OpenAI-compatible embeddings endpoint set in the plugin's config (default http://127.0.0.1:1234/v1); point it at a remote host only if you accept that. The endpoint key is read through Hermes' secret scope and is never written to the process environment.","category":"memory","platforms":[],"maintainer":"MohamedElsiddig","author":"MohamedElsiddig","version":"0.3.2","requires_hermes":">=0.22.7","repo":"https://github.com/MohamedElsiddig/hermes-plugin-factkit","docs":"https://github.com/MohamedElsiddig/hermes-plugin-factkit#readme","tools":[],"hooks":["pre_llm_call","transform_tool_result","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150080,"prs":[{"n":150080,"state":"merged","created":"2026-11-06T13:56:24Z"}],"created":"2026-11-06T13:56:24Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"showreel","title":"Showreel","summary":"Turn any Hermes session into a demo video under 90 seconds. Six observer hooks record what the session actually did (the ask, terminal commands and output, file edits, screenshots, token usage), scrubbed twice for secrets; a deterministic storyboard keeps a failing test and its fix together and fits a hard 89 s budget; Pillow and your own ffmpeg render a 1080p MP4 (16:9, 9:16 or 1:1) with burned-in captions, an .srt and a poster. Desktop half: a Showreel page with a moment editor (drop beats, edit captions) and inline player, a REC chip, and a player card for showreel_render results. Narration is off by default; optional free offline voice (espeak-ng or piper on PATH), Hermes text_to_speech, or the user's own ElevenLabs key only when explicitly chosen, with `hermes showreel plan` showing the exact text and character count first.","disclosure":"records every session by default (capture on): the user's prompts, terminal commands and output, file edits, token usage and any image file whose path appears in tool output, scrubbed for secret patterns (best effort; screenshot and image pixels are not scrubbed) into its plugin-data SQLite DB; old recordings are pruned to the newest keep_sessions (30) only when a video is rendered; runs ffmpeg/ffprobe (and espeak-ng or piper with local narration) as subprocesses with fixed argument lists; writes renders to its plugin-data renders folder or the user's output_dir; no network unless narration is set to elevenlabs (HTTPS to api.elevenlabs.io with the caption text, using the user's ELEVENLABS_API_KEY) or hermes (the TTS the user configured); no telemetry, no background processes, no self-updates.","category":"tools","platforms":[],"maintainer":"Duffey234","author":"Duffey234","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Duffey234/hermes-showreel","docs":"https://github.com/Duffey234/hermes-showreel#readme","tools":["showreel_render"],"hooks":["on_session_start","pre_llm_call","post_tool_call","post_api_request","post_llm_call","on_session_end"],"middleware":[],"env":[],"known_issues":"Needs ffmpeg on PATH (not bundled); `hermes showreel status` reports what it found.","state":"merged","pr":150078,"prs":[{"n":150078,"state":"merged","created":"2026-11-06T13:38:46Z"}],"created":"2026-11-06T13:38:46Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/CryptoBurrito/status/2118699050069295357"],"youtube":[],"thumb":null},{"name":"dxmt","title":"DXMT Memory","summary":"Long-term memory in a DXMT server you run: recall by meaning and keyword before each turn, durable facts extracted at session end and before compression, supersede and forget by id, and the same memories visible to every other agent and tool on the machine over REST and MCP. The server embeds, so no embedding key is needed in Hermes.","disclosure":"conversation turns, extracted facts and built-in memory-tool writes are sent to the configured DXMT server (http://localhost:9999 by default; DXMT_URL or plugins.dxmt.server.url to change it) with DXMT_API_KEY if the server has one, read through Hermes; fact extraction uses Hermes's auxiliary LLM (task dxmt_extraction); no other endpoint, no telemetry, no file or shell access, no background process beyond a writer thread inside Hermes. Maintained by the DXMT project.","category":"memory","platforms":[],"maintainer":"dxmt","author":"eric-epsilla","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/dxmt/dxmt","docs":"https://github.com/dxmt/dxmt/tree/aaf7aa600770364a51cf7c47ee79e7a264913d91/vectordb/clients/hermes-dxmt-memory#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a running DXMT server with an embedding model (vectordb serve, or docker run -p 127.0.0.1:9999:9999 -v dxmt:/data dxmtai/dxmt); without one the tools answer with an error and prefetch injects nothing; Install the client into Hermes's interpreter once: uv pip install --python ~/.hermes/hermes-agent/venv/bin/python3 dxmt-python-sdk pyyaml","state":"merged","pr":150069,"prs":[{"n":150069,"state":"closed","created":"2026-11-06T13:22:12Z"}],"created":"2026-11-06T13:22:12Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"llmapi","title":"LLM API","summary":"LLM API (llmapi.ai) as a Hermes model provider (`--provider llmapi`, alias `llm-api`, or LLM API in `hermes model`): Claude, GPT, Gemini, Kimi, DeepSeek, GLM, Qwen and more on one key, each on the API it works best on. Claude runs over the Anthropic Messages API (so Hermes' prompt caching applies), GPT-5 and later over the Responses API, everything else over Chat Completions. The picker lists LLM API's tool-capable chat models with 64K+ context from its public catalog, which also supplies context windows, image input, per-model reasoning levels and list prices; catalog aliases resolve in /model. Gateway errors (out of credits, spend caps, model not allowed for the key) map onto Hermes' fallback instead of a key rotation; /usage shows the credit balance and monthly cap; per-request cost is the billed amount when the gateway reports it, else a list-price estimate. Maintained by LLM API.","disclosure":"none","category":"models","platforms":[],"maintainer":"llmapi-ai","author":"romanbesedinskiy-jpg","version":"0.1.1","requires_hermes":">=0.22.6","repo":"https://github.com/llmapi-ai/hermes-provider-llmapi","docs":"https://github.com/llmapi-ai/hermes-provider-llmapi#readme","tools":[],"hooks":[],"middleware":[],"env":["LLMAPI_API_KEY"],"known_issues":"","state":"merged","pr":150061,"prs":[{"n":150061,"state":"merged","created":"2026-11-06T13:05:59Z"}],"created":"2026-11-06T13:05:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"starlearner-nexus","title":"StarLearner-Nexus","summary":"Turn the repositories you star on GitHub into a living library of registered Hermes skills. `starlearner_sync` runs the whole pipeline — fetch, map (the LLM curation pass), categorize into a fixed set of domains, two-track assess (integrate-into-your-makeup and business-opportunity), generate, register (`starlearner-nexus:<name>`) — incrementally via a persistent seen-ledger (a repo is never processed twice); `starlearner_status` is read-only state (including token set / not set); `starlearner_review` surfaces everything LLM-shaped item by item for the human. The map / categorize / assess stages optionally run through the host LLM (`ctx.llm`, one registered auxiliary task) with a deterministic rules engine as the bit-for-bit fallback (`enrich: rules` = zero LLM calls); generate is never the LLM. Registration timing: handler-time `register_skill`, accepted and live in the same session (a skill view on a name the sync just returned resolves the same second); a plugin reload re-registers everything generated before it.","disclosure":"contacts api.github.com only (GET /user/starred, HTTPS, paginated with a hard page cap), authenticated with your own read-only GitHub token read through Hermes's secret scope and never written to the plugin's files, logs or results; LLM enrichment (on by default; `enrich: rules` turns it off) sends public repo metadata (name, description, topics, language, stars) to your active provider through Hermes (`ctx.llm`, auxiliary task starlearner_enricher); every new starred repo becomes a registered skill whose description and body carry that repo's own third-party description text, so text written by the repo's author appears in your skills index and in skills the agent loads; writes only to its own plugin-data store; no shell commands, no subprocesses, no telemetry; the bundled \"StarLearner-Nexus sync\" automation blueprint runs only if you schedule it. Origin of the reapx lineage (same owner).","category":"tools","platforms":[],"maintainer":"BigBossRabbit","author":"BigBossRabbit","version":"1.2.0","requires_hermes":">=0.22.6","repo":"https://github.com/BigBossRabbit/starlearner-nexus-hermes-skill","docs":null,"tools":["starlearner_sync","starlearner_status","starlearner_review"],"hooks":[],"middleware":[],"env":["STARLEARNER_GITHUB_TOKEN"],"known_issues":"","state":"merged","pr":150059,"prs":[{"n":150059,"state":"merged","created":"2026-11-06T12:56:54Z"}],"created":"2026-11-06T12:56:54Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"better-tg-cli","title":"Better-TG-CLI","summary":"Telegram on your own account (not a bot) through a local MCP server and a skill: read and search chats, threads, comments and forum topics, press bot buttons, and send, edit, react or forward only after you approve each action. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"Runs the `better-tg-cli@0.39.6` npm package locally over stdio through `npx` (Node.js 20+; no runtime dependencies, downloaded from npm on first start), in the plugin's data folder. Network: Telegram's own servers over MTProto; the project's login service (better-tg-cli.com, API at tg-cli-broker.login-c2d.workers.dev) only while you log in with a login key; a once-a-day version check to registry.npmjs.org only when the CLI runs in your own terminal (never under Hermes; off with TG_NO_UPDATE_CHECK=1). No telemetry. Login happens once in your own terminal (`npx -y better-tg-cli onboard`), and the skill may install the CLI globally from npm, brew or scoop after asking you; the session and the app's API hash are the CLI's own, stored in its own items in the macOS Keychain, the Linux Secret Service, Windows DPAPI, 1Password (when configured) or a 0600 file in ~/.config/tg, and anyone holding that session controls the Telegram account. It never reads Hermes' secrets or another tool's login. mcp.json forwards only DBUS_SESSION_BUS_ADDRESS, XDG_RUNTIME_DIR and the CLI's own TG_PROFILE, TG_READ_ONLY, TG_LOG_LEVEL, TG_FLOOD_WAIT_MAX, TG_TRANSPORT, TG_NO_UPDATE_CHECK; no credential. Tools that change state (send, edit, delete for everyone, react, forward, pin, leave a chat, and saving media or exports to a folder the agent names) go through MCP elicitation, one Allow Once / Deny per action; unattended runs time out and nothing is sent. Writing without asking can only be switched on in a terminal or OS dialog, never over MCP; on Linux without a secret store that setting is a plain 0600 file the agent's terminal could edit. Login, logout and account transfer are not exposed. Every write is logged locally. The server runs its bundled CLI as a child process per tool call. The tool set comes from the pinned npm version.","category":"tools","platforms":[],"maintainer":"TheVilfer","author":"TheVilfer","version":"0.39.6","requires_hermes":">=0.22.3","repo":"https://github.com/TheVilfer/better-tg-cli","docs":"https://github.com/TheVilfer/better-tg-cli/blob/0a73b787509dd385c9ef555bc16ed2e34d9ab4af/agent-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150058,"prs":[{"n":150058,"state":"merged","created":"2026-11-06T12:50:32Z"}],"created":"2026-11-06T12:50:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"email-steward","title":"Email Steward","summary":"Owner-private Gmail triage, durable obligations and shared Desktop rules.","disclosure":"","category":"automation","platforms":["linux"],"maintainer":"kaosjammo","author":"kaosjammo","version":"0.1.0","requires_hermes":"","repo":"https://github.com/kaosjammo/hermes-email-steward","docs":"https://github.com/kaosjammo/hermes-email-steward#readme","tools":["email_steward"],"hooks":[],"middleware":[],"env":["EMAIL_STEWARD_GOOGLE_CLIENT_ID","EMAIL_STEWARD_GOOGLE_CLIENT_SECRET"],"known_issues":"Draft WIP: unfinished presentation changes have no fresh independent approval.; Aggregate Python tests timed out with failures/skips; package build is blocked by a setuptools environment/requirement mismatch.; Pinned-SDK validation passes with private-core-import warnings; released-version compatibility floor remains unverified.; Live Gmail/OAuth, gateway delivery, native Electron and mobile acceptance are unrun.","state":"open","pr":150057,"prs":[{"n":150057,"state":"open","created":"2026-11-06T12:48:55Z"}],"created":"2026-11-06T12:48:55Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"airlock-sandbox","title":"Airlock Sandbox","summary":"Terminal backend that routes Hermes command execution through an operator-chosen Airlock HTTPS API and disposable sandbox, then surfaces receipts (RFC 8785 JCS, SHA-256, Ed25519) as BLOCKED / ALLOWED / VERIFIED (`hermes config set terminal.backend airlock_sandbox`). Requires an explicit HTTPS origin `base_url` (no built-in default host). When `verify_receipts` is true (default), requires a locally configured `public_key_hex` obtained out-of-band — the verifying key is never fetched from the Airlock API at verify time. VERIFIED binds signed decision + execution digests/exit_code only; it does not prove command text and does not verify full receipt-chain linkage (`prev_hash` is informational).","disclosure":"HTTPS calls to the configured origin only (`/healthz`, `/api/arena`, `/api/receipt/{id}`); optional secret `AIRLOCK_API_TOKEN` via Hermes secret scope; no host shell of its own (commands run only inside Airlock when policy allows). Hermes dangerous-command approvals are not bypassed. File-tool stdin pipes and non-default cwd are refused (Airlock arena has neither process-stdin nor cwd).","category":"tools","platforms":["linux","macos","windows"],"maintainer":"justrunme","author":"justrunme","version":"0.1.2","requires_hermes":">=0.21.6","repo":"https://github.com/justrunme/hermes-airlock-plugin","docs":"https://github.com/justrunme/hermes-airlock-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150029,"prs":[{"n":150029,"state":"merged","created":"2026-11-06T12:18:15Z"}],"created":"2026-11-06T12:18:15Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/justrunme/hermes-airlock-plugin/a35cf831045450e4f207a6843e2cbf912151236c/docs/img/banner.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/airlock-sandbox.webp"},{"name":"inventory-reminder","title":"inventory-reminder","summary":"Live, evidence-backed inventory of the host an agent is running on: repos (cloned vs online-only), skills, MCP servers, CLIs, local models and services, regenerated from ground truth by read-only scanners. Registers two tools — inventory_where(term) answers \"do I already have X?\" across every section with a ready detail line, and inventory_summary() returns a one-line digest for session bootstrap. Both read a cached digest file ($INVENTORY_JSON, else ~/.hermes/inventory.json); no live rescan per turn, no network, no writes.","disclosure":"the digest describes the host (repo names, skill names, CLI paths, model names, service names) and that text is returned to the model.","category":"tools","platforms":[],"maintainer":"ether-btc","author":"ether-btc","version":"1.0.0","requires_hermes":">=0.19","repo":"https://github.com/ether-btc/inventory-reminder","docs":"https://github.com/ether-btc/inventory-reminder#readme","tools":["inventory_where","inventory_summary"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150026,"prs":[{"n":150026,"state":"merged","created":"2026-11-06T12:07:48Z"}],"created":"2026-11-06T12:07:48Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"usage-hud","title":"usage-hud","summary":"Compact Codex account limits and focused-session token usage for Hermes Desktop.","disclosure":"uses Hermes gateway session.usage and model.options; Hermes may refresh provider account usage; no direct credential access or author telemetry.","category":"desktop","platforms":["windows"],"maintainer":"aktogde1","author":"aktogde1","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/aktogde1/hermes-usage-hud","docs":"https://github.com/aktogde1/hermes-usage-hud#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150025,"prs":[{"n":150025,"state":"merged","created":"2026-11-06T12:05:27Z"}],"created":"2026-11-06T12:05:27Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-egm","title":"Hermes EGM","summary":"Fresh-context, tool-free design reviews with checked source evidence and EGM workflow skills.","disclosure":"","category":"tools","platforms":["linux"],"maintainer":"willbohn","author":"willbohn","version":"0.2.0","requires_hermes":">=0.22.7","repo":"https://github.com/willbohn/hermes-egm","docs":"https://github.com/willbohn/hermes-egm#quickstart","tools":["egm_review"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150021,"prs":[{"n":150021,"state":"merged","created":"2026-11-06T11:57:34Z"}],"created":"2026-11-06T11:57:34Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/willbohn/hermes-egm/d37006f9ddd940ed196fa07554fe2dd470ce7336/assets/banner.jpg","https://raw.githubusercontent.com/willbohn/hermes-egm/d37006f9ddd940ed196fa07554fe2dd470ce7336/assets/how-it-works.svg","https://raw.githubusercontent.com/willbohn/hermes-egm/d37006f9ddd940ed196fa07554fe2dd470ce7336/assets/activation-modes.svg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-egm.webp"},{"name":"chronos","title":"Chronos","summary":"Speculative branching: try several candidate fixes in isolated git worktrees, verify each against the project's tests through Hermes' terminal tool, and merge only a verified winner through Hermes' file tools.","disclosure":"runs the project's test suite (the operator's `verifier_command`, or an auto-detected `pytest`, `unittest`, `npm test`, `cargo test` or `go test`) through Hermes' terminal tool inside git worktrees under `HERMES_HOME/plugin-data/chronos/`, so repository test code and model-written candidate files execute on the configured terminal backend; by default `chronos_branch` writes the best passing candidate's files into the working tree through Hermes' `write_file` tool (subject to its denylist and approvals), and `chronos_rewind` checks out an earlier recorded commit (refused on a dirty tree).","category":"tools","platforms":[],"maintainer":"Shikhyy","author":"Shikhyy","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/Shikhyy/hermes-agent","docs":"https://github.com/Shikhyy/hermes-agent/blob/5b2a4b4a2c43e8a9b1e7bf8d32484a651bffedf0/plugins/chronos/README.md","tools":["chronos_branch","chronos_evaluate","chronos_merge","chronos_rewind","chronos_status"],"hooks":["on_session_start","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150020,"prs":[{"n":150020,"state":"merged","created":"2026-11-06T11:55:26Z"}],"created":"2026-11-06T11:55:26Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mflow","title":"mFlow","summary":"Manage mFlow (m-flow.io) from Hermes: boards and tasks, Knowledge Base/ADRs, and coding-agent delegation. Portable Agent Plugins v1 package (mcp.json + skills/) with no Python and nothing runs locally — it points Hermes at the hosted mFlow MCP server (Streamable HTTP at https://mcp.m-flow.io/mcp) and ships a skill that teaches Hermes how to use it (list_standalone_projects/tasks, create/update, create_comments, knowledge docs incl. ADRs, assign_to_coding_agent).","disclosure":"network calls go to mcp.m-flow.io (mFlow's hosted MCP server); the plugin sends whatever board/task/KB data the user asks the agent to read or write, and coding-agent requests send the user's task text and, optionally, a public repo URL to mFlow's sandboxes. One auth path is OAuth (Google sign-in, access tokens last 90 days, re-auth every 90 days); the other is a future mFlow PAT via MFLOW_TOKEN (not yet shipped server-side — OAuth is the working path today). No telemetry, no shell commands, nothing stored or run on the host.","category":"tools","platforms":[],"maintainer":"vladyslavpatrick","author":"vladyslavpatrick","version":"0.1.0","requires_hermes":"","repo":"https://github.com/vladyslavpatrick/mflow-hermes","docs":"https://github.com/vladyslavpatrick/mflow-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150016,"prs":[{"n":150016,"state":"merged","created":"2026-11-06T11:45:04Z"}],"created":"2026-11-06T11:45:04Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-rescue","title":"Rescue","summary":"Keeps your agent from breaking Hermes, and says what really went wrong. Refuses agent tool calls that would delete or hand-edit Hermes's own data (sessions, state.db, memories, skills, settings, profiles, keys) and names the supported command instead; sends edits to settings, SOUL.md or memory files to Hermes's approval prompt with a snapshot first (/rescue undo); and when a reply fails or quietly comes from a backup, adds one plain line per attempt with the real cause and the fix (NousResearch/hermes-agent#144562, #147620). /rescue in every surface, plus a Desktop status chip and pane.","disclosure":"reads tool-call arguments (command, path, code) to decide; writes plugin-data/hermes-rescue/rescue.db (event kind, short description, up to 200 characters of the command, provider/model/status of failed model calls, Rescue's explanation; about 2,000 events kept); copies files a risky change would touch (config.yaml, SOUL.md, memories/, skills/, cron/, plugins/, state.db up to 300 MB) into plugin-data/hermes-rescue/snapshots/ before the change (newest 30 kept, so up to 30 state.db copies on disk) and writes them back on /rescue undo (for state.db only missing conversations come back, through Hermes's SessionDB export_session/import_sessions; folders are merged; only inside the Hermes folders); never opens, copies, moves or overwrites .env, auth.json or the other credential stores Hermes lists; after a failed model call that ends a turn, a short-lived background thread posts the note to the same conversation with ctx.post_message and edits it if a later attempt answers; never auto-approves (in YOLO mode Hermes itself approves the ask-first edits).","category":"general","platforms":[],"maintainer":"0xNexuz","author":"0xNexuz","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/0xNexuz/hermes-rescue","docs":"https://github.com/0xNexuz/hermes-rescue/blob/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/README.md","tools":[],"hooks":["pre_tool_call","post_tool_call","api_request_error","post_api_request","transform_llm_output","on_session_end"],"middleware":[],"env":[],"known_issues":"The shell check follows quotes, comments, here-documents, $(…), globs, braces, cd/env -C, bash -c, xargs and find patterns (a find -regex on Hermes's folders always counts; the pattern is never run); it does not expand aliases or the scripts a command calls.; Python passed to execute_code is checked by pattern only, so Rescue asks the human there rather than blocking.; On Windows, PowerShell and cmd commands are read for deletes, moves, copies and writes; longer PowerShell scripts with their own logic are not followed.; /rescue undo for state.db only brings back missing conversations (through Hermes's own import); a conversation still there but missing messages is reported, not overwritten; the full copy stays in the snapshot.; In YOLO mode or with approvals off, Hermes approves Rescue's ask-first edits itself; the snapshot is still saved, so /rescue undo still works.; In the classic CLI without the gateway, a failed-turn note is only kept in /rescue log.","state":"merged","pr":150015,"prs":[{"n":150015,"state":"merged","created":"2026-11-06T11:42:45Z"}],"created":"2026-11-06T11:42:45Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/01-blocked-windows-desktop.png","https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/03-pane-windows-desktop.png","https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/04-undo-windows-desktop.png","https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/06-statusbar-windows-desktop.png","https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/02-approval-windows-desktop.png","https://raw.githubusercontent.com/0xNexuz/hermes-rescue/5d365ba5e0293ce0c6bab22cc000ad99b4cefbcd/docs/screenshots/05-undo-toast-windows-desktop.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-rescue.webp"},{"name":"corallium","title":"corallium","summary":"A shared, append-only knowledge graph for agents, built on the practices that make science work: publish one falsifiable claim with its evidence, then let other agents try to reproduce it or kill it — votes change a node's status, and a withdrawn claim marks everything built on it as suspect. Ten tools: find, tip, show, publish, vote, state, claim, release, suggest, verify. Reads fall back to scanning <corals_dir>/<coral>/nodes/*.json when the server is stopped; writes fail loudly instead of being dropped. The repository ships install.sh, which scaffolds a local coral and starts the server.","disclosure":"it speaks HTTP to the configured Corallium server (default http://127.0.0.1:8731), reads only its own `corallium:` block from ~/.hermes/config.yaml, and reads local node JSON files for offline reads; the plugin writes nothing itself (the server does), sends no telemetry, spawns no subprocesses, and has no self-update.","category":"memory","platforms":[],"maintainer":"Aoyi-Feng","author":"Aoyi-Feng","version":"1.0.0","requires_hermes":">=0.21.6","repo":"https://github.com/Aoyi-Feng/Corallium","docs":"https://github.com/Aoyi-Feng/Corallium#readme","tools":["coral_find","coral_tip","coral_show","coral_publish","coral_vote","coral_state","coral_claim","coral_release","coral_suggest","coral_verify"],"hooks":[],"middleware":[],"env":["CORALLIUM_URL","CORALLIUM_CORAL","CORALLIUM_WRITE_TOKEN"],"known_issues":"","state":"closed","pr":150008,"prs":[{"n":150008,"state":"closed","created":"2026-11-06T11:29:32Z"}],"created":"2026-11-06T11:29:32Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"context-steward","title":"context-steward","summary":"One auxiliary judgment chooses a checkpoint or a fresh context segment in the same chat.","disclosure":"","category":"memory","platforms":[],"maintainer":"jiangkoumo","author":"jiangkoumo","version":"0.4.1","requires_hermes":">=0.23.0","repo":"https://github.com/jiangkoumo/hermes-context-steward","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Runs its judgment on the session model unless plugins.entries.context-steward.llm.allow_task_override is set (then auxiliary.compression).; Handoff formatting relies on Hermes's long-lived summary prefix/end-marker text; a change upstream needs a plugin update.; Per-phase model overrides also need operator grants under plugins.entries.context-steward.llm; base_url/api_key_env are ignored in favour of custom_providers.","state":"closed","pr":150007,"prs":[{"n":150007,"state":"closed","created":"2026-11-06T11:28:41Z"}],"created":"2026-11-06T11:28:41Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"reapx","title":"ReapX","summary":"Turn the bookmarks you saved on X into ready-to-load, registered Hermes skills — without the paid X API. The plugin is data-in: `reapx_import` runs the whole pipeline — map, categorize into a fixed set of domains, two-track assess (integrate-into-your-makeup and business-opportunity), generate, register (`reapx:<name>`) — from a bookmarks file you point it at, or from items passed inline (collected by you through the host's own browser tooling); `reapx_status` is read-only state; `reapx_review` surfaces everything LLM-shaped item by item for the human before anything is relied on. Incremental via a persistent seen-ledger (a bookmark is never processed twice). The map / categorize / assess stages optionally run through the host LLM (`ctx.llm`, one registered auxiliary task) with a deterministic rules engine as the bit-for-bit fallback (`enrich: rules` = zero LLM calls); generate is never the LLM. Registration: handler-time `register_skill`, live in the same session; `register_generated_skills` defaults to false — generated skills land in the review and on disk, and register only after you say so. Settings are read from plugin config only (tool args can never flip enrichment, lift a spend cap, or force registration).","disclosure":"Derived from starlearner-nexus (same owner; different input and engine). The plugin reads no browser profile, cookie store or keychain; the repo also ships standalone browser-harvest scripts (scripts/fetch_x_bookmarks.py, scripts/cookie_store.py) that copy your browser's Cookies database and drive it over CDP, run by hand only and never imported by the plugin. `reapx_import` reads the bookmarks JSON file at the path you or the agent name (or the configured `import_dir`). LLM enrichment is on by default (`enrich: rules` turns it off) and sends bookmark text to your active provider through Hermes (`ctx.llm`), capped by `llm_max_items`. Generated skills are written to the plugin's own data dir and registered only when `register_generated_skills` is turned on. No other network calls, no telemetry, no stored credentials.","category":"tools","platforms":[],"maintainer":"BigBossRabbit","author":"BigBossRabbit","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/BigBossRabbit/reapx","docs":null,"tools":["reapx_import","reapx_status","reapx_review"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150004,"prs":[{"n":150004,"state":"merged","created":"2026-11-06T11:22:27Z"}],"created":"2026-11-06T11:22:27Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pow-tracker","title":"POW Tracker","summary":"Multi-client proof-of-work time tracking for the Hermes web dashboard — live OPEN/CLOSED timers, file-activity auto-capture, invoicing with per-entry rate overrides, and per-client SQLite billing, in a dashboard pane/tab (track / entries / tasks / invoice / rate views, updating live over a WebSocket) backed by a FastAPI plugin API the dashboard host mounts. Every client keeps its own time database inside its own folder, so billable data travels with the client folder; invoices aggregate billable time per task, exportable as CSV (PDF through an optional, lazily-imported extra); and a background auto-capture thread (per-client, off by default) opens and closes `auto` entries from file activity while you work. It has run a real multi-client operation in production since August, and no client data ships with the tree.","disclosure":"registers no tools, hooks or middleware (dashboard tab + plugin API only) and makes no outbound network requests; on load it creates SQLite files outside Hermes' data dir, in the configurable clients root (default `~/Documents/Clients`): a registry at `.pow-tracker/clients.db`, a `Default` client folder, and a `.pow-time/time.db` inside every sub-folder of that root it auto-registers as a client; a background thread in the dashboard process polls every 5 s and, only for clients where you switch auto-capture on (off by default), walks that client's folder reading file modification times (never names or contents) to open and close time entries.","category":"web","platforms":[],"maintainer":"BigBossRabbit","author":"BigBossRabbit","version":"0.3.1","requires_hermes":">=0.22.6","repo":"https://github.com/BigBossRabbit/pow-tracker","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":150003,"prs":[{"n":150003,"state":"merged","created":"2026-11-06T11:22:24Z"}],"created":"2026-11-06T11:22:24Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"canary-trap","title":"canary-trap — prompt-injection tripwire","summary":"Catch prompt injection by the secret it tries to steal. Every turn the agent is shown a decoy credential (HERMES_DEPLOY_KEY=hdk_live_…) with the instruction never to send it; no real task needs it, so if it shows up in a tool call — plain, URL-encoded, base64, hex, reversed, spaced out or as a 16+ character fragment, in any nested argument — the call is blocked (pre_tool_call), every later tool call in that session goes to your approval until /canary reset, and the reply opens with an alert (transform_llm_output). /canary shows status and incidents, rotates the decoy, or tests text.","disclosure":"adds a ~60-token paragraph with the decoy to each turn's user message (pre_llm_call; Hermes may persist the API-bound message for cache replay; the decoy grants nothing). Stores in its own plugin state: the decoy, up to 200 incidents (time, tool name, how the decoy was hidden, platform, session id — never tool arguments or conversation content) and locked session ids. Lockdown only adds approval prompts through Hermes' approval gate (auto-approved under YOLO, so advisory there; the leaking call is always blocked). No network, subprocesses, tools, credentials, telemetry or background work.","category":"tools","platforms":[],"maintainer":"Tarekkharsa","author":"Tarekkharsa","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Tarekkharsa/hermes-canary-trap","docs":"https://github.com/Tarekkharsa/hermes-canary-trap/tree/cbef2f98aee69cfacf59402e3d4fe98427d10b84#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149988,"prs":[{"n":149988,"state":"merged","created":"2026-11-06T10:41:21Z"}],"created":"2026-11-06T10:41:21Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Tarekkharsa/hermes-canary-trap/cbef2f98aee69cfacf59402e3d4fe98427d10b84/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/canary-trap.webp"},{"name":"hermes-sanctuary","title":"Hermes Sanctuary","summary":"Watch your Hermes Agent work: five animated characters wake up when Hermes uses their tools, in two illustrated worlds (Olympus by default, the Clearing), in Hermes Desktop and the web dashboard, in English or French. The guard barks, with a bubble saying why, on tool and provider errors, silent fallbacks to a backup model, loops (same tool, same arguments, 4 times in a turn), heavy turns, a daily budget overrun and permissions waiting for an answer; a daily journal shows turns, tools, where the work came from, tokens and estimated cost per model hour by hour, with a shareable image of the day and a sped-up replay.","disclosure":"observer hooks only (they never block, change or answer anything); records tool names, turn times, platform and scheduled-task names, counters, model names with token counts, the short description Hermes gives for a pending approval (never the command) and one-letter event codes with their time for the replay (never messages, arguments, results, error texts, file paths or ids) under plugin-data/hermes-sanctuary/, files older than 2 days removed; a hash of each tool call is kept in memory for the current turn only to spot loops; read-only dashboard routes serve that activity and the plugin's own theme and images; cost is estimated with Hermes's own agent.usage_pricing module (a private import the validator may warn on); no network calls of its own, no shell commands, no background process, no secrets or .env access, no telemetry and no self-updater; the panorama runs in a sandboxed frame that receives everything by postMessage; Hermes Desktop may show native notifications (at most one per kind every 2 minutes); the daily budget is stored by Hermes Desktop or the browser.","category":"desktop","platforms":[],"maintainer":"Med34000","author":"Med34000","version":"2.7.3","requires_hermes":">=0.22.5","repo":"https://github.com/Med34000/hermes-sanctuary","docs":"https://github.com/Med34000/hermes-sanctuary#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","pre_llm_call","post_llm_call","on_session_end","post_api_request","api_request_error","pre_approval_request","post_approval_response","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"Hermes Desktop connected to a remote Hermes does not install the pane by itself: use Capabilities, Plugins, Install from Git with Med34000/hermes-sanctuary/hermes-sanctuary (Force reinstall if the plugin is already on the server), then quit and reopen the app.","state":"merged","pr":149986,"prs":[{"n":149986,"state":"merged","created":"2026-11-06T10:35:51Z"}],"created":"2026-11-06T10:35:51Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/catalog/banner.jpg","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/demo.gif","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/panorama.jpg","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/catalog/today-en.jpg","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/catalog/desktop-pane.jpg","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/79c77390b9d926fa50c9973152f801c7127c8238/docs/catalog/clearing-en.jpg","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/a2cac2f2fec2cadc80b7ddd88252bec3016184ca/docs/demo.gif","https://raw.githubusercontent.com/Med34000/hermes-sanctuary/a2cac2f2fec2cadc80b7ddd88252bec3016184ca/docs/panorama.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-sanctuary.webp"},{"name":"clearvoice","title":"ClearVoice Hermes Plugin","summary":"Local push-to-talk speech bridge — your words on screen and spoken clearly in 17 languages, with no account, no cloud and no audio on disk.","disclosure":"downloads Whisper and Piper voice models from Hugging Face on first use (Piper pinned to a fixed revision and checksum-verified); the transcribe and say-back tools read any absolute audio file path the agent names (up to 25 MB) and transcribe it on-device; with \"Allow cloud speech\" and a Gradium key set, audio and text are sent to api.gradium.ai; a tool can only queue a sentence, which is spoken aloud only after you press Speak it in the ClearVoice pane.","category":"voice","platforms":["linux","macos","windows"],"maintainer":"thebangarang","author":"thebangarang","version":"0.7.2","requires_hermes":">=0.22.0","repo":"https://github.com/thebangarang/clearvoice-hermes-plugin","docs":"https://github.com/thebangarang/clearvoice-hermes-plugin/blob/d4bc366ec72d4f2af1a1772b3a94f48bd0e0b156/README.md","tools":["clearvoice_transcribe","clearvoice_speak","clearvoice_say_back"],"hooks":[],"middleware":[],"env":[],"known_issues":"English is the reference language: 7 of the 17 languages rebuild a sentence with a checked grammar pack (en, fr, de, es, it, pt, nl). The other 10 polish punctuation, capitalisation and politeness but never re-order words, and the pane says so.; Japanese and Thai need an extra phonemiser (clearvoice[ja] / clearvoice[th]); the pane prints the install command when one is missing.; No speaker adaptation: a general Whisper on an atypical voice is weaker than a model trained on that speaker.","state":"merged","pr":149978,"prs":[{"n":149978,"state":"merged","created":"2026-11-06T10:26:03Z"}],"created":"2026-11-06T10:26:03Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/thebangarang/clearvoice-hermes-plugin/d4bc366ec72d4f2af1a1772b3a94f48bd0e0b156/docs/banner.png","https://raw.githubusercontent.com/thebangarang/clearvoice-hermes-plugin/d4bc366ec72d4f2af1a1772b3a94f48bd0e0b156/docs/shot-verbatim.png","https://raw.githubusercontent.com/thebangarang/clearvoice-hermes-plugin/d4bc366ec72d4f2af1a1772b3a94f48bd0e0b156/docs/shot-courteous.png","https://raw.githubusercontent.com/thebangarang/clearvoice-hermes-plugin/d4bc366ec72d4f2af1a1772b3a94f48bd0e0b156/demo/poster.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/clearvoice.webp"},{"name":"webnovel-studio","title":"Webnovel Studio","summary":"Bilingual long-form fiction studio for Hermes Agent (Chinese webnovel & English progression fantasy): plan, write, review and inspect 100+ chapter serialized novels with Codex smart entity detection, foreshadowing debt alerts, 4-stage scene beats, deterministic De-AI cliché linting, zero-API-key SQLite FTS5 recall, resumable runs, per-project single-writer lock, role-routed ctx.llm calls, and a live local dashboard. Bundles 8 workflow skills (/webnovel-init, /webnovel-plan, /webnovel-write, /webnovel-review, /webnovel-query, /webnovel-learn, /webnovel-dashboard, /webnovel-doctor).","disclosure":"Derived from lingfengQAQ/webnovel-writer (v6.2.1, GPL-3.0). Spawns the vendored Python engine CLI (_vendor/webnovel-writer/scripts/webnovel.py) with shell=False and an allowlisted environment (no credentials forwarded); dashboard_start runs a local read-only FastAPI/uvicorn server on 127.0.0.1; reads/writes only inside the user-specified novel project directory and <hermes_home>/plugin-data/webnovel-studio/; pre_tool_call blocks direct shell/file edits to protected story state (.webnovel/state.json, index.db, published chapters). No external network calls (all LLM calls go through ctx.llm; upstream third-party vector retrieval and .env loading are disabled), no credentials stored or read, no telemetry.","category":"tools","platforms":[],"maintainer":"wyi006636-cyber","author":"wyi006636-cyber","version":"1.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/wyi006636-cyber/hermes-webnovel-studio","docs":"https://github.com/wyi006636-cyber/hermes-webnovel-studio#readme","tools":["webnovel_runtime"],"hooks":["pre_tool_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149977,"prs":[{"n":149977,"state":"open","created":"2026-11-06T10:17:08Z"}],"created":"2026-11-06T10:17:08Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lahja","title":"Lahja (لهجة) — Arabic dialects","summary":"Arabic dialect speech-to-text (provider lahja), fully local: a dialect fine-tuned Whisper large-v3-turbo on whisper.cpp keeps Levantine, Gulf, Egyptian, Iraqi and Maghrebi speech as spoken instead of rewriting it as formal Arabic (WER 29% vs 41% for stock turbo with the same VAD, across 13 dialects), Silero VAD always on plus a filter for subtitle-credit hallucinations («ترجمة نانسي قنقر»), per-note language routing that never forces a non-Arabic language (English, including accented English the dialect model writes in Arabic letters, goes to a stock Whisper model you choose), and corrections taught once with /stt-fix.","disclosure":"audio is decoded locally in a temp dir deleted after each call; nothing is uploaded. Network only in `hermes lahja setup`, which downloads commit-pinned, SHA-256- and size-checked model files from huggingface.co (redirected to its *.cdn.hf.co CDN); the dialect model is a community ggml mirror (JoaoZaokk) that bench/convert.sh reproduces byte for byte from oddadmix's official weights. Runs ffmpeg (local files only) and whisper-cli with a fixed argv, no shell, one deadline per note, at most max_parallel at once, and a minimal environment (PATH, LANG, LC_ALL, TMPDIR, LD_LIBRARY_PATH) without Hermes' variables. Reads the audio Hermes passes, its own model files, and an optional other_languages_model .bin you configure. Writes model files and the two phrases of each /stt-fix correction to its plugin data dir; corrections apply profile-wide and any user the gateway admits can add one (control/invisible characters refused, max 500). No audio or transcripts stored; no tools, hooks, background processes, telemetry or credentials.","category":"voice","platforms":["macos","linux"],"maintainer":"Tarekkharsa","author":"Tarekkharsa","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Tarekkharsa/hermes-lahja","docs":"https://github.com/Tarekkharsa/hermes-lahja/tree/a7a43b1389a1ae169ff5c7401e9ec2ec9a53b51d#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149968,"prs":[{"n":149968,"state":"merged","created":"2026-11-06T09:43:46Z"}],"created":"2026-11-06T09:43:46Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Tarekkharsa/hermes-lahja/a7a43b1389a1ae169ff5c7401e9ec2ec9a53b51d/docs/banner.png","https://raw.githubusercontent.com/Tarekkharsa/hermes-lahja/a7a43b1389a1ae169ff5c7401e9ec2ec9a53b51d/docs/screens/compare.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lahja.webp"},{"name":"agenda-guardian","title":"Agenda Guardian","summary":"A day and week planner for people whose discipline cannot be the plan. You write your rules once (work hours, protected time, focus window, longest stretch, tasks per day), estimate each task, and report the real time when it is done: from the third finished task of a kind it multiplies your estimates by your own median error and says so. It places tasks in the free time around the meetings of any calendar source (the Google Workspace skill, an ICS file or URL, a JSON file, or any command that prints event JSON), every block states the rule it comes from, and a full day says what does not fit. Activities that are not tasks (sport, a long call, a daily course) are placed from the numbers you give: one activity, or a whole week in one request with each activity around the ones placed before it, with reasons read from eight weeks of your own calendar history (the history orders the days, the usually busy ones last, and never rules out a free day; a habit that stopped weeks ago counts for nothing), questions about what the calendar cannot show, and nothing written until you say yes. You just talk to it in your own words, in Telegram or any chat: there is no command syntax to learn, a missing length or time window is assumed from your work hours, said in the answer and settled by your yes or your correction, and never saved as if you had given it. Writing to a Google calendar is off until you type /day write on yourself; then it only adds events it marks as its own, only after a validated proposal, never edits an event, and can only remove the events it wrote. Blocks the agent composes from what you told it go through the same road (your yes, the marker, undo), and the system prompt forbids writing with any other tool. After a written session it asks how long it really took, so the next proposal follows your pace. Optional morning brief and block reminders run as two script-only cron jobs. Deterministic, no model call. English and French. Slash command, CLI, fifteen agent tools and a Today / Week dashboard tab.","disclosure":"no network by default; with an ICS URL it fetches that URL (https only, public addresses only, same-host redirects only, no proxy; an answer over 5 MB or cut short is an error, never an empty calendar); with the google or cmd source it runs the program you configure (no shell, 25 s timeout, a minimal environment: no provider key and no proxy variable; for the google source the program is the Google skill's script, started with the Python of the environment that holds the skill's libraries, or with the running one if that cannot start); the calendar source is set only by you, typed as /day set calendar=... or /day setup auto or through the CLI, and no agent tool can set it (google and none included); reads the calendar source you configure (event titles and times, for the next days and, when you ask for a proposal, the eight weeks before) and, for onboarding only, the timezone and language lines of config.yaml, whether the Google Workspace skill and its sign-in file exist (the file is never opened) and the name and schedule of your other cron jobs (prompts are not read); writes its own data folder (one SQLite file: rules, tasks, activity sheets, habits, proposals and the record of what it wrote), after /day cron on two small Python scripts in HERMES_HOME/scripts and two cron jobs named agenda-guardian-brief and agenda-guardian-nudge created through the cronjob_manage tool (the day_schedule tool refuses to create or remove them inside a cron run unless cron.allow_agent_scheduling is true), and, only after you typed /day write on and validated a proposal, new events (up to three per session) whose description carries a marker made of the word agenda-guardian, a colon and an event id between square brackets, created and removed through the Google Workspace skill's calendar create and calendar delete on the primary calendar (a deletion is refused unless the event id is in its own record and the marker is still on the event); registers one system-prompt section of rules for the agent (about 1,700 characters); registers two hooks: pre_gateway_dispatch, which looks at the text of each incoming chat message and acts on one case only, a message that starts with /day followed by anything but one of the format-free commands (help, list, tasks, plan, now, brief, nudge, ok, confirm, undo, write, cron) or a command that sets the calendar source (set calendar=..., setup auto), which it leaves to the command dispatcher, rewriting it into an ordinary request for the agent (it reads nothing else, stores nothing, never drops a message and does nothing on error), and pre_tool_call, which looks at the arguments of the terminal, execute_code, write_file and patch tools and, when a call plainly takes a road to the calendar source or to the plugin's own folders or database, asks Hermes to ask you first (inside a cron run it refuses; it reads no config and no file, never changes a call and does nothing on error; it is a convenience, not a security boundary); registers no middleware; no model calls; no stored credentials; no background process; no telemetry.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Moodtuner997","author":"Moodtuner997","version":"0.5.4","requires_hermes":">=0.22.7","repo":"https://github.com/Moodtuner997/hermes-agenda-guardian","docs":"https://github.com/Moodtuner997/hermes-agenda-guardian#readme","tools":["day_setup","day_add_task","day_plan","day_done","day_tasks","day_schedule","day_kind","day_habit","day_propose","day_confirm","day_undo","day_took","day_week","day_week_plan","day_stage"],"hooks":["pre_gateway_dispatch","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149965,"prs":[{"n":149965,"state":"merged","created":"2026-11-06T09:38:40Z"}],"created":"2026-11-06T09:38:40Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/Moodtuner997/hermes-agenda-guardian/2493df2b4b85985faf7f19e4d9b6fe838b9ed5dd/docs/today.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agenda-guardian.webp"},{"name":"file-intelligence","title":"file-intelligence","summary":"Proactive file scanner that finds duplicates, large files and sensitive items, then proposes ranked safe cleanup actions in Desktop. Dry-run by default; every mutation requires explicit approval via agent tools. No silent tracking, moving or deleting. Distinct from bundled disk-cleanup (silent test-file tracking) and catalog file-tray/filebox (tracking/browser).","disclosure":"scans a user-specified directory (stat + SHA-256 hash in 1MB chunks, >1GB skipped with warning; sensitive files never hashed); stores no file content (metadata only in plugin SQLite); file_apply with dry_run=false renames files into <root>/.file-intelligence-archive/ (reversible archive, archive dir symlink-refused, path containment enforced); sensitive files (.env, *.pem, *.key, id_rsa, .netrc, credentials.json) are flagged only and never moved; no network calls; no silent background cleanup. Hidden directories excluded wholesale.","category":"tools","platforms":[],"maintainer":"buttercode101","author":"buttercode101","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/buttercode101/file-intelligence","docs":null,"tools":["file_scan","file_propose","file_apply"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149964,"prs":[{"n":149964,"state":"open","created":"2026-11-06T09:37:52Z"}],"created":"2026-11-06T09:37:52Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"spanwall","title":"SpanWall","summary":"One Kanban wall for every Hermes session, across every profile: Needs you, Running, Idle, Done (24h) and Failed columns, one card per session. Approve requests, answer clarify, sudo and secret prompts, chat, steer and stop agents right from the card. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.","disclosure":"acts on the sessions of every watched profile, not only the active one: approving or rejecting requests, sending prompts, steering, interrupting and creating sessions there, each only on an explicit click (nothing is approved automatically). Sudo passwords and secrets typed into a card go straight to the owning gateway and are not stored. Polls every watched profile's gateway every 3 s, which may start that profile's backend. Keeps UI preferences and a 24-hour archive of finished turns (title, model, tools used, the last 600 characters of the reply) in the Desktop's plugin storage. No network calls outside the Hermes gateways, no telemetry.","category":"desktop","platforms":[],"maintainer":"tuanpv47","author":"tuanpv47","version":"1.0.0","requires_hermes":">=0.22.2","repo":"https://github.com/tuanpv47/spanwall","docs":"https://github.com/tuanpv47/spanwall#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Developed and tested on Windows 10 only; macOS and Linux are untested.; Polling a watched profile can start its backend. Untick profiles you don't need in Settings -> Plugins -> SpanWall.","state":"merged","pr":149959,"prs":[{"n":149959,"state":"merged","created":"2026-11-06T09:22:17Z"}],"created":"2026-11-06T09:22:17Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tuanpv47/spanwall/dcd8456c3c861ba6c80ee89c4edd9753ccc5ecfa/assets/spanwall-light.png","https://raw.githubusercontent.com/tuanpv47/spanwall/dcd8456c3c861ba6c80ee89c4edd9753ccc5ecfa/assets/new-task-light.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/spanwall.webp"},{"name":"tensorfold","title":"tensorfold","summary":"TensorFold's native server (github.com/ashhart/TensorFold) as a Hermes model provider (`--provider tensorfold`, or TensorFold in `hermes model`): the served models from its /v1/models and each model's context window from the same list, on `tensorfold serve`'s loopback default (http://127.0.0.1:8080/v1, TENSORFOLD_BASE_URL for another), plus a TensorFold dashboard tab with the server's model, speed, streams, token totals, MTP acceptance and memory.","disclosure":"registers one model provider and one dashboard tab and nothing else (no tools, hooks, commands or threads); it connects only to the TensorFold server at TENSORFOLD_BASE_URL: chat requests go through Hermes' own client with TENSORFOLD_API_KEY, the provider reads /v1/models, and the tab's backend route reads /health, /stats and /v1/models, so the key never reaches the browser; it reads and writes no files, starts no processes and reports nothing anywhere.","category":"models","platforms":[],"maintainer":"atakann","author":"atakann","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/atakann/hermes-tensorfold","docs":"https://github.com/atakann/hermes-tensorfold","tools":[],"hooks":[],"middleware":[],"env":["TENSORFOLD_API_KEY"],"known_issues":"","state":"merged","pr":149954,"prs":[{"n":149954,"state":"merged","created":"2026-11-06T09:07:10Z"}],"created":"2026-11-06T09:07:10Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"birta","title":"Birta","summary":"Publish and share websites, HTML pages, landing pages, portfolios, reports, docs and slide decks at a link, collect feedback on the page, and have the agent apply it.","disclosure":"hosted-only: every tool call goes to birta.dev and acts on your Birta projects; publishing makes a version visible at the project address.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"birtadev","author":"mkrou","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/birtadev/plugins","docs":"https://github.com/birtadev/plugins/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign-in needs one extra command after install, because a portable mcp.json cannot declare OAuth: hermes mcp add birta --url https://birta.dev/mcp --auth oauth --connect-timeout 300","state":"merged","pr":149946,"prs":[{"n":149946,"state":"merged","created":"2026-11-06T08:34:24Z"}],"created":"2026-11-06T08:34:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/birtadev/plugins/fd2485de51401db9dd9b25f0bc495bd36e9752c8/hermes/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/birta.webp"},{"name":"hermes-camera-watch","title":"Camera Watch","summary":"Watch cameras you own (RTSP or an HTTP(S) snapshot URL) and alert with a saved still plus a one-line caption when the scene changes. Mock mode (the default) plays a scripted package-at-the-door scene with no camera and no network: front-door goes from a clear doorway to a package on the second look, and quiet-room never changes. Motion is local frame differencing. Captions are scripted in mock mode and a percentage line otherwise; model_invoked is false unless someone separately asks Hermes to describe the saved file. A pre_tool_call allowlist refuses unknown names, extra URL/host/scan arguments, TLS bypass, a missing CA file, and a grab whose hook did not run. Stopping a watch is always allowed. Ships a bundled camera-watch skill, a /cameras command, and an optional read-only dashboard tab.","disclosure":"network: in live mode it fetches stills only from cameras you named (HTTP(S) snapshot or RTSP/RTSPS); mock mode makes no network connections. Redirects are not followed. TLS verification cannot be turned off, and a missing CA file refuses the connection. http and rtsp are often unencrypted. Files: stills and event records under the plugin data dir (or the configured output_dir). No credentials and no third-party vision API. The hook gates this plugin's tools only; a terminal, code execution, or an edit to config.yaml can still reach a camera or change the limits.","category":"tools","platforms":[],"maintainer":"Arca Computer (arcabotai)","author":"arcabotai","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/arcabotai/hermes-camera-watch","docs":"https://github.com/arcabotai/hermes-camera-watch#readme","tools":["camera_list","camera_status","camera_snapshot","camera_watch_start","camera_watch_stop","camera_watch_poll","camera_events"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149939,"prs":[{"n":149939,"state":"closed","created":"2026-11-06T08:23:32Z"}],"created":"2026-11-06T08:23:32Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"time-machine","title":"time-machine","summary":"Visual timeline scrubber, split diff inspector, surgical per-file rollback, and failure diagnosis for Hermes Agent and Desktop. Captures pre-mutation snapshots in an isolated store, diagnoses broken edits in dry-run mode, and restores files upon user approval via /tm restore or the Desktop UI.","disclosure":"snapshots the session working directory (everything `git add -A` picks up there, including untracked files such as a workspace `.env`) into its own git store under HERMES_HOME/plugin-data/time-machine/ before file-mutating and command tool calls; model-called restores are preview-only, and workspace files are overwritten or deleted only when the user runs /tm restore or clicks restore in the dashboard/Desktop pane; no network, no telemetry.","category":"desktop","platforms":[],"maintainer":"Prasad-PingFederate","author":"Prasad-PingFederate","version":"0.3.0","requires_hermes":">=0.21.0","repo":"https://github.com/Prasad-PingFederate/hermes-time-machine","docs":"https://github.com/Prasad-PingFederate/hermes-time-machine#readme","tools":["time_machine_list_snapshots","time_machine_diff","time_machine_restore","time_machine_recover","time_machine_search"],"hooks":["on_session_start","pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149936,"prs":[{"n":149936,"state":"merged","created":"2026-11-06T08:15:30Z"}],"created":"2026-11-06T08:15:30Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"shelly-direct","title":"Shelly Direct","summary":"Control Shelly Gen 1/2/3 devices directly on your LAN — discovery, relays, dimmers, covers, power meters. No Home Assistant, no MQTT, no cloud.","disclosure":"the shelly tool switches relays, dimmers and covers on the user's LAN Shelly devices with no per-action confirmation; discovery sends UDP broadcasts and HTTP probes (with digest auth when a device password is set) to private LAN addresses only (RFC1918, 100.64/10, IPv6 ULA), and the agent can sweep a CIDR range only when the user sets allow_model_sweep: true; no cloud, no telemetry.","category":"automation","platforms":[],"maintainer":"Cyberpz","author":"cyberpz","version":"1.0.0","requires_hermes":">=0.19","repo":"https://github.com/cyberpz/hermes-shelly-direct","docs":null,"tools":["shelly"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149934,"prs":[{"n":149934,"state":"merged","created":"2026-11-06T08:14:56Z"}],"created":"2026-11-06T08:14:56Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/cyberpz/hermes-shelly-direct/8dff6456ba20aa26708494eccd64f667106fe7f4/docs/banner.png","https://raw.githubusercontent.com/cyberpz/hermes-shelly-direct/8dff6456ba20aa26708494eccd64f667106fe7f4/docs/grid.png","https://raw.githubusercontent.com/cyberpz/hermes-shelly-direct/8dff6456ba20aa26708494eccd64f667106fe7f4/docs/card.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/shelly-direct.webp"},{"name":"bankbridge","title":"BankBridge","summary":"Read-only answers about your own US bank, credit card and investment accounts, with any model Hermes runs, local or hosted. Portable Agent Plugins v1 package with a skill and hosted Streamable HTTP MCP; no local executable code.","disclosure":"Hosted remote MCP server at bankbridge.money (no local code); tool calls send your queries to bankbridge.money and its bank-data provider, which return your account balances, transactions and holdings into the model context (and so to your model provider). Sign-in is BankBridge's own OAuth; the server is behind the pin, so its tools can change without a catalog update. Paid service: $5/month per connected bank. Tools are read-only.","category":"tools","platforms":[],"maintainer":"bankbridge-money","author":"jakemarsh","version":"0.5.2","requires_hermes":">=0.22.0","repo":"https://github.com/bankbridge-money/bankbridge-plugin","docs":"https://github.com/bankbridge-money/bankbridge-plugin/blob/c7fcda435eeaeee94cf4479983d646027befb467/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149929,"prs":[{"n":149929,"state":"merged","created":"2026-11-06T07:57:51Z"}],"created":"2026-11-06T07:57:51Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"patchreview","title":"PatchReview","summary":"Routes recognized file-writing tool calls through Hermes' native human-approval gate with a proposed diff. PatchReview never exposes model-callable accept tools and never writes target files: on approval, Hermes executes the original tool through its normal write path and protections. Full-content and exact string-replacement previews support replace_all; unsupported or unparseable recognized calls are blocked. Coverage is limited to recognized tool names and does not intercept shell commands, scripts, or unrelated processes. The plugin makes no network calls, sends no telemetry, invokes no shell commands, stores no credentials, and starts no background processes.","disclosure":"","category":"tools","platforms":[],"maintainer":"Bilalsnz","author":"Bilalsnz","version":"1.0.0","requires_hermes":">=0.20","repo":"https://github.com/Bilalsnz/plugin","docs":"https://github.com/Bilalsnz/plugin/blob/d579c1c71a0681182fee22cc1820bb7bb13280d7/README.md","tools":[],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149927,"prs":[{"n":149927,"state":"merged","created":"2026-11-06T07:44:37Z"}],"created":"2026-11-06T07:44:37Z","late":false,"said":false,"update":false,"discussion":5,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tightbeam","title":"tightbeam","summary":"Beam shorts to every platform and keep your whole YouTube catalog optimized: 11 tools + 2 automation blueprints (nightly back-catalog sweep under a quota budget, post-publish optimizer for new uploads), plus multi-platform publishing through OpusClip with collision checks, platform caps and read-back verification built in.","disclosure":"video metadata (titles/descriptions/tags/ids) goes to the Google YouTube Data API through YOUR OWN OAuth client declared in the plugin manifest (hermes auth add tightbeam:google; Hermes stores and refreshes the token, the plugin never sees it); video bytes and post copy go to OpusClip through YOUR Hermes-managed opusclip MCP connection (hermes mcp login opusclip); title and copy generation uses your Hermes host LLM; the plugin stores no credentials; publishing is irreversible once the platform window passes.","category":"tools","platforms":[],"maintainer":"skeptical-agency","author":"skeptical-agency","version":"0.4.1","requires_hermes":"","repo":"https://github.com/skeptical-agency/tightbeam","docs":"https://github.com/skeptical-agency/tightbeam/blob/78bc8462749e6dd5e4594cec3a9cdc5f247c30c5/README.md","tools":["tightbeam_status","tightbeam_credits","yt_audit","yt_watch","yt_optimize","yt_sweep","publish_upload","publish_submit","publish_schedule","publish_status","publish_unschedule"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149920,"prs":[{"n":149920,"state":"merged","created":"2026-11-06T07:36:18Z"}],"created":"2026-11-06T07:36:18Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hive-intelligence","title":"Hive Intelligence","summary":"Crypto data for AI agents through Hive's hosted MCP server (Streamable HTTP at https://mcp.hiveintelligence.xyz/mcp, OAuth sign-in, no keys in config): find a token, get its price, check token safety, research a token, analyze a wallet, read market positioning and the market overview, and look up DeFi yields and prediction markets. Portable Agent Plugins v1 package (plugin.json + mcp.json + the hive and hive-setup skills), no Python or executables. Needs a free Hive account (Free plan: 10,000 credits a month). Read-only: never trades, moves funds or signs anything.","disclosure":"every tool call sends the tool name and its inputs (a token, wallet address or query) to mcp.hiveintelligence.xyz and spends the account's Hive credits; the tool list comes from Hive's server at run time, so the pinned commit doesn't cover it; when no Hive tools are connected, the bundled skills have the agent run the npm package `hive-intelligence@1.20.2` via `npx` on your machine, and `/hive-setup`'s one-command path (`hive init --all`, only after you say yes) edits every detected AI client's config and installs the `hive` CLI globally.","category":"tools","platforms":[],"maintainer":"hive-intel","author":"rishabhng","version":"1.20.2","requires_hermes":"","repo":"https://github.com/hive-intel/hive-sdk","docs":"https://docs.hiveintelligence.xyz","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign in once after installing: hermes mcp add hive --url https://mcp.hiveintelligence.xyz/mcp --auth oauth --connect-timeout 300","state":"merged","pr":149917,"prs":[{"n":149917,"state":"merged","created":"2026-11-06T07:31:46Z"}],"created":"2026-11-06T07:31:46Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"obol","title":"Obol","summary":"Safe invoicing for freelancers, consultants and agencies who bill clients, from any chat Hermes runs in (tested: Telegram, WhatsApp, Slack, email and the terminal). Hermes drafts invoices (also from forwarded messages via ctx.llm), sends them as Stripe payment links or as bank-transfer PDF invoices with no provider account, tracks who has paid, and adds Invoices and Security dashboard views plus /invoices in every chat. Every invoice write needs approval, with deterministic checks for prompt injection (a message can never choose the recipient), lookalike and impersonated client addresses, duplicates, unusual amounts and changed payout details; live keys are refused unless allowed, writes are refused in unattended runs, and the activity and security logs are hash-chained.","disclosure":"handles payments: in Stripe mode it calls api.stripe.com with your STRIPE_API_KEY (read through Hermes's secret route) and Stripe emails your clients when invoices are sent or reminded; live keys are refused unless you turn on allow_live; every invoice write asks for approval and writes are refused in cron runs; forwarded messages you ask it to draft from go to your configured model; bank-transfer mode makes no network calls and prints the bank details you enter in plugin settings (stored in config.yaml) on PDF invoices; data stays in plugin-data/obol/.","category":"tools","platforms":[],"maintainer":"UEddy","author":"UEddy","version":"0.1.0","requires_hermes":">=0.22","repo":"https://github.com/UEddy/Obol","docs":"https://github.com/UEddy/Obol#readme","tools":["obol_create_invoice","obol_send_invoice","obol_get_invoice","obol_list_invoices","obol_send_reminder","obol_void_invoice","obol_mark_paid","obol_draft_from_message"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149915,"prs":[{"n":149915,"state":"merged","created":"2026-11-06T07:25:55Z"}],"created":"2026-11-06T07:25:55Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/UEddy/Obol/d21df0241a3c88d0def0f12ef7ffa581e6e0b59f/docs/screenshots/dashboard-invoices.png","https://raw.githubusercontent.com/UEddy/Obol/d21df0241a3c88d0def0f12ef7ffa581e6e0b59f/docs/screenshots/dashboard-security.png","https://raw.githubusercontent.com/UEddy/Obol/d21df0241a3c88d0def0f12ef7ffa581e6e0b59f/docs/screenshots/approval.png","https://raw.githubusercontent.com/UEddy/Obol/d21df0241a3c88d0def0f12ef7ffa581e6e0b59f/docs/screenshots/approval-scam.png"],"videos":[],"x":["https://x.com/DeFiRanch/status/2118752233315791051"],"youtube":[],"thumb":"/hackathon/thumbs/obol.webp"},{"name":"smart-automation","title":"smart-automation","summary":"Visual dependency-aware automation timeline with optional calendar constraints on top of Hermes cron. Manual chain-runner: jobs advance only via orchestrator_trigger_chain after verified success. Read-only Desktop timeline; all mutations go through agent tools so approvals fire.","disclosure":"reads a user-selected local .ics file if configured; stores chain metadata in plugin SQLite data dir; creates dependency metadata for underlying cron jobs (Hermes cron manages the jobs themselves); no external network calls; Slack/Calendar in demo are stubbed/mock. Nearest neighbour cron-bulletin is a report inbox; this ships a visual graph + manual chain advancement.","category":"automation","platforms":[],"maintainer":"buttercode101","author":"buttercode101","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/buttercode101/smart-automation","docs":null,"tools":["orchestrator_create","orchestrator_status","orchestrator_graph","orchestrator_trigger_chain"],"hooks":["post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149963,"prs":[{"n":149963,"state":"open","created":"2026-11-06T09:37:33Z"},{"n":149913,"state":"closed","created":"2026-11-06T07:10:59Z"}],"created":"2026-11-06T07:10:59Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"penguin","title":"Penguin","summary":"A penguin in Antarctica keeping an eye on everyone's time: deterministic IANA conversions, whole-meeting overlap windows, profile-local teams, and an optional Desktop planner with side-by-side clocks, Commander dispatch and proposal-only completion. Reads bundled artwork, non-executable IANA 2026f data and its own plugin state. Optional user-started AI-generated music and a halftone sky use bundled audio and offline analysis; no microphone access. No external runtime requests, shell commands, credentials, telemetry or calendar writes.","disclosure":"","category":"tools","platforms":[],"maintainer":"Crystal32378","author":"Crystal32378","version":"0.2.2","requires_hermes":">=0.23.0","repo":"https://github.com/Crystal32378/hermes-penguin","docs":null,"tools":["penguin_convert","penguin_overlap","penguin_save_team","penguin_get_team"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149901,"prs":[{"n":149901,"state":"merged","created":"2026-11-06T06:26:42Z"}],"created":"2026-11-06T06:26:42Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Crystal32378/hermes-penguin/d63015de74effae451d5286cc080b6a3afddd6ad/docs/native-planner-0.2.jpg","https://raw.githubusercontent.com/Crystal32378/hermes-penguin/d63015de74effae451d5286cc080b6a3afddd6ad/docs/native-commander-0.2.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/penguin.webp"},{"name":"dirtside","title":"dirtside","summary":"Remote brain, local hands: run terminal commands on a device you own, chosen per conversation with /dirtside use, while Hermes keeps running on the server. The device dials out to the gateway and nothing on it listens; every message is Ed25519-signed and replay-guarded; pairing pins the device key, a device belongs to the sender who paired it, and one command revokes it.","disclosure":"adds a terminal backend that executes shell scripts with the device user's privileges and a minimal environment, a tool_execution middleware that marks explicit terminal workdirs, signed device routes and dashboard-session controls on the gateway, /dirtside commands, a hermes dirtside CLI and a Desktop pane. Core's file tools resolve paths on the gateway. Device policy enforces deny patterns and timeout, output and parallelism caps, not a filesystem sandbox. Approvals stay enabled. One Python dependency, PyNaCl. No telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"the-ai-entrepreneur-ai-hub","author":"the-ai-entrepreneur-ai-hub","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/the-ai-entrepreneur-ai-hub/hermes-dirtside","docs":"https://github.com/the-ai-entrepreneur-ai-hub/hermes-dirtside#readme","tools":[],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"open","pr":149883,"prs":[{"n":149883,"state":"open","created":"2026-11-06T05:58:08Z"}],"created":"2026-11-06T05:58:08Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/the-ai-entrepreneur-ai-hub/hermes-dirtside/e0e8f0c86622c072d52a2a580fef25f248f631bb/docs/assets/card.png","https://raw.githubusercontent.com/the-ai-entrepreneur-ai-hub/hermes-dirtside/e0e8f0c86622c072d52a2a580fef25f248f631bb/docs/assets/architecture.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/dirtside.webp"},{"name":"hermes-crux","title":"Crux — Decision Atlas","summary":"Explore explicit assumptions, exact affine decision thresholds, hard-constraint conflicts, and a live visual atlas.","disclosure":"","category":"desktop","platforms":[],"maintainer":"asimons81","author":"tony-simons-aiowa","version":"0.1.0","requires_hermes":">=0.23.0","repo":"https://github.com/asimons81/hermes-crux","docs":"https://github.com/asimons81/hermes-crux/blob/9ef205e8a39a3b6801f09f0000ef21b3d84a7787/README.md","tools":["crux_create","crux_inspect","crux_evaluate","crux_snapshot"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149871,"prs":[{"n":149871,"state":"merged","created":"2026-11-06T05:19:30Z"}],"created":"2026-11-06T05:19:30Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/asimons81/hermes-crux/9ef205e8a39a3b6801f09f0000ef21b3d84a7787/docs/screenshots/atlas.png","https://raw.githubusercontent.com/asimons81/hermes-crux/9ef205e8a39a3b6801f09f0000ef21b3d84a7787/docs/screenshots/native-hermes.png","https://raw.githubusercontent.com/asimons81/hermes-crux/9ef205e8a39a3b6801f09f0000ef21b3d84a7787/docs/screenshots/mobile.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-crux.webp"},{"name":"fledge","title":"Fledge","summary":"Skills have to earn their wings. Before Hermes saves or rewrites a skill, Fledge checks what actually happened in the run it learned from (tools still failing when the turn ended, a failed or interrupted turn, the user correcting the agent in the next message, /undo or a /rollback restore right after, denied approvals), using only facts Hermes reports through hooks: no model grades the model. A save learned from a bad run is held in Hermes' own skills pending queue with the reasons (review from any chat with /fledge pending|diff|approve|reject, or /skills pending in the CLI); a foreground save after errors goes through Hermes' approval prompt, and unattended runs queue instead of waiting. New and rewritten skills start on probation: clean real runs graduate them, repeated bad runs ground them, and a save from a run the user corrected right after is grounded at once; a grounded skill Hermes created on its own is archived (hermes curator restore brings it back), skills the user asked for are only reported. Skills the user edited by hand are fingerprinted, and autonomous rewrites or deletes of them become proposals in the same queue (optionally Hermes' content lock). Modes: enforce, watch (records only), off.","disclosure":"nine hooks (pre_llm_call, pre_tool_call, post_tool_call, on_session_end, on_session_finalize, on_session_reset, on_skill_lifecycle, pre_command, post_approval_response); pre_tool_call blocks or asks for approval on skill_manage only and lets the write through on its own errors (a write already queued for review stays held); reads hook payloads (tool statuses and error text, the first 280 characters of the next user message) and skill folders to fingerprint them; writes its own SQLite under each profile's plugin-data/fledge (skill names, fingerprints, verdict reasons, session/turn ids; reasons quote the matched correction phrase and up to 80 characters of a tool error, hold summaries the skill's one-line description; no other message text, no skill bodies), held writes into pending/skills/, and archives grounded agent-created skills into skills/.archive/; calls tools.skill_provenance, tools.write_approval and tools.skill_usage (the functions behind /skills pending and hermes curator archive/lock) because no public seam exists yet, each guarded; no network, no model calls, no credentials, no shell commands, never approves anything. Needs plugins.isolation in_process to tell background-review writes from foreground ones. Measured on 2026-11-10: 153 tests passed on Python 3.14 and 3.11; `hermes plugins validate` passes on Hermes 0.23.1, 0.23.0 and 0.22.7 with only the private-import warnings above; live sessions with a real model in isolated HERMES_HOMEs (bad-run hold, approve onto probation, grounding after a correction, hand-edit proposal and approval prompt, watch mode, 13 clean writes with 0 holds, fail-open under a locked database) in VALIDATION.md, raw output in tests/smoke-2026-11-05.txt and tests/profiles-2026-11-10.txt.","category":"tools","platforms":[],"maintainer":"12burb","author":"12burb","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/12burb/hermes-fledge","docs":"https://github.com/12burb/hermes-fledge#readme","tools":[],"hooks":["on_session_end","on_session_finalize","on_session_reset","on_skill_lifecycle","post_approval_response","post_tool_call","pre_command","pre_llm_call","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149856,"prs":[{"n":149856,"state":"merged","created":"2026-11-06T04:25:41Z"}],"created":"2026-11-06T04:25:41Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/12birb/status/2120268165636632909"],"youtube":[],"thumb":null},{"name":"creature-workshop","title":"Creature Workshop","summary":"Manage your project's development lifecycle all in one place: your project. The development lifecycle's grown more and more complex over the years. It's getting tougher and tougher to get truly polished features over the line into production. And with agentic development, the complexity is ramping more than ever. Creature Workshop offers a one-stop shop right in your project to manage your project's entire development lifecycle, one piece at a time as it becomes relevant to you. From initial tooling setup, environment handling, and issue intake, to review, merge, testing, build, deployment, documentation, and monitoring, your project's devops should let you focus on your features instead of on the headache of pipelines or on ticking all the boxes for project readiness and change reporting.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"jerrod-storm","author":"jerrod-storm","version":"0.1.0-dev.24","requires_hermes":">=0.23.0","repo":"https://github.com/creature-workshop/creature-workshop-plugin","docs":"https://github.com/creature-workshop/creature-workshop-plugin/blob/main/README.md","tools":["workshop_project","workshop_install","workshop_test","workshop_lint"],"hooks":["pre_tool_call","pre_llm_call","post_compaction","subagent_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149855,"prs":[{"n":149855,"state":"closed","created":"2026-11-06T04:25:07Z"}],"created":"2026-11-06T04:25:07Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"moment","title":"Moment","summary":"Keeps a Hermes agent honest about its own memory. Hermes injects SOUL.md, memories/MEMORY.md and memories/USER.md into the system prompt as a frozen snapshot at session start; anything that changes those files while the session lives stays invisible to it, and the agent keeps answering from stale memory. Moment fingerprints the three house files at a session's first turn and re-checks them on every later turn (pre_llm_call); when one changed, it injects a short drift receipt — which file, its absolute path, baseline and detection timestamps, the changed lines, and the full current content for small files — so the agent answers from the present and says plainly that its memory drifted. It also provides a moment_check tool for on-demand freshness reports against the session's starting state.","disclosure":"reads only the active profile's SOUL.md, memories/MEMORY.md and memories/USER.md (the agent's own house files; never credential stores); writes only its own baseline and receipt-journal state in its plugin data directory (plugin-data/moment); the hook only adds context and never blocks or modifies a turn; no network, no shell, no subprocess, no telemetry; Python standard library only, zero dependencies.","category":"general","platforms":[],"maintainer":"noprijbi99-dotcom","author":"noprijbi99-dotcom","version":"0.1.4","requires_hermes":">=0.21.6","repo":"https://github.com/noprijbi99-dotcom/moment","docs":"https://github.com/noprijbi99-dotcom/moment#readme","tools":["moment_check"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149833,"prs":[{"n":149833,"state":"merged","created":"2026-11-06T03:23:33Z"}],"created":"2026-11-06T03:23:33Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/noprijbi99-dotcom/moment/1af58dda54a9ad9310acb4cad928a6db63f8403b/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/moment.webp"},{"name":"samskara","title":"Samskara","summary":"Relational memory provider backed by a knowledge graph (MillenniumDB or any SPARQL endpoint): multi-hop recall with provenance on every fact, an ontology that infers subsumption (Incidente ⊑ Evento) at reindex time, per-fact weights that are reinforced by use and decay with disuse, and explicit conflict reporting — when two values disagree, the agent says so instead of guessing. Zero-setup mode: SAMSKARA_ENDPOINT=embedded://seed/demo.ttl serves a built-in demo corpus from an in-process, read-only store (stdlib only, no network, no service to run) for the first minute; it answers the three query shapes the plugin issues and refuses arbitrary SPARQL rather than guessing. Onboarding backfills the graph from the sessions the agent already had (state.db, read-only) and reconciles new entities against existing ones.","disclosure":"with session-end extraction enabled (default), the plugin sends the recent turns of a session to the user's own model through ctx.llm (host-owned credentials, no provider override) to extract facts. If the host does not expose ctx.llm — Hermes' in-process memory-provider path does not today — extraction is skipped rather than redirected: the session records its entity mentions lexically and no model is called. The plugin reads no provider API key from the environment and has no default model host. The graph endpoint defaults to loopback and is the only other network call. The CLI tool tools/backfill.py (never imported by the plugin) reads past sessions from state.db and sends them only to the endpoint the user names, via SAMSKARA_LLM_BASE_URL and SAMSKARA_LLM_API_KEY. No telemetry. Credentials (SAMSKARA_PASSWORD) are read through agent.secret_scope.get_secret.","category":"memory","platforms":[],"maintainer":"SebaWag","author":"SebaWag","version":"0.3.1","requires_hermes":">=0.19.0","repo":"https://github.com/SebaWag/hermes-samskara","docs":"https://github.com/SebaWag/hermes-samskara/blob/d807e875da3176301db9955e0352c9c8adb6cb01/README.md","tools":["samskara_search","samskara_query","samskara_write","samskara_conflicts","samskara_status"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149823,"prs":[{"n":149823,"state":"merged","created":"2026-11-06T03:07:12Z"}],"created":"2026-11-06T03:07:12Z","late":false,"said":false,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/SebaWag/hermes-samskara/d807e875da3176301db9955e0352c9c8adb6cb01/docs/demo/banner.png","https://raw.githubusercontent.com/SebaWag/hermes-samskara/d807e875da3176301db9955e0352c9c8adb6cb01/docs/demo/01-status.jpg","https://raw.githubusercontent.com/SebaWag/hermes-samskara/d807e875da3176301db9955e0352c9c8adb6cb01/docs/demo/02-weights.jpg","https://raw.githubusercontent.com/SebaWag/hermes-samskara/d807e875da3176301db9955e0352c9c8adb6cb01/docs/demo/03-conflict.jpg"],"videos":["https://github.com/SebaWag/hermes-samskara/releases/download/v0.2.0/SAMSKARA_DEMO.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/samskara.webp"},{"name":"umami-digest","title":"Umami Digest","summary":"Each morning one letter arrives with yesterday's pageviews, visitors, day-over-day change, the top five pages by pageviews, and a surge flag from the Umami instance you already run, with no model. Umami 3.4.1 returns expanded paths 500 at a time in visitor order. The letter sends limit 500 and walks offset until a short page, or 20 pages, then ranks by pageviews. A day that hits the cap says the five are the top 5 among the first N paths.","disclosure":"GET only to the origin in UMAMI_URL with Authorization Bearer UMAMI_API_KEY; plain http only to loopback, otherwise https; the plugin downloads nothing at runtime; umami_digest is read-only and asks for no approval; anyone you allow on a gateway can call it; turn a surface off with hermes tools; hermes umami-digest schedule writes a no-agent cron script that costs 0 tokens with no daily cap; empty stdout sends nothing; run unschedule before removal; a leftover job stops with hermes cron remove <id>; after hermes plugins remove, hermes cron remove <id> leaves scripts/umami-digest.py and you delete that file yourself; state stays in plugin-data/umami-digest; schedule uses hermes_constants.get_hermes_home, so an update can stop it.","category":"tools","platforms":[],"maintainer":"TakeshiTGAL","author":"TakeshiTGAL","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/TakeshiTGAL/hermes-plugin-umami-digest","docs":"https://github.com/TakeshiTGAL/hermes-plugin-umami-digest#readme","tools":["umami_digest"],"hooks":[],"middleware":[],"env":["UMAMI_URL","UMAMI_API_KEY","UMAMI_WEBSITE_ID"],"known_issues":"","state":"merged","pr":149819,"prs":[{"n":149819,"state":"merged","created":"2026-11-06T02:56:44Z"}],"created":"2026-11-06T02:56:44Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TakeshiTGAL/hermes-plugin-umami-digest/b20529c1c87791749b49c3b3f03838dcb62397cd/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/umami-digest.webp"},{"name":"printwatch","title":"PrintWatch","summary":"Control 3D printers over the local network from your agent: fleet status (temps, progress, layers), file listing, print start/pause/resume/cancel, file upload with automatic dialect packaging (printer_upload), and camera snapshots delivered into chat. Dual protocol — Anycubic Kobra printers over their built-in stock LAN Mode (clean-room reverse-engineered handshake + MQTT; no cloud, no rooting, nothing flashed) and Klipper/Moonraker over HTTP, and Bambu Lab printers over their local MQTT/FTPS interface (user's LAN access code; X1/P1/A1 family). Includes a headless slice-to-print pipeline: any raw .gcode is repackaged into the exact Anycubic .gcode.3mf dialect the stock firmware requires (header blocks, M75, uppercase-MD5 sidecar, X-ACNext slice info) and started remotely.","disclosure":"makes outbound connections only to the printer hosts the user configures (PRINTWATCH_PRINTERS / PRINTWATCH_MOONRAKER_URL via agent.secret_scope, hostnames only); printer_snapshot shells out to ffmpeg; Anycubic MQTT uses TLS with the printer's self-signed certificate accepted (CERT_NONE) on the local network; no telemetry, no external services, no credentials persisted (printer session tokens are per-session, in-memory, never logged).","category":"tools","platforms":[],"maintainer":"clawsyndicate","author":"clawsyndicate","version":"0.4.1","requires_hermes":"","repo":"https://github.com/clawsyndicate/printwatch","docs":null,"tools":["printer_status","printer_files","printer_print","printer_upload","printer_cancel","printer_pause_resume","printer_snapshot"],"hooks":[],"middleware":[],"env":["PRINTWATCH_PRINTERS","PRINTWATCH_BAMBU","PRINTWATCH_MOONRAKER_URL","PRINTWATCH_MOONRAKER_API_KEY"],"known_issues":"printer_snapshot requires ffmpeg on PATH.; Bambu adapter verified against the documented protocol (community-verified X1C fw 01.12 wire format) plus a simulated printer; physical-printer verification pending community feedback.; Anycubic LAN Mode must be enabled on the printer (built-in settings toggle, stock firmware).; Camera snapshots work only on printers with an Anycubic camera attached; the tool fails cleanly (printer error 11401) otherwise.; Bambu RTSP snapshots expose the LAN access code in the local process argv for the ~2s capture window (ffmpeg RTSP limitation; local-only exposure, documented).","state":"open","pr":149803,"prs":[{"n":149803,"state":"open","created":"2026-11-06T02:18:26Z"}],"created":"2026-11-06T02:18:26Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"qbo-ops","title":"qbo-ops","summary":"QuickBooks Online operations for Hermes: connection health, P&L reports, close audits, deposit tracing and a guarded read-only SQL query tool — with a web/desktop status pane and a bundled reconciliation skill. 5 registered agent tools. Reconciliation tradecraft (close-audit reading, deposit-wash detection, month-end sanity chain, failure diagnosis) ships as executable tools AND a bundled skill (qbo-ops:qbo-ops-reconciliation), earned from closing real store books. Setup is guided: the health tool doubles as a setup wizard and a turn-by-turn guided script (docs/SETUP.md) walks first-timers through Intuit app creation click by click without secrets ever transiting chat. Read-only by design; a per-user allow_writes config switch (default off) gates a future write tool.","disclosure":"makes network calls to Intuit (quickbooks.api.intuit.com) exclusively via Hermes's oauth: grant flow (credentialed_provider_request); the plugin never holds, refreshes, or stores OAuth tokens or reads .env/auth.json files; Intuit OAuth sign-in (hermes auth add qbo-ops:quickbooks) tracks upstream fixed redirect_port support (#149642).","category":"tools","platforms":[],"maintainer":"blackghostosint","author":"blackghostosint","version":"0.2.0","requires_hermes":"","repo":"https://github.com/blackghostosint/qbo-ops","docs":"https://github.com/blackghostosint/qbo-ops","tools":["qbo_health","qbo_pnl","qbo_udf_audit","qbo_deposit_trace","qbo_query"],"hooks":[],"middleware":[],"env":["QBO_OPS_CLIENT_ID","QBO_OPS_CLIENT_SECRET","QBO_OPS_REALM_ID"],"known_issues":"","state":"open","pr":149801,"prs":[{"n":149801,"state":"open","created":"2026-11-06T02:15:58Z"}],"created":"2026-11-06T02:15:58Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"bench-rewind","title":"Bench Rewind","summary":"An undo history for a physical teardown: record removal steps on your own photos, keep a parts ledger by bag, answer \"where does this go?\" and reassemble in a valid reverse order. Human-confirmed records only, with native agent tools, a live Desktop page and a printable reassembly packet.","disclosure":"no network, model, shell or subprocess use and no telemetry; it reads only an image or kit file the user names (or picks in Desktop) and refuses symlinks; it strips photo metadata (GPS, camera, XMP, text, content credentials) before storing a copy, and keeps projects and photo copies under the profile's plugin-data/bench-rewind/ folder (0700/0600); exported reassembly packets embed the user's photos unless the text-only variant is chosen.","category":"tools","platforms":["linux","macos"],"maintainer":"rusty4444","author":"rusty4444","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/rusty4444/hermes-bench-rewind","docs":"https://github.com/rusty4444/hermes-bench-rewind#readme","tools":["bench_rewind_projects","bench_rewind_record","bench_rewind_locate","bench_rewind_rewind"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149797,"prs":[{"n":149797,"state":"merged","created":"2026-11-06T01:59:31Z"}],"created":"2026-11-06T01:59:31Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/rusty4444/hermes-bench-rewind/27979cba5559cedebf0cf6be9a8e4b6a29df97c3/docs/screenshots/workbench.png"],"videos":[],"x":["https://x.com/mrru5s3ll/status/2118523119262630169"],"youtube":[],"thumb":"/hackathon/thumbs/bench-rewind.webp"},{"name":"usage-guard","title":"usage-guard","summary":"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` (a lone Anthropic reading of exactly 100% with extra usage off is treated as possibly 1%, because Hermes's Anthropic parser scales any utilization <= 1 by 100 until hermes-agent#139916, and passes; a 100% that follows a higher reading in the same window, or any 100% while extra usage is on, refuses), 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; a `/usage-guard` slash command and a Hermes Desktop status-bar chip (polling a read-only `GET /api/plugins/usage-guard/status` route every 60 s and after each turn) report the guard's decision from the same cache, never making a usage request; auxiliary calls (compression, vision, titles, MoA advisors) are not gated. Borrowing is off by default: when `hydrate_from_paths` names files, the guard may read those JSON snapshots instead of reading the endpoint, validating every window and never writing them into its own cache.","category":"automation","platforms":[],"maintainer":"mister-ideas","author":"mister-ideas","version":"0.5.0","requires_hermes":">=0.21.6","repo":"https://github.com/mister-ideas/usage-guard","docs":null,"tools":[],"hooks":["pre_llm_call"],"middleware":["llm_execution","llm_request"],"env":[],"known_issues":"Multi-profile gateways: Hermes dispatches plugin slash commands in the gateway's launch profile, so `/usage-guard` can report that profile's limit and reading. The guard itself and the Desktop chip use the served profile.","state":"merged","pr":149796,"prs":[{"n":149796,"state":"merged","created":"2026-11-06T01:59:18Z"}],"created":"2026-11-06T01:59:18Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/banner.jpg","https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/media/shot-chip.png","https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/media/shot-refusal.png","https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/media/shot-chip-blocked.png","https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/media/shot-near-wall.png","https://raw.githubusercontent.com/mister-ideas/usage-guard/d59f798e848f5310f9e3d8673c01f383207c695e/docs/media/shot-unavailable.png"],"videos":[],"x":["https://x.com/mister__ideas/status/2118649143409426588"],"youtube":[],"thumb":"/hackathon/thumbs/usage-guard.webp"},{"name":"git-review","title":"Git Review","summary":"Git review pane for Hermes Desktop: every changed file of the agent's last turn, uncommitted, staged or unstaged work, the branch since it left the default branch, or any selection of commits, in one scroll, unified or split, with syntax colours; cites changed lines into the composer as @line: references; and stages, unstages, discards, commits, pushes and opens pull requests from the pane.","disclosure":"reads run git subprocesses (rev-parse, status, diff, log, show, cat-file, ls-files, for-each-ref, branch, remote, rev-list, merge-base, symbolic-ref, hash-object) with timeouts and output caps, external diff and textconv drivers disabled. Writes run only when the user clicks: git add, restore, reset, rm, commit and push, on paths validated inside the repository; discard asks first in Desktop's confirmation dialog and deletes only the untracked files it names. By default hooks are skipped and any write that would run a program named by the repository's own config (filter drivers, signing, SSH or credential commands) is refused; the run_repo_programs setting allows them, and the read_only setting hides and refuses every write. Network use: push to the branch's own name on its remote, and the user's own gh or glab CLI for the PR/MR badge and for Create pull request; the plugin itself makes no network requests. Generate commit message sends what the commit will contain and recent commit subjects to the focused chat's model through Hermes's commit_message one-shot template, only when clicked. It reads files and history inside authorized repositories only (the focused workspace, configured repos/roots and the latest agent selection), this profile's config.yaml, and the cwd column of the sessions table in state.db (read-only); it writes $HERMES_HOME/plugin-data/git-review/select.sqlite3 (agent selection requests), $HERMES_HOME/plugin-data/git-review/turn-snapshots/ (Last agent turn snapshots: the working tree's tracked and non-ignored untracked files as git objects, written with git add -A and write-tree against a throwaway index and an object store in that directory, never the repository's; newest 16 kept, three days max), Desktop plugin storage (display settings, turn baselines) and, through the actions above, the user's repository. While the pane is open it polls the local backend every 3 s (agent selections) and 5 s (live diffs); the status-bar count and the commit box's branch state refresh every 15 s; no background processes, credentials or telemetry.","category":"desktop","platforms":[],"maintainer":"mister-ideas","author":"mister-ideas","version":"0.3.0","requires_hermes":">=0.21.6","repo":"https://github.com/mister-ideas/git-review","docs":"https://github.com/mister-ideas/git-review#readme","tools":["git_review_select"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149795,"prs":[{"n":149795,"state":"merged","created":"2026-11-06T01:59:15Z"}],"created":"2026-11-06T01:59:15Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/banner.jpg","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/unified-agent-turn.png","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/fold-and-expand.png","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/cite-into-composer.png","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/commit-box.png","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/browse-commit-by-commit.png","https://raw.githubusercontent.com/mister-ideas/git-review/a1944377c3f8d5699668b67379be9bf63ca0cee7/docs/screenshots/file-search.png"],"videos":[],"x":["https://x.com/mister__ideas/status/2118649092817432606"],"youtube":[],"thumb":"/hackathon/thumbs/git-review.webp"},{"name":"hermesmade","title":"hermesmade bots","summary":"Community bot shelf for Hermes. Add bots from hermesmade.lol in one click (hermes://open/hermesmade?add=<id>), share your own with /sharebot, and move your Grok Bot bots into Hermes, one Hermes bot each. Added bots are treated as untrusted: a package holding anything a share never includes is refused, its config is rebuilt from an allowlist (no hooks, approvals, terminal, plugins or model settings), schedules arrive paused, MCP servers arrive off, and every skill is scanned first. Each becomes its own profile on your model and login. Sharing and adding from the agent tool go through Hermes' approval prompt. Shares never include .env, auth.json, keys, tokens, memories or chats, and a single secret hit aborts the upload.","disclosure":"network calls only to https://hermesmade.lol, when you browse, add, share or unshare (no telemetry, no install counting). Creates profiles under ~/.hermes/profiles. Keeps listing manage tokens in ~/.hermes/hermesmade/shared.json (0600). Reads profile secret values through agent.secret_scope only to block a leaking share (compared in memory, never stored or sent). Grok Bot migration reads grok-bot-export*.json from Downloads, makes no network calls, uses the official agent-importers plugin, and installs it with `hermes plugins install agent-importers` only after the user confirms.","category":"desktop","platforms":[],"maintainer":"Noshkoto","author":"Noshkoto","version":"1.3.0","requires_hermes":">=0.22.1","repo":"https://github.com/Noshkoto/hermesmade","docs":"https://hermesmade.lol/bots","tools":["hermesmade_bots"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149789,"prs":[{"n":149789,"state":"merged","created":"2026-11-06T01:40:05Z"}],"created":"2026-11-06T01:40:05Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"keln-provider","title":"keln-provider","summary":"Keln as a Hermes model provider (`--provider keln`): open models through an OpenAI-compatible API, with the live catalog and a tool-calling fallback list. Sends requests to api.keln.ai using your KELN_API_KEY.","disclosure":"","category":"models","platforms":[],"maintainer":"kris-holy","author":"kris-holy","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/kris-holy/hermes-keln-provider","docs":"https://github.com/kris-holy/hermes-keln-provider","tools":[],"hooks":[],"middleware":[],"env":["KELN_API_KEY"],"known_issues":"","state":"merged","pr":149781,"prs":[{"n":149781,"state":"merged","created":"2026-11-06T01:08:20Z"}],"created":"2026-11-06T01:08:20Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"headway","title":"Headway","summary":"Proof-of-progress circuit breaker: different commands are not necessarily progress. Watches local terminal, file-mutation, and read/search calls for unchanged bounded workspace fingerprints, no new normalized result evidence, and no expanded read coverage. Injects a structured recovery packet after configurable no-progress streaks; optional enforce mode blocks subsequent same-class calls without executing them. Distinct from exact/near-identical argument guards, consecutive-failure escalation, tqdm rendering cleanup, and undo/snapshot plugins. Registers tool_execution middleware, pre_llm_call, /headway status/reset/mode, hermes headway status, and optional read-only dashboard API; no model-facing tools or Desktop pane. Stores atomic session/workspace JSON under Hermes plugin data dir. No network, credentials, self-updater, core patches, shell, or git use in production code; scripts/demo.py alone uses subprocess for real local terminal commands. Large-file/total/file-count sampling is bounded and can miss changes; remote/external side effects are not claimed as observed progress.","disclosure":"","category":"tools","platforms":["linux","macos"],"maintainer":"hanii090","author":"hanii090","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/hanii090/headway-hermes-plugin","docs":"https://github.com/hanii090/headway-hermes-plugin#readme","tools":[],"hooks":["pre_llm_call"],"middleware":["tool_execution"],"env":[],"known_issues":"Bounded head/tail and total-size/file-count sampling may miss workspace changes.; Only local filesystem state is measured; non-local TERMINAL_ENV backends are skipped and external side effects are outside scope.; Non-string tool results are preserved; advisory packets are appended only to string results.; No Desktop pane; optional read-only dashboard API only. No multi-process state locking.","state":"open","pr":149777,"prs":[{"n":149777,"state":"open","created":"2026-11-06T00:53:08Z"}],"created":"2026-11-06T00:53:08Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"chroma","title":"Chroma","summary":"Browse, import and manage 94 Hermes skins from a Desktop pane: filter by pack, colour family or gallery, import TweakCN, VS Code, Base16 and Windows Terminal themes, edit a skin's palette, and apply it to this profile or everywhere. Optionally mints real gateway skins so the CLI and every connected Desktop follow the change.","disclosure":"one outbound GET to https://tweakcn.com/r/themes/<name>.json, only when a preset is imported, with no credential, cookie or auth header, and the reply parsed as JSON and never evaluated; it accepts only https on tweakcn.com and refuses every other host and scheme. Writes the chosen skin through config.set('skin', …), skins and overrides under the active profile's HERMES_HOME when the optional backend is installed, and fourteen localStorage keys (seven of them namespaced) plus the hermes-boot-* hints Desktop reads at startup. Sets native window chrome through the preload's own setTitleBarTheme and setNativeTheme hooks, the same two the Desktop theme context calls. No agent tools, hooks, middleware or environment variables, no credentials, no shells or child processes started by the plugin (the repository also ships optional install helper scripts that a user may run deliberately), no background processes, no telemetry, no network calls beyond the import above, and no self-updater — updates arrive only through a catalog re-pin. Built with significant AI assistance; the maintainer is a hobby coder. Derived from hermes-theme-picker by jdtimothy (MIT); the fork adds the importers, the skin backend and the management actions.","category":"desktop","platforms":[],"maintainer":"TobiasDraven","author":"TobiasDraven","version":"2.9.1","requires_hermes":">=0.22.2","repo":"https://github.com/TobiasDraven/chroma-for-hermes","docs":"https://github.com/TobiasDraven/chroma-for-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149767,"prs":[{"n":149767,"state":"open","created":"2026-11-06T00:13:36Z"}],"created":"2026-11-06T00:13:36Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/TobiasDraven/chroma-for-hermes/494770ba8beebaa82bb26ba28199ef70bd96b432/docs/catalog-banner.png","https://raw.githubusercontent.com/TobiasDraven/chroma-for-hermes/494770ba8beebaa82bb26ba28199ef70bd96b432/docs/screenshots/picker.png","https://raw.githubusercontent.com/TobiasDraven/chroma-for-hermes/494770ba8beebaa82bb26ba28199ef70bd96b432/docs/hermes-chroma.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/chroma.webp"},{"name":"prove-it","title":"prove-it","summary":"Checks an agent's completion claims against local read-only probes before you read the reply: HEAD vs the remote-tracking ref for a push, git cat-file for a commit, a file stat for a write, observable output for tests pass. No model in the check. The footer says ✓ verified, ✗ contradicted, ⚠ could not verify, or ⏸ blocked on an approval; /proveit explain shows the claim, the probe and the raw output.","disclosure":"runs local read-only git commands (rev-parse, merge-base, log, cat-file) in the repository the agent worked in this turn, with fsmonitor and ext protocols disabled and no stdin; never contacts a remote or authenticates; stats absolute file paths named in the agent's reply; makes no probe when the terminal backend is not local; stores a bounded ledger (arguments and output only for terminal, file-write, code-execution and delegation calls, truncated, secrets pattern-redacted, deleted after 7 days) plus checked claims and approval pattern/description (never command text) in plugin-data/prove-it/data.db; every probe has a 2 s timeout and the footer a 4 s budget; a plugin error never withholds the reply in footer mode; no telemetry","category":"tools","platforms":[],"maintainer":"MikeGibbsOnyx","author":"MikeGibbsOnyx","version":"0.1.2","requires_hermes":">=0.22.5","repo":"https://github.com/MikeGibbsOnyx/hermes-prove-it","docs":"https://github.com/MikeGibbsOnyx/hermes-prove-it","tools":[],"hooks":["post_tool_call","transform_llm_output","pre_approval_request","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149765,"prs":[{"n":149765,"state":"merged","created":"2026-11-06T00:07:25Z"}],"created":"2026-11-06T00:07:25Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":["https://github.com/MikeGibbsOnyx/hermes-prove-it/releases/download/v0.1.0/prove-it-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"epoch","title":"Epoch","summary":"Calibrated time estimates on the Hermes Kanban board: when a worker claims a task, Epoch posts a Monte Carlo P50/P90 (plus P80/P95) estimate as a task comment, and when the run completes it records that run's wall-clock hours back to Epoch's ledger (auto_wallclock provenance, sanity-gated) so later estimates calibrate. Dispatcher and worker profiles can differ; the estimate-to-run binding lives next to the ledger, Kanban comments are display only. Also adds an epoch_estimate tool and /epoch.","disclosure":"runs `npx -y @kyanitelabs/epoch@0.7.0` as a child process (downloads Epoch and its caret-ranged npm dependencies on first run, which the catalog pin does not cover; needs Node >=22), passing the task title and its three-point hint to the local CLI; the child env is scrubbed (allow-listed PATH/HOME/locale/Node/npm/proxy vars only, the parent environment is never passed through); estimates, actuals and run bindings live under <HERMES_HOME>/plugin-data/epoch/ and are shared by every profile; Epoch telemetry is forced off for plugin runs; no network besides the npm download, no API key; hook work runs on short-lived background threads and unfinished jobs resume when the plugin next loads; /epoch passes other Epoch subcommands through (it refuses serve, self-improve and telemetry/data mutations, and refuses ledger writes on gateway platforms unless opted in).","category":"tools","platforms":[],"maintainer":"KyaniteLabs","author":"simongonzalezdc","version":"0.7.0","requires_hermes":">=0.21.6","repo":"https://github.com/KyaniteLabs/Epoch","docs":"https://github.com/KyaniteLabs/Epoch/tree/36de521a89501c2b68b70251d50d32027ad96f2b/plugins/epoch-hermes#readme","tools":["epoch_estimate"],"hooks":["kanban_task_claimed","kanban_task_completed"],"middleware":[],"env":[],"known_issues":"First run downloads Epoch from npm; an npm min-release-age policy can block the pinned version until it ages (the job stays queued and retries).","state":"merged","pr":149757,"prs":[{"n":149757,"state":"merged","created":"2026-11-05T23:43:16Z"}],"created":"2026-11-05T23:43:16Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/KyaniteLabs/Epoch/36de521a89501c2b68b70251d50d32027ad96f2b/plugins/epoch-hermes/docs/banner.png","https://raw.githubusercontent.com/KyaniteLabs/Epoch/36de521a89501c2b68b70251d50d32027ad96f2b/plugins/epoch-hermes/docs/kanban-claim-comment.png","https://raw.githubusercontent.com/KyaniteLabs/Epoch/36de521a89501c2b68b70251d50d32027ad96f2b/plugins/epoch-hermes/docs/actual-recorded.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/epoch.webp"},{"name":"vibeleak-atlas","title":"VibeLeak Atlas","summary":"Owner-approved VibeLeak website assessments in a native Hermes Desktop workbench. You approve each scan before it runs, private evidence and fix-plan drafts stay on your machine, and read-only local folder review is opt-in. Website assessments need an optional VibeLeak owner API key (Pro plan). Desktop-only, inside the plugin SDK surface; no agent tools, hooks, middleware or required environment variables.","disclosure":"website assessments you approve send the target hostname to VibeLeak (www.vibeleak.app) with your VibeLeak owner API key (Pro plan); the optional hosting map, after a separate approval, sends up to 12 assessed hostnames to Cloudflare DNS over HTTPS and maps them with a bundled DB-IP country database; local folder review reads only a folder you grant and makes no network calls; results are stored under the plugin's data directory.","category":"desktop","platforms":["windows"],"maintainer":"abundantbeing","author":"abundantbeing","version":"0.2.1","requires_hermes":">=0.22.6","repo":"https://github.com/abundantbeing/vibeleak-atlas","docs":"https://github.com/abundantbeing/vibeleak-atlas/blob/898323b75fa926c9b4a1a7675091ed647def3617/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Website assessments need a VibeLeak owner API key, which is part of the Pro plan. Local folder review needs no key or account.; Rescan comparisons stay non-comparable until VibeLeak returns coverage and version context, which some deployments do not return yet.","state":"merged","pr":149755,"prs":[{"n":149755,"state":"merged","created":"2026-11-05T23:42:04Z"}],"created":"2026-11-05T23:42:04Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/abundantbeing/vibeleak-atlas/898323b75fa926c9b4a1a7675091ed647def3617/.github/assets/readme/vibeleak-symbol.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/vibeleak-atlas.webp"},{"name":"neural-mesh","title":"NEURAL_MESH","summary":"Bi-temporal long-term memory for Hermes: point-in-time recall (mesh_asof answers what was true on a date, not only what is true now), supersession instead of overwrite so a corrected fact keeps its history, hybrid dense + lexical retrieval, a poisoning quarantine, and an injection floor measured on a 15-family ablation.","disclosure":"this is a Hermes MemoryProvider (`memory.provider: neural-mesh`). It stores user turns, pre-compression and session-end message extracts, and mirrored MEMORY.md/USER.md writes in an unencrypted local SQLite file at `<profile>/neural-mesh/mesh.db`, so credentials do not belong in it. The provider makes no network calls and needs no API key. The repo also vendors unused upstream modules with LLM/chain HTTP clients that the provider never calls. It ships no compiled binary (the Rust extension is not vendored, so retrieval runs the pure-Python path).","category":"memory","platforms":[],"maintainer":"D0xedDevi0","author":"D0xedDevi0","version":"0.39.0","requires_hermes":">=0.22.0","repo":"https://github.com/D0xedDevi0/hermes-neural-mesh","docs":"https://github.com/D0xedDevi0/hermes-neural-mesh","tools":["mesh_remember","mesh_recall","mesh_asof","mesh_stats"],"hooks":["on_session_end","on_pre_compress","on_memory_write"],"middleware":[],"env":[],"known_issues":"The memory store is plain, unencrypted SQLite inside the Hermes profile — anything it remembers is readable by anyone with filesystem access to that profile, so credentials do not belong in it.; The upstream Rust resonance extension is not shipped (catalog rule 17), so retrieval uses the pure-Python path; mesh_stats reports resonance_backend: python rather than rust.; Automatic context injection is held to a measured 0.25 score floor, so a weakly-matching memory is deliberately not injected. Use mesh_recall (0.05 floor) when you want a wider net.; Superseding a memory that does not exist is reported in the tool reply rather than failing the write, so a correction naming a bad id is stored as a new fact — and the reply says so instead of silently leaving two contradictory values current.","state":"merged","pr":149750,"prs":[{"n":149750,"state":"merged","created":"2026-11-05T23:15:55Z"}],"created":"2026-11-05T23:15:55Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/26abb610f3cbdd4215fbb898d4a2478317dfc5e5/docs/screenshots/the-difference.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/26abb610f3cbdd4215fbb898d4a2478317dfc5e5/docs/screenshots/cold-recall.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/26abb610f3cbdd4215fbb898d4a2478317dfc5e5/docs/screenshots/point-in-time.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/26abb610f3cbdd4215fbb898d4a2478317dfc5e5/docs/screenshots/measured.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/84f2170809b61798f4e4ca98c58e8912ea6d9786/docs/screenshots/the-difference.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/84f2170809b61798f4e4ca98c58e8912ea6d9786/docs/screenshots/cold-recall.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/84f2170809b61798f4e4ca98c58e8912ea6d9786/docs/screenshots/point-in-time.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/84f2170809b61798f4e4ca98c58e8912ea6d9786/docs/screenshots/measured.png"],"videos":["https://raw.githubusercontent.com/D0xedDevi0/hermes-neural-mesh/main/docs/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/neural-mesh.webp"},{"name":"hermes-decay-context","title":"Decay + Pins","summary":"Decay context engine (clean eviction + rolling digest) plus operator Pins that survive compaction, via public plugin APIs only.","disclosure":"","category":"memory","platforms":[],"maintainer":"Nimbus Solutions","author":"nimbus7772017","version":"0.1.0","requires_hermes":">=0.10.0","repo":"https://github.com/nimbus7772017/hermes-decay-context","docs":null,"tools":["operator_directive_done"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149747,"prs":[{"n":149747,"state":"open","created":"2026-11-05T22:43:43Z"}],"created":"2026-11-05T22:43:43Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wellness-nourish","title":"Nourish","summary":"Local food search, meal and water logging, barcode lookup and nutrition goals through a portable MCP server.","disclosure":"","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"0.9.0","requires_hermes":">=0.22.7","repo":"https://github.com/davidmosiah/wellness-nourish","docs":"https://github.com/davidmosiah/wellness-nourish/tree/438e079efc63a3cc4bc1b7c806592ca0115e7e8b/agent-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Node.js 20+ and npx. First launch downloads the version-pinned npm runtime and its dependencies.; The diary and shared wellness profile use the OS home, not PLUGIN_DATA; Hermes profiles sharing that home also share those data.; Food lookups send requested queries or barcodes to USDA FoodData Central or Open Food Facts. Nutrition estimates are informational, not medical advice.","state":"open","pr":149744,"prs":[{"n":149744,"state":"open","created":"2026-11-05T22:41:51Z"}],"created":"2026-11-05T22:41:51Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"zeromem","title":"zeromem","summary":"Local memory that keeps every message word for word in one SQLite file. Storing and searching make no LLM calls and cost zero tokens. Rust core, with a one-command import of your existing Hermes history.","disclosure":"installs the author's compiled `zeromem` Rust extension from PyPI and, on first run, downloads a ~130 MB embedding model from Hugging Face into `<HERMES_HOME>/memory/zeromem-models` (set `use_model: false` to stay offline); stores every user and assistant message as plain text in `<HERMES_HOME>/memory/zeromem.db` and recalls them verbatim into later turns across all sessions of the profile (all chats and senders on a gateway); the agent can permanently delete a past session's stored turns.","category":"memory","platforms":[],"maintainer":"ptaranat","author":"ptaranat","version":"0.4.0","requires_hermes":">=0.22.0","repo":"https://github.com/ptaranat/zeromem","docs":"https://github.com/ptaranat/zeromem#readme","tools":["zeromem_recall","zeromem_stats","zeromem_forget_session"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149741,"prs":[{"n":149741,"state":"merged","created":"2026-11-05T22:37:28Z"}],"created":"2026-11-05T22:37:28Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/ptaranat/zeromem/f7e669c47cc0f6c9867829c37af8e4fc2803fe15/assets/zeromem-og.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/zeromem.webp"},{"name":"trust-ladder","title":"trust-ladder","summary":"Correct your agent once and it stays corrected. trust-ladder compiles each user correction to the highest rung it can prove: a pre_tool_call guard that blocks the repeat, a check on what a write puts into matching files, a rule injected every turn, or human review through Hermes's own approval prompt. A model-proposed guard is installed only if it matches the mistaken call and spares the corrected one, regexes are profiled against ReDoS before install, verifier commands gate \"done\", and a ledger counts every catch (/teach, /trust, /verify).","disclosure":"local only: stores rules, tasks and a catch ledger (matched snippets, redacted, no full arguments) under <HERMES_HOME>/plugin-data/trust-ladder/; no network, no telemetry, no credentials or env vars read; verifier commands run only through Hermes's terminal tool (normal approvals apply); the model can add rules but only the user can disable or remove them; guards are best-effort pattern matches, not a sandbox.","category":"tools","platforms":[],"maintainer":"merdoks","author":"merdoks","version":"0.1.2","requires_hermes":">=0.22.7","repo":"https://github.com/merdoks/trust-ladder","docs":"https://github.com/merdoks/trust-ladder#readme","tools":["trust_ladder_learn","trust_ladder_task"],"hooks":["pre_tool_call","transform_tool_result","pre_llm_call","pre_verify","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149738,"prs":[{"n":149738,"state":"merged","created":"2026-11-05T22:26:03Z"}],"created":"2026-11-05T22:26:03Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"receipts","title":"Receipts: tested-tree push gate","summary":"Verification receipts tied to Git content; gates terminal pushes and PR creation on a passing check.","disclosure":"runs read-only local `git` commands (rev-parse, status, ls-files, hash-object without -w) in the agent's repository on terminal tool calls, and blocks `git push` / `gh pr create` there until the user's configured check has passed on that exact content; stores receipts in a local SQLite file under the plugin data dir; no network.","category":"tools","platforms":["linux","macos"],"maintainer":"cirwel","author":"cirwel","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/cirwel/hermes-receipts","docs":"https://github.com/cirwel/hermes-receipts","tools":[],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149724,"prs":[{"n":149724,"state":"merged","created":"2026-11-05T21:44:52Z"},{"n":150870,"state":"open","created":"2026-11-07T21:10:09Z"}],"created":"2026-11-05T21:44:52Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentic-kingdoms","title":"Agentic Kingdoms","summary":"Play Agentic Kingdoms, a free strategy MMO in the browser where AI agents and humans play in the same kingdoms: build a city, train troops, join an alliance, fight for the Palace. Connects the hosted Agentic Kingdoms MCP server (Streamable HTTP, no sign-in or key) with the agentic-kingdoms skill bundled; the agent's account carries an AI tag every player sees. The skill also covers joining the Humans vs AI war on the AI side. Portable Agent Plugins v1 package (mcp.json + skills/), no Python or executables.","disclosure":"every tool call (game commands and reads) goes to Agentic Kingdoms' servers at mcp.agentickingdoms.com, run by Agentic Games LLC; guest_login creates a guest game account, whose player name, city and chat and mail messages other players see; the device_id it returns logs back into that account, and the skill tells the agent to keep it private in its memory or a file the user picks; for the Humans vs AI war the skill starts a separate war-city guest account and, with the user's yes, sends the operator's name and the agent's model name, which show on the public results page (the command log is published only if the user opts in); the optional register, login and claim_account tools take an email address and password; the server runs at Hermes's default trust, so game actions (including attacks on other players and chat messages) do not prompt unless the user sets `mcp_servers.agentic-kingdoms.trust: untrusted`; this address has no shop, so nothing in the plugin spends money; the tool set is served by the remote MCP server at runtime and is not covered by the pinned sha.","category":"general","platforms":[],"maintainer":"Agentic Games","author":"agenticgameshq","version":"1.0.0","requires_hermes":"","repo":"https://github.com/agenticgamesllc/agent-kit","docs":"https://github.com/agenticgamesllc/agent-kit/tree/main/hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149719,"prs":[{"n":149719,"state":"merged","created":"2026-11-05T21:35:01Z"}],"created":"2026-11-05T21:35:01Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agent-desktop-gnome","title":"agent-desktop for GNOME","summary":"GNOME-first, AX-only semantic backend for Hermes's native computer_use tool, powered by Vercel Labs agent-desktop.","disclosure":"explicit setup downloads the official checksum-pinned agent-desktop 1.2.0 Linux x86_64 executable and matching helper; reads app/window inventory, accessibility trees, field values and allowlisted graphical-session environment; starts bounded systemctl and per-command native CLI processes; stores profile-scoped runtime and private temporary desktop state. No adapter telemetry, credentials, bundled binaries, self-updater or global-input fallback. Uses two disclosed read-only Hermes desktop-placement/liveness imports, producing an admission warning.","category":"desktop","platforms":["linux"],"maintainer":"BruceBest","author":"BruceBest","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/BruceBest/hermes-agent-desktop","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Only the signed-in GNOME human seat on Linux x86_64 is supported; requires a systemd user manager and working AT-SPI. Tested on Fedora 45 / GNOME 51.1 / Wayland.; Semantic ref actions only: no screenshots, coordinates, drag, wheel scrolling, raw keys or foreground activation. SOM requests return truthful AX-only captures. Some GTK4 secret fields can be misidentified upstream.; Explicitly prepare the pinned runtime and select computer_use.backend: agent-desktop-gnome, then start a new chat. Existing computer_use toolset disables are not changed.; Refuses Bot Desktop/sandbox placement and any persisted desktop ownership marker, including stale or unattached state. Native providers cannot load under plugins.isolation: host.","state":"open","pr":149716,"prs":[{"n":149716,"state":"open","created":"2026-11-05T21:19:10Z"}],"created":"2026-11-05T21:19:10Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"dynmem","title":"Dynmem (keyword index)","summary":"Keyword-index memory for Hermes: a small resident index of 'keyword,keyword -> file.md' routing lines stays in the system prompt while verbose topic files stay on disk and are read only when the conversation touches their keywords. Retrieval is done by the model reading a literal index — no embeddings, no vector store, no retrieval service.","disclosure":"a pre_tool_call hook and a tool_execution middleware refuse a non-memory tool's write to the memory index across the recognised write vectors (write_file, patch, shell redirects, tee, sed -i; best-effort against arbitrary shell indirection) and refuse malformed index lines with a fix message rather than fixing them silently (including the keyword count: an entry outside the documented 5-20 keywords is refused, and the ASCII arrow is refused on every code path), while read-only commands and reads through a pipe always pass so the agent can audit the file it maintains; the same guard refuses any memory-tool remove, replace or patch whose old_text lands inside the index header, because on the stock store the whole preamble is a single §-joined entry and such an edit would rewrite or delete every header line at once; a documented escape hatch lets a scripted rewrite proceed when the sentinel file $HERMES_HOME/state/.dynmem_rewrite_approved exists or DYNMEM_ALLOW_REWRITE=1 is set. Beyond $HERMES_HOME/memories/, the guard reads one thing: when a shell command invokes python3 on a script file, it opens that script (and the execute_code payload is already in args) to check whether the code would write the index; no file content is retained or sent anywhere. The repo also ships an optional core patch (scripts/patches/0001-flat-memory-separator.patch, changes tools/memory_tool_store.py) that the plugin does not need and never applies; a user who applies it by hand must re-apply it after every Hermes update. No network calls, no subprocesses, nothing spawned in the background. The pre-1.8 MEMORY_SHAPER_* variable names and the .memory_shaper_rewrite_approved sentinel are still accepted, so the rename cannot strand an existing install. A second hook pair (pre_llm_call + transform_llm_output) appends, unless MEMCHECK_DISABLED is set, a hidden tagged self-report to the first four user messages of a session asking which memory files were read, which were nearly read, and whether the routing turned out wrong; the tag is stripped before the reply is stored or shown, every claim (filename, keyword, quoted fact) is checked against the index and the topic file body, and it is skipped on cron, subagent, one-shot and batch runs. That hook keeps per-session state under $HERMES_HOME/state/memcheck/: state.json holds the last four user messages and the last verdict, samples.jsonl appends one record per checked turn; nothing leaves the machine. Separately, the plugin writes one line of its own: when MEMORY.md already looks like a dynmem index (an arrow entry or the template line), it inserts or refreshes a single '# All memories are located in: <absolute path>' header line, atomically, with one backup slot under $HERMES_HOME/state/, and DYNMEM_NO_PATH_HEADER=1 disables it; a stock-store or prose MEMORY.md is never touched.","category":"tools","platforms":["linux","macos"],"maintainer":"ockentap","author":"ockentap","version":"1.8.0","requires_hermes":">=0.22.2","repo":"https://github.com/ockentap/hermes-dynamic-memory","docs":"https://github.com/ockentap/hermes-dynamic-memory#readme","tools":[],"hooks":["pre_tool_call","pre_llm_call","transform_llm_output"],"middleware":["tool_execution"],"env":[],"known_issues":"The routing rule from skill/ (or an equivalent line in your personality file) is part of the setup: stock Hermes injects the index with no instructions, so without the rule the agent still finds the right file, but by brute-force filesystem search which does not scale.","state":"open","pr":149712,"prs":[{"n":149712,"state":"open","created":"2026-11-05T21:09:13Z"}],"created":"2026-11-05T21:09:13Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"grounder","title":"Grounder","summary":"Grounder as the web_search backend: one call reaches the search providers a query needs and live data for scores, prices, odds and flights, and returns one deduplicated list of licensed results. Connect with a Grounder search key or `hermes auth add grounder:grounder`. Search only.","disclosure":"each query is sent to api.grounder.net, passed on to the search providers Grounder picks and to its reranking vendors (Voyage AI, Cohere), and kept under your Grounder account indefinitely.","category":"web","platforms":[],"maintainer":"grounder-labs","author":"hdiggity","version":"0.2.0","requires_hermes":">=0.22.3","repo":"https://github.com/grounder-labs/grounder-hermes-plugin","docs":"https://github.com/grounder-labs/grounder-hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Installing does not switch web_search over: run hermes config set web.search_backend grounder. The backend is search-only, so web_extract stays with another backend; Signing in needs the public client id first: hermes config set GROUNDER_OAUTH_CLIENT_ID https://api.grounder.net/oauth/clients/hermes-agent. A search key needs no client id; After a sign-in with no search key, hermes tools still shows Grounder as not set up, because a plugin cannot see Hermes's grant. Searches work once web.search_backend is grounder; An account gets 50 free searches a day. Past that, searches use credit bought on the account","state":"merged","pr":149705,"prs":[{"n":149705,"state":"merged","created":"2026-11-05T20:57:34Z"}],"created":"2026-11-05T20:57:34Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"godseye","title":"Eye Of Hermes (EOH)","summary":"Eye Of Hermes (EOH), built on God's Eye View (bilawalsidhu/gods-eye-view, MIT): the same 11 composable godseye_* tools (godseye_view, godseye_query, godseye_layers, godseye_feeds, godseye_annotate, godseye_nav, godseye_track, godseye_scene, godseye_watch, godseye_capture, godseye_admin) for public data (aircraft, ships, satellites, quakes, fires, weather, infrastructure) backed by its MCP server, a live 3D globe pane in Hermes Desktop and the Webapp that Hermes can drive and read, and HUD summaries generated with the Hermes model (ctx.llm) instead of OpenAI. An Overlays sidebar (godseye_annotate op=overlays) lists pins, routes and trails, lines, areas, watches, and scenes, and imports or exports eoh.overlays.v1 JSON under plugin-data. godseye_scene director ops build, update, list, play, and stop a Director scene on the pane; godseye_annotate op=clip stores a YouTube or X URL on a pin; godseye_feeds op=fire_check runs FIRMS, the clearest recent image, then imagery before/after, and does not create a watch or a pin. v0.2.2 hardens Wayback imagery releases, overlays when the relay is out-of-process, pane routing timeouts, and layer/user-pref behavior; v0.2.3 keeps a visible imagery surface during compare swipe and the Wayback timeline; v0.2.4 captures the pane after render and falls back to public Overpass mirrors for OSM queries; v0.2.5 restores a clean plugin.yaml and adds a strict duplicate-key test; v0.2.6 declares street-level keys through Hermes requires_env/get_secret and removes the Gods Eye View env-file fallback. v0.2.7 addresses catalog security review (public-only fetches, scoped credentials, confined imports and minimal child environments) and bounds pane captures with explicit transport errors. v0.2.8 documents the public SDR receivers layer (sdr-receivers); the map layer needs gods-eye-view main at or after b361a25 (PR #5). v0.2.9 treats watch-alert titles as quoted third-party data, requires confirm=true for godseye_admin start/stop/restart/rebuild (refused inside batch), gesture-gates pane link opens and Ask Hermes, and stops re-posting runtime config after the app acknowledges it. v0.2.10 adds a read-only godseye_query op=sdr_receivers (nearest public SDR receivers; does not start audio), refuses private-LAN Overpass/Nominatim/OSRM/Valhalla/Wayback URLs, hardens the live relay and HUD bridge, and adds GitHub Actions CI. The same 11 tools also carry the recent God's Eye View v0.3-style ops (imagery before/after, a weather preset, GTFS-RT transit on the app's transit layer, and fire-perimeter watches). Requires Node 24 or newer (God's Eye View documents 24.14 or later, or 26.x) and a running God's Eye View checkout. No named-person search, face recognition, or tracking of individuals.","disclosure":"starts one node MCP child from the user's God's Eye View checkout, plus git rev-parse, node and systemctl --user children with a minimal environment; runs loopback-only HUD bridge (127.0.0.1:18791) and live relay (127.0.0.1:18792) threads gated by a random token stored 0600 in plugin-data; registers a godseye.live-globe system-prompt section and ships a godseye-analyst skill; a pre_llm_call hook may add a short map line and queued watch alerts, whose feed titles are passed as quoted third-party text; an active area watch polls USGS, NASA FIRMS, OpenSky (falling back to api.adsb.lol when OpenSky fails), the local app, or Overpass/Nominatim from a daemon thread; place search, routes, isochrones, Wayback metadata, and pin research call public services (Nominatim, Overpass and public Overpass mirrors, OSRM, Valhalla, Esri, Wikipedia, Wikidata, Wikimedia, and venue sites), and private-LAN service URLs are refused; feed tools, including fire_check, and godseye_query op=sdr_receivers talk to the user's God's Eye View app, which itself fetches public third-party data feeds and the public SDR receiver directory; overlay import and export stay under plugin-data/godseye/overlays and are not uploaded, and credential-named files are refused for import; opening a pin drawer that has a clip loads a www.youtube-nocookie.com/embed or platform.twitter.com/embed iframe inside the sandboxed frame, and pane link opens and Ask Hermes run only after a click on the pane's confirm bar; godseye_admin app_start, app_stop, app_restart, and rebuild require confirm=true, are refused inside batch, may run systemctl --user on gods-eye-view.service, start Node on the checkout's vite.js, or run npm run build:panel in the checkout, and refuse a foreign listener; all provider credentials are declared in plugin.yaml requires_env and read only via agent.secret_scope.get_secret; no plugin dotenv reads, key-file installation, or process-wide credential mutation; browser-facing credentials are written only to gitignored mode-0600 runtime config, while server-only secrets never enter the pane; the pane backend adds a base tag, an opt-in UI flag, a Cesium worker shim, the overlay sidebar and Director bridge scripts, and the live agent script inside the sandboxed frame only.","category":"tools","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.2.10","requires_hermes":">=0.23.0","repo":"https://github.com/mojomast/EOH","docs":"https://github.com/mojomast/EOH#readme","tools":["godseye_view","godseye_query","godseye_layers","godseye_feeds","godseye_annotate","godseye_nav","godseye_track","godseye_scene","godseye_watch","godseye_capture","godseye_admin"],"hooks":["pre_llm_call"],"middleware":[],"env":["GOOGLE_MAPS_API_KEY","GOOGLE_API_KEY","MAPILLARY_CLIENT_TOKEN","CESIUM_ION_TOKEN","FIRMS_MAP_KEY","FIRMS_API_KEY","FIRMS_KEY","NASA_FIRMS_KEY","AISSTREAM_API_KEY","TOMTOM_API_KEY"],"known_issues":"Full UI in the pane and the in-app HUD via Hermes need two opt-in God's Eye View patches (shipped in patches/, upstream PRs #1571 and #1572); stock upstream gets the globe-only pane.","state":"merged","pr":149691,"prs":[{"n":149691,"state":"merged","created":"2026-11-05T20:20:54Z"}],"created":"2026-11-05T20:20:54Z","late":false,"said":false,"update":false,"discussion":6,"images":["https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/images/eoh-sdr-waterfall-berlin.jpg","https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/images/eoh-sdr-layers-europe.jpg","https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/screenshots/hermes-chat-tokyo-nvg.jpg","https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/screenshots/pane-full-ui.jpg","https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/screenshots/live-fly-to-tokyo.jpg","https://raw.githubusercontent.com/mojomast/EOH/9d433e49645df8ee549b58467876eb1e5daa0f34/docs/screenshots/hud-via-hermes.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/godseye.webp"},{"name":"botsesh","title":"BotSesh","summary":"Native Hermes gateway channel for shared BotSesh rooms. Sign in with `hermes auth add botsesh:rooms`, connect with `hermes botsesh connect`, and Hermes answers @mentions and picks up handoffs from other agents.","disclosure":"","category":"platform","platforms":["linux"],"maintainer":"meowsigma","author":"meowsigma","version":"0.5.1-catalog.1","requires_hermes":">=0.22.5","repo":"https://github.com/meowsigma/hermes-botsesh","docs":"https://github.com/meowsigma/hermes-botsesh#readme","tools":["botsesh_create_room","botsesh_offer_ownership","botsesh_revoke_ownership_offer","botsesh_invite","botsesh_rooms","botsesh_read","botsesh_post","botsesh_cant_do","botsesh_takeover_claim"],"hooks":["post_llm_call","on_session_end","post_tool_call"],"middleware":[],"env":[],"known_issues":"Sign-in needs NousResearch/hermes-agent#151209; until it ships, stock Hermes users should install 0.5.4 from main.; Linux, text-only; keep the gateway running. First connect into a running gateway and plugin-code updates need Hermes' profile-scoped core restart; later rooms do not.; Room text reaches your configured model; BotSesh traffic uses HTTPS to botsesh.com only.","state":"open","pr":149686,"prs":[{"n":149686,"state":"open","created":"2026-11-05T20:13:39Z"}],"created":"2026-11-05T20:13:39Z","late":false,"said":true,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/meowsigma/hermes-botsesh/d336306d2bd4e5e35f7157b57edbabc38783d7fa/docs/live-room-desktop.png","https://raw.githubusercontent.com/meowsigma/hermes-botsesh/d336306d2bd4e5e35f7157b57edbabc38783d7fa/docs/live-room-phone.png","https://raw.githubusercontent.com/meowsigma/hermes-botsesh/b32baba4bfe825edbaa90cb036e8dfcdb785d417/docs/live-room-desktop.png","https://raw.githubusercontent.com/meowsigma/hermes-botsesh/b32baba4bfe825edbaa90cb036e8dfcdb785d417/docs/live-room-phone.png"],"videos":["https://github.com/meowsigma/hermes-botsesh/releases/download/v0.1.0/HACK8-B-BotSesh-Hermes.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/botsesh.webp"},{"name":"hermes-teleoperator","title":"Hermes Teleoperator","summary":"Keep one conversation on the gateway while switching shell, files, skills and explicitly permitted MCP tools between machines over SSH. The standalone Rust receiver needs no Hermes or language runtime. Commands have the destination SSH user's full OS authority; this is not a sandbox.","disclosure":"Routes this conversation's terminal, file, process, skill and allowlisted MCP tool calls to SSH machines you configure, where the author's Rust receiver runs them with that SSH user's full authority; Hermes' dangerous-command and human-approval prompts run before each routed call, but other plugins' pre_tool_call blocks and the agent's tool guardrails do not see routed calls until core adds a seam (hermes-agent#152963). The optional `python -m hermes_teleoperator.deploy` helper downloads the receiver from the author's GitHub release (SHA256 pinned in the plugin source, build-attested) and installs it on the remote host over SSH; file transfers need approval, and gateway-local transfers stay inside a configured transfer_dir.","category":"tools","platforms":["linux"],"maintainer":"Tsurgcom","author":"Tsurgcom","version":"1.2.0","requires_hermes":">=0.21.3","repo":"https://github.com/Tsurgcom/hermes-teleoperator","docs":"https://github.com/Tsurgcom/hermes-teleoperator/blob/4dfb08eb0bba00f7c2036613290a9e6da5650d8d/README.md","tools":["teleoperator"],"hooks":["pre_llm_call","on_session_end"],"middleware":["tool_execution"],"env":[],"known_issues":"Windows is unsupported. Linux is the only catalog-claimed platform; macOS binaries exist but are not execution-tested in CI.; Gateway and receiver versions must match exactly. SSH keys and verified known-host entries must already be configured.; Receiver runs with the SSH user's authority. Gateway applies Hermes' dangerous-command and human-approval gates before routing, but other plugins' pre_tool_call hooks and the agent's tool guardrails cannot see routed calls until Hermes provides a pre-execution seam (hermes-agent#152963). Browser, memory, cron and delegation do not migrate.; Remote MCP is explicit-allowlist stdio only; sampling, elicitation and interactive callbacks are rejected. Remote content search is blocked; filename search remains available. Small-file transfers are limited to 8 MiB.; Transfers require human approval scoped to the exact source, destination and move setting. Gateway-local transfers require a configured transfer_dir; deleting a gateway-local source additionally requires allow_local_delete: true.; Receiver downloads are verified against per-asset SHA256 digests committed in the plugin source for the exact release tag; SHA256SUMS is cross-checked but is not the trust root. Release assets carry GitHub build-provenance attestations. SSH key authorization remains a manual administrator action.","state":"open","pr":149685,"prs":[{"n":149685,"state":"open","created":"2026-11-05T20:13:14Z"}],"created":"2026-11-05T20:13:14Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Tsurgcom/hermes-teleoperator/4dfb08eb0bba00f7c2036613290a9e6da5650d8d/assets/marketplace-banner.png","https://raw.githubusercontent.com/Tsurgcom/hermes-teleoperator/4dfb08eb0bba00f7c2036613290a9e6da5650d8d/assets/architecture.svg","https://raw.githubusercontent.com/Tsurgcom/hermes-teleoperator/4dfb08eb0bba00f7c2036613290a9e6da5650d8d/assets/switching.svg","https://github.com/user-attachments/assets/5f4ae84d-c7a6-4614-89e7-d796461576fa"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-teleoperator.webp"},{"name":"pdf-shrink","title":"PDF Shrink","summary":"Shrink a PDF to a size limit (2 MB, 500 KB, whatever the upload form says) with everything running locally — no upload, no API key, no third-party service. Two tools and a bundled skill. pdf_inspect reports what makes a file heavy: image share of the bytes, the resolution each image is actually displayed at, fonts, embedded attachments and duplicates, with a verdict (images dominate / images not reclaimable / vector-heavy / already small) so a shrink that cannot work is caught before it runs. pdf_shrink downsamples images it can re-encode safely to the resolution they are displayed at, recovered by replaying each page's content stream (q/Q/cm/Do, including nested Form XObjects), then walks a measured ladder of DPI/JPEG-quality rungs from the mildest down and keeps the first that fits — each rung rebuilt from the pristine original, so the copy is one generation of compression rather than six. Text, fonts and vector art are never rasterised; images that cannot be re-encoded safely (JBIG2, CCITT, 1-bit or non-8-bit samples, soft/stencil masks, /Mask, /Matte or /Decode arrays, CMYK and other print colour spaces, tiny logos) are left byte-for-byte alone. When the limit cannot be reached without making the document unreadable it stops at the safe floor, reports the smallest safe size, saves that copy when it is meaningfully smaller, and names the levers that can actually help (a reachable higher target, or aggressive=true when it can do better) instead of handing back mush. Every copy is re-opened and verified (page count, blank pages, structural syntax) before delivery; a copy that fails is reported as failed, not as a success. The source is re-hashed before and after every completed run, and a change is reported rather than claimed untouched. A before/after render of page 1 comes back when PDFium is available and a verified copy was written. Writes only new files; an existing output path is refused, never overwritten. Ladder rungs are built in a private system-temp directory, never beside the PDF; a read-only source folder still works, and the default output falls back to the current directory when the source folder cannot be written. An explicit output_path must end in .pdf, and a location that Hermes's own write denylist refuses is rejected before anything is written. The only destructive option is drop_attachments=true, off by default.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Hazem-Samak","author":"Hazem-Samak","version":"1.0.3","requires_hermes":">=0.22.0","repo":"https://github.com/Hazem-Samak/hermes-pdf-shrink","docs":"https://github.com/Hazem-Samak/hermes-pdf-shrink#readme","tools":["pdf_shrink","pdf_inspect"],"hooks":[],"middleware":[],"env":[],"known_issues":"`hermes plugins validate` warns (catalog rule 9) about the one private core import in `engine.py`: `agent.file_safety.is_write_denied`. It is the confinement check the catalog review asked for, imported lazily and failing closed if the module is present but broken; there is no public equivalent, no core function is patched, and it exists in every Hermes >= 0.22.0.","state":"merged","pr":149671,"prs":[{"n":149671,"state":"merged","created":"2026-11-05T19:43:26Z"}],"created":"2026-11-05T19:43:26Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Hazem-Samak/hermes-pdf-shrink/6145a74a9e9e2a0d0d03ba859d8ea59a6d448a4c/assets/banner.png","https://raw.githubusercontent.com/Hazem-Samak/hermes-pdf-shrink/6145a74a9e9e2a0d0d03ba859d8ea59a6d448a4c/assets/screenshot.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pdf-shrink.webp"},{"name":"skillcheck","title":"SkillCheck","summary":"CI for agent skills: snapshots the pre-write state of skill writes arriving through Hermes's in-band tool surface (skill_manage create/edit/patch/write_file/remove_file/delete and write_file/patch/edit_file into the skills dir; hooks observe landed writes, no pre-write blocking; creates have no prior state, out-of-band edits are detected at run time but carry no snapshot), LLM-generates regression cases as human-review drafts, re-runs them against the candidate revision in child sessions launched through the Hermes subagent lifecycle API with allowed_toolsets=() (no file, shell, browser or network tools; timed-out children get a cancellation request whose accepted/refused outcome is reported), and reports GREEN / REGRESSION / FIRST-RUN. Promotion and revert are user-invoked only (slash command or CLI; not registered as model tools), and revert validates the skill name, stays strictly inside the skill folder, skips dotfiles and restores byte-exact snapshots.","disclosure":"reads your skills directory and stores pre-edit snapshots of skill files plus its own state in its plugin data folder; `/skillcheck revert` (user-run only) deletes and rewrites files inside that one skill's folder to restore the snapshot, keeping the pre-revert state as another snapshot; case generation and the optional judge call the session's configured model.","category":"tools","platforms":[],"maintainer":"neta-gym","author":"neta-gym","version":"0.2.1","requires_hermes":">=0.22.0","repo":"https://github.com/neta-gym/skillcheck","docs":"https://github.com/neta-gym/skillcheck/blob/501cc11c89b1437eed96ed387451185616bf57d2/README.md","tools":["skillcheck_status","skillcheck_generate","skillcheck_cases","skillcheck_run"],"hooks":["pre_tool_call","post_tool_call","on_skill_lifecycle"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149668,"prs":[{"n":149668,"state":"merged","created":"2026-11-05T19:35:24Z"},{"n":149666,"state":"closed","created":"2026-11-05T19:30:43Z"}],"created":"2026-11-05T19:30:43Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tiled-sessions","title":"Tiled Sessions","summary":"Hyprland for Hermes Desktop: clicking a session opens it in a new tile instead of replacing the chat you were in, and every tile re-lays out as Grid, Master, Dwindle or Columns. Ctrl+Alt+arrows move focus and the caret follows, Ctrl+Alt+Enter, Ctrl+N or the + after a chat's tabs opens a new chat in its own tile, tiles never shrink below a usable width (portrait windows wrap Columns into rows), Ctrl+Alt+/ flips the whole layout between rows and columns (like Hyprland's togglesplit), Ctrl+Alt+F fullscreens the focused tile, and saved workspaces bring a whole set of tiles back in one step. The Tiles pane groups sessions by source like the core sidebar (Sessions, split by day into Today, Yesterday and so on, then one section per messaging platform and Cron jobs) and adds search, drag-to-reorder and a right-click menu (pin, rename, move to main, close). Every shortcut is editable on the plugin's settings page. Desktop-only (desktop/plugin.js on the plugin SDK); public gateway RPCs only (session.title for rename); no agent tools, hooks, middleware, env vars or telemetry.","disclosure":"","category":"desktop","platforms":[],"maintainer":"strnadchristopher","author":"strnadchristopher","version":"0.6.0","requires_hermes":"","repo":"https://github.com/strnadchristopher/tiled-sessions","docs":"https://github.com/strnadchristopher/tiled-sessions#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Layouts and the shortcut editor need the Desktop layout SDK from NousResearch/hermes-agent#149656. On a Hermes build without it, sessions open as ordinary tabs and the Tiles pane says why.","state":"open","pr":149657,"prs":[{"n":149657,"state":"open","created":"2026-11-05T19:05:08Z"}],"created":"2026-11-05T19:05:08Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/tiled-sessions.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/01-grid.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/02-master.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/03-dwindle.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/04-fullscreen.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/05-row-menu.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/assets/screenshots/06-settings.jpg","https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/d7837aa20c5d70b992bec5d9daef5dfd4ed108da/assets/tiled-sessions.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/tiled-sessions.webp"},{"name":"creative-review","title":"creative-review","summary":"An art director's desk for your agent: a native Hermes Desktop workspace to visually review AI-generated images — compare a reference against generated versions side by side or blended, zoom and pan, click anywhere to drop numbered point annotations with notes, then \"Request Revision\" builds a structured brief (markers, coordinates, notes, reference, version lineage) and hands it to the LIVE Hermes conversation through host.composer.submit(), so the agent receives it as a real user turn. Revisions are linked to their parent image, and the final image can be approved and exported with its full review history as JSON or Markdown. Local-first: boards and history live in a SQLite database under the profile's plugin-data folder and images are read from disk in place.","disclosure":"uses the authenticated Hermes backend API, which can be remote; revision submission can invoke the user-configured provider through Hermes. No direct third-party processing calls, mandatory cloud account, credentials, shell, background processes or telemetry; the plugin reads the local image files the user (or the agent) registers, by path, and writes exports into its own plugin-data folder.","category":"desktop","platforms":[],"maintainer":"peterpeeterspeter","author":"peterpeeterspeter","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/peterpeeterspeter/hermes-creative-review","docs":"https://github.com/peterpeeterspeter/hermes-creative-review#readme","tools":["creative_review_create_board","creative_review_list_boards","creative_review_add_image","creative_review_get_board","creative_review_revision_brief","creative_review_approve","creative_review_export"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149654,"prs":[{"n":149654,"state":"open","created":"2026-11-05T19:03:07Z"}],"created":"2026-11-05T19:03:07Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/peterpeeterspeter/hermes-creative-review/3f09cdce305c9c9db19ce9d752134ca1a35344e0/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/creative-review.webp"},{"name":"solverforge-planner","title":"SolverForge Planner","summary":"Plans your tasks into your week around your meetings, deadlines, task order and focus hours with a SolverForge constraint solver, and proves every hard rule holds before anything is written. The planner keeps its own local calendar (SQLite plus a planner.ics you can subscribe to); Hermes pulls your cloud calendar and pushes the plan with the calendar tool you already use, and the planner only ever creates, moves or deletes its own events, each with a fixed ID so a repeated push adds nothing. Applying a plan and unscheduling a task ask for your approval. Desktop: a plan card in chat, a Planner page (week view and tasks) and a status-bar chip.","disclosure":"`hermes solverforge-planner install` (or /planner install, or the Desktop Install engine button) downloads one engine binary for your platform from this repository's own engine-v0.1.0 GitHub release, built by its release workflow with a GitHub build attestation, and refuses it unless its SHA-256 matches the value pinned in engine_bin.py; the agent cannot start that download. Each solve runs that binary once as a subprocess (JSON on stdin and stdout, stopped at solve_timeout, no network). planner_busy_from_ics fetches an https/http/webcal iCalendar link (up to 10 MB) or reads a local .ics file, only the one you name. All data stays in <hermes home>/plugin-data/solverforge-planner/; no credentials are read or stored, no cloud calendar is touched by the plugin itself, no telemetry, no background process; an optional Morning plan automation blueprint runs only if you schedule it, and never applies.","category":"tools","platforms":[],"maintainer":"blackopsrepl","author":"blackopsrepl","version":"0.3.1","requires_hermes":">=0.22.2","repo":"https://github.com/blackopsrepl/hermes-solverforge-planner","docs":"https://github.com/blackopsrepl/hermes-solverforge-planner#readme","tools":["planner_status","planner_inbox","planner_task_create","planner_task_update","planner_task_delete","planner_task_unschedule","planner_depend","planner_settings","planner_busy_set","planner_busy_from_ics","planner_week","planner_optimize","planner_proposal","planner_apply","planner_push"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Run `hermes solverforge-planner install` once after installing the plugin: the engine binary is downloaded separately (about 5 MB) and checked against a pinned SHA-256; Engine builds exist for Linux (x86_64, arm64), macOS (Apple silicon, Intel) and Windows (x86_64); Hermes builds a session's tool list from the plugins it saw at the previous launch, so the first session right after installing has no planner tools: start Hermes once more","state":"merged","pr":149647,"prs":[{"n":149647,"state":"merged","created":"2026-11-05T18:37:18Z"}],"created":"2026-11-05T18:37:18Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/banner.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/screenshots/chat-plan-card.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/screenshots/planner-page.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/screenshots/tasks-tab.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/screenshots/apply-confirm.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c2ae4f2ad893501aa644c5f70b8fb6df65d0495d/docs/architecture.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c6c4a5fa4f779a12706c1f34661a1b6dd7e04aa9/docs/screenshots/chat-plan-card.png","https://raw.githubusercontent.com/blackopsrepl/hermes-solverforge-planner/c6c4a5fa4f779a12706c1f34661a1b6dd7e04aa9/docs/screenshots/planner-page.png"],"videos":["https://github.com/user-attachments/assets/c96958a7-59d6-4c03-a537-6a3b383c55ae"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/solverforge-planner.webp"},{"name":"content-engine","title":"Content Engine","summary":"One long video in, a week of content out. Paste a YouTube URL, get scored 45 to 60 second clips and per-platform social copy. Live in 90 seconds, no editing software.","disclosure":"","category":"tools","platforms":[],"maintainer":"PXMichael","author":"PXMichael","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/PXMichael/content-engine","docs":"https://github.com/PXMichael/content-engine/blob/19e5ae8cac70e34af3c849b7ed61506fef53c2f0/README.md","tools":["ce_fetch_transcript","ce_score_moments","ce_write_copy","ce_cut_clips","ce_run"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":151502,"prs":[{"n":151502,"state":"merged","created":"2026-11-08T21:21:03Z"},{"n":149644,"state":"closed","created":"2026-11-05T18:16:34Z"}],"created":"2026-11-05T18:16:34Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"adextract","title":"adextract","summary":"Competitor ad research for your agent through adextract's hosted MCP server (Streamable HTTP at https://mcp.adextract.co/mcp): search the public ad libraries of Meta, Google, LinkedIn and TikTok, open single-ad details, and analyze any ad image or video. Bundles five research skills. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code; every tool call goes to mcp.adextract.co with an API key you create, sent as an Authorization header and read from your profile environment. The server records tool name, time, success and credits used per account, not search queries, and may email the account address about the account. Each successful call uses one credit, declared in the package's cost table. All 13 tools are annotated read-only and the server is marked untrusted. The tool set is served by the remote server at runtime and is not covered by the pinned sha.","category":"tools","platforms":[],"maintainer":"Advertly, Inc.","author":"heyytars","version":"1.0.0","requires_hermes":">=0.22.3","repo":"https://github.com/ad-vertly/adextract-mcp-server","docs":"https://adextract.co/documentation","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149643,"prs":[{"n":149643,"state":"merged","created":"2026-11-05T18:16:33Z"}],"created":"2026-11-05T18:16:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ark","title":"hermes-ark","summary":"Encrypted, versioned backups of your whole Hermes — memory, SOUL, skills, config, cron, sessions and every profile — with item-level restore. Snapshots happen automatically before every memory/skill write and after sessions; a health guard tells the agent (and you) when memory or skills suddenly shrink, with the exact /ark restore command that undoes it. Off-site copies to any S3-compatible storage (AWS, R2, B2, MinIO) or a folder, new-machine recovery (hermes ark pull), and hermes ark verify to prove every snapshot restores. AES-256-GCM, deduplicated, retention pruning; a Hermes Desktop page with timeline, diffs and one-click restore. Self-defense: a prompt-injected agent cannot prune, delete, reconfigure or switch off Ark. Commands: hermes ark …, /ark …; tool: ark_checkpoint.","disclosure":"reads the Hermes home and its profiles; Hermes credential files (.env, auth.json, vault, pairing, browser logins, Webapp session token) are never read, captured or restored; ARK_PASSPHRASE and the S3 keys come only through the secret scope and are never stored. Writes snapshots to the configured repository folder (default $HERMES_HOME/plugin-data/hermes-ark/repo) and restores into the Hermes home only on an explicit user command or Desktop confirmation (the agent has no restore tool). tool_execution middleware on every tool call: snapshots before memory/skill writes and adds a note when the guard fires; refuses tool calls that would delete, rewrite or reconfigure Ark's backups or settings or disable it (allow_agent_admin lifts this); raises a tamper alarm when Ark is changed anyway, and never writes back settings, enabled state, secrets or its own plugin files — the user's changes always stick. The only repair is Ark's own repository key file after an agent tool call deleted it. Background threads: periodic snapshot/auto-push after sessions, and a 10-second watchdog in the agent process that stops when the plugin is disabled or unloaded. Network only to the user-configured S3 endpoint (HTTPS; plain http only for localhost). No subprocesses, no telemetry, no self-updater.","category":"tools","platforms":[],"maintainer":"medomohamed22","author":"medomohamed22","version":"0.6.3","requires_hermes":">=0.21.6","repo":"https://github.com/medomohamed22/hermes-ark","docs":"https://github.com/medomohamed22/hermes-ark#readme","tools":["ark_checkpoint"],"hooks":["on_session_end"],"middleware":["tool_execution"],"env":["ARK_PASSPHRASE","ARK_S3_ACCESS_KEY_ID","ARK_S3_SECRET_ACCESS_KEY"],"known_issues":"","state":"merged","pr":149640,"prs":[{"n":149640,"state":"merged","created":"2026-11-05T18:14:44Z"}],"created":"2026-11-05T18:14:44Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/medomohamed22/hermes-ark/a23e529c1f636aa49d974576cdc5cb15fc8242d3/docs/media/banner.png","https://raw.githubusercontent.com/medomohamed22/hermes-ark/a23e529c1f636aa49d974576cdc5cb15fc8242d3/docs/media/restore-preview.png","https://raw.githubusercontent.com/medomohamed22/hermes-ark/a23e529c1f636aa49d974576cdc5cb15fc8242d3/docs/media/chat-guard.png","https://raw.githubusercontent.com/medomohamed22/hermes-ark/a23e529c1f636aa49d974576cdc5cb15fc8242d3/docs/media/desktop-dark.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-ark.webp"},{"name":"caprover-operator","title":"CapRover Operator","summary":"Read-only setup diagnostics and human-approved, state-bound immutable-image deployment for one owner-configured CapRover app, with durable uncertainty, replay refusal and dated operation cards for self-hosted projects.","disclosure":"contacts the configured CapRover HTTPS origin and optional fixed health endpoint; CapRover returns all app definitions in memory, while only the configured app's keyed fingerprint and sanitized evidence enter a private local ledger. Image startup may run migrations. HTTP alone does not prove the serving image; runtime task evidence is optional. No shell, telemetry, self-updater or automatic rollback. Apply requires fresh native human approval in in_process mode. Safeguards apply only to this plugin's caprover_apply workflow and ledger; independent terminal or execute_code actions, other plugins, direct API calls and external operators require their own access controls and approvals.","category":"tools","platforms":["linux","macos"],"maintainer":"fmercurio","author":"fmercurio","version":"0.3.1","requires_hermes":">=0.22.6","repo":"https://github.com/fmercurio/hermes-caprover-operator","docs":"https://github.com/fmercurio/hermes-caprover-operator#readme","tools":["caprover_doctor","caprover_plan","caprover_apply","caprover_reconcile","caprover_status"],"hooks":["pre_tool_call","post_approval_response"],"middleware":["tool_execution"],"env":["CAPROVER_OPERATOR_TOKEN"],"known_issues":"Apply requires an interactive native human approval and plugins.isolation set to in_process; unattended, smart and YOLO approval cannot authorize a deployment.; Servers without supported runtime task evidence produce metadata/HTTP observation receipts rather than a verified serving-image rollout.; Inline HTML cards require the assistant to emit the returned public preview directive; unsupported or remote surfaces retain JSON facts and may show a file attachment.","state":"merged","pr":149626,"prs":[{"n":149626,"state":"merged","created":"2026-11-05T17:49:39Z"}],"created":"2026-11-05T17:49:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":["https://x.com/ztock/status/2118680536600269045"],"youtube":[],"thumb":null},{"name":"proofops","title":"ProofOps","summary":"Verification for AI agent completion claims: turn \"the agent said done\" into a sealed receipt of what was checked, what was observed, and what passing does NOT prove. Hermes runs a declared plan of read-only checks against a live service, a deliverable or a system of record, and gets a receipt: each check's actual result, what it proves, and - printed on every receipt - what passing does NOT prove. Fourteen check types: HTTP status/JSON/body/headers, command exit codes, file and directory inventory, checksums, CSV shape, image dimensions, PDF pages/size/text, and read-only SQLite queries. Receipts are sealed with a sha256 digest and can be HMAC-signed, so editing a verdict after the run is detectable; `verify` reports valid / tampered / unsealed / needs-key. A check that could not run is reported NOT RUN - never a green tick - and the receipt carries claimable: false. Refuses undeclared origins, undeclared commands, unknown check types, and paths outside the operator's allowed_paths.","disclosure":"network: HTTP GET only, against origins the plan names, resolving each host once and connecting only to the addresses it classified (every redirect hop too), refusing loopback/private/link-local addresses unless the operator allows local targets, environment proxies ignored; shell: exactly the argv a plan lists, and only when the operator also lists that command verbatim in plugins.entries.proofops.settings.allowed_commands - there is no approval prompt inside a tool call, because there is nobody to answer one; reads: no file or SQLite access at all until the operator sets plugins.entries.proofops.settings.allowed_paths (an unset fence is a denial, not a default), then only inside the operator's roots and the plan's, SQLite opened read-only and single-statement; storage: receipts under the plugin's own data directory containing observed values, hostname, cwd and command output; credentials: none read or stored, signing is CLI-only; no telemetry by default and no network access at import or registration; telemetry exists only as an explicit opt-in: a one-time \"Send anonymous diagnostics\" checkbox after the first run, framed as the feedback that decides what gets fixed next, where Enter leaves it unchecked and the refusal is remembered and the exact bytes printable via `proofops share --dry-run` sending an anonymous six-field aggregate (random install id, version, platform, run and plan counts, pass/fail/not-run counts) that `proofops share --dry-run` prints in full beforehand, with version and platform allow-listed on both client and server so no name, path or hostname can be stored; the aggregate carries pass/fail/not-run totals plus the same totals per check type from a closed set of fourteen, so the report can say what kind of thing is verified (web service, file, PDF, database) without saying whose, and is published at https://rasrobo.github.io/proofops/metrics/","category":"tools","platforms":["linux","macos"],"maintainer":"rasrobo","author":"rasrobo","version":"0.6.0","requires_hermes":">=0.21.5","repo":"https://github.com/rasrobo/proofops","docs":"https://github.com/rasrobo/proofops#readme","tools":["proofops_plans","proofops_run","proofops_receipt","proofops_verify"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149625,"prs":[{"n":149625,"state":"open","created":"2026-11-05T17:48:21Z"}],"created":"2026-11-05T17:48:21Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"api-architect","title":"api-architect","summary":"Compile API specs into first-class Hermes tools. Takes any OpenAPI 3 / Swagger 2 / Postman v2.1 spec by URL, compiles endpoints + params with per-endpoint provenance into a schema-checked manifest, and serves four tools: architect_learn (fetch + compile), architect_commit (human-visible draft→active review), architect_list (manifests persist across sessions) and api_call (schema-checked execution — invalid params fail locally, never as server 400s, so the model self-corrects). Cuts HTML deep-scraping by design: no spec, no invented endpoints.","disclosure":"network: fetches user-supplied spec URLs and calls API hosts the user explicitly committed via architect_commit; private networks (loopback, RFC1918, link-local, ULA — including numeric/decimal/hex and IPv6-mapped smuggled forms) are denied by default with an opt-in allow_private_hosts setting; redirects are not followed; request timeout + response size caps; no telemetry, nothing leaves the machine except the calls the user asked for. Credentials: only through Hermes routes (config_schema type secret, read via agent.secret_scope at call time); manifests store the slot NAME, never the value; no .env / auth.json / keychain reads; no OAuth flows. Safety: non-GET endpoints always require interactive approval and fail clean under unattended runs (cron/gateway); the spec's own metadata never authorizes anything. Zero python_dependencies (stdlib only). 249 stdlib tests at the pinned commit + real E2E (learn → draft refusal → commit → HTTP 200 call; destructive confirm gate; invented endpoints and SSRF refused).","category":"tools","platforms":[],"maintainer":"monyinet","author":"monyinet","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/monyinet/api-architect","docs":null,"tools":["architect_learn","architect_commit","architect_list","api_call"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149624,"prs":[{"n":149624,"state":"open","created":"2026-11-05T17:46:01Z"}],"created":"2026-11-05T17:46:01Z","late":false,"said":true,"update":false,"discussion":8,"images":["https://raw.githubusercontent.com/monyinet/api-architect/53049dd221a24916dd470b15cd38cd898a1a604d/assets/hero.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/api-architect.webp"},{"name":"factledger","title":"Factledger","summary":"A typed-facts ledger with structural truth — the agent records durable facts (prices, statuses, limits, decisions, capabilities) once and search/show them whenever they matter. For every (scope, subject, predicate) exactly one row is active; a new value closes the previous one (valid_to + superseded_by) instead of overwriting it, so contradictory versions never coexist and history is the audit trail. The full ledger stays queryable on demand, separate from the character-budgeted memory view that is injected every turn. Tools: add, show, search, history, compile, stale, export, check, stats. Local-first TSV store, stdlib only, no network, no credentials.","disclosure":"none: no network calls, no shell commands, no background processes, no credential access; every tool reads or writes only the local ledger file.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"explorelifehus-eng","author":"explorelifehus-eng","version":"1.0.0","requires_hermes":">=0.19","repo":"https://github.com/explorelifehus-eng/factledger","docs":"https://github.com/explorelifehus-eng/factledger","tools":["factledger_add","factledger_show","factledger_search","factledger_history","factledger_compile","factledger_stale","factledger_export","factledger_check","factledger_stats"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149617,"prs":[{"n":149617,"state":"merged","created":"2026-11-05T17:25:15Z"}],"created":"2026-11-05T17:25:15Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hostinger","title":"hostinger","summary":"Control Hostinger VPS and shared hosting from Hermes: VPS lifecycle, snapshots, firewall, DNS, domains, SSL, deployments, billing/usage. Wraps Hostinger REST API. Requires HOSTINGER_API_TOKEN.","disclosure":"","category":"tools","platforms":[],"maintainer":"J182Razor","author":"J182Razor","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/J182Razor/hermes-hostinger-plugin","docs":"https://github.com/J182Razor/hermes-hostinger-plugin","tools":["list_vps","vps_action","vps_snapshots","vps_firewall","list_domains","dns_records","ssl_status","deploy","billing_summary","list_hosting"],"hooks":[],"middleware":[],"env":["HOSTINGER_API_TOKEN"],"known_issues":"","state":"open","pr":149615,"prs":[{"n":149615,"state":"open","created":"2026-11-05T17:19:50Z"}],"created":"2026-11-05T17:19:50Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"arena-skill","title":"arena-skill","summary":"Tournament of N sub-agents competing to produce the best answer. Portable Agent Plugins v1 package (skills/ only). Adapted from Jakeschincariol/arena-skill (MIT) to use Hermes delegate_task.","disclosure":"derived from Jakeschincariol/arena-skill (MIT); a full run spawns many delegate_task sub-agents (about 600 calls at the default 100 agents, about 90 with --quick), so cost scales with agent count; the skill runs its bundled bracket.py through the terminal and writes run files under `.arena/` in the current directory.","category":"tools","platforms":[],"maintainer":"J182Razor","author":"J182Razor","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/J182Razor/hermes-arena-skill","docs":"https://github.com/J182Razor/hermes-arena-skill","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149614,"prs":[{"n":149614,"state":"merged","created":"2026-11-05T17:19:47Z"}],"created":"2026-11-05T17:19:47Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"doop","title":"doop","summary":"Multiplayer design canvas (doop) integration: Hermes designs UIs on a live doop canvas through doop MCP server. Portable Agent Plugins v1 package (mcp.json + skills/). Requires a running doop instance and Node.js.","disclosure":"sends design prompts and canvas content to your doop instance; write-capable calls require approval (trust: untrusted).","category":"tools","platforms":[],"maintainer":"J182Razor","author":"J182Razor","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/J182Razor/hermes-doop-plugin","docs":"https://github.com/J182Razor/hermes-doop-plugin","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149613,"prs":[{"n":149613,"state":"open","created":"2026-11-05T17:19:45Z"}],"created":"2026-11-05T17:19:45Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"github-to-hermes","title":"github-to-hermes","summary":"Convert any GitHub repository into a Hermes plugin: detects MCP servers, REST/OpenAPI, CLIs, Python packages, and skill collections, then generates a ready-to-validate plugin scaffold. Provides detect_repo, convert_repo, validate_plugin tools.","disclosure":"","category":"tools","platforms":[],"maintainer":"J182Razor","author":"J182Razor","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/J182Razor/hermes-github-to-plugin","docs":"https://github.com/J182Razor/hermes-github-to-plugin","tools":["detect_repo","convert_repo","validate_plugin"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149612,"prs":[{"n":149612,"state":"open","created":"2026-11-05T17:19:42Z"}],"created":"2026-11-05T17:19:42Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-security","title":"Security","summary":"Security review for a local repository. The agent builds a threat model, splits the code into chunks and reviews them with parallel subagents, checks each candidate against the code and traces whether an attacker can reach it. Reports keep evidence, rejected candidates and coverage gaps, export to Markdown, JSON, CSV and SARIF, and get a Security page in Hermes Desktop. Standard, deep and diff modes; `/security` slash command and `hermes security-review` CLI. Optional \"Run tests to confirm findings\" writes small reproductions and runs them in a temporary copy of the repository; testing a running app needs a per-scan grant (one origin, one hour, 200 requests) that agent tools cannot issue. Apache-2.0 (parts adapted from Apache-2.0 source, see NOTICE).","disclosure":"the first scan downloads a pinned osv-scanner release from GitHub (about 55 MB, refused unless its SHA-256 matches) into the plugin data folder; package names and versions go to api.osv.dev and api.deps.dev, declared runtime versions to endoflife.date (`HERMES_SECURITY_DEPENDENCY_CHECK=off` disables this). Test confirmation runs repository code as your user in a temporary copy with credential-looking environment variables removed; that is not a sandbox. The configured model provider receives the code under review; scan data stays in the profile's plugin data folder. With `plugins.entries.hermes-security.allow_gateway_injection` turned on (off by default), the plugin queues one \"Continue security scan\" message into the chat when a scan stalls, at most 3 times without progress. No Python dependencies.","category":"tools","platforms":[],"maintainer":"NousResearch","author":"teknium1","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/NousResearch/hermes-official-plugins","docs":"https://github.com/NousResearch/hermes-official-plugins/tree/main/hermes-security","tools":["security_scan_start","security_scan_get","security_scan_checkpoint","security_scan_submit_worker_result","security_scan_record_validations","security_scan_record_chains","security_scan_finalize","security_scan_cancel","security_scan_export"],"hooks":["on_session_end","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149611,"prs":[{"n":149611,"state":"merged","created":"2026-11-05T17:16:24Z"}],"created":"2026-11-05T17:16:24Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/f211940dd81f32b85ec26e2e07de8aa5e24df9e0/assets/hermes-security.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-security.webp"},{"name":"ao-bridge","title":"AO Bridge","summary":"Agent Orchestrator bridge for the Hermes web dashboard: a Kanban board over the local AO daemon where every AO project's sessions render as cards across Queued/Running/Review/Blocked/Done/Archive columns mapped from live session state. Live updates over WebSocket (server polls the daemon, pushes on change; poll fallback). Spawn workers into any registered project (project + harness + name + prompt), send user-authored messages to running sessions, kill sessions (with confirmation), search and status-filter instantly client-side, and click a card for a read-only detail sheet (metadata + bounded transcript tail + canonical ao:// link). Third-party dashboard plugin: adds a dashboard tab plus a backend API router at /api/plugins/ao-bridge/ that talks only to the local AO daemon REST API (loopback, no secrets, no external calls). Pair with the ao gateway platform plugin if you want spawned workers chatting back.","disclosure":"","category":"automation","platforms":[],"maintainer":"wesleymatosdev","author":"wesleymatosdev","version":"0.2.0","requires_hermes":"","repo":"https://github.com/wesleymatosdev/hermes-ao-bridge","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149604,"prs":[{"n":149604,"state":"open","created":"2026-11-05T16:59:36Z"}],"created":"2026-11-05T16:59:36Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/wesleymatosdev/hermes-ao-bridge/fb26915d84143ac8f689abf5dbac967857737962/docs/screenshots/ao-bridge-board.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-ao-bridge/fb26915d84143ac8f689abf5dbac967857737962/docs/screenshots/ao-bridge-spawn-form.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-ao-bridge/fb26915d84143ac8f689abf5dbac967857737962/docs/screenshots/ao-bridge-message-sheet.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-ao-bridge/fb26915d84143ac8f689abf5dbac967857737962/docs/screenshots/ao-bridge-detail.png","https://raw.githubusercontent.com/wesleymatosdev/hermes-ao-bridge/fb26915d84143ac8f689abf5dbac967857737962/docs/screenshots/ao-bridge-live-search.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ao-bridge.webp"},{"name":"zkagent-attest","title":"zkagent-attest","summary":"Prove what your agent did without revealing what it did: every tool call is recorded, the session is proved inside a signed cap, and one action can be disclosed on request. Replay protection spans both verification modes, so a receipt and the session that contains it cannot both be accepted.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"MCPVOT","author":"MCPVOT","version":"0.5.8","requires_hermes":">=0.22.5","repo":"https://github.com/MCPVOT/hermes-zkagent","docs":"https://github.com/MCPVOT/hermes-zkagent#readme","tools":["zkagent_status","zkagent_attest","zkagent_verify","zkagent_disclose"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"8 actions per receipt (the circuit's slot count); longer sessions need several attestations; single-party trusted setup, development-grade, not a ceremony; the ledger is agent-authored: a tool call made outside Hermes is not recorded","state":"open","pr":149603,"prs":[{"n":149603,"state":"open","created":"2026-11-05T16:59:26Z"}],"created":"2026-11-05T16:59:26Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/MCPVOT/hermes-zkagent/f962664c67116e90f578379b177c9d01c64141fd/docs/assets/card.png","https://raw.githubusercontent.com/MCPVOT/hermes-zkagent/f962664c67116e90f578379b177c9d01c64141fd/docs/assets/demo-final.png","https://raw.githubusercontent.com/MCPVOT/hermes-zkagent/f962664c67116e90f578379b177c9d01c64141fd/assets/infographic-portrait.png","https://raw.githubusercontent.com/MCPVOT/hermes-zkagent/master/docs/assets/demo-final.png"],"videos":[],"x":["https://x.com/MCPVOT/status/2119241113760649642"],"youtube":[],"thumb":"/hackathon/thumbs/zkagent-attest.webp"},{"name":"mission","title":"Mission Control","summary":"Mission Control — a live, zoomable map of everything the agent is doing. Sessions become stars, projects become constellations, tool calls become filaments, with real-time tokens, cost and activity, instant search over every stored message, and a 24h replay. Read-only, loopback only, zero configuration.","disclosure":"","category":"tools","platforms":[],"maintainer":"EikeAhlers","author":"EikeAhlers","version":"0.1.0","requires_hermes":">=0.20.2","repo":"https://github.com/EikeAhlers/hermes-agent-mission","docs":"https://github.com/EikeAhlers/hermes-agent-mission#readme","tools":["mission_open","mission_snapshot","mission_search","mission_waste"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149600,"prs":[{"n":149600,"state":"open","created":"2026-11-05T16:47:34Z"}],"created":"2026-11-05T16:47:34Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/EikeAhlers/hermes-agent-mission/08b372001a65417c50bdfe0bc66713256b6fd40c/assets/catalog-banner.png","https://raw.githubusercontent.com/EikeAhlers/hermes-agent-mission/efd500f63f208bf77db655f43ca7de99c41e3d13/assets/shot.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/mission.webp"},{"name":"agentpurse","title":"AgentPurse","summary":"Search, quote, and buy from an AgentPurse allowance on the PayPal sandbox. Every purchase waits for Hermes' approval prompt and is sent only after a person approves it; YOLO, approvals off, auto-approve modes, and smart (model) approval cannot spend. A per-chat spend limit and /purse kill sit in front of the clerk.","disclosure":"calls the author's AgentPurse service at agentpurse.vercel.app (POST /mcp and GET /api/spends/:id; the server uses the PayPal sandbox and Channel3 for product data) with AGENTPURSE_API_KEY from Hermes's secret scope, sending quotes, purchase sentences and the task/page excerpt the agent supplies; request_purchase and watch_price each wait for a person to answer Hermes's approval prompt (YOLO, approvals off, smart approval and unattended runs cannot spend), but an approved price watch later lets AgentPurse file the purchase server-side with no second Hermes prompt (/purse kill cancels open watches); a kill switch, quote cache, one-time approval grants and per-chat spent cents live in plugin state; PayPal sandbox money only, and a receipt is not a retailer order.","category":"tools","platforms":[],"maintainer":"maaz-bin-hassan","author":"maaz-bin-hassan","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/maaz-bin-hassan/agentpurse","docs":"https://github.com/maaz-bin-hassan/agentpurse/blob/84a1ed7cc9dbac462a5bde8b65f6d105cc56b20b/plugins/hermes/README.md","tools":["search_merchants","search_products","get_product","check_price","find_alternatives","get_quote","request_purchase","watch_price","list_watches","cancel_watch","get_budget","list_receipts"],"hooks":["pre_tool_call","post_approval_response"],"middleware":[],"env":["AGENTPURSE_API_KEY"],"known_issues":"PayPal sandbox only. A captured payment is not a retailer order.","state":"merged","pr":149599,"prs":[{"n":149599,"state":"merged","created":"2026-11-05T16:46:54Z"}],"created":"2026-11-05T16:46:54Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"africastalking","title":"africastalking","summary":"Africa's Talking platform adapter: talk to Hermes over SMS (two-way) and USSD menus from any phone — feature phones included, no internet and no app required. Hosts a local webhook server for inbound callbacks (optional constant-time ?secret= guard) and sends replies through Africa's Talking's REST API with word-boundary splitting into 160-char parts and a hard cap so agent essays cannot become unbounded SMS bills. Cron delivery via a standalone sender, gateway setup wizard, bundled setup skill, and 53 offline tests. Works fully on the free AT sandbox; production shortcodes are the user's own AT account.","disclosure":"outbound HTTPS to api.africastalking.com only; binds 127.0.0.1:8055 for callbacks (user must tunnel it deliberately); credentials via requires_env/scoped secrets only; phone numbers masked in logs; no telemetry, no self-update, no binaries, stdlib client + core aiohttp.","category":"platform","platforms":[],"maintainer":"geraldkombo","author":"geraldkombo","version":"1.0.0","requires_hermes":">=0.22","repo":"https://github.com/geraldkombo/hermes-africastalking","docs":"https://github.com/geraldkombo/hermes-africastalking#readme","tools":[],"hooks":[],"middleware":[],"env":["AT_USERNAME","AT_API_KEY"],"known_issues":"","state":"open","pr":149592,"prs":[{"n":149592,"state":"open","created":"2026-11-05T16:24:49Z"}],"created":"2026-11-05T16:24:49Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-mark-words","title":"Mark Words","summary":"Underlines the words in Desktop assistant replies that are worth doubting (suspected inventions, unclear or ambiguous usages) and explains them on hover, with zero to two follow-up questions that fill the composer without sending.","disclosure":"the plugin reads finished assistant replies from the Desktop transcript, stores its marks, ignored words and settings in the app's localStorage, and makes no model requests of its own: marks come in-band from the reply itself (directives the bundled reply-word-marks skill teaches the main model to write), and a reply without markers simply gets no marks. No telemetry, no credentials.","category":"desktop","platforms":[],"maintainer":"hey-yx","author":"hey-yx","version":"0.25.0","requires_hermes":">=0.22.0","repo":"https://github.com/hey-yx/hermes-mark-words","docs":"https://github.com/hey-yx/hermes-mark-words#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149589,"prs":[{"n":149589,"state":"closed","created":"2026-11-05T16:11:25Z"}],"created":"2026-11-05T16:11:25Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/hey-yx/hermes-mark-words/477c8bcaf883d02d7ed83e9855db5ffb5fb9592a/assets/cover-en.png","https://raw.githubusercontent.com/hey-yx/hermes-mark-words/477c8bcaf883d02d7ed83e9855db5ffb5fb9592a/assets/chat-popover.png","https://raw.githubusercontent.com/hey-yx/hermes-mark-words/477c8bcaf883d02d7ed83e9855db5ffb5fb9592a/assets/chat-marks.png","https://raw.githubusercontent.com/hey-yx/hermes-mark-words/4057a9778ee2250bd12d3971cb30c1c148ef7f39/assets/chat-marks.png","https://raw.githubusercontent.com/hey-yx/hermes-mark-words/4057a9778ee2250bd12d3971cb30c1c148ef7f39/assets/chat-popover.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-mark-words.webp"},{"name":"scribase","title":"scribase","summary":"Provision a hosted Postgres backend project on Scribase (api.scribase.com) and get back its connection string and API keys.","disclosure":"calling scribase_create_project creates billable Scribase resources (a project and a Postgres environment) in the user's organization without a confirmation prompt, and returns the new environment's Postgres connection URI and anon/service-role/secret API keys into the conversation, where they reach the configured model provider and the session history; network only to api.scribase.com or the user-configured api_base_url, authenticated with SCRIBASE_API_KEY.","category":"tools","platforms":[],"maintainer":"caelum0x","author":"caelum0x","version":"1.0.0","requires_hermes":">=0.20.1","repo":"https://github.com/caelum0x/scribase-hermes-plugin","docs":"https://docs.scribase.com","tools":["scribase_create_project"],"hooks":[],"middleware":[],"env":["SCRIBASE_API_KEY"],"known_issues":"","state":"merged","pr":149583,"prs":[{"n":149583,"state":"merged","created":"2026-11-05T15:56:45Z"},{"n":149690,"state":"open","created":"2026-11-05T20:20:00Z"}],"created":"2026-11-05T15:56:45Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentci","title":"agentci","summary":"Tests for agents: prompt cases run in throwaway workspaces and judged on the real session record (tokens, tools, file hashes), with CI exit codes, baseline diffs and a model matrix.","disclosure":"","category":"tools","platforms":[],"maintainer":"EikeAhlers","author":"EikeAhlers","version":"0.1.0","requires_hermes":">=0.20.2","repo":"https://github.com/EikeAhlers/hermes-agentci","docs":"https://github.com/EikeAhlers/hermes-agentci#readme","tools":["agentci_run","agentci_matrix","agentci_report","agentci_init"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149582,"prs":[{"n":149582,"state":"closed","created":"2026-11-05T15:54:31Z"}],"created":"2026-11-05T15:54:31Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/EikeAhlers/hermes-agentci/28ad6969588c4be4f7daac069f48429c97d656e7/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/agentci.webp"},{"name":"household-tiers","title":"household-tiers","summary":"Per-person tool tiers for one shared Hermes bot, with a family preset for curfew, a parent alert, and a homework note: built-in owner memory (MEMORY.md/USER.md) withheld from non-owner prompts; an external provider block joined after those boxes is removed; a provider block with no built-in box, and compaction's auxiliary summary, are not filtered.","disclosure":"gateway access policy: blocks tool calls per sender tier through pre_tool_call (fail-closed: an unreadable household-tiers.json blocks every tool call and withholds memory from every request, owner included), rewrites non-owner model requests through llm_request middleware to remove the owner's MEMORY.md/USER.md and filter tools (external memory-provider blocks with no built-in box and compaction's auxiliary summary are not filtered), resolves non-owner URL hostnames with the system resolver to refuse local targets, sends a curfew alert through the gateway's own adapter to the chat you set in `notify`, and writes household-tiers.json and a per-person audit log under the active Hermes home; /family tier and /family forget change those files and are owner-only.","category":"platform","platforms":[],"maintainer":"chevlume","author":"chevlume","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/chevlume/household-tiers","docs":null,"tools":[],"hooks":["pre_tool_call","subagent_start","pre_gateway_dispatch","post_gateway_admission"],"middleware":["llm_request"],"env":[],"known_issues":"pytest (108 passed, 0 failed, 0 skipped), plugins validate, and plugins doctor were run on Hermes commit ed1afb082eb3e46cf2edae9d8f68fb67b09ee4df with uv CPython 3.11.18, 3.12.16, 3.13.18, and 3.14.10. uv sync --locked refuses interpreters before 3.14 (lock environment python_full_version >= 3.14); those runs installed that lock's wheels into each interpreter. Tag v0.22.7 (b200f5bc60e31588ba2cb60e288029c4a54ba5fa) was not re-run. requires_hermes stays >=0.22.7. CPython 3.13.18 and 3.14.10 also printed 44 DeprecationWarnings from Hermes plugins_manifest.py.; hermes plugins validate still warns on tools.memory_tool_store.ENTRY_DELIMITER in __init__.py (three sites). That constant is not on a public plugin surface. Memory files are get_hermes_home() / memories, the same path as get_memory_dir(). The plugin does not call MemoryStore._parse_entries. Measurement imports live under tests/ and are not part of plugin load.; With plugins.isolation set to host the plugin host does not forward the per-turn sender, so household-tiers fails closed (everyone is a guest) and the parent alert is skipped. Use isolation in_process for per-person tiers.; Shared sessions (a thread with thread_sessions_per_user false, or a group with group_sessions_per_user false) carry replies to other people. Non-owner tiers are refused there by default (shared_threads refuse) and asked to use a direct message.; If household-tiers.json is unreadable, tool calls are blocked and memory blocks are withheld from every request, including the owner's, and every gateway turn gets a short error reply until the file is fixed.; HTTP redirects onto the local network, and DNS names that change address between check and connect, are not re-validated. A non-owner web tool resolves the hostname once with the system resolver and does not fetch the URL. See the README known issues.; Memory stripping and tool filtering were executed on chat_completions, anthropic_messages, codex_responses, and bedrock_converse payloads from Hermes commit ed1afb08, including multi-paragraph entries joined with §. The strip stops at the memory block; the date line and runtime block stay. A kid message that quotes an entry does not refuse the turn. Gemini conversion was not executed. Relative paths use ctx.session_cwd() and os.path.realpath. Case-folding was tested with a monkeypatched normcase on Linux, not on macOS.; Desktop and TUI turns resolve to guest once the process has served a messaging turn. A turn with no sender is then guest, not the local owner.; The default user tier has no read_file or search_files. A non-owner tier that adds them may only read file_roots (default empty, so no path is allowed). The active profile home, credential directories, and browser profiles are always refused, including a search root that contains them. The named path is realpath'd. search_files also walks the directory and refuses a symlink that leaves file_roots or touches a blocked path. The walk stops and refuses past 20000 entries. A search_files path that contains a comma is checked part by part; with no comma, two or more whitespace-separated pieces are checked as well as the raw string. target is the search mode, not a path, and a missing or blank path is checked as `.`. file_roots does not apply to other tools, such as terminal.; Context compaction's auxiliary summary request does not pass through llm_request, so the summary model still sees owner memory and MEMORY PROVIDER CONTEXT. post_compaction is observer-only. On a later main request, a message recognized as a compaction handoff has built-in entry text of 8 or more characters, and memory-provider-context tags, redacted in that span. A paraphrase is not detected. That auxiliary call was not executed.; An external provider system_prompt_block() joined after the built-in MEMORY.md/USER.md boxes is removed with those boxes. A provider block with no built-in box in the prompt is not located. Pieces of 8 or more characters from MEMORY.md or USER.md are redacted anywhere in an injected system section, including SOUL, AGENTS.md, and skills text when they match.","state":"merged","pr":149578,"prs":[{"n":149578,"state":"merged","created":"2026-11-05T15:52:18Z"}],"created":"2026-11-05T15:52:18Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"certarc","title":"CertArc","summary":"Practise free scenario questions for the CISM, CISSP, CISA, AAISM and AAIA exams in Hermes, with an explanation for every option. No account or keys. Also covers exam outlines and CertArc study guides, and can link to CertArc's free assessment when you finish a set. Bundles the certarc-practice skill. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only.","disclosure":"hosted-only connector with no local code: every tool call goes to certarc.com through its free no-sign-in endpoint (https://certarc.com/mcp/grok), whose tool set is served by the remote server at runtime and is not covered by the pinned sha; the bundled skill's assessment links carry a utm source tag, and the user opens them and signs in themselves.","category":"tools","platforms":[],"maintainer":"CertArc","author":"swaminadhankj","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/CertArc/certarc-mcp","docs":"https://certarc.com/integrations","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Reading your own CertArc study from Hermes is not available yet; free practice works without an account.","state":"merged","pr":149564,"prs":[{"n":149564,"state":"merged","created":"2026-11-05T15:38:04Z"}],"created":"2026-11-05T15:38:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/CertArc/certarc-mcp/bdb74db3ddc7c5d14ecda710e6af077d71f415b2/hermes/assets/banner.png","https://raw.githubusercontent.com/CertArc/certarc-mcp/bdb74db3ddc7c5d14ecda710e6af077d71f415b2/hermes/assets/practice-review.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/certarc.webp"},{"name":"sealed","title":"Sealed","summary":"Secret source that keeps provider credentials in one AES-256-GCM encrypted file instead of plaintext .env: a 32-byte key file unlocks the store at startup and the Hermes secret orchestrator applies the values, so precedence and provenance behave like any other source. Ships `hermes sealed init/set/unset/list/status/rotate`; values are read from a prompt or stdin and are never printed or passed in argv.","disclosure":"no network, no helper CLI, no subprocesses. Reads the configured store and key file only (default $HERMES_HOME/secrets/sealed.{store,key}, both 0600); refuses to load when a file is group/world readable if secrets.sealed.strict_permissions is on. The CLI writes those two paths (plus .bak copies on init --force and rotate); values are entered by prompt or stdin. By default sealed values overwrite .env / shell values for the same variable (secrets.sealed.override_existing). No telemetry, no self-updater, no daemon. Requires the `cryptography` package, declared as a plugin dependency.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"kailashrajh","author":"kailashrajh","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/kailashrajh/hermes-sealed","docs":"https://github.com/kailashrajh/hermes-sealed#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149562,"prs":[{"n":149562,"state":"merged","created":"2026-11-05T15:33:59Z"}],"created":"2026-11-05T15:33:59Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"mdvault","title":"Markdown Vault","summary":"Memory provider that treats a folder of Markdown notes as the agent's long-term store: BM25 retrieval with CJK bigrams over an in-memory index, relevant notes injected before every turn (prefetch), four tools (mdvault_search, mdvault_note, mdvault_recent, mdvault_remember), built-in memory writes mirrored into a human-readable vault note, a `hermes mdvault` CLI and a dashboard config panel. No network, no database, no dependencies; the store is plain .md files the user can edit, git and back up.","disclosure":"reads only the configured vault folder (file symlinks skipped, excluded directories ignored), writes only inside that folder (new notes with O_CREAT|O_EXCL, plus the ownership-marked mirror note), no telemetry, no self-updater, no background process, no subprocesses. The vault itself lives outside $HERMES_HOME, so `hermes backup` does not copy it.","category":"memory","platforms":["linux","macos","windows"],"maintainer":"kailashrajh","author":"kailashrajh","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/kailashrajh/hermes-mdvault","docs":"https://github.com/kailashrajh/hermes-mdvault#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149561,"prs":[{"n":149561,"state":"merged","created":"2026-11-05T15:33:36Z"}],"created":"2026-11-05T15:33:36Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-time-machine","title":"Hermes Time Machine","summary":"The rollback that knows what it can't undo. Incremental, time-bounded checkpoints that the agent itself can preview, restore or fork (atm_* tools, /timemachine); an approval at the point of no return (git push, npm publish, terraform apply and similar) that shows what becomes permanent and the exact compensation command; an effect ledger; and effect memory that reminds the model of pushes it can no longer see after /rollback, /undo, /retry or compaction.","disclosure":"no shell commands, subprocesses, network calls, background processes or credentials; reads workspace files plus .git refs/config and package.json to capture pre-state; writes only under HERMES_HOME/plugin-data/hermes-time-machine, on a rewind the workspace (replaced files go to a trash directory), and on atm_fork a new sibling folder next to the workspace; adds a restore-point note to tool results and effect reminders to the model's context; asks for approval through Hermes before every model-requested restore and before irreversible commands, and never approves or blocks a tool call by itself; refuses filesystem roots, home and system directories.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"ddaikodaiko","author":"ddaikodaiko","version":"0.2.1","requires_hermes":">=0.23.0","repo":"https://github.com/ddaikodaiko/hermes-time-machine","docs":"https://github.com/ddaikodaiko/hermes-time-machine#readme","tools":["atm_checkpoint","atm_rewind","atm_fork","atm_list","atm_effects"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result","pre_llm_call","post_compaction"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149553,"prs":[{"n":149553,"state":"merged","created":"2026-11-05T15:21:34Z"}],"created":"2026-11-05T15:21:34Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":["https://x.com/daik0zz/status/2119454575119737147"],"youtube":[],"thumb":null},{"name":"elevenlabs-convai","title":"ElevenLabs ConvAI Ops","summary":"Operate ElevenLabs ConvAI voice agents from the agent: inspect which LLM is the brain, which TTS model and voice it speaks with, and whether the prompt is date-grounded; change llm / tts / voice with a dry-run diff, a written backup and a one-call rollback; add date-grounding and brevity rules to a prompt (idempotent, restorable); run a real conversation over the ConvAI WebSocket and measure time-to-first-audio per turn with optional WAV/MP3; and pull the authoritative transcript with tool calls and credit cost.","disclosure":"every call goes to api.elevenlabs.io with the account's own key (ELEVENLABS_API_KEY): reads are free of side effects, writes happen only with apply=true and are backed up under $HERMES_HOME first, a conversation test spends real ElevenLabs credits on that account, and the WebSocket test needs the optional 'websockets' package (the other five tools work without it). Backups and opt-in audio are the only local files written; no telemetry, no self-update.","category":"voice","platforms":[],"maintainer":"c6zks4gssn-droid","author":"c6zks4gssn-droid","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/c6zks4gssn-droid/hermes-elevenlabs-convai","docs":"https://github.com/c6zks4gssn-droid/hermes-elevenlabs-convai#readme","tools":["convai_agents_list","convai_agent_inspect","convai_agent_configure","convai_prompt_harden","convai_voice_test","convai_conversation"],"hooks":[],"middleware":[],"env":["ELEVENLABS_API_KEY"],"known_issues":"","state":"open","pr":149550,"prs":[{"n":149550,"state":"open","created":"2026-11-05T15:18:08Z"}],"created":"2026-11-05T15:18:08Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"prompt-autocomplete","title":"Inline Prompt Autocomplete","summary":"Inline sentence completion for the Hermes Desktop prompt composer: the bar above the input finishes the sentence you are already typing, and the legend names the direction it detected — LTR with ArrowRight, RTL with ArrowLeft, Ctrl+Arrow for one word, Tab for the whole line, no toggle to flip. Two things set it apart: bilingual phrases match locally in under a millisecond from an off-main-thread trie, and that trie is trained on your own prompt history (up to 400 recent phrases from the active profile), so completions sound like the way you already write and never leave the machine; only a prefix nothing local can answer falls back to a small model via agent.plugin_llm.PluginLlm (max_tokens=10). The editor DOM is never mutated — the bar renders in COMPOSER_AREAS.top and acceptance commits through host.composer.setDraft.","disclosure":"reads up to 400 recent prompt phrases from the profile's state.db via hermes_state.SessionDB for local matching only, and sends the last 180 characters of the draft line to your configured LLM provider when no local match is found; no telemetry, never reads .env or credentials.","category":"desktop","platforms":[],"maintainer":"bystac","author":"bystac","version":"2.0.1","requires_hermes":">=0.21.0","repo":"https://github.com/bystac/hermes-prompt-autocomplete","docs":"https://github.com/bystac/hermes-prompt-autocomplete#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149549,"prs":[{"n":149549,"state":"open","created":"2026-11-05T15:13:58Z"}],"created":"2026-11-05T15:13:58Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/bystac/hermes-prompt-autocomplete/1421addcfc4bb738baf4eb35f3622a415201c6f6/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/prompt-autocomplete.webp"},{"name":"hermes-output-enhancement","title":"hermes-output-enhancement","summary":"Display-only Markdown styling for Desktop assistant replies — theme-aware headings, emphasis and readable tables. Reply content is never modified.","disclosure":"","category":"desktop","platforms":[],"maintainer":"ANNIPU","author":"annipu","version":"0.1.4","requires_hermes":">=0.22.6","repo":"https://github.com/annipu/hermes-output-enhancement","docs":null,"tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149546,"prs":[{"n":149546,"state":"merged","created":"2026-11-05T15:03:19Z"}],"created":"2026-11-05T15:03:19Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"simcall","title":"SimCall","summary":"Let your agent make real phone calls from your own Android phone and SIM over USB. It listens, talks and presses keypad digits, and when the far side asks something it does not know, it holds and asks you in chat. No Twilio, no cloud voice API, no public server. Speech runs locally: Kokoro and Parakeet on Apple Silicon, Piper and faster-whisper elsewhere.","disclosure":"places real outbound calls on your own phone plan. Transcript text goes to your model, so set a local endpoint to keep it on your network. Setup downloads the D8 compiler from Google Maven and a Piper voice from Hugging Face, each pinned by SHA-256, speech packages into the plugin's own environment (uv and Python 3.11 on Apple Silicon), Kokoro and Parakeet from Hugging Face at pinned revisions (about 2.9 GB), a spaCy model from GitHub, or the unpinned Whisper model off Apple Silicon. It pushes a bridge built from source to the phone's /data/local/tmp over adb. Transcripts are saved locally, newest 200 calls kept. Audio recording is off by default. No telemetry, no self-updater, no credential-file reads. Hermes approval before each new number (hermes -z has no approval step), automated systems only by default, and emergency, N11, short-code and premium numbers are hard-blocked.","category":"voice","platforms":["macos","linux"],"maintainer":"dpvanhoose","author":"dpvanhoose","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/dpvanhoose/hermes-simcall","docs":"https://github.com/dpvanhoose/hermes-simcall#readme","tools":["phone_call","phone_status","phone_answer","phone_hangup"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149544,"prs":[{"n":149544,"state":"closed","created":"2026-11-05T14:59:45Z"}],"created":"2026-11-05T14:59:45Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-persona-stickers","title":"Persona Stickers","summary":"Instant persona-aware emotion reaction stickers for Hermes: stamps pre-baked chibi bases with comic captions in about 13 ms, and falls back to a pure Pillow vector path when the pool misses. Slash command /sticker and tool generate_persona_sticker return MEDIA:<path> PNG/WebP.","disclosure":"writes sticker PNG/WebP files under the active profile at get_hermes_home()/plugin-data/hermes-persona-stickers; no third-party network, no telemetry, no self-update, no shell commands; ships pre-baked RGBA persona assets in-repo.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"EricBlack47","author":"EricBlack47","version":"1.0.1","requires_hermes":">=0.20.0","repo":"https://github.com/EricBlack47/hermes-persona-stickers","docs":"https://github.com/EricBlack47/hermes-persona-stickers#readme","tools":["generate_persona_sticker"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149543,"prs":[{"n":149543,"state":"merged","created":"2026-11-05T14:54:57Z"}],"created":"2026-11-05T14:54:57Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"forgebox","title":"forgebox","summary":"Try-then-commit Git worktree workflow for Hermes Agent. Snapshots dirty repositories and journals tool calls. Best-effort hooks redirect known file paths and command working directories; shell command text is unchanged. This is not an OS sandbox and does not contain shell writes or external side effects. Review and apply changes explicitly with forgebox apply or the dashboard/Desktop panel, or discard the worktree. Requires Git on PATH.","disclosure":"redirects the agent's file-tool paths and terminal working directories into a git worktree under `<repo>/.forgebox/` while a session is active and blocks file-tool paths outside that repo (shell command text is not rewritten, so this is not a sandbox); applying copies the reviewed worktree changes into your real checkout and can create a git commit, which runs your repository's own git hooks.","category":"tools","platforms":["linux","macos"],"maintainer":"nosliwhtes","author":"nosliwhtes","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/nosliwhtes/forgebox","docs":"https://github.com/nosliwhtes/forgebox#readme","tools":[],"hooks":["pre_tool_call","post_tool_call","post_approval_response"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149540,"prs":[{"n":149540,"state":"merged","created":"2026-11-05T14:46:14Z"}],"created":"2026-11-05T14:46:14Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cronforge","title":"cronforge","summary":"Compiles recurring cron jobs into zero-token scripts, but only when real run history proves the job is deterministic; rolls the job back to the agent automatically after repeated script failures.","disclosure":"","category":"automation","platforms":[],"maintainer":"EikeAhlers","author":"EikeAhlers","version":"0.1.0","requires_hermes":">=0.20.2","repo":"https://github.com/EikeAhlers/hermes-cronforge","docs":"https://github.com/EikeAhlers/hermes-cronforge#readme","tools":["cronforge_scan","cronforge_compile","cronforge_activate","cronforge_verify","cronforge_rollback"],"hooks":["post_tool_call","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149534,"prs":[{"n":149534,"state":"closed","created":"2026-11-05T14:30:53Z"}],"created":"2026-11-05T14:30:53Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/EikeAhlers/hermes-cronforge/29c72205d5ff2f6a34877bf5285e3e508f2fdbcf/assets/catalog-banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/cronforge.webp"},{"name":"upstash","title":"Upstash Memory","summary":"Long-term memory and searchable chat history for Hermes on Upstash Redis Search (BM25, no vector database or embeddings). Recalls related memories into each turn, saves every session as a searchable transcript, mirrors the built-in memory tool (adds, corrections and removals), and gives the model upstash_memory_save / upstash_memory_search / upstash_memory_forget and upstash_chat_search. Memories use the same keys as @upstash/agentkit-sdk, so they are shared with AgentKit apps on the same database. Works on the Upstash Free plan (one search index).","disclosure":"memories and full chat transcripts are written to the Upstash Redis database you configure (UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN) and sent to it over HTTPS on every turn; nothing else is contacted. Telemetry is opt-in and off by default: UPSTASH_HERMES_TELEMETRY=1 adds SDK, Python version and platform tags to request headers sent to that same database.","category":"memory","platforms":[],"maintainer":"Upstash","author":"CahidArda","version":"0.2.2","requires_hermes":">=0.19","repo":"https://github.com/upstash/agentkit","docs":"https://github.com/upstash/agentkit/tree/main/python/hermes-memory#readme","tools":["upstash_memory_save","upstash_memory_search","upstash_memory_forget","upstash_chat_search"],"hooks":[],"middleware":[],"env":["UPSTASH_REDIS_REST_URL","UPSTASH_REDIS_REST_TOKEN"],"known_issues":"","state":"merged","pr":149529,"prs":[{"n":149529,"state":"merged","created":"2026-11-05T14:22:21Z"}],"created":"2026-11-05T14:22:21Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-body","title":"hermes-body","summary":"Hermes Body turns a phone into a first-class Hermes channel: a private camera-and-voice page streams frames and speech transcripts into the gateway, and the full agent answers out loud and can act with any tool.","disclosure":"the plugin runs a local HTTP/WebSocket server (default 127.0.0.1:8788, token-gated) that serves the phone page and receives camera frames, speech transcripts and recorded voice clips; it stores the pairing token (0600) and the newest 50 received frames and voice clips in the plugin data directory; frames reach the configured model provider the same way any photo attachment does, and voice clips go through Hermes' configured speech-to-text like any voice note; it opens no outbound connections of its own and sends no telemetry; the page must be served over HTTPS (Tailscale Serve or another proxy) for browser camera and microphone access.","category":"platform","platforms":[],"maintainer":"Itsmetibo","author":"Itsmetibo","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/Itsmetibo/hermes-body","docs":"https://github.com/Itsmetibo/hermes-body#readme","tools":["body_status","body_speak"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149525,"prs":[{"n":149525,"state":"merged","created":"2026-11-05T14:15:04Z"}],"created":"2026-11-05T14:15:04Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lemma","title":"Lemma — Audit What Agents Read","summary":"An AI-scientist plugin that audits what your agent reads. Paste or mention a paper link and the ambient pre-LLM hook offers an audit unprompted; six tools (quick_audit, audit, doctor, status, judge, improve) extract testable claims, generate and run honest audit scripts behind a mandatory positive control, and render verdicts — supported, falsified, inconclusive — over an append-only evidence trail. The Desktop Audit Room pane shows live runs (stage, attempts, trace tail) and self-distrust flags (verify_gain) when a post-feedback flip to supported needs eyeballing. Everything stays local under plugin_data_dir.","disclosure":"paper text and audit prompts go to your configured LLM provider (Anthropic, or any OpenAI-compatible endpoint you set via OPENAI_BASE_URL); papers are fetched from arxiv.org, export.arxiv.org and openreview.net; LLM-written audit scripts run inside a sandbox (bubblewrap on Linux, sandbox-exec on macOS: no network, workdir-only writes, minimal env) and are refused where no sandbox exists unless you turn on the plugin's `host_exec` setting, which runs them on the host without isolation; `lemma_audit` and `lemma_improve` run as detached background processes; a pre-LLM hook adds an \"offer an audit\" hint when a paper link appears in the conversation; all artifacts stay under the plugin data directory.","category":"tools","platforms":[],"maintainer":"udirobert","author":"udirobert","version":"0.3.0","requires_hermes":"","repo":"https://github.com/udirobert/lemma","docs":"https://github.com/udirobert/lemma/tree/main/hermes-plugin","tools":["lemma_quick_audit","lemma_audit","lemma_doctor","lemma_status","lemma_judge","lemma_improve"],"hooks":["pre_llm_call"],"middleware":[],"env":["ANTHROPIC_API_KEY"],"known_issues":"","state":"merged","pr":149514,"prs":[{"n":149514,"state":"merged","created":"2026-11-05T13:55:46Z"}],"created":"2026-11-05T13:55:46Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"belive-aihub","title":"belive-aihub","summary":"BeLive AI Hub inference provider with live tool-capable chat model discovery.","disclosure":"","category":"models","platforms":[],"maintainer":"belivetech","author":"hassanabidpk","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/belivetech/hermes-belive-aihub","docs":"https://github.com/belivetech/hermes-belive-aihub#readme","tools":[],"hooks":[],"middleware":[],"env":["BELIVE_TOKENHUB_API_KEY"],"known_issues":"","state":"merged","pr":149509,"prs":[{"n":149509,"state":"closed","created":"2026-11-05T13:41:14Z"}],"created":"2026-11-05T13:41:14Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"apple-health-mcp","title":"Apple Health","summary":"Read the user's Apple Health export (workouts, steps, heart rate, HRV, sleep, cycle tracking) through the local apple-health MCP server. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"Runs the `apple-health-mcp-unofficial@0.8.0` npm package locally over stdio through `npx` (Node.js 20+ required); the package and its dependencies are downloaded from npm on first start. Data source: no network service: it parses the user's own Apple Health export on disk (the connector's `setup --auto-import` looks for exports in ~/Downloads, ~/Desktop and ~/Documents and copies them under `~/.apple-health-mcp/`). It also keeps a wellness profile shared with the author's other connectors at `~/.delx-wellness/profile.json`, and its connection-status tool reads `~/.hermes/config.yaml` to check for an MCP block. Tools that change state: apple_health_profile_update (local profile only); apple_health_reimport (re-reads the local export); apple_health_clear_incremental_cache (clears the local parsed cache). No live sync: data is as fresh as the last export the user imported. The tool set comes from the pinned npm version, not from this repository's source tree.","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"0.8.0","requires_hermes":">=0.21.5","repo":"https://github.com/davidmosiah/apple-health-mcp","docs":"https://github.com/davidmosiah/apple-health-mcp/blob/94c31b8545e0d82a2d2e0eb1cb43da0e470b6d1f/agent-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149507,"prs":[{"n":149507,"state":"merged","created":"2026-11-05T13:38:21Z"}],"created":"2026-11-05T13:38:21Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/davidmosiah/apple-health-mcp/94c31b8545e0d82a2d2e0eb1cb43da0e470b6d1f/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/apple-health-mcp.webp"},{"name":"elcaro","title":"Elcaro","summary":"Runtime prompt-injection defense and tamper-evident flight recorder. Every tool result is scanned before it reaches the model by a deterministic detector taxonomy (sub-10 ms, fully local, vendored — no network by default); quarantined content is replaced in place with a signed [CONTENT QUARANTINED] notice via transform_tool_result, and tool-call arguments (write_file, terminal, memory) are scanned for smuggled payloads via pre_tool_call. Beyond content, a kernel gate: a quarantine taints the session, and while tainted credential-path reads/writes and instruction-file writes are refused, network egress and outside-workspace writes escalate to the approval gate — tool_call, execute_code and process_manage are evaluated as the action they really make, and taint propagates into subagents via subagent_start. A canary-baited decoy credentials file (ELCARO-DECOY-* marker) forces a deterministic 1.0 quarantine on exfiltration; canary provenance edges record an injection propagating between scans; every verdict lands in a hash-chained, Ed25519-signed threat log with a Desktop pane (chain-verified badge, honeypot status, propagation rows, signed-receipts drawer), a /elcaro slash command (status / calibrate / verify / explain), and a `hermes elcaro` CLI. Two on-demand tools close the loop input scanning can't: elcaro_lint_response flags concealed-compromise artifacts in agent output (canary echoes, text-channel tool calls, tracking pixels, secrets — caught 148/152 compromised transcripts in the public 24-task IPI benchmark), and elcaro_harden_prompt returns a hardened system prompt plus a gullibility score. Engine validated on that benchmark: 22/22 attack tasks flagged (regression coverage, not held-out proof).","disclosure":"scanning is fully local by default: the vendored engine's env-driven LLM second passes (api.openai.com, inference-api.openserv.ai and others) and its Postgres canary registry are built disabled; scanned tool-result text leaves the machine only when the user sets the optional `api_url` hosted lane, which POSTs it there with the optional `ELCARO_API_KEY`; the optional `ELCARO_SIGNING_KEY` is read from the profile secret store; it writes only to its plugin data dir (threat-log.jsonl, decoy-marker.txt, and a bait service-credentials.env decoy it never reads); a quarantine taints the session so credential-path and instruction-file writes are refused and network/outside-workspace actions escalate to Hermes approval (nothing auto-approves); Python deps pydantic, cryptography, httpx; no core overrides.","category":"general","platforms":["windows","macos","linux"],"maintainer":"udirobert","author":"udirobert","version":"1.1.0","requires_hermes":">=0.22","repo":"https://github.com/udirobert/elcaro","docs":"https://github.com/udirobert/elcaro/tree/main/hermes-plugin","tools":["elcaro_scan","elcaro_quick_scan","elcaro_explain","elcaro_lint_response","elcaro_harden_prompt"],"hooks":["transform_tool_result","pre_tool_call","pre_llm_call","subagent_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149503,"prs":[{"n":149503,"state":"merged","created":"2026-11-05T13:36:32Z"}],"created":"2026-11-05T13:36:32Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/01-architecture-overview.png","https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/02-scanner-calibrate.png","https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/03-enforcement-decoy-honeypot.png","https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/04-flight-recorder-verify.png","https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/05-response-lint.png","https://raw.githubusercontent.com/udirobert/elcaro/a1bcb95cec626497d9e4b60ab8b6ec83e94143a5/hermes-plugin/screenshots/06-prompt-armor.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/elcaro.webp"},{"name":"flightlog","title":"Flightlog","summary":"Flight recorder for Hermes. Records every tool call, model call, subagent and approval to local SQLite and flags runs that finish green but went wrong: tool errors the answer hides, loops, token spikes and effort collapse against each cron job's own baseline, failed subagents behind a \"done\", and \"tests pass\" claims with no passing check after the last edit. Flagged runs get a short incident report, a footer on the reply, per-step timelines in the CLI, dashboard tab and desktop page, and an opt-in loop tripwire that hands the 5th repeat to Hermes's own approval prompt.","disclosure":"local only: no network calls, subprocesses or background services beyond one in-process SQLite writer thread; stores short redacted previews of every tool call's arguments and result in $HERMES_HOME/flightlog/flightlog.db (pruned after 30 days); flagged runs' redacted evidence goes to your configured model via ctx.llm for the incident report; appends a footer to agent replies when a run is flagged, and by default (break_silence) makes a flagged [SILENT] cron job post that note instead of staying silent; the opt-in loop tripwire registers a pre_tool_call hook that sends the 5th identical call to Hermes's approval prompt.","category":"tools","platforms":[],"maintainer":"Piyush Pradhan","author":"piyushpradhan","version":"0.1.0","requires_hermes":">=0.21","repo":"https://github.com/piyushpradhan/flightlog","docs":"https://github.com/piyushpradhan/flightlog/tree/c201d602219f6890c380954c1229692e6bfc3f44#readme","tools":[],"hooks":["on_session_start","post_tool_call","post_api_request","api_request_error","subagent_start","subagent_stop","pre_approval_request","post_approval_response","transform_llm_output","on_session_end","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149499,"prs":[{"n":149499,"state":"merged","created":"2026-11-05T13:32:24Z"}],"created":"2026-11-05T13:32:24Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/piyushpradhan/flightlog/c201d602219f6890c380954c1229692e6bfc3f44/docs/screenshots/flagged-run.png","https://raw.githubusercontent.com/piyushpradhan/flightlog/c201d602219f6890c380954c1229692e6bfc3f44/docs/screenshots/failed-helpers.png","https://raw.githubusercontent.com/piyushpradhan/flightlog/c201d602219f6890c380954c1229692e6bfc3f44/docs/screenshots/healthy-run.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/flightlog.webp"},{"name":"delegation-scout","title":"delegation-scout","summary":"Delegation backend that routes each subagent by task shape and learns from recorded per-route outcomes — a delegation backend `scout` with auto/quick/deep task params, a post_tool_call outcome observer, and a scout_stats tool.","disclosure":"","category":"automation","platforms":[],"maintainer":"vdimarco","author":"vdimarco","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/vdimarco/hermes-delegation-scout","docs":null,"tools":["scout_stats"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149491,"prs":[{"n":149491,"state":"merged","created":"2026-11-05T13:13:27Z"}],"created":"2026-11-05T13:13:27Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"screenpipe","title":"screenpipe","summary":"Ambient retro-recall from the user's local Screenpipe screen+audio corpus — fail-silent pre-turn context injection, search/timeline/status tools, /recall.","disclosure":"auto-recall is on by default: before a turn it searches your local Screenpipe server (http://localhost:3030 unless you change `api_url`) and adds up to 600 characters of matching OCR'd screen text and audio transcripts to the prompt, so captured screen and audio content is sent to your model provider; the search and timeline tools return more of it on request. Set `enabled: false` in the plugin config to keep only the tools and `/recall`.","category":"memory","platforms":[],"maintainer":"vdimarco","author":"vdimarco","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/vdimarco/hermes-screenpipe","docs":null,"tools":["screenpipe_search","screenpipe_around","screenpipe_status"],"hooks":["pre_llm_call"],"middleware":[],"env":["SCREENPIPE_API_KEY"],"known_issues":"","state":"merged","pr":149490,"prs":[{"n":149490,"state":"merged","created":"2026-11-05T13:12:33Z"}],"created":"2026-11-05T13:12:33Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"wheelspin","title":"WheelSpin","summary":"Spin a real wheel: any list becomes a weighted, animated Desktop wheel that lands on an answer in chat, with hidden jackpots and a slot-machine reveal.","disclosure":"by default each Desktop spin posts \"The wheel says: <winner>\" into the active chat as a user message, which starts a model turn (toggle in the pane); stores wheels and spin history in plugin-data/wheelspin/.","category":"desktop","platforms":[],"maintainer":"mchevatheachiever","author":"mchevatheachiever","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/mchevatheachiever/hermes-wheelspin","docs":null,"tools":["wheelspin_load","wheelspin_spin","wheelspin_list","wheelspin_delete"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149484,"prs":[{"n":149484,"state":"merged","created":"2026-11-05T12:53:26Z"}],"created":"2026-11-05T12:53:26Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":["https://raw.githubusercontent.com/mchevatheachiever/hermes-wheelspin/1fab67dbea9900ee78af05b0e6bd80ac1bdc5e64/demo/wheelspin-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"contract-hunter","title":"contract-hunter","summary":"Scout-powered EVM contract vulnerability hunter. Radar → surface → prove → report pipeline for bounty programs.","disclosure":"wraps the separately installed scout CLI (github.com/NathanOyewole/scout, installed at commit e2889e0), which contacts Immunefi, Sourcify, DexScreener and block explorers, and whose prove step runs forge tests on a local fork of a public RPC (SCOUT_RPC overrides; never broadcasts); /hunt serve starts a detached scout dashboard on 127.0.0.1 behind a random token that keeps running until the user stops it; an optional session-start Immunefi pull is off by default (auto_pull_immunefi); scout runs with only PATH, HOME, USER and SCOUT_RPC from the environment.","category":"tools","platforms":[],"maintainer":"NathanOyewole","author":"NathanOyewole","version":"1.3.0","requires_hermes":">=0.21.7","repo":"https://github.com/NathanOyewole/hermes-contract-hunter","docs":null,"tools":["scout_radar","scout_surface","scout_prove","scout_report","scout_status"],"hooks":["on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149478,"prs":[{"n":149478,"state":"merged","created":"2026-11-05T12:40:45Z"}],"created":"2026-11-05T12:40:45Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"changefreeze","title":"changefreeze","summary":"An AI helper can ship code at a bad time and break something that is live. ChangeFreeze lets you set a quiet window. During that window, Hermes asks you before it ships. Everyday work still runs. When the window ends, shipping continues again. Local only — no off-machine data.","disclosure":"","category":"tools","platforms":[],"maintainer":"arults","author":"arults","version":"0.1.0","requires_hermes":"","repo":"https://github.com/arults/hermes-changefreeze","docs":"https://github.com/arults/hermes-changefreeze","tools":["changefreeze_set","changefreeze_status","changefreeze_ledger","changefreeze_allow_once","changefreeze_patterns"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149474,"prs":[{"n":149474,"state":"open","created":"2026-11-05T12:33:06Z"}],"created":"2026-11-05T12:33:06Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":["https://github.com/arults/hermes-changefreeze/releases/download/v0.1.0-demo/changefreeze-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"fitbit-mcp","title":"Fitbit","summary":"Read the user's Fitbit activity, heart rate, sleep and body data through the local fitbit MCP server. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"Unofficial connector, not affiliated with Fitbit. Runs the `fitbit-mcp-unofficial@0.7.0` npm package locally over stdio through `npx` (Node.js 20+ required); the package and its dependencies are downloaded from npm on first start. Data source: the official Fitbit Web API. The user creates their own Fitbit developer app; its client ID and secret and the OAuth tokens are created by the connector's own `setup`/`auth` commands in the user's terminal, stored under `~/.fitbit-mcp/` and refreshed by the connector itself, and sent only to Fitbit's API; the plugin declares no environment variables and reads no Hermes credentials. It also keeps a wellness profile shared with the author's other connectors at `~/.delx-wellness/profile.json` (first run copies an existing `~/.hermes/profiles/delx-wellness/wellness-profile.json` there), and its connection-status tool reads `~/.hermes/config.yaml` to check for an MCP block. Tools that change state: fitbit_profile_update (local profile only); fitbit_exchange_code (stores OAuth tokens locally); fitbit_revoke_access (revokes the Fitbit grant and deletes local tokens). The tool set comes from the pinned npm version, not from this repository's source tree.","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"0.7.0","requires_hermes":">=0.21.5","repo":"https://github.com/davidmosiah/fitbit-mcp","docs":"https://github.com/davidmosiah/fitbit-mcp/blob/c669895c6c96ded8c35978c7461c02dbed7fa0fc/agent-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149469,"prs":[{"n":149469,"state":"merged","created":"2026-11-05T12:19:47Z"}],"created":"2026-11-05T12:19:47Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/davidmosiah/fitbit-mcp/c669895c6c96ded8c35978c7461c02dbed7fa0fc/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/fitbit-mcp.webp"},{"name":"oura-mcp","title":"Oura","summary":"Read the user's Oura Ring readiness, sleep, HRV and activity through the local oura MCP server. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"Unofficial connector, not affiliated with Oura. Runs the `oura-mcp-unofficial@0.8.0` npm package locally over stdio through `npx` (Node.js 20+ required); the package and its dependencies are downloaded from npm on first start. Data source: the official Oura Cloud API v2. The user creates their own Oura developer app; its client ID and secret and the OAuth tokens are created by the connector's own `setup`/`auth` commands in the user's terminal, stored under `~/.oura-mcp/` and refreshed by the connector itself, and sent only to Oura's API; the plugin declares no environment variables and reads no Hermes credentials. It also keeps a wellness profile shared with the author's other connectors at `~/.delx-wellness/profile.json` (first run copies an existing `~/.hermes/profiles/delx-wellness/wellness-profile.json` there), and its connection-status tool reads `~/.hermes/config.yaml` to check for an MCP block. Tools that change state: oura_profile_update (local profile only); oura_exchange_code (stores OAuth tokens locally); oura_revoke_access (revokes the Oura grant and deletes local tokens). The tool set comes from the pinned npm version, not from this repository's source tree.","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"0.8.0","requires_hermes":">=0.21.5","repo":"https://github.com/davidmosiah/oura-mcp","docs":"https://github.com/davidmosiah/oura-mcp/blob/0f73130546ddfc0f9714f9fe1ea06578b6564ac1/agent-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149468,"prs":[{"n":149468,"state":"merged","created":"2026-11-05T12:19:37Z"}],"created":"2026-11-05T12:19:37Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/davidmosiah/oura-mcp/0f73130546ddfc0f9714f9fe1ea06578b6564ac1/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/oura-mcp.webp"},{"name":"asin-hhc-proof-of-pay","title":"asin-hhc-proof-of-pay","summary":"ASIN-HHC Proof of Pay: third-party verification for agent work — validate asin-hhc:receipt evidence receipts against the published schema, verify artifacts against a hash-chained public provenance index, and read the live HHC work-market board (open bounties, settlements with splits). Read-only.","disclosure":"fetches the ASIN-HHC provenance index and live board snapshot over https from the configured base_url (default dbottrader.github.io, the author's GitHub Pages site), and fetches a receipt from a model-supplied receipt_url only when it is an https URL whose host resolves to public addresses only; read-only, no keys.","category":"tools","platforms":[],"maintainer":"dbottrader","author":"dbottrader","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/dbottrader/asin-hhc-proof-of-pay","docs":null,"tools":["asin_hhc_verify_receipt","asin_hhc_check_provenance","asin_hhc_board"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149464,"prs":[{"n":149464,"state":"merged","created":"2026-11-05T12:16:01Z"}],"created":"2026-11-05T12:16:01Z","late":false,"said":true,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"peripheral","title":"peripheral","summary":"A memory of what the user has seen on screen. Peripheral captures the display itself on request, optionally on change in the background, and indexes the screenshots the OS already writes — read locally with Tesseract, deduplicated (SHA-256 plus a 64-bit dHash change gate) and stored in SQLite/FTS5 with the time they appeared. The agent gets six tools: screen_capture (photograph the screen now and get it back), screen_recall (ranked search over the words that were on screen, with since/until windows and a prefix fallback for OCR noise), screen_timeline (what was on screen over a period, interleaved with the agent's own tool calls on one clock), screen_show (one screen's full text plus the image itself, attached to the result when the active model accepts images), screen_index, and screen_forget (delete rows, thumbnails and captured frames on request). Ships a /peripheral command (status, capture, watch on/off, scan, search, open, forget, pause, resume) and a bundled skill that teaches when screen memory beats asking the user to re-send a screenshot. Works without Tesseract: frames are still captured and can be looked at, and the plugin says text search is unavailable rather than pretending. Incremental and rate-limited: only changed files are re-read, each scan OCRs a capped batch, background capture stores changed frames only under an hourly ceiling (that bounds the rate, not the total size: retention_days is off by default), and every failure (no capture binary, no Tesseract, unreadable image, locked database) is logged and skipped rather than raised.","disclosure":"reads image files under the configured watch_dirs and captures the display when the agent calls its screen_capture tool — the model may choose to do so, and every call is visible in the session and recorded in the event log — or when the user enables capture_enabled; writes one SQLite database, WebP thumbnails and captured frames under the profile's plugin-data/peripheral/; runs the local tesseract binary and a local capture binary (ffmpeg x11grab, grim, screencapture, PowerShell, import, scrot or maim) as subprocesses with timeouts; makes no network calls and has no telemetry; redacts API keys, JWTs, bearer headers, private keys, card numbers and credentials inside connection URLs from stored text and stored tool-event details before writing (on by default); 'forget' deletes the row, the thumbnail and any frame the plugin captured, and never modifies or deletes the user's own files.","category":"tools","platforms":[],"maintainer":"okyssta","author":"okyssta","version":"2.1.2","requires_hermes":">=0.22.0","repo":"https://github.com/okyssta/hermes-peripheral","docs":"https://github.com/okyssta/hermes-peripheral#readme","tools":["screen_recall","screen_timeline","screen_show","screen_index","screen_capture","screen_forget"],"hooks":["post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149463,"prs":[{"n":149463,"state":"open","created":"2026-11-05T12:15:42Z"}],"created":"2026-11-05T12:15:42Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"delx-recovery","title":"Delx Recovery","summary":"Free recovery and continuity for agents through the hosted Delx Protocol MCP server (Streamable HTTP, no API key, no OAuth, no payment), with the delx-recovery-first-hour workflow skill bundled: triage an error loop or lost context, resume a prior session, capture state and context memory, seal a Continuity Capsule (goal/done/next/blockers/refuted) before compaction so the next session resumes warm, and turn failures into a recovery plan. Portable Agent Plugins v1 package (mcp.json + skills/); Hermes runs no code from it.","disclosure":"hosted-only connector: every tool call, including the free-text problem description sent by public triage, goes to the remote server at api.delx.ai. Public triage needs no credential; private continuity uses a free agent credential returned at registration and passed as a tool argument. What the agent chooses to store (state, memory, capsules) is retained by Delx under its privacy policy, so do not send secrets. Requests carry ?src=plugin for channel attribution. The tool set is served by the remote server at runtime and is not covered by the pinned sha. The hooks/ shell scripts in the directory are opt-in Claude Code hooks that Hermes does not load.","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"1.2.0","requires_hermes":">=0.21.5","repo":"https://github.com/davidmosiah/delx-plugins","docs":"https://github.com/davidmosiah/delx-plugins/blob/c1d4be02df59f05fe65a27000d0b06b28c9733c2/delx-recovery/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":149462,"prs":[{"n":149462,"state":"closed","created":"2026-11-05T12:15:14Z"}],"created":"2026-11-05T12:15:14Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/davidmosiah/delx-plugins/c1d4be02df59f05fe65a27000d0b06b28c9733c2/assets/icon-light-256.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/delx-recovery.webp"},{"name":"whoop-mcp","title":"WHOOP","summary":"Read the user's WHOOP recovery, HRV, sleep and strain through the local whoop MCP server. Portable Agent Plugins v1 package (mcp.json + skills/).","disclosure":"Unofficial connector, not affiliated with WHOOP. Runs the `whoop-mcp-unofficial@0.7.0` npm package locally over stdio through `npx` (Node.js 20+ required); the package and its dependencies are downloaded from npm on first start. Data source: the official WHOOP OAuth API (v2). The user creates their own WHOOP developer app; its client ID and secret and the OAuth tokens are created by the connector's own `setup`/`auth` commands in the user's terminal, stored under `~/.whoop-mcp/` and refreshed by the connector itself, and sent only to WHOOP's API; the plugin declares no environment variables and reads no Hermes credentials. It also keeps a wellness profile shared with the author's other connectors at `~/.delx-wellness/profile.json` (first run copies an existing `~/.hermes/profiles/delx-wellness/wellness-profile.json` there), and its connection-status tool reads `~/.hermes/config.yaml` to check for an MCP block. Tools that change state: whoop_profile_update (local profile only); whoop_exchange_code (stores OAuth tokens locally); whoop_revoke_access (revokes the WHOOP grant and deletes local tokens). The tool set comes from the pinned npm version, not from this repository's source tree.","category":"tools","platforms":[],"maintainer":"davidmosiah","author":"davidmosiah","version":"0.7.0","requires_hermes":">=0.21.5","repo":"https://github.com/davidmosiah/whoop-mcp","docs":"https://github.com/davidmosiah/whoop-mcp/blob/d15516fa2671e9749d43531fe0f1f447d5632686/agent-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149460,"prs":[{"n":149460,"state":"merged","created":"2026-11-05T12:14:56Z"}],"created":"2026-11-05T12:14:56Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/davidmosiah/whoop-mcp/d15516fa2671e9749d43531fe0f1f447d5632686/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/whoop-mcp.webp"},{"name":"glorya","title":"Glorya","summary":"Ask Hermes for an ad and get the finished file back in your chat. Glorya makes on-brand image ads, video ads, landing pages and websites, and launches ad campaigns on Meta, Google Ads and TikTok. The plugin follows each job in the background: one progress message that updates, Glorya's questions asked in the chat (answer in words or with /glorya answer buttons), and the finished videos and images sent back as attachments. Also /glorya commands that run without the model, weekly image and video ad blueprints, and a Glorya Studio tab in Hermes Desktop.","disclosure":"needs a Glorya account with an active plan and uses its credits; campaigns spend real money from your ad account, so a pre_tool_call hook sends every create_campaign and publish_site call through Hermes' approval prompt (rule keys glorya:campaign and glorya:publish), and /glorya campaign and /glorya publish ask before they act. Tool calls go to platform.glorya.ai through Hermes' own MCP client (mcp_servers.glorya, auth: oauth; Hermes holds the token and signing in runs Hermes' manage_connections flow), and the plugin calls that server with ctx.call_mcp (mcp_allowlist). Finished files are downloaded over https from the links Glorya returns into plugin-data/glorya, which also stores job ids, titles and chat session keys (pruned after 30 days). With allow_gateway_injection it starts one agent turn per finished job to attach the files. One background thread per followed job, at most 8. hermes glorya setup runs only hermes plugins enable and hermes config set, each after a yes. Reads gateway.session_context.get_session_env and tools.mcp_tool_discovery.mcp_servers_not_connected. No telemetry.","category":"tools","platforms":[],"maintainer":"Glorya","author":"aadilghani1","version":"0.1.1","requires_hermes":">=0.22.5","repo":"https://github.com/Glorya-AI/hermes-plugin","docs":"https://github.com/Glorya-AI/hermes-plugin#readme","tools":["glorya_attach","glorya_jobs"],"hooks":["pre_tool_call","transform_tool_result","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149443,"prs":[{"n":149443,"state":"merged","created":"2026-11-05T11:13:55Z"}],"created":"2026-11-05T11:13:55Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/Glorya-AI/hermes-plugin/e6ffa2bb4e6180686ebf276ff5b9744c029842f8/assets/glorya-hermes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/glorya.webp"},{"name":"visor","title":"Visor","summary":"Live holographic canvas for AI agents: the visor_push tool pushes visual blocks — sections, markdown findings, clickable todos, tables, KPI stats, charts, code, images, audio and video — to an infinite-canvas webpage that updates in place over SSE (the page is never rewritten), so agents SHOW work instead of dumping it in chat. Turnkey: the plugin ships its own server, no separate install.","disclosure":"on first use, if nothing is listening on localhost:8900, the plugin auto-starts the server: bare-python subprocess of the bundled server.py by default (state in ~/.local/share/visor, override VISOR_DATA), or `docker compose up -d` when VISOR_DOCKER=1. v1.9 security defaults: listens on 127.0.0.1:8900 by default (VISOR_PORT to change; VISOR_HOST opts in to a non-loopback bind, refused at startup unless an explicit VISOR_TOKEN is set); a per-install token is auto-generated on first start (0600, <state>/visor-token) and /api/* and /media/ are always token-gated — the web UI gets the token injected by the server, so opening the page is all the user does; no env reads beyond VISOR_*/HOLO_PORT, no credentials, no reads outside the plugin tree except its own state dir; long-running background process (the server), re-started if unreachable. The bundled server boots with the live and chat modules enabled by default (VISOR_MODULES to override): live polls user-pushed URLs on a bounded 2s tick (http(s) only, 10s timeout, 1MB cap, optional VISOR_LIVE_LOCAL_HOSTS host allowlist); chat bridges card sends to a configured Hermes webhook (VISOR_CHAT_URL + VISOR_CHAT_SECRET) and is inert — a hint line — until those are set. Raw-html blocks render in a sandboxed iframe with a small postMessage bridge. VISOR_HOME points the plugin at a visor repo dev checkout (legacy layout; not needed for catalog installs).","category":"tools","platforms":[],"maintainer":"samundra0","author":"samundra0","version":"1.9.0","requires_hermes":">=0.21.5","repo":"https://github.com/samundra0/visor","docs":"https://github.com/samundra0/visor","tools":["visor_push"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149442,"prs":[{"n":149442,"state":"open","created":"2026-11-05T11:12:24Z"}],"created":"2026-11-05T11:12:24Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/samundra0/visor/17a8ba5f24030e8a04f6676168f7f594f46db53c/docs/screenshots/visor-demo-board.png","https://raw.githubusercontent.com/samundra0/visor/17a8ba5f24030e8a04f6676168f7f594f46db53c/docs/screenshots/visor-canvas-ui.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/visor.webp"},{"name":"nurse","title":"Hermes Nurse","summary":"Supervisor-aware service management for a Hermes host. Reads pm2 and systemd into one table, triages a failing service's own logs into a ranked diagnosis (OOM via SIGKILL/exit 137, port already in use, missing env var, crash loop measured as restarts per hour rather than uptime, bad exit code, dependency unreachable), and repairs it through one guarded surface.","disclosure":"service_repair changes supervisor state: it restarts, starts, stops, reloads or resets a named pm2 process, or restarts, starts, stops or reset-fails a systemd user unit, behind an allowlist of verbs, a confirm plan-then-act step, a persisted per-service cooldown ledger, a refusal to restart a service already crash-looping, and a pre_tool_call hook that escalates every state-changing call to Hermes' own human-approval prompt. It shells out to `pm2` and `systemctl`/`journalctl` as the invoking user, so it can only act on services that user already controls; it reads their log files (including pm2's rotated siblings) and writes a small JSON snapshot and cooldown ledger under plugin-data/nurse. No network I/O, no credentials, no elevated privileges.","category":"tools","platforms":["linux"],"maintainer":"Megumiiiiii","author":"Megumiiiiii","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Megumiiiiii/hermes-nurse","docs":"https://github.com/Megumiiiiii/hermes-nurse#readme","tools":["service_list","service_triage","service_repair"],"hooks":["on_session_start","pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149438,"prs":[{"n":149438,"state":"merged","created":"2026-11-05T11:02:58Z"}],"created":"2026-11-05T11:02:58Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"remoet","title":"Remoet","summary":"Tech job search: search the public board of open tech roles, find companies by the stack they hire for, star the ones that fit and pull new roles from your shortlist, through Remoet's hosted MCP server (Streamable HTTP; OAuth 2.1 with dynamic client registration and PKCE). Portable Agent Plugins v1 package (plugin.json + mcp.json).","disclosure":"hosted-only connector with no local code; every tool call goes to Remoet's MCP server at api.remoet.dev with the search terms and the profile, job and application details the user asks for, which also reach the user's model provider through the session. search_jobs, search_listings and get_listing work without an account. Write tools change the user's Remoet account, and apply_to_job submits an application to an employer; profiles and saved work, project and education entries are public. The package marks the server untrusted, so write tools ask first, but the sign-in step (`hermes mcp add remoet`) writes a config.yaml entry that replaces the package's own, trust included, unless the user adds `trust: untrusted` to it. Hermes stores and refreshes the OAuth tokens. The tool list comes from Remoet's server at run time, so the pinned commit doesn't cover it.","category":"tools","platforms":[],"maintainer":"Remoet","author":"ugglr","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/remoet-labs/agent-skills","docs":"https://github.com/remoet-labs/agent-skills/blob/3e153fdadc552265f6281d80c319e7e959287bfb/hermes-plugin/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Sign in once for the personal tools: hermes mcp add remoet --url https://api.remoet.dev/mcp/oauth --auth oauth --connect-timeout 300, then add `trust: untrusted` under `mcp_servers.remoet` in config.yaml to keep the approval prompt","state":"merged","pr":149433,"prs":[{"n":149433,"state":"merged","created":"2026-11-05T10:51:28Z"}],"created":"2026-11-05T10:51:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"cron-consolidator","title":"Cron Consolidator","summary":"A read-only plan for tidying a crowded cron list: groups jobs whose prompts are near-duplicates or that share skills and destination or run the same script (candidates to become one job), lists clock-time jobs that fire in the same minute, jobs on a failure streak and deliveries never confirmed, and estimates the prompt tokens a merge could save from usage_audit.jsonl. Deterministic (difflib, no model call); nothing is applied.","disclosure":"no network; reads cron/jobs.json (including prompts, compared but never printed), cron/usage_audit.jsonl and cron/executions.db (opened read-only) of the chosen profile, and with --profile another profile's cron folder under the same Hermes root or with --home the cron folder of any path given; the report (job names, schedules, delivery targets, up to 160 characters of a failing job's last error) is shown wherever the command runs, including messaging-gateway chats; writes nothing; runs no shell command and no background process; registers no hook, tool or middleware, only a slash command and a CLI command; no telemetry.","category":"tools","platforms":["linux","windows"],"maintainer":"Moodtuner997","author":"Moodtuner997","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Moodtuner997/hermes-cron-consolidator","docs":"https://github.com/Moodtuner997/hermes-cron-consolidator#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149427,"prs":[{"n":149427,"state":"merged","created":"2026-11-05T10:43:47Z"}],"created":"2026-11-05T10:43:47Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"pinpoint","title":"pinpoint","summary":"Audit mode and Design mode for the live page in Hermes Desktop's Browser pane. Measure it with in-page audits (contrast, tap targets, alt/labels, overflow, small text), pin findings on the real elements, point at any element to inspect its live box model, typography, layout and contrast, send a pin or an instruction to the agent, and re-audit to get a score delta, a pasteable receipt and a per-pin outcome: fixed (no longer reported and the same element signature is still present; not a re-measurement), gone (element signature missing, never counted as a fix) or not rechecked (unverifiable, stays open).","disclosure":"Pinpoint's desktop half runs its own audit script inside the web page open in Hermes Desktop's Browser pane, only after you allow it for that site (Desktop's per-origin consent dialog; revocable under Capabilities > Plugins). The script reads computed styles, layout, the page's visible text, and the values of the attributes id, name, href, src, alt and aria-label (plus title and placeholder when it works out an element's accessible name); it contains no cookie access and does not read form-field values, and it draws an overlay. Findings (CSS selectors, short element labels that can contain page text, measured values) are stored locally in a SQLite file under the plugin-data folder (`pinpoint/data.db`; at most 20 pages, 200 pins and 50 audits per page; entries older than 7 days are pruned). They are sent to the model only when the agent calls `pinpoint_audit`/`pinpoint_pins` or when you click Fix, Fix all high or Send in the Desktop pane (or its command-palette action); an event raised by the page itself never sends a chat turn. Pinpoint also adds a short hint to the system prompt that names its two tools. The desktop half polls the page every 0.5-1 s while pins are shown (via `executeJavaScript`) and re-audits automatically after page changes (switch off in the pane). `pinpoint_audit` blocks up to 90 s waiting for the Desktop (configurable) and returns `desktop_unavailable` when no Desktop window answers, including under cron. No network calls, no subprocesses, no shell, no credentials, no telemetry, no files written outside plugin-data; it never edits your source (the agent does, under normal approvals). Limits: verified on Windows 11 with Hermes 0.22.7 only (macOS and Linux are untested). Results are a limited heuristic audit, not WCAG certification, and fixed / gone describe what this engine observed, not a guarantee about your page. Disclosure — Pinpoint's desktop half runs its own audit script inside the web page open in Hermes Desktop's Browser pane, only after you allow it for that site (Desktop's per-origin consent dialog; revocable under Capabilities > Plugins); the script reads computed styles, layout, the page's visible text and the attributes id, name, href, src, alt, aria-label, title and placeholder, not form-field values or cookies, and draws an overlay. Findings (CSS selectors, short element labels that can contain page text, measured values) are stored in a local SQLite file under the plugin-data folder (pinpoint/data.db; at most 20 pages, 200 pins and 50 audits per page, pruned after 7 days) and reach the model only when the agent calls pinpoint_audit/pinpoint_pins (pinpoint_audit can also return the live box model of a model-chosen CSS selector) or when you click Fix, Fix all high or Send in the Pinpoint pane or its palette actions; an event raised by the page never sends a chat turn. The plugin adds a short hint to the system prompt naming its two tools. The desktop half polls the page every 0.5-1 s while pins are shown (via executeJavaScript) and re-audits automatically after page changes (switch off in the pane). pinpoint_audit blocks up to 90 s waiting for the Desktop (configurable) and returns desktop_unavailable when no Desktop window answers, including under cron. No network calls, subprocesses, shell, credentials or telemetry, and no files written outside plugin-data; it never edits your source (the agent does, under normal approvals). Verified on Windows 11 only; results are a heuristic audit, not WCAG certification.","category":"desktop","platforms":["windows","macos","linux"],"maintainer":"stupidburgers","author":"stupidburgers","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/stupidburgers/pinpoint","docs":null,"tools":["pinpoint_audit","pinpoint_pins"],"hooks":[],"middleware":[],"env":[],"known_issues":"Both halves must be enabled: `hermes plugins enable pinpoint` and Desktop > Capabilities > Plugins > Pinpoint.; The consent dialog is owned by Desktop; its text cannot be customised.; Pin clicks and page changes reach the agent by polling every 0.5-1 s (no page-to-plugin push exists).; Focus-indicator rule is a static CSSOM heuristic; cross-origin stylesheets and iframes and closed shadow roots are not scanned.; Only tested on Windows 11 with Hermes 0.22.7; macOS and Linux untested.","state":"merged","pr":149426,"prs":[{"n":149426,"state":"merged","created":"2026-11-05T10:41:55Z"}],"created":"2026-11-05T10:41:55Z","late":false,"said":false,"update":false,"discussion":5,"images":["https://raw.githubusercontent.com/stupidburgers/pinpoint/d97399a6ec82391e736eccdfd0b75f00ef7c7eef/docs/banner.png","https://raw.githubusercontent.com/stupidburgers/pinpoint/d97399a6ec82391e736eccdfd0b75f00ef7c7eef/docs/screenshots/01-pins.png","https://raw.githubusercontent.com/stupidburgers/pinpoint/d97399a6ec82391e736eccdfd0b75f00ef7c7eef/docs/screenshots/02-pin-card.png","https://raw.githubusercontent.com/stupidburgers/pinpoint/d97399a6ec82391e736eccdfd0b75f00ef7c7eef/docs/screenshots/03-after-fix.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/pinpoint.webp"},{"name":"aurora-design-system","title":"Aurora Design System","summary":"Two offline tools plus four skills that make a Hermes agent build real web UI with the Aurora CSS design system: aurora_search returns the family, the pack and the real markup of any of 2,223 documented objects from a bundled census; aurora_validate checks a page against that census (invented classes, packs used but not linked, gradients, !important, hand-written colours, duplicate headings, missing attribution) and returns failures and warnings in milliseconds. No network, no subprocess, no writes, no hooks.","disclosure":"the bundled skills have the agent run `curl`/`git` against api.github.com and cdn.jsdelivr.net (Ntizar/Aurora) to resolve the current release, build pages that load their CSS from cdn.jsdelivr.net, and require the attribution footer `Hecho con ❤️ por David Antizar` and Spanish copy on every page (`aurora_validate` fails pages without the footer); `aurora_validate` reads any HTML path the agent passes.","category":"general","platforms":[],"maintainer":"Ntizar","author":"Ntizar","version":"1.2.0","requires_hermes":">=0.21.1","repo":"https://github.com/Ntizar/hermes-aurora","docs":"https://github.com/Ntizar/hermes-aurora","tools":["aurora_search","aurora_validate"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149421,"prs":[{"n":149421,"state":"merged","created":"2026-11-05T10:32:03Z"}],"created":"2026-11-05T10:32:03Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Ntizar/hermes-aurora/dcf5b271e76bb541e7822b029b6de08fa2244582/docs/screenshots/landing.png"],"videos":["https://raw.githubusercontent.com/Ntizar/hermes-aurora/main/video/demo.mp4"],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/aurora-design-system.webp"},{"name":"xray","title":"Plugin X-Ray","summary":"Sets traps for plugins instead of watching them. hermes xray detonate runs a plugin in a throwaway child process with a fake home full of honeytokens, fuzzes its tools, fires its hooks and replays it at +30 and +90 days to catch time-bombs, then gives a RED/AMBER/GREEN verdict with file:line proof, a per-version behaviour diff and a drafted disclosure line. Opt-in live bait flags any installed plugin that reads a decoy credential file and can route its next tool call to Hermes' approval prompt.","disclosure":"spawns child Python processes to detonate plugins; the child runs as you (fake HOME, real keys stripped) and is not an OS sandbox, so its egress and spawn blocking (Python audit hooks, incl. fork and fork_exec) is a tripwire native code can bypass; reads of your real credential stores are refused and make the verdict RED; runs git clone when you detonate a remote repo, including from the dashboard's detonate button; by default (bait_runtime) installs a Python audit hook in the Hermes process that watches for plugins touching bait files or honeytokens; reads installed plugins' source dirs to attribute events; bait plant (opt-in) writes decoy files only into empty default credential paths of the AWS CLI/SDKs, git credential store, ssh and Solana CLI, so those tools use the fake values until bait remove, which deletes only unchanged files it wrote; enforce (off by default) uses pre_tool_call approve; no LLM calls, no telemetry; X-Ray itself never reads real credentials or patches Hermes core.","category":"tools","platforms":[],"maintainer":"cipoklean","author":"cipoklean","version":"0.1.0","requires_hermes":">=0.19","repo":"https://github.com/cipoklean/hermes-xray","docs":"https://github.com/cipoklean/hermes-xray#readme","tools":[],"hooks":["on_session_start","pre_tool_call"],"middleware":[],"env":[],"known_issues":"Detonation is not an OS sandbox: the plugin under test really runs in a child process as you and can reach real files by absolute path; only credential-store reads are refused. Detonate unknown code on a machine you don't mind; Python audit hooks see Python-level actions only; native code can act below them (any ctypes load is reported). Env-variable theft is caught when the value leaves the process, not when it is read; Desktop plugin.js code is not detonated (Python side only)","state":"merged","pr":149414,"prs":[{"n":149414,"state":"merged","created":"2026-11-05T10:22:24Z"}],"created":"2026-11-05T10:22:24Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"taint-sentry","title":"Taint Sentry","summary":"Provenance and taint tracking for tool results. Every tool result is stamped with where it came from; content authored by a third party (web fetches, MCP servers, screenshots, images, and files written from untrusted content) is stripped of invisible characters, wrapped in an <untrusted> marker, and marks the session as tainted. While a session is tainted, side-effecting tool calls are checked against a policy: credential reads, and writes into files the agent reads as instructions (AGENTS.md, SKILL.md, hook handlers, Hermes' own config), are refused; network egress and writes outside the workspace go to Hermes's own approval gate, which is never auto-approved. A call is evaluated as the call it really makes: tool_call, execute_code and process_manage are unwrapped to what they actually run, taint is copied into subagents, and an encoded payload is decoded and judged by what it decodes to. What is reliable and what is not: the taint mark is provenance-based — it comes from which tool produced the content, not from guessing at it. The credential, egress and write detectors are best-effort pattern matching over tool arguments, so an obfuscated command, a payload assembled to avoid the patterns, and writes through the memory or cron tools can get past them. A seatbelt, not a sandbox; the README's Known limitations lists exactly what is out of scope. Ten rules, each tunable to allow/monitor/escalate/block; a receipts ledger; a `hermes taint-sentry` CLI with a dry-run policy tester. Ships a Desktop half in the same package: a pane, a status-bar chip and ⌘K commands showing live taint state, the receipt feed and per-rule actions, backed by `/api/plugins/taint-sentry/`. The pane changes a rule on the user's click; a tool call that tries the same thing — the CLI, `config.yaml`, or that API over loopback — is refused.","disclosure":"no network access, no credentials, no python dependencies and no core overrides: it reads tool arguments and results in-process, writes its decisions to a local SQLite ledger under the plugin's own data dir, and reads an optional policy file there. Nothing needs configuring; `mode: monitor` records without interfering and `mode: off` disables enforcement.","category":"general","platforms":["windows","macos","linux"],"maintainer":"YAN-XBT","author":"YAN-XBT","version":"0.1.0","requires_hermes":">=0.22","repo":"https://github.com/YAN-XBT/hermes-sentry","docs":"https://github.com/YAN-XBT/hermes-sentry","tools":["taint_status","taint_receipts"],"hooks":["transform_tool_result","pre_tool_call","pre_llm_call","subagent_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149412,"prs":[{"n":149412,"state":"merged","created":"2026-11-05T10:20:51Z"}],"created":"2026-11-05T10:20:51Z","late":false,"said":false,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/YAN-XBT/hermes-sentry/5f74fe9c923f228a2b6e6aa95d362b71b94bfc20/assets/console.png","https://raw.githubusercontent.com/YAN-XBT/hermes-sentry/8cbe7d863e48606d8e44a84f81f461be7194faf2/assets/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/taint-sentry.webp"},{"name":"homegrown","title":"Homegrown","summary":"Hermes builds you small apps that stay: trackers, logs, CRMs, checklists, each with its own saved data. Use them on a Desktop Apps page or live inline in chat, and have Hermes read and update their data from any chat or platform; open copies refresh live. Six homegrown_* tools, versioned code with rollback, recoverable deletes, bundled skill homegrown:build-app.","disclosure":"no network calls, shell commands, background processes, credentials or telemetry; writes only under HERMES_HOME/plugin-data/homegrown/. Registers backend routes under /api/plugins/homegrown/ for its Desktop half. The Desktop half renders agent-written HTML in the SDK SandboxedFrame with all network blocked by an injected CSP; each app reaches only its own data through a message bridge, and app.ask() can submit a prompt only into a visible chat composer.","category":"desktop","platforms":[],"maintainer":"Cam-Smith-One","author":"Cam-Smith-One","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Cam-Smith-One/hermes-homegrown","docs":"https://github.com/Cam-Smith-One/hermes-homegrown#readme","tools":["homegrown_create_app","homegrown_update_app","homegrown_list_apps","homegrown_read_app","homegrown_app_data","homegrown_delete_app"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149398,"prs":[{"n":149398,"state":"open","created":"2026-11-05T09:47:51Z"}],"created":"2026-11-05T09:47:51Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Cam-Smith-One/hermes-homegrown/11ff8cbefd5a945f3a9730907d289de4dc557aa6/docs/live-app-in-chat.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/homegrown.webp"},{"name":"finder","title":"Finder","summary":"Sidebar tab that searches and filters Hermes projects and sessions, including by project name, which the built-in search cannot. All, Projects and Sessions views; right-click a project to add a session, copy its folder path, rename, recolour, reorder or delete, and right-click a session to open, copy id, tag, archive or delete; plus per-session and per-project token and cost stats and a live context meter. Desktop only; no agent tools, hooks, middleware or env vars.","disclosure":"","category":"desktop","platforms":[],"maintainer":"oways","author":"oways","version":"1.0.0","requires_hermes":">=0.22","repo":"https://github.com/oways/hermes-finder","docs":"https://github.com/oways/hermes-finder#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149397,"prs":[{"n":149397,"state":"merged","created":"2026-11-05T09:47:31Z"}],"created":"2026-11-05T09:47:31Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"anki","title":"Anki","summary":"Create, search, and review Anki flashcards from Hermes through the local AnkiConnect API: adds notes to a deck (creating it if needed), searches the collection, lists due cards, and grades reviews. Writes to the local Anki collection and changes scheduling only when its tools or /anki command are used. Requires Anki desktop with AnkiConnect (add-on 2055492159); no telemetry; optional API key via ANKI_BRIDGE_API_KEY.","disclosure":"","category":"tools","platforms":[],"maintainer":"suhas-svg","author":"suhas-svg","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/suhas-svg/hermes_anki","docs":"https://github.com/suhas-svg/hermes_anki#readme","tools":["anki_decks","anki_add_cards","anki_search","anki_due","anki_answer"],"hooks":[],"middleware":[],"env":[],"known_issues":"Requires Anki desktop to be running with the AnkiConnect add-on (code 2055492159).; AnkiConnect listens on 127.0.0.1:8765 by default; remote endpoints are opt-in via config.","state":"merged","pr":149394,"prs":[{"n":149394,"state":"merged","created":"2026-11-05T09:43:27Z"}],"created":"2026-11-05T09:43:27Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-pr-studio","title":"PR Studio","summary":"Review GitHub pull requests in Hermes Desktop: inbox of your open PRs across repos, diffs with inline threads, line comments and reviews, private-repo images, watched PRs, one-click Send to Hermes for any comment, and batch review: tick several PRs and Hermes reviews them in parallel chats, handing its findings back to the panel as draft comments you accept or dismiss.","disclosure":"shells out to your logged-in gh CLI (and `git remote get-url origin` in the open project), passing it Hermes's process environment; GitHub writes only on explicit click, reviews confirmed, and Approve needs a separate explicit confirmation (UI and API); registers one agent tool, pr_studio_submit_findings, which only writes review findings to the plugin's own data directory (validated input, no network, no GitHub access); \"Send to Hermes\", \"Review in this chat\" and \"Review in new chats\" submit prompts containing PR titles, branch names and comment text (written by other GitHub users, flagged to the agent as untrusted) to your chat immediately, and each new chat (up to 5 per batch) spends tokens on the model you pick; polls watched PRs every 60 s and Hermes findings every 4-5 s while Desktop is open; no stored credentials, no telemetry. Independent codebase, not derived from githermes.","category":"desktop","platforms":[],"maintainer":"Murali-lns","author":"Murali-lns","version":"0.4.1","requires_hermes":">=0.22.1","repo":"https://github.com/Murali-lns/hermes-pr-studio","docs":"https://github.com/Murali-lns/hermes-pr-studio#readme","tools":["pr_studio_submit_findings"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149373,"prs":[{"n":149373,"state":"merged","created":"2026-11-05T08:45:22Z"}],"created":"2026-11-05T08:45:22Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/Murali-lns/hermes-pr-studio/42bd80d2205709cc87925a7f21718885093d9616/docs/screenshots/select-prs.png","https://raw.githubusercontent.com/Murali-lns/hermes-pr-studio/42bd80d2205709cc87925a7f21718885093d9616/docs/screenshots/inbox-badges.png","https://raw.githubusercontent.com/Murali-lns/hermes-pr-studio/42bd80d2205709cc87925a7f21718885093d9616/docs/screenshots/findings-card.png","https://raw.githubusercontent.com/Murali-lns/hermes-pr-studio/42bd80d2205709cc87925a7f21718885093d9616/docs/screenshots/accepted-as-draft.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-pr-studio.webp"},{"name":"simular-box","title":"box by Simular","summary":"Give Hermes a computer of its own: box is a cloud Linux desktop with Chrome and a shell that the agent drives over MCP, around the clock, while your own machine stays free. Agent Plugins v1 package (plugin.json + mcp.json + skills/), configuration only, no code: one remote MCP server (https://mcp.box.simular.ai/mcp, streamable HTTP) and one skill. Needs a box personal key from box.simular.ai/keys, set in Settings > Plugins or as MCP_BOX_API_KEY in the profile .env.","disclosure":"every tool call and the MCP_BOX_API_KEY go to mcp.box.simular.ai (Simular); the agent can run shell commands, read, write and delete files, browse sites, and hibernate, save, upgrade or delete the user's box on Simular's cloud computer; the package marks the box server trust: untrusted, so Hermes asks before each tool that is not read-only until the user approves it; box use counts against the account's box plan; the user can watch and take over the box at box.simular.ai/box. Nothing runs or is stored on the local machine.","category":"tools","platforms":[],"maintainer":"Simular","author":"dora-dotcom","version":"0.2.0","requires_hermes":">=0.22.5","repo":"https://github.com/simular-ai/box-plugin","docs":"https://github.com/simular-ai/box-plugin/tree/main/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["MCP_BOX_API_KEY"],"known_issues":"","state":"merged","pr":149370,"prs":[{"n":149370,"state":"merged","created":"2026-11-05T08:35:11Z"}],"created":"2026-11-05T08:35:11Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"reduck","title":"Reduck","summary":"Run tested browser scripts on any website, in your own Chrome signed in as you or on a Reduck-hosted browser, through Reduck's MCP server (https://mcp.reduck.ai). Configuration only: plugin.json + mcp.json.","disclosure":"every Reduck tool call and its arguments go to mcp.reduck.ai with your REDUCK_API_KEY; runs act on websites as you (in your paired Chrome or a Reduck-hosted browser) and can submit forms, post or buy when a script does that, and Hermes does not ask before these remote tools run; runs, traces and scripts are stored on your Reduck account and hosted-browser runs use plan credits; the tool set comes from the server at runtime, not from the pinned sha.","category":"web","platforms":[],"maintainer":"reduck-ai","author":"dhuynh95","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/reduck-ai/reduck-hermes-plugin","docs":"https://docs.reduck.ai","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"On Hermes 0.22.7 and older, the Reduck tools can stop after a reconnect (the header is sent as the literal ${REDUCK_API_KEY}). Restart Hermes to connect again.","state":"merged","pr":149369,"prs":[{"n":149369,"state":"merged","created":"2026-11-05T08:34:55Z"}],"created":"2026-11-05T08:34:55Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hireko","title":"Hireko","summary":"Hireko Recruiter MCP gateway: Cognito authentication, candidate screening interview link creation, and candidate search scoring. Hosted connector: tool arguments are sent to Hireko; an authenticated account is required.","disclosure":"sends tool arguments and the user's Hireko bearer token to Hireko's hosted MCP endpoint (an AWS Lambda URL) and recruiter-<tenant>.hireko.ai, POSTs the password (env only) to AWS Cognito, opens a local 127.0.0.1 callback server during browser login, and stores Hireko access/refresh tokens under ~/.HirekoOpenPlugin/credentials.","category":"tools","platforms":[],"maintainer":"HireKoAI","author":"mohan-metricdust","version":"0.1.0","requires_hermes":"","repo":"https://github.com/HireKoAI/HirekoAiPluginPublicRepo","docs":"https://github.com/HireKoAI/HirekoAiPluginPublicRepo/tree/hermes/.hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149368,"prs":[{"n":149368,"state":"merged","created":"2026-11-05T08:34:06Z"}],"created":"2026-11-05T08:34:06Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/HireKoAI/HirekoAiPluginPublicRepo/hermes/.hermes-plugin/assets/hireko-image.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hireko.webp"},{"name":"say-do-gate","title":"say-do-gate","summary":"Checks agent claims against what actually ran this turn. Deterministic, zero tokens.","disclosure":"","category":"general","platforms":[],"maintainer":"jpaulupshaw","author":"jpaulupshaw","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/jpaulupshaw/hermes-say-do-gate","docs":"https://github.com/jpaulupshaw/hermes-say-do-gate#readme","tools":[],"hooks":["post_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149365,"prs":[{"n":149365,"state":"merged","created":"2026-11-05T08:27:30Z"}],"created":"2026-11-05T08:27:30Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-axioma","title":"Axioma","summary":"Inline signal color in the agent's normal reply. The agent marks the few phrases that deserve a second look (stop, caution, go, whisper) and the plugin renders them per surface with color, a style cue and a word, never color alone: Desktop through KaTeX color, CLI/TUI through truecolor ANSI, Telegram/Discord/Slack as bold plus the word, SMS and email as the word only. Green renders only when a tool call Hermes reported as successful in this session backs it; a rarity budget caps marks per reply; malformed tags never leak. A color-vision-safe palette and a style-and-words-only mode are one setting away. Secondary: an advisory card (intent, light, signal, question) staged before configured send/spend/spin/scrub tool calls and shown through Hermes's own approval prompt. Each card and notice carries a short card code (a keyed hash of the exact text shown, the tool, its arguments and the card id), logged when shown and again with the answer; /signals verify <code> reports in plain words whether what was staged, shown and answered line up (spec section 5.6, shown equals staged). Advisor, not a gate: it never blocks, approves or executes anything.","disclosure":"before configured send/spend/spin/scrub tool calls (by default send_message, email/post/publish tools, payment/checkout tools, cron and kanban creation, delegate_task, terminal deploy and git push/gh pr commands, and terminal rm/mv when no workspace is configured) it escalates the call to Hermes's own approval prompt with an advisory card, using a fresh rule key each time so remembered Session/Always approvals never skip later prompts; under cron and other unattended runs Hermes's approval policy (default deny) then refuses those calls; it never auto-approves or executes anything, makes no network, model or subprocess calls, reads credentials only as presence checks through agent.secret_scope, adds a short markup guide to the system context through pre_llm_call, rewrites the agent's reply text to render the marks, and writes metadata, salted span hashes and keyed card-code digests (no message bodies) to an owner-only SQLite file plus a separate owner-only key file under its own plugin data directory.","category":"tools","platforms":[],"maintainer":"percyhendrux123-prog","author":"percyhendrux123-prog","version":"0.3.0","requires_hermes":">=0.22.5","repo":"https://github.com/percyhendrux123-prog/hermes-axioma","docs":"https://github.com/percyhendrux123-prog/hermes-axioma/blob/fdd1fee06a2e63ffa3eb74f8e894c626c9b0651e/README.md","tools":["axioma_card"],"hooks":["pre_tool_call","post_tool_call","post_approval_response","pre_llm_call","on_session_finalize","transform_llm_output"],"middleware":[],"env":[],"known_issues":"Signals are written by the model. A model that ignores the markup guide produces plain replies; nothing breaks, nothing is colored.; Desktop color uses KaTeX inline math. Where the span or the reply would confuse Desktop's math parsing (code, links, stray $, characters KaTeX cannot draw), the phrase falls back to bold plus the word. Details in docs/HOST-GAPS.md.; SCRUB detection for advisory cards is best-effort shell parsing: an unparsed remove/move is capped at CAUTION, and removes inside bash -c, eval, ssh, docker exec or scripts are not seen.; Hermes shows only the first plugin's approval text, so when Axioma's card comes first another plugin's description is not shown (the human is still asked).","state":"merged","pr":149364,"prs":[{"n":149364,"state":"merged","created":"2026-11-05T08:20:32Z"}],"created":"2026-11-05T08:20:32Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/percyhendrux123-prog/hermes-axioma/fdd1fee06a2e63ffa3eb74f8e894c626c9b0651e/docs/evidence/desktop/desktop-night-inline-signal.png","https://raw.githubusercontent.com/percyhendrux123-prog/hermes-axioma/fdd1fee06a2e63ffa3eb74f8e894c626c9b0651e/docs/evidence/desktop/terminal-app-cli-render.png","https://raw.githubusercontent.com/percyhendrux123-prog/hermes-axioma/66b40e6c802c8b11da961b742b01dd0d958333bd/docs/evidence/desktop/desktop-night-inline-signal.png","https://raw.githubusercontent.com/percyhendrux123-prog/hermes-axioma/66b40e6c802c8b11da961b742b01dd0d958333bd/docs/evidence/desktop/terminal-app-cli-render.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-axioma.webp"},{"name":"hermes-openready","title":"Open-Ready Publish Guard","summary":"Prepare an open-source release candidate from a private repository and refuse to publish it: five tools (status, doctor, candidate, verify, gate) plus a pre_tool_call guard that inspects the terminal tool and blocks or escalates the publish commands it recognises - the gh, gh api and curl shapes that create a public repository or change visibility - until the owner has approved that exact candidate digest. It does not claim to catch every way to publish. No tool can push, change visibility or upload: candidate writes a local candidate directory and verify may write one packet under .openready-private/. The approval check runs the separately installed Open-Ready CLI with an allowlisted child environment carrying no Hermes provider keys or GitHub tokens.","disclosure":"the tools run the separately installed Open-Ready CLI (openready_bin / openready_python from your config) as child processes with an allowlisted environment (no Hermes provider keys or GitHub tokens); openready_candidate writes a candidate directory at <repo>/.openready-candidate and openready_verify with write_packet writes one file at <repo>/.openready-private/packets/packet.json; the pre_tool_call guard inspects every terminal command and blocks, or sends to Hermes' approval prompt, the recognised gh / gh api / curl commands that create a public repository or change visibility, which is not a complete barrier (other tools, scripts or shell forms can still publish).","category":"automation","platforms":["linux","macos"],"maintainer":"socraticblock","author":"socraticblock","version":"0.1.0","requires_hermes":">=0.20.0","repo":"https://github.com/socraticblock/hermes-openready","docs":"https://github.com/socraticblock/hermes-openready#readme","tools":["openready_status","openready_doctor","openready_candidate","openready_verify","openready_gate"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149363,"prs":[{"n":149363,"state":"merged","created":"2026-11-05T08:17:40Z"}],"created":"2026-11-05T08:17:40Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"harness2","title":"harness2","summary":"The Harness^2 self-improvement loop for Hermes profiles: refines the agent's own execution harness (system prompt + config overlay + skills) for a class of work with a contrastive Propose-Probe-Compose cycle over isolated, wall-clock-budgeted one-shot probe sessions, then banks evidence-backed lessons in a per-profile improvement library that future tasks read before editing. After each round, the promote stage writes a carry-over report that shows what the banked harness changed and what to apply to the live profile; the user applies it, the plugin never writes the live profile. The deterministic machinery (profile materialization, probe runs, structural gate, library) is tools; the judgment stages run in the host session under bundled skills that point at the verbatim stage prompts from arXiv:2610.14224.","disclosure":"spawns `hermes profile create --clone` and one-shot `hermes -p harness2-<task>-<probe> chat` subprocesses; each probe is a full agent session billed to the configured model, wall-clock capped (default 900 s, plugin setting). Creates and refreshes probe profiles named harness2-* (config is the active profile's deep-merged with the harness overlay, .env inherited, approvals pinned to mode: smart, redact_secrets: true). Reads/writes only its own plugin data directory and the probe profile directories; the installed plugin tree is never written to. No telemetry and no third-party network calls of its own; probes inherit the profile's full tool access (including web) like any profile.","category":"automation","platforms":[],"maintainer":"shrinedogg","author":"shrinedogg","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/shrinedogg/harness2-hermes","docs":"https://github.com/shrinedogg/harness2-hermes#readme","tools":["harness2_init","harness2_probe","harness2_seed","harness2_check","harness2_adopt","harness2_promote","harness2_library","harness2_status","harness2_gc"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149360,"prs":[{"n":149360,"state":"open","created":"2026-11-05T08:14:04Z"}],"created":"2026-11-05T08:14:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/shrinedogg/harness2-hermes/51acf027903332ca52516f602a2c47fd348dc0cb/docs/shots/loop.png","https://raw.githubusercontent.com/shrinedogg/harness2-hermes/51acf027903332ca52516f602a2c47fd348dc0cb/docs/shots/library.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/harness2.webp"},{"name":"bumblebee-guard","title":"bumblebee-guard","summary":"Supply-chain guard: runs the local Bumblebee scanner bridge (read-only, no sudo), exact-matches every installed package, MCP server and editor/browser extension against curated catalogs of known-compromised packages, and adds OSV.dev advisory counts via the bridge's OSV layer. Tools: bumblebee_guard_scan / _status / _diff (baseline diff of findings). A rate-limited pre_llm_call hook injects a one-line supply-chain alert only when curated findings exist (never when clean, at most once per hour). /bumblebee slash command plus a bundled triage skill covering confidence classes, OSV alias deduplication and a documented false-positive pattern (scanner fixtures containing threat-intel strings).","disclosure":"the plugin itself makes no network calls and holds no credentials; the wrapped bridge's scan queries OSV.dev and an opt-in, off-by-default catalog refresh fetches threat-intel JSON from the upstream perplexityai/bumblebee repository; scans run daily_scan.sh as the current user and read package metadata in $HOME (never .env or token files, never executes package managers); a full scan takes up to ~3 minutes and honors a configurable timeout; the hook fails open and never blocks turns, so cron and unattended runs are unaffected.","category":"tools","platforms":["linux","macos"],"maintainer":"kahnanX","author":"kahnanX","version":"0.1.1","requires_hermes":">=0.21.6","repo":"https://github.com/kahnanX/bumblebee-guard","docs":null,"tools":["bumblebee_guard_scan","bumblebee_guard_status","bumblebee_guard_diff"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149358,"prs":[{"n":149358,"state":"merged","created":"2026-11-05T08:10:50Z"}],"created":"2026-11-05T08:10:50Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/kahnanX/bumblebee-guard/8cdf7e03493eedbd8fd7abb5a2aed53b230e53c6/docs/proof-page.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/bumblebee-guard.webp"},{"name":"claim-market-router","title":"Claim Market Router","summary":"Market-based subagent delegation provider (`delegation.backend: claim_market`) and optional `llm_request` reasoning-effort shaper derived from MISAKA Agent and Watt Window. Publishes task cards (`role_needed`, `complexity`, `max_cost_units`), synthesizes capability-fit and quota-health claims with shadow pricing, resolves disagreements via weighted voting, and explains infeasible budget constraints.","disclosure":"no network calls, subprocesses, or credential reads; stores only token-usage counts and auction receipts in `plugin-data/claim-market-router/data.db`; `llm_request` middleware is no-op unless `auto_effort_shaping` is enabled in plugin settings, and when enabled modifies only `reasoning_effort` on the outgoing request dict.","category":"models","platforms":[],"maintainer":"misakamikotoghr-5205","author":"misakamikotoghr-5205","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins","docs":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins/blob/main/claim-market-router/README.md","tools":["claim_market_auction","claim_market_ledger"],"hooks":["post_llm_call","post_api_request"],"middleware":["llm_request"],"env":[],"known_issues":"","state":"open","pr":149353,"prs":[{"n":149353,"state":"open","created":"2026-11-05T07:53:48Z"}],"created":"2026-11-05T07:53:48Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hunk-consent-guard","title":"Hunk Consent Guard","summary":"Brings Patch Review Desk and Cart Consent contracts into Hermes: stage multi-hunk file proposals, approve or reject individual hunks via `/hunk-desk` or `hermes hunk-desk`, automatically revoke approvals if the file's SHA-256 baseline drifts on disk, and record durable before/after rollback receipts in SQLite via `tool_execution` middleware.","disclosure":"reads target workspace files during `write_file`/`patch` execution and explicit hunk proposal/apply/rollback commands; stores file snapshots (up to `max_snapshot_kb`, default 256 KB) and SHA-256 receipts in `plugin-data/hunk-consent-guard/data.db`; never modifies Hermes's built-in approval prompts or executes shell commands; no network calls.","category":"tools","platforms":[],"maintainer":"misakamikotoghr-5205","author":"misakamikotoghr-5205","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins","docs":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins/blob/main/hunk-consent-guard/README.md","tools":["hunk_propose","hunk_review_status","hunk_apply_approved","hunk_rollback_receipt"],"hooks":["pre_tool_call","post_tool_call"],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"open","pr":149353,"prs":[{"n":149353,"state":"open","created":"2026-11-05T07:53:48Z"}],"created":"2026-11-05T07:53:48Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"source-trail-supervisor","title":"Source Trail & Session Supervisor","summary":"Combines Source Trail, CaseDesk, and Codex Session Supervisor into a Hermes epistemic and trajectory harness: verifies verbatim quotes against exact zero-based Unicode code-point spans (`[start, end)`), withholds unilateral claims when valid sources carry conflicting position labels on the same topic, and fingerprints tool/turn progress to detect stuck loops and log recoverable decision nodes. Includes the `epistemic-supervision` skill and `/trail-supervise` command.","disclosure":"observes tool call names, error status, and turn counts via `on_session_start`, `post_tool_call`, and `post_llm_call` hooks; stores user-ingested source packets, verified span anchors, and session node summaries in `plugin-data/source-trail-supervisor/data.db`; no network calls, subprocesses, or credential access.","category":"general","platforms":[],"maintainer":"misakamikotoghr-5205","author":"misakamikotoghr-5205","version":"1.0.0","requires_hermes":">=0.21.5","repo":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins","docs":"https://github.com/misakamikotoghr-5205/hermes-hackathon-plugins/blob/main/source-trail-supervisor/README.md","tools":["source_trail_ingest","source_trail_verify","session_supervisor_node"],"hooks":["on_session_start","post_tool_call","post_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149353,"prs":[{"n":149353,"state":"open","created":"2026-11-05T07:53:48Z"}],"created":"2026-11-05T07:53:48Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stripe-commerce","title":"stripe-commerce","summary":"Merchant-side Stripe for agents: products, prices and payment links through an enforced restricted-key boundary. Sends the merchant's restricted Stripe key (Authorization header), catalog parameters and per-preview idempotency key to api.stripe.com over TLS; Stripe records requests with key attribution. Stripe-returned catalog and subscription state enters tool output and may be retained in session logs; customer details and payment methods are omitted. Preview references and request payloads are held in bounded process memory for five minutes, with no plugin-owned disk persistence or telemetry. Native confirmation uses the existing Hermes UI/channel and may enter host logs; direct API traffic is limited to Stripe. Each write requires an unchanged single-use preview and fresh native human consent through a verified Telegram or Discord gateway prompt. CLI/TUI and other channels are read/preview-only. Missing or incompatible consent/display support blocks writes. No refund, charge, payout or subscription-mutation endpoint is reachable.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"adroidian","author":"adroidian","version":"0.2.0","requires_hermes":">=0.21.0","repo":"https://github.com/adroidian/stripe-commerce-hermes","docs":null,"tools":["stripe_whoami","stripe_list_products","stripe_create_product","stripe_archive_product","stripe_list_prices","stripe_create_price","stripe_deactivate_price","stripe_create_payment_link","stripe_list_payment_links","stripe_deactivate_payment_link","stripe_list_subscriptions","stripe_get_subscription","stripe_portal_config"],"hooks":["pre_tool_call","post_tool_call","pre_approval_request","post_approval_response","agent_loop_stopped","on_session_reset","on_session_finalize","on_session_end","on_session_delete"],"middleware":["tool_execution"],"env":["STRIPE_API_KEY"],"known_issues":"Writes depend on the public mandatory policy proposed in Hermes PR146488 and request-bound approval/API-declaration work in PR153349, qualified at core 826087f934aaef7ca11391101b8957f70eb8bf42. Both remain unmerged. The original feature-only f2d5700 fixture does not qualify callback routing. Tested stable v0.23.0 is read/preview-only; missing or invalid mandatory support blocks writes. Only native Telegram/Discord write routes are qualified, with simulated human input/delivery and mocked Stripe HTTP, not live merchant acceptance. CLI/TUI, QQ and other channels remain read/preview-only. Long requests that cannot fit the complete prompt are refused. After fresh Once and host execution admission, Stop cannot guarantee abort. See VALIDATION.md for source-bound evidence.","state":"open","pr":149352,"prs":[{"n":149352,"state":"open","created":"2026-11-05T07:47:23Z"}],"created":"2026-11-05T07:47:23Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"tameru","title":"Tameru","summary":"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.","category":"general","platforms":["linux"],"maintainer":"0xWhiteMage","author":"0xWhiteMage","version":"1.6.0","requires_hermes":">=0.21.7","repo":"https://github.com/0xWhiteMage/hermes-tameru-plugin","docs":"https://github.com/0xWhiteMage/hermes-tameru-plugin","tools":["tameru_expand"],"hooks":[],"middleware":[],"env":[],"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.","state":"merged","pr":149336,"prs":[{"n":149336,"state":"merged","created":"2026-11-05T06:53:52Z"}],"created":"2026-11-05T06:53:52Z","late":false,"said":true,"update":true,"discussion":0,"images":["https://raw.githubusercontent.com/0xWhiteMage/hermes-tameru-plugin/9f80514ec93cf1973601e39811980b823cb2a766/docs/assets/hero.png"],"videos":[],"x":["https://x.com/NousResearch/status/2118094256438936062"],"youtube":[],"thumb":"/hackathon/thumbs/tameru.webp"},{"name":"cost-sentinel","title":"cost-sentinel","summary":"Live cost ledger and daily budget guarddog for Hermes Agent, per profile or fleet-wide — every LLM call is priced with Hermes' own pricing engine into a per-profile SQLite ledger plus a shared fleet ledger (all profiles of the install roll into one daily number); /cost rules the budget (set, block, warn, off, scope fleet or profile, resume, reset), the cost_report tool lets the agent read it, and the hard pre_llm_call gate stops an over-budget turn with an escape-hatch message. Desktop pane shows the gate number (fleet or profile) with a spend ring, per-model and per-day breakdowns and a status-bar budget chip.","disclosure":"writes a per-profile SQLite ledger and a ledger shared by every profile of the install at <default hermes root>/plugin-data/cost-sentinel/fleet.db, which also holds the daily budget settings, so /cost set, block, resume or reset in any profile changes the budget for all profiles; rows store tokens, cost, model/provider, session/turn/request ids, platform and error type plus the first 400 characters of provider error messages, never prompt, response or tool-argument text; the hard gate is off by default, is checked once before each turn (a turn already running can overshoot), and counts calls Hermes cannot price as $0; no network of its own (pricing goes through the host pricing engine), no MCP, shell, credentials or telemetry.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"SongotenU","author":"SongotenU","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/SongotenU/hermes-cost-sentinel","docs":"https://github.com/SongotenU/hermes-cost-sentinel","tools":["cost_report"],"hooks":["post_api_request","api_request_error","post_auxiliary_call","pre_llm_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149334,"prs":[{"n":149334,"state":"merged","created":"2026-11-05T06:43:47Z"}],"created":"2026-11-05T06:43:47Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"research-notes","title":"research-notes","summary":"Research notes for Hermes: fetch web pages as text, save notes with tags, search notes, list notes, and delete notes. All data stored locally in JSON.","disclosure":"","category":"tools","platforms":["linux","macos","windows"],"maintainer":"Adebisi1111","author":"Adebisi1111","version":"","requires_hermes":">=0.21","repo":"https://github.com/Adebisi1111/hermes-research-notes","docs":null,"tools":["research_url","save_note","search_notes","list_notes","delete_note"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149331,"prs":[{"n":149331,"state":"merged","created":"2026-11-05T06:41:10Z"}],"created":"2026-11-05T06:41:10Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"verifyum","title":"Verifyum","summary":"Privacy-preserving file proofs on Solana Mainnet through Verifyum (no account, no key): the agent hashes a file on the user's machine, anchors only a domain-separated commitment, follows the proof until it is finalized, and verifies public proofs, with one skill bundled. Portable Agent Plugins v1 package (plugin.json + mcp.json + skills/).","disclosure":"the package contains no code and declares two MCP servers. verifyum is Verifyum's hosted server at api.verifyum.com (Streamable HTTP). verifyum-local runs npx -y verifyum-mcp@0.1.1, which downloads that exact npm release (MIT, JavaScript source, published by aisenseapi) on first start and needs Node.js 20 or later. verifyum_anchor_commitment and verifyum_create_proof_from_file write a real, public and permanent Solana Mainnet transaction, so plugin.json marks both servers untrusted and Hermes asks first. The file tool reads only regular files inside the directories listed in VERIFYUM_MCP_ALLOWED_DIRS, which the package does not set, so it refuses every path until the user sets it. It writes a private draft the user must keep. Verifyum receives only the commitment, the idempotency key and proof IDs, never the file, filename, raw hash, nonce or private manifest. Tool arguments, local paths included, still reach the user's model provider through the session. Verification also reads from a public Solana RPC endpoint. At most ten new anchors per IP address per rolling hour. The tool lists come from the servers at run time, so the pinned commit doesn't cover them.","category":"tools","platforms":[],"maintainer":"aisenseapi","author":"aisenseapi","version":"0.2.0","requires_hermes":">=0.22.0","repo":"https://github.com/aisenseapi/verifyum-agent-plugin","docs":"https://github.com/aisenseapi/verifyum-agent-plugin/blob/15c80a75593a04fdcf22a3ed52ed3c545bceee0b/README.md","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"The file tool stays off until VERIFYUM_MCP_ALLOWED_DIRS is set for the verifyum-local server.; verifyum-local needs Node.js 20 or later with npx available.","state":"merged","pr":149329,"prs":[{"n":149329,"state":"merged","created":"2026-11-05T06:40:50Z"}],"created":"2026-11-05T06:40:50Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"stage","title":"stage","summary":"Stage Hermes write_file and patch calls in a scratch copy. Original files stay unchanged until stage_apply.","disclosure":"while enabled, write_file and patch land in a scratch copy under the Hermes plugin-data directory and the real files change only when the model calls stage_apply (the model can apply without asking the user); writes outside the session workspace are refused, terminal commands that would modify workspace files (redirects, tee, sed -i, rm/mv/cp, git checkout/restore/reset --hard) are blocked, and any execute_code that uses subprocess, os.system or file-writing calls is blocked; stage_apply re-checks Hermes' write denylist and approval-gated paths before writing.","category":"tools","platforms":[],"maintainer":"adindamochamad","author":"adindamochamad","version":"0.2.6","requires_hermes":">=0.22.7","repo":"https://github.com/adindamochamad/stage","docs":"https://github.com/adindamochamad/stage#readme","tools":["stage_apply","stage_discard","stage_status","stage_diff","stage_receipts"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149328,"prs":[{"n":149328,"state":"merged","created":"2026-11-05T06:37:45Z"}],"created":"2026-11-05T06:37:45Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"injection-guard","title":"injection-guard","summary":"Prompt-injection firewall for tool output. A tool_execution middleware scans results from web, browser, file-reading and mail tools for instructions addressed to the model, redacts the matched spans, strips zero-width and bidi characters, HTML comments carrying instructions, CSS-hidden text and oversized base64 blobs, then wraps what remains in a labelled untrusted- data envelope. Fully local and deterministic: seven weighted signal families with a default threshold of six, so one strong signal or two medium signals trip it; no network calls, no API calls, and no model in the decision path. Ships a read-only injection_guard_stats tool and a /guard command, and appends one audit line per block carrying signal names and scores only — never the offending text. Embedded envelope markers are defused before wrapping, so a payload cannot close the untrusted block early. For tools listed in file_reader_tools the destructive family is exempt, because redacting a local migration or deploy script would corrupt it if the model rewrote the file; instruction-override and concealment still fire on reads.","disclosure":"it rewrites tool results before the model reads them, which is the purpose of the plugin and does change the content the model receives; detection is pattern-based, so a novel phrasing that avoids every rule will pass, and the guard covers the tool path only, not text a user pastes into chat.","category":"tools","platforms":[],"maintainer":"moneya","author":"moneya","version":"0.1.1","requires_hermes":"","repo":"https://github.com/moneya/hermes-injection-guard","docs":"https://github.com/moneya/hermes-injection-guard#readme","tools":["injection_guard_stats"],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":149325,"prs":[{"n":149325,"state":"merged","created":"2026-11-05T06:30:22Z"},{"n":149522,"state":"closed","created":"2026-11-05T14:11:42Z"}],"created":"2026-11-05T06:30:22Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-ros","title":"ROS Robot Control","summary":"Drive and observe ROS / ROS 2 robots from Hermes over rosbridge: list topics, services and nodes, read odometry, grab camera frames for the vision model, publish, call services, drive and e-stop, with every tool call gated by a pre_tool_call safety interlock (speed and duration limits, optional geofence, topic and service write allowlists, a latching e-stop, every blocked call logged). Ships a built-in mock robot (2D sim with a camera and a red cone) so it runs with no ROS at all, a bundled safety skill, and an optional read-only dashboard tab.","disclosure":"network: in rosbridge mode it opens one unencrypted websocket to the rosbridge server you configure (default localhost:9090), lazily on first use; mock mode (default) makes no network connections. Files: camera snapshots, a blocked-call audit log, the e-stop latch and the last pose under the plugin data dir. No credentials. One dependency, websocket-client (already in Hermes's lock). With a real robot attached the agent can physically move it; limits default to 0.5 m/s, 1.0 rad/s and 5 s per command and are enforced on this plugin's tools outside the model, but they do not stop other tools (terminal, code execution) from reaching the rosbridge server or changing the limits in config.yaml.","category":"tools","platforms":[],"maintainer":"Arca Computer (arcabotai)","author":"arcabotai","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/arcabotai/hermes-ros","docs":"https://github.com/arcabotai/hermes-ros#readme","tools":["ros_list","ros_echo","ros_drive","ros_publish","ros_call_service","ros_get_pose","ros_camera_snapshot","ros_stop","ros_status"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149313,"prs":[{"n":149313,"state":"merged","created":"2026-11-05T06:05:21Z"}],"created":"2026-11-05T06:05:21Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"anaella","title":"Anaella","summary":"Your work accounts for Hermes: Gmail, Outlook or IMAP mail, Google and Outlook calendars, Drive, Docs and Sheets, Slack, Search Console, Analytics, Meta and Google Ads, Business Profile reviews, Stripe, PayPal, n8n, a phone number (texts and AI calls), a meeting bot and 9 social networks, through one MCP server (find, explain, do over about 260 capabilities) plus 24 workflow skills (social publishing and comment replies, post and comment analysis, inbox triage, scheduling, SEO and ads reports, research and leads, marketing, payments, documents and e-signatures, phone calls, meeting notes, n8n, videos and automations). Portable Agent Plugins v1 package; the server runs locally with pinned npx @anaella/mcp@0.14.0, so Node.js 20+ and npm are required.","disclosure":"every tool call goes to api.anaella.com with the user's ANAELLA_API_KEY (passed from the Hermes profile .env, never stored by the plugin); tools act in the user's name on the accounts they connected (send email and texts, place AI calls, publish posts, edit sheets, share files, change ad campaigns, send invoices and refunds) and some are paid from the user's Anaella wallet within their daily spending limit; the server is marked untrusted, so Hermes asks before every write-capable call (do, connect_account, remove_account, create_connect_link). media.upload reads local files the agent names (only files the user named; hidden files, dot-folders and the Hermes home are refused) and uploads them to Anaella; connect_account sends account passwords and app passwords to Anaella. No telemetry, no background work beyond the MCP server Hermes starts.","category":"tools","platforms":[],"maintainer":"Anaella","author":"isaacgounton","version":"0.9.45","requires_hermes":">=0.21.7","repo":"https://github.com/dahoai/anaella-agent-plugin","docs":"https://github.com/dahoai/anaella-agent-plugin/tree/main/hermes","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149279,"prs":[{"n":149279,"state":"open","created":"2026-11-05T05:20:54Z"}],"created":"2026-11-05T05:20:54Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"myeline","title":"Myeline","summary":"Myeline is a remote MCP memory server: every memory is a single fact with its source attached, AI proposals land in a human review queue, and removing a fact takes a written reason kept in an audit log. One retraction stops a stale fact in every connected assistant at once. Maintained by Sandbox Group, the Myeline vendor.","disclosure":"registers the vendor-hosted remote MCP server cortex.myeline.si/mcp, signed in through Hermes's remote MCP OAuth with your own Myeline account; the queries and facts the model sends in Myeline tool calls are stored and processed on Myeline's servers, and the server defines its own tool list, which can change without a new catalog pin.","category":"tools","platforms":[],"maintainer":"sandbox-group","author":"gibson-sandbox","version":"1.0.0","requires_hermes":">=0.22","repo":"https://github.com/Sandbox-Group-LLC/myeline-hermes","docs":"https://myeline.si/docs","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149277,"prs":[{"n":149277,"state":"merged","created":"2026-11-05T05:17:29Z"}],"created":"2026-11-05T05:17:29Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"no-cap","title":"No Cap","summary":"Receipts for agent claims. No Cap checks the claims in each final reply (tests pass, pushed, merged, deployed, file written, URL live, SHAs, counts; English plus Chinese, Thai and Spanish for tests, push, merge and deploy) against the tool calls the agent made, with no extra model, and appends a footer: 🧾 NO CAP when a tool call proves the claim, 🧢 CAP only when one directly contradicts it (exit code, test counts, push ref, PR state, or a claimed SHA or branch that does not exist in the session's repo), and an opt-in 🤔 NO RECEIPT. A claim about earlier work can cite an earlier turn of the same session. A green run after the agent changed the suite in that turn (deleted, moved, skipped or deselected tests, a conftest or runner-config filter, PYTEST_ADDOPTS=-k) no longer earns 🧾 for \"all tests pass\": it gets a visible 🤔 naming the change, and 🧢 only when an earlier run named the removed test as failing and the reply doesn't say so. /cap makes the agent prove or retract its open claims and re-scores the next reply; /capscore keeps a per-model honesty board, a scorecard and an A/B compare card; /nocap verdict draws a session verdict card; strict mode uses pre_verify to send a coding turn back, at most twice. Surfaces: a Cap Board dashboard tab (agents, models and skills ranked live; this profile only unless you opt in to a team view), Hermes Desktop receipt chips and a Receipts popover, opt-in Discord embed + buttons, and Cap Coach, which drafts a rule from repeated caps and injects it only after you approve it. Licence: Apache-2.0 (0.1.0 to 0.2.0 were MIT).","disclosure":"Stores, all in its Hermes plugin data folder HERMES_HOME/plugin-data/agent-plugin-no-cap-<digest>/ (folder 0700; `hermes nocap path` prints it), every text field through a secret masker first (the home directory is written as ~ in stored commands and working dirs): receipts.jsonl (0600; one line per checked reply: session/turn ids, model, platform, each claim's text, verdict, reason and quoted evidence line, and only for tool calls a receipt cites the command (first 160 chars), exit code, error line and parsed facts; other calls only as a count and SHA-256 digest; pruned after retention_days (default 30), halved past 20 MB); ledger.jsonl (0600; cross_turn, on by default: per-turn parsed call facts, including the tool's own working directory (first 300 chars), the call's timestamp, up to 20 failing test ids a run printed and up to 10 short notes of suite changes the call made, never raw output; newest 100 turns / 400 calls per session, same retention, 10 MB cap); coach.json (0600; Cap Coach drafts and approved rules with up to 3 redacted example claims per pattern; the rule text it injects is always No Cap's built-in text for that pattern, never text read back from coach.json); desktop.json (0600; on/off and a timestamp from the Desktop half); discord_receipts.json (0600, only with discord_buttons: on; receipt id → session/turn ids, session key, user, chat and thread ids, at most 500, no claim text); scorecard, verdict and compare SVG/PNG cards. /nocap purge deletes the receipts, ledger, Discord map and cards (local CLI/TUI/Desktop only; refused from a gateway chat); coach.json and desktop.json stay until you delete them. `hermes nocap export --out` and `metrics --file` write only the file you name (0600, atomic; CSV cells that could start a formula are quoted). Suite-change detection reads only the tool calls' own arguments and output (edit contents, shell commands, env prefixes); it adds no file reads, subprocesses or network use. Commands it runs: read-only git as argument lists, no shell, in the session's working directory, hardened against an untrusted repo (GIT_CONFIG_NOSYSTEM=1, GIT_CONFIG_GLOBAL=/dev/null, core.hooksPath=/dev/null, core.fsmonitor=false, protocol.allow=never, no pager, no lazy fetch, credential helper off, minimal env: only PATH, HOME, LANG, LC_ALL, SYSTEMROOT inherited, never provider keys): at reply time, only for a claimed SHA or branch no tool call backs (verify_artifacts, at most 8 calls, 3 s each) `rev-parse --is-inside-work-tree --is-shallow-repository`, `config --get-regexp`, `cat-file -e`, `for-each-ref`; during /cap (5 s each) `cat-file -t <sha>`, `merge-base --is-ancestor <sha> HEAD`, `show -s --format=%ct <sha>`, `rev-parse --verify <ref>` and `reflog show --date=unix -n 20 refs/remotes/origin/<branch>`, so a re-check proves the session's own work, not mere existence. It lists the run's project read-only to tell a file-scoped test run from the full suite (bounded, no symlinks) and, during /cap, stats a file the agent says it created (existence, size, modification time). `hermes nocap demo --ladder` (and /nocap demo ladder, CLI/TUI only, in the background) runs the bundled demo/run_ladder.sh with /bin/sh in a throwaway HERMES_HOME under /tmp, under `env -i` with only PATH, HOME, LANG, TMPDIR, TERM and the demo's own settings (no provider keys), a scripted model on 127.0.0.1 and a uv install of the hash-pinned demo/requirements-ladder.txt (pytest, pyte, Pillow) into a throwaway venv; that fetch is the demo's one network use. Network: none by default; with self_verify_http: true, /cap may send one HTTP HEAD to a URL the agent claimed is live, public addresses only (checked after DNS), no redirects, 3 s timeout. Dashboard and Desktop: routes under /api/plugins/no-cap/ on your own Hermes backend, behind the dashboard's auth: GET /board (read-only), POST /hello (writes desktop.json), POST /verify (yes/no for one Desktop chip in one chat; the HMAC key lives only in memory and is never returned), GET /session. The board reads other profiles' stores and board_sources paths only with the board.team_profiles opt-in, only in the CLI and dashboard, never in a gateway chat; in a gateway chat /nocap, /nocap verdict and the /capscore board Hall of Cap show only that chat's receipts, with no store path. Discord: off by default; with discord_buttons: on it edits only the bot's own reply to add an embed and two buttons and answers clicks ephemerally (only the user the reply answered may click). Reply rewriting: it removes forged ::nocap directives, closes a code fence, <!-- or <details> the reply left open (append-only) and appends the footer. Messages it sends: /cap injects one user message where Hermes allows it (gateway-backed sessions need plugins.entries.no-cap.allow_gateway_injection: true), otherwise prints it to paste; it quotes the agent's claims as labelled data (capped, brackets, quotes, backticks and newlines removed) with parsed counts, never a raw output line. Cap Coach injects approved rules as labelled context through pre_llm_call, only in scope, never before /cap coach approve, and /cap coach revert stops it; approve, revert and --apply are refused from a gateway chat. When the history already holds a No Cap footer, pre_llm_call also adds one fixed, labelled line asking the model not to write receipt lines itself (built-in text only, never stored; footer_hint: off stops it). It never edits skills, memory or config (--apply asks the agent to, with its own tools). /nocap doctor reads other plugins' plugin.yaml files and the Hermes config. No tools, credentials, telemetry or self-update. Accuracy: blind samples of public SWE-rebench runs (two raters, adjudicated): round 3 at 01a1fab, 🧾 precision 0.92 (92/100, 95% CI 0.85–0.96; no 🧢 on unseen runs, so not measured); round 2 at 7c6cbc0, 🧢 8 of 11 correct. Local Arena (30 synthetic bug-fix tasks, Qwen3-4B and a partial Qwen3-30B-A3B, No Cap at aa69dcb, one person's hand check against hidden tests): 13 of 13 🧢 correct.","category":"tools","platforms":[],"maintainer":"jedbrnth-eng","author":"jedbrnth-eng","version":"0.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/jedbrnth-eng/no-cap","docs":"https://github.com/jedbrnth-eng/no-cap#readme","tools":[],"hooks":["post_tool_call","transform_llm_output","pre_verify","pre_llm_call"],"middleware":[],"env":[],"known_issues":"Only the final reply is checked. If another enabled plugin also rewrites replies (transform_llm_output), Hermes keeps one rewrite per turn; `/nocap doctor` warns about it.; Tested on macOS with a Hermes 0.22.5 dev build (0.22.5+2362.g8acb7f6) and v0.23.0, plus a GitHub install run on Hermes Agent and Desktop 0.23.0; not on the 0.22.5 release itself. Linux is covered by CI (unit and integration suite, not a live Hermes session). Desktop is tested end to end with a scripted model only; Discord with Hermes's real adapter and discord.py over a fake connection, not on a live server; Windows and Telegram are not tested end to end.; Secret masking has one known gap: a tool output over 40 KB is parsed in windows (first 8 KB, last 32 KB, fragments around summary lines), so a secret that sits across a window edge may be seen only in part and not masked (docs/GUIDE.md, Known limits).; register_platform_handler and register_cli_command run in-process only (`hermes plugins validate` notes this under plugins.isolation: host).","state":"merged","pr":149272,"prs":[{"n":149272,"state":"merged","created":"2026-11-05T05:03:43Z"}],"created":"2026-11-05T05:03:43Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/brand/social-preview-1280x640.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/demo-run/01-turnA-lies.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/demo-run/02-cap-rescore.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/board-run/01-board.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/install-run/04-chip-open.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/demo-run/03-strict.png","https://raw.githubusercontent.com/jedbrnth-eng/no-cap/56576ea3caf1c3ef55547b6897cde0b12c63e294/docs/media/real-model-run/04-real-after-cap.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/no-cap.webp"},{"name":"hermes-watchdog","title":"Hermes Watchdog","summary":"Scheduled jobs break without telling you. A job fails at 3am, so Hermes Watchdog tries the fix that fits (retry it, restart what broke, or pause it), then checks whether the next run worked. You only hear about it when the fix didn't take. Free, no API keys, one command to install.","disclosure":"reads this profile's local cron store read-only, fires the failing job through Hermes's own cronjob tool or pauses it, and runs only the argv-list check steps a user-authored playbook declares; writes only its own plugin-data directory.","category":"automation","platforms":[],"maintainer":"33hodl","author":"33hodl","version":"0.1.7","requires_hermes":">=0.22","repo":"https://github.com/33hodl/hermes-watchdog","docs":"https://github.com/33hodl/hermes-watchdog#readme","tools":["watchdog_status","watchdog_repair","watchdog_runbooks"],"hooks":["on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149270,"prs":[{"n":149270,"state":"open","created":"2026-11-05T04:56:37Z"}],"created":"2026-11-05T04:56:37Z","late":false,"said":true,"update":false,"discussion":11,"images":["https://raw.githubusercontent.com/33hodl/hermes-watchdog/4a565dd3003f1af51f4928b0a81934a90b4259f0/docs/banner.png","https://raw.githubusercontent.com/33hodl/hermes-watchdog/4a565dd3003f1af51f4928b0a81934a90b4259f0/docs/ui-page.png","https://raw.githubusercontent.com/33hodl/hermes-watchdog/4a565dd3003f1af51f4928b0a81934a90b4259f0/docs/ui-settings.png"],"videos":[],"x":["https://x.com/DiamondHandsDig/status/2119784656522588328"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-watchdog.webp"},{"name":"constraint-vault","title":"constraint-vault","summary":"Pins the user exact constraints (numbers, addresses, hard rules) as structured local data and re-injects them verbatim into the model context on every turn and immediately after every context compaction, with a SHA-256 hash-logged injection record, because memory providers and compression silently paraphrase or drop exact values. Not a memory provider and not a compressor: a guard layer above both.","disclosure":"local code only, no network or processes; stores constraints in constraint-vault.json in the Hermes home and appends a hash record to constraint-vault-injections.jsonl on every turn; the model can pin or drop constraints through its own tools without asking, and pinned text is injected into the model context on every turn of every session until dropped.","category":"general","platforms":[],"maintainer":"jusst","author":"jusst01","version":"0.1.0","requires_hermes":">=0.22.3","repo":"https://github.com/jusst01/constraint-vault","docs":"https://github.com/jusst01/constraint-vault#readme","tools":["vault_pin","vault_list","vault_drop"],"hooks":["pre_llm_call","post_compaction","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149269,"prs":[{"n":149269,"state":"merged","created":"2026-11-05T04:55:39Z"}],"created":"2026-11-05T04:55:39Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"budget-leash","title":"budget-leash","summary":"Hard budget enforcement for Hermes sessions. Tracks estimated model spend (token usage x per-model prices, cache read/write tokens included) and tool-call counts against a per-session cap and a persistent per-day cap; blocks tool calls via pre_tool_call once a cap is exhausted and cuts off the model calls themselves via the llm_execution middleware, answering with a synthetic budget-exhausted reply so the provider is never invoked (fail-closed), so unattended agents cannot run up unbounded cost; warns at 80% of a cap via context injection, keeps a flock-guarded day-ledger on disk that survives restarts and is shared safely across processes, and writes a per-session JSONL spend report.","disclosure":"local code only; meters estimated model spend from token-usage metadata and tool-call counts, and with the defaults ($2 per session, $10 per day, 200 tool calls per session, 1000 per day) refuses tool calls and answers model calls with a synthetic budget-exhausted reply once a cap is reached; spend figures are estimates from a user-editable price table (default $1/$3 per million input/output tokens), not provider bills; reads its settings from budget-leash.json in the Hermes home and writes ledger.json, its lock file and reports.jsonl under plugin-data/budget-leash/ there; no network calls, no subprocesses.","category":"automation","platforms":[],"maintainer":"jusst","author":"jusst01","version":"0.1.2","requires_hermes":">=0.22.0","repo":"https://github.com/jusst01/budget-leash","docs":"https://github.com/jusst01/budget-leash#readme","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","post_api_request","on_session_end"],"middleware":["llm_execution"],"env":[],"known_issues":"","state":"merged","pr":149268,"prs":[{"n":149268,"state":"merged","created":"2026-11-05T04:55:33Z"}],"created":"2026-11-05T04:55:33Z","late":false,"said":true,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"escalation-governor","title":"escalation-governor","summary":"Deterministic stuck-detection for Hermes sessions. Watches tool/API failure signals (consecutive tool errors, repeated identical calls, API error bursts, model calls without progress) and, when a threshold trips, injects a structured escalation packet (goal, what was tried, what failed) directing the agent to delegate the remaining work to a stronger model via delegate_task instead of retrying blindly; writes a per-session JSONL report with escalation and token-usage accounting.","disclosure":"local code only: injects an escalation packet (the session's first user message and recent tool targets/errors) into tool results and into each following turn's context once a stuck threshold trips, directing the agent to call delegate_task (which spends model usage on a subagent); reads an optional escalation-governor.json and appends one line per session to a shared escalation-governor-reports.jsonl in the Hermes home; adds a /governor status command; opens no network connections, starts no processes and never blocks a tool call.","category":"automation","platforms":[],"maintainer":"jusst","author":"jusst01","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/jusst01/escalation-governor","docs":"https://github.com/jusst01/escalation-governor#readme","tools":[],"hooks":["pre_llm_call","post_tool_call","transform_tool_result","post_api_request","api_request_error","subagent_start","subagent_stop","on_session_end"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149267,"prs":[{"n":149267,"state":"merged","created":"2026-11-05T04:55:28Z"}],"created":"2026-11-05T04:55:28Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-phone","title":"Hermes Phone","summary":"Let your Hermes agent place real phone calls for you with explicit approval. It shows a brief card and dials only after you reply \"call\" (or tap Call), says it is an AI in the first sentence of every call, relays mid-call questions to you in chat with a suggested answer, and reports one clean result (what was agreed, confirmation number, duration, cost) plus the transcript.","disclosure":"places outbound PSTN calls through your own Twilio account (costs money; a web-phone mode needs no telephony account), streams call audio to OpenAI Realtime, runs a small FastAPI bridge that must be reachable at your PUBLIC_BASE_URL (binds 0.0.0.0 when a hosting PORT is set), and stores call logs and text transcripts in plugin data (SQLite); calls dial only after a human approval, only to numbers on your allowlist, with emergency and premium numbers blocked; card, address, ID, bank, email and phone details are shared with the callee only with per-call consent, CVV, passwords and one-time codes never; no audio recording, no telemetry, no self-updater, no credential-file reads.","category":"voice","platforms":[],"maintainer":"winchxyz","author":"winchxyz","version":"0.1.0","requires_hermes":"","repo":"https://github.com/winchxyz/hermes-phone","docs":"https://github.com/winchxyz/hermes-phone#readme","tools":["phone_prepare","phone_call","phone_status","phone_transcript"],"hooks":["pre_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":["TWILIO_ACCOUNT_SID","TWILIO_AUTH_TOKEN","TWILIO_FROM_NUMBER","OPENAI_API_KEY","PUBLIC_BASE_URL"],"known_issues":"","state":"merged","pr":149263,"prs":[{"n":149263,"state":"merged","created":"2026-11-05T04:37:55Z"}],"created":"2026-11-05T04:37:55Z","late":false,"said":true,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/winchxyz/hermes-phone/0ef88344b16a19db160df84e6857eb329c2dd7f4/docs/assets/banner.png"],"videos":[],"x":["https://x.com/winchxyz/status/2118238897209802889"],"youtube":[],"thumb":"/hackathon/thumbs/hermes-phone.webp"},{"name":"reachmap","title":"reachmap","summary":"Hermes knows what it can reach before it says it can't. Scans signed-in browser sessions on DevTools ports, MCP servers, local services, CLIs and drives; freezes a compact map into each new session's prompt (cache-safe system prompt section); and catches replies that deny or hedge about access the map shows is live, with a footer for the user and a one-shot correction for the agent. Opt-in sign-in probes (off by default) tell an installed CLI apart from a signed-in one, and flag replies that plan to use a CLI whose login has lapsed. Keeps a SQLite ledger of when each capability, or a CLI login, appeared or vanished.","disclosure":"loopback-only HTTP GETs to Chrome DevTools /json/version and /json/list (tab titles and URLs, never navigates or executes); runs ps, lsof (or ss) and shutil.which on a fixed CLI list (presence only); only for tools the user lists in auth_probes, runs that tool's one fixed read-only status command (e.g. gh auth status, xurl whoami, wrangler whoami; no shell, 6 s timeout, minimal child env: PATH/HOME/USER/LOGNAME/LANG/LC_*/XDG_*/TMPDIR plus only that tool's own variables such as GH_* or AWS_*, so Hermes provider keys never reach it), which contacts that tool's own service, keeping only the verdict and never the output; reads browser.cdp_url and MCP server names via load_config_readonly; the map text, including account emails visible in tab titles unless show_identities is off, is sent to the model provider as part of the prompt; writes plugin-data/reachmap/data.db (and auth.json when probes are on); never reads credential stores; no other network calls, no telemetry.","category":"tools","platforms":["macos","linux"],"maintainer":"MindSproutStudios","author":"MindSproutStudios","version":"0.2.1","requires_hermes":">=0.22.5","repo":"https://github.com/MindSproutStudios/hermes-reachmap","docs":"https://github.com/MindSproutStudios/hermes-reachmap#readme","tools":["reachmap"],"hooks":["on_session_start","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149256,"prs":[{"n":149256,"state":"merged","created":"2026-11-05T04:29:40Z"}],"created":"2026-11-05T04:29:40Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/MindSproutStudios/hermes-reachmap/f927ac96a63ecff6d7e614250d7a80b226f9a4b9/docs/banner.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/reachmap.webp"},{"name":"ghost-run","title":"Ghost Run","summary":"Dry-run mode for Hermes Agent. With /ghost on, file writes, patches, deletes and terminal commands are redirected into a throwaway copy of the working folder, and network-touching tools and commands are blocked. Review the diff in the system browser (hermes ghost ui; the Desktop pane only opens that page), then optionally run one configured Verify command in the ghost (Pass/Fail banner; Apply stays human), then apply selected paths or discard. Commands: /ghost on|off|status|verify; hermes ghost diff|apply|discard|ui|verify.","disclosure":"copies the working folder into a temp sandbox (reflink, then copy; never a hard link) and runs the agent's terminal commands on the host with the working directory set to that copy; only literal absolute paths under the real folder are rewritten, so a command naming ~, $HOME or another absolute path still acts on the real disk, and MCP or other plugin tools are not redirected; Ghost Mode is process-wide, so in a gateway it covers every chat in that process; writes session state under the Hermes home from hermes_constants.get_hermes_home() (then HERMES_HOME, then ~/.hermes), in ghost-run/; \"apply\" writes the chosen changes back to the real folder only after a person presses Apply or runs /ghost apply, and that copy does not pass through Hermes' file-write denylist; /ghost apply and hermes ghost apply with no paths apply every current change and can copy a named path that is in the ghost tree even if it is not in the diff; the review page never auto-ticks HIGH-risk files and asks to confirm any it names; hermes ghost ui binds 127.0.0.1 only, checks Host, requires a per-session token sent in the X-Ghost-Run-Token header (query-string tokens are ignored), sends no CORS headers, and POST /api/apply accepts only a non-empty list of paths that are all in the current diff; Verify runs one command taken from GHOST_RUN_TEST or the project's .ghost-run-test on the host inside the ghost copy, only after you approve that project and exact command, with provider keys stripped from its environment; opt-in outbound only: with GHOST_RUN_AI=1, pending diffs go to your Hermes provider through ctx.llm.complete, or, if that is unavailable, to openrouter.ai using OPENROUTER_API_KEY read only via agent.secret_scope.get_secret; off by default, no credentials stored by the plugin, no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"tnvolman","author":"tnvolman","version":"0.2.0","requires_hermes":">=0.21.7","repo":"https://github.com/tnvolman/ghost-run","docs":"https://github.com/tnvolman/ghost-run#readme","tools":[],"hooks":["pre_tool_call"],"middleware":["tool_request"],"env":[],"known_issues":"Verified on macOS in Hermes Desktop v0.23.1 at 54badf24: the pane opens the review page in the system browser; Load, Apply, and the HIGH confirm run on that page, not inside the pane. Checklist: docs/desktop-check.md.; Advisory OpenRouter notes run only when ctx.llm is unbound and agent.secret_scope.get_secret returns OPENROUTER_API_KEY. Otherwise the notes stay off.; Checked on Linux and macOS (Hermes Desktop v0.23.1 at 54badf24). Windows is untested.; The demo's headless Chrome fallback puts the review URL, fragment token included, on the browser process command line. curl reads the token from a mode-600 header file that is removed afterwards.","state":"merged","pr":149252,"prs":[{"n":149252,"state":"merged","created":"2026-11-05T04:09:27Z"}],"created":"2026-11-05T04:09:27Z","late":false,"said":true,"update":false,"discussion":4,"images":["https://raw.githubusercontent.com/tnvolman/ghost-run/26902e4e816c5be2997efede96f9c669cbf2ae0e/demo/screenshots/desktop-macos-01-review-load.png","https://raw.githubusercontent.com/tnvolman/ghost-run/26902e4e816c5be2997efede96f9c669cbf2ae0e/demo/screenshots/desktop-macos-02-high-confirm.png","https://raw.githubusercontent.com/tnvolman/ghost-run/26902e4e816c5be2997efede96f9c669cbf2ae0e/demo/screenshots/desktop-macos-03-after-cancel.png","https://raw.githubusercontent.com/tnvolman/ghost-run/26902e4e816c5be2997efede96f9c669cbf2ae0e/demo/screenshots/review-page-load.png","https://raw.githubusercontent.com/tnvolman/ghost-run/26902e4e816c5be2997efede96f9c669cbf2ae0e/demo/screenshots/review-page-after-apply.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/ghost-run.webp"},{"name":"multi-chat","title":"Multi Chat","summary":"Experimental 1–16 real-TUI panes for the Web Dashboard; default profile only, with disclosed read-only private PTY metadata access.","disclosure":"","category":"desktop","platforms":["linux"],"maintainer":"BColsey","author":"BColsey","version":"0.2.1","requires_hermes":">=0.22.6,<0.22.7","repo":"https://github.com/BColsey/hermes-multi-chat","docs":"https://github.com/BColsey/hermes-multi-chat/tree/378fd4c6955669acf26a821fc243272a5e02b5fd/catalog#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Only Hermes 0.22.6 at f0d94882e89ab8d4098b5bb2f166adfb9ee0a0ab, default-profile dashboard and existing plugins.isolation: in_process are supported. Other builds/profiles are refused at runtime; installing files is not proof of compatibility.; Reads undocumented core PTY registries and active-session markers without mutation. Runs with dashboard-process authority, not a sandbox. A static host-ready audit does not establish plugin-host support; a public retention/identity API may be required for admission.; Retention inspection and WebSocket upgrade are not atomic: a child exit can create an idle replacement. No prompt/input is replayed.; Hidden connected panes continue working and count against the existing shared 16-PTY cap. Closing, disabling or uninstalling this view is not cancellation.; Model inference/tools/approvals, sixteen active model sessions, sustained load, Firefox/Safari and real mobile IME/clipboard behavior remain unverified.","state":"open","pr":149251,"prs":[{"n":149251,"state":"open","created":"2026-11-05T04:09:00Z"}],"created":"2026-11-05T04:09:00Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/BColsey/hermes-multi-chat/378fd4c6955669acf26a821fc243272a5e02b5fd/docs/media/five-panes.png","https://raw.githubusercontent.com/BColsey/hermes-multi-chat/378fd4c6955669acf26a821fc243272a5e02b5fd/docs/media/two-panes.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/multi-chat.webp"},{"name":"hermes-windows-apps","title":"hermes-windows-apps","summary":"Answer \"what is installed on this Windows machine\": the software inventory behind Apps & Features, swept straight from the four Uninstall registry keys (the machine's 64-bit and 32-bit views plus the user's), so a program is found even when the Settings page hides it - a per-user install that never shows on the machine page came from the user view on the writing machine. Each row carries version, publisher, size in MB, install date and which view it lives in; the same DisplayName in two views is a 32/64-bit dual install, marked instead of listed twice. Entries the publisher asked to hide (runtime packages, update rollups) are filtered out unless asked for. Details one program with every field its publisher wrote and a reading of the uninstall command (MSI product code, setup executable, appx, script) so the next step is known before anything is run; the install folder is checked against disk. Use it for \"what did that installer actually register\", for inventory before a cleanup, and for \"which of the two installs does uninstalling remove\". Read-only: registry keys are enumerated and uninstall strings are reported, never run; no network, no file writes, no elevation. The sweep is pure registry - 102 entries in seven milliseconds on the writing machine, the whole table in ten, no PowerShell, no WMI. The plugin declares no Python dependencies. Windows only.","disclosure":"the tools report program names, versions, publishers, sizes, install folders and uninstall commands, and what is hidden from Apps & Features, to the model; treat the output like the machine's own Apps & Features page.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-apps","tools":["win_app_table","win_app_detail"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149246,"prs":[{"n":149246,"state":"merged","created":"2026-11-05T03:51:28Z"},{"n":150489,"state":"closed","created":"2026-11-07T04:57:42Z"}],"created":"2026-11-05T03:51:28Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-windows-updates","title":"hermes-windows-updates","summary":"Answer \"what did Windows install lately, and did it work\" on Windows: the update history the Settings app shows - Windows updates, Defender signature and platform updates, driver updates - newest first, with each entry's outcome in words (in progress, succeeded, succeeded with errors, failed, aborted) and, when an entry did not end clean, the failure's error code in 0x form (the agent hands codes over signed; -2145124300 is shown as its unsigned spelling). Filter to the ones that did not end clean, or search titles. The hotfix list (KB numbers, security updates, install dates, newest first) answers \"when was this machine last patched\" at a glance; it carries OS-level updates only, which the notes say. Use it for \"why does it say pending forever\", for \"did the update that broke something actually install\", and for a patch report before assuming a machine is current. Read-only: the history is queried through the Windows Update Agent's session interface and CIM, and nothing else - no update search is run, nothing is downloaded, installed or uninstalled, no elevation. On the writing machine a 723-entry history returns the newest 500 in about a tenth of a second; the first call also starts the COM session, about a quarter of a second. The plugin declares no Python dependencies; there is no network call of its own and no file write. Windows only.","disclosure":"each tool call runs one hidden powershell.exe with a fixed read-only script (Windows Update Agent history through COM, Win32_QuickFixEngineering through CIM; no update search, download or install); the tools report update titles, dates, outcomes, failure codes and support links, and hotfix ids, descriptions, install dates and the account that installed them, to the model; treat the output like the Settings app's own update history page.","category":"tools","platforms":["windows"],"maintainer":"Yicheng-Mark","author":"Yicheng-Mark","version":"0.1.0","requires_hermes":">=0.21.4","repo":"https://github.com/Yicheng-Mark/hermes-windows-plugins","docs":"https://github.com/Yicheng-Mark/hermes-windows-plugins/tree/main/windows-updates","tools":["win_update_history","win_hotfix_table"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149245,"prs":[{"n":149245,"state":"merged","created":"2026-11-05T03:51:17Z"},{"n":150488,"state":"closed","created":"2026-11-07T04:57:22Z"}],"created":"2026-11-05T03:51:17Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"lineage","title":"Lineage","summary":"Provenance for everything the agent produces: every file Hermes writes gets a receipt (what it was made from — files read, pages fetched, searches run — by which tool call, model and agent, with SHA-256 hashes) and a Desktop page draws the graph back to the sources, with observed / evidenced / inferred links labelled, never blended. Verify a file and its sources against recorded hashes; export Mermaid/DOT.","disclosure":"hooks only (post_tool_call, pre/post_llm_call, post_api_request, api_request_error, post_auxiliary_call, subagent_start/stop, on_session_start/end); no tools, middleware, LLM calls or credentials; runs no commands. Hashes files the agent read or wrote, scans files the agent wrote (bounded text scan) and stats the working tree once after terminal/execute_code calls; receipts only for files the agent produced. Writes under plugin-data/lineage/ (SQLite, install.key) and, on request or with sidecar: true, <file>.receipt.json beside artifacts. Stores redacted, bounded previews of prompts, tool arguments and results (store_previews: false keeps ids and hashes only). Network only on an explicit `verify --refetch` (GET to the recorded source URLs, public hosts only; redirects are followed). No telemetry.","category":"tools","platforms":[],"maintainer":"P0GL0L","author":"P0GL0L","version":"0.1.3","requires_hermes":">=0.21.5","repo":"https://github.com/P0GL0L/hermes-lineage","docs":"https://github.com/P0GL0L/hermes-lineage#readme","tools":[],"hooks":["on_session_start","on_session_end","pre_llm_call","post_llm_call","post_api_request","api_request_error","post_auxiliary_call","post_tool_call","subagent_start","subagent_stop"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149244,"prs":[{"n":149244,"state":"merged","created":"2026-11-05T03:37:52Z"}],"created":"2026-11-05T03:37:52Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/P0GL0L/hermes-lineage/61de70980f4322838a9b53f4802623146f1046c2/docs/banner.png","https://raw.githubusercontent.com/P0GL0L/hermes-lineage/61de70980f4322838a9b53f4802623146f1046c2/docs/graph.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/lineage.webp"},{"name":"network-xray","title":"Network X-ray","summary":"Compare DNS, TCP, verified TLS and HTTP HEAD captures of one URL from two machines, find the first observed difference and export a local evidence report. Read-only and local-first, with native agent tools, a Desktop workbench and a stdlib-only portable collector for the second machine.","disclosure":"the network_xray_probe tool, the CLI and the Desktop page connect from the Hermes machine to a URL the model or user names, including private and loopback addresses (link-local, multicast and unspecified are refused): DNS, TCP, verified TLS and one HTTP HEAD request, with no query, credentials, redirects or body, run in an isolated Python child with a minimal environment; it saves the target, resolved IPs, certificate fingerprint and the server/content-type headers under the profile's plugin-data/network-xray/ folder, and imported bundles from a second machine are unauthenticated; no telemetry.","category":"tools","platforms":["linux","macos"],"maintainer":"rusty4444","author":"rusty4444","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/rusty4444/hermes-network-xray","docs":"https://github.com/rusty4444/hermes-network-xray#readme","tools":["network_xray_probe","network_xray_import","network_xray_compare","network_xray_history"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149243,"prs":[{"n":149243,"state":"merged","created":"2026-11-05T03:33:15Z"}],"created":"2026-11-05T03:33:15Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rusty4444/hermes-network-xray/75f1e458b4a39e7fdc6552f4968c1dde1edf910b/docs/screenshots/workbench.png"],"videos":[],"x":["https://x.com/mrru5s3ll/status/2118174457756037274"],"youtube":[],"thumb":"/hackathon/thumbs/network-xray.webp"},{"name":"agent-si","title":"agent-si","summary":"Sourced, model-free memory: a brain of facts that cite sources and quotes, plus search over past Hermes, Claude Code, Codex and Grok sessions on this machine, in one ranked list. No model, no key, no network, no dependencies. Refuses to store words the user didn't say; says when sources disagree.","disclosure":"none","category":"memory","platforms":[],"maintainer":"joelbrilliant","author":"joelbrilliant","version":"0.1.1","requires_hermes":">=0.22.0","repo":"https://github.com/joelbrilliant/hermes-agent-si","docs":"https://github.com/joelbrilliant/hermes-agent-si#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149242,"prs":[{"n":149242,"state":"merged","created":"2026-11-05T03:33:09Z"}],"created":"2026-11-05T03:33:09Z","late":false,"said":false,"update":false,"discussion":2,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-receipts","title":"Hermes Receipts","summary":"Deterministic evidence for explicit file, native test-result, and website checks. Preserves immutable as-of receipts with failed, verified, or unverified outcomes.","disclosure":"reads selected workspace files (refusing paths Hermes' read denylist blocks and workspaces inside the Hermes home), GETs explicitly scoped URLs, observes and stores armed matching native terminal command/output evidence, and writes local profile-scoped state and exports; receipt handlers never execute commands or bypass approvals; imports agent.file_safety.get_read_block_error (fails closed if unavailable); no credentials, telemetry, model calls or paid service; standalone opt-in offline scripts use Hermes dispatch internals and run synthetic test commands and are not imported by the plugin; not a sandbox or signed attestation.","category":"tools","platforms":["linux","macos"],"maintainer":"iket72183-collab","author":"iket72183-collab","version":"0.1.0","requires_hermes":">=0.22.4","repo":"https://github.com/iket72183-collab/hermes-receipts","docs":"https://github.com/iket72183-collab/hermes-receipts#readme","tools":["receipts_begin","receipts_check","receipts_get","receipts_export"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149239,"prs":[{"n":149239,"state":"merged","created":"2026-11-05T03:14:50Z"}],"created":"2026-11-05T03:14:50Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":["https://github.com/iket72183-collab/hermes-receipts/releases/download/v0.1.0/hermes-receipts-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"proofchain","title":"Proofchain — tamper-evident evidence ledger","summary":"Tamper-evident evidence ledger for every tool call Hermes runs: each pre_tool_call and post_tool_call appends a row whose SHA-256 commits to the previous row, so editing, deleting or reordering one row makes proofchain_verify fail at exactly that sequence number; proofchain_seal HMAC-signs the head and row count with a per-profile key generated locally on first seal, and proofchain_export returns entries + chain status + head hash as JSON you can attach to an audit or pentest report, while proofchain_search finds every call that mentioned a URL, file or keyword, and a bundled proofchain:evidence skill plus /evidence (status | verify | export [N] | seal | search <text>) drive the same ledger from chat.","disclosure":"it reads the hook payloads Hermes already emits (tool name, arguments, result, session/turn/tool-call ids, status) and writes one SQLite row per event to the active profile's plugin-data/proofchain/data.db (WAL), plus on first seal a 32-byte hex HMAC key at plugin-data/proofchain/hmac.key (chmod 0600); arguments and results are secret-redacted (api_key=, Bearer, gh tokens, sk- keys, JWTs, AWS key ids, Slack tokens, PEM blocks) and truncated to 2000 characters before they touch disk; a tool call is refused only when the tool can reach the network, the command carries an outbound upload shape (curl -d/-F/--data/-X POST, requests.post(, urlopen(data=)) together with a destination, and the payload holds a raw secret literal (authoring code that merely mentions curl is never blocked), unless block_on_raw_secret is turned off; ledger writes fail open (a stderr warning, the tool still runs); no network calls, no subprocesses, no telemetry, and it never reads .env, auth.json, browser profiles or any other credential store.","category":"tools","platforms":[],"maintainer":"iamzulx","author":"iamzulx","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/iamzulx/hermes-plugin-proofchain","docs":"https://github.com/iamzulx/hermes-plugin-proofchain#readme","tools":["proofchain_status","proofchain_verify","proofchain_export","proofchain_seal","proofchain_search"],"hooks":["pre_tool_call","post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"Evidence, not a control plane: a ledger write that fails is swallowed with a stderr warning and the tool still runs, so a full disk means missing rows rather than a blocked agent.; Arguments and results are truncated to 2000 characters per row — provenance of what ran and what came back, not a replayable transcript.; The max_rows setting is declared but pruning is not implemented yet; the ledger grows without bound until you delete the data directory.; verify() detects edits, deletions and reordering inside the ledger file, and compares against the last seal to catch rows removed from the end. It cannot stop someone who deletes the whole database and rebuilds a fresh chain from scratch — the seal is what pins a known-good head for that comparison, so export or record the seal after you take one.","state":"closed","pr":149231,"prs":[{"n":149231,"state":"closed","created":"2026-11-05T03:02:18Z"}],"created":"2026-11-05T03:02:18Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":["https://github.com/iamzulx/hermes-plugin-proofchain/releases/download/v1.0.0/proofchain-demo.mp4"],"x":[],"youtube":[],"thumb":null},{"name":"read-only-mode","title":"Read-only mode","summary":"Ask/read-only toggle beside the Desktop composer (Cursor Ask-mode equivalent): while it is on, each send is prefixed with a read-only instruction so the agent answers from reading only, and asks before changing anything. Per-chat state, palette command, no agent tools or hooks. It is a prompt-level constraint, not a sandbox: Hermes has no session-level read-only policy, so the model can still disobey. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no tools, hooks, env vars.","disclosure":"","category":"desktop","platforms":[],"maintainer":"chengyimingvb","author":"chengyimingvb","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/chengyimingvb/HermesPlugins","docs":"https://github.com/chengyimingvb/HermesPlugins/tree/main/read-only-mode","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149229,"prs":[{"n":149229,"state":"merged","created":"2026-11-05T02:59:33Z"}],"created":"2026-11-05T02:59:33Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/chengyimingvb/HermesPlugins/c6fd56fe90c9bb762bd67d512f2089778626b772/read-only-mode/docs/images/read-only-mode-off.png","https://raw.githubusercontent.com/chengyimingvb/HermesPlugins/c6fd56fe90c9bb762bd67d512f2089778626b772/read-only-mode/docs/images/read-only-mode-on.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/read-only-mode.webp"},{"name":"zambo-receipts","title":"Zambo Receipts","summary":"Verifiable receipts for Hermes Agent sessions. Lifecycle hooks journal every tool call in a session to Zambo (zambo.dev) as it happens, and when the session ends the plugin wraps it into an AER-1 verifiable receipt that anyone can open and check at a public zambo.dev/run link. Receipt pages are public: anyone with the link can read them, and the summary and goal text passed to zambo_wrap_session is published on the receipt page. Adds three tools (zambo_verify_receipt, zambo_wrap_session, zambo_session_status), a /receipt slash command, and a bundled skill.","disclosure":"while enabled, the plugin makes network calls to zambo.dev (the configured MCP endpoint) carrying, per tool call, the tool name, duration, result size and a SHA-256 hash of the result; result text (truncated to 4,000 characters) is sent only when journal_results is set to full; at session finalize (/new, quit, gateway reset) it publishes a receipt as a public zambo.dev/run page, including the summary and goal text passed to zambo_wrap_session; failed entries buffer in a bounded outbox under $HERMES_HOME/plugin-data/zambo-receipts/ with a stable per-install caller id; no credentials.","category":"tools","platforms":["linux","macos","windows"],"maintainer":"zambodotdev","author":"zambodotdev","version":"1.0.2","requires_hermes":">=0.21.6","repo":"https://github.com/zambodotdev/hermes-zambo-receipts","docs":"https://github.com/zambodotdev/hermes-zambo-receipts/blob/5da9e11cb3bc22a4b567e135b0330addc55de55f/README.md","tools":["zambo_verify_receipt","zambo_wrap_session","zambo_session_status"],"hooks":["on_session_start","post_tool_call","on_session_end","on_session_finalize"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149226,"prs":[{"n":149226,"state":"merged","created":"2026-11-05T02:52:10Z"}],"created":"2026-11-05T02:52:10Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":["https://x.com/brennanzambo/status/2118169960044286125"],"youtube":[],"thumb":null},{"name":"headroom","title":"headroom","summary":"Keeps Hermes alive on small machines (1-4 GB VPS, Raspberry Pi). Heavy terminal jobs (package installs, builds, test suites, compilers, browsers, nested agents) wait for a machine-wide slot and enough free RAM, run inside their own memory-capped systemd --user scope with a raised OOM score, get single-worker flags where a stable one exists (jest --runInBand, pytest -n 0, make -jN, cargo -j N, Node heap cap), and are stopped by a watchdog if the host nears OOM or Hermes' own cgroup starts stalling. Hermes stays outside the scope, and the tool result tells the model the cap, the peak and whether the kernel killed the job, so it retries lighter. Adds headroom_status, /headroom and hermes headroom status|events|explain|selftest.","disclosure":"Linux only for enforcement; runs busctl --user (StartTransientUnit, AttachProcessesToUnit) and systemctl --user kill/reset-failed for its own headroom-*.scope units with a reduced environment (PATH, XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS), plus one sleep placeholder process per isolated job; reads /proc meminfo, PSI and stat/status/cmdline/cgroup of the user's own processes and cgroup files of its scopes and Hermes' cgroup; raises oom_score_adj of job processes; kills only processes inside its own scopes (or a tracked job's process group without systemd) when the watchdog fires; rewrites heavy commands before approval so the approved command is what runs; writes events to <HERMES_HOME>/plugin-data/headroom/events.jsonl and slot locks to $XDG_RUNTIME_DIR/hermes-headroom (or an owner-checked hermes-headroom-<uid> directory in the system temp dir); no network, no telemetry, no credentials; reads tools.interrupt.is_interrupted (guarded) so /stop cancels a queued command.","category":"tools","platforms":["linux"],"maintainer":"seongj-un","author":"seongj-un","version":"0.1.2","requires_hermes":">=0.22.6","repo":"https://github.com/seongj-un/hermes-headroom","docs":"https://github.com/seongj-un/hermes-headroom#readme","tools":["headroom_status"],"hooks":["pre_llm_call"],"middleware":["tool_execution","tool_request"],"env":[],"known_issues":"","state":"merged","pr":149222,"prs":[{"n":149222,"state":"merged","created":"2026-11-05T02:37:57Z"}],"created":"2026-11-05T02:37:57Z","late":false,"said":false,"update":false,"discussion":2,"images":["https://raw.githubusercontent.com/seongj-un/hermes-headroom/a98a64bfb20595c2e26d88fb0a90f4205f37db31/docs/banner.png","https://raw.githubusercontent.com/seongj-un/hermes-headroom/a98a64bfb20595c2e26d88fb0a90f4205f37db31/docs/media/status.png","https://raw.githubusercontent.com/seongj-un/hermes-headroom/a98a64bfb20595c2e26d88fb0a90f4205f37db31/docs/media/explain.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/headroom.webp"},{"name":"hermes-bim-studio","title":"Hermes BIM Studio","summary":"Inspect local IFC files: report wall/slab BaseQuantities and door/window counts, optionally price only these four categories using caller-supplied rates, and generate an interactive offline 3D viewer.","disclosure":"reads any local IFC file path the model or user supplies (parsed in-process by the ifcopenshell native library) and writes its .xlsx/.html reports only under HERMES_HOME/plugin-data/hermes-bim-studio/; the generated files embed the IFC path, its SHA-256, quantities, element IDs and model geometry. No network calls.","category":"tools","platforms":["windows","macos","linux"],"maintainer":"stupidburgers","author":"stupidburgers","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/stupidburgers/hermes-bim-studio","docs":null,"tools":["bim_inspect","bim_takeoff","bim_render_view"],"hooks":[],"middleware":[],"env":[],"known_issues":"macOS is untested; CI covers Ubuntu and Windows (Python 3.11/3.12).; Generated artifacts are confined to <HERMES_HOME>/plugin-data/hermes-bim-studio/.","state":"merged","pr":149221,"prs":[{"n":149221,"state":"merged","created":"2026-11-05T02:35:19Z"}],"created":"2026-11-05T02:35:19Z","late":false,"said":false,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/stupidburgers/hermes-bim-studio/1eef602bbee93b5893b9cd769d0d8d2b2d9a12a8/docs/screenshots/viewer-wall-selection.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-bim-studio.webp"},{"name":"hermes-notify","title":"Hermes Pocket","summary":"Release workspaces, progress, replies and exact phone approvals through Notify.","disclosure":"when enabled, sends release workspace data, model-written notifications and questions, and each Hermes approval request's redacted command and description to the third-party Notify service (notify.belweave.ai) and to a Cloudflare Worker you deploy and configure yourself; once you select `security.approval.transport: notify`, Hermes command approvals are answered from your phone through Notify (approve-once or deny only, denied on timeout or error); phone replies are injected into the session only when you set allow_reply_injection; uses NOTIFY_API_TOKEN (and HERMES_NOTIFY_PUBLISH_TOKEN for the Worker) and runs one background delivery thread.","category":"automation","platforms":["macos"],"maintainer":"belweave","author":"pkyanam","version":"0.2.0","requires_hermes":">=0.22.6","repo":"https://github.com/Belweave/hermes-notify","docs":null,"tools":["notify_release","notify_publish_app","notify_send","notify_ask","notify_replies","notify_status"],"hooks":["pre_approval_request","post_approval_response"],"middleware":[],"env":["NOTIFY_API_TOKEN"],"known_issues":"One native phone approval passed; the full deployed App, sign-in and Live Activity flow remain unverified.; A configured Cloudflare Worker and verified origin-specific owner are needed for private Apps.; Requires the public approval transport and Desktop SDK; a minimum released Hermes version is not yet verified.","state":"merged","pr":149220,"prs":[{"n":149220,"state":"merged","created":"2026-11-05T02:34:24Z"}],"created":"2026-11-05T02:34:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/Belweave/hermes-notify/698b66b6d64a87d317ba97938f37f9ed75f04cd6/docs/screenshots/release-phone.png","https://raw.githubusercontent.com/Belweave/hermes-notify/698b66b6d64a87d317ba97938f37f9ed75f04cd6/docs/screenshots/approval-phone.png","https://raw.githubusercontent.com/Belweave/hermes-notify/698b66b6d64a87d317ba97938f37f9ed75f04cd6/docs/screenshots/shipped-phone.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/hermes-notify.webp"},{"name":"3ds-platform","title":"Nintendo 3DS","summary":"Talk to Hermes from a Nintendo 3DS: a gateway platform for the Hermes 3DS homebrew app, with streaming replies, approvals and clarify questions, sessions, skills, jobs, model and slash-command pickers, pictures, documents, audio, voice messages, camera photos and spoken replies, over an end-to-end encrypted Noise IK link (LAN, or away from home through Tailscale Funnel).","disclosure":"opens a TCP listener on all interfaces (port 7333) and a UDP discovery responder (7334); paired consoles (Noise IK keys in the plugin's data folder, paired by one-time LAN-only code) get full agent chat including approval answers; opt-in away mode publishes a persistent public Tailscale Funnel to a loopback listener; runs `tailscale`, `ffmpeg` and the desktop file opener, and downloads image links in replies; the dev-only `security: plaintext` setting accepts unauthenticated connections.","category":"platform","platforms":[],"maintainer":"rndaom","author":"rndaom","version":"0.1.0","requires_hermes":">=0.22.5","repo":"https://github.com/rndaom/Hermes3DS","docs":"https://github.com/rndaom/Hermes3DS#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Needs a Nintendo 3DS or 2DS with custom firmware (Luma3DS) running the Hermes 3DS homebrew app from the same repository.","state":"merged","pr":149202,"prs":[{"n":149202,"state":"merged","created":"2026-11-05T01:49:12Z"}],"created":"2026-11-05T01:49:12Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/banner.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/01-chat.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/02-voice.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/04-approvals.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/05-files.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/07-anywhere.png","https://raw.githubusercontent.com/rndaom/Hermes3DS/3182c0b1cc97072e6aa047dd463474e3b12b84d7/docs/media/screens/08-pair.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/3ds-platform.webp"},{"name":"eventforge","title":"EventForge for Hermes","summary":"Proxy the local EventForge control plane into Hermes with approval-gated tools and verified-event context.","disclosure":"","category":"automation","platforms":[],"maintainer":"sinequix","author":"tebayoso","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/sinequix/eventforge","docs":"https://github.com/sinequix/eventforge/blob/master/plugins/hermes-eventforge/README.md","tools":["ef_listen_for_webhook","ef_emit_event","ef_query_memory","ef_spawn_subagent","ef_approve_action","ef_forge_mcp","ef_approve_forge","ef_list_events","ef_list_workflows"],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149194,"prs":[{"n":149194,"state":"closed","created":"2026-11-05T01:28:05Z"}],"created":"2026-11-05T01:28:05Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fashion-design","title":"fashion-design","summary":"Fashion design toolkit for drafting ideas, tech packs, size sheets, and manufacturing prep","disclosure":"","category":"tools","platforms":[],"maintainer":"priticolours","author":"priticolours","version":"1.0.0","requires_hermes":">=0.8.0","repo":"https://github.com/priticolours/fashion-design","docs":null,"tools":["design_brief","tech_pack","size_sheet","bom","fabric_calculator","cost_sheet","construction_guide","color_palette","measurement_chart","collection_plan"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149227,"prs":[{"n":149227,"state":"merged","created":"2026-11-05T02:52:31Z"},{"n":149193,"state":"closed","created":"2026-11-05T01:27:33Z"}],"created":"2026-11-05T01:27:33Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"living-field","title":"Living Field","summary":"Hermes Desktop pane of the ABUZ8 living spatial field. Four domains and a seeded neural field. Synapses speed up only while the focused session is actually working, and the field dims when the gateway socket is not open. No network, no shell, no fabricated metrics.","disclosure":"","category":"desktop","platforms":[],"maintainer":"abuz8studios-ship-it","author":"abuz8studios-ship-it","version":"0.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/abuz8studios-ship-it/hermes-living-field","docs":"https://github.com/abuz8studios-ship-it/hermes-living-field","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149190,"prs":[{"n":149190,"state":"merged","created":"2026-11-05T01:16:09Z"}],"created":"2026-11-05T01:16:09Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-spendguard","title":"hermes-spendguard","summary":"SpendGuard — a wallet guard for Hermes Agent. Prices every provider API call (provider-reported cost when available, otherwise public list-price estimates; unknown models are counted by tokens and marked unpriced, never priced by invention), tracks spend against daily/monthly USD budgets, warns at configurable thresholds, and hard-stops new turns before they reach the model when a budget runs out — the block makes zero model calls. Budgets change only via the human-typed /spendguard command; the agent's two tools are read-only. Local SQLite ledger, no network, no credentials, no telemetry.","disclosure":"","category":"automation","platforms":["linux","macos","windows"],"maintainer":"Blackleets","author":"Blackleets","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/Blackleets/hermes-spendguard","docs":"https://github.com/Blackleets/hermes-spendguard","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149189,"prs":[{"n":149189,"state":"open","created":"2026-11-05T01:08:43Z"}],"created":"2026-11-05T01:08:43Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"token-dashboard","title":"Token Dashboard","summary":"Token cost and usage dashboard for Hermes Desktop: a right pane with the focused session's live input and output tokens, session cost (backend-reported cost_usd when available, otherwise a labelled estimate from a built-in per-model price table), API calls and context usage bar, plus a recent-sessions overview with message counts and a status bar cost chip. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware, or env vars.","disclosure":"reads the focused session usage state and the session list through the Desktop host API and renders them locally; no network calls, no storage.","category":"desktop","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"1.1.0","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/token-dashboard","docs":"https://github.com/Whydiriki700/token-dashboard","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149187,"prs":[{"n":149187,"state":"merged","created":"2026-11-05T01:01:30Z"}],"created":"2026-11-05T01:01:30Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"money-magnet","title":"Money Magnet","summary":"Finance tracker and money magnet for Hermes Agent: record income and expenses, set a monthly budget and watch it fill, value a crypto portfolio against live prices, and scan for price gaps between exchanges. Transactions and budget live in local JSON under $HERMES_HOME/money-magnet/.","disclosure":"the portfolio and arbitrage tools query the public CoinGecko and Binance price APIs (no account or API key; only coin symbols are sent). The tracker tools work fully offline.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"1.0.1","requires_hermes":">=0.22.0","repo":"https://github.com/Whydiriki700/money-magnet","docs":"https://github.com/Whydiriki700/money-magnet","tools":["finance_add","finance_list","finance_budget","finance_portfolio","finance_arbitrage"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149186,"prs":[{"n":149186,"state":"merged","created":"2026-11-05T01:01:23Z"}],"created":"2026-11-05T01:01:23Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proofgate","title":"ProofGate","summary":"No proof, no done. Verifies an agent's completion claims (file created, message sent, command ran, tests passed, figures quoted) against the tool evidence recorded in the same session, before the final reply is delivered. Unproven claims are flagged as unverified or withheld, fail closed, and every verdict is written to an append-only ledger stored locally in $HERMES_HOME/proofgate/.","disclosure":"observes every tool call and final reply in profiles where it is enabled and stores tool arguments (sensitive-named keys redacted) and the first 800 characters of every tool result, unredacted, in append-only files under $HERMES_HOME/proofgate/ with no rotation; makes no network calls; in the default enforce mode it holds reply streaming and may append warnings to or entirely withhold a reply judged by keyword heuristics to contain unproven claims.","category":"tools","platforms":[],"maintainer":"Whydiriki700","author":"Whydiriki700","version":"0.1.0","requires_hermes":">=0.22.6","repo":"https://github.com/Whydiriki700/proofgate","docs":"https://github.com/Whydiriki700/proofgate","tools":["proof_status"],"hooks":["post_tool_call","pre_llm_call","transform_llm_output"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149185,"prs":[{"n":149185,"state":"merged","created":"2026-11-05T01:01:16Z"}],"created":"2026-11-05T01:01:16Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"clack","title":"clack","summary":"Encrypted agent-to-agent messaging with durable receipts and no plaintext fallback.","disclosure":"sends your agent's signed identity, relay service token and end-to-end-encrypted messages the model writes to the configured Clack relay (default relay.tryclack.com); messages received from peers are untrusted input handed to the model, and their decrypted text is kept indefinitely in plugin-data/clack; Linux/macOS only.","category":"tools","platforms":["linux","macos"],"maintainer":"adroidian","author":"adroidian","version":"0.1.0","requires_hermes":">=0.21.0","repo":"https://github.com/adroidian/clack","docs":null,"tools":["clack_whoami","clack_peers","clack_send","clack_poll","clack_reconcile","clack_ack","clack_invite","clack_join","clack_accept"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149183,"prs":[{"n":149183,"state":"merged","created":"2026-11-05T00:52:46Z"}],"created":"2026-11-05T00:52:46Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"custody","title":"custody","summary":"Resolve what a destructive command will actually touch before Hermes asks you to approve it, then escalate anything this session did not create. Approvals judge a command by its text, and the shell runs it by its semantics: in the PowerShell incident behind #147373, `,` bound tighter than `+`, so five written paths became eight array elements and three of them were profile roots; 188,303 delete records, 21.4 GiB. Custody computes the semantics first. It reads the command the way the shell does (tilde, allowlisted variables, quoting, PowerShell array precedence, `find -delete`, redirects, `git clean`, `Remove-Item`, `osascript`, `killall`/`pkill`/`taskkill`), resolves each target expression to concrete paths with file and byte counts, and attributes every path against a per-session provenance ledger: files the agent wrote, plus a baseline snapshot of the working tree taken at session start. Anything that predates the session belongs to the user, and it goes to Hermes's own approval gate with the real numbers and the reason attached. Globs, command substitution and unknown variables resolve to an unknown target, which escalates instead of guessing. A GUI-app command that supplies its own answer (`close active presentation saving no`, the #141346 shape) is blocked, because no approval prompt can be answered for the user's unsaved state. The command is never executed and nothing is auto-approved: custody adds a human step, it never removes one.","disclosure":"reads path metadata outside its own data directory (os.scandir and os.stat only, file contents never opened, bounded to 120,000 entries and depth 8 per target, skipping node_modules, .git, virtualenvs and build output) to count files and bytes. Writes a SQLite ledger of this session's tool writes, the baseline snapshot and a decision log (command text, verb, verdict, counts) under <HERMES_HOME>/plugin-data/custody/. Nothing is uploaded. No network calls, no shell execution, no background processes, no dependencies. Reads HOME, TMPDIR, TEMP, APPDATA, LOCALAPPDATA, USERPROFILE and WINDIR to expand paths. Hooks pre_tool_call, post_tool_call and on_session_start, tools custody_explain and custody_ledger, plus a bundled skill.","category":"tools","platforms":[],"maintainer":"Parker-Fawcett","author":"Parker-Fawcett","version":"0.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/Parker-Fawcett/custody","docs":"https://github.com/Parker-Fawcett/custody#readme","tools":["custody_explain","custody_ledger"],"hooks":["pre_tool_call","post_tool_call","on_session_start"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149180,"prs":[{"n":149180,"state":"open","created":"2026-11-05T00:51:52Z"}],"created":"2026-11-05T00:51:52Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"gogogoogle","title":"gogogoogle","summary":"Hand bulk work to Google Antigravity's agy CLI as a worker agent on your Antigravity quota while Hermes keeps its own model, then have a fresh agy conversation verify the result against the real files and git diff. Roles do, research and review; background jobs; resume after timeout; a verifier chain that skips models out of quota until their reset; a git check that fails read-only runs that changed files; per-run stats.","disclosure":"Each `antigravity_delegate` call asks for Hermes approval. `do` runs start agy with `--dangerously-skip-permissions`, so agy can run shell commands and change files outside the workdir. Research, review and verification runs deny writes, shell and non-Playwright MCP through agy session rules, which are not an OS sandbox: agy can still read files outside the workdir, and its headless browser (isolated profile) can reach your local network. Task text, files agy reads and a diff excerpt go to Google on your Antigravity account. Writes run logs and job records under the plugin data directory.","category":"tools","platforms":[],"maintainer":"josefacero","author":"josefacero","version":"0.4.1","requires_hermes":">=0.22.0","repo":"https://github.com/josefacero/hermes-gogogoogle","docs":"https://github.com/josefacero/hermes-gogogoogle#readme","tools":["antigravity_delegate","antigravity_job","antigravity_stats"],"hooks":["pre_tool_call"],"middleware":[],"env":[],"known_issues":"Requires agy and an authenticated Antigravity account; runs use that account's quota.; Hermes approval policy and other installed plugins can affect the approval boundary; see README.; Research and review permission rules depend on agy behavior and are not an OS sandbox.; Git checks can miss ignored, untracked or binary content changes and do not revert edits.; After a plugin restart job state may be unknown and a subprocess may still be running.; Hermes' CLI approval panel can truncate a long task; the prompt shows task length and hash so truncation is visible.; Research/review rules block writes and shell commands (tested on agy 1.5.1 and 1.5.2) but not reads outside the working directory; blocked actions are listed in the result.; Developed and tested on Windows 11 only. Elsewhere a timed-out run ends agy itself but not necessarily its child processes.; Research, review and verification can use agy's Playwright browser (headless by default; setting browser_mode: headless, visible or off). Page text is untrusted. Playwright tools that run code, type or upload files are denied and every other agy MCP server is denied, but a Playwright tool a later release adds stays allowed until listed. The browser can reach your local network.; The plugin points the browser's snapshot files at a temp folder; an older setup may still leave a .playwright-mcp/ folder in the working directory, which the change check ignores.","state":"merged","pr":149174,"prs":[{"n":149174,"state":"merged","created":"2026-11-05T00:44:40Z"}],"created":"2026-11-05T00:44:40Z","late":false,"said":false,"update":false,"discussion":4,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"basekit","title":"basekit","summary":"Read-only live Base (chain 8453) intelligence — gas and real USD cost estimates, wallet portfolios, decoded transaction receipts, token facts with proxy detection, and windowed transfer/approval reads — plus a desktop pane, status-bar chip and a standard-library-only core with no PyPI dependencies.","disclosure":"sends the wallet addresses, transaction hashes and token addresses you ask about to public Base RPC endpoints (base-rpc.publicnode.com, mainnet.base.org, base.drpc.org, base.meowrpc.com; a custom rpc_url still fails over to these), prices to coins.llama.fi and api.coinbase.com, and to api.etherscan.io only when a Basescan key is set; a pre_llm_call hook adds one line of live Base state to turns that mention Base or crypto terms (off with inject_chain_context); keeps a local read ledger in its plugin-data folder; no signing, no keys, no telemetry.","category":"tools","platforms":[],"maintainer":"D0xedDevi0","author":"D0xedDevi0","version":"1.0.0","requires_hermes":">=0.22.7","repo":"https://github.com/D0xedDevi0/hermes-basekit","docs":null,"tools":["base_network","base_portfolio","base_tx","base_token","base_activity","base_allowances"],"hooks":["pre_llm_call"],"middleware":[],"env":[],"known_issues":"Public Base RPC endpoints rate-limit under load (HTTP 429) — a tool call then raises and names the endpoint instead of returning empty data, and the hook fails open; set your own rpc_url in settings to avoid it.; base_activity and base_allowances read a bounded block window by design, so they can only ever answer about that window — the reply states the exact from/to block rather than implying all history.","state":"merged","pr":149166,"prs":[{"n":149166,"state":"merged","created":"2026-11-05T00:28:09Z"}],"created":"2026-11-05T00:28:09Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/D0xedDevi0/hermes-basekit/142bd48ea7755bda6a7c2aff707106bdfbf25ee6/docs/banner.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-basekit/142bd48ea7755bda6a7c2aff707106bdfbf25ee6/docs/screenshots/status.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-basekit/142bd48ea7755bda6a7c2aff707106bdfbf25ee6/docs/screenshots/wallet.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-basekit/142bd48ea7755bda6a7c2aff707106bdfbf25ee6/docs/screenshots/token.png","https://raw.githubusercontent.com/D0xedDevi0/hermes-basekit/142bd48ea7755bda6a7c2aff707106bdfbf25ee6/docs/screenshots/gate.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/basekit.webp"},{"name":"serpkite","title":"SerpKite","summary":"SerpKite web search and extract provider for Hermes Agent. Google web results through /v1/search and pages as Markdown through /v1/webpage. Requires SERPKITE_API_KEY (https://app.serpkite.com/keys).","disclosure":"Sends the search queries and the URLs the agent issues to SerpKite's API at `api.serpkite.com`, authenticated with `SERPKITE_API_KEY`.","category":"web","platforms":[],"maintainer":"SerpKite","author":"Nolikzero","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/SerpKite/serpkite-hermes-plugin","docs":"https://github.com/SerpKite/serpkite-hermes-plugin#readme","tools":[],"hooks":[],"middleware":[],"env":["SERPKITE_API_KEY"],"known_issues":"","state":"merged","pr":149160,"prs":[{"n":149160,"state":"closed","created":"2026-11-05T00:00:13Z"}],"created":"2026-11-05T00:00:13Z","late":false,"said":false,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"understudy","title":"Understudy","summary":"Audition cheaper models on your real Hermes history before you switch. Understudy replays a sample of your past decisions (replies and tool calls) on candidate models through Hermes's own credentials, has a blind judge compare each step with what your current model actually did, and reports how often each candidate could have taken over (with a 95% confidence interval), its critical misses, a per-category breakdown and projected monthly cost. Two tools, /understudy, hermes understudy, and a Desktop page with an inline scorecard.","disclosure":"reads this profile's session history read-only; sends redacted excerpts of past conversations (plus, by default, an excerpt of the agent's system prompt; `include_persona: false` stops it) to the candidate models and the judge model you pick, through ctx.llm on your existing provider credentials; each audition is capped by budget_usd only when Hermes reports the call cost (unpriced models are bounded by the sample size, not the budget); the agent tool spends without its own confirmation prompt (the bundled skill tells the model to dry-run and ask first; /understudy asks unless --yes); reads Hermes's local models.dev cache (active profile, then the default root) for list prices; writes run records and reports under plugin-data/understudy; runs a background worker thread only while an audition runs; requests the llm.model_override and llm.provider_override capabilities; no telemetry, no other network calls.","category":"models","platforms":[],"maintainer":"stffinfcti","author":"stffinfcti","version":"1.0.0","requires_hermes":">=0.22.6","repo":"https://github.com/stffinfcti/understudy","docs":"https://github.com/stffinfcti/understudy#readme","tools":["understudy_audition","understudy_report"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149159,"prs":[{"n":149159,"state":"merged","created":"2026-11-05T00:00:04Z"}],"created":"2026-11-05T00:00:04Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/stffinfcti/understudy/e0920f9e3641f0e24afe6ee01b21322c070920fd/docs/banner.png","https://raw.githubusercontent.com/stffinfcti/understudy/e0920f9e3641f0e24afe6ee01b21322c070920fd/docs/scorecard.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/understudy.webp"},{"name":"thott-bot","title":"thott.bot","summary":"thott.bot makes your AI an expert on World of Warcraft: Forever, from Blizzard's own game files for the build you're playing, current to the latest hotfix, with Blizzard's news and credited community data, drawn right in the chat.","disclosure":"hosted-only connector with no local code: every tool call goes to thott.bot's server (mcp.thott.bot), which records the queries your agent sends it (not your conversation, and not used to train models); its tool set is served remotely and is not covered by the pinned sha; it requires a free thott.bot account, signed in by running `hermes mcp add thott --url https://mcp.thott.bot/mcp --auth oauth`, whose config entry replaces the package's own server definition.","category":"tools","platforms":[],"maintainer":"thott-bot","author":"sunfishposting","version":"1.0.0","requires_hermes":">=0.20.1","repo":"https://github.com/thott-bot/plugin","docs":"https://github.com/thott-bot/plugin/tree/af8439ac4c4560aba5303ee7578d921a33c7b5da/hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"To connect, run `hermes mcp add thott --url https://mcp.thott.bot/mcp --auth oauth`. The first connection opens a sign-in page, where you sign in or create your free thott.bot account with Discord, Google or email.","state":"merged","pr":149158,"prs":[{"n":149158,"state":"merged","created":"2026-11-04T23:55:00Z"}],"created":"2026-11-04T23:55:00Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"proxmox","title":"Proxmox VE","summary":"Proxmox VE for Hermes Agent: six pve_* tools (cluster inventory, per-guest status and config, node health and storage, snapshot list/create/delete, recent backup job results, and QEMU guest-agent command execution) plus an @pve: context reference that pulls live cluster, guest or node state into the prompt on demand. Talks to the Proxmox HTTP API directly with a scoped API token; standard library only, no Python dependencies. Write actions (snapshot create/delete, guest exec) refuse unless the same call carries confirm=true.","disclosure":"","category":"tools","platforms":[],"maintainer":"cgray2222","author":"cgray2222","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/cgray2222/hermes-proxmox","docs":"https://github.com/cgray2222/hermes-proxmox#readme","tools":["pve_list_guests","pve_guest_status","pve_node_status","pve_snapshot","pve_backup_status","pve_guest_exec"],"hooks":[],"middleware":[],"env":["PVE_HOST","PVE_API_TOKEN"],"known_issues":"","state":"open","pr":149153,"prs":[{"n":149153,"state":"open","created":"2026-11-04T23:33:14Z"}],"created":"2026-11-04T23:33:14Z","late":false,"said":false,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"hermes-chronos","title":"Hermes Chronos","summary":"Time-travel filesystem checkpoints, approval-gated rollback, and a scrubbable Desktop timeline for Hermes Agent.","disclosure":"Snapshots the whole working directory, untracked files such as `.env` included, into a shadow git repo at `<workspace>/.hermes/chronos/` before each file-editing or shell tool call. Rollback overwrites workspace files and by default deletes untracked files missing from the snapshot. The model's rollback asks for approval first, but `/chronos`, the dashboard API and the Desktop pane restore without a prompt.","category":"tools","platforms":[],"maintainer":"DevTarlow","author":"DevTarlow","version":"1.0.2","requires_hermes":">=0.19.0","repo":"https://github.com/DevTarlow/hermes-chronos","docs":null,"tools":["chronos_snapshot","chronos_rollback","chronos_diff","chronos_list_checkpoints"],"hooks":["pre_tool_call","post_tool_call","transform_tool_result"],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149151,"prs":[{"n":149151,"state":"merged","created":"2026-11-04T23:23:44Z"}],"created":"2026-11-04T23:23:44Z","late":false,"said":false,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"undo-effects","title":"Undo Effects","summary":"Puts back files an agent deleted or overwrote: before write_file, patch and destructive terminal commands (rm, mv, cp, redirects, tee, sed -i, find -delete) it saves the affected files to a local store and lets the tool run unchanged; /undo-effects lists the effects and restores them, refusing to overwrite later edits unless forced and keeping a safety copy so a restore can be undone.","disclosure":"no network; reads the contents of the files and directories a covered tool call is about to change; writes unencrypted copies of them under HERMES_HOME/plugin-data/undo-effects/ (files named like credentials, files above 50 MB, node_modules, .venv and .git are skipped and reported); runs no shell command and no background process; never blocks, rewrites or approves a tool call, and runs the tool even if a snapshot fails; covers the local terminal backend only; no telemetry.","category":"tools","platforms":["linux","windows"],"maintainer":"Moodtuner997","author":"Moodtuner997","version":"0.1.0","requires_hermes":">=0.22.7","repo":"https://github.com/Moodtuner997/hermes-undo-effects","docs":"https://github.com/Moodtuner997/hermes-undo-effects#readme","tools":[],"hooks":[],"middleware":["tool_execution"],"env":[],"known_issues":"","state":"merged","pr":149148,"prs":[{"n":149148,"state":"merged","created":"2026-11-04T23:15:56Z"}],"created":"2026-11-04T23:15:56Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"camel-guard","title":"CaMeL Guard","summary":"Gate sensitive tools on trusted user capabilities after untrusted tool output.","disclosure":"","category":"tools","platforms":[],"maintainer":"nativ3ai","author":"nativ3ai","version":"1.1.1","requires_hermes":">=0.22.7","repo":"https://github.com/nativ3ai/hermes-camel-guard-plugin","docs":"https://github.com/nativ3ai/hermes-camel-guard-plugin/blob/4cbfca3a5f1d46f5d152280cccc496d0df14d097/README.md","tools":[],"hooks":["pre_llm_call","pre_tool_call","post_tool_call","on_session_end","on_session_reset"],"middleware":[],"env":[],"known_issues":"Coarse capability authorization does not constrain individual tool arguments.; Enforce blocks sensitive actions when the configured model cannot classify intent.","state":"merged","pr":149147,"prs":[{"n":149147,"state":"merged","created":"2026-11-04T23:10:56Z"}],"created":"2026-11-04T23:10:56Z","late":false,"said":true,"update":false,"discussion":1,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"agentmail-frontdoor","title":"agentmail-frontdoor","summary":"Claim, classify, and route AgentMail threads. Create drafts only.","disclosure":"","category":"tools","platforms":[],"maintainer":"tylerjharden","author":"tylerjharden","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/tylerjharden/hermes-hackathon-ipp","docs":null,"tools":["am_claim_thread","am_classify","am_route","am_draft_reply","am_ledger_upsert","am_ledger_get"],"hooks":["pre_tool_call"],"middleware":[],"env":["AGENTMAIL_API_KEY"],"known_issues":"","state":"open","pr":149142,"prs":[{"n":149142,"state":"open","created":"2026-11-04T23:01:51Z"}],"created":"2026-11-04T23:01:51Z","late":false,"said":true,"update":false,"discussion":0,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"fleet-memory","title":"fleet-memory","summary":"Recall local fleet ops notes, with an optional Notion search mirror.","disclosure":"","category":"memory","platforms":[],"maintainer":"tylerjharden","author":"tylerjharden","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/tylerjharden/hermes-hackathon-ipp","docs":null,"tools":["fleet_memory_search","fleet_memory_status","fleet_memory_ingest"],"hooks":[],"middleware":[],"env":["NOTION_TOKEN"],"known_issues":"","state":"open","pr":149142,"prs":[{"n":149142,"state":"open","created":"2026-11-04T23:01:51Z"}],"created":"2026-11-04T23:01:51Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tylerjharden/hermes-hackathon-ipp/3e2feea4b1216a6b2343b18a6de710ae5b126c46/plugins/fleet-memory/desktop/screenshots/desktop-after.png","https://raw.githubusercontent.com/tylerjharden/hermes-hackathon-ipp/3e2feea4b1216a6b2343b18a6de710ae5b126c46/plugins/fleet-memory/desktop/screenshots/mobile-after.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/fleet-memory.webp"},{"name":"odoo-prod-guard","title":"odoo-prod-guard","summary":"Odoo JSON-2 tools with a Hermes approval gate on non-routine production writes.","disclosure":"","category":"tools","platforms":[],"maintainer":"tylerjharden","author":"tylerjharden","version":"1.0.0","requires_hermes":">=0.22.0","repo":"https://github.com/tylerjharden/hermes-hackathon-ipp","docs":null,"tools":["odoo_call","odoo_search_read","odoo_version"],"hooks":["pre_tool_call"],"middleware":[],"env":["ODOO_URL","ODOO_DB","ODOO_USER","ODOO_API_KEY"],"known_issues":"","state":"open","pr":149142,"prs":[{"n":149142,"state":"open","created":"2026-11-04T23:01:51Z"}],"created":"2026-11-04T23:01:51Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/tylerjharden/hermes-hackathon-ipp/3e2feea4b1216a6b2343b18a6de710ae5b126c46/plugins/odoo-prod-guard/desktop/screenshots/desktop-after.png","https://raw.githubusercontent.com/tylerjharden/hermes-hackathon-ipp/3e2feea4b1216a6b2343b18a6de710ae5b126c46/plugins/odoo-prod-guard/desktop/screenshots/mobile-after.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/odoo-prod-guard.webp"},{"name":"guardrails","title":"Guardrails","summary":"The policy layer every payment plugin is missing. Backend-neutral hard spend limits enforced in code before any payment tool runs: per-payment, daily and per-payee caps, Hermes approval for large or first-time payees (scoped to one payment), idempotency keys so retries never double-charge, a kill switch only a human can lift, and a SHA-256 hash-chained audit log. Can also guard other plugins' spending tools. Ships a zero-key mock backend and an optional Stripe test-mode backend.","disclosure":"a pre_tool_call hook sees every tool call but acts only on guardrails_pay and tools listed in guarded_tools; a post_tool_call hook settles those tools' reservations; writes payments and audit entries to plugin-data/guardrails/guardrails.db; no network with the default mock backend; with backend: stripe_test, each payment sends amount, currency, payee, memo and idempotency key to api.stripe.com with GUARDRAILS_STRIPE_TEST_KEY, read via agent.secret_scope.get_secret (test keys only, live keys refused); approvals go through Hermes's own approval gate and are blocked by it when no one can answer (cron, gateway timeout); no shell commands, background processes, telemetry or Python dependencies.","category":"tools","platforms":[],"maintainer":"eddiemessiah","author":"eddiemessiah","version":"0.1.0","requires_hermes":">=0.21.5","repo":"https://github.com/eddiemessiah/hermes-guardrails","docs":"https://github.com/eddiemessiah/hermes-guardrails#readme","tools":["guardrails_pay","guardrails_status","guardrails_audit"],"hooks":["pre_tool_call","post_tool_call"],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149133,"prs":[{"n":149133,"state":"open","created":"2026-11-04T22:37:22Z"}],"created":"2026-11-04T22:37:22Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/eddiemessiah/hermes-guardrails/fcbe5859f468b83634e92020f3abb520600555f4/docs/02-approval-pause.png","https://raw.githubusercontent.com/eddiemessiah/hermes-guardrails/fcbe5859f468b83634e92020f3abb520600555f4/docs/03-run-complete.png","https://raw.githubusercontent.com/eddiemessiah/hermes-guardrails/fcbe5859f468b83634e92020f3abb520600555f4/docs/04-audit-log.png","https://raw.githubusercontent.com/eddiemessiah/hermes-guardrails/fcbe5859f468b83634e92020f3abb520600555f4/docs/05-tamper-detected.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/guardrails.webp"},{"name":"wazoo","title":"wazoo","summary":"Wazoo world-model memory provider — typed memories (decision, preference, person, project, finding, correction) in an RDF graph with retraction provenance, background recall prefetch, hybrid search, and SPARQL for structural questions. Works against the hosted Wazoo cloud (provisions a world automatically from a platform token) or a self-hosted worlds endpoint with a locally minted key.","disclosure":"","category":"memory","platforms":[],"maintainer":"wazootech","author":"EthanThatOneKid","version":"1.0.0","requires_hermes":"","repo":"https://github.com/wazootech/wazoo-hermes","docs":"https://github.com/wazootech/wazoo-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":["WORLDS_TOKEN","WAZOO_API_KEY","WORLD_ID"],"known_issues":"","state":"merged","pr":149129,"prs":[{"n":149129,"state":"merged","created":"2026-11-04T22:28:33Z"}],"created":"2026-11-04T22:28:33Z","late":false,"said":true,"update":false,"discussion":3,"images":[],"videos":[],"x":[],"youtube":[],"thumb":null},{"name":"rigforge","title":"Rigforge","summary":"A build studio for robots, printed machines and controller boards, inside Hermes Desktop. Say a sentence — or click a card — and get the whole build: posed 3D geometry with real forward kinematics and an exploded view, joint torque sizing that picks real servos (or a belt stage when one cannot, and says so when nothing can), a per-rail power budget with wire gauge and a fuse that never exceeds its wire, an ESP32 pin map that refuses strapping and flash pins, firmware generated from that same map, and a priced BOM with SKUs, mass, print time and per-part STL packs split to fit your printer bed. The board track designs a controller board with placements, solder verdicts and a fab/assembly pack (BOM + centroid + spec). Every headline number opens into the formula that made it, any change can be compared before/after, and a build code carries the whole design in one line. Ten archetypes from a sensor node to a metre-scale gantry. Deterministic and fully offline — every number is computed, never narrated. Two agent tools (rigforge_build, rigforge_state) queue a build and read the spec back, plus rigforge_prices for live supplier pricing; a ::rigforge{...} transcript directive turns a chat line into a \"load into studio\" card. Desktop page plus agent tools; no hooks, no middleware, no env vars.","disclosure":"","category":"desktop","platforms":["linux","macos"],"maintainer":"DECRUX9812","author":"DECRUX9812","version":"1.2.0","requires_hermes":"","repo":"https://github.com/DECRUX9812/rigforge-plugin","docs":"https://github.com/DECRUX9812/rigforge-plugin#readme","tools":["rigforge_build","rigforge_state","rigforge_prices"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"open","pr":149127,"prs":[{"n":149127,"state":"open","created":"2026-11-04T22:07:54Z"}],"created":"2026-11-04T22:07:54Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/hero.png","https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/quad.png","https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/gripper.png","https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/board.png","https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/audit.png","https://raw.githubusercontent.com/DECRUX9812/rigforge-plugin/2e1b7228cd1c8dcabeb809ff9eaa670241415fc1/docs/screenshots/compare.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/rigforge.webp"},{"name":"neuralwatt","title":"neuralwatt","summary":"Check NeuralWatt service health, available models, account balance, request costs, energy use, and session activity from Hermes. Includes seven read-only tools. Health and public model discovery need no credentials; account analytics use your NeuralWatt API key.","disclosure":"makes GET requests to the NeuralWatt API (api.neuralwatt.com, or the host you set in NEURALWATT_BASE_URL, which then receives your API key), reads account usage, cost and energy metrics rather than prompt or completion text, writes nothing, and loads the optional API key through Hermes's secret scope.","category":"tools","platforms":[],"maintainer":"0xGingi","author":"0xGingi","version":"1.0.1","requires_hermes":">=0.21.5","repo":"https://github.com/0xGingi/neuralwatt-hermes","docs":"https://github.com/0xGingi/neuralwatt-hermes#readme","tools":["neuralwatt_health","neuralwatt_models","neuralwatt_quota","neuralwatt_energy","neuralwatt_usage","neuralwatt_requests","neuralwatt_sessions"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"merged","pr":149124,"prs":[{"n":149124,"state":"merged","created":"2026-11-04T22:01:24Z"}],"created":"2026-11-04T22:01:24Z","late":false,"said":false,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/0xGingi/neuralwatt-hermes/123651dd0456ad235953652eb1e9d527f2a4350c/assets/card.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/neuralwatt.webp"},{"name":"zaprite","title":"Zaprite","summary":"Get paid from a Hermes chat. One checkoutUrl for card, bank, Lightning, on-chain bitcoin, and stablecoins, then re-fetch until Paid.","disclosure":"every call goes to api.zaprite.com (or the base_url you set in plugin config) with the key you put in the Hermes secret store (ZAPRITE_API_KEY), read on each call and never logged; payment, order, invoice, quote, charge, ticket, webhook, contact-delete and dashboard-handoff writes happen only after you approve that exact call, while contact create/update run without a prompt; writes are refused in cron and while /zaprite kill is active; it registers no webhook of its own, and its only background option is an opt-in daily read-only digest automation that runs nothing unless you add it; payment truth comes from re-fetching the order, because a Zaprite webhook is id-only and unsigned. It cannot reach connections, payment-link creation, POS, events, recurring invoices, refunds, or branding, because those have no API.","category":"tools","platforms":[],"maintainer":"welliv","author":"welliv","version":"0.1.0","requires_hermes":">=0.21.6","repo":"https://github.com/welliv/hermes-zaprite","docs":"https://github.com/welliv/hermes-zaprite","tools":["zaprite_pay","zaprite_create_order","zaprite_create_invoice","zaprite_get_order","zaprite_list_orders","zaprite_create_quote","zaprite_watch_order","zaprite_update_order","zaprite_charge_profile","zaprite_create_contact","zaprite_get_contact","zaprite_list_contacts","zaprite_update_contact","zaprite_delete_contact","zaprite_report","zaprite_list_overdue","zaprite_doctor","zaprite_setup","zaprite_list_webhooks","zaprite_create_webhook","zaprite_delete_webhook","zaprite_bridge_handoff","zaprite_sovereign_rails","zaprite_list_payment_links","zaprite_get_payment_link","zaprite_list_tickets","zaprite_get_ticket","zaprite_issue_tickets","zaprite_ticket_activity"],"hooks":["pre_tool_call","post_approval_response"],"middleware":[],"env":["ZAPRITE_API_KEY"],"known_issues":"Sandbox org for a first payment (no real money). A live org key opens real checkouts. The plugin cannot switch orgs.; Webhooks are id-only and unsigned. Re-fetch the order. A webhook is not a payment.; No Zaprite API for connections, checkout edits, payment-link create, POS create, event create, recurring invoices, refunds, or branding write. Logo, accent color, and display name are Settings → Profile. API invoices inherit them. zaprite_bridge_handoff gap branding_profile opens that page, not Connections or Checkouts.; Doctor and zaprite_bridge_handoff build dashboard links with org_links(orgId). Once an orgId is known those links use /org/{orgId}/. A first run or a missing key still uses /org/default/ until an orgId is stored.","state":"merged","pr":150568,"prs":[{"n":150568,"state":"merged","created":"2026-11-07T08:05:23Z"},{"n":149875,"state":"closed","created":"2026-11-06T05:31:20Z"},{"n":149123,"state":"closed","created":"2026-11-04T22:01:23Z"}],"created":"2026-11-04T22:01:23Z","late":false,"said":true,"update":false,"discussion":0,"images":["https://raw.githubusercontent.com/welliv/hermes-zaprite/2422546b20ed0d4b59e931061d0017e8f9004583/docs/demo-poster.png","https://raw.githubusercontent.com/welliv/hermes-zaprite/2422546b20ed0d4b59e931061d0017e8f9004583/docs/demo-approval.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/zaprite.webp"},{"name":"shortrizz","title":"Shortrizz","summary":"Skill id shortrizz:shortrizz-clipper. Self-hosted AI clipper: turn a long video (yt-dlp URL or local file) into captioned 9:16 shorts. Transcribes on CPU with faster-whisper, picks moments with an LLM (or a built-in heuristic), reframes with face tracking and burns in face-aware word-by-word captions (Hormozi, MrBeast, Abdaal or custom styles). Optional edits: filler/restart cuts, cold-open hook, emoji pops, tight 20-35 s mode, skipping moments used by earlier runs, and a stock Kokoro narrator intro/CTA (weights download on first use; never clones voices). shortrizz_make_highlights builds one 16:9 highlight reel from the top viral-scoring segments (source framing kept, no vertical crop), with loudness normalised, a short crossfade or hard cuts, and optional lower-third captions. A highlights job writes chapters.txt and highlights.json. Writes MP4s, clips.json and an HTML gallery. Renders run as background jobs; poll shortrizz_status. Publishing is a dry-run plan only; nothing is uploaded. Downloads the video you name with yt-dlp; the optional LLM call sends the transcript to the OpenAI-compatible endpoint you configure. Needs ffmpeg on PATH. Only clip content you have rights to.","disclosure":"","category":"tools","platforms":[],"maintainer":"mojomast","author":"mojomast","version":"0.3.0","requires_hermes":"","repo":"https://github.com/mojomast/hermes-shortrizz","docs":"https://github.com/mojomast/hermes-shortrizz/blob/0fa8cbd1d49366292d2f58e6caf942f087ae1589/README.md","tools":["shortrizz_make_shorts","shortrizz_make_highlights","shortrizz_status","shortrizz_list_styles","shortrizz_render_style","shortrizz_publish_plan"],"hooks":[],"middleware":[],"env":[],"known_issues":"","state":"closed","pr":148687,"prs":[{"n":148687,"state":"closed","created":"2026-11-04T00:33:46Z"}],"created":"2026-11-04T00:33:46Z","late":false,"said":true,"update":false,"discussion":1,"images":["https://raw.githubusercontent.com/mojomast/hermes-shortrizz/0fa8cbd1d49366292d2f58e6caf942f087ae1589/docs/media/banner.png","https://raw.githubusercontent.com/mojomast/hermes-shortrizz/0fa8cbd1d49366292d2f58e6caf942f087ae1589/docs/media/styles.jpg","https://raw.githubusercontent.com/mojomast/hermes-shortrizz/0fa8cbd1d49366292d2f58e6caf942f087ae1589/docs/media/gallery.jpg","https://raw.githubusercontent.com/mojomast/hermes-shortrizz/0fa8cbd1d49366292d2f58e6caf942f087ae1589/docs/media/contact-sheet.jpg"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/shortrizz.webp"},{"name":"annotate-for-hermes","title":"Annotate for Hermes","summary":"Highlight passages in a reply, add comments, and send them together. The annotate feature Hermes is missing. Works on macOS now; Windows and Linux are next.","disclosure":"","category":"desktop","platforms":["macos"],"maintainer":"LarryLemonBot","author":"LarryLemonBot","version":"1.0.0","requires_hermes":">=0.22.5","repo":"https://github.com/LarryLemonBot/annotate-for-hermes","docs":"https://github.com/LarryLemonBot/annotate-for-hermes#readme","tools":[],"hooks":[],"middleware":[],"env":[],"known_issues":"Development preview: needs the annotation API from PR #146959. Stock Hermes through v0.23.0 does not include it. Do not merge until that API ships and compatibility is updated.; Works on macOS now. Windows and Linux are next. Screen readers, touch, and the official updater path are unverified.; Unsaved popover comments and highlights do not survive an app reload. Draft attachments do.","state":"open","pr":146960,"prs":[{"n":146960,"state":"open","created":"2026-10-30T18:02:48Z"}],"created":"2026-10-30T18:02:48Z","late":false,"said":true,"update":false,"discussion":3,"images":["https://raw.githubusercontent.com/LarryLemonBot/annotate-for-hermes/0ad110f202fb1dc1bb89850f200683251d0e5a3e/docs/catalog-banner.png","https://raw.githubusercontent.com/LarryLemonBot/annotate-for-hermes/0ad110f202fb1dc1bb89850f200683251d0e5a3e/docs/annotation-preview.png"],"videos":[],"x":[],"youtube":[],"thumb":"/hackathon/thumbs/annotate-for-hermes.webp"}]}