@oya-ai/cli 1.0.57 → 1.0.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +169 -27
- package/package.json +20 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oya AI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,43 +1,185 @@
|
|
|
1
1
|
# @oya-ai/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>The Command-Line Interface for the Oya Browser Control Plane.</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@oya-ai/cli"><img src="https://img.shields.io/npm/v/@oya-ai/cli?color=39ed35&label=@oya-ai/cli&logo=npm" alt="NPM Version"></a>
|
|
9
|
+
<a href="https://github.com/OyadotAI/oya-browser/blob/main/packages/cli/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?color=39ed35" alt="License: MIT"></a>
|
|
10
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg" alt="Node Version"></a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="https://raw.githubusercontent.com/OyadotAI/oya-browser/main/assets/cli-demo.svg" alt="oya start, goto, ask and ls in a terminal" width="100%">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
Manage, navigate, benchmark, and watch browser agent instances on Oya Cloud, Browserbase, Steel, Anchor, Browser Use, or your self-hosted Chrome fleet straight from your terminal.
|
|
20
|
+
|
|
21
|
+
Oya does for browser vendors what OpenRouter does for LLM providers: one interface, and the vendor behind it is a setting.
|
|
4
22
|
|
|
5
23
|
```bash
|
|
6
|
-
npm
|
|
7
|
-
oya login # paste an API key from browser.getoya.ai
|
|
8
|
-
oya init # pick your model, browser provider and sign-ins
|
|
24
|
+
npm install -g @oya-ai/cli
|
|
9
25
|
```
|
|
10
26
|
|
|
11
|
-
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## ⚡ 60-Second Setup
|
|
12
30
|
|
|
13
31
|
```bash
|
|
14
|
-
|
|
15
|
-
oya
|
|
16
|
-
|
|
17
|
-
|
|
32
|
+
# 1. Authenticate with an API key (interactive or via flags)
|
|
33
|
+
oya login
|
|
34
|
+
|
|
35
|
+
# 2. Interactive onboarding: pick your AI model, default browser provider, and solver
|
|
36
|
+
oya init
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🚀 Everyday Workflow
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Start an orchestrated browser with an automatically rotated persona
|
|
45
|
+
oya start --persona auto
|
|
46
|
+
# Output: ✅ oya-8ed39f1c
|
|
47
|
+
|
|
48
|
+
# Navigate to a target website (defaults to your newest active browser)
|
|
49
|
+
oya goto https://news.ycombinator.com
|
|
50
|
+
|
|
51
|
+
# Drive the browser in plain English using your configured LLM
|
|
52
|
+
oya ask "Extract top 3 articles with points and comments"
|
|
53
|
+
|
|
54
|
+
# Open the sub-second interactive live stream in your desktop browser
|
|
55
|
+
oya open
|
|
56
|
+
|
|
57
|
+
# Check real-time health, command logs, and latencies
|
|
58
|
+
oya status
|
|
59
|
+
|
|
60
|
+
# Inspect running fleet instances
|
|
61
|
+
oya ls
|
|
62
|
+
|
|
63
|
+
# Gracefully terminate all active browsers
|
|
18
64
|
oya rm --all
|
|
19
65
|
```
|
|
20
66
|
|
|
21
|
-
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 📖 Command Reference
|
|
70
|
+
|
|
71
|
+
### Fleet Execution & Control
|
|
72
|
+
|
|
73
|
+
| Command | Flags | Description |
|
|
74
|
+
|:---|:---|:---|
|
|
75
|
+
| `oya start` | `[--persona <id\|auto>] [--provider <p>] [--name <n>] [--governed] [--budget-usd <n>]` | Launch browser instance and print its ID and CDP endpoint |
|
|
76
|
+
| `oya goto <url>` | `[--id <id>]` | Navigate to URL (defaults to newest browser) |
|
|
77
|
+
| `oya ask "<prompt>"` | `[--id <id>]` | Drive page using configured AI model |
|
|
78
|
+
| `oya open` | `[--id <id>]` | Launch interactive SSE live view in system browser |
|
|
79
|
+
| `oya ls` | `[--json]` | List active fleet browsers with health status |
|
|
80
|
+
| `oya status` | `[--id <id>] [--json]` | Detailed metrics, error counts, and recent activity log |
|
|
81
|
+
| `oya rm <id>...` | `[--all]` | Terminate target browser or entire fleet |
|
|
82
|
+
|
|
83
|
+
### Persona Management (Anti-Ban Identities)
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List all saved personas and active concurrency
|
|
87
|
+
oya personas
|
|
88
|
+
|
|
89
|
+
# Create a new persona with fixed device parameters
|
|
90
|
+
oya personas new us-shopper --platform MacIntel --tz America/New_York --locale en-US --max 2 --geo US
|
|
91
|
+
|
|
92
|
+
# Preview generated hardware fingerprint without saving
|
|
93
|
+
oya personas new --preview --platform Win32 --tz Europe/London
|
|
94
|
+
|
|
95
|
+
# Clone an existing persona (same hardware fingerprint class, clean cookie jar)
|
|
96
|
+
oya personas clone <id> --name us-shopper-backup
|
|
97
|
+
|
|
98
|
+
# Edit persona concurrency cap or residential proxy geo
|
|
99
|
+
oya personas edit <id> --max 4 --geo US
|
|
100
|
+
|
|
101
|
+
# Delete a persona and its stored cookie jar
|
|
102
|
+
oya personas rm <id>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Human-in-the-Loop Takeover
|
|
106
|
+
|
|
107
|
+
When automation encounters hardware 2FA, phone biometric approvals, or complex verification:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# 1. Acquire human control lease (pauses agent execution safely)
|
|
111
|
+
oya takeover <browser-id>
|
|
112
|
+
|
|
113
|
+
# 2. Complete manual verification via interactive live view
|
|
114
|
+
oya open --id <browser-id>
|
|
115
|
+
|
|
116
|
+
# 3. Release control when done
|
|
117
|
+
oya release <browser-id>
|
|
118
|
+
|
|
119
|
+
# 4. Acknowledge and resume autonomous agent execution
|
|
120
|
+
oya resume <browser-id>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Governance, Auditing & Webhooks
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# View fleet overview, spend rate cards, and limits
|
|
127
|
+
oya control
|
|
128
|
+
|
|
129
|
+
# Inspect durable sessions (including cleanup-pending or disconnected nodes)
|
|
130
|
+
oya sessions [id]
|
|
131
|
+
|
|
132
|
+
# Force termination of an unresponsive session
|
|
133
|
+
oya stop <id> --force
|
|
134
|
+
|
|
135
|
+
# Read durable append-only lifecycle events
|
|
136
|
+
oya events [--after <cursor>]
|
|
137
|
+
|
|
138
|
+
# Audit hourly token and sandbox spend
|
|
139
|
+
oya usage
|
|
140
|
+
|
|
141
|
+
# Mint scoped service credentials
|
|
142
|
+
oya credential new --role operator --label "ci-runner"
|
|
143
|
+
|
|
144
|
+
# Register an HMAC-signed webhook for fleet lifecycle events
|
|
145
|
+
oya webhook new https://api.mycorp.com/oya-events
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Stealth Benchmarking
|
|
22
149
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
150
|
+
Benchmark your browser deployment against live detection platforms (CreepJS and Bot.Sannysoft). The harness lives in `server/`, so run this from a checkout of the repo, or set `OYA_SERVER_DIR`:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Run local evasion probe suite
|
|
154
|
+
oya stealth-test
|
|
155
|
+
|
|
156
|
+
# Run live benchmark against detection platforms
|
|
157
|
+
oya stealth-test --live
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🤖 CI/CD & Headless Environments
|
|
163
|
+
|
|
164
|
+
In automated pipelines (GitHub Actions, GitLab CI, Docker), use flags or environment variables to bypass interactive prompts:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
export OYA_API_KEY="oya_live_..."
|
|
168
|
+
export OYA_BASE_URL="https://browser.getoya.ai"
|
|
169
|
+
|
|
170
|
+
# Non-interactive launch with JSON output
|
|
171
|
+
oya start --provider browserbase --persona auto --json
|
|
172
|
+
```
|
|
36
173
|
|
|
37
|
-
|
|
174
|
+
| Global Flag | Description |
|
|
175
|
+
|:---|:---|
|
|
176
|
+
| `--key <key>` | Override API key for command |
|
|
177
|
+
| `--url <url>` | Override control plane URL |
|
|
178
|
+
| `--id <id>` | Target specific browser instance ID |
|
|
179
|
+
| `--json` | Output pure JSON for programmatic parsing |
|
|
38
180
|
|
|
39
|
-
|
|
181
|
+
---
|
|
40
182
|
|
|
41
|
-
|
|
183
|
+
## 📄 License
|
|
42
184
|
|
|
43
|
-
|
|
185
|
+
MIT © [Oya](https://getoya.ai)
|
package/package.json
CHANGED
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oya-ai/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.58",
|
|
4
4
|
"description": "Command line for the Oya browser control plane.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"homepage": "https://browser.getoya.ai",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/OyadotAI/oya-browser.git",
|
|
10
|
+
"directory": "packages/cli"
|
|
11
|
+
},
|
|
12
|
+
"bugs": "https://github.com/OyadotAI/oya-browser/issues",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"browser",
|
|
15
|
+
"ai-agents",
|
|
16
|
+
"cli",
|
|
17
|
+
"cdp",
|
|
18
|
+
"headless-chrome",
|
|
19
|
+
"browserbase",
|
|
20
|
+
"steel",
|
|
21
|
+
"browser-use",
|
|
22
|
+
"mcp"
|
|
23
|
+
],
|
|
6
24
|
"type": "module",
|
|
7
25
|
"bin": {
|
|
8
26
|
"oya": "./dist/index.js"
|
|
@@ -21,7 +39,7 @@
|
|
|
21
39
|
"access": "public"
|
|
22
40
|
},
|
|
23
41
|
"devDependencies": {
|
|
24
|
-
"@oya-ai/browser": "1.0.
|
|
42
|
+
"@oya-ai/browser": "1.0.58",
|
|
25
43
|
"@types/node": "^20.19.43",
|
|
26
44
|
"tsup": "^8.0.0",
|
|
27
45
|
"typescript": "^5.4.0"
|