claude-chrome-parallel 3.0.3 → 3.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 (315) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +398 -464
  3. package/assets/demo.svg +278 -173
  4. package/dist/cdp/client.d.ts +60 -2
  5. package/dist/cdp/client.d.ts.map +1 -1
  6. package/dist/cdp/client.js +344 -5
  7. package/dist/cdp/client.js.map +1 -1
  8. package/dist/cdp/connection-pool.d.ts.map +1 -1
  9. package/dist/cdp/connection-pool.js +20 -4
  10. package/dist/cdp/connection-pool.js.map +1 -1
  11. package/dist/chrome/launcher.d.ts +11 -0
  12. package/dist/chrome/launcher.d.ts.map +1 -1
  13. package/dist/chrome/launcher.js +124 -10
  14. package/dist/chrome/launcher.js.map +1 -1
  15. package/dist/chrome/pool.d.ts +54 -0
  16. package/dist/chrome/pool.d.ts.map +1 -0
  17. package/dist/chrome/pool.js +301 -0
  18. package/dist/chrome/pool.js.map +1 -0
  19. package/dist/chrome/profile-detector.d.ts +52 -0
  20. package/dist/chrome/profile-detector.d.ts.map +1 -0
  21. package/dist/chrome/profile-detector.js +246 -0
  22. package/dist/chrome/profile-detector.js.map +1 -0
  23. package/dist/cli/claude-session.js +15 -15
  24. package/dist/cli/index.js +162 -37
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/update-check.d.ts +9 -0
  27. package/dist/cli/update-check.js +141 -0
  28. package/dist/cli/update-check.js.map +1 -0
  29. package/dist/config/global.d.ts +31 -0
  30. package/dist/config/global.d.ts.map +1 -1
  31. package/dist/config/global.js.map +1 -1
  32. package/dist/dashboard/activity-tracker.d.ts +60 -0
  33. package/dist/dashboard/activity-tracker.d.ts.map +1 -0
  34. package/dist/dashboard/activity-tracker.js +178 -0
  35. package/dist/dashboard/activity-tracker.js.map +1 -0
  36. package/dist/dashboard/ansi.d.ts +117 -0
  37. package/dist/dashboard/ansi.d.ts.map +1 -0
  38. package/dist/dashboard/ansi.js +199 -0
  39. package/dist/dashboard/ansi.js.map +1 -0
  40. package/dist/dashboard/index.d.ts +110 -0
  41. package/dist/dashboard/index.d.ts.map +1 -0
  42. package/dist/dashboard/index.js +412 -0
  43. package/dist/dashboard/index.js.map +1 -0
  44. package/dist/dashboard/keyboard-handler.d.ts +43 -0
  45. package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
  46. package/dist/dashboard/keyboard-handler.js +215 -0
  47. package/dist/dashboard/keyboard-handler.js.map +1 -0
  48. package/dist/dashboard/operation-controller.d.ts +76 -0
  49. package/dist/dashboard/operation-controller.d.ts.map +1 -0
  50. package/dist/dashboard/operation-controller.js +167 -0
  51. package/dist/dashboard/operation-controller.js.map +1 -0
  52. package/dist/dashboard/renderer.d.ts +76 -0
  53. package/dist/dashboard/renderer.d.ts.map +1 -0
  54. package/dist/dashboard/renderer.js +193 -0
  55. package/dist/dashboard/renderer.js.map +1 -0
  56. package/dist/dashboard/types.d.ts +56 -0
  57. package/dist/dashboard/types.d.ts.map +1 -0
  58. package/dist/dashboard/types.js +12 -0
  59. package/dist/dashboard/types.js.map +1 -0
  60. package/dist/dashboard/views/main-view.d.ts +23 -0
  61. package/dist/dashboard/views/main-view.d.ts.map +1 -0
  62. package/dist/dashboard/views/main-view.js +143 -0
  63. package/dist/dashboard/views/main-view.js.map +1 -0
  64. package/dist/dashboard/views/sessions-view.d.ts +22 -0
  65. package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
  66. package/dist/dashboard/views/sessions-view.js +104 -0
  67. package/dist/dashboard/views/sessions-view.js.map +1 -0
  68. package/dist/dashboard/views/tabs-view.d.ts +21 -0
  69. package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
  70. package/dist/dashboard/views/tabs-view.js +92 -0
  71. package/dist/dashboard/views/tabs-view.js.map +1 -0
  72. package/dist/hints/hint-engine.d.ts +65 -0
  73. package/dist/hints/hint-engine.d.ts.map +1 -0
  74. package/dist/hints/hint-engine.js +156 -0
  75. package/dist/hints/hint-engine.js.map +1 -0
  76. package/dist/hints/index.d.ts +8 -0
  77. package/dist/hints/index.d.ts.map +1 -0
  78. package/dist/hints/index.js +11 -0
  79. package/dist/hints/index.js.map +1 -0
  80. package/dist/hints/pattern-learner.d.ts +76 -0
  81. package/dist/hints/pattern-learner.d.ts.map +1 -0
  82. package/dist/hints/pattern-learner.js +254 -0
  83. package/dist/hints/pattern-learner.js.map +1 -0
  84. package/dist/hints/rules/composite-suggestions.d.ts +6 -0
  85. package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
  86. package/dist/hints/rules/composite-suggestions.js +66 -0
  87. package/dist/hints/rules/composite-suggestions.js.map +1 -0
  88. package/dist/hints/rules/error-recovery.d.ts +7 -0
  89. package/dist/hints/rules/error-recovery.d.ts.map +1 -0
  90. package/dist/hints/rules/error-recovery.js +47 -0
  91. package/dist/hints/rules/error-recovery.js.map +1 -0
  92. package/dist/hints/rules/learned-rules.d.ts +13 -0
  93. package/dist/hints/rules/learned-rules.d.ts.map +1 -0
  94. package/dist/hints/rules/learned-rules.js +27 -0
  95. package/dist/hints/rules/learned-rules.js.map +1 -0
  96. package/dist/hints/rules/repetition-detection.d.ts +7 -0
  97. package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
  98. package/dist/hints/rules/repetition-detection.js +82 -0
  99. package/dist/hints/rules/repetition-detection.js.map +1 -0
  100. package/dist/hints/rules/sequence-detection.d.ts +6 -0
  101. package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
  102. package/dist/hints/rules/sequence-detection.js +61 -0
  103. package/dist/hints/rules/sequence-detection.js.map +1 -0
  104. package/dist/hints/rules/success-hints.d.ts +6 -0
  105. package/dist/hints/rules/success-hints.d.ts.map +1 -0
  106. package/dist/hints/rules/success-hints.js +62 -0
  107. package/dist/hints/rules/success-hints.js.map +1 -0
  108. package/dist/index.js +190 -55
  109. package/dist/index.js.map +1 -1
  110. package/dist/lightpanda/launcher.d.ts +58 -0
  111. package/dist/lightpanda/launcher.d.ts.map +1 -0
  112. package/dist/lightpanda/launcher.js +199 -0
  113. package/dist/lightpanda/launcher.js.map +1 -0
  114. package/dist/mcp-server.d.ts +38 -1
  115. package/dist/mcp-server.d.ts.map +1 -1
  116. package/dist/mcp-server.js +220 -6
  117. package/dist/mcp-server.js.map +1 -1
  118. package/dist/orchestration/state-manager.js +46 -46
  119. package/dist/orchestration/workflow-engine.d.ts +1 -0
  120. package/dist/orchestration/workflow-engine.d.ts.map +1 -1
  121. package/dist/orchestration/workflow-engine.js +112 -114
  122. package/dist/orchestration/workflow-engine.js.map +1 -1
  123. package/dist/resources/usage-guide.d.ts +13 -0
  124. package/dist/resources/usage-guide.d.ts.map +1 -0
  125. package/dist/resources/usage-guide.js +101 -0
  126. package/dist/resources/usage-guide.js.map +1 -0
  127. package/dist/router/browser-router.d.ts +51 -0
  128. package/dist/router/browser-router.d.ts.map +1 -0
  129. package/dist/router/browser-router.js +178 -0
  130. package/dist/router/browser-router.js.map +1 -0
  131. package/dist/router/cookie-sync.d.ts +48 -0
  132. package/dist/router/cookie-sync.d.ts.map +1 -0
  133. package/dist/router/cookie-sync.js +106 -0
  134. package/dist/router/cookie-sync.js.map +1 -0
  135. package/dist/router/index.d.ts +5 -0
  136. package/dist/router/index.d.ts.map +1 -0
  137. package/dist/router/index.js +10 -0
  138. package/dist/router/index.js.map +1 -0
  139. package/dist/router/tool-routing-registry.d.ts +21 -0
  140. package/dist/router/tool-routing-registry.d.ts.map +1 -0
  141. package/dist/router/tool-routing-registry.js +90 -0
  142. package/dist/router/tool-routing-registry.js.map +1 -0
  143. package/dist/session-manager.d.ts +41 -1
  144. package/dist/session-manager.d.ts.map +1 -1
  145. package/dist/session-manager.js +216 -21
  146. package/dist/session-manager.js.map +1 -1
  147. package/dist/tools/click-element.d.ts +8 -0
  148. package/dist/tools/click-element.d.ts.map +1 -0
  149. package/dist/tools/click-element.js +383 -0
  150. package/dist/tools/click-element.js.map +1 -0
  151. package/dist/tools/computer.d.ts.map +1 -1
  152. package/dist/tools/computer.js +198 -34
  153. package/dist/tools/computer.js.map +1 -1
  154. package/dist/tools/console-capture.d.ts +6 -0
  155. package/dist/tools/console-capture.d.ts.map +1 -0
  156. package/dist/tools/console-capture.js +320 -0
  157. package/dist/tools/console-capture.js.map +1 -0
  158. package/dist/tools/cookies.d.ts +6 -0
  159. package/dist/tools/cookies.d.ts.map +1 -0
  160. package/dist/tools/cookies.js +263 -0
  161. package/dist/tools/cookies.js.map +1 -0
  162. package/dist/tools/drag-drop.d.ts +6 -0
  163. package/dist/tools/drag-drop.d.ts.map +1 -0
  164. package/dist/tools/drag-drop.js +252 -0
  165. package/dist/tools/drag-drop.js.map +1 -0
  166. package/dist/tools/emulate-device.d.ts +6 -0
  167. package/dist/tools/emulate-device.d.ts.map +1 -0
  168. package/dist/tools/emulate-device.js +221 -0
  169. package/dist/tools/emulate-device.js.map +1 -0
  170. package/dist/tools/file-upload.d.ts +6 -0
  171. package/dist/tools/file-upload.d.ts.map +1 -0
  172. package/dist/tools/file-upload.js +208 -0
  173. package/dist/tools/file-upload.js.map +1 -0
  174. package/dist/tools/fill-form.d.ts +8 -0
  175. package/dist/tools/fill-form.d.ts.map +1 -0
  176. package/dist/tools/fill-form.js +342 -0
  177. package/dist/tools/fill-form.js.map +1 -0
  178. package/dist/tools/find.d.ts.map +1 -1
  179. package/dist/tools/find.js +153 -65
  180. package/dist/tools/find.js.map +1 -1
  181. package/dist/tools/form-input.js +52 -52
  182. package/dist/tools/form-input.js.map +1 -1
  183. package/dist/tools/geolocation.d.ts +6 -0
  184. package/dist/tools/geolocation.d.ts.map +1 -0
  185. package/dist/tools/geolocation.js +172 -0
  186. package/dist/tools/geolocation.js.map +1 -0
  187. package/dist/tools/http-auth.d.ts +6 -0
  188. package/dist/tools/http-auth.d.ts.map +1 -0
  189. package/dist/tools/http-auth.js +136 -0
  190. package/dist/tools/http-auth.js.map +1 -0
  191. package/dist/tools/index.d.ts.map +1 -1
  192. package/dist/tools/index.js +50 -0
  193. package/dist/tools/index.js.map +1 -1
  194. package/dist/tools/javascript.js +1 -1
  195. package/dist/tools/javascript.js.map +1 -1
  196. package/dist/tools/navigate.d.ts.map +1 -1
  197. package/dist/tools/navigate.js +5 -2
  198. package/dist/tools/navigate.js.map +1 -1
  199. package/dist/tools/network.js +4 -4
  200. package/dist/tools/network.js.map +1 -1
  201. package/dist/tools/orchestration.d.ts.map +1 -1
  202. package/dist/tools/orchestration.js +13 -8
  203. package/dist/tools/orchestration.js.map +1 -1
  204. package/dist/tools/page-content.d.ts +6 -0
  205. package/dist/tools/page-content.d.ts.map +1 -0
  206. package/dist/tools/page-content.js +120 -0
  207. package/dist/tools/page-content.js.map +1 -0
  208. package/dist/tools/page-pdf.d.ts +6 -0
  209. package/dist/tools/page-pdf.d.ts.map +1 -0
  210. package/dist/tools/page-pdf.js +245 -0
  211. package/dist/tools/page-pdf.js.map +1 -0
  212. package/dist/tools/page-reload.d.ts +6 -0
  213. package/dist/tools/page-reload.d.ts.map +1 -0
  214. package/dist/tools/page-reload.js +89 -0
  215. package/dist/tools/page-reload.js.map +1 -0
  216. package/dist/tools/performance-metrics.d.ts +6 -0
  217. package/dist/tools/performance-metrics.d.ts.map +1 -0
  218. package/dist/tools/performance-metrics.js +158 -0
  219. package/dist/tools/performance-metrics.js.map +1 -0
  220. package/dist/tools/read-page.d.ts.map +1 -1
  221. package/dist/tools/read-page.js +4 -2
  222. package/dist/tools/read-page.js.map +1 -1
  223. package/dist/tools/request-intercept.d.ts +6 -0
  224. package/dist/tools/request-intercept.d.ts.map +1 -0
  225. package/dist/tools/request-intercept.js +439 -0
  226. package/dist/tools/request-intercept.js.map +1 -0
  227. package/dist/tools/selector-query.d.ts +6 -0
  228. package/dist/tools/selector-query.d.ts.map +1 -0
  229. package/dist/tools/selector-query.js +206 -0
  230. package/dist/tools/selector-query.js.map +1 -0
  231. package/dist/tools/storage.d.ts +6 -0
  232. package/dist/tools/storage.d.ts.map +1 -0
  233. package/dist/tools/storage.js +264 -0
  234. package/dist/tools/storage.js.map +1 -0
  235. package/dist/tools/tabs-close.d.ts +6 -0
  236. package/dist/tools/tabs-close.d.ts.map +1 -0
  237. package/dist/tools/tabs-close.js +124 -0
  238. package/dist/tools/tabs-close.js.map +1 -0
  239. package/dist/tools/tabs-context.js +1 -1
  240. package/dist/tools/tabs-context.js.map +1 -1
  241. package/dist/tools/user-agent.d.ts +6 -0
  242. package/dist/tools/user-agent.d.ts.map +1 -0
  243. package/dist/tools/user-agent.js +128 -0
  244. package/dist/tools/user-agent.js.map +1 -0
  245. package/dist/tools/wait-and-click.d.ts +8 -0
  246. package/dist/tools/wait-and-click.d.ts.map +1 -0
  247. package/dist/tools/wait-and-click.js +290 -0
  248. package/dist/tools/wait-and-click.js.map +1 -0
  249. package/dist/tools/wait-for.d.ts +6 -0
  250. package/dist/tools/wait-for.d.ts.map +1 -0
  251. package/dist/tools/wait-for.js +248 -0
  252. package/dist/tools/wait-for.js.map +1 -0
  253. package/dist/tools/xpath-query.d.ts +6 -0
  254. package/dist/tools/xpath-query.d.ts.map +1 -0
  255. package/dist/tools/xpath-query.js +230 -0
  256. package/dist/tools/xpath-query.js.map +1 -0
  257. package/dist/types/browser-backend.d.ts +30 -0
  258. package/dist/types/browser-backend.d.ts.map +1 -0
  259. package/dist/types/browser-backend.js +9 -0
  260. package/dist/types/browser-backend.js.map +1 -0
  261. package/dist/types/profile.d.ts +76 -0
  262. package/dist/types/profile.d.ts.map +1 -0
  263. package/dist/types/profile.js +35 -0
  264. package/dist/types/profile.js.map +1 -0
  265. package/dist/types/session.d.ts +7 -3
  266. package/dist/types/session.d.ts.map +1 -1
  267. package/package.json +78 -75
  268. package/dist/master/index.d.ts +0 -18
  269. package/dist/master/index.d.ts.map +0 -1
  270. package/dist/master/index.js +0 -75
  271. package/dist/master/index.js.map +0 -1
  272. package/dist/master/ipc-server.d.ts +0 -21
  273. package/dist/master/ipc-server.d.ts.map +0 -1
  274. package/dist/master/ipc-server.js +0 -175
  275. package/dist/master/ipc-server.js.map +0 -1
  276. package/dist/master/request-handler.d.ts +0 -17
  277. package/dist/master/request-handler.d.ts.map +0 -1
  278. package/dist/master/request-handler.js +0 -134
  279. package/dist/master/request-handler.js.map +0 -1
  280. package/dist/master/session-registry.d.ts +0 -120
  281. package/dist/master/session-registry.d.ts.map +0 -1
  282. package/dist/master/session-registry.js +0 -247
  283. package/dist/master/session-registry.js.map +0 -1
  284. package/dist/shared/ipc-constants.d.ts +0 -16
  285. package/dist/shared/ipc-constants.d.ts.map +0 -1
  286. package/dist/shared/ipc-constants.js +0 -66
  287. package/dist/shared/ipc-constants.js.map +0 -1
  288. package/dist/shared/ipc-protocol.d.ts +0 -33
  289. package/dist/shared/ipc-protocol.d.ts.map +0 -1
  290. package/dist/shared/ipc-protocol.js +0 -20
  291. package/dist/shared/ipc-protocol.js.map +0 -1
  292. package/dist/worker/auto-master.d.ts +0 -24
  293. package/dist/worker/auto-master.d.ts.map +0 -1
  294. package/dist/worker/auto-master.js +0 -135
  295. package/dist/worker/auto-master.js.map +0 -1
  296. package/dist/worker/index.d.ts +0 -25
  297. package/dist/worker/index.d.ts.map +0 -1
  298. package/dist/worker/index.js +0 -93
  299. package/dist/worker/index.js.map +0 -1
  300. package/dist/worker/ipc-client.d.ts +0 -26
  301. package/dist/worker/ipc-client.d.ts.map +0 -1
  302. package/dist/worker/ipc-client.js +0 -211
  303. package/dist/worker/ipc-client.js.map +0 -1
  304. package/dist/worker/remote-session-manager.d.ts +0 -114
  305. package/dist/worker/remote-session-manager.d.ts.map +0 -1
  306. package/dist/worker/remote-session-manager.js +0 -151
  307. package/dist/worker/remote-session-manager.js.map +0 -1
  308. package/dist/worker/tools.d.ts +0 -7
  309. package/dist/worker/tools.d.ts.map +0 -1
  310. package/dist/worker/tools.js +0 -340
  311. package/dist/worker/tools.js.map +0 -1
  312. package/dist/worker/worker-mcp-server.d.ts +0 -70
  313. package/dist/worker/worker-mcp-server.d.ts.map +0 -1
  314. package/dist/worker/worker-mcp-server.js +0 -295
  315. package/dist/worker/worker-mcp-server.js.map +0 -1
