@ulpi/browse 2.3.3 → 2.4.0

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.
Files changed (279) hide show
  1. package/README.md +8 -2
  2. package/dist/browse.cjs +3445 -1636
  3. package/dist/lib.mjs +29504 -0
  4. package/dist/types/a11y.d.ts +32 -0
  5. package/dist/types/a11y.d.ts.map +1 -0
  6. package/dist/types/app/android/bridge.d.ts +41 -0
  7. package/dist/types/app/android/bridge.d.ts.map +1 -0
  8. package/dist/types/app/android/emulator.d.ts +32 -0
  9. package/dist/types/app/android/emulator.d.ts.map +1 -0
  10. package/dist/types/app/android/manager.d.ts +62 -0
  11. package/dist/types/app/android/manager.d.ts.map +1 -0
  12. package/dist/types/app/android/protocol.d.ts +162 -0
  13. package/dist/types/app/android/protocol.d.ts.map +1 -0
  14. package/dist/types/app/android/sim-service.d.ts +33 -0
  15. package/dist/types/app/android/sim-service.d.ts.map +1 -0
  16. package/dist/types/app/index.d.ts +15 -0
  17. package/dist/types/app/index.d.ts.map +1 -0
  18. package/dist/types/app/ios/bridge.d.ts +53 -0
  19. package/dist/types/app/ios/bridge.d.ts.map +1 -0
  20. package/dist/types/app/ios/controller.d.ts +131 -0
  21. package/dist/types/app/ios/controller.d.ts.map +1 -0
  22. package/dist/types/app/ios/manager.d.ts +96 -0
  23. package/dist/types/app/ios/manager.d.ts.map +1 -0
  24. package/dist/types/app/ios/protocol.d.ts +122 -0
  25. package/dist/types/app/ios/protocol.d.ts.map +1 -0
  26. package/dist/types/app/ios/sim-service.d.ts +37 -0
  27. package/dist/types/app/ios/sim-service.d.ts.map +1 -0
  28. package/dist/types/app/macos/bridge.d.ts +22 -0
  29. package/dist/types/app/macos/bridge.d.ts.map +1 -0
  30. package/dist/types/app/manager.d.ts +50 -0
  31. package/dist/types/app/manager.d.ts.map +1 -0
  32. package/dist/types/app/normalize.d.ts +27 -0
  33. package/dist/types/app/normalize.d.ts.map +1 -0
  34. package/dist/types/app/resolve-app.d.ts +31 -0
  35. package/dist/types/app/resolve-app.d.ts.map +1 -0
  36. package/dist/types/app/types.d.ts +77 -0
  37. package/dist/types/app/types.d.ts.map +1 -0
  38. package/dist/types/automation/action-context.d.ts +110 -0
  39. package/dist/types/automation/action-context.d.ts.map +1 -0
  40. package/dist/types/automation/command.d.ts +138 -0
  41. package/dist/types/automation/command.d.ts.map +1 -0
  42. package/dist/types/automation/events.d.ts +72 -0
  43. package/dist/types/automation/events.d.ts.map +1 -0
  44. package/dist/types/automation/executor.d.ts +39 -0
  45. package/dist/types/automation/executor.d.ts.map +1 -0
  46. package/dist/types/automation/index.d.ts +11 -0
  47. package/dist/types/automation/index.d.ts.map +1 -0
  48. package/dist/types/automation/registry.d.ts +38 -0
  49. package/dist/types/automation/registry.d.ts.map +1 -0
  50. package/dist/types/automation/rules.d.ts +52 -0
  51. package/dist/types/automation/rules.d.ts.map +1 -0
  52. package/dist/types/automation/target.d.ts +76 -0
  53. package/dist/types/automation/target.d.ts.map +1 -0
  54. package/dist/types/browser/consent.d.ts +13 -0
  55. package/dist/types/browser/consent.d.ts.map +1 -0
  56. package/dist/types/browser/cookie-import.d.ts +94 -0
  57. package/dist/types/browser/cookie-import.d.ts.map +1 -0
  58. package/dist/types/browser/detection.d.ts +22 -0
  59. package/dist/types/browser/detection.d.ts.map +1 -0
  60. package/dist/types/browser/emulation.d.ts +30 -0
  61. package/dist/types/browser/emulation.d.ts.map +1 -0
  62. package/dist/types/browser/events.d.ts +19 -0
  63. package/dist/types/browser/events.d.ts.map +1 -0
  64. package/dist/types/browser/index.d.ts +17 -0
  65. package/dist/types/browser/index.d.ts.map +1 -0
  66. package/dist/types/browser/macros.d.ts +9 -0
  67. package/dist/types/browser/macros.d.ts.map +1 -0
  68. package/dist/types/browser/manager.d.ts +272 -0
  69. package/dist/types/browser/manager.d.ts.map +1 -0
  70. package/dist/types/browser/png-compare.d.ts +36 -0
  71. package/dist/types/browser/png-compare.d.ts.map +1 -0
  72. package/dist/types/browser/profiles.d.ts +29 -0
  73. package/dist/types/browser/profiles.d.ts.map +1 -0
  74. package/dist/types/browser/react-devtools.d.ts +75 -0
  75. package/dist/types/browser/react-devtools.d.ts.map +1 -0
  76. package/dist/types/browser/readiness.d.ts +19 -0
  77. package/dist/types/browser/readiness.d.ts.map +1 -0
  78. package/dist/types/browser/refs.d.ts +70 -0
  79. package/dist/types/browser/refs.d.ts.map +1 -0
  80. package/dist/types/browser/serp.d.ts +16 -0
  81. package/dist/types/browser/serp.d.ts.map +1 -0
  82. package/dist/types/browser/snapshot-window.d.ts +31 -0
  83. package/dist/types/browser/snapshot-window.d.ts.map +1 -0
  84. package/dist/types/browser/snapshot.d.ts +41 -0
  85. package/dist/types/browser/snapshot.d.ts.map +1 -0
  86. package/dist/types/browser/tabs.d.ts +67 -0
  87. package/dist/types/browser/tabs.d.ts.map +1 -0
  88. package/dist/types/browser/target.d.ts +106 -0
  89. package/dist/types/browser/target.d.ts.map +1 -0
  90. package/dist/types/browser/youtube.d.ts +26 -0
  91. package/dist/types/browser/youtube.d.ts.map +1 -0
  92. package/dist/types/cli.d.ts +14 -0
  93. package/dist/types/cli.d.ts.map +1 -0
  94. package/dist/types/cloud/auth.d.ts +80 -0
  95. package/dist/types/cloud/auth.d.ts.map +1 -0
  96. package/dist/types/cloud/docker.d.ts +76 -0
  97. package/dist/types/cloud/docker.d.ts.map +1 -0
  98. package/dist/types/cloud/firecracker.d.ts +142 -0
  99. package/dist/types/cloud/firecracker.d.ts.map +1 -0
  100. package/dist/types/cloud/golden-snapshot.d.ts +122 -0
  101. package/dist/types/cloud/golden-snapshot.d.ts.map +1 -0
  102. package/dist/types/cloud/index.d.ts +26 -0
  103. package/dist/types/cloud/index.d.ts.map +1 -0
  104. package/dist/types/cloud/orchestrator-interface.d.ts +63 -0
  105. package/dist/types/cloud/orchestrator-interface.d.ts.map +1 -0
  106. package/dist/types/cloud/orchestrator.d.ts +58 -0
  107. package/dist/types/cloud/orchestrator.d.ts.map +1 -0
  108. package/dist/types/cloud/proxy.d.ts +34 -0
  109. package/dist/types/cloud/proxy.d.ts.map +1 -0
  110. package/dist/types/cloud/reaper.d.ts +49 -0
  111. package/dist/types/cloud/reaper.d.ts.map +1 -0
  112. package/dist/types/cloud/server.d.ts +19 -0
  113. package/dist/types/cloud/server.d.ts.map +1 -0
  114. package/dist/types/cloud/sessions.d.ts +85 -0
  115. package/dist/types/cloud/sessions.d.ts.map +1 -0
  116. package/dist/types/cloud/vm-orchestrator.d.ts +133 -0
  117. package/dist/types/cloud/vm-orchestrator.d.ts.map +1 -0
  118. package/dist/types/cloud/vm-warm-pool.d.ts +104 -0
  119. package/dist/types/cloud/vm-warm-pool.d.ts.map +1 -0
  120. package/dist/types/cloud/warm-pool.d.ts +85 -0
  121. package/dist/types/cloud/warm-pool.d.ts.map +1 -0
  122. package/dist/types/cloud/ws.d.ts +61 -0
  123. package/dist/types/cloud/ws.d.ts.map +1 -0
  124. package/dist/types/commands/meta/auth.d.ts +6 -0
  125. package/dist/types/commands/meta/auth.d.ts.map +1 -0
  126. package/dist/types/commands/meta/flows.d.ts +15 -0
  127. package/dist/types/commands/meta/flows.d.ts.map +1 -0
  128. package/dist/types/commands/meta/index.d.ts +14 -0
  129. package/dist/types/commands/meta/index.d.ts.map +1 -0
  130. package/dist/types/commands/meta/inspection.d.ts +7 -0
  131. package/dist/types/commands/meta/inspection.d.ts.map +1 -0
  132. package/dist/types/commands/meta/profile.d.ts +11 -0
  133. package/dist/types/commands/meta/profile.d.ts.map +1 -0
  134. package/dist/types/commands/meta/recording.d.ts +7 -0
  135. package/dist/types/commands/meta/recording.d.ts.map +1 -0
  136. package/dist/types/commands/meta/screenshots.d.ts +7 -0
  137. package/dist/types/commands/meta/screenshots.d.ts.map +1 -0
  138. package/dist/types/commands/meta/sessions.d.ts +7 -0
  139. package/dist/types/commands/meta/sessions.d.ts.map +1 -0
  140. package/dist/types/commands/meta/sim.d.ts +10 -0
  141. package/dist/types/commands/meta/sim.d.ts.map +1 -0
  142. package/dist/types/commands/meta/system.d.ts +8 -0
  143. package/dist/types/commands/meta/system.d.ts.map +1 -0
  144. package/dist/types/commands/meta/tabs.d.ts +6 -0
  145. package/dist/types/commands/meta/tabs.d.ts.map +1 -0
  146. package/dist/types/commands/meta/youtube.d.ts +7 -0
  147. package/dist/types/commands/meta/youtube.d.ts.map +1 -0
  148. package/dist/types/commands/read.d.ts +16 -0
  149. package/dist/types/commands/read.d.ts.map +1 -0
  150. package/dist/types/commands/write.d.ts +17 -0
  151. package/dist/types/commands/write.d.ts.map +1 -0
  152. package/dist/types/config.d.ts +101 -0
  153. package/dist/types/config.d.ts.map +1 -0
  154. package/dist/types/constants.d.ts +36 -0
  155. package/dist/types/constants.d.ts.map +1 -0
  156. package/dist/types/detection/frameworks.d.ts +27 -0
  157. package/dist/types/detection/frameworks.d.ts.map +1 -0
  158. package/dist/types/detection/index.d.ts +64 -0
  159. package/dist/types/detection/index.d.ts.map +1 -0
  160. package/dist/types/detection/infrastructure.d.ts +82 -0
  161. package/dist/types/detection/infrastructure.d.ts.map +1 -0
  162. package/dist/types/detection/saas.d.ts +39 -0
  163. package/dist/types/detection/saas.d.ts.map +1 -0
  164. package/dist/types/enable.d.ts +10 -0
  165. package/dist/types/enable.d.ts.map +1 -0
  166. package/dist/types/engine/chrome.d.ts +45 -0
  167. package/dist/types/engine/chrome.d.ts.map +1 -0
  168. package/dist/types/engine/index.d.ts +9 -0
  169. package/dist/types/engine/index.d.ts.map +1 -0
  170. package/dist/types/engine/providers.d.ts +36 -0
  171. package/dist/types/engine/providers.d.ts.map +1 -0
  172. package/dist/types/engine/resolver.d.ts +36 -0
  173. package/dist/types/engine/resolver.d.ts.map +1 -0
  174. package/dist/types/expect.d.ts +68 -0
  175. package/dist/types/expect.d.ts.map +1 -0
  176. package/dist/types/export/index.d.ts +8 -0
  177. package/dist/types/export/index.d.ts.map +1 -0
  178. package/dist/types/export/record.d.ts +28 -0
  179. package/dist/types/export/record.d.ts.map +1 -0
  180. package/dist/types/export/replay.d.ts +9 -0
  181. package/dist/types/export/replay.d.ts.map +1 -0
  182. package/dist/types/flow-parser.d.ts +32 -0
  183. package/dist/types/flow-parser.d.ts.map +1 -0
  184. package/dist/types/install-skill.d.ts +8 -0
  185. package/dist/types/install-skill.d.ts.map +1 -0
  186. package/dist/types/lib.d.ts +27 -0
  187. package/dist/types/lib.d.ts.map +1 -0
  188. package/dist/types/mcp/index.d.ts +10 -0
  189. package/dist/types/mcp/index.d.ts.map +1 -0
  190. package/dist/types/mcp/server.d.ts +9 -0
  191. package/dist/types/mcp/server.d.ts.map +1 -0
  192. package/dist/types/mcp/tools/index.d.ts +36 -0
  193. package/dist/types/mcp/tools/index.d.ts.map +1 -0
  194. package/dist/types/network/buffers.d.ts +53 -0
  195. package/dist/types/network/buffers.d.ts.map +1 -0
  196. package/dist/types/network/har.d.ts +10 -0
  197. package/dist/types/network/har.d.ts.map +1 -0
  198. package/dist/types/network/index.d.ts +6 -0
  199. package/dist/types/network/index.d.ts.map +1 -0
  200. package/dist/types/perf-audit/diff.d.ts +43 -0
  201. package/dist/types/perf-audit/diff.d.ts.map +1 -0
  202. package/dist/types/perf-audit/dom-analysis.d.ts +74 -0
  203. package/dist/types/perf-audit/dom-analysis.d.ts.map +1 -0
  204. package/dist/types/perf-audit/formatter.d.ts +34 -0
  205. package/dist/types/perf-audit/formatter.d.ts.map +1 -0
  206. package/dist/types/perf-audit/index.d.ts +128 -0
  207. package/dist/types/perf-audit/index.d.ts.map +1 -0
  208. package/dist/types/perf-audit/persist.d.ts +40 -0
  209. package/dist/types/perf-audit/persist.d.ts.map +1 -0
  210. package/dist/types/perf-audit/recommendations.d.ts +18 -0
  211. package/dist/types/perf-audit/recommendations.d.ts.map +1 -0
  212. package/dist/types/perf-audit/resource-analyzer.d.ts +46 -0
  213. package/dist/types/perf-audit/resource-analyzer.d.ts.map +1 -0
  214. package/dist/types/perf-audit/web-vitals.d.ts +73 -0
  215. package/dist/types/perf-audit/web-vitals.d.ts.map +1 -0
  216. package/dist/types/proxy/index.d.ts +6 -0
  217. package/dist/types/proxy/index.d.ts.map +1 -0
  218. package/dist/types/proxy/pool.d.ts +44 -0
  219. package/dist/types/proxy/pool.d.ts.map +1 -0
  220. package/dist/types/proxy/providers.d.ts +32 -0
  221. package/dist/types/proxy/providers.d.ts.map +1 -0
  222. package/dist/types/sdk/client.d.ts +37 -0
  223. package/dist/types/sdk/client.d.ts.map +1 -0
  224. package/dist/types/sdk/index.d.ts +17 -0
  225. package/dist/types/sdk/index.d.ts.map +1 -0
  226. package/dist/types/sdk/session.d.ts +95 -0
  227. package/dist/types/sdk/session.d.ts.map +1 -0
  228. package/dist/types/sdk/transports/cloud.d.ts +89 -0
  229. package/dist/types/sdk/transports/cloud.d.ts.map +1 -0
  230. package/dist/types/sdk/transports/index.d.ts +3 -0
  231. package/dist/types/sdk/transports/index.d.ts.map +1 -0
  232. package/dist/types/sdk/transports/local.d.ts +56 -0
  233. package/dist/types/sdk/transports/local.d.ts.map +1 -0
  234. package/dist/types/sdk.d.ts +35 -0
  235. package/dist/types/sdk.d.ts.map +1 -0
  236. package/dist/types/security/auth-vault.d.ts +32 -0
  237. package/dist/types/security/auth-vault.d.ts.map +1 -0
  238. package/dist/types/security/domain-filter.d.ts +31 -0
  239. package/dist/types/security/domain-filter.d.ts.map +1 -0
  240. package/dist/types/security/index.d.ts +10 -0
  241. package/dist/types/security/index.d.ts.map +1 -0
  242. package/dist/types/security/policy.d.ts +20 -0
  243. package/dist/types/security/policy.d.ts.map +1 -0
  244. package/dist/types/security/sanitize.d.ts +6 -0
  245. package/dist/types/security/sanitize.d.ts.map +1 -0
  246. package/dist/types/server.d.ts +13 -0
  247. package/dist/types/server.d.ts.map +1 -0
  248. package/dist/types/session/concurrency.d.ts +28 -0
  249. package/dist/types/session/concurrency.d.ts.map +1 -0
  250. package/dist/types/session/encryption.d.ts +8 -0
  251. package/dist/types/session/encryption.d.ts.map +1 -0
  252. package/dist/types/session/index.d.ts +7 -0
  253. package/dist/types/session/index.d.ts.map +1 -0
  254. package/dist/types/session/manager.d.ts +110 -0
  255. package/dist/types/session/manager.d.ts.map +1 -0
  256. package/dist/types/session/persist.d.ts +87 -0
  257. package/dist/types/session/persist.d.ts.map +1 -0
  258. package/dist/types/session/tab-lock.d.ts +26 -0
  259. package/dist/types/session/tab-lock.d.ts.map +1 -0
  260. package/dist/types/session/target-factory.d.ts +88 -0
  261. package/dist/types/session/target-factory.d.ts.map +1 -0
  262. package/dist/types/sim-cli.d.ts +8 -0
  263. package/dist/types/sim-cli.d.ts.map +1 -0
  264. package/dist/types/types.d.ts +45 -0
  265. package/dist/types/types.d.ts.map +1 -0
  266. package/dist/types/visual.d.ts +79 -0
  267. package/dist/types/visual.d.ts.map +1 -0
  268. package/package.json +22 -3
  269. package/skill/browse/SKILL.md +286 -0
  270. package/skill/{references → browse/references}/commands.md +203 -18
  271. package/skill/browse-aeo/SKILL.md +148 -0
  272. package/skill/browse-config/SKILL.md +200 -0
  273. package/skill/browse-geo/SKILL.md +225 -0
  274. package/skill/browse-qa/SKILL.md +143 -0
  275. package/skill/browse-seo/SKILL.md +188 -0
  276. package/skill/browse-stealth/SKILL.md +246 -0
  277. package/skill/SKILL.md +0 -496
  278. /package/skill/{references → browse/references}/guides.md +0 -0
  279. /package/skill/{references → browse/references}/permissions.md +0 -0
