All plugins

hermes-browser-extension

Connects Hermes to the separately installed Hermes Browser Extension for user-shared page context and opt-in control of explicitly attached browser tabs. Browser control requires Chromium; Firefox supports chat and page context. Serves authenticated routes on the Hermes API server and stores bounded redacted receipts and screenshots in profile-scoped plugin data.

abundantbeingWebv0.4.0Updated 1 hour ago

About

Connects Hermes to the separately installed Hermes Browser Extension for user-shared page context and opt-in control of explicitly attached browser tabs. Browser control requires Chromium; Firefox supports chat and page context. Serves authenticated routes on the Hermes API server and stores bounded redacted receipts and screenshots in profile-scoped plugin data.

Hermes Browser Extension: the Hermes plugin

The Hermes side of the Hermes Browser Extension,
the browser extension that connects your own browser to your Hermes Agent. It is
not a separate browser: it works in the browser you already use, in the tabs you
choose to share.

The plugin gives Hermes two things:

  • Hermes Control. Your agent works in your real browser tabs, the ones you
    attach and the ones it opens, across several tabs at once: it reads pages,
    clicks, types, fills forms, scrolls, opens pages in new background tabs,
    switches between them, closes and groups them. The extension asks you before
    anything consequential (sending, buying, deleting, switching what you are
    looking at), and it never touches password or payment fields.
  • Browser context. The page, selection and tabs you send with a message
    reach the agent as untrusted reference data, through seven read-only tools.

What you need

| You need | For |
|---|---|
| Hermes Agent 0.22 or newer, with its API server on (API_SERVER_ENABLED=true) | Everything |
| The Hermes Browser Extension, connected to that Hermes | Everything |
| This plugin, installed and enabled for every Hermes profile the extension talks to, then that profile's gateway restarted | Hermes Control on Hermes builds without built-in extension control (canary builds from Oct 24, 2026, and every release after 0.22.5); the browser-context tools on any Hermes |
| A Chromium-based browser (Chrome, Edge, Brave, Comet, Arc, ...) | Hermes Control. Firefox gets chat and page context only: it has no debugger API |
| The extension's address in API_SERVER_CORS_ORIGINS (chrome-extension://<id>) | A Hermes that does not pair with the extension by itself. The extension's Test connection button shows the exact line to add |

Hermes 0.22.5 and earlier still carry Hermes Control in Hermes itself; where it is
switched on, the extension uses that, this plugin registers no tab_* tools, and it
adds the browser-context tools.

Things to know:

  • Named profiles (bots). Each profile needs the plugin enabled and its own
    API_SERVER_KEY. On a gateway that serves several profiles at one address,
    Hermes Control reaches a named profile's copy of the plugin only on a Hermes
    that routes plugin calls per profile (/p/<profile>/api/plugins/...); until
    then it works for the default profile.
  • Hermes Cloud and dashboard connections are chat-only in the extension, so
    they do not use this plugin.
  • One browser per chat. Hermes Control drives the browser that attached the
    chat; two browsers on the same chat are refused rather than guessed between.

Install

# from this repository (the Hermes plugin catalog has no entry for it yet)
hermes plugins install https://github.com/abundantbeing/hermes-browser-extension.git#companion-plugin --enable

# then restart the gateway, and check
hermes plugins list

Add --profile <name> to install it for a named profile. Then, in the extension,
open Settings › About & Diagnostics: the plugin's row says whether it is
loaded, its version and its tools. To use Hermes Control, turn it on in the
Hermes Control panel and attach a tab.

Coming from the plugin's previous name, hermes-browser-companion? Remove that
copy first (hermes plugins remove hermes-browser-companion): both register the
same context tools. The extension flags an old copy in About & Diagnostics.

install.md has per-profile commands, upgrading, every route and
the full tool reference.

What it adds to Hermes

  • Twenty Hermes Control tools, always listed and acting only while your
    browser is attached to the chat: tab_list, tab_create, tab_activate, tab_close,
    tab_group, tab_ungroup to manage tabs, and tab_navigate, tab_back,
    tab_snapshot, tab_screenshot, tab_click, tab_type, tab_fill,
    tab_select, tab_press, tab_hover, tab_drag, tab_scroll,
    tab_scroll_to and tab_batch to act in a page. Every page action takes a
    tab_id, so the agent can work in a background tab without moving you, and
    every result says which tab it ran in. They are separate from Hermes'
    browser_exec and from other plugins' browser_* tools.
  • Seven context tools: browser_context_status, browser_get_context,
    browser_clear_context, browser_event_log, browser_control_status,
    browser_context_journal, browser_text_utility.
  • Three hooks (pre_llm_call, pre_tool_call, post_tool_call), one bundled
    skill (hermes-browser-extension) and six routes on the API server under
    /api/plugins/hermes-browser-extension/, each behind the API server's own
    authentication.

Disclosure

  • It acts in your browser only through the extension, and only in the tabs you
    attached or it opened.
    What needs your approval is decided in the extension.
    Raw CDP, page scripts and file transfer are not part of it, and the plugin
    refuses URLs that point at cloud-metadata addresses or carry an API key.
  • No outbound network calls. It opens no connection to any host. The extension
    connects to the plugin's routes on your Hermes API server, never the other way.
  • No credentials. It reads no secret, .env file, token store or OAuth state,
    declares no requires_env and asks for no privileged capability
    (capabilities: []).
  • No shell commands, no background processes, no telemetry.
  • Page data stays in memory. Context a turn delivers is held for at most 300
    seconds, bound to that turn, and consumed on read. What it writes to disk is
    metadata only (opaque ids, hashes, tool names, timestamps) under its own profile
    data directory, plus screenshots the agent takes: private files, the eight
    newest kept for an hour at most.
  • Reads outside its own data: none. The one file it reads is its own
    plugin.yaml, for the version it reports.

README from the reviewed commit 34e99b9; it updates when the author re-pins.

More by abundantbeing

2 plugins by abundantbeing in the catalog.