claude-chrome-parallel 3.0.4 → 3.4.1

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