package/skill/SKILL.md DELETED
@@ -1,496 +0,0 @@
1
- ---
2
- name: browse
3
- version: 3.5.0
4
- description: |
5
- Fast web browsing and web app testing for AI coding agents via persistent headless Chromium daemon.
6
- Browse any URL, read page content, click elements, fill forms, run JavaScript, take screenshots,
7
- inspect CSS/DOM, capture console/network logs, and more. Ideal for verifying local dev servers,
8
- testing UI changes, and validating web app behavior end-to-end. ~100ms per command after
9
- first call. Works with Claude Code, Cursor, Cline, Windsurf, and any agent that can run Bash.
10
- No MCP, no Chrome extension — just fast CLI.
11
- allowed-tools:
12
- - Bash
13
- - Read
14
-
15
- ---
16
-
17
- # browse: Persistent Browser for AI Coding Agents
18
-
19
- Persistent headless Chromium daemon. First call auto-starts the server (~3s).
20
- Every subsequent call: ~100-200ms. Auto-shuts down after 30 min idle.
21
-
22
- ## SETUP
23
-
24
- Before using browse, confirm the CLI is installed:
25
-
26
- ```bash
27
- browse --version
28
- ```
29
-
30
- If not installed, tell the user:
31
-
32
- > `browse` CLI is not installed. Install it with:
33
- >
34
- > ```bash
35
- > npm install -g @ulpi/browse
36
- > ```
37
-
38
- **Do NOT install anything automatically.** Wait for the user to confirm they have installed it before proceeding.
39
-
40
- ### Permissions (optional)
41
-
42
- To avoid being prompted on every browse command, tell the user they can pre-allow browse commands. Read [references/permissions.md](references/permissions.md) for the full permission list to add to `.claude/settings.json`.
43
-
44
- **Do NOT modify settings files automatically.** Show the user the permissions and let them decide whether to add them.
45
-
46
- ## IMPORTANT
47
-
48
- - Always call `browse` as a bare command (it's on PATH via global install).
49
- - Do NOT use shell variables like `B=...` or full paths — they break Claude Code's permission matching.
50
- - NEVER use `#` in CSS selectors — use `[id=foo]` instead of `#foo`. The `#` character breaks Claude Code's permission matching and triggers approval prompts.
51
- - After `goto`, always run `browse wait --network-idle` before reading content or taking screenshots. Pages with dynamic content, SPAs, and lazy-loaded assets need time to fully render.
52
- - Screenshots MUST be saved to `.browse/sessions/default/` (or `.browse/sessions/<session-id>/` when using `--session`). Use descriptive filenames like `browse screenshot .browse/sessions/default/homepage.png`. NEVER save screenshots to `/tmp` or any other location.
53
- - The browser persists between calls — cookies, tabs, and state carry over.
54
- - The server auto-starts on first command. No manual setup needed.
55
- - Use `--session <id>` for parallel agent isolation. Each session gets its own tabs, refs, cookies.
56
- - Use `--context` for state changes, `--context delta` for ARIA diff with refs, `--context full` for complete snapshot with refs after write commands.
57
- - Use `--json` for structured output (`{success, data, command}`).
58
- - Use `--content-boundaries` for prompt injection defense when reading untrusted pages.
59
- - Use `--allowed-domains domain1,domain2` to restrict navigation to trusted sites.
60
- - If you hit CAPTCHA/MFA after 2-3 failures, read [references/guides.md](references/guides.md) for the mandatory handoff protocol.
61
-
62
- ## Quick Reference
63
-
64
- ```bash
65
- # Navigate and wait
66
- browse goto https://example.com
67
- browse wait --network-idle
68
-
69
- # Read content
70
- browse text # Cleaned page text
71
- browse html "[id=main]" # innerHTML of element
72
- browse links # All links as "text → href"
73
- browse js "document.title" # Run JavaScript
74
-
75
- # Screenshot (then Read the image to view it)
76
- browse screenshot .browse/sessions/default/homepage.png
77
-
78
- # Interact via snapshot refs (preferred)
79
- browse snapshot -i # Get interactive element refs
80
- browse click @e3 # Click by ref
81
- browse fill @e4 "test@test.com" # Fill by ref
82
- browse check @e7 # Check checkbox
83
- browse select @e5 "option-value" # Select dropdown
84
-
85
- # Interact via CSS selectors (use [id=...] instead of #)
86
- browse click "button.submit"
87
- browse fill "[id=email]" "test@test.com"
88
- browse fill "[id=password]" "abc123"
89
- browse click "button[type=submit]"
90
-
91
- # Wait variants
92
- browse wait ".loaded" # Wait for element
93
- browse wait --url "**/dashboard" # Wait for URL
94
- browse wait --network-idle # Wait for network idle
95
- browse wait 2000 # Wait milliseconds
96
-
97
- # Element queries
98
- browse count ".search-result" # Count elements
99
- browse value "[id=email]" # Get input value
100
- browse css @e3 "color" # Get computed CSS
101
- browse attrs @e3 # Get attributes
102
- browse console # View console messages
103
- browse errors # View page errors
104
-
105
- # Scroll
106
- browse scroll down
107
- browse scroll "[id=target]"
108
-
109
- # iframes
110
- browse frame "[id=my-iframe]" # Target iframe
111
- browse text # Read inside iframe
112
- browse frame main # Back to main page
113
-
114
- # Network mocking
115
- browse route "**/api/data" fulfill 200 '{"mock":true}'
116
- browse route "**/*.png" block
117
- browse route clear
118
-
119
- # Cookie import from real browsers (macOS)
120
- browse cookie-import chrome --domain .site.com
121
-
122
- # Persistent profiles
123
- browse --profile mysite goto https://app.com
124
-
125
- # Cloud providers (encrypted API keys, never visible to agents)
126
- browse provider save browserbase <api-key>
127
- browse --provider browserbase goto https://example.com
128
- browse provider list
129
- browse provider delete browserbase
130
-
131
- # Native app automation (Android, iOS, macOS)
132
- browse sim start --platform android --app com.android.settings --visible
133
- browse sim start --platform ios --app com.apple.Preferences --visible
134
- browse --platform android --app com.android.settings snapshot -i
135
- browse --platform ios --app com.apple.Preferences snapshot -i
136
- browse --app "System Settings" snapshot -i # macOS
137
- browse --platform android --app com.android.settings tap @e3
138
- browse --platform android --app com.android.settings swipe up
139
- browse --platform android --app com.android.settings press back
140
- browse --platform ios --app com.apple.mobilesafari type "example.com"
141
- browse --app TextEdit press "cmd+n" # macOS modifier combos
142
- browse sim stop --platform android
143
- browse sim stop --platform ios
144
- ```
145
-
146
- ## Command Reference
147
-
148
- ### Navigation
149
- ```
150
- browse goto <url> Navigate current tab
151
- browse back Go back
152
- browse forward Go forward
153
- browse reload Reload page
154
- browse url Print current URL
155
- ```
156
-
157
- ### Content extraction
158
- ```
159
- browse text Cleaned page text (no scripts/styles)
160
- browse html [selector] innerHTML of element, or full page HTML
161
- browse links All links as "text → href"
162
- browse forms All forms + fields as JSON
163
- browse accessibility Accessibility tree snapshot (ARIA)
164
- ```
165
-
166
- ### Snapshot (ref-based element selection)
167
- ```
168
- browse snapshot Full accessibility tree with @refs
169
- browse snapshot -i Interactive elements only — terse flat list (minimal tokens)
170
- browse snapshot -i -f Interactive elements — full indented tree with props
171
- browse snapshot -i -V Interactive elements — viewport only (skip below-fold)
172
- browse snapshot -c Compact (no empty structural elements)
173
- browse snapshot -C Cursor-interactive (detect divs with cursor:pointer/onclick/tabindex)
174
- browse snapshot -d <N> Limit depth to N levels
175
- browse snapshot -s <sel> Scope to CSS selector
176
- browse snapshot-diff Compare current vs previous snapshot
177
- ```
178
-
179
- After snapshot, use @refs as selectors in any command:
180
- ```
181
- browse click @e3 Click the element assigned ref @e3
182
- browse fill @e4 "value" Fill the input assigned ref @e4
183
- browse hover @e1 Hover the element assigned ref @e1
184
- browse html @e2 Get innerHTML of ref @e2
185
- browse css @e5 "color" Get computed CSS of ref @e5
186
- browse attrs @e6 Get attributes of ref @e6
187
- ```
188
-
189
- Refs are invalidated on navigation — run `snapshot` again after `goto`.
190
-
191
- ### Native App Automation
192
- ```
193
- browse sim start --platform ios|android --app <id> [--visible] Start simulator/emulator + app
194
- browse sim stop --platform ios|android Stop simulator/emulator
195
- browse sim status --platform ios|android Check runner status
196
- browse --platform ios --app <bundleId> <command> Target iOS app
197
- browse --platform android --app <package> <command> Target Android app
198
- browse --app <name> <command> Target macOS app
199
- ```
200
-
201
- Supported commands on all app platforms: `snapshot`, `text`, `tap`, `fill`, `type`, `press`, `swipe`, `screenshot`.
202
- macOS also supports modifier combos: `browse --app TextEdit press "cmd+n"`.
203
- Android auto-installs adb, Java, SDK, and emulator on first use (macOS via Homebrew).
204
-
205
- ### Interaction
206
- ```
207
- browse click <selector> Click element (CSS selector or @ref)
208
- browse click <x>,<y> Click at page coordinates (e.g. 590,461)
209
- browse rightclick <selector> Right-click element (context menu)
210
- browse dblclick <selector> Double-click element
211
- browse fill <selector> <value> Fill input field
212
- browse select <selector> <val> Select dropdown value
213
- browse hover <selector> Hover over element
214
- browse focus <selector> Focus element
215
- browse tap <selector> Tap element (requires touch context via emulate)
216
- browse check <selector> Check checkbox
217
- browse uncheck <selector> Uncheck checkbox
218
- browse drag <src> <tgt> Drag source to target
219
- browse type <text> Type into focused element
220
- browse press <key> Press key (Enter, Tab, Escape, etc.)
221
- browse keydown <key> Hold key down
222
- browse keyup <key> Release key
223
- browse keyboard inserttext <t> Insert text without key events
224
- browse scroll [sel|up|down] Scroll element/viewport/bottom
225
- browse scrollinto <sel> Scroll element into view (explicit)
226
- browse scrollintoview <sel> Alias for scrollinto
227
- browse swipe <dir> [px] Swipe up/down/left/right (touch events)
228
- browse mouse move <x> <y> Move mouse to coordinates
229
- browse mouse down [button] Press mouse button (left/right/middle)
230
- browse mouse up [button] Release mouse button
231
- browse mouse wheel <dy> [dx] Scroll wheel
232
- browse wait <sel> Wait for element to appear
233
- browse wait <sel> --state hidden Wait for element to disappear
234
- browse wait <ms> Wait for milliseconds
235
- browse wait --text "..." Wait for text to appear in page
236
- browse wait --fn "expr" Wait for JavaScript condition
237
- browse wait --load <state> Wait for load state
238
- browse wait --url <pattern> Wait for URL match
239
- browse wait --network-idle Wait for network idle
240
- browse wait --download Wait for download, return temp path
241
- browse wait --download ./report.pdf Wait and save to path
242
- browse wait --download 60000 Custom timeout (ms)
243
- browse wait --download ./file.pdf 60000 Both path and timeout
244
- browse set geo <lat> <lng> Set geolocation
245
- browse set media <scheme> Set color scheme (dark/light/no-preference)
246
- browse header <name>:<value> Set request header
247
- browse useragent <string> Set user agent string
248
- browse viewport <WxH> Set viewport size (e.g. 375x812)
249
- browse upload <sel> <files> Upload file(s) to a file input
250
- browse highlight <selector> Highlight element (visual debugging)
251
- browse download <sel> [path] Download file triggered by click
252
- browse dialog-accept [value] Set dialogs to auto-accept
253
- browse dialog-dismiss Set dialogs to auto-dismiss (default)
254
- browse emulate <device> Emulate device (iphone, pixel, etc.)
255
- browse emulate reset Reset to desktop (1920x1080)
256
- browse offline [on|off] Toggle offline mode
257
- ```
258
-
259
- ### Cookies
260
- ```
261
- browse cookie <n>=<v> Set cookie (shorthand)
262
- browse cookie set <n> <v> [--domain d --secure] Set cookie with options
263
- browse cookie clear Clear all cookies
264
- browse cookie export <file> Export cookies to JSON file
265
- browse cookie import <file> Import cookies from JSON file
266
- ```
267
-
268
- ### Network
269
- ```
270
- browse route <pattern> block Block matching requests
271
- browse route <pattern> fulfill <s> [b] Mock with status + body
272
- browse route clear Remove all routes
273
- ```
274
-
275
- ### Inspection
276
- ```
277
- browse js <expression> Run JS, print result
278
- browse eval <js-file> Run JS file against page
279
- browse css <selector> <prop> Get computed CSS property
280
- browse attrs <selector> Get element attributes as JSON
281
- browse element-state <selector> Element state (visible/enabled/checked/focused)
282
- browse value <selector> Get input field value
283
- browse count <selector> Count matching elements
284
- browse box <selector> Get bounding box as JSON {x, y, width, height}
285
- browse dialog Last dialog info or "(no dialog detected)"
286
- browse console [--clear] View/clear console messages
287
- browse errors [--clear] View/clear page errors (filtered from console)
288
- browse network [--clear] View/clear network requests
289
- browse cookies Dump all cookies as JSON
290
- browse storage [set <k> <v>] View/set localStorage
291
- browse perf Page load performance timings
292
- browse devices [filter] List available device names
293
- browse clipboard Read system clipboard text
294
- browse clipboard write <text> Write text to system clipboard
295
- ```
296
-
297
- ### Visual
298
- ```
299
- browse screenshot [path] Viewport screenshot (default: .browse/sessions/{id}/screenshot.png)
300
- browse screenshot --full [path] Full-page screenshot (entire scrollable page)
301
- browse screenshot <sel|@ref> [path] Screenshot specific element
302
- browse screenshot --clip x,y,w,h [path] Screenshot clipped region
303
- browse screenshot --annotate [path] Screenshot with numbered badges + legend
304
- browse pdf [path] Save as PDF
305
- browse responsive [prefix] Screenshots at mobile/tablet/desktop
306
- ```
307
-
308
- ### Frames (iframe targeting)
309
- ```
310
- browse frame <selector> Target an iframe (subsequent commands run inside it)
311
- browse frame main Return to main page
312
- ```
313
-
314
- ### Find (semantic element locators)
315
- ```
316
- browse find role <query> Find elements by ARIA role
317
- browse find text <query> Find elements by text content
318
- browse find label <query> Find elements by label
319
- browse find placeholder <query> Find elements by placeholder
320
- browse find testid <query> Find elements by test ID
321
- browse find alt <query> Find elements by alt text
322
- browse find title <query> Find elements by title attribute
323
- browse find first <sel> First matching element
324
- browse find last <sel> Last matching element
325
- browse find nth <n> <sel> Nth matching element (0-indexed)
326
- ```
327
-
328
- ### Compare
329
- ```
330
- browse diff <url1> <url2> Text diff between two pages
331
- browse screenshot-diff <base> [curr] Pixel-diff two PNG screenshots
332
- ```
333
-
334
- ### Multi-step (chain)
335
- ```
336
- echo '[["goto","https://example.com"],["snapshot","-i"],["click","@e1"]]' | browse chain
337
- ```
338
-
339
- ### Tabs
340
- ```
341
- browse tabs List tabs (id, url, title)
342
- browse tab <id> Switch to tab
343
- browse newtab [url] Open new tab
344
- browse closetab [id] Close tab
345
- ```
346
-
347
- ### Sessions (parallel agents)
348
- ```
349
- browse --session <id> <cmd> Run command in named session
350
- browse sessions List active sessions
351
- browse session-close <id> Close a session
352
- ```
353
-
354
- ### Profiles
355
- ```
356
- browse --profile <name> <cmd> Use persistent browser profile
357
- browse profile list List profiles with disk size
358
- browse profile delete <name> Delete a profile
359
- browse profile clean [--older-than <d>] Remove old profiles (default: 7 days)
360
- ```
361
-
362
- ### State persistence
363
- ```
364
- browse state save [name] Save cookies + localStorage (all origins)
365
- browse state load [name] Restore saved state
366
- browse state list List saved states
367
- browse state show [name] Show contents of saved state
368
- browse state clean Delete states older than 7 days
369
- browse state clean --older-than N Custom age threshold (days)
370
- ```
371
-
372
- ### Cookie import (macOS — borrow auth from real browsers)
373
- ```
374
- browse cookie-import --list List installed browsers
375
- browse cookie-import <browser> --domain <d> Import cookies for a domain
376
- browse cookie-import <browser> --profile <p> --domain <d> Specific Chrome profile
377
- ```
378
-
379
- ### Auth vault
380
- ```
381
- browse auth save <name> <url> <user> <pass|--password-stdin> Save credentials (encrypted)
382
- browse auth login <name> Auto-login using saved credentials
383
- browse auth list List saved credentials
384
- browse auth delete <name> Delete credentials
385
- ```
386
-
387
- ### HAR recording
388
- ```
389
- browse har start Start recording network traffic
390
- browse har stop [path] Stop and save HAR file
391
- ```
392
-
393
- ### Video recording
394
- ```
395
- browse video start [dir] Start recording video (WebM, compositor-level)
396
- browse video stop Stop recording and save video files
397
- browse video status Check if recording is active
398
- ```
399
-
400
- ### Command recording & export
401
- ```
402
- browse record start Start recording commands
403
- browse record stop Stop recording, keep steps for export
404
- browse record status Recording state and step count
405
- browse record export browse [path] Export as chain-compatible JSON (replay with browse chain)
406
- browse record export replay [path] Export as Chrome DevTools Recorder (Playwright/Puppeteer)
407
- browse record export replay --selectors css,aria [path] Filter selector types in export
408
- ```
409
-
410
- ### React DevTools
411
- ```
412
- browse react-devtools enable Enable React DevTools (downloads hook, injects, reloads)
413
- browse react-devtools disable Disable React DevTools
414
- browse react-devtools tree Component tree with indentation
415
- browse react-devtools props <sel> Props/state/hooks of component at element
416
- browse react-devtools suspense Suspense boundaries + status
417
- browse react-devtools errors Error boundaries + caught errors
418
- browse react-devtools profiler Render timing per component
419
- browse react-devtools hydration Hydration timing (Next.js)
420
- browse react-devtools renders What re-rendered since last commit
421
- browse react-devtools owners <sel> Parent component chain
422
- browse react-devtools context <sel> Context values consumed by component
423
- ```
424
-
425
- ### Performance audit
426
- ```
427
- browse perf-audit [url] Full performance audit (Web Vitals, resources, images, fonts, DOM, render-blocking, third-party, stack detection, correlations, recommendations)
428
- browse perf-audit [url] --no-coverage Skip JS/CSS coverage collection (faster)
429
- browse perf-audit [url] --no-detect Skip framework/SaaS/infrastructure detection
430
- browse perf-audit [url] --json Output as structured JSON (for programmatic use)
431
- browse perf-audit save [name] Save audit report to .browse/audits/ (auto-names from URL + date if omitted)
432
- browse perf-audit compare <base> [curr] Compare saved baseline vs current page or another saved audit (regression detection)
433
- browse perf-audit list List saved audit reports (name, size, date)
434
- browse perf-audit delete <name> Delete a saved audit report
435
- browse detect Detect tech stack: frameworks, SaaS platforms, CDN, protocol, compression, caching, DOM complexity, third-party inventory
436
- browse coverage start Start JS/CSS code coverage collection
437
- browse coverage stop Stop collection and report per-file used/unused bytes
438
- browse initscript set <code> Inject JS that runs before every page load (pre-navigation observers, mocks, polyfills)
439
- browse initscript show Show current init script
440
- browse initscript clear Remove init script
441
- ```
442
-
443
- ### Cloud Providers
444
- ```
445
- browse provider save <name> <key> Save provider API key (encrypted)
446
- browse provider list List saved providers
447
- browse provider delete <name> Delete provider key
448
- ```
449
-
450
- ### Handoff (human takeover)
451
- ```
452
- browse handoff [reason] Swap to Chrome for user to solve CAPTCHA/MFA (bypasses bot detection)
453
- browse handoff --chromium Force Playwright Chromium instead of Chrome
454
- browse resume Swap back to headless, returns fresh snapshot
455
- ```
456
-
457
- ### Server management
458
- ```
459
- browse status Server health, uptime, session count
460
- browse instances List all running browse servers (instance, PID, port, status)
461
- browse version Print CLI version
462
- browse doctor System check (Node, Playwright, Chromium)
463
- browse upgrade Self-update via npm
464
- browse stop Shutdown server
465
- browse restart Kill + restart server
466
- browse inspect Open DevTools (requires BROWSE_DEBUG_PORT)
467
- ```
468
-
469
- ## CLI Flags
470
-
471
- | Flag | Description |
472
- |------|-------------|
473
- | `--session <id>` | Named session (isolates tabs, refs, cookies — auto-persists on close) |
474
- | `--profile <name>` | Persistent browser profile (own Chromium, full state) |
475
- | `--state <path>` | Load state file (cookies/storage) before first command |
476
- | `--json` | Wrap output as `{success, data, command}` |
477
- | `--content-boundaries` | Wrap page content in nonce-delimited markers (prompt injection defense) |
478
- | `--allowed-domains <d,d>` | Block navigation/resources outside allowlist |
479
- | `--max-output <n>` | Truncate output to N characters |
480
- | `--headed` | Run browser in headed (visible) mode |
481
- | `--chrome` | Shortcut for `--runtime chrome --headed` (uses real Chrome, bypasses bot detection) |
482
- | `--cdp <port>` | Connect to Chrome on a specific debugging port |
483
- | `--connect` | Auto-discover and connect to a running Chrome instance |
484
- | `--provider <name>` | Cloud browser provider (browserless, browserbase) |
485
- | `--runtime <name>` | Browser engine: playwright (default), rebrowser (stealth), lightpanda, chrome |
486
- | `--mcp` | Run as MCP server (for Cursor, Windsurf, Cline) |
487
-
488
- ## Reference Files
489
-
490
- For extended examples, operational guides, or first-time setup:
491
-
492
- | File | Read when... |
493
- |------|-------------|
494
- | [references/permissions.md](references/permissions.md) | First-time setup — user wants to pre-allow browse commands in `.claude/settings.json` |
495
- | [references/guides.md](references/guides.md) | You hit a CAPTCHA/MFA blocker (handoff protocol), want optimization tips (speed rules), or need help choosing which command to use (decision table) |
496
- | [references/commands.md](references/commands.md) | You want extended usage examples beyond the Quick Reference above |