Ghost
How It WorksBenchmarksQuickstartDocsPricingGet Started
MCP-native · Open source · Runs locally

The web was built for humans.

Ghost was built for agents.

Ghost turns any website into typed MCP tools your AI agent can call — auto-generated from the live DOM, cached forever, self-healing.

one command · no config · no API keys · 20,000x faster than vision agents

0ms
cached tools
0%
success rate
0x
faster than screenshot agents

The difference

Structured data vs. screenshot guessing

Screenshot agents send images to LLMs and hope for the best. Ghost returns typed JSON from auto-generated MCP tools.Example: extracting top stories from Hacker News

Screenshot Agent — 3-8s, unstructured, $0.04/call
// Screenshot Agent (GPT-4V, Claude Vision, etc.)
// Take screenshot → Send to LLM → Parse response

const screenshot = await page.screenshot();
// → 1.2MB base64 PNG blob

const response = await llm.chat({
  model: "gpt-4-vision",
  messages: [{
    role: "user",
    content: [
      { type: "image", data: screenshot },
      { type: "text", text: "Extract the top stories" }
    ]
  }]
});

// Response: unstructured text, no schema
// Latency: 3-8 seconds per call
// Cost: ~$0.04/screenshot (adds up fast)
// Accuracy: varies by prompt quality
Ghost — 0.03ms cached, typed JSON, $0
// Ghost: Structured MCP tool call
// Auto-generated, typed, cached

const stories = await ghost.execute(
  'hackernews_extract_top_stories',
  { limit: 5 }
);

// Returns typed JSON in <1ms (cached):
[
  {
    title: "Show HN: Ghost – AI browser auto...",
    points: 342,
    author: "ajgreen",
    url: "https://github.com/ajsai47/ghost",
    comments: 127
  },
  // ... 4 more, fully typed
]

// Latency: 0.03ms cached, 27ms first call
// Cost: $0 (runs locally)
// Schema: auto-generated, self-healing

Screenshot Agent

Take screenshot1.2MB PNG per page
Send to LLMGPT-4V or Claude Vision
Wait 3-8 secLLM processes image
Parse text responseUnstructured, no schema
Repeat every callNo caching, no learning
✗
$0.04/callSlow, expensive, fragile

Ghost

Browse any siteTools auto-generated from DOM
MCP tool callTyped JSON returned instantly
0.03ms cached27ms first call, then instant
Self-healingSelectors repair on site changes
Runs locallyZero data sent to cloud
✓
$0 per call20,000x faster, 94.6% accuracy

Under the hood

How Ghost works

Three steps. Any website. Structured data out.

01

Navigate

Ghost visits any URL and analyzes the DOM structure. It auto-generates typed, callable tools — extract, click, type, scroll — and detects frameworks to adapt its selector strategy.

Auto-generates tools in ~15ms
02

Execute

A 3-tier execution waterfall finds the fastest path. Cached API replays resolve in under a millisecond. Headless browsers handle fresh pages. The extension handles auth-gated sessions.

3-tier intelligent routing
API Replay
<1ms
Headless
~350ms
Extension
~500ms
03

Return

Ghost returns typed, structured JSON — not screenshots or blobs. Every field is named, typed, and deterministic. Pipe it directly into your agent's next step.

Typed JSON, not screenshots
Navigate any URL→Fastest execution tier→Typed JSON response

Interactive

See Ghost in action

Pick a scenario and watch Ghost navigate, analyze, and generate tools in real time.

ghost \u2014 interactive demo
idle
ghost v0.1.0|Extract top stories from Hacker News
~/.ghost/registry/|MCP connected

Benchmarked and proven

Performance

Real numbers from 1,637 tests across 7 benchmark suites.

<0ms
Cached tool execution
0ms
First visit analysis
0x
Faster than screenshots

15ms

Tool generation

552ms

Headless nav avg

325ms

In-page execution avg

3ms

Extension DOM extraction

1,637

Passing tests

100%

Pass rate

Ghost vs alternatives

Ghost (cached)
0.03ms
Ghost (first visit)
436ms
Traditional scraper
2-3s
Screenshot + LLM
3-5s

Use cases

What you can build

From one-off extractions to production monitoring pipelines.

Data Extraction

Extract structured data from any website with a single command.

const results = await ghost.ultra_research({
  query: "latest AI papers",
  sites: 100,
  extract: ["title", "authors", "date", "abstract"]
});
// → 847 papers, JSON + CSV export
ghost_ultra_researchghost_extractghost_export

Never break again

Self-healing selectors

A 4-strategy pipeline that automatically repairs broken selectors when sites change.

STRATEGY 0

Structural Fingerprint

Each element gets a tag-path > text-hash > landmark > position fingerprint using djb2 hashing.

text 35% · tag 30% · position 20% · landmark 15%

<1ms~85%
STRATEGY 1

Adaptive Relocation

Multi-factor similarity scoring across tag, text content, attributes, XPath, parent, and sibling context.

Works after major DOM restructuring

~5ms~92%
STRATEGY 2

Text / ARIA Matching

Falls back to accessible labels, text content, and role attributes. Works even when all CSS classes change.

Framework-agnostic resilience

~10ms~95%
STRATEGY 3

LLM Healing

Sends DOM context to Claude Sonnet to re-identify the element. Last resort — always succeeds.

AI-powered final fallback

~200ms~99%

Enterprise-grade infrastructure

Built for scale

Production-ready from day one. Stealth, resilience, and observability baked in.

Anti-Detection & Stealth

Navigate protected sites without getting blocked.

  • 9 stealth init scripts on every page
  • Cloudflare Turnstile + PerimeterX bypass
  • TLS fingerprint impersonation

Proxy Rotation

Rotate IPs automatically to avoid rate limits.

  • Round-robin and random strategies
  • Auto failure detection & exclusion
  • Recovery after backoff period

GHOST_PROXY_URLS

Smart Rate Limiting

Respect site limits automatically.

  • 5 concurrent global, 2 per-domain
  • Token bucket for API services
  • Exponential backoff with jitter on 429/5xx

Tab Pool Management

Efficient browser resource management.

  • 10-tab max with LRU eviction
  • 5-minute idle auto-cleanup
  • Configurable pool size

GHOST_MAX_TABS

Cloud Execution

Run headless in the cloud when local isn't available.

  • TinyFish cloud fallback
  • SSE streaming for real-time progress
  • Auto-failover from local to cloud

Webhook Alerts

Get notified when monitors detect changes.

  • HMAC-SHA256 signed payloads
  • Retry with exponential backoff
  • Per-monitor webhook URLs

Switch

Compare Ghost to your current tool

I currently use

Start building now.

Sign up and get your API key instantly. No waitlist.

Avatar 1Avatar 2Avatar 3Avatar 4Avatar 5+283

developers building with Ghost

YC bet on the slow version. We built the fast one.
Featured on Product HuntBenchmarksChangelogSign UpMIT License