Skip to main content

hermes-computer-use

CI License: MIT Python 3.11+ Platform: WSL2 Ubuntu

Scope: Windows 11 + WSL2 Ubuntu 22.04 / 24.04 only. This project intentionally limits its support matrix — native Linux / macOS / Windows are not targets. See docs/WSL_SETUP.md for why and for the full setup walkthrough.

Pixel-level browser automation MCP server. Gives any MCP-speaking agent (hermes-agent, Claude Code, Codex, …) 21 tools to drive a real Chrome browser running in an Xvfb display: screenshots as vision input, OS-level mouse/keyboard as output. No CDP. No navigator.webdriver. No DOM shortcuts.

Think of it as the Linux-side reproduction of Anthropic's computer-use-demo — but exposed over stdio MCP so you can pair it with any agent runtime and any vision-capable model.

agent ── stdio MCP ──▶ hermes_computer_use.server ── subprocess ──▶ xdotool / scrot
                                                                          │
                                                                          ▼
                                                                      Xvfb :99
                                                                          │
                                                          ┌───────────────┴────────────────┐
                                                          ▼                                ▼
                                                    x11vnc :5900              websockify + noVNC :6080
                                                (native VNC clients)            (browser viewer)

See docs/ARCHITECTURE.md for the longer version.

Why

Playwright / CDP hermes-computer-use
navigator.webdriver true (detectable) undefined
CDP endpoint open none
DOM access direct (fast, brittle to markup changes) screenshot only (slower, resilient to selector renames)
Anti-bot footprint large, constantly patched near-zero: stock Chrome, stock X11 input
Best for reliable flows on sites you own agents operating unfamiliar sites like a human

If your automation has to walk a login funnel on a site with Cloudflare, Kasada, or reCAPTCHA sprinkled on it, this stack usually passes where Playwright gets stopped — because the browser is indistinguishable from a stock Chrome driven by a stock X server.

Install

Prerequisites (Windows host): Windows 11, WSL2 with an Ubuntu 22.04 or 24.04 distro, and systemd enabled in WSL. Full walkthrough in docs/WSL_SETUP.md.

Everything below runs inside the WSL shell, not in PowerShell.

git clone https://github.com/Noah3521/hermes-computer-use.git ~/hermes-computer-use
cd ~/hermes-computer-use

# 1. System packages (sudo): Xvfb, fluxbox, x11vnc, xdotool, ydotool, scrot,
#    ImageMagick, CJK fonts, Google Chrome, plus uinput if available.
bash scripts/setup.sh

# 2. Python package
python3 -m venv .venv
. .venv/bin/activate
pip install -e ".[novnc]"       # omit [novnc] if you don't want the web viewer

# 3. Optional browser-based observer at http://localhost:6080/vnc.html
bash scripts/install-novnc.sh

# 4. Persistent services
mkdir -p ~/.config/systemd/user
cp systemd/computer-use.service.example ~/.config/systemd/user/computer-use.service
cp systemd/novnc.service.example        ~/.config/systemd/user/novnc.service
sudo loginctl enable-linger "$USER"
systemctl --user daemon-reload
systemctl --user enable --now computer-use.service novnc.service

Smoke test:

python examples/smoke_test.py

Wire to hermes-agent

Paste config/hermes.yaml.example into your ~/.hermes/config.yaml under mcp_servers:, then hermes gateway run --replace. The model immediately gets the full tool surface.

The same config shape works for any stdio-MCP client (Claude Code, mcp-inspector, custom runners).

Tools

Category Tools
Status screen_info, cursor_position
Capture screenshot (base64 PNG)
Pointer move, left_click, right_click, double_click, middle_click, drag, scroll
Keyboard type_text, press_key, hold_key
Timing wait
Browser open_url, new_tab, close_tab, back, forward, reload
Escape hatch run_shell

Full signatures live in src/hermes_computer_use/server.py and are discoverable via MCP tools/list.

Demo prompts

examples/demo_prompts.md ships ten graduated prompts from a 5-second sanity check to a 5-hop Google → external site → SSO-login flow that passes without captchas. Open the noVNC tab while running them — watching the pointer interpolate through Google's search box is surprisingly compelling.

Configuration

All runtime behaviour is controlled by env vars. Sensible defaults everywhere.

Var Default Meaning
CU_DISPLAY 99 X display number
CU_WIDTH / CU_HEIGHT 1440 / 900 Virtual screen size
CU_VNC_PORT 5900 x11vnc listen port
CU_STATE_DIR /tmp/hermes-computer-use Logs, PID files
CU_PROFILE_DIR $CU_STATE_DIR/chrome-profile Persistent Chrome profile (cookies survive restarts)
CU_START_URL about:blank First URL Chrome opens
CU_INPUT xdotool Set to ydotool for kernel /dev/uinput input
CU_KEY_DELAY_MS 25 Inter-keystroke delay
CU_MOVE_STEPS 18 Interpolation steps for move(human=True) and drag

Troubleshooting

See docs/TROUBLESHOOTING.md. The usual suspects:

  • scrot: Can't open X display → Xvfb died. systemctl --user restart computer-use.service.
  • Chrome immediately exits → sandbox / dev-shm issue. The scripts/display.sh launcher already sets the right flags; if you hand-roll, copy from there.
  • Stack dies on logout → sudo loginctl enable-linger $USER.
  • Google flags "unusual traffic" → IP reputation, not behavioural. Use a residential proxy or prewarm with a manual login via VNC.

Security

This is an LLM with hands. Read docs/SECURITY.md before pointing it at anything you care about. At minimum:

  • Run in an isolated WSL distro or VM — never your daily driver.
  • Remove the run_shell tool if the agent does not need a shell.
  • Do not persist real credentials in CU_PROFILE_DIR.

Contributing

See CONTRIBUTING.md. Scope guardrails are strict: no DOM selectors, no OCR, no anti-detection arms race. The thesis is "emit no abnormal signals" > "emit clever evasions".

License

MIT. See LICENSE.

Acknowledgements

Metadata

Release files for hermes-computer-use 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-computer-use 0.1.0
File Size Uploaded
hermes_computer_use-0.1.0.tar.gz 27.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-computer-use 0.1.0
File Interpreter ABI Platform
hermes_computer_use-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.4 kB

Release files / hermes_computer_use-0.1.0.tar.gz

Download URL hermes_computer_use-0.1.0.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4544118ffe76c4bc34500e7b715ffa6b4529a0af56827f571ad3d755c1d8a257
BLAKE2b-256 checksum
How to use checksums
c95a5739d46d098978dc20050d5a54ce8c8b008139d96838973221259f53cfaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / hermes_computer_use-0.1.0-py3-none-any.whl

Download URL hermes_computer_use-0.1.0-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
159d27c135403451633d79ce4700eb8ae50b287bc7235e2e8333bc14703cb9b2
BLAKE2b-256 checksum
How to use checksums
402feae4bf91c91bfe09fefea778db81f21584322c589cc0e8e55e1f81c6f3c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page