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.
-
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 -
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 -
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 -
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
44% fewer
-
Model cost per task (USD)
$0.054 less, 48% less
-
Model API time per task
8.8 s less
Model API time is time spent waiting on the model, not end to end task time.
-
Input tokens per task
47% fewer
-
Output tokens per task
45% fewer
-
Correct answers
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
- 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.
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.
- 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
- macOS Apple silicon (arm64), not yet signed Download
- Linux x86_64, static (musl), not yet tested with Chromium Download
- Linux aarch64, static (musl) 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.
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" }
] } 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.