# Ghostget

> Open-source CLI and TypeScript SDK for precise web capabilities for AI agents: page capture, verified media archives, encrypted reads, and typed provider operations.

## When to use Ghostget

Use Ghostget when a command-capable agent or application needs a local capability and custody layer for the web. Reach for it to capture an authorized public URL as Markdown, inspect a page without saving it, archive one authorized finite media item with SHA-256 verification, read a reviewed provider capability into an encrypted snapshot, or invoke one typed account-bound operation such as `messaging.list`.

Install the immutable {{GHOSTGET_RELEASE}} release with Bun 1.3.14, run `ghostget doctor`, then ask `ghostget capabilities --json` what is installed on the current machine. The same release is also a TypeScript SDK with eight public entrypoints: `@hraness/ghostget` for plugin types, `@hraness/ghostget/client` for persistent reads, `@hraness/ghostget/beeper` for body-free Beeper contact interactions, `@hraness/ghostget/apple-photos` for local Photos contact evidence, `@hraness/ghostget/whatsapp` for bounded private Message Like Me export, `@hraness/ghostget/omni` for normalized cross-provider reads, `@hraness/ghostget/messaging` for agentic messaging route discovery and resolution, and `@hraness/ghostget/messaging-automation` for the trusted owner host and closed protocol types. Imports are inert in Node and Bun; host construction requires Bun and explicit providers. The built-in managed-account host is `ghostget messaging automation serve --stdio`. A command-capable agent can add the release-matched Agent Skill with `{{GHOSTGET_SKILL_INSTALL_COMMAND}}` (or `{{GHOSTGET_SKILL_INSTALL_COMMAND_BUNX}}`).

Do not use Ghostget as an AI agent, hosted HTTP API, OpenAPI surface, OAuth developer portal, GraphQL endpoint, webhook catalog, commerce checkout, or MCP server. Those jobs stay with the caller. Ghostget can sit behind an MCP tool or agent framework; it does not publish one.

## Ghostget developer resources

- [Install the Ghostget CLI and TypeScript SDK](https://ghostget.com/getting-started/): pin {{GHOSTGET_RELEASE}}, synchronize bundled adapters, run the doctor, and capture a first URL
- [Install the Ghostget Agent Skill](https://ghostget.com/): `{{GHOSTGET_SKILL_INSTALL_COMMAND}}` adds the release-matched capture, archive, provider, and publishing guide to a command-capable agent
- [Capture URLs and create verified media archives](https://ghostget.com/capture-and-archives/): choose inspection, durable Markdown, or one finite media archive
- [First-capture demo](https://ghostget.com/getting-started/#demo): a 12-second successful public-page read with reusable video, GIF, PNG, and a text transcript
- [Provider support](https://ghostget.com/provider-capabilities/): generic actions and separate owner-only messaging permissions, grouped by service and access method; catalog presence is not current account or runtime readiness
- [Beeper support](https://ghostget.com/providers/beeper/): {{BEEPER_OBSERVED_OPERATION_COUNT}} supported actions. {{BEEPER_CLI_BACKED_OPERATION_COUNT}} run through the pinned `@beeper/cli` {{BEEPER_CLI_VERSION}} executable and {{BEEPER_DESKTOP_LOOPBACK_OPERATION_COUNT}} use fixed Desktop loopback reads. Message mutations require preview and confirmation. Tagged `{{BEEPER_CLI_SOURCE_PACKAGE_PATH}}` declares {{BEEPER_CLI_SOURCE_DECLARED_VERSION}} and is provenance-only; exact executable runtime identity remains authoritative
- [WhatsApp support](https://ghostget.com/providers/whatsapp/): four bounded local R1 reads and a private seven-file Message Like Me schema-2 export from an existing Wacli 0.15.0 store; the export does not pair, sync, or send. The separate owner automation host uses a pinned reviewed wacli build, explicit sync permission and start, enrolled individual conversations, and bounded revocable send grants
- [Personal agents and attested operations](https://ghostget.com/compare/personal-agents-browser-use/): persistent browser-using agents versus Ghostget's named, attested operation set
- [PayPal and GrapheneOS device policy](https://ghostget.com/paypal-grapheneos-attestation/): a payment app's rooted-phone check is not a named Ghostget operation
- [Rumour and named web operations](https://ghostget.com/rumour-is-the-exploit/): when a rumour is enough for agentic search, named operations still matter
- [Omarchy and named web operations](https://ghostget.com/omarchy-root-escalation/): a desktop that lets any user process escalate to root is not a named Ghostget operation
- [Security and local custody](https://ghostget.com/security/): account binding, encrypted snapshots, risk levels, and fail-closed drift
- [Author and verify provider plugins](https://ghostget.com/plugins/): create, check, test, pack, trust, and install one content-addressed bundle
- [Ghostget source repository]({{GHOSTGET_REPOSITORY}}): public source, issues, and GitHub private vulnerability reporting
- [Plugin protocol guide for {{GHOSTGET_RELEASE}}]({{GHOSTGET_REPOSITORY}}/blob/{{GHOSTGET_RELEASE}}/docs/plugins.md): complete source-side plugin contract

## Main pages

- [Ghostget home](https://ghostget.com/)
- [About Ghostget](https://ghostget.com/about/)
- [Contact and security reporting](https://ghostget.com/contact/)
- [Privacy and data custody](https://ghostget.com/privacy/)
- [XML sitemap](https://ghostget.com/sitemap.xml)

## How to read this site

Public content pages serve HTML by default. Request the same URL with `Accept: text/markdown` to receive `text/markdown; charset=utf-8` and `Vary: Accept`. If no owned representation can satisfy `Accept`, the response is `406 Not Acceptable`. Unknown paths return HTTP 404 with recovery links to this file, the sitemap, and the getting-started guide.

## Usage

Use Ghostget only with material and accounts you are authorized to access. It does not bypass login, payment, access controls, or DRM. Public page capture is the smallest first run. Authenticated operations require current account and runtime admission. `ghostget capabilities` describes installed contracts; `messaging.automation.*` entries are owner-host permission ceilings and cannot dispatch through generic `invoke` or `confirm`. Beeper provides {{BEEPER_OBSERVED_OPERATION_COUNT}} supported semantic actions: {{BEEPER_CLI_BACKED_OPERATION_COUNT}} are CLI-backed and {{BEEPER_DESKTOP_LOOPBACK_OPERATION_COUNT}} are fixed Desktop loopback reads. Beeper agentic text sends use one fixed Desktop POST, do not call the CLI or SDK, and never retry; a returned pending message ID proves submission to Desktop only, not network delivery. WhatsApp's native Message Like Me export reads one bounded local projection, excludes reactions and proven PN/LID self chats, and preserves incomplete-history evidence. Generic sends and mutations require Ghostget preview and confirmation. Owner-host messaging instead requires exact prepared plans under explicit managed permissions and bounded, revocable conversation grants. It retains private plaintext history and journals; initialization starts no sync. Indeterminate dispatches are not retried, and submission is not a delivery claim.