package/README.md CHANGED
@@ -1,464 +1,398 @@
1
- # Claude Chrome Parallel
2
-
3
- > **Run 20+ Claude Code browser sessions simultaneously, without conflicts.**
4
-
5
- [![npm version](https://badge.fury.io/js/claude-chrome-parallel.svg)](https://www.npmjs.com/package/claude-chrome-parallel)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
-
8
- <p align="center">
9
- <img src="https://raw.githubusercontent.com/shaun0927/claude-chrome-parallel/main/assets/demo.svg" alt="Chrome Extension vs Claude Chrome Parallel - Animated comparison showing how Chrome Extension fails with 'Detached' error while Claude Chrome Parallel runs 5+ sessions simultaneously" width="100%">
10
- </p>
11
-
12
- ---
13
-
14
- ```
15
- ┌─────────────────────────────────────────────────────────────────────────────┐
16
- │ │
17
- │ Claude Code 1 ─► Worker A ─► [Tab1] [Tab2] ─┐ │
18
- │ (Google account) │ │
19
- │ │ │
20
- │ Claude Code 2 ─► Worker B ─► [Tab3] [Tab4] ─┼─► Chrome (single instance) │
21
- (Naver account) │ Port 9222 │
22
- │ │ │
23
- │ Claude Code 3 ─► Worker C ─► [Tab5] [Tab6] ─┘ │
24
- │ (Amazon account) │
25
- │ │
26
- │ ✓ Each Worker has isolated cookies/session/storage │
27
- │ ✓ No more "Detached" errors with concurrent sessions │
28
- │ ✓ Multiple account logins on same site simultaneously │
29
- │ │
30
- └─────────────────────────────────────────────────────────────────────────────┘
31
- ```
32
-
33
- ---
34
-
35
- ## Core Features
36
-
37
- <table>
38
- <tr>
39
- <td width="33%" valign="top">
40
-
41
- ### 🔀 Worker Isolation
42
-
43
- Each Worker has a **completely isolated browser context**.
44
-
45
- - Separate cookies/sessions
46
- - Separate localStorage
47
- - Separate login states
48
-
49
- **Log into multiple accounts on the same site simultaneously!**
50
-
51
- </td>
52
- <td width="33%" valign="top">
53
-
54
- ### ⚡ Parallel Execution
55
-
56
- Run tasks across multiple tabs/Workers **at the same time**.
57
-
58
- ```
59
- Sequential: 1500ms
60
- Tab1 ████░░░░ 500ms
61
- Tab2 ████░░░░ 500ms
62
- Tab3 ████░░░░ 500ms
63
-
64
- Parallel: 500ms
65
- Tab1 ████░░░░
66
- Tab2 ████░░░░
67
- Tab3 ████░░░░
68
- ```
69
-
70
- </td>
71
- <td width="33%" valign="top">
72
-
73
- ### 🔄 Workflow Orchestration
74
-
75
- **Automatically distribute** complex multi-site tasks.
76
-
77
- ```
78
- workflow_init({
79
- workers: [
80
- {name: "amazon", ...},
81
- {name: "ebay", ...},
82
- {name: "walmart", ...}
83
- ]
84
- })
85
- 3 sites run in parallel
86
- → Results auto-collected
87
- ```
88
-
89
- </td>
90
- </tr>
91
- </table>
92
-
93
- ---
94
-
95
- ## Comparison
96
-
97
- | | Chrome Extension | Claude Chrome Parallel |
98
- |---|:---:|:---:|
99
- | **Concurrent Sessions** | ❌ 1 (Detached error) | ✅ **20+** |
100
- | **Worker Isolation** | ❌ | ✅ Isolated cookies/sessions |
101
- | **Multi-account Login** | ❌ | ✅ |
102
- | **Parallel Execution** | ❌ | ✅ |
103
- | **Network Simulation** | ❌ | ✅ 3G/4G/offline |
104
- | **Workflow Orchestration** | ❌ | ✅ |
105
- | **Auto Chrome Launch** | ❌ | ✅ |
106
-
107
- ---
108
-
109
- ## Why It Matters
110
-
111
- ### The Problem
112
-
113
- The official Chrome extension has a fatal flaw: **shared internal state**.
114
-
115
- ```
116
- Claude Code 1 ─┐
117
- ├─► Chrome Extension (shared state) ─► "Detached" error!
118
- Claude Code 2 ─┘
119
- ```
120
-
121
- When Session A takes a screenshot, Session B's connection breaks. You can only run **one session at a time**.
122
-
123
- ### The Solution
124
-
125
- Claude Chrome Parallel creates **independent CDP connections** per session:
126
-
127
- ```
128
- Claude Code 1 ─► CDP Connection 1 ─┐
129
- ├─► Chrome (port 9222)
130
- Claude Code 2 ─► CDP Connection 2 ─┘
131
-
132
- No shared state = No conflicts = 20+ concurrent sessions
133
- ```
134
-
135
- ### The Real Power: Authenticated Sessions
136
-
137
- Unlike headless automation, this runs in **your actual browser** with all your logins active:
138
-
139
- - Access Gmail, Salesforce, LinkedIn while logged in
140
- - No credential management or auth flows needed
141
- - ✅ Bypass bot detection (real browser profile)
142
- - ✅ Multiple accounts simultaneously (Worker isolation)
143
-
144
- **This isn't just for developers.** Any web task requiring authentication—previously impossible to automate—is now possible with natural language.
145
-
146
- ---
147
-
148
- ## Quick Start (2 minutes)
149
-
150
- ### 1. Install
151
-
152
- ```bash
153
- npm install -g claude-chrome-parallel
154
- ```
155
-
156
- ### 2. Configure Claude Code
157
-
158
- Add to `~/.claude.json`:
159
-
160
- ```json
161
- {
162
- "mcpServers": {
163
- "chrome-parallel": {
164
- "command": "ccp",
165
- "args": ["serve"]
166
- }
167
- }
168
- }
169
- ```
170
-
171
- ### 3. Restart Claude Code and use
172
-
173
- ```
174
- You: Take a screenshot of https://github.com
175
-
176
- Claude: [Auto-launches browser, captures screenshot]
177
- ```
178
-
179
- > **Tip:** `ccp` is a shorthand for `claude-chrome-parallel`.
180
-
181
- ---
182
-
183
- ## Usage Examples
184
-
185
- ### Multiple Accounts Simultaneously
186
-
187
- ```
188
- You: Create "google-personal" and "google-work" Workers,
189
- then check the inbox of each Gmail account
190
-
191
- Claude: [Creates 2 Workers → Each accesses Gmail with isolated sessions]
192
- google-personal: Personal account - 3 new emails
193
- google-work: Work account - 7 new emails
194
- ```
195
-
196
- ### Price Comparison (Parallel)
197
-
198
- ```
199
- You: Search for "iPhone 15" lowest price on Amazon, eBay, and Walmart simultaneously
200
-
201
- Claude: [3 sites run in parallel]
202
- Amazon: $999 (1.2s)
203
- eBay: $945 (1.1s)
204
- Walmart: $979 (1.3s)
205
- Total time: 1.3s (vs 3.6s sequential)
206
- ```
207
-
208
- ### Parallel QA Testing
209
-
210
- ```bash
211
- # Terminal 1
212
- claude -p "Test myapp.com/login"
213
-
214
- # Terminal 2 (at the same time!)
215
- claude -p "Test myapp.com/checkout"
216
-
217
- # Terminal 3 (at the same time!)
218
- claude -p "Monitor myapp.com/admin"
219
- ```
220
-
221
- ---
222
-
223
- ## Chrome-Sisyphus: Orchestration Skill
224
-
225
- For complex multi-site workflows, use the built-in **Chrome-Sisyphus** skill system.
226
-
227
- ```
228
- ┌─────────────────────────────────────────────────────────────────┐
229
- │ /chrome-sisyphus "Compare iPhone prices on Amazon, eBay, Walmart"
230
- │ ↓
231
- │ ┌──────────────────────────────────────────────────────────┐
232
- │ │ ORCHESTRATOR (Main Session) │
233
- │ │ • Decompose task 3 workers │
234
- │ │ • Allocate sites Amazon, eBay, Walmart │
235
- │ │ • Context usage: ~500 tokens (lightweight!) │
236
- │ └──────────────────────────────────────────────────────────┘
237
- │ ↓
238
- │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
239
- │ │ Worker 1 │ │ Worker 2 │ │ Worker 3 │
240
- │ │ (Amazon) │ │ (eBay) │ │ (Walmart) │
241
- │ │ Background │ │ Background │ │ Background │
242
- │ │ Task │ │ Task │ │ Task │
243
- │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
244
- │ ↓ ↓ ↓
245
- │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
246
- │ │ Scratchpad │ │ Scratchpad │ │ Scratchpad │
247
- worker-1.md │ │ worker-2.md │ │ worker-3.md │
248
- └─────────────┘ └─────────────┘ └─────────────┘
249
- │ ↓
250
- │ Results collected Unified report to user
251
- └─────────────────────────────────────────────────────────────────┘
252
- ```
253
-
254
- ### Why This Matters: Context Isolation
255
-
256
- **Without isolation** (traditional approach):
257
- ```
258
- Main Session Context:
259
- ├── Worker 1 screenshot (500KB) ─┐
260
- ├── Worker 1 DOM tree (large) │
261
- ├── Worker 2 screenshot (500KB) ├─► Context explosion!
262
- ├── Worker 2 DOM tree (large) │
263
- └── Worker 3 ... (keeps growing) ─┘
264
- ```
265
-
266
- **With Chrome-Sisyphus**:
267
- ```
268
- Main Session: ~500 tokens (stays light)
269
- ├── Task plan
270
- ├── Worker IDs
271
- └── Status summary only
272
-
273
- Background Tasks: (isolated, don't pollute main)
274
- ├── Worker 1: own context, own screenshots
275
- ├── Worker 2: own context, own screenshots
276
- └── Worker 3: own context, own screenshots
277
-
278
- Scratchpad Files: (persistent state)
279
- └── .agent/chrome-sisyphus/*.md
280
- ```
281
-
282
- ### Usage
283
-
284
- Copy the `.claude/` folder to your project:
285
-
286
- ```bash
287
- cp -r node_modules/claude-chrome-parallel/.claude ~/.claude/
288
- # Or copy to your project root
289
- ```
290
-
291
- Then use in Claude Code:
292
-
293
- ```
294
- /chrome-sisyphus Compare laptop prices on Amazon, BestBuy, and Newegg
295
- ```
296
-
297
- ### Skill Files
298
-
299
- ```
300
- .claude/
301
- ├── commands/
302
- │ └── chrome-sisyphus.md # /chrome-sisyphus command
303
- └── skills/
304
- └── chrome-sisyphus/
305
- ├── SKILL.md # Skill overview
306
- ├── AGENTS.md # Agent specifications
307
- └── agents/
308
- ├── decomposer.md # Task decomposition
309
- ├── worker-agent.md # Worker execution (Ralph Loop)
310
- └── coordinator.md # Result integration
311
- ```
312
-
313
- ---
314
-
315
- ## MCP Tools
316
-
317
- ### Browser Automation
318
-
319
- | Tool | Description |
320
- |------|-------------|
321
- | `navigate` | Go to URL, back/forward |
322
- | `computer` | Screenshot, click, keyboard, scroll |
323
- | `read_page` | Parse page structure (accessibility tree) |
324
- | `find` | Find elements by natural language |
325
- | `form_input` | Set form values directly |
326
- | `javascript_tool` | Execute JavaScript |
327
- | `network` | Simulate network conditions |
328
-
329
- ### Worker & Tab Management
330
-
331
- | Tool | Description |
332
- |------|-------------|
333
- | `worker_create` | Create isolated browser context |
334
- | `worker_list` | List Workers and their tabs |
335
- | `worker_delete` | Delete Worker |
336
- | `tabs_create_mcp` | Create new tab |
337
- | `tabs_context_mcp` | Get tab info |
338
-
339
- ### Workflow Orchestration
340
-
341
- | Tool | Description |
342
- |------|-------------|
343
- | `workflow_init` | Initialize parallel workflow |
344
- | `workflow_status` | Check progress |
345
- | `workflow_collect` | Collect results |
346
- | `workflow_cleanup` | Clean up resources |
347
-
348
- ---
349
-
350
- ## CLI Commands
351
-
352
- ```bash
353
- ccp serve # Start MCP server (auto-run by Claude Code)
354
- ccp check # Check Chrome connection
355
- ccp status # View session status
356
- ccp status --json # JSON output
357
- ccp doctor # Diagnose installation
358
- ccp cleanup # Clean up old sessions
359
- ccp serve --port 9223 # Use custom port
360
- ```
361
-
362
- ---
363
-
364
- ## Performance
365
-
366
- | Concurrent Sessions | Success Rate |
367
- |:---:|:---:|
368
- | 5 | 100% |
369
- | 10 | 100% |
370
- | 15 | 100% |
371
- | 20 | 100% |
372
-
373
- ---
374
-
375
- ## Additional Features
376
-
377
- ### Network Simulation
378
-
379
- ```
380
- You: Test myapp.com loading time on 3G network
381
-
382
- Claude: [Applies 3G throttling: 1.5Mbps, 100ms latency]
383
- ```
384
-
385
- Presets: `offline`, `slow-2g`, `2g`, `3g`, `4g`, `fast-wifi`, `custom`
386
-
387
- ### Config Recovery
388
-
389
- ```bash
390
- # Auto-recover corrupted .claude.json
391
- ccp recover
392
-
393
- # List backups
394
- ccp recover --list-backups
395
- ```
396
-
397
- ### Session Isolation
398
-
399
- ```bash
400
- # Run Claude with isolated config (prevents race conditions)
401
- ccp launch
402
- ccp launch -p "Your prompt"
403
- ```
404
-
405
- ---
406
-
407
- ## Troubleshooting
408
-
409
- ### Chrome not connecting
410
-
411
- ```bash
412
- ccp check
413
- # Or manually start Chrome
414
- chrome --remote-debugging-port=9222
415
- ```
416
-
417
- ### Tools not appearing in Claude Code
418
-
419
- 1. Check `~/.claude.json` configuration
420
- 2. Restart Claude Code
421
- 3. Run `/mcp` to verify `chrome-parallel` is listed
422
-
423
- ---
424
-
425
- ## Use Cases
426
-
427
- - **Business**: ERP/SaaS data extraction, invoice downloads, repetitive task automation
428
- - **Research**: Login-required platform data collection, academic DB searches
429
- - **Social Media**: Multi-account posting, message management, analytics
430
- - **E-commerce**: Member price monitoring, inventory management, review responses
431
- - **QA Testing**: Parallel scenario testing, network condition testing
432
- - **Productivity**: Email organization, calendar management, bookmark management
433
-
434
- ---
435
-
436
- ## Development
437
-
438
- ```bash
439
- git clone https://github.com/shaun0927/claude-chrome-parallel.git
440
- cd claude-chrome-parallel
441
- npm install
442
- npm run build
443
- npm test
444
- ```
445
-
446
- ---
447
-
448
- ## License
449
-
450
- MIT License - [LICENSE](LICENSE)
451
-
452
- ---
453
-
454
- ## Disclaimer
455
-
456
- > **This is an unofficial community project.**
457
- > Not affiliated with Anthropic.
458
- >
459
- > "Claude" is a trademark of Anthropic.
460
-
461
- ## Acknowledgments
462
-
463
- - [Anthropic](https://anthropic.com) - Claude and MCP protocol
464
- - [Puppeteer](https://pptr.dev/) - Browser automation
1
+ # Claude Chrome Parallel
2
+
3
+ > **Ultrafast parallel browser MCP.**
4
+
5
+ [![GitHub release](https://img.shields.io/github/v/release/shaun0927/claude-chrome-parallel)](https://github.com/shaun0927/claude-chrome-parallel/releases)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ Automate your **actual Chrome** — with all your logins, cookies, and sessions intact. Run **20+ parallel browser sessions** from Claude Code without logging in to anything, ever again.
9
+
10
+ ```
11
+ "Screenshot my AWS, Stripe, Vercel, GitHub, and Slack dashboards"
12
+
13
+ Playwright MCP (sequential, login each site):
14
+ AWS 🔐━━━━━━━━━━━━━━ login 45s ━━━━ task
15
+ Stripe 🔐━━━━━━━━━━━━━━ login 40s ━━━━ task
16
+ Vercel 🔐━━━━━━━━━━━━━━ login 50s ━━━━ task
17
+ GitHub 🔐━━━━━━━━━━━━ login 35s ━━━━ task
18
+ Slack 🔐━━━━━━━━━━━━ login 40s ━━━━ task
19
+ Total: ~250s | Memory: ~2.5 GB (5 browser instances)
20
+
21
+ CCP (parallel, zero auth):
22
+ AWS ━━━━ 3s ✓
23
+ Stripe ━━━━ 3s
24
+ Vercel ━━━━ 3s ✓
25
+ GitHub ━━━━ 3s ✓
26
+ Slack ━━━━ 3s
27
+ Total: ~3s | Memory: ~300 MB (1 Chrome, shared contexts)
28
+
29
+ 80x faster. 8x less memory. Zero logins.
30
+ ```
31
+
32
+ <p align="center">
33
+ <img src="https://raw.githubusercontent.com/shaun0927/claude-chrome-parallel/main/assets/demo.svg" alt="Playwright MCP vs CCP — 5 authenticated sites comparison" width="100%">
34
+ </p>
35
+
36
+ ---
37
+
38
+ ## Why CCP Is Fast
39
+
40
+ The speed advantage **compounds** with every site. Playwright MCP has two bottlenecks that multiply:
41
+
42
+ | Sites | Playwright MCP | CCP | Speedup |
43
+ |:-----:|:--------------:|:---:|:-------:|
44
+ | 1 | ~50s (login + task) | ~3s | **17x** |
45
+ | 3 | ~155s (sequential) | ~3s (parallel) | **50x** |
46
+ | 5 | ~250s | ~3s | **80x** |
47
+ | 10 | ~500s | ~3s | **160x** |
48
+
49
+ **Why?** Playwright launches a blank browser per site. Each needs: navigate → type email → type password → solve 2FA → wait for redirect. That's 30-120s **per site**, and it's **sequential**.
50
+
51
+ CCP connects to your existing Chrome. You're already logged into everything. Workers run in parallel. The task that takes 250s with Playwright takes 3s with CCP.
52
+
53
+ ### Memory
54
+
55
+ Playwright spawns a **separate browser process** per session (~500MB each). Five sites = 2.5GB.
56
+
57
+ CCP uses **one Chrome** with lightweight browser contexts (like incognito windows sharing the same process). Five Workers = ~300MB total. That's **8x less memory** — and it stays flat whether you run 5 or 20 Workers.
58
+
59
+ ---
60
+
61
+ ## Core Features
62
+
63
+ <table>
64
+ <tr>
65
+ <td width="25%" valign="top">
66
+
67
+ ### Zero Auth
68
+
69
+ Your actual Chrome profile. Gmail, Slack, AWS, Stripe — **already logged in**.
70
+
71
+ No credentials. No OAuth. No 2FA loops.
72
+
73
+ </td>
74
+ <td width="25%" valign="top">
75
+
76
+ ### 20+ Parallel Workers
77
+
78
+ All Workers run simultaneously in isolated browser contexts.
79
+
80
+ 5 sites in ~3s, not ~250s.
81
+
82
+ </td>
83
+ <td width="25%" valign="top">
84
+
85
+ ### 8x Less Memory
86
+
87
+ One Chrome process, shared contexts. Not N separate browser instances.
88
+
89
+ 5 Workers ≈ 300MB, not 2.5GB.
90
+
91
+ </td>
92
+ <td width="25%" valign="top">
93
+
94
+ ### Worker Isolation
95
+
96
+ Each Worker gets separate cookies, localStorage, and sessions.
97
+
98
+ **5 accounts on the same site. Simultaneously.**
99
+
100
+ </td>
101
+ </tr>
102
+ </table>
103
+
104
+ ---
105
+
106
+ ## Quick Start
107
+
108
+ ```bash
109
+ # One command. That's it.
110
+ npx claude-chrome-parallel setup
111
+
112
+ # Restart Claude Code — just say "ccp".
113
+ ```
114
+
115
+ **Updates are automatic.** The MCP server runs via `npx`, so you always get the latest version.
116
+
117
+ <details>
118
+ <summary>Manual setup</summary>
119
+
120
+ ```json
121
+ {
122
+ "mcpServers": {
123
+ "chrome-parallel": {
124
+ "command": "npx",
125
+ "args": ["-y", "claude-chrome-parallel", "serve", "--auto-launch"]
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ Or: `claude mcp add claude-chrome-parallel -- npx -y claude-chrome-parallel serve --auto-launch`
132
+
133
+ </details>
134
+
135
+ <details>
136
+ <summary>Installation scope</summary>
137
+
138
+ ```bash
139
+ npx claude-chrome-parallel setup # Global all projects (default)
140
+ npx claude-chrome-parallel setup --scope project # Project this directory only
141
+ ```
142
+
143
+ Global writes to `~/.claude.json`. Project writes to `.mcp.json` in the current directory.
144
+
145
+ </details>
146
+
147
+ ---
148
+
149
+ ## Just Say `ccp`
150
+
151
+ After setup, **`ccp` is your magic word.** No flags, no config, no boilerplate. Just tell Claude what you want with "ccp" and it happens.
152
+
153
+ ```
154
+ You: ccp screenshot my Gmail inbox
155
+ Claude: [Already logged in. Screenshot taken. Done.]
156
+
157
+ You: ccp check my AWS billing and Stripe revenue at the same time
158
+ Claude: [2 Workers, parallel, 2.1s — both dashboards captured]
159
+
160
+ You: use ccp to compare iPhone prices on Amazon, eBay, and Walmart
161
+ Claude: [3 Workers, 3 sites, simultaneously]
162
+ Amazon: $999 | eBay: $945 ← lowest | Walmart: $979
163
+ ```
164
+
165
+ **How it works**: CCP uses the MCP protocol's native `instructions` field to teach Claude the keyword automatically. No CLAUDE.md injection. No hooks. Just install and go.
166
+
167
+ ---
168
+
169
+ ## What You Can Do
170
+
171
+ ### Multi-Account Operations
172
+
173
+ ```
174
+ You: ccp check my personal and work Gmail at the same time
175
+
176
+ Claude: [Creates 2 isolated Workers]
177
+ Personal account: 3 unread emails
178
+ Work account: 7 unread emails
179
+ Time: 2.1s (parallel)
180
+ ```
181
+
182
+ ### Price Comparison Across Sites
183
+
184
+ ```
185
+ You: ccp find the cheapest iPhone 15 on Amazon, eBay, and Walmart
186
+
187
+ Claude: [3 Workers, 3 sites, simultaneously]
188
+ Amazon: $999
189
+ eBay: $945 ← lowest
190
+ Walmart: $979
191
+ Time: 1.3s total (not 3.9s)
192
+ ```
193
+
194
+ ### Authenticated Dashboard Monitoring
195
+
196
+ ```
197
+ You: ccp screenshot my AWS billing, Stripe dashboard, and Vercel usage
198
+
199
+ Claude: [All 3 require login but you're already authenticated]
200
+ aws-billing.png ✓
201
+ stripe-revenue.png
202
+ vercel-usage.png ✓
203
+ ```
204
+
205
+ ### Parallel QA Testing
206
+
207
+ ```bash
208
+ # 5 tests, 5 terminals, all at once
209
+ claude -p "ccp test login flow on myapp.com" # Worker 1
210
+ claude -p "ccp test checkout on myapp.com" # Worker 2
211
+ claude -p "ccp test admin panel on myapp.com" # Worker 3
212
+ claude -p "ccp test mobile view on myapp.com" # Worker 4
213
+ claude -p "ccp test form validation on myapp.com" # Worker 5
214
+
215
+ # Sequential: ~5 minutes. Parallel with CCP: ~1 minute.
216
+ # That's your entire smoke test suite before lunch.
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Comparison
222
+
223
+ | | Playwright MCP | Browserbase | Chrome Extension | **CCP** |
224
+ |---|:---:|:---:|:---:|:---:|
225
+ | **Auth overhead per site** | 30-120s | ❌ 30-120s | ✅ 0s | **✅ 0s** |
226
+ | **5-site authenticated task** | ~250s | ~250s + cost | N/A (1 session) | **~3s** |
227
+ | **Memory (5 sessions)** | ~2.5 GB | N/A (cloud) | N/A | **~300 MB** |
228
+ | **Uses your Chrome logins** | ❌ Blank browser | ❌ Cloud browser | ✅ | **✅** |
229
+ | **Concurrent sessions** | ⚠️ Limited | ✅ (paid) | ❌ 1 (crashes) | **✅ 20+** |
230
+ | **Multi-account isolation** | ❌ | ✅ (paid) | ❌ | **✅** |
231
+ | **Runs locally** | ✅ | ❌ Cloud only | ✅ | **✅** |
232
+ | **Free** | ✅ | ❌ | ✅ | **✅** |
233
+ | **No bot detection** | ❌ Headless | ❌ Fingerprinted | ✅ | **✅** |
234
+ | **Device emulation** | | ✅ | ❌ | **✅** |
235
+ | **Network simulation** | | ❌ | ❌ | **✅** |
236
+ | **Workflow orchestration** | ❌ | ❌ | ❌ | **✅** |
237
+ | **Adaptive Guidance** | ❌ | ❌ | ❌ | **✅** |
238
+
239
+ ---
240
+
241
+ ## Adaptive Guidance
242
+
243
+ Every tool response includes contextual hints that prevent the LLM from wasting time on wrong approaches. 21 static rules + an adaptive memory system that learns from your usage patterns.
244
+
245
+ ```
246
+ click_element Error: "ref not found"
247
+ _hint: "Refs expire after page changes. Use read_page for fresh refs."
248
+ → LLM self-corrects. No retry loop. No wasted tokens.
249
+
250
+ navigatetitle contains "Login"
251
+ _hint: "Login page detected. Use fill_form for credentials."
252
+ → LLM skips straight to form filling.
253
+ ```
254
+
255
+ **Adaptive Memory**: The system observes which tool resolves each error type. After seeing the same recovery pattern 3 times, it promotes it to a permanent hint — persisted across sessions in `.chrome-parallel/hints/learned-patterns.json`.
256
+
257
+ <details>
258
+ <summary>Rule priority tiers</summary>
259
+
260
+ | Tier | Priority | Examples |
261
+ |------|----------|---------|
262
+ | Error Recovery | 100 | Stale refs, tab not found, timeouts, null elements |
263
+ | Composite Hints | 200 | find+click → click_element, multiple form_input → fill_form |
264
+ | Repetition Detection | 250 | Same-tool error streaks, A↔B oscillation loops |
265
+ | Sequence Detection | 300 | Login page detection, navigate→screenshot without wait |
266
+ | Learned Patterns | 350 | Automatically discovered error→recovery correlations |
267
+ | Success Hints | 400 | Post-click navigation check, form submission verification |
268
+
269
+ </details>
270
+
271
+ ---
272
+
273
+ ## Tools (36)
274
+
275
+ <details>
276
+ <summary><b>Browser Automation</b> navigate, click, type, find</summary>
277
+
278
+ | Tool | Description |
279
+ |------|-------------|
280
+ | `navigate` | Go to URL, back/forward |
281
+ | `computer` | Screenshot, click, keyboard, scroll |
282
+ | `read_page` | Parse page structure (accessibility tree) |
283
+ | `find` | Find elements by natural language |
284
+ | `click_element` | Find and click in one step |
285
+ | `wait_and_click` | Wait for element, then click |
286
+ | `form_input` | Set individual form values |
287
+ | `fill_form` | Fill multiple fields + submit in one call |
288
+ | `javascript_tool` | Execute JavaScript |
289
+
290
+ </details>
291
+
292
+ <details>
293
+ <summary><b>Browser Environment</b> — device, network, location</summary>
294
+
295
+ | Tool | Description |
296
+ |------|-------------|
297
+ | `user_agent` | Set User-Agent (chrome, safari, googlebot, etc.) |
298
+ | `geolocation` | Override location (seoul, tokyo, new-york, etc.) |
299
+ | `emulate_device` | Device emulation (iphone-14, ipad-pro, pixel-7, etc.) |
300
+ | `network` | Simulate network conditions (3G, 4G, offline) |
301
+
302
+ </details>
303
+
304
+ <details>
305
+ <summary><b>Page Operations</b> content, PDF, reload, wait</summary>
306
+
307
+ | Tool | Description |
308
+ |------|-------------|
309
+ | `page_reload` | Reload page (optional cache bypass) |
310
+ | `page_content` | Get HTML content from page or element |
311
+ | `page_pdf` | Generate PDF (A4, Letter, landscape) |
312
+ | `wait_for` | Wait for selector, navigation, function, or timeout |
313
+
314
+ </details>
315
+
316
+ <details>
317
+ <summary><b>DOM, Storage, Debugging, Advanced</b></summary>
318
+
319
+ | Tool | Description |
320
+ |------|-------------|
321
+ | `selector_query` | Query elements by CSS selector |
322
+ | `xpath_query` | Query elements by XPath expression |
323
+ | `cookies` | Get/set/delete browser cookies |
324
+ | `storage` | Manage localStorage/sessionStorage |
325
+ | `console_capture` | Capture console logs (with type filtering) |
326
+ | `performance_metrics` | Performance metrics (FCP, load time, JS heap) |
327
+ | `request_intercept` | Intercept/block/log network requests |
328
+ | `drag_drop` | Drag and drop by selector or coordinates |
329
+ | `file_upload` | Upload files to file input elements |
330
+ | `http_auth` | Set HTTP Basic Authentication credentials |
331
+
332
+ </details>
333
+
334
+ <details>
335
+ <summary><b>Workers & Orchestration</b></summary>
336
+
337
+ | Tool | Description |
338
+ |------|-------------|
339
+ | `worker_create` | Create isolated browser context |
340
+ | `worker_list` | List Workers and their tabs |
341
+ | `worker_update` | Update worker progress |
342
+ | `worker_complete` | Mark worker as complete |
343
+ | `worker_delete` | Delete Worker |
344
+ | `tabs_create_mcp` | Create new tab |
345
+ | `tabs_context_mcp` | Get tab info |
346
+ | `tabs_close` | Close tabs |
347
+ | `workflow_init` | Initialize parallel workflow |
348
+ | `workflow_status` | Check workflow progress |
349
+ | `workflow_collect` | Collect results from all Workers |
350
+ | `workflow_cleanup` | Clean up workflow resources |
351
+
352
+ </details>
353
+
354
+ ---
355
+
356
+ ## CLI
357
+
358
+ ```bash
359
+ npx claude-chrome-parallel setup # Auto-configure (global)
360
+ npx claude-chrome-parallel setup --scope project # Auto-configure (project only)
361
+ npx claude-chrome-parallel serve --auto-launch # Start with auto Chrome launch
362
+ npx claude-chrome-parallel serve --headless-shell # Headless mode (15-30% less memory)
363
+ npx claude-chrome-parallel serve -p <port> # Custom debugging port (default: 9222)
364
+ npx claude-chrome-parallel doctor # Diagnose installation
365
+ npx claude-chrome-parallel status # View sessions
366
+ npx claude-chrome-parallel cleanup # Clean up old sessions
367
+ ```
368
+
369
+ ---
370
+
371
+ <details>
372
+ <summary><b>Performance Optimizations</b></summary>
373
+
374
+ - **Memory** — Renderer process limits, JS heap caps, forced GC on tab close
375
+ - **Screenshots** — WebP format (3-5x smaller than PNG)
376
+ - **Cookie Bridge** — 30s TTL cache for auth cookie sharing (~10ms vs 2-6s)
377
+ - **Find Tool** — Batched CDP queries (~100ms vs ~400ms)
378
+ - **Headless Shell** — `--headless-shell` for 15-30% less memory
379
+
380
+ </details>
381
+
382
+ ---
383
+
384
+ ## Development
385
+
386
+ ```bash
387
+ git clone https://github.com/shaun0927/claude-chrome-parallel.git
388
+ cd claude-chrome-parallel
389
+ npm install && npm run build && npm test
390
+ ```
391
+
392
+ ## License
393
+
394
+ MIT [LICENSE](LICENSE)
395
+
396
+ ---
397
+
398
+ > **Disclaimer**: Unofficial community project. Not affiliated with Anthropic. "Claude" is a trademark of Anthropic.