Browser layer for AI agents

Run browser agents in fewer model turns.

okyra is browser automation for AI agents: a local browser layer your agent calls through a CLI or an MCP server. One call runs a whole plan, page snapshots stay small, and the browser session stays open between calls. Your agent takes fewer turns, so each task costs less in model tokens.

  • 48% 1

    lower model cost per task

    vs agent-browser CLI, average of six task medians. 31% across all 30 runs, cold cache included.

  • 44% 1

    fewer model turns

    3.3 versus 6.0 turns per task on average.

  • $0.054 1

    less model cost per task

    $0.022 on the least favourable task.

In our benchmark on Claude Opus 5.5 in Claude Code, against Vercel's agent-browser 0.39.0 CLI, 6 tasks, 5 runs each. 1 Raw runs and harness: github.com/stavthal/okyra-benchmarks.

How it works

Four costs an agent pays on every page. okyra cuts each one.

In Claude Code every model turn re-reads about 40,000 tokens of context, so most of the saving comes from removing turns. okyra cuts turns first, then tokens, then waiting.

  1. 01 · Cuts model turns

    Plans in one call

    Send goto, type, click, wait and extract as one list of steps. okyra runs them and returns one result, so a login and a read is one turn, not five. If a step fails, the plan stops and returns the error with a short snapshot of the page.

    Plan format: many browser steps in one call
  2. 02 · Cuts tokens

    Compact snapshots

    An outline of the page built from landmarks, headings, widgets and text, with refs like @e14 that work as click and type targets. Links stay inline in their sentence. Refs never repeat, and a stale ref fails fast instead of clicking the wrong thing.

    How snapshots, refs and targets work
  3. 03 · Cuts process start

    Persistent daemon

    The first call starts a daemon that holds the Chrome DevTools Protocol session and keeps the browser and named pages open. Later calls reuse it through a local socket. It exits on its own after 30 idle minutes.

    The daemon, its socket and the CLI
  4. 04 · Cuts waiting

    Settle events

    After a load, click, type or key press, okyra waits until requests finish and the page stops changing, then says so. No fixed sleeps and no polling turns. A page that never settles is reported as not settled instead of failing the step.

    How okyra waits for pages to settle
agent ──MCP──> okyra mcp ─┐
shell ──────> okyra ... ──┴─socket─> okyra daemon ──CDP──> Chromium

Measured

Same tasks, same browser, fewer turns.

We ran 6 browser tasks 5 times with each tool, on Claude Opus 5.5 in Claude Code. agent-browser ran through its CLI with its own core skill, the way its README recommends for coding agents and its best arm in our tests.

  • Model turns per task

    okyra1
    3.3
    agent-browser CLI1
    6.0

    44% fewer

  • Model cost per task (USD)

    okyra1
    $0.059
    agent-browser CLI1
    $0.114

    $0.054 less, 48% less

  • Model API time per task

    okyra1
    9.3 s
    agent-browser CLI1
    18.1 s

    8.8 s less

    Model API time is time spent waiting on the model, not end to end task time.

  • Input tokens per task

    okyra1
    133,786
    agent-browser CLI1
    253,696

    47% fewer

  • Output tokens per task

    okyra1
    508
    agent-browser CLI1
    919

    45% fewer

  • Correct answers

    okyra1
    29 of 30
    agent-browser CLI1
    30 of 30

    okyra's one miss was a run in which the test site returned an error page.

In our tests, model cost per task was 48% lower than with agent-browser on average (26% to 58% depending on the task; 31% when every run, including cold cache runs, is averaged).1 On the four tasks okyra was not tuned for, it used 43% fewer model turns and 44% lower model cost per task than agent-browser in our tests.1

Model cost per task, median of 5 runs (USD)1 okyra agent-browser CLI
  • T2 Wikipedia search, read the infobox (tuned) $0.050 · 4 turns $0.118 · 7 turns
  • T3 Fill and submit an order form (tuned) $0.078 · 4 turns $0.158 · 8 turns
  • T4 Log in $0.060 · 3 turns $0.082 · 4 turns
  • T5 Single page app: add, complete, count $0.051 · 3 turns $0.117 · 6 turns
  • T6 Pagination to page 3 $0.069 · 3 turns $0.100 · 6 turns
  • T7 Read late loading content $0.046 · 3 turns $0.106 · 5 turns

Full method, limits and per task numbers

1. Our benchmark, run 2026-10-13: six browser tasks, 5 runs per tool per task, medians reported. Claude Opus 5.5 (claude-opus-5-5) in Claude Code, costs at list price as Claude Code reports them. okyra build of 2026-10-13 through its MCP server; Vercel agent-browser 0.39.0 (latest release on that date) through its CLI with its bundled core skill. Same browser for both, both warm. okyra was tuned after seeing two of the six tasks. Method, limits, raw results and scripts: our benchmark page and github.com/stavthal/okyra-benchmarks.

