GhostGet

GhostGet gives your agent reviewed actions instead of a browser to drive

browser-use is the open-source Python library that turns an LLM into a web agent: the model observes the page, plans, clicks, and repeats until the goal is done. GhostGet is a local CLI and TypeScript SDK where the agent asks for a reviewed outcome and gets one result, with no browser to steer.

Two execution models

browser-use owns the loop. The model sees the current page through DOM serialization and optional screenshots, decides the next action, executes it through CDP, and observes again. Persistent sessions, multi-tab flows, and self-recovery are the point: when a flow breaks, the model finds another path through the live page.

GhostGet owns the operation. The agent asks for an outcome such as messaging.list or a URL read. The kernel binds the exact provider, account realm, transport, contract version, and risk level, runs one exchange, and returns a structured result. There is no session the model can improvise inside: no selectors, no coordinates, no next click to invent.

The context bill is the loop

A browser-use step re-reads the page, so the token cost of a task grows with its step count and page complexity. Every screenshot and DOM dump joins the context. That is the price of open-ended reach, and for new, one-off tasks it is often worth paying.

GhostGet pays once. A measured September 2026 read of a Wikipedia article returned 15,021 bytes of Markdown where the raw page served 145,617 bytes of HTML, roughly 3,800 tokens against 36,000, from a single HTTP request with no browser process. One page is only an example. What matters is that GhostGet returns one result per call, while a browser loop re-reads the page on every step.

Side by side

Decision browser-use GhostGet
What the caller supplies A goal in plain language; the library picks the steps A named operation and its declared input; the operation definition picks the exchange
What enters model context Page state on every step, plus action history Only the result: Markdown, an archive, a structured result, or a structured error
Credentials Live in the driven browser's session, reachable by the model's actions Opaque to the caller and bound to one account realm, provider target, and transport
When a page changes The model adapts mid-flow, for better or worse The operation fails closed until its contract is reviewed; there is no DOM fallback
Reach Anything a real browser can do, including flows nobody reviewed Only the reviewed operations in the installed release
Runs where Local Python, or hosted through Browser Use Cloud Local CLI or TypeScript SDK on macOS or Linux; nothing is hosted

When to pick which

Pick browser-use when the task is open-ended, the path is unknown, and recovery matters more than auditability: research crawls, one-off flows, sites with no stable contract. The model's freedom to improvise is the feature.

Pick GhostGet when the task recurs and the fixed action set is the point: reading a connected inbox, publishing through a reviewed operation, archiving one authorized media item, or capturing a page as durable Markdown. You give up reach and gain a call you can reason about, diff in review, and firewall behind an exact operation set.

They compose cleanly: keep a driver for the long tail, and put GhostGet in front of the paths that must behave the same way every run.