theseus/bundled-addons/claude-connector
Hermes Dev baf86fc5a6 Claude connector: reach add-on sidebar panels (Aegis, Hermes, Pithos, …)
The connector only drove web pages. Add-on sidebar panels — Aegis's
wallet, Hermes's messenger, Pithos's storage panel, anything with
a sidebar-panel capability — were walled off: list_tabs skipped them
and webContents() refused anything that was not kind:"web".

Panels are now first-class tabs with a negative id, kind:"panel", and
an addon/panelId pair. Each open panel is listed next to the real
tabs; a closed one is still listed so a client can see what exists.
screenshot / snapshot / read_page_text / click / type / press_key /
paste_html / paste_text / wait_for / upload_file / evaluate all work
on them with the same TabDriver a web page uses. navigate /
activate_tab / close_tab refuse panels — the user owns panel
visibility, not the connector.

Approval is per add-on under a synthetic theseus-panel://<addon>
origin, so Aegis is approved once and every Aegis panel is reachable
from then on. The approval modal titles itself "Let Claude control
the Aegis panel?" when the origin is a panel origin, and the body
explains the panel is read, not the whole browser profile. Origin
pinning is skipped (the panel is served from the add-on scheme and
never navigates under us); password-field refusal and the action log
still apply, so a PIN input in a wallet panel is never typed into
and every call is in the connector's log.
2026-10-29 00:06:51 +02:00
..
lib Claude connector: reach add-on sidebar panels (Aegis, Hermes, Pithos, …) 2026-10-29 00:06:51 +02:00
addon.json Claude connector 0.2.0: connect Claude Code and Claude Desktop from the panel 2026-10-24 00:32:06 +03:00
index.js Claude connector: reach add-on sidebar panels (Aegis, Hermes, Pithos, …) 2026-10-29 00:06:51 +02:00
panel.html Theseus 0.3.125: Claude connector gets a simultaneous-session cap 2026-10-27 22:30:23 +02:00
README.md Claude connector 0.2.0: connect Claude Code and Claude Desktop from the panel 2026-10-24 00:32:06 +03:00
stdio-shim.cjs Theseus: Claude connector, an opt-in MCP server for the signed-in profile 2026-10-23 17:45:02 +03:00

Claude connector

Built-in Theseus extension: a local MCP server through which Claude Code or Claude Desktop works in the user's tabs. Setup and safety model are in the Theseus README ("Claude connector (MCP)") and DESIGN-claude-connector.md.

file role
index.js activation, settings (add-on store), server start/stop, panel messages
lib/mcp-server.cjs Streamable HTTP + JSON-RPC, token, Host/Origin guards, sessions, SSE presence
lib/tools.cjs tool definitions and handlers; resolves tabs through api.tabControl
lib/tab-driver.cjs one tab over its own webContents.debugger (CDP 1.3)
lib/policy.cjs site approvals, upload-folder checks, password-field detection
lib/clipboard.cjs put / save / restore the system clipboard around a paste
lib/clients.cjs "Connect": registers the connector with Claude Code (its CLI, user scope) and Claude Desktop (its config file), reports status, re-registers after token/port changes
lib/action-log.cjs timestamped action log (panel + actions.log)
panel.html the sidebar panel
stdio-shim.cjs stdio ⇄ HTTP relay for Claude Desktop, run by Theseus in Node mode

Stored in <userData>/extensions-data/claude-connector.json (token, port, switches, approved origins, upload folders) and <userData>/extensions-data/claude-connector/ (endpoint.json while listening, actions.log).

Needs the host's tab-control capability, which only built-in add-ons get. Turning any extension on or off restarts every add-on, this one included, which ends the connected clients' sessions. A client that does not start a new session by itself reconnects from its MCP menu (/mcp in Claude Code).