by OyadotAI
The browser control plane for AI agents. One API over Oya Cloud, Browserbase, Steel, Anchor, Browser Use and your own Chrome, with persistent personas, CAPTCHA and MFA handling, and live human takeover.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
# Add to your Claude Code skills
git clone https://github.com/OyadotAI/oya-browserGuides for using ai agents skills like oya-browser.
Last scanned: 9/26/2026
{
"issues": [
{
"type": "npm-audit",
"message": "esbuild: esbuild allows arbitrary file read when running the development server on Windows",
"severity": "low"
},
{
"file": "README.md",
"line": 138,
"type": "remote-install",
"message": "Install command (remote install script piped to a shell — review the source before running): \"curl -fsSL https://raw.githubusercontent.com/OyadotAI/oya-browser/main/install.s\"",
"severity": "low"
},
{
"file": "skills/oya-browser/SKILL.md",
"line": 25,
"type": "secret-exfiltration",
"message": "Instruction appears to send credentials/secrets to an external endpoint",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-09-26T09:09:18.108Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how oya-browser compares with popular alternatives.
npm i @oya-ai/browser
import { Oya } from "@oya-ai/browser";
const browser = await new Oya().browser.start(); // real Chrome, yours for the session
await browser.goto("https://news.ycombinator.com");
console.log(await browser.ask("What are the top 3 stories?"));
await browser.stop();
DONE: The top 3 stories on Hacker News are:
1. Google's Open Agentic Orchestrator
2. Samsung is expected to more than double output of its HBM4 and HBM4E DRAM
3. What happened to the Snowden archive
Set OYA_API_KEY from oyabrowser.com, or let your agent sign itself up
(below). Node 20+.
No provider set up yet? Open the desktop browser on the same
key and start() hands that one over, so those five lines work with nothing else
configured. npx @oya-ai/cli init picks where browsers run when you want it to start them.
Are you an AI agent (OpenClaw, Hermes, Claude Code, Codex, Cursor or any other) looking for a browser? Everything below works with no person at a dashboard. Full reference, written for you: oyabrowser.com/llms.txt.
As a skill, for any agent that reads SKILL.md:
npx skills add OyadotAI/oya-browser
In code (Node 22.3+). Sign yourself up with your person's email, then use their own browser, already signed in to their sites:
import { Oya } from "@oya-ai/browser";
await Oya.signup({ email: "person@example.com" }); // your own key, saved to ~/.oya/config.json
const browser = await new Oya().desktop.connect(); // pairs the Oya desktop app, imports their logins
await browser.goto("https://example.com");
const { markdown, elements } = await browser.analyze();
desktop.connect() asks your person to install the desktop app
if it is missing, and to click Connect when it opens.
Over MCP, for tools that cannot run code (Claude Desktop, Cursor, Windsurf and the rest):
https://oyabrowser.com/mcp/pool with Authorization: Bearer <key>. In Claude Code:
claude mcp add --transport http oya https://oyabrowser.com/mcp/pool \
--header "Authorization: Bearer $OYA_API_KEY"
Then just ask: "Start a browser, open Hacker News and summarise the top 3 stories." Oya is in
the MCP registry as io.github.OyadotAI/oya-browser, on Smithery
and on ClawHub as oya-browser.
ask() costs a model call every time. Save the run and it never costs one again.
await browser.ask("Log in with {{user}} and {{pass}}. Open New Request for {{name}}.",
{ data: { name: "Alex Example" }, secrets: { user, pass } });
await browser.toPlaybook("new-request"); // the steps it just took
await replay.play("new-request", { name: "Sam Example", user, pass }); // no model, new inputs
Nine of ten public sites replay every recorded step with no model and no repair. The tenth is named, with its error. When a page really has changed, the agent fixes it and leaves you a draft to approve. Every playbook is also a Playwright module you can read and keep.
Scripted logins break on Google SSO, Okta, passkeys and Cloudflare. Don't script them. Import the logins you already have from Chrome, Arc, Brave, Edge or Firefox when you connect the desktop app, or sign in by hand once in it. Every browser you start on that persona is then already signed in: the session travels as cookies and localStorage, sealed at rest, because half the portals worth automating keep you signed in with neither one alone. Every way in and out.
For the portals that end the session server-side anyway, store the login and Oya signs in itself, and stops rather than retrying a password the site has already refused, because that is how a real account gets locked out.
Everyone else ships an SDK that drives headless Chrome over the debugging protocol. That is the easy way, and it is the shape anti-bot vendors have learned to look for. Oya is a real headful browser a person can sit in front of, and the automation runs inside the process:
Runtime.enable, which is a known detection
vector. Replay never turns it on.Log and Network domains, so
watching a run adds nothing a page can see.Measured, not asserted: 0% CreepJS headless score (bare headless Chrome: 100%) and 31 of 31 Bot.Sannysoft, re-run on 2026-09-20. Nobody can promise you are never detected (our own numbers page says so), but you can run the harness yourself and see what it says.
curl -fsSL https://raw.githubusercontent.com/OyadotAI/oya-browser/main/install.sh | sh
It checks for git, Docker and Node 20+, asks six questions, then clones, writes the config, builds and waits for /readyz.
Storage is SQLite (the default), Postgres or JSON files; browsers run on Docker, Kubernetes or your
own machines. For production, deployments/ deploys the control plane and its
browsers to one Docker host, Amazon ECS on Fargate, any Kubernetes cluster, or GKE Autopilot, with
one deploy.sh each.
| CAPTCHA and 2FA | Solved where they can be, handed to a person where they can't |
| Record it yourself | The desktop recorder keeps a draft you edit step by step, validate in fresh tabs and save as a playbook (how) |
| Routines | Saved prompts the desktop agent runs every N minutes or daily at a set time, with each run's steps and answer kept |
| It proves what it did | A hash-chained audit trail the database won't let you rewrite, host allow-listing, regenerable evidence |
| It isn't one vendor | Oya Cloud, Browserbase, Steel, Anchor, Browser Use or your own Chrome (why) |
| It keeps your tools | Every browser has a cdpUrl, so Playwright and Puppeteer connect unchanged |
| Full docs | SDK · CLI · self-hosting · deployments · moving logins · examples · oyabrowser.com/docs · for agents |
| Package | |
|---|---|
@oya-ai/browser |
TypeScript SDK. ESM and CJS, typed, zero runtime dependencies. |
@oya-ai/cli |
The fleet, the live view, the installer. |
server · ui · browser |
Control plane, console, and the browser itself. |
skills/oya-browser |
The agent skill: npx skills add OyadotAI/oya-browser. |
deployments |
Production deploys: Docker, ECS, Kubernetes, GKE. |
npm test # server, CLI and packages; ui and browser run their own (see AGENTS.md)
cd server && npm run stealth -- --live # the stealth numbers, on your machine
The SDK and CLI are MIT. Embed them in commercial agents. Everything else is source-available under the Sustainable Use License: free for internal business use, research and non-commercial use.
oya-browser is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by OyadotAI. The browser control plane for AI agents. One API over Oya Cloud, Browserbase, Steel, Anchor, Browser Use and your own Chrome, with persistent personas, CAPTCHA and MFA handling, and live human takeover. It has 325 GitHub stars.
Yes. oya-browser passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/OyadotAI/oya-browser" and add it to your Claude Code skills directory (see the Installation section above).
oya-browser is primarily written in TypeScript. It is open-source under OyadotAI on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh oya-browser against similar tools.
No comments yet. Be the first to share your thoughts!