dr-claw 1.1.2

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 (287) hide show
  1. package/LICENSE +1380 -0
  2. package/NOTICE +17 -0
  3. package/README.md +875 -0
  4. package/README.zh-CN.md +857 -0
  5. package/dist/api-docs.html +878 -0
  6. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  7. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  8. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  10. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  11. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  12. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  13. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  14. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  16. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  17. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  18. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  19. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  20. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  21. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  22. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  23. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  24. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  26. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  28. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  29. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  30. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  31. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  32. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  34. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  35. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  36. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  37. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  38. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  43. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  44. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  45. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  46. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  47. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  48. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  49. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  50. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  51. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  52. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  53. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  54. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  55. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  56. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  57. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  58. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  59. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  60. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  61. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  62. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  63. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  64. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  65. package/dist/assets/_basePickBy-C0n1uo4u.js +1 -0
  66. package/dist/assets/_baseUniq-BRNmhFkc.js +1 -0
  67. package/dist/assets/arc-DOMBmC_A.js +1 -0
  68. package/dist/assets/architectureDiagram-VXUJARFQ-CtMWglbD.js +36 -0
  69. package/dist/assets/blockDiagram-VD42YOAC-DK_gTkJy.js +122 -0
  70. package/dist/assets/c4Diagram-YG6GDRKO-DrDAvsn7.js +10 -0
  71. package/dist/assets/channel-BFOE7OyC.js +1 -0
  72. package/dist/assets/chunk-4BX2VUAB-CGbhdZcN.js +1 -0
  73. package/dist/assets/chunk-55IACEB6-sGeFSxen.js +1 -0
  74. package/dist/assets/chunk-B4BG7PRW-RxgHAU_P.js +165 -0
  75. package/dist/assets/chunk-DI55MBZ5-CvHUXZrx.js +220 -0
  76. package/dist/assets/chunk-FMBD7UC4-Sn7cXVNU.js +15 -0
  77. package/dist/assets/chunk-QN33PNHL-bDKOHppN.js +1 -0
  78. package/dist/assets/chunk-QZHKN3VN-B9kN5LGm.js +1 -0
  79. package/dist/assets/chunk-TZMSLE5B-CCBe6len.js +1 -0
  80. package/dist/assets/classDiagram-2ON5EDUG-DQoMNYlY.js +1 -0
  81. package/dist/assets/classDiagram-v2-WZHVMYZB-DQoMNYlY.js +1 -0
  82. package/dist/assets/clone-BulQSblH.js +1 -0
  83. package/dist/assets/cose-bilkent-S5V4N54A-r6sLiHBW.js +1 -0
  84. package/dist/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  85. package/dist/assets/dagre-6UL2VRFP-AbsaR1Oa.js +4 -0
  86. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  87. package/dist/assets/diagram-PSM6KHXK-DjCvdUyy.js +24 -0
  88. package/dist/assets/diagram-QEK2KX5R-CqiocXkH.js +43 -0
  89. package/dist/assets/diagram-S2PKOQOG-D5ALeoII.js +24 -0
  90. package/dist/assets/erDiagram-Q2GNP2WA-C1AeOsiz.js +60 -0
  91. package/dist/assets/flowDiagram-NV44I4VS-C98ve_DO.js +162 -0
  92. package/dist/assets/ganttDiagram-JELNMOA3-3zdLvcxD.js +267 -0
  93. package/dist/assets/gitGraphDiagram-V2S2FVAM-nDuDMsHh.js +65 -0
  94. package/dist/assets/graph-Blm-emkR.js +1 -0
  95. package/dist/assets/index-B8Yutsnm.css +1 -0
  96. package/dist/assets/index-Cf6gyhc3.js +654 -0
  97. package/dist/assets/infoDiagram-HS3SLOUP-CmzE3q0R.js +2 -0
  98. package/dist/assets/init-Gi6I4Gst.js +1 -0
  99. package/dist/assets/journeyDiagram-XKPGCS4Q-CYaW7LrP.js +139 -0
  100. package/dist/assets/kanban-definition-3W4ZIXB7-mkmW7p0j.js +89 -0
  101. package/dist/assets/layout-Ct2kFIId.js +1 -0
  102. package/dist/assets/linear-CKG9EwIJ.js +1 -0
  103. package/dist/assets/mermaid.core-CaKcUnnd.js +250 -0
  104. package/dist/assets/mindmap-definition-VGOIOE7T-Bct-pYin.js +68 -0
  105. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  106. package/dist/assets/pieDiagram-ADFJNKIX-C8wFD4Jr.js +30 -0
  107. package/dist/assets/quadrantDiagram-AYHSOK5B-CuiE_f46.js +7 -0
  108. package/dist/assets/requirementDiagram-UZGBJVZJ-C4v1CqU8.js +64 -0
  109. package/dist/assets/sankeyDiagram-TZEHDZUN-keAqqs-Y.js +10 -0
  110. package/dist/assets/sequenceDiagram-WL72ISMW-ClNbvKTB.js +145 -0
  111. package/dist/assets/stateDiagram-FKZM4ZOC-D8We-2vq.js +1 -0
  112. package/dist/assets/stateDiagram-v2-4FDKWEC3-BUURfjrE.js +1 -0
  113. package/dist/assets/timeline-definition-IT6M3QCI-DsvEMT5T.js +61 -0
  114. package/dist/assets/treemap-GDKQZRPO-TJrzN7Bj.js +162 -0
  115. package/dist/assets/vendor-codemirror-ansM-eig.js +33 -0
  116. package/dist/assets/vendor-react-BWF6YQQ3.js +8 -0
  117. package/dist/assets/vendor-xterm-DfcmCpbH.js +66 -0
  118. package/dist/assets/xychartDiagram-PRI3JC2R-BdATmY5F.js +7 -0
  119. package/dist/clear-cache.html +85 -0
  120. package/dist/convert-icons.md +53 -0
  121. package/dist/dr-claw.png +0 -0
  122. package/dist/favicon.png +0 -0
  123. package/dist/generate-icons.js +49 -0
  124. package/dist/icons/claude-ai-icon.svg +1 -0
  125. package/dist/icons/codex-white.svg +3 -0
  126. package/dist/icons/codex.svg +3 -0
  127. package/dist/icons/cursor-white.svg +12 -0
  128. package/dist/icons/cursor.svg +1 -0
  129. package/dist/icons/file.svg +16997 -0
  130. package/dist/icons/generate-icons.md +19 -0
  131. package/dist/icons/icon-128x128.png +0 -0
  132. package/dist/icons/icon-144x144.png +0 -0
  133. package/dist/icons/icon-152x152.png +0 -0
  134. package/dist/icons/icon-192x192.png +0 -0
  135. package/dist/icons/icon-384x384.png +0 -0
  136. package/dist/icons/icon-512x512.png +0 -0
  137. package/dist/icons/icon-72x72.png +0 -0
  138. package/dist/icons/icon-96x96.png +0 -0
  139. package/dist/icons/news/arxiv.svg +1 -0
  140. package/dist/icons/news/huggingface.svg +8 -0
  141. package/dist/icons/news/x-black.png +0 -0
  142. package/dist/icons/news/x-white.png +0 -0
  143. package/dist/icons/news/xiaohongshu.png +0 -0
  144. package/dist/index.html +51 -0
  145. package/dist/leveraged-cognition.png +0 -0
  146. package/dist/manifest.json +61 -0
  147. package/dist/screenshots/chat.png +0 -0
  148. package/dist/screenshots/new_claw.png +0 -0
  149. package/dist/screenshots/news_dashboard.png +0 -0
  150. package/dist/screenshots/project_dashboard.png +0 -0
  151. package/dist/screenshots/research_lab.png +0 -0
  152. package/dist/screenshots/skill_library.png +0 -0
  153. package/dist/screenshots/task_list.png +0 -0
  154. package/dist/screenshots/terminal_example.png +0 -0
  155. package/dist/screenshots/terminal_example1.png +0 -0
  156. package/dist/sw.js +58 -0
  157. package/dist/wechat-group-qr.jpg +0 -0
  158. package/package.json +133 -0
  159. package/public/api-docs.html +878 -0
  160. package/public/clear-cache.html +85 -0
  161. package/public/convert-icons.md +53 -0
  162. package/public/dr-claw.png +0 -0
  163. package/public/favicon.png +0 -0
  164. package/public/generate-icons.js +49 -0
  165. package/public/icons/claude-ai-icon.svg +1 -0
  166. package/public/icons/codex-white.svg +3 -0
  167. package/public/icons/codex.svg +3 -0
  168. package/public/icons/cursor-white.svg +12 -0
  169. package/public/icons/cursor.svg +1 -0
  170. package/public/icons/file.svg +16997 -0
  171. package/public/icons/generate-icons.md +19 -0
  172. package/public/icons/icon-128x128.png +0 -0
  173. package/public/icons/icon-144x144.png +0 -0
  174. package/public/icons/icon-152x152.png +0 -0
  175. package/public/icons/icon-192x192.png +0 -0
  176. package/public/icons/icon-384x384.png +0 -0
  177. package/public/icons/icon-512x512.png +0 -0
  178. package/public/icons/icon-72x72.png +0 -0
  179. package/public/icons/icon-96x96.png +0 -0
  180. package/public/icons/news/arxiv.svg +1 -0
  181. package/public/icons/news/huggingface.svg +8 -0
  182. package/public/icons/news/x-black.png +0 -0
  183. package/public/icons/news/x-white.png +0 -0
  184. package/public/icons/news/xiaohongshu.png +0 -0
  185. package/public/leveraged-cognition.png +0 -0
  186. package/public/manifest.json +61 -0
  187. package/public/screenshots/chat.png +0 -0
  188. package/public/screenshots/new_claw.png +0 -0
  189. package/public/screenshots/news_dashboard.png +0 -0
  190. package/public/screenshots/project_dashboard.png +0 -0
  191. package/public/screenshots/research_lab.png +0 -0
  192. package/public/screenshots/skill_library.png +0 -0
  193. package/public/screenshots/task_list.png +0 -0
  194. package/public/screenshots/terminal_example.png +0 -0
  195. package/public/screenshots/terminal_example1.png +0 -0
  196. package/public/sw.js +58 -0
  197. package/public/wechat-group-qr.jpg +0 -0
  198. package/scripts/export-skills-catalog-v2.mjs +746 -0
  199. package/scripts/fix-node-pty.js +45 -0
  200. package/scripts/gemini_image_core.py +470 -0
  201. package/scripts/install-python-tools.js +64 -0
  202. package/server/AGENTS.md +73 -0
  203. package/server/__tests__/gemini-legacy-thought.test.mjs +88 -0
  204. package/server/__tests__/runtimePorts.test.mjs +115 -0
  205. package/server/__tests__/session-delete.test.mjs +166 -0
  206. package/server/bin/compute-node +70 -0
  207. package/server/claude-sdk.js +799 -0
  208. package/server/cli-chat.js +488 -0
  209. package/server/cli.js +354 -0
  210. package/server/compute-node.js +439 -0
  211. package/server/constants/config.js +5 -0
  212. package/server/cursor-cli.js +340 -0
  213. package/server/database/auth.db +0 -0
  214. package/server/database/db.js +1852 -0
  215. package/server/database/init.sql +194 -0
  216. package/server/gemini-cli.js +1352 -0
  217. package/server/index.js +3154 -0
  218. package/server/load-env.js +71 -0
  219. package/server/local-gpu.js +860 -0
  220. package/server/middleware/auth.js +100 -0
  221. package/server/openai-codex.js +724 -0
  222. package/server/openrouter.js +890 -0
  223. package/server/project-token-usage.js +407 -0
  224. package/server/projects.js +3973 -0
  225. package/server/routes/agent.js +1272 -0
  226. package/server/routes/auth.js +128 -0
  227. package/server/routes/auto-research.js +558 -0
  228. package/server/routes/cli-auth.js +958 -0
  229. package/server/routes/codex.js +344 -0
  230. package/server/routes/commands.js +601 -0
  231. package/server/routes/compute.js +358 -0
  232. package/server/routes/cursor.js +795 -0
  233. package/server/routes/git.js +1348 -0
  234. package/server/routes/mcp-utils.js +48 -0
  235. package/server/routes/mcp.js +618 -0
  236. package/server/routes/news.js +711 -0
  237. package/server/routes/projects.js +633 -0
  238. package/server/routes/references.js +338 -0
  239. package/server/routes/settings.js +285 -0
  240. package/server/routes/skills.js +914 -0
  241. package/server/routes/taskmaster.js +2566 -0
  242. package/server/routes/telemetry.js +89 -0
  243. package/server/routes/user.js +155 -0
  244. package/server/scripts/fix_session_names.js +57 -0
  245. package/server/scripts/research-news/common_words.py +19 -0
  246. package/server/scripts/research-news/link_keywords.py +298 -0
  247. package/server/scripts/research-news/scan_existing_notes.py +266 -0
  248. package/server/scripts/research-news/scoring_utils.py +227 -0
  249. package/server/scripts/research-news/search_arxiv.py +842 -0
  250. package/server/scripts/research-news/search_huggingface.py +438 -0
  251. package/server/scripts/research-news/search_x.py +490 -0
  252. package/server/scripts/research-news/search_xiaohongshu.py +610 -0
  253. package/server/taskmaster-templates/README.md +150 -0
  254. package/server/taskmaster-templates/README.zh-CN.md +150 -0
  255. package/server/taskmaster-templates/ai-research-dataset.json +230 -0
  256. package/server/taskmaster-templates/ai-research-method-model.json +230 -0
  257. package/server/taskmaster-templates/ai-research-position-paper.json +230 -0
  258. package/server/telemetry.js +121 -0
  259. package/server/templates/AGENTS.md +103 -0
  260. package/server/templates/CLAUDE.md +104 -0
  261. package/server/templates/GEMINI.md +103 -0
  262. package/server/templates/cursor-project.md +108 -0
  263. package/server/templates/index.js +37 -0
  264. package/server/utils/__tests__/sessionTokenUsage.test.js +82 -0
  265. package/server/utils/auto-research-mailer.js +57 -0
  266. package/server/utils/cliResolution.js +170 -0
  267. package/server/utils/commandParser.js +303 -0
  268. package/server/utils/cursorCommand.js +61 -0
  269. package/server/utils/geminiApiKey.js +28 -0
  270. package/server/utils/gitConfig.js +24 -0
  271. package/server/utils/imageAttachmentFiles.js +35 -0
  272. package/server/utils/mcp-detector.js +198 -0
  273. package/server/utils/parsers/bibtex-parser.js +207 -0
  274. package/server/utils/permissions.js +100 -0
  275. package/server/utils/runtimePorts.js +212 -0
  276. package/server/utils/sessionFormatting.js +68 -0
  277. package/server/utils/sessionIndex.js +100 -0
  278. package/server/utils/sessionMode.js +95 -0
  279. package/server/utils/sessionTokenUsage.js +105 -0
  280. package/server/utils/taskmaster-websocket.js +129 -0
  281. package/server/utils/zotero-client.js +136 -0
  282. package/shared/errorClassifier.js +102 -0
  283. package/shared/geminiThinkingSupport.d.ts +22 -0
  284. package/shared/geminiThinkingSupport.js +96 -0
  285. package/shared/geminiThoughtParser.d.ts +8 -0
  286. package/shared/geminiThoughtParser.js +30 -0
  287. package/shared/modelConstants.js +139 -0
