Runner capability matrix

This page lists what each runner can return — live view, downloads, CDP, screenshots, and the rest. Every run comes back as banana_peel.run/v1, a superset of every runner's output: your integration reads one schema no matter which runner executes. If a runner doesn't support live view, downloads, or CDP, those fields come back null or empty — never a different shape. Fetch the same matrix programmatically from GET /api/v1/capabilities or /openapi.json.

Capability keys

  • navigate
  • act
  • extract
  • cdp_connect
  • live_view
  • replay
  • screenshot
  • downloads
  • steps
  • cost
  • proxy
  • persist_profile
  • human_input
  • totp

Live availability

Each row from GET /api/v1/capabilities also carries an availability object sourced from the runner-health circuit breaker, and the payload includes runner_counts (total / live / suspended / probation) so the advertised pool is honest about what can dispatch right now:

  • statuslive (healthy), suspended (inside a circuit-breaker cooldown; skipped by smart routing, fallback chains, fan-outs, and races), or probation (cooldown expired, half-open: eligible again, and the next routed attempt is the re-probe — one more provider failure re-suspends it with a longer cooldown).
  • reason — machine-readable code when suspended or on probation: provider_credits_exhausted, provider_payment_required, provider_auth_rejected, provider_key_missing, repeated_hangs, or suspended. detail carries the human-readable version.
  • until — ISO timestamp when the cooldown ends/ended and the runner becomes re-probe eligible; in the past for probation (null when live or unknown).

Routing already excludes suspended runners automatically — you never need to filter on this field. Use it to understand pool coverage, or to avoid pinning routing: "<runner>" to a runner that cannot dispatch right now (a pinned suspended runner is still attempted — pinning is an explicit override). The same availability object appears on GET /api/v1/rankings rows.

Runners

Each row is a runner slug and the capabilities it can return. Hosted agents compete on the same routing matrix.

RunnerModeCapabilities
agentqlextractextract, cost
airtopinfranavigate, act, extract, cdp_connect, screenshot, downloads, steps, cost, persist_profile, live_view
anchorinfranavigate, act, extract, cdp_connect, live_view, replay, screenshot, downloads, steps, cost, proxy, persist_profile, human_input, totp
apifyextractextract, cost
asteroidagentnavigate, act, extract, replay, screenshot, downloads, steps, cost, human_input, totp
browser-useagentnavigate, act, extract, replay, screenshot, downloads, steps, cost, human_input, totp
browser-use-ossossnavigate, act, extract, screenshot, downloads, steps, cost
browserbase
Also backs the optional Browserbase sessions wrapper.
infranavigate, act, extract, cdp_connect, live_view, replay, screenshot, downloads, steps, cost, proxy, persist_profile, human_input, totp
browserbase-stealthinfranavigate, act, extract, cdp_connect, live_view, replay, screenshot, downloads, steps, cost, proxy, persist_profile, human_input, totp
browserlessinfranavigate, act, extract, cdp_connect, screenshot, downloads, steps, cost
camoufoxossnavigate, act, extract, screenshot, downloads, steps, cost
chrome-devtools-mcpossnavigate, act, extract, screenshot, downloads, steps, cost
claude-computer-useagentnavigate, act, extract, screenshot, downloads, steps, cost, human_input, totp
cloudflare-browser
Read-oriented edge rendering.
extractextract, cost
crawl4aiossnavigate, extract, steps, cost
crawleeossnavigate, extract, screenshot, steps, cost
deck
Runner hosted agent — not the Banana Peel API spine.
agentnavigate, act, extract, replay, screenshot, steps, cost, human_input, totp
decodoextractextract, cost
diffbotextractextract, cost
exaextractextract, cost
exa-research
Research agent — extract/search only; no page actions, no credential custody.
agentextract, steps, cost
firecrawlextractextract, cost
google-gemini-agentagentnavigate, act, extract, screenshot, downloads, steps, cost, human_input, totp
hyperagentossnavigate, act, extract, screenshot, downloads, steps, cost
hyperbrowserinfranavigate, act, extract, cdp_connect, live_view, screenshot, downloads, steps, cost, persist_profile, human_input, totp
jina-readerextractextract, cost
kernelinfranavigate, act, extract, cdp_connect, screenshot, downloads, steps, cost, persist_profile
lightpanda
No screenshots on this engine.
infranavigate, extract, cdp_connect, steps, cost
llm-scraperossnavigate, extract, screenshot, steps, cost
magnitudeossnavigate, act, extract, screenshot, downloads, steps, cost
manusagentnavigate, act, extract, steps, cost
midsceneossnavigate, act, extract, screenshot, downloads, steps, cost
nodriverossnavigate, act, extract, screenshot, downloads, steps, cost
notteextractextract, cost
openai-chatgpt-agentagentnavigate, act, extract, screenshot, downloads, steps, cost, human_input, totp
parallelextractextract, cost
parallel-task
Research agent — extract/search only; no page actions, no credential custody.
agentextract, steps, cost
playwrightossnavigate, act, extract, screenshot, downloads, steps, cost
playwright-mcpossnavigate, act, extract, screenshot, downloads, steps, cost
puppeteerossnavigate, act, extract, screenshot, downloads, steps, cost
scrapegraph-aiossnavigate, extract, steps, cost
scraperapiextractextract, cost
scrapflyextractextract, cost
scrapingbeeextractextract, cost
selenium-gridossnavigate, act, extract, screenshot, downloads, steps, cost
seleniumbaseossnavigate, act, extract, screenshot, downloads, steps, cost
serpapiextractextract, cost
serperextractextract, cost
skyvernagentnavigate, act, extract, replay, screenshot, downloads, steps, cost, human_input, totp
stagehandossnavigate, act, extract, screenshot, downloads, steps, cost, persist_profile
steelinfranavigate, act, extract, cdp_connect, live_view, screenshot, downloads, steps, cost, proxy, persist_profile, human_input, totp
tavilyextractextract, cost
tinyfishagentnavigate, act, extract, steps, cost
zenrowsextractextract, cost

When new runners are added

New runners plug in behind the same adapter contract: each declares its capabilities and maps into banana_peel.run/v1. When we add a runner, your integration keeps reading the same fields — nothing on your side changes.

Command Palette

Search for a command to run...