Savings calculator

What would your team save?

Enter your monthly browser tasks. The defaults are our measured costs per task; change them if you know yours.

Inputs
Which benchmark numbers

monthly saving = tasks per month × (agent-browser cost per task − okyra cost per task)

Model cost saved per month
$545 Estimate based on our benchmark2
Model cost saved per year
$6,542 Estimate based on our benchmark2
Model time saved per month
24.5 h Estimate based on our benchmark2 Time the model spent generating, summed over tasks. Not wall clock time and not human time.
Against Team at $119 a month
4.6x the price Estimate based on our benchmark2

Against Business at $449 a month: 1.2x the price (estimate2)

Estimate based on our benchmark (Claude Opus 5.5, Claude Code, list prices, October 2026). Your saving depends on your tasks, model and harness.

Break even on model cost alone: Team at about 2,200 tasks a month (typical) or 5,500 (conservative); Business at about 8,200 or 20,800.

What we did not measure

  • Only Claude Opus 5.5 in Claude Code was measured. Savings on other models, harnesses or custom agent loops are not known; a cheaper model or a smaller context per turn saves fewer dollars per turn.
  • No wall clock or end to end speed claims. Harness and shell overhead were not isolated.
  • Playwright MCP, Chrome DevTools MCP, browser-use and Stagehand were not benchmarked. We make no claim about them.
  • Small sample: 5 runs per tool per task, 6 tasks, one day. okyra was tuned after seeing two of the tasks.
  • A later agent-browser release can change the result. These numbers are for 0.39.0.

2. Estimate based on our benchmark. Your saving depends on your tasks, model, harness and cache hit rate. Not measured on other models or harnesses.

Pricing

Priced by runners, not by tasks.

Every plan has every feature. Plans differ in runners, support and paperwork. okyra sends no data, so there is no usage metering: the licence is a compliance record, checked offline.

  • Free

    No runner limit

    €0

    no key needed

    Personal use, noncommercial organisations, and any company for a 30 day evaluation.

    • Every feature
    • No key, no sign up
    • PolyForm Noncommercial 1.0.0

    Nothing to pay

  • Team

    Up to 3 runners

    €99 / $119

    a month

    or €990 / $1,190 a year

    Small teams and AI startups running agents in CI or in one product.

    • Every feature
    • Unlimited developer machines
    • Email support, best effort, 3 business days

    Card, monthly or annual

  • Business

    Up to 10 runners

    €399 / $449

    a month

    or €3,990 / $4,490 a year

    QA and test automation teams, RPA and data extraction shops.

    • Everything in Team
    • Support within 2 business days
    • Order form
    • Security documentation pack (coming)
    • Annual by card or invoice, net 30
    • Named licence contact

    Card monthly; annual by card or invoice

  • Enterprise

    Unlimited runners

    from €15,000

    or $17,500 a year

    Agent platforms and large fleets.

    • Everything in Business
    • Contract redlines and audit terms
    • Priority fixes and an onboarding call
    • Source access for security review, under contract

    Annual invoice

What is a runner?

A runner is one machine, VM or container where okyra does automated work: CI jobs, production agents, scheduled scrapers. We count the peak number running at the same time in a month. Developer machines used interactively by your staff are unlimited and not counted.

Free for personal use and for noncommercial organisations such as charities, schools, public research bodies and government institutions, under PolyForm Noncommercial 1.0.0. Any company may evaluate okyra free for 30 days.

Prices exclude VAT. Annual plans cost ten times the monthly price.

Founding offer

For the first 10 companies.

Team annual at €990 ($1,190) a year, and you keep that price for every renewal as long as you renew without a lapse, whatever list prices do later. Full refund of your first payment if you ask within 30 days. We start with a 20 minute call and run one of your own tasks through okyra and agent-browser, so you see your numbers before you pay.

Talk to us
  • Price kept while you renew without a lapse
  • 30 day refund on the first payment
  • Invoice or card
  • Your own task benchmarked on the call

Install

One binary. No account, no key.

okyra drives any Chromium based browser: Chrome, Chromium, Brave or Edge. Set OKYRA_CHROME to pick a specific one. It uses a throwaway browser profile, never yours.

Download

Version 0.1.0. Free for personal and noncommercial use and a 30 day company evaluation. Each tarball holds the okyra binary, its licence, a README and the notices for the open source components it includes. Third party notices.

In a Linux container that is your isolation boundary, set OKYRA_NO_SANDBOX=1 so Chromium starts without its own sandbox. Without it, okyra says so instead of failing silently.

Install guide: Chromium, containers and the daemon

Homebrew (coming)

brew install sthlabs/tap/okyra

Not open yet. The tap opens once the macOS build is signed and notarized.

Try it from the shell

okyra goto https://news.ycombinator.com
okyra snapshot            # outline with refs like @e14
okyra click @e14
okyra run plan.json       # many steps, one call
okyra stop

