unbrowse-hermes
Hermes Agent plugin that makes Unbrowse the preferred tool for website tasks, replacing the built-in CDP browser automation.
Bootstrap Unbrowse first
curl -fsSL https://www.unbrowse.ai/install.sh | bash
unbrowse health
Installation
Option A: pip install (recommended)
pip install unbrowse-hermes
The plugin auto-registers via the hermes_agent.plugins entry point. Hermes discovers it on startup, so restart Hermes after install — no config file needed.
Option B: Drop-in plugin directory
Copy the bundled plugin directory into Hermes's plugin directory:
mkdir -p ~/.hermes/plugins
cp -R dropin/unbrowse ~/.hermes/plugins/unbrowse
Hermes scans ~/.hermes/plugins/<name>/ for a plugin.yaml + __init__.py pair on startup.
Verify it loaded
Start Hermes and check:
/tools
You should see unbrowse in the tool list with actions: resolve, search, execute, login, skills, skill, health.
How It Replaces the Browser
What it replaces
Hermes ships with built-in browser tools via Chrome DevTools Protocol (CDP):
/browser connect— attaches to Chrome- The agent navigates pages, clicks, extracts text manually
This is slow, brittle, and returns unstructured text.
What unbrowse provides instead
A single unbrowse tool that reverse-engineers websites into cached API skills:
- First call: captures traffic, discovers the API, returns structured JSON (~5-15s)
- Subsequent calls: re-uses the cached skill (~300ms-1s)
Routing guidance
The plugin provides memory_instructions() that get injected into the agent's system memory:
"Use unbrowse first for any website data extraction, search, or authenticated reads. Only fall back to the browser tool for visual QA, drag-drop, canvas apps, or file uploads."
Note: Hermes has no before_tool_call hook for blocking other tools (unlike OpenClaw). The agent is guided via memory instructions, not forced. For strict blocking, consider using the MCP server integration instead.
"Skills" disambiguation
Hermes has its own "skills" concept (prompt+tool bundles in ~/.hermes/skills/). Unbrowse also uses "skills" for API endpoint bundles. The plugin's tool descriptions clarify: "unbrowse skill" = API endpoint bundle, not a Hermes skill.
Example Session
You: Get the trending repos on GitHub
Agent: [calls unbrowse with action=resolve, intent="get trending repositories", url="https://github.com/trending"]
Agent: Here are today's trending repositories:
1. vercel/ai - 2,847 stars today
2. anthropics/claude-code - 1,523 stars today
...
Actions
| Action | Description | Required params |
|---|---|---|
resolve |
Reverse-engineer a website into API endpoints | intent, url |
search |
Search the Unbrowse skill marketplace | intent |
execute |
Execute a cached skill endpoint | skillId, endpointId |
login |
Authenticate with a website | url |
skills |
List cached skills | -- |
skill |
Inspect a specific skill | skillId |
health |
Check CLI health | -- |
Optional: MCP Alternative
Hermes natively supports MCP servers. If you prefer the MCP approach (which works across multiple frameworks):
hermes mcp add unbrowse -- npx -y @unbrowse/mcp-server
This gives you the same tools without the Python plugin, but you lose memory_instructions() routing guidance.
Development
cd integrations/hermes
pip install -e .
python -m pytest tests/ # 22 tests
Metadata
Release files for unbrowse-hermes 2.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| unbrowse_hermes-2.1.4.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| unbrowse_hermes-2.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.4 kB
Release files / unbrowse_hermes-2.1.4.tar.gz
| Download URL | unbrowse_hermes-2.1.4.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55b7591f9226042cb5c4918376c373556062db04b71b7f4f6fb615351c9c73bc
|
|
BLAKE2b-256 checksum How to use checksums |
40a838e21ad0603d186e3981529e1d8f9d8a05dbda5bd7f3113155f84910730e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / unbrowse_hermes-2.1.4-py3-none-any.whl
| Download URL | unbrowse_hermes-2.1.4-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a01828c05a9412df73621b2228576d18eeb20d5584e8e86d5702159d03b4cdbd
|
|
BLAKE2b-256 checksum How to use checksums |
66aa593ddfdbe4cd04b12824c726cd3e5f514f10b2cbf58aede038a555210e24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|