Ghost Developer Studio

GHOST HANDS

Ghost Hands

Last updated

A standalone, zero-dependency Python package that gives an agent hands on the web, and a conscience to go with them.

"Playwright drives. Stagehand thinks. Browser Use wanders. Ghost Hands answers for every move."

What it does

Every action an agent takes is classified before it runs (readonly, write, or consequential), judged against a policy, written to a provenance trail before it executes, and, when it matters, gated on a human approval. Finished runs graduate into deterministic, model-free scripts you can re-run for free.

The browser body is our own: a stdlib Chrome DevTools Protocol client drives Chromium directly over the --remote-debugging-pipe transport. There is no Playwright, no Selenium, and no other automation library under the hood. In the README's words: "We drive Chromium, the browser; we did not write a browser engine and don't claim to have."

Approvals are real gates. Silence is never consent: an ask with no approver is a denial. Phone approvals are decided only on the phone, and the bridge API has no decision endpoint.

Quickstart

The README's quickstart, verbatim:

from ghost_hands import ChromiumDriver, Runner, ScriptedDecider
driver = ChromiumDriver()  # finds Chromium/Chrome; $GHOST_HANDS_CHROME overrides
runner = Runner(driver, ScriptedDecider([
    {"kind": "navigate", "url": "https://example.com"},
    {"kind": "extract"},
    {"kind": "done", "summary": "looked at the page"},
]))
report = runner.run("look at example.com")
print(report.stop_reason, report.summary)

Get it

Version 1.11.0. MIT license. Python 3.10 or later, zero dependencies.

pip install ghost-hands

New in 1.0.0: the trail is hash-chained and tamper-evident, with a verify-trail command to prove a record is intact; secret placeholders keep real credentials out of the model's sight; a verify action makes a run prove its result before claiming done; and finished runs are cached as governed plans that replay with no model calls.

New in 1.1.0: focused perception, which keeps the goal-relevant elements when a page map runs long, and the decider now perceives through it; the run report header and the MCP trail tool both carry the trail’s hash-chain verdict; and the governed plan cache now works over MCP as well as the command line.

MCP server (stdio):

ghost-hands mcp

Claude Code wiring, from the README:

claude mcp add ghost-hands -e GHOST_HANDS_DRIVER=chromium -e GHOST_HANDS_APPROVER=phone -e GHOST_HANDS_POLICY=standard -- ghost-hands mcp

In development

Between releases, Ghost Hands is built in waves on the public main branch, and the development notes track each wave as it lands: what it adds, and the tests and bench cases behind it. Read the Ghost Hands development notes.

Proof and listings

How Ghost Hands stacks up against the browser tools it is most often compared with, including where each of them wins: the honest comparison.

Honest limits

A real model has now driven the graded local fixture suite (3 of 4 tasks, November 12, 2026, above). Driving live public sites end to end is still unproven, and the suite's Chromium-body tasks have not yet had a live-model run. The README says so.

On-device Android proof is pending the maintainer's install.

Questions? See the Hub help center.