eyehands 1.7.0: compiled binary, 7-day trial, browser screenshot bridge

by Fireal Software · ~6 min read

1.7.0 is the biggest release since 1.0. Three things changed at once, and they’re all connected: how eyehands is distributed, how you pay for it, and how it takes screenshots. The 1.6.0 notes said 1.7 would focus on a Claude Code plugin wrapper. That turned out to be the wrong problem to solve first. This is what shipped instead.

Compiled to a single .exe

Before 1.7.0 eyehands was a Python package on PyPI. pip install eyehands, python -m eyehands, done — as long as you had Python 3.11+, the right Visual C++ redistributables, and a willingness to debug whatever pip did to your site-packages.

1.7.0 ships as a Nuitka-compiled standalone Windows executable. Download the zip from GitHub Releases, extract it, run eyehands.exe. No Python install, no virtualenv, no pip resolution. The .exe bundles everything the server needs — including the DLL surface for DXGI capture and SendInput.

A few things fell out of this:

Source is no longer distributed. The server code is proprietary as of 1.7.0. The reason is the same reason most indie tools eventually go this route: the business model needs to match the distribution. Selling licenses for an MIT-licensed package on PyPI is a coordination problem I don’t want to solve.

eyehands-sdk: the Python side stays free

The parts of eyehands that actually make sense as a library — the Python client, the MCP server wrapper, the OpenAI tools adapter — are split into a new package on PyPI called eyehands-sdk. This stays MIT-licensed and has no license check. It assumes you’re talking to an eyehands server running somewhere (yours on localhost, or someone else’s on a remote host) and just handles the HTTP and auth plumbing.

pip install eyehands-sdk

Typical setup now: install eyehands.exe on the Windows machine you want to control, run it, then pip install eyehands-sdk anywhere you want to call into it from Python. MCP clients get the same pattern — the SDK ships a stdio MCP server that proxies to an HTTP eyehands.

Trial model replaces freemium

Old model: free tier (most endpoints), Pro tier ($19 one-time, unlocked OCR + UI Automation + a few other endpoints). New model: 7-day trial (everything works), then either a $49 license (everything still works) or 402s on most endpoints until you buy.

Why the change:

Existing Pro licenses keep working and auto-upgrade to full. There’s no downgrade path — if you bought Pro, you get the full thing. Trial days are counted from first run, tracked in %APPDATA%/eyehands/.trial_start. The activation server enforces a 2-machine simultaneous limit per license.

Browser extension screenshot bridge

Screen capture on Windows normally goes through DXGI via BetterCam. This is fast (57ms cold, <10ms warm) but has two problems: it doesn’t capture WSL windows, and it occasionally grabs a black frame when the compositor is mid-transition.

1.7.0 adds an optional browser extension (Chrome, Firefox, Opera) that captures the visible tab using the native chrome.tabs.captureVisibleTab API and pushes it to eyehands over a local WebSocket. It’s not a replacement for DXGI — it only sees the browser — but when your target is a web app, it’s both more accurate and more resilient than capturing the desktop.

For agent authors: /ext/screenshot is now the primary screenshot method in AGENT_PROMPT.md when the target is web-based. The documentation rewrite prioritizes it explicitly.

Upgrade

If you’re on 1.6.x from pip:

  1. pip uninstall eyehands (this removes the old server; the CLI and SDK become eyehands-sdk)
  2. Download eyehands-v1.7.0-win64.zip
  3. Extract, run eyehands.exe
  4. Trial starts on first request; license via the portal when you’re ready

If you want the Python-side tooling back:

pip install eyehands-sdk

Scripts that imported from eyehands directly keep working — the symbols moved, but the package name for the client lives on as eyehands-sdk. The CLI eyehands command from the old package is gone; use eyehands.exe for the server and python -m eyehands_sdk.mcp for the MCP server.

What’s next

The Claude Code plugin wrapper is still on the list — just behind a couple of things that got pulled forward. Realistically 1.8 will focus on macOS support (cross-compiled via Nuitka, AVFoundation for capture, CGEvent for input) and a Godot-specific capture path that pulls directly from the editor’s framebuffer. Extension support for Safari is further out.


Bugs, feedback, or a use case the trial didn’t give you time to evaluate — open an issue on GitHub or email support@fireal.dev.

Get eyehands

Full release history on the eyehands changelog.

Visit eyehands