# wget for the ghost in the machine.

A free CLI and TypeScript SDK for Claude Code, Codex, Cursor, and other agents that run commands. It reads a page as Markdown, archives one media item, or acts in an account you connected, and returns the result instead of a browser to steer.

[Install Ghostget](https://ghostget.com/#start)

[See it work](https://ghostget.com/docs/tutorials/getting-started/#demo)

Free and MIT licensed · macOS and Linux with Bun 1.3.14 · Release v0.18.48

The complete output of one `ghostget read` for a public page: a short record of what was captured and how, then the page as Markdown. Nothing was saved. Public-page read recorded on September 5, 2026; command updated for Ghostget.

## Each request runs one named action.

Your agent asks for a supported action, such as reading an inbox or saving a video. Ghostget checks the inputs and the account, makes the request, and returns a structured result. Sign-in details stay inside Ghostget.

1. **Name the job** The agent asks for an outcome, such as reading an inbox or preserving one video.
2. **Match one action** Ghostget finds one installed, supported action. There is no general browser or request tool to fall back on.
3. **Check, then run once** Ghostget checks the exact service, account, and risk level, then makes one exchange. Your sign-in can reach only the service that action needs.
4. **Return the result** Your agent gets a structured result, a note of anything incomplete, or a saved record that the outcome is not yet known.

## Your agent never steers a browser.

Browser-using agents stream the live page into the model and let it choose each click. With Ghostget, the agent asks for an outcome and only the result comes back.

Page state and screenshots never enter the agent’s context. It never sees a cookie or token, and there are no selectors for it to guess. If a service changes how it responds, the affected action stops instead of improvising a click path.

Some pages need a real browser to render. For those, Ghostget runs its own browser internally, at most two at a time, and the agent can’t steer it. The [agent-browser comparison](https://ghostget.com/compare/agent-browser/) shows how that works.

## Smaller answers cost fewer tokens.

Your model provider charges for everything the agent reads. On September 22, 2026, `ghostget read` returned these bytes for each URL, compared with the raw HTML the URL serves. Every row was one HTTP capture with no browser and `capture_status: "complete"`.

| Page read | ghostget returns | Raw HTML | Smaller by |
| --- | --- | --- | --- |
| Wikipedia article | 15,021 bytes | 145,617 bytes | 9.7× |
| GitHub repository page | 79,955 bytes | 647,690 bytes | 8.1× |
| This site’s security guide | 7,220 bytes | 41,295 bytes | 5.7× |
| Hacker News front page | 7,311 bytes | 34,791 bytes | 4.8× |
| example.com | 345 bytes | 559 bytes | 1.6× |

At roughly four bytes per token, that Wikipedia read costs about 3,800 tokens where the raw page carries about 36,000. The table counts bytes because tokenizers differ.

Browser-driving agents pay again on every step, because the page comes back into context each time. A July 2026 [comparison matrix](https://modernqacourse.com/docs/en/01-agent-skills-browser-automation/07-competitive-landscape/01-tool-comparison-matrix) cites Microsoft’s reported figure of about 114,000 tokens for a typical Playwright MCP task, against about 27,000 for its disk-first CLI. Treat any single figure as an estimate.

## Read a page, archive one item, or act in an account.

**Read**

Turn a public URL into Markdown your agent can inspect on the spot or keep in a local knowledge base.

**Archive**

Preserve one media item you’re allowed to access, with its source bytes, transcript, manifest, and SHA-256 records.

**Act**

Use named actions in 21 services, from Beeper and Gmail to YouTube. Most use an account you’ve connected; a few, such as GitHub, need no sign-in. If an action isn’t listed, Ghostget doesn’t offer it.

## Reviewed actions across 21 services.

Each entry shows how Ghostget connects to that service and links to its supported actions in this release.

### [Beeper](https://ghostget.com/docs/how-to/connect-beeper/)

**32 supported actions**

Accounts · Bridges · Contacts · Conversations · Messages · Presence · Reactions

Local app

26 actions run through a pinned version of Beeper's official CLI, and 6 are fixed reads from Beeper Desktop. Writes need a preview first, and Ghostget never resends a write whose outcome is unknown.

### [Bluesky](https://ghostget.com/docs/reference/provider-capabilities/#provider-bluesky)

**8 supported actions**

Comments · Content · Feeds · Media · Posts · Profiles

Public web, no sign-in + Signed-in web session

### [ClasificadosOnline](https://ghostget.com/docs/reference/provider-capabilities/#provider-clasificados)

**1 supported action**

Listings

Public web, no sign-in

### [Facebook](https://ghostget.com/docs/reference/provider-capabilities/#provider-facebook)

**1 supported action**

Feeds

Signed-in web session

### [Facebook Groups](https://ghostget.com/docs/reference/provider-capabilities/#provider-facebook-group)

**1 supported action**

Feeds

Signed-in web session

### [Facebook Marketplace](https://ghostget.com/docs/reference/provider-capabilities/#provider-facebook-marketplace)

**2 supported actions**

Feeds · Listings

Signed-in web session

### [GitHub](https://ghostget.com/docs/reference/provider-capabilities/#provider-github)

**2 supported actions**

Organizations · Profiles

Public web, no sign-in

### [Gmail](https://ghostget.com/docs/reference/provider-capabilities/#provider-gmail)

**3 supported actions**

Contacts · Messages

Official API

### [Hacker News](https://ghostget.com/docs/reference/provider-capabilities/#provider-hacker-news)

**3 supported actions**

Comments · Feeds · Posts

Signed-in web session

### [Instagram](https://ghostget.com/docs/reference/provider-capabilities/#provider-instagram)

**8 supported actions**

Comments · Contacts · Content · Feeds · Media · Messages · Posts · Profiles

Signed-in web session

### [iMessage](https://ghostget.com/docs/reference/provider-capabilities/#provider-imessage)

**5 supported actions**

Conversations · Messages

Local app

### [LinkedIn](https://ghostget.com/docs/reference/provider-capabilities/#provider-linkedin)

**13 supported actions**

Articles · Comments · Contacts · Feeds · Organizations · Posts · Profiles · Reactions · Replies

Official API + Signed-in web session

### [Reddit](https://ghostget.com/docs/reference/provider-capabilities/#provider-reddit)

**11 supported actions**

Comments · Content · Feeds · Flair · Media · Messages · Posts · Profiles

Signed-in web session

### [Substack](https://ghostget.com/docs/reference/provider-capabilities/#provider-substack)

**13 supported actions**

Articles · Comments · Content · Feeds · Media · Messages · Organizations · Posts · Profiles · Subscribers

Signed-in web session

### [Threads](https://ghostget.com/docs/reference/provider-capabilities/#provider-threads)

**4 supported actions**

Feeds · Media · Posts · Profiles

Signed-in web session

### [TikTok](https://ghostget.com/docs/reference/provider-capabilities/#provider-tiktok)

**3 supported actions**

Comments · Feeds · Profiles

Signed-in web session

### [Twitch](https://ghostget.com/docs/reference/provider-capabilities/#provider-twitch)

**1 supported action**

Profiles

Signed-in web session

### [WebMCP Registry](https://ghostget.com/docs/reference/provider-capabilities/#provider-webmcp)

**3 supported actions**

Registry sites · Registry tools

Public web, no sign-in

### [WhatsApp](https://ghostget.com/docs/how-to/export-whatsapp/)

**4 supported actions**

Contacts · Media · Messages

Linked device

### [X](https://ghostget.com/docs/reference/provider-capabilities/#provider-x)

**17 supported actions**

Articles · Comments · Contacts · Content · Feeds · Likes · Messages · Posts · Profiles · Replies · Threads

Official API + Signed-in web session

### [YouTube](https://ghostget.com/docs/reference/provider-capabilities/#provider-youtube)

**5 supported actions**

Comments · Feeds · Media · Posts · Profiles

Signed-in web session

### Plus 1,802 sites publishing WebMCP tools

The bundled `webmcp` adapter reads tool schemas from the public [WebMCP Registry](https://wmcp.ai/) for 1,802 listed sites covering 15,282 published tools, and calls the 1,509 declared read-only, with no account needed. [How WebMCP works with your agent](https://ghostget.com/webmcp/) · [Use WebMCP sites](https://ghostget.com/docs/how-to/use-webmcp-sites/)

- [developers.cloudflare.com](https://ghostget.com/providers/developers.cloudflare.com/)
- [learn.chatgpt.com](https://ghostget.com/providers/learn.chatgpt.com/)
- [developers.openai.com](https://ghostget.com/providers/developers.openai.com/)
- [openai.com](https://ghostget.com/providers/openai.com/)
- [sentry.io](https://ghostget.com/providers/sentry.io/)
- [forter.com](https://ghostget.com/providers/forter.com/)
- [hostinger.com](https://ghostget.com/providers/hostinger.com/)
- [target.com](https://ghostget.com/providers/target.com/)
- [asus.com](https://ghostget.com/providers/asus.com/)
- [netgear.com](https://ghostget.com/providers/netgear.com/)
- [wpastra.com](https://ghostget.com/providers/wpastra.com/)
- [customer.io](https://ghostget.com/providers/customer.io/)
- [cookiebot.com](https://ghostget.com/providers/cookiebot.com/)
- [doordash.com](https://ghostget.com/providers/doordash.com/)
- [cookieyes.com](https://ghostget.com/providers/cookieyes.com/)
- [and 1,787 more →](https://ghostget.com/providers/)

Provider names identify compatible services and do not imply endorsement. Counts are for release v0.18.48. [Browse every supported action](https://ghostget.com/docs/reference/provider-capabilities/)

## Tell your agent, or run two commands.

Any agent that can run terminal commands can install Ghostget for you. To do it yourself, install [Bun 1.3.14](https://bun.sh/docs/installation) on macOS or Linux, then install the [`@hraness/ghostget` canonical release archive](https://github.com/hraness/ghostget/releases/download/v0.18.48/hraness-ghostget-0.18.48.tgz). Your first public-page read needs no account, API key, or vault.

Tell your agent

“Install Ghostget v0.18.48, then use it to read https://example.com and summarize it.”

```
bun add --global https://github.com/hraness/ghostget/releases/download/v0.18.48/hraness-ghostget-0.18.48.tgz
ghostget read https://example.com
```

Optional: add the Agent Skill

npx skills add hraness/ghostget\#v0.18.48

Teach your agent the Ghostget commands after installing the CLI. With Bun, run `bunx skills add hraness/ghostget#v0.18.48` instead. [View the Ghostget Agent Skill on skills.sh.](https://www.skills.sh/hraness/ghostget/ghostget)

Success prints **Example Domain** as Markdown without saving it. Next, [save a page](https://ghostget.com/docs/tutorials/getting-started/#save-pages) or [connect one service](https://ghostget.com/docs/tutorials/getting-started/#inspect-capabilities). Provider setup starts with `ghostget adapter sync-bundled --json`.

## Use an Agent Skill, CLI, or TypeScript SDK

Ghostget runs on your machine. It has no hosted API or MCP server, so your agent can do the same things from a skill, a terminal, or typed code.

### Agent Skill

Add the release-matched capture, archive, provider, and publishing guide to an agent that can run commands.

```
npx skills add hraness/ghostget#v0.18.48
```

### CLI

Use stable human output or JSON from a terminal, a script, or an agent tool call.

```
ghostget capabilities --json
```

### TypeScript SDK

Import validators and types without starting the CLI or reading anything on your machine.

```
import { isProviderPluginId } from "@hraness/ghostget"
```

## Review accounts and approvals.

Review connected accounts, permissions, pending approvals, and recent activity in your menu bar or terminal. The menu also opens recent output files. Your agent keeps using the same CLI and SDK.

Run `ghostget menubar` for the menu companion, and `ghostget menubar install` to start it at login. The downloaded companion is unsigned; `ghostget menubar doctor` explains platform setup.

Prefer the keyboard? Stop the menu with `ghostget menubar stop`, then run `ghostget tui`. Tab moves between six sections, Enter opens actions, and `?` shows help. Only one control client runs at a time; public-page reads need neither.

## Keep accounts and saved work under your control.

Account state and saved results stay on your machine. Requested work contacts the source service, and your agent receives the results you give it.

**Your sign-ins stay here**

Ghostget stores sign-ins on this machine, including any linked-device store you choose to use. Your agent gets a named action and its result, never cookies, tokens, or a browser it can steer.

**Import a token without showing it**

For X, `ghostget vault import-x` accepts a 1Password field reference instead of a pasted secret; Ghostget verifies the X user and stores the token privately on your machine. It is a token importer for one provider, not a general password manager.

**Only the traffic you asked for**

Reads and actions contact their selected sources. Provider sign-in and explicitly started messaging sync also use the network. The CLI and SDK send no website analytics.

**Reads you can open later**

Provider-read snapshots are encrypted on your machine; owner messaging keeps a separate private local history and journal. A failed refresh does not erase the last verified state.

**Writes need a preview and a confirmation**

Anything that changes an account needs a preview and an explicit confirmation of that exact preview, or a limited grant you set up for owner messaging. If a write went out and its result is unknown, Ghostget won’t send it again. It stays marked unsettled until separate evidence shows what happened.

**When a service changes**

If a service changes how it responds, the affected action stays off until it is reviewed again. Ghostget never quietly falls back to a browser.

**Bring your own agent**

Ghostget supplies the local tools and a macOS menu-bar companion for outputs and CLI guidance. Your agent owns the model and planning.

**No bypassing access controls**

Media archiving is limited to one finite item you are allowed to access that is not protected by DRM. Ghostget does not bypass payment, sign-in, access controls, or DRM.

## How Ghostget compares with other ways agents reach the web.

Browser tools give the model a browser to drive. Reader services fetch pages on their own servers. Integration platforms manage your sign-ins for you. Ghostget runs reviewed actions on your machine and returns one result. [Compare the approaches](https://ghostget.com/compare/) in detail.

| Approach | Best fit | How Ghostget differs |
| --- | --- | --- |
| Your agent’s built-in web fetch | Quick lookups with nothing to install. Claude Code’s WebFetch, for example, returns a small model’s answer about the page. | Returns the page’s content as Markdown and can save it on your machine. |
| [Firecrawl](https://ghostget.com/compare/firecrawl/) and [Jina Reader](https://ghostget.com/compare/jina-reader/) | Hosted URL-to-Markdown, crawling, and search, metered per page or per token | Reads one page on your machine with no key or meter. No crawl or search. |
| [Crawl4AI](https://github.com/unclecode/crawl4ai) | Open-source Python crawling of whole sites for RAG pipelines, on your own machine | Reads one URL at a time, and also runs actions in accounts you connect. |
| [browser-use](https://ghostget.com/compare/browser-use/) | Open-ended, multi-step browsing where the model observes the page and decides each step | The model chooses no steps. Each call runs one reviewed action or stops with an error. |
| [Playwright MCP](https://ghostget.com/compare/playwright-mcp/) | Giving an existing agent live browser controls, with the accessibility tree streamed into context per step | One result per call. No page state goes back into the agent’s context. |
| [agent-browser](https://ghostget.com/compare/agent-browser/) | Shell-level browser steering an agent composes itself: open, click, type, snapshot | Ghostget runs agent-browser internally for pages that need rendering, and the agent can’t steer it. |
| [Browserbase + Stagehand](https://ghostget.com/compare/browserbase/) | Managed cloud browser sessions at scale, with proxies, stealth, and session replay | Runs on your machine with no remote browser, and never falls back to a browser when an action is missing or has changed. |
| [Composio](https://composio.dev/), [Arcade](https://www.arcade.dev/), and [Pipedream Connect](https://pipedream.com/docs/connect) | Large app-integration catalogs with managed sign-in, for products whose agents act for many users | Covers far fewer services. Sign-ins stay on your machine, and each write shows a preview first. |
| [Apify MCP](https://docs.apify.com/integrations/mcp) | Discovering and running eligible Apify Store Actors through a hosted MCP service, with access to results and storage | Each provider action and implementation must be named and reviewed before it can run. |
| Ghostget | Repeated account and page work where you want to know exactly what the agent can do | Encrypted local copies of reads, a preview and a record for every write, and actions that stop when a service changes. |

## Before you install.

### Which agents does it work with?

Any agent that can run commands: Claude Code, Codex, Cursor, Gemini CLI, or your own. The optional [Agent Skill](https://www.skills.sh/hraness/ghostget/ghostget) teaches it the Ghostget commands and their limits in one step.

### Does Ghostget need an account?

No. Install the CLI and read a public page. You connect a service only when you want its actions, and each connection is stored on your machine. Hraness Accounts sign-in is optional and is not needed for page reads or provider setup.

### Does it use my credentials?

It uses a sign-in you already have for a service, on this machine, and keeps it out of your agent’s hands. Each sign-in is bound to one account and one service, in a locked local store the agent cannot read. Ghostget’s normal outputs do not include cookies or tokens. The calling agent keeps the separate tools and permissions you give it.

### What does it cost?

Nothing. Ghostget is free and MIT licensed, with no hosted tier and no paid plan. You pay your model provider and any service subscriptions you already have.

### Does it phone home?

No. The CLI and SDK send no analytics to ghostget.com; they make only the network requests the action you chose requires. This website counts page views with cookieless analytics and honors Do Not Track. The [privacy page](https://ghostget.com/privacy/) explains both.

### Which platforms does it run on?

macOS and Linux with Bun 1.3.14. Actions that read iMessage or Apple Photos need macOS. Beeper actions need Beeper Desktop on the same machine, and WhatsApp reads need a linked device.

### Is Ghostget an AI agent?

No. Ghostget supplies a CLI, an SDK, and a macOS menu-bar companion. Your agent brings the model and the plan; Ghostget manages account permissions, approvals, and the records of its actions.

### Does Ghostget use a browser internally?

Yes, in two cases. When a page can’t be read without rendering it, Ghostget runs its own browser, at most two at once; page reads try a single HTTP request first. Some signed-in provider actions, such as certain LinkedIn and Instagram reads, also run inside a contained browser session. In both cases the browser accepts no selectors, coordinates, or scripts from the caller.

### Why does Ghostget refuse to retry some writes?

If a request left the machine and its response was lost, the effect may already exist. Ghostget keeps that uncertainty visible and settles it from separately obtained evidence instead of sending the request again.

### What does release v0.18.48 include?

Page capture, media archives, encrypted reads, and 140 supported actions across 21 services. `ghostget capabilities` shows what is installed and available on your machine, and the [provider list](https://ghostget.com/docs/reference/provider-capabilities/) names every action in this release.

## Start with the outcome you need.

Each guide covers the current release, the commands to use, and the limits that apply.

### [Install and verify Ghostget](https://ghostget.com/docs/tutorials/getting-started/)

Install the CLI, read a public page, then choose saving, account setup, or local controls.

### [Capture URLs and archive media](https://ghostget.com/docs/how-to/capture-and-archive/)

Choose between an inspection, durable Markdown capture, or one verified finite-item media archive.

### [Check provider support](https://ghostget.com/docs/reference/provider-capabilities/)

See every provider action available in the current release and the access method it uses.

### [Understand the security model](https://ghostget.com/docs/explanation/security-model/)

How Ghostget keeps sign-ins on your machine, ties each action to one account, and handles a write whose outcome is unknown.

### [Author a provider plugin](https://ghostget.com/docs/how-to/author-provider-plugin/)

Define one operation, prove what it sends and returns, then check, test, pack, trust, and install the exact code.

### [Browse the documentation](https://ghostget.com/docs/)

Every guide organized by job: tutorial, how-to, explanation, and reference.

## Arguments and comparisons

How named actions differ from browser control and the other ways agents reach the web.

[Browser-using agents and named operations Why Ghostget exposes named operations instead of falling back to general browser control.](https://ghostget.com/compare/personal-agents-browser-use/)

[WebMCP sites and the tools your agent can call How WebMCP sites publish tools, what the public registry adds, and the three commands Ghostget runs against it.](https://ghostget.com/webmcp/)

### [How agents reach the web](https://ghostget.com/compare/)

Browser tools, reader services, and integration platforms compared with Ghostget’s named actions.

## Hraness

Ghostget is built by Hraness, a software studio in Puerto Rico. We build tools that give AI agents memory, context, web access, and a record of their work, and we make apps and sourced archives for people.

- [hraness.com](https://hraness.com/)
- [@hraness](https://x.com/hraness)
- [GitHub](https://github.com/hraness/ghostget)

## From the same studio.

Other Hraness tools for agents and the people who use them.

### The agent platform

The layer your agent runs through: sessions, accounts, web reads, and the models behind them.

[GobstopperCompacts long agent sessions into smaller copies, keeping every byte](https://gobstopper.sh/)

[xcbRoutes coding tasks across the Claude, Codex, and Devin plans you have](https://xcb.sh/)

[AI ChartsModel benchmark scores plotted against cost and tokens per task](https://aicharts.io/)

### The personal apps

[PeopleBladeLocal personal CRM for everyone you know, built for your agent](https://peopleblade.com/)

[SoulscrapeFree agent skill that writes dated dossiers on people, sources cited](https://soulscrape.com/)

[TextbutlerAI butler for the iMessage, WhatsApp, and Beeper chats you choose](https://textbutler.app/)

[WordcellMarkdown knowledge base that gives agents the decisions behind code](https://wordcell.io/)

## Read your first page in two commands.

Start with one public page and no account or API key. Connect a service when you need its actions.

[Install Ghostget](https://ghostget.com/#start)