A plan

{ "steps": [
  { "action": "goto", "url": "https://acme.test/login" },
  { "action": "type", "target": "#email", "text": "ana@acme.test" },
  { "action": "click", "target": "button[type=submit]" },
  { "action": "text", "target": ".balance", "name": "balance" }
] }

Plan format, repeat and each

MCP

Add it to your agent in one line.

okyra mcp serves the Model Context Protocol over stdio. The server teaches the agent refs and plans, failed plans come back as tool errors, and screenshots come back as images.

Tools

  • okyra_goto
  • okyra_snapshot
  • okyra_click
  • okyra_type
  • okyra_select
  • okyra_upload
  • okyra_hover
  • okyra_press
  • okyra_scroll
  • okyra_text
  • okyra_extract
  • okyra_eval
  • okyra_screenshot
  • okyra_plan
  • okyra_pages
  • okyra_close

Claude Code

claude mcp add okyra -- okyra mcp

Any MCP client that reads a JSON config

{
  "mcpServers": {
    "okyra": { "command": "okyra", "args": ["mcp"] }
  }
}

MCP setup for Cursor, Codex and Claude Desktop, and every tool parameter

Licence keys

A key that never stops a run.

After you buy, we email you a signed licence key. For now we sign and send each key by hand; automatic delivery after checkout is coming. okyra checks the key offline. It never blocks a run, never slows it, never changes output and never exits with an error because of the licence.

  • Checked offline with an ed25519 signature. Works air gapped.
  • No activation server and no machine limit. Runner counts are a contract term.
  • 30 days of grace after expiry, then okyra behaves as it does with no key.
  • Without a key, an interactive terminal shows one reminder line at most once a day. okyra mcp and piped output never show it.
okyra license install key.txt   # saves it to ~/.config/okyra/license
okyra license status            # plan, company, runners, expiry

In CI

export OKYRA_LICENSE="$OKYRA_LICENSE_KEY"   # the key text, from your CI secrets

Security and privacy

Runs on your machines. Sends nothing to us.

  • Local only

    okyra runs next to your agent, on your machine, VM or container. There is no okyra server and no account.

  • No telemetry

    okyra collects no usage data, crash reports or analytics. The licence check is offline.

  • No HTTP client in the binary

    Its only network connection is the local DevTools WebSocket to the browser it starts. The browser loads the pages your agent opens; okyra itself calls nothing.

  • Isolated browser

    A throwaway browser profile, never your own. The daemon listens on a Unix socket only your user can open (mode 0600).

Enterprise customers can get source access under contract for a security review.

FAQ

Questions buyers ask

What counts as a runner?

A runner is one machine, VM or container where okyra does automated work: CI jobs, production agents, scheduled scrapers. We count the peak number running at the same time in a month. Developer machines used interactively by your staff are unlimited and not counted.

Can we try it before we buy?

Yes. Any company can use okyra free for 30 days to evaluate it, with every feature and no key. Personal and noncommercial use is free with no time limit.

Which models and agents were measured?

Only Claude Opus 5.5 in Claude Code. okyra works with any agent that speaks MCP over stdio, or from any shell, but we have not measured the saving anywhere else. A cheaper model saves fewer dollars per turn.

Does the saving pay for the licence?

At about 2,200 tasks a month or more, in our benchmark, the model saving alone covers Team (about 5,500 on the least favourable task). Below that, the model saving does not pay for Team on its own. Use the calculator with your own numbers.

How does okyra compare with Playwright MCP or Chrome DevTools MCP?

We have not benchmarked them, so we make no claim. Our only measured comparison is against Vercel agent-browser 0.39.0.

Is okyra open source?

No. okyra ships as binaries. It is free for personal and noncommercial use under PolyForm Noncommercial 1.0.0; business use after the 30 day evaluation needs an okyra Commercial License. The benchmark harness and raw results are public.

Does okyra send any data?

No. It has no telemetry and no HTTP client. Its only connection is the local DevTools WebSocket to the browser it starts.

What happens when a licence expires?

Nothing breaks. okyra keeps working through 30 days of grace, then behaves as it does with no key. It never blocks a run or changes its output.

Which platforms does it run on?

macOS on Apple silicon, and Linux on x86_64 and aarch64 as static binaries with no glibc requirement. The aarch64 build is tested with Chromium in a debian:bookworm container. The x86_64 build is not yet tested against Chromium; that test is coming. The macOS build is not yet signed or notarized. okyra needs a Chromium based browser: Chrome, Chromium, Brave or Edge.

Is okyra made by Vercel?

No. okyra is made by STH Labs. It is not affiliated with or endorsed by Vercel. agent-browser is a product of Vercel Inc.

Run your own task through both tools.

Twenty minutes, your task, both tools, real numbers. If okyra does not cut your model bill, you will know before you pay.