package/README.md ADDED
@@ -0,0 +1,875 @@
1
+ <div align="center">
2
+ <img src="public/dr-claw.png" alt="Dr. Claw" width="128" height="128">
3
+ <h1>Dr. Claw: Your AI Research Assistant</h1>
4
+ <p><strong>Full-stack research workspace.</strong></p>
5
+ </div>
6
+
7
+ <p align="center">
8
+ <a href="https://openlair.github.io/dr-claw">
9
+ <img src="https://img.shields.io/badge/%F0%9F%8C%90-Homepage-CB2B3E?style=for-the-badge" alt="Homepage" />
10
+ </a>
11
+ <a href="https://github.com/OpenLAIR/dr-claw">
12
+ <img src="https://img.shields.io/badge/%F0%9F%A6%9E-Dr.%20Claw-CB2B3E?style=for-the-badge" alt="Dr. Claw" />
13
+ </a>
14
+ <a href="https://github.com/OpenLAIR/dr-claw/blob/main/LICENSE">
15
+ <img src="https://img.shields.io/badge/License-GPL--3.0%20%2B%20AGPL--3.0-blue?style=for-the-badge" alt="License: GPL-3.0 + AGPL-3.0" />
16
+ </a>
17
+ <a href="https://join.slack.com/t/vibe-lab-group/shared_invite/zt-3r4bkcx5t-iGyRMI~r09zt7p_ND2eP9A">
18
+ <img src="https://img.shields.io/badge/Join-Slack-4A154B?style=for-the-badge&logo=slack" alt="Join Slack" />
19
+ </a>
20
+ <a href="https://x.com/Vibe2038004">
21
+ <img src="https://img.shields.io/badge/Follow-on%20X-black?style=for-the-badge&logo=x" alt="Follow on X" />
22
+ </a>
23
+ <a href="./public/wechat-group-qr.jpg">
24
+ <img src="https://img.shields.io/badge/Join-WeChat-07C160?style=for-the-badge&logo=wechat&logoColor=white" alt="Join WeChat" />
25
+ </a>
26
+ </p>
27
+
28
+ <p align="center">
29
+ <a href="./README.md">English</a> | <a href="./README.zh-CN.md">中文</a>
30
+ </p>
31
+
32
+ ## Table of Contents
33
+
34
+ - [Overview](#overview)
35
+ - [Highlights](#highlights)
36
+ - [Quick Start](#quick-start)
37
+ - [Configuration](#configuration)
38
+ - [OpenRouter](#openrouter)
39
+ - [OpenClaw Integration](#openclaw-integration)
40
+ - [Research Lab - Quick Example](#research-lab-quick-example)
41
+ - [Usage Guide](#usage-guide)
42
+ - [Additional Details](#additional-details)
43
+ - [Contributing](#contributing)
44
+ - [FAQ](./docs/faq.md)
45
+ - [License](#license)
46
+ - [Citation](#citation)
47
+ - [Acknowledgments](#acknowledgments)
48
+ - [Support & Community](#support--community)
49
+
50
+ ## Overview
51
+
52
+ Dr. Claw is a general-purpose AI research assistant designed to help researchers and builders execute end-to-end projects across different domains. From shaping an initial idea to running experiments and preparing publication-ready outputs, Dr. Claw keeps the full workflow in one place so teams can focus on research quality and iteration speed.
53
+
54
+ ## Product Screenshot
55
+
56
+ <p align="center">
57
+ <img src="public/screenshots/new_claw.png" alt="Dr. Claw chat interface" width="1000">
58
+ </p>
59
+
60
+ <details>
61
+ <summary><strong>The Philosophy: Leveraged Cognition</strong></summary>
62
+
63
+ <p align="center">
64
+ <img src="public/leveraged-cognition.png" alt="Leveraged Cognition" width="900">
65
+ </p>
66
+
67
+ **Manual work is too slow. Fully automated AI is too generic. Vibe Researching is the new frontier.** Dr. Claw turns your **Research Taste** into outsized outcomes with **Agentic Execution**--so you can move faster, think bigger, and still hold the line on scientific rigor.
68
+
69
+ </details>
70
+
71
+ ## Highlights
72
+
73
+ - **🔬 Research Lab** — Structured dashboard for end-to-end research: define your brief, generate a pipeline of tasks, track progress across Survey → Ideation → Experiment → Publication → Promotion, and inspect source papers, ideas (rendered with LaTeX math), and cache artifacts — all at a glance
74
+ - **⚡ Auto Research** — Start one-click sequential task execution directly from the Project Dashboard, open the generated session live, and receive an email when the run completes
75
+ - **📚 100+ Research Skills** — A curated library spanning idea generation, code survey, experiment development & analysis, paper writing, review response, and delivery — automatically discovered by agents and applied as task-level assistance
76
+ - **🗂️ Chat-Driven Pipeline** — Describe your research idea in Chat; the agent uses the `inno-pipeline-planner` skill to interactively generate a structured research brief and task list — no manual templates needed
77
+ - **🤖 Multi-Agent Backend** — Seamlessly switch between Claude Code, Gemini CLI, Codex, and OpenRouter as your execution engines
78
+
79
+ ### What the Pipeline Produces
80
+
81
+ | | Artifact | Location | Description |
82
+ |---|---|---|---|
83
+ | 📚 | Survey reports | `Survey/reports/` | Literature reviews with citations from arXiv, Semantic Scholar, and web sources |
84
+ | 💡 | Research ideas | `Ideation/ideas/` | Brainstorming outputs with multi-persona evaluation scores |
85
+ | 🔬 | Experiment code | `Experiment/core_code/` | Implementation from the plan → implement → judge loop |
86
+ | 📊 | Analysis results | `Experiment/analysis/` | Statistical analysis, tables, and paper-ready figures |
87
+ | 📝 | Paper draft | `Publication/paper/` | Academic manuscript (IEEE/ACM format) with citations and LaTeX math |
88
+ | 🎞️ | Presentation | `Promotion/slides/` | Slide deck, TTS narration audio, and demo video |
89
+
90
+ > See [docs/pipeline-outputs.md](docs/pipeline-outputs.md) for the full artifact list and project directory structure.
91
+
92
+ <details>
93
+ <summary><span style="font-size: 1.17em; font-weight: 600;">More Features</span></summary>
94
+
95
+ - **💬 Interactive Chat + Shell** — Chat with your agent or drop into a full terminal — side by side with your research context
96
+ - **📁 File & Git Explorer** — Browse files with syntax highlighting, live-edit, stage changes, commit, and switch branches without leaving the UI
97
+ - **📱 Responsive & PWA-Ready** — Desktop, tablet, and mobile layouts with bottom tab bar, swipe gestures, and Add-to-Home-Screen support
98
+ - **🔄 Session Management** — Resume conversations, manage multiple sessions, and track full history across projects
99
+
100
+ </details>
101
+
102
+ ### Feature Gallery
103
+
104
+ <details>
105
+ <summary><strong>Expand screenshots</strong></summary>
106
+
107
+ <p><strong>Project Dashboard</strong> — Start from the project overview, review status, and launch end-to-end automation.</p>
108
+ <p align="center">
109
+ <img src="public/screenshots/project_dashboard.png" alt="Project dashboard interface" width="1000">
110
+ </p>
111
+
112
+ <p><strong>Skill Library</strong> — Browse reusable research skills across ideation, experimentation, and writing.</p>
113
+ <p align="center">
114
+ <img src="public/screenshots/skill_library.png" alt="Skill library interface" width="1000">
115
+ </p>
116
+
117
+ <p><strong>News Dashboard</strong> — Follow research-relevant updates without leaving the workspace.</p>
118
+ <p align="center">
119
+ <img src="public/screenshots/news_dashboard.png" alt="News dashboard interface" width="1000">
120
+ </p>
121
+
122
+ </details>
123
+
124
+
125
+ ## Quick Start
126
+
127
+ ### Prerequisites
128
+
129
+ - [Node.js](https://nodejs.org/) v20 or higher (**v22 LTS recommended**, see `.nvmrc`)
130
+ - At least one of the following CLI tools installed and configured:
131
+ - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
132
+ - [Gemini CLI](https://geminicli.com/docs/get-started/installation/)
133
+ - [Codex CLI](https://developers.openai.com/codex/cli/)
134
+ - Some systems need native build tools for dependencies like `node-pty` and `better-sqlite3`. If `npm install` fails, see [FAQ](docs/faq.md).
135
+
136
+ Cursor agent support is in progress and coming soon.
137
+
138
+ ### Installation
139
+
140
+ 1. **Clone the repository:**
141
+ ```bash
142
+ git clone https://github.com/OpenLAIR/dr-claw.git
143
+ cd dr-claw
144
+ ```
145
+
146
+ 2. **Install dependencies:**
147
+ ```bash
148
+ npm install
149
+ ```
150
+
151
+ 3. **Configure environment:**
152
+ ```bash
153
+ cp .env.example .env
154
+ # Edit .env with your preferred settings (port, etc.)
155
+ ```
156
+
157
+ Need custom ports, auth, or workspace settings? See [docs/configuration.md](docs/configuration.md).
158
+
159
+ 4. **Start the application:**
160
+
161
+ ```bash
162
+ # Development mode (with hot reload)
163
+ npm run dev
164
+ ```
165
+
166
+ Then create your account via the bowser `http://localhost:5173`.
167
+
168
+ 5. **Use the application**
169
+
170
+ There are two ways to interact with Dr. Claw: the **frontend UI** workflow or the **terminal-only**. The UI provides richer visualization but may encounter occasional bugs; the terminal approach is more stable and lightweight.
171
+
172
+ #### Option A: Frontend UI
173
+
174
+ Open your browser at `http://localhost:5173` (or the port you configured in `.env`).
175
+
176
+
177
+
178
+ #### Option B: Terminal Only
179
+
180
+ <p align="center">
181
+ <img src="public/screenshots/terminal_example1.png" alt="Terminal workflow example" width="800">
182
+ </p>
183
+
184
+ Open a **second terminal** (keep `npm run dev` running in the first) and install the `drclaw` CLI harness:
185
+
186
+ ```bash
187
+ pip install -e ./agent-harness
188
+ ```
189
+
190
+ Then log in with the credentials you created during setup:
191
+
192
+ ```bash
193
+ drclaw auth login --username YOUR_USERNAME --password YOUR_PASSWORD
194
+ ```
195
+
196
+ Install at least one agent CLI (if you haven't already):
197
+
198
+ | Agent | Install | Auth |
199
+ |-------|---------|------|
200
+ | Claude Code | `npm install -g @anthropic-ai/claude-code` | `claude` → follow OAuth prompt |
201
+ | Gemini CLI | `npm install -g @google/gemini-cli` | `gemini` → Google sign-in, or `export GOOGLE_API_KEY=...` |
202
+ | Codex CLI | `npm install -g @openai/codex` | `codex login`, or `export OPENAI_API_KEY=...` |
203
+ | **OpenRouter** | No CLI needed | `export OPENROUTER_API_KEY=sk-or-...` (get a key at [openrouter.ai/keys](https://openrouter.ai/keys)) |
204
+
205
+ > **OpenRouter** lets you use *any* model (GPT-5, Claude, Gemini, DeepSeek, Llama, Mistral, Qwen, etc.) through a single API key. Select your model in the UI or set `OPENROUTER_MODEL` in `.env`.
206
+
207
+ Navigate to the project directory you want to work in and launch any of the agents:
208
+
209
+ ```bash
210
+ cd /path/to/your/project
211
+ claude # or: gemini | codex
212
+ ```
213
+
214
+ Skills from `dr-claw/skills/` are automatically symlinked into each project's `.claude/skills/` directory when the project is created, so the agent discovers them without extra configuration. You can also reference any skill manually inside a session:
215
+
216
+ ```
217
+ > Read .claude/skills/inno-experiment-analysis/SKILL.md and follow it to analyze my results.
218
+ ```
219
+
220
+
221
+
222
+ #### Option C: OpenRouter Terminal Chat
223
+
224
+ For a lightweight terminal-only experience using any [OpenRouter](https://openrouter.ai/) model, use the built-in `dr-claw chat` command. No browser or UI required — just an interactive agentic session with full tool-calling capabilities (file I/O, shell, grep, glob, web search/fetch).
225
+
226
+ ```bash
227
+ # Make sure OPENROUTER_API_KEY is set (or pass --key)
228
+ export OPENROUTER_API_KEY=sk-or-...
229
+
230
+ # Launch a chat session with any model
231
+ node server/cli.js chat --model moonshotai/kimi-k2.5
232
+ ```
233
+
234
+ You can also pass the API key inline:
235
+
236
+ ```bash
237
+ node server/cli.js chat --model anthropic/claude-sonnet-4 --key sk-or-your-key
238
+ ```
239
+
240
+ | Flag | Description |
241
+ |------|-------------|
242
+ | `--model <slug>` | OpenRouter model slug (e.g., `moonshotai/kimi-k2.5`, `anthropic/claude-sonnet-4`, `deepseek/deepseek-r1`) |
243
+ | `--key <key>` | OpenRouter API key (defaults to `OPENROUTER_API_KEY` env var) |
244
+
245
+ Browse all available models at [openrouter.ai/models](https://openrouter.ai/models).
246
+
247
+
248
+
249
+ If agent web search does not work later, see [Troubleshooting Web Search](#troubleshooting-web-search) below.
250
+
251
+ ## OpenClaw Integration
252
+
253
+ This section is written for **new users integrating OpenClaw with Dr. Claw for the first time**. The goal is not to expose every detail. The goal is to get a reliable first integration running quickly:
254
+
255
+ - OpenClaw can see which Dr. Claw projects exist
256
+ - OpenClaw can find sessions waiting for user input
257
+ - OpenClaw can reply into a chosen session so Dr. Claw keeps going
258
+ - OpenClaw can summarize project / portfolio progress and recommend what to focus on next
259
+
260
+ The clean mental model is:
261
+ - **Dr. Claw**: owns the real projects, sessions, pipelines, artifacts, and execution
262
+ - **`drclaw` CLI**: exposes that state through a stable local control surface exposed primarily as `drclaw`
263
+ - **OpenClaw**: acts as the user-facing secretary on mobile, chat, or voice
264
+
265
+ ### Fastest path for new users
266
+
267
+ If you only want the shortest successful path, do these 5 things:
268
+
269
+ 1. Start Dr. Claw
270
+ 2. Install the `drclaw` CLI
271
+ 3. Give OpenClaw local shell / `exec` access
272
+ 4. Install the provided OpenClaw skill
273
+ 5. Make `chat waiting` and `digest portfolio` work end-to-end
274
+
275
+ Once those two commands work, OpenClaw already behaves like a usable research secretary.
276
+
277
+ ### Step 0: confirm the prerequisites
278
+
279
+ Before integrating, make sure:
280
+ - you can already run Dr. Claw locally
281
+ - you already have at least one project, or can create one under `~/vibelab/...`
282
+ - you have configured at least one execution backend such as Claude Code, Gemini CLI, or Codex
283
+ - your OpenClaw instance is allowed to run local tools
284
+
285
+ If those are not true yet, get Dr. Claw itself working first.
286
+
287
+ ### Step 1: start and verify the Dr. Claw server
288
+
289
+ From the repo root:
290
+
291
+ ```bash
292
+ npm install
293
+ npm run dev
294
+ ```
295
+
296
+ In another terminal:
297
+
298
+ ```bash
299
+ drclaw --json auth status
300
+ drclaw server status
301
+ ```
302
+
303
+ Use `auth status` as the primary reachability check. If it returns JSON, the server is reachable.
304
+
305
+ `drclaw server status` only reports the daemon launched by `drclaw server on`. If you started the app manually with `npm run dev`, it may still show `STOPPED` even though `http://localhost:3001` is working.
306
+
307
+ If you want Dr. Claw to manage the background process for you:
308
+
309
+ ```bash
310
+ drclaw server on
311
+ ```
312
+
313
+ ### Step 2: install and verify the `drclaw` CLI
314
+
315
+ From the repo root:
316
+
317
+ ```bash
318
+ pip install -e ./agent-harness
319
+ ```
320
+
321
+ Then verify:
322
+
323
+ ```bash
324
+ drclaw --help
325
+ drclaw --json auth status
326
+ drclaw --json projects list
327
+ ```
328
+
329
+ A good sequence is:
330
+ - `drclaw --json auth status` should return JSON if the server is reachable
331
+ - `drclaw --json projects list` will work only after login or if you already have a saved token
332
+
333
+ If `projects list` returns `Not logged in`, authenticate first:
334
+
335
+ ```bash
336
+ drclaw auth login --username <username> --password <password>
337
+ ```
338
+
339
+ ### Step 3: give OpenClaw local CLI execution capability
340
+
341
+ The key integration is not a deep API bridge. The key is that **OpenClaw can directly execute `drclaw ...` locally**.
342
+
343
+ At minimum, OpenClaw should be able to run commands such as:
344
+
345
+ ```bash
346
+ drclaw --json chat waiting
347
+ drclaw --json digest portfolio
348
+ drclaw --json chat reply --project <project> --session <session-id> -m "<message>"
349
+ drclaw --json workflow continue --project <project> --session <session-id> -m "<instruction>"
350
+ ```
351
+
352
+ Recommended approach:
353
+ - enable local `exec` / shell for OpenClaw
354
+ - prefer direct local CLI calls
355
+ - avoid building an extra proxy layer at the beginning
356
+
357
+ The thinner this layer is, the easier it is to debug and keep reliable.
358
+
359
+ ### Step 4: link OpenClaw in one command
360
+
361
+ Run:
362
+
363
+ ```bash
364
+ drclaw install --server-url http://localhost:3001
365
+ ```
366
+
367
+ This will automatically:
368
+ - copy the Dr. Claw skill into `~/.openclaw/workspace/skills/drclaw`
369
+ - install the helper scripts OpenClaw uses for serialized local turns
370
+ - save the Dr. Claw server URL for future CLI / OpenClaw use
371
+ - remember the local `drclaw` executable path
372
+
373
+ If you also want to save the default push channel during setup:
374
+
375
+ ```bash
376
+ drclaw install --server-url http://localhost:3001 --push-channel feishu:<chat_id>
377
+ ```
378
+
379
+ The compatibility form is still available:
380
+
381
+ ```bash
382
+ drclaw openclaw install --server-url http://localhost:3001
383
+ ```
384
+
385
+ ### Step 5: make two core commands work first
386
+
387
+ For a new user, do not start with everything. Start with these two:
388
+
389
+ 1. **Find which sessions are waiting for user input**
390
+ ```bash
391
+ drclaw --json chat waiting
392
+ ```
393
+
394
+ 2. **Get portfolio-wide progress and recommendations**
395
+ ```bash
396
+ drclaw --json digest portfolio
397
+ ```
398
+
399
+ If OpenClaw can call both commands and summarize the result back to the user, your minimum viable integration is already working.
400
+
401
+ ### Step 6: add the reply loop
402
+
403
+ The next common user action is: see a waiting session, then ask OpenClaw to answer it.
404
+
405
+ The fixed pattern is:
406
+
407
+ 1. Find waiting sessions:
408
+ ```bash
409
+ drclaw --json chat waiting
410
+ ```
411
+
412
+ 2. Let the user choose a project and session
413
+
414
+ 3. Send the reply:
415
+ ```bash
416
+ drclaw --json chat reply --project <project> --session <session-id> -m "<message>"
417
+ ```
418
+
419
+ 4. Immediately re-check whether it is still waiting:
420
+ ```bash
421
+ drclaw --json chat waiting --project <project>
422
+ ```
423
+
424
+ If the user wants to keep discussing the same project/session, switch to:
425
+
426
+ ```bash
427
+ drclaw --json chat project --project <project> --session <session-id> -m "<instruction>"
428
+ ```
429
+
430
+ That is the better pattern for multi-turn project-scoped discussion.
431
+
432
+ ### Step 7: recommended fixed operating patterns
433
+
434
+ Recommended OpenClaw flows:
435
+
436
+ 1. **User asks: what needs my attention right now?**
437
+ ```bash
438
+ drclaw --json digest portfolio
439
+ ```
440
+
441
+ 2. **User asks: which sessions are waiting for me?**
442
+ ```bash
443
+ drclaw --json chat waiting
444
+ ```
445
+
446
+ 3. **User asks: what is the latest state of this project?**
447
+ ```bash
448
+ drclaw --json projects latest <project>
449
+ drclaw --json projects progress <project>
450
+ ```
451
+
452
+ 4. **User says: reply to this session and keep it moving**
453
+ ```bash
454
+ drclaw --json chat reply --project <project> --session <session-id> -m "<message>"
455
+ ```
456
+
457
+ 5. **User says: I just had a new idea, create a project and help me shape it**
458
+ ```bash
459
+ drclaw --json projects idea /absolute/path/to/project --name "<display-name>" --idea "<idea text>"
460
+ ```
461
+
462
+ ### Step 8: prefer serialized local turns
463
+
464
+ When OpenClaw repeatedly runs `openclaw agent --local`, use the serialized wrapper to avoid session-lock collisions:
465
+
466
+ ```bash
467
+ agent-harness/skills/dr-claw/scripts/openclaw_drclaw_turn.sh
468
+ ```
469
+
470
+ Example:
471
+
472
+ ```bash
473
+ openclaw_drclaw_turn.sh --json -m "Use your exec tool to run `drclaw --json digest portfolio`. Return only raw stdout."
474
+ ```
475
+
476
+ In practice: **when OpenClaw calls Dr. Claw locally, stable serial turns are better than risky parallel turns.**
477
+
478
+ ### Step 9: how to know the integration is successful
479
+
480
+ A new user can consider the integration complete once all 4 are true:
481
+ - OpenClaw can list Dr. Claw projects
482
+ - OpenClaw can identify waiting sessions
483
+ - OpenClaw can successfully send one reply into a chosen session
484
+ - OpenClaw can produce one `digest portfolio` style summary with recommendations
485
+
486
+ At that point, OpenClaw is no longer just a chat surface. It becomes Dr. Claw's mobile secretary.
487
+
488
+ ### Step 10: what end users can say afterwards
489
+
490
+ After setup, users should be able to talk to OpenClaw naturally:
491
+ - “Check which Dr. Claw projects are waiting for my reply.”
492
+ - “Summarize the last message and current progress of this project.”
493
+ - “Reply to this session: continue with option B and report back when finished.”
494
+ - “Summarize recent experiment progress across projects and recommend what I should focus on today.”
495
+ - “I just had a new idea. Create a Dr. Claw project, discuss it with me, refine it, and start execution planning.”
496
+
497
+ The goal is not to replace Dr. Claw. The goal is to make Dr. Claw **callable, reportable, steerable, and remotely manageable** through OpenClaw.
498
+
499
+ ## Configuration
500
+
501
+ Dr. Claw reads local settings from `.env`. For most users, the only required step is copying `.env.example` to `.env`, but these are the settings you are most likely to adjust early:
502
+
503
+ - `PORT`: backend server port
504
+ - `VITE_PORT`: frontend dev server port
505
+ - `HOST`: bind address for the frontend and backend
506
+ - `JWT_SECRET`: required before exposing Dr. Claw beyond localhost
507
+ - `WORKSPACES_ROOT`: default root for new project workspaces
508
+
509
+ For the full environment reference and deployment notes, see [docs/configuration.md](docs/configuration.md).
510
+
511
+ Auto Research email notifications are configured inside the app at **Settings → Email**. The v1 flow supports Claude Code, Codex, Gemini, and OpenRouter engines for unattended task execution, and interrupted runs are automatically reconciled so they do not remain stuck in `running`.
512
+
513
+ ## OpenRouter
514
+
515
+ [OpenRouter](https://openrouter.ai/) is integrated as a first-class provider, giving you access to **hundreds of models** (GPT-5, Claude, Gemini, DeepSeek, Llama, Mistral, Qwen, Kimi, and more) through a single API key.
516
+
517
+ ### Setup
518
+
519
+ 1. Get an API key at [openrouter.ai/keys](https://openrouter.ai/keys).
520
+ 2. Set the key in one of three ways:
521
+ - **Environment variable:** `export OPENROUTER_API_KEY=sk-or-...`
522
+ - **`.env` file:** add `OPENROUTER_API_KEY=sk-or-...` to your project `.env`
523
+ - **UI:** go to **Settings → OpenRouter** and paste your key
524
+
525
+ ### Using OpenRouter in the UI
526
+
527
+ 1. Open a project and go to **Chat**.
528
+ 2. Under **Choose Your AI Assistant**, click **OpenRouter**.
529
+ 3. Search for a model in the dropdown (it fetches the full list from OpenRouter) or type a custom model slug.
530
+ 4. Start chatting — the agent has the same tool-calling capabilities as Claude, Gemini, and Codex (file read/write, shell, grep, glob, web search/fetch, todo).
531
+
532
+ OpenRouter is also available in **Auto Research** on the Project Dashboard — select it as the provider and pick any model.
533
+
534
+ ### Using OpenRouter in the Terminal
535
+
536
+ No browser needed. The `dr-claw chat` CLI gives you a fully agentic terminal session:
537
+
538
+ ```bash
539
+ # Basic usage
540
+ node server/cli.js chat --model moonshotai/kimi-k2.5
541
+
542
+ # With an explicit API key
543
+ node server/cli.js chat --model deepseek/deepseek-r1 --key sk-or-your-key
544
+ ```
545
+
546
+ The CLI supports the same tools as the UI (file I/O, shell, grep, glob, web search, web fetch, todo). Type your message and the agent will execute multi-step research tasks autonomously.
547
+
548
+ ### Default Model
549
+
550
+ Set `OPENROUTER_MODEL` in `.env` to change the default model used when none is specified:
551
+
552
+ ```env
553
+ OPENROUTER_MODEL=moonshotai/kimi-k2.5
554
+ ```
555
+
556
+ If unset, the default is `anthropic/claude-sonnet-4`.
557
+
558
+ <a id="research-lab-quick-example"></a>
559
+
560
+ ## Research Lab — Quick Example
561
+
562
+ The core feature of Dr. Claw is the **Research Lab**.
563
+
564
+ <details>
565
+ <summary><strong>Research Lab Screenshot</strong></summary>
566
+
567
+ <p align="center">
568
+ <img src="public/screenshots/research_lab.png" alt="Research Lab workflow" width="1000">
569
+ </p>
570
+
571
+ </details>
572
+
573
+ The typical flow is:
574
+
575
+ 1. Configure one supported agent in **Settings**.
576
+ 2. Configure notification settings in **Settings → Email** if you want completion email notifications.
577
+ 3. Describe your research idea in **Chat**.
578
+ 4. Let the agent generate `.pipeline/docs/research_brief.json` and `.pipeline/tasks/tasks.json`.
579
+ 5. Review the pipeline in **Research Lab** and either send tasks back to **Chat** manually or click **Auto Research** on the Project Dashboard to run them sequentially.
580
+
581
+ For full step-by-step operations, see **Usage Guide** below.
582
+
583
+ ## Usage Guide
584
+
585
+ After starting Dr. Claw, open your browser and follow the steps below.
586
+
587
+ <details>
588
+ <summary><strong>Step 1 — Create or Open a Project</strong></summary>
589
+
590
+ When you first open Dr. Claw you will see the **Projects** sidebar. You have two options:
591
+
592
+ - **Open an existing project** — Dr. Claw auto-discovers registered projects and linked sessions from Claude Code, Codex, and Gemini.
593
+ - **Create a new project** — Click the **"+"** button, choose a directory on your machine, and Dr. Claw will set up the workspace: agent folders such as `.claude/`, `.agents/`, `.gemini/`, standard workspace metadata, linked `skills/` directories, preset research dirs (`Survey/references`, `Survey/reports`, `Ideation/ideas`, `Ideation/references`, `Experiment/code_references`, `Experiment/datasets`, `Experiment/core_code`, `Experiment/analysis`, `Publication/paper`, `Promotion/homepage`, `Promotion/slides`, `Promotion/audio`, `Promotion/video`), and **instance.json** at the project root with absolute paths for those directories. Cursor agent support is coming soon.
594
+
595
+ > **Default project storage path:** New projects are stored under `~/dr-claw` by default. You can change this in **Settings → Appearance → Default Project Path**, or set the `WORKSPACES_ROOT` environment variable. The setting is persisted in `~/.claude/project-config.json`.
596
+
597
+ </details>
598
+
599
+ <details>
600
+ <summary><strong>Step 2 — Generate Your Research Pipeline via Chat</strong></summary>
601
+
602
+ After creating or opening a project, Dr. Claw opens **Chat** by default. If no research pipeline exists yet, an onboarding banner appears with a **Use in Chat** button that injects a starter prompt.
603
+
604
+ <details>
605
+ <summary><strong>Chat Screenshot</strong></summary>
606
+
607
+ <p align="center">
608
+ <img src="public/screenshots/chat.png" alt="Chat interface" width="1000">
609
+ </p>
610
+
611
+ </details>
612
+
613
+ Describe your research idea — even a rough one is fine. The agent uses the `inno-pipeline-planner` skill to ask clarifying questions and then generates:
614
+ - `.pipeline/docs/research_brief.json` (your structured research brief)
615
+ - `.pipeline/tasks/tasks.json` (the task pipeline)
616
+
617
+ </details>
618
+
619
+ <details>
620
+ <summary><strong>Step 3 — Review in Research Lab and Execute Tasks</strong></summary>
621
+
622
+ Switch to **Research Lab** to review the generated tasks, progress metrics, and artifacts. Then execute tasks:
623
+
624
+ <details>
625
+ <summary><strong>Task Execution Screenshot</strong></summary>
626
+
627
+ <p align="center">
628
+ <img src="public/screenshots/task_list.png" alt="Task list and execution flow" width="1000">
629
+ </p>
630
+
631
+ </details>
632
+
633
+ 1. Choose a CLI backend from the **CLI selector** (Claude Code, Gemini CLI, or Codex).
634
+ 2. In **Research Lab**, click **Go to Chat** or **Use in Chat** on a pending task.
635
+ 3. The agent executes the task and writes results back to the project.
636
+
637
+ </details>
638
+
639
+ <details>
640
+ <summary><strong>Optional — Run Auto Research from the Project Dashboard</strong></summary>
641
+
642
+ If you want Dr. Claw to execute the generated task list end-to-end for you, use **Auto Research**:
643
+ 1. Open **Settings → Email** and configure `Notification Email`, `Sender Email`, and `Resend API Key`.
644
+ 2. Make sure your project already contains `.pipeline/docs/research_brief.json` and `.pipeline/tasks/tasks.json`.
645
+ 3. Open the **Project Dashboard** and click **Auto Research** on the project card.
646
+ 4. Use **Open Session** to jump into the live Claude session created for the run.
647
+ 5. When all tasks finish, Dr. Claw sends a completion email. If the session is interrupted, stale runs are recovered automatically so they can be cancelled cleanly instead of staying stuck in `running`.
648
+
649
+ </details>
650
+
651
+ <a id="troubleshooting-web-search"></a>
652
+ <details>
653
+ <summary><strong>Step 4 — Troubleshooting Web Search</strong></summary>
654
+
655
+ If the agent cannot search webpages, your current permission settings are likely too restrictive. Also check whether a runtime network lock is still active for the process.
656
+
657
+ 1. Check the runtime network lock:
658
+ ```bash
659
+ echo "${CODEX_SANDBOX_NETWORK_DISABLED:-0}"
660
+ ```
661
+
662
+ If the output is `1`, network requests can remain blocked even if Settings permissions are opened. Remove or override this variable in your deployment or startup layer (shell profile, systemd, Docker, PM2), then restart Dr. Claw.
663
+
664
+ 2. Open **Settings** (gear icon in sidebar).
665
+ 3. Go to **Permissions**, then choose your current agent:
666
+ - **Claude Code**:
667
+ - Enable `WebSearch` and `WebFetch` in **Allowed Tools**.
668
+ - Ensure they are not present in **Blocked Tools**.
669
+ - Optionally enable **Skip permission prompts** if you want fewer confirmations.
670
+ - **Gemini CLI**:
671
+ - Choose an appropriate **Permission Mode**.
672
+ - Allow `google_web_search` and `web_fetch` in **Allowed Tools** when web access is required.
673
+ - Ensure they are not present in **Blocked Tools**.
674
+ - **Codex**:
675
+ - In **Permission Mode**, switch to **Bypass Permissions** when web access is required.
676
+ 4. Return to **Chat**, start a new message, and retry your web-search prompt.
677
+
678
+ Codex permission mode notes:
679
+ - **Default / Accept Edits**: sandboxed execution; network may still be restricted by session policy.
680
+ - **Bypass Permissions**: `sandboxMode=danger-full-access` with full disk and network access.
681
+
682
+ Security note:
683
+ - Use permissive settings only in trusted projects/environments.
684
+ - After finishing web search tasks, switch back to safer settings.
685
+
686
+ </details>
687
+
688
+ <details>
689
+ <summary><strong>Step 5 — Resolve "Workspace Trust" or First-Run Errors</strong></summary>
690
+
691
+ Each agent may require a one-time trust confirmation before it can execute code in your project directory. If Chat freezes or shows a trust prompt, switch to the **Shell** tab inside Dr. Claw and approve the prompt there.
692
+
693
+ Steps:
694
+ 1. Switch to the **Shell** tab in Dr. Claw.
695
+ 2. Approve the trust/auth prompt shown in Shell.
696
+ 3. Return to **Chat** and resend your message.
697
+
698
+ By default, trust flow is already enabled in Dr. Claw, so you usually do **not** need to manually run extra trust commands.
699
+
700
+ The trust decision is persisted per directory — you only need to do this once per project.
701
+
702
+ > **Shell tab not working?** If the Shell tab shows `Error: posix_spawnp failed`, see [docs/faq.md](docs/faq.md) for the fix, then retry.
703
+
704
+ You can switch tabs at any time:
705
+
706
+ | Tab | What it does |
707
+ |-----|-------------|
708
+ | **Chat** | Start here. Use it to describe your research idea, generate a pipeline, and run tasks with the selected agent. |
709
+ | **Survey** | Review papers, literature graphs, notes, and survey-stage tasks for the current project. |
710
+ | **Research Lab** | Review the research brief, task list, progress, and generated artifacts in one place. |
711
+ | **Skills** | Browse installed skills, inspect their contents, and import additional local skills. |
712
+ | **Compute** | Manage compute resources and run experiment workloads from one place. |
713
+ | **Shell** | Use the embedded terminal when you need direct CLI access, trust prompts, or manual commands. |
714
+ | **Files** | Browse, open, create, rename, and edit project files with syntax highlighting. |
715
+ | **Git** | Inspect diffs, stage changes, commit, and switch branches without leaving the app. |
716
+
717
+ </details>
718
+
719
+ <details>
720
+ <summary><strong>Research Skills</strong></summary>
721
+
722
+ Dr. Claw now uses the generated **Pipeline Task List** as the execution flow.
723
+ The project includes **100+ skills** under `skills/` to support research tasks (idea exploration, code survey, experiment development/analysis, writing, review, and delivery).
724
+ These skills are discovered by the agent and can be applied as task-level assistance throughout the workflow.
725
+
726
+ </details>
727
+
728
+ ## Additional Details
729
+ <details>
730
+ <summary><span style="font-size: 1.17em; font-weight: 600;">Mobile, architecture, and security notes</span></summary>
731
+
732
+ ### Mobile & Tablet
733
+
734
+ Dr. Claw is fully responsive. On mobile devices:
735
+
736
+ - **Bottom tab bar** for thumb-friendly navigation
737
+ - **Swipe gestures** and touch-optimized controls
738
+ - **Add to Home Screen** to use it as a PWA (Progressive Web App)
739
+
740
+ ### Architecture
741
+
742
+ #### System Overview
743
+
744
+ ```
745
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
746
+ │ Frontend │ │ Backend │ │ Agent │
747
+ │ (React/Vite) │◄──►│ (Express/WS) │◄──►│ Integration │
748
+ │ │ │ │ │ │
749
+ └─────────────────┘ └─────────────────┘ └─────────────────┘
750
+ ```
751
+
752
+ #### Backend (Node.js + Express)
753
+ - **Express Server** - RESTful API with static file serving
754
+ - **WebSocket Server** - Communication for chats and project refresh
755
+ - **Agent Integration (Claude Code, Gemini CLI, Codex, OpenRouter)** - Process spawning, streaming, and session management
756
+ - **File System API** - Exposing file browser for projects
757
+
758
+ #### Frontend (React + Vite)
759
+ - **React 18** - Modern component architecture with hooks
760
+ - **CodeMirror** - Advanced code editor with syntax highlighting
761
+
762
+ ### Security & Tools Configuration
763
+
764
+ **🔒 Important Notice**: Agent permissions are configurable per provider. Review **Settings → Permissions** before enabling broad file, shell, or web access.
765
+
766
+ #### Enabling Tools
767
+
768
+ To use web and tool-heavy workflows safely:
769
+
770
+ 1. **Open Settings** - Click the gear icon in the sidebar
771
+ 2. **Choose an Agent** - Claude Code, Gemini CLI, or Codex
772
+ 3. **Enable Selectively** - Turn on only the tools or permission mode you need
773
+ 4. **Apply Settings** - Your preferences are saved locally
774
+
775
+ **Recommended approach**: Start with the safest permission mode that still lets you complete the task, then relax settings only when needed.
776
+
777
+ </details>
778
+
779
+ ## Contributing
780
+ <details>
781
+ <summary><span style="font-size: 1.17em; font-weight: 600;">Show details</span></summary>
782
+
783
+ We welcome contributions! Please follow these guidelines:
784
+
785
+ #### Getting Started
786
+ 1. **Fork** the repository
787
+ 2. **Clone** your fork: `git clone <your-fork-url>`
788
+ 3. **Install** dependencies: `npm install`
789
+ 4. **Create** a feature branch: `git checkout -b feature/amazing-feature`
790
+
791
+ #### Development Process
792
+ 1. **Make your changes** following the existing code style
793
+ 2. **Test thoroughly** - ensure all features work correctly
794
+ 3. **Run quality checks**: `npm run typecheck && npm run build`
795
+ 4. **Commit** with descriptive messages following [Conventional Commits](https://conventionalcommits.org/)
796
+ 5. **Push** to your branch: `git push origin feature/amazing-feature`
797
+ 6. **Submit** a Pull Request with:
798
+ - Clear description of changes
799
+ - Screenshots for UI changes
800
+ - Test results if applicable
801
+
802
+ #### What to Contribute
803
+ - **Bug fixes** - Help us improve stability
804
+ - **New features** - Enhance functionality (discuss in issues first)
805
+ - **Documentation** - Improve guides and API docs
806
+ - **UI/UX improvements** - Better user experience
807
+ - **Performance optimizations** - Make it faster
808
+
809
+ </details>
810
+
811
+ For setup help and troubleshooting, see [FAQ](docs/faq.md).
812
+
813
+ ## Legacy Compatibility & Deprecation
814
+
815
+ Dr. Claw was previously known as **VibeLab**. For users migrating from VibeLab, we provide a compatibility layer during the transition phase:
816
+
817
+ - **CLI Alias**: The `vibelab` command is still supported as an alias for `drclaw` but will issue a deprecation warning.
818
+ - **Python Package**: The `VibeLab` class in the `agent-harness` is deprecated; please use the `DrClaw` class instead.
819
+ - **Session Files**: The CLI now defaults to `~/.drclaw_session.json` but will automatically check for and migrate `~/.vibelab_session.json` if found.
820
+ - **Environment Variables**: `DRCLAW_URL` and `DRCLAW_TOKEN` are preferred, but `VIBELAB_URL` and `VIBELAB_TOKEN` are still supported as fallbacks.
821
+
822
+ **Timeline**: We plan to remove legacy `vibelab` support in Version 2.0 (estimated Q3 2026). Please update your scripts and integrations as soon as possible.
823
+
824
+ ## License
825
+
826
+ This repository contains a combined work.
827
+
828
+ Upstream portions derived from Claude Code UI remain under GNU General Public License v3.0 (GPL-3.0), while original modifications and additions by Dr. Claw Contributors are licensed under GNU Affero General Public License v3.0 (AGPL-3.0).
829
+
830
+ See [LICENSE](LICENSE) and [NOTICE](NOTICE) for the full license texts and scope details.
831
+
832
+ ## Citation
833
+
834
+ If you find Dr. Claw useful in your research, please cite:
835
+
836
+ ```bibtex
837
+ @misc{song2026drclaw,
838
+ author = {Dingjie Song and Hanrong Zhang and Dawei Liu and Yixin Liu and Zongxia Li and Zhengqing Yuan and Siqi Zhang and Lichao Sun},
839
+ title = {Dr. Claw: An AI Research Workspace from Idea to Paper},
840
+ year = {2026},
841
+ organization = {GitHub},
842
+ url = {https://github.com/OpenLAIR/dr-claw},
843
+ homepage = {https://openlair.github.io/dr-claw},
844
+ }
845
+ ```
846
+
847
+ ## Acknowledgments
848
+
849
+ ### Built With
850
+ - **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** - Anthropic's official CLI
851
+ - **[Gemini CLI](https://geminicli.com/docs/get-started/installation/)** - Google's Gemini command-line agent
852
+ - **[Codex](https://developers.openai.com/codex)** - OpenAI Codex
853
+ - **[React](https://react.dev/)** - User interface library
854
+ - **[Vite](https://vitejs.dev/)** - Fast build tool and dev server
855
+ - **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first CSS framework
856
+ - **[CodeMirror](https://codemirror.net/)** - Advanced code editor
857
+
858
+ ### Also Thanks To
859
+ - **[Claude Code UI](https://github.com/siteboon/claudecodeui)** — Dr. Claw is based on it. See [NOTICE](NOTICE) for details.
860
+ - **[AI Researcher](https://github.com/HKUDS/AI-Researcher/)** (HKUDS) — Inspiration for research workflow and agentic research.
861
+ - **[Vibe-Scholar](https://github.com/Mr-Tieguigui/Vibe-Scholar)** — Inspiration for the AI-native research workspace direction.
862
+ - **[autoresearch](https://github.com/karpathy/autoresearch)** — Inspiration for autonomous research orchestration and end-to-end execution.
863
+
864
+ ## Support & Community
865
+
866
+ ### Stay Updated
867
+ - **Star** this repository to show support
868
+ - **Watch** for updates and new releases
869
+ - **Follow** the project for announcements
870
+
871
+ ---
872
+
873
+ <div align="center">
874
+ <strong>Dr. Claw — From idea to paper.</strong>
875
+ </div>