clawdbot 2026.1.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 (550) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +297 -0
  5. package/dist/agents/agent-paths.js +17 -0
  6. package/dist/agents/bash-process-registry.js +126 -0
  7. package/dist/agents/bash-tools.js +837 -0
  8. package/dist/agents/clawdbot-tools.js +30 -0
  9. package/dist/agents/clawdis-tools.js +27 -0
  10. package/dist/agents/context.js +34 -0
  11. package/dist/agents/defaults.js +6 -0
  12. package/dist/agents/model-auth.js +112 -0
  13. package/dist/agents/model-catalog.js +55 -0
  14. package/dist/agents/model-fallback.js +191 -0
  15. package/dist/agents/model-scan.js +263 -0
  16. package/dist/agents/model-selection.js +116 -0
  17. package/dist/agents/models-config.js +49 -0
  18. package/dist/agents/pi-embedded-helpers.js +74 -0
  19. package/dist/agents/pi-embedded-runner.js +407 -0
  20. package/dist/agents/pi-embedded-subscribe.js +568 -0
  21. package/dist/agents/pi-embedded-utils.js +20 -0
  22. package/dist/agents/pi-embedded.js +1 -0
  23. package/dist/agents/pi-oauth.js +88 -0
  24. package/dist/agents/pi-tools.js +433 -0
  25. package/dist/agents/sandbox-paths.js +68 -0
  26. package/dist/agents/sandbox.js +644 -0
  27. package/dist/agents/shell-utils.js +53 -0
  28. package/dist/agents/skills-install.js +244 -0
  29. package/dist/agents/skills-status.js +157 -0
  30. package/dist/agents/skills.js +470 -0
  31. package/dist/agents/steerable-agent-loop.js +338 -0
  32. package/dist/agents/steerable-provider-transport.js +48 -0
  33. package/dist/agents/system-prompt.js +104 -0
  34. package/dist/agents/tool-display.js +162 -0
  35. package/dist/agents/tool-images.js +138 -0
  36. package/dist/agents/tools/browser-tool.js +339 -0
  37. package/dist/agents/tools/canvas-tool.js +193 -0
  38. package/dist/agents/tools/common.js +88 -0
  39. package/dist/agents/tools/cron-tool.js +124 -0
  40. package/dist/agents/tools/discord-actions-guild.js +186 -0
  41. package/dist/agents/tools/discord-actions-messaging.js +285 -0
  42. package/dist/agents/tools/discord-actions-moderation.js +70 -0
  43. package/dist/agents/tools/discord-actions.js +56 -0
  44. package/dist/agents/tools/discord-schema.js +199 -0
  45. package/dist/agents/tools/discord-tool.js +16 -0
  46. package/dist/agents/tools/gateway-tool.js +46 -0
  47. package/dist/agents/tools/gateway.js +27 -0
  48. package/dist/agents/tools/image-tool.js +132 -0
  49. package/dist/agents/tools/nodes-tool.js +413 -0
  50. package/dist/agents/tools/nodes-utils.js +92 -0
  51. package/dist/agents/tools/sessions-helpers.js +88 -0
  52. package/dist/agents/tools/sessions-history-tool.js +53 -0
  53. package/dist/agents/tools/sessions-list-tool.js +143 -0
  54. package/dist/agents/tools/sessions-send-helpers.js +100 -0
  55. package/dist/agents/tools/sessions-send-tool.js +347 -0
  56. package/dist/agents/tools/slack-actions.js +129 -0
  57. package/dist/agents/tools/slack-schema.js +59 -0
  58. package/dist/agents/tools/slack-tool.js +16 -0
  59. package/dist/agents/usage.js +39 -0
  60. package/dist/agents/workspace.js +241 -0
  61. package/dist/auto-reply/chunk.js +76 -0
  62. package/dist/auto-reply/envelope.js +38 -0
  63. package/dist/auto-reply/group-activation.js +20 -0
  64. package/dist/auto-reply/heartbeat.js +57 -0
  65. package/dist/auto-reply/model.js +14 -0
  66. package/dist/auto-reply/reply/abort.js +14 -0
  67. package/dist/auto-reply/reply/agent-runner.js +371 -0
  68. package/dist/auto-reply/reply/block-streaming.js +34 -0
  69. package/dist/auto-reply/reply/body.js +29 -0
  70. package/dist/auto-reply/reply/commands.js +207 -0
  71. package/dist/auto-reply/reply/directive-handling.js +361 -0
  72. package/dist/auto-reply/reply/directives.js +47 -0
  73. package/dist/auto-reply/reply/followup-runner.js +149 -0
  74. package/dist/auto-reply/reply/groups.js +91 -0
  75. package/dist/auto-reply/reply/mentions.js +38 -0
  76. package/dist/auto-reply/reply/model-selection.js +114 -0
  77. package/dist/auto-reply/reply/queue.js +399 -0
  78. package/dist/auto-reply/reply/reply-tags.js +26 -0
  79. package/dist/auto-reply/reply/session-updates.js +87 -0
  80. package/dist/auto-reply/reply/session.js +160 -0
  81. package/dist/auto-reply/reply/typing.js +75 -0
  82. package/dist/auto-reply/reply.js +535 -0
  83. package/dist/auto-reply/send-policy.js +28 -0
  84. package/dist/auto-reply/status.js +158 -0
  85. package/dist/auto-reply/templating.js +9 -0
  86. package/dist/auto-reply/thinking.js +49 -0
  87. package/dist/auto-reply/tokens.js +2 -0
  88. package/dist/auto-reply/tool-meta.js +74 -0
  89. package/dist/auto-reply/transcription.js +57 -0
  90. package/dist/auto-reply/types.js +1 -0
  91. package/dist/browser/bridge-server.js +37 -0
  92. package/dist/browser/cdp.js +382 -0
  93. package/dist/browser/chrome.js +432 -0
  94. package/dist/browser/client-actions-core.js +67 -0
  95. package/dist/browser/client-actions-observe.js +24 -0
  96. package/dist/browser/client-actions-types.js +1 -0
  97. package/dist/browser/client-actions.js +3 -0
  98. package/dist/browser/client-fetch.js +43 -0
  99. package/dist/browser/client.js +105 -0
  100. package/dist/browser/config.js +140 -0
  101. package/dist/browser/constants.js +4 -0
  102. package/dist/browser/profiles-service.js +122 -0
  103. package/dist/browser/profiles.js +85 -0
  104. package/dist/browser/pw-ai.js +2 -0
  105. package/dist/browser/pw-session.js +144 -0
  106. package/dist/browser/pw-tools-core.js +363 -0
  107. package/dist/browser/routes/agent.js +535 -0
  108. package/dist/browser/routes/basic.js +155 -0
  109. package/dist/browser/routes/index.js +8 -0
  110. package/dist/browser/routes/tabs.js +105 -0
  111. package/dist/browser/routes/utils.js +62 -0
  112. package/dist/browser/screenshot.js +40 -0
  113. package/dist/browser/server-context.js +377 -0
  114. package/dist/browser/server.js +81 -0
  115. package/dist/browser/target-id.js +18 -0
  116. package/dist/browser/trash.js +21 -0
  117. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  118. package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
  119. package/dist/canvas-host/a2ui/index.html +246 -0
  120. package/dist/canvas-host/a2ui.js +187 -0
  121. package/dist/canvas-host/server.js +382 -0
  122. package/dist/cli/browser-cli-actions-input.js +459 -0
  123. package/dist/cli/browser-cli-actions-observe.js +56 -0
  124. package/dist/cli/browser-cli-examples.js +31 -0
  125. package/dist/cli/browser-cli-inspect.js +97 -0
  126. package/dist/cli/browser-cli-manage.js +286 -0
  127. package/dist/cli/browser-cli-shared.js +1 -0
  128. package/dist/cli/browser-cli.js +26 -0
  129. package/dist/cli/canvas-cli.js +416 -0
  130. package/dist/cli/cron-cli.js +454 -0
  131. package/dist/cli/deps.js +17 -0
  132. package/dist/cli/dns-cli.js +180 -0
  133. package/dist/cli/gateway-cli.js +489 -0
  134. package/dist/cli/gateway-rpc.js +20 -0
  135. package/dist/cli/hooks-cli.js +135 -0
  136. package/dist/cli/models-cli.js +248 -0
  137. package/dist/cli/nodes-camera.js +57 -0
  138. package/dist/cli/nodes-canvas.js +26 -0
  139. package/dist/cli/nodes-cli.js +946 -0
  140. package/dist/cli/nodes-screen.js +37 -0
  141. package/dist/cli/parse-duration.js +20 -0
  142. package/dist/cli/ports.js +97 -0
  143. package/dist/cli/program.js +406 -0
  144. package/dist/cli/prompt.js +19 -0
  145. package/dist/cli/tui-cli.js +35 -0
  146. package/dist/cli/wait.js +8 -0
  147. package/dist/commands/agent.js +645 -0
  148. package/dist/commands/antigravity-oauth.js +327 -0
  149. package/dist/commands/configure.js +480 -0
  150. package/dist/commands/doctor.js +484 -0
  151. package/dist/commands/health.js +108 -0
  152. package/dist/commands/models/aliases.js +64 -0
  153. package/dist/commands/models/fallbacks.js +99 -0
  154. package/dist/commands/models/image-fallbacks.js +99 -0
  155. package/dist/commands/models/list.js +323 -0
  156. package/dist/commands/models/scan.js +266 -0
  157. package/dist/commands/models/set-image.js +23 -0
  158. package/dist/commands/models/set.js +23 -0
  159. package/dist/commands/models/shared.js +72 -0
  160. package/dist/commands/models.js +7 -0
  161. package/dist/commands/onboard-auth.js +70 -0
  162. package/dist/commands/onboard-helpers.js +295 -0
  163. package/dist/commands/onboard-interactive.js +17 -0
  164. package/dist/commands/onboard-non-interactive.js +202 -0
  165. package/dist/commands/onboard-providers.js +634 -0
  166. package/dist/commands/onboard-remote.js +120 -0
  167. package/dist/commands/onboard-skills.js +148 -0
  168. package/dist/commands/onboard-types.js +1 -0
  169. package/dist/commands/onboard.js +12 -0
  170. package/dist/commands/send.js +124 -0
  171. package/dist/commands/sessions.js +212 -0
  172. package/dist/commands/setup.js +58 -0
  173. package/dist/commands/signal-install.js +135 -0
  174. package/dist/commands/status.js +207 -0
  175. package/dist/commands/update.js +16 -0
  176. package/dist/config/config.js +6 -0
  177. package/dist/config/defaults.js +61 -0
  178. package/dist/config/io.js +147 -0
  179. package/dist/config/legacy-migrate.js +13 -0
  180. package/dist/config/legacy.js +159 -0
  181. package/dist/config/paths.js +71 -0
  182. package/dist/config/schema.js +150 -0
  183. package/dist/config/sessions.js +282 -0
  184. package/dist/config/talk.js +31 -0
  185. package/dist/config/types.js +1 -0
  186. package/dist/config/validation.js +29 -0
  187. package/dist/config/zod-schema.js +831 -0
  188. package/dist/control-ui/assets/index-BFID3yAA.css +1 -0
  189. package/dist/control-ui/assets/index-CE_axlTS.js +2235 -0
  190. package/dist/control-ui/assets/index-CE_axlTS.js.map +1 -0
  191. package/dist/control-ui/index.html +15 -0
  192. package/dist/cron/isolated-agent.js +499 -0
  193. package/dist/cron/run-log.js +72 -0
  194. package/dist/cron/schedule.js +24 -0
  195. package/dist/cron/service.js +471 -0
  196. package/dist/cron/store.js +43 -0
  197. package/dist/cron/types.js +1 -0
  198. package/dist/daemon/constants.js +10 -0
  199. package/dist/daemon/launchd.js +276 -0
  200. package/dist/daemon/legacy.js +63 -0
  201. package/dist/daemon/program-args.js +76 -0
  202. package/dist/daemon/schtasks.js +257 -0
  203. package/dist/daemon/service.js +60 -0
  204. package/dist/daemon/systemd.js +266 -0
  205. package/dist/discord/index.js +2 -0
  206. package/dist/discord/monitor.js +1188 -0
  207. package/dist/discord/probe.js +54 -0
  208. package/dist/discord/send.js +577 -0
  209. package/dist/discord/token.js +8 -0
  210. package/dist/gateway/auth.js +121 -0
  211. package/dist/gateway/call.js +94 -0
  212. package/dist/gateway/chat-attachments.js +41 -0
  213. package/dist/gateway/client.js +180 -0
  214. package/dist/gateway/config-reload.js +274 -0
  215. package/dist/gateway/control-ui.js +184 -0
  216. package/dist/gateway/hooks-mapping.js +282 -0
  217. package/dist/gateway/hooks.js +168 -0
  218. package/dist/gateway/net.js +29 -0
  219. package/dist/gateway/protocol/index.js +61 -0
  220. package/dist/gateway/protocol/schema.js +560 -0
  221. package/dist/gateway/server-bridge-subscriptions.js +93 -0
  222. package/dist/gateway/server-bridge.js +1013 -0
  223. package/dist/gateway/server-browser.js +12 -0
  224. package/dist/gateway/server-chat.js +159 -0
  225. package/dist/gateway/server-constants.js +8 -0
  226. package/dist/gateway/server-discovery.js +62 -0
  227. package/dist/gateway/server-http.js +165 -0
  228. package/dist/gateway/server-methods/agent-job.js +125 -0
  229. package/dist/gateway/server-methods/agent.js +250 -0
  230. package/dist/gateway/server-methods/chat.js +200 -0
  231. package/dist/gateway/server-methods/config.js +50 -0
  232. package/dist/gateway/server-methods/connect.js +6 -0
  233. package/dist/gateway/server-methods/cron.js +83 -0
  234. package/dist/gateway/server-methods/health.js +28 -0
  235. package/dist/gateway/server-methods/models.js +16 -0
  236. package/dist/gateway/server-methods/nodes.js +294 -0
  237. package/dist/gateway/server-methods/providers.js +217 -0
  238. package/dist/gateway/server-methods/send.js +166 -0
  239. package/dist/gateway/server-methods/sessions.js +305 -0
  240. package/dist/gateway/server-methods/skills.js +83 -0
  241. package/dist/gateway/server-methods/system.js +118 -0
  242. package/dist/gateway/server-methods/talk.js +22 -0
  243. package/dist/gateway/server-methods/types.js +1 -0
  244. package/dist/gateway/server-methods/voicewake.js +30 -0
  245. package/dist/gateway/server-methods/web.js +58 -0
  246. package/dist/gateway/server-methods/wizard.js +100 -0
  247. package/dist/gateway/server-methods.js +53 -0
  248. package/dist/gateway/server-providers.js +644 -0
  249. package/dist/gateway/server-shared.js +1 -0
  250. package/dist/gateway/server-utils.js +35 -0
  251. package/dist/gateway/server.js +1437 -0
  252. package/dist/gateway/session-utils.js +216 -0
  253. package/dist/gateway/ws-log.js +349 -0
  254. package/dist/gateway/ws-logging.js +8 -0
  255. package/dist/globals.js +41 -0
  256. package/dist/hooks/gmail-ops.js +236 -0
  257. package/dist/hooks/gmail-setup-utils.js +278 -0
  258. package/dist/hooks/gmail-watcher.js +175 -0
  259. package/dist/hooks/gmail.js +177 -0
  260. package/dist/imessage/client.js +165 -0
  261. package/dist/imessage/index.js +3 -0
  262. package/dist/imessage/monitor.js +272 -0
  263. package/dist/imessage/probe.js +26 -0
  264. package/dist/imessage/send.js +83 -0
  265. package/dist/imessage/targets.js +176 -0
  266. package/dist/index.js +50 -0
  267. package/dist/infra/agent-events.js +46 -0
  268. package/dist/infra/binaries.js +9 -0
  269. package/dist/infra/bonjour-discovery.js +163 -0
  270. package/dist/infra/bonjour.js +200 -0
  271. package/dist/infra/bridge/server.js +562 -0
  272. package/dist/infra/canvas-host-url.js +54 -0
  273. package/dist/infra/env.js +8 -0
  274. package/dist/infra/errors.js +28 -0
  275. package/dist/infra/gateway-lock.js +8 -0
  276. package/dist/infra/heartbeat-events.js +21 -0
  277. package/dist/infra/heartbeat-runner.js +453 -0
  278. package/dist/infra/heartbeat-wake.js +61 -0
  279. package/dist/infra/is-main.js +37 -0
  280. package/dist/infra/machine-name.js +40 -0
  281. package/dist/infra/node-pairing.js +211 -0
  282. package/dist/infra/pam.js +42 -0
  283. package/dist/infra/path-env.js +92 -0
  284. package/dist/infra/ports.js +87 -0
  285. package/dist/infra/provider-summary.js +80 -0
  286. package/dist/infra/restart.js +29 -0
  287. package/dist/infra/retry.js +16 -0
  288. package/dist/infra/runtime-guard.js +59 -0
  289. package/dist/infra/system-events.js +44 -0
  290. package/dist/infra/system-presence.js +216 -0
  291. package/dist/infra/tailnet.js +46 -0
  292. package/dist/infra/tailscale.js +149 -0
  293. package/dist/infra/voicewake.js +77 -0
  294. package/dist/infra/widearea-dns.js +123 -0
  295. package/dist/infra/ws.js +13 -0
  296. package/dist/logger.js +52 -0
  297. package/dist/logging.js +490 -0
  298. package/dist/macos/gateway-daemon.js +141 -0
  299. package/dist/macos/relay.js +46 -0
  300. package/dist/media/constants.js +33 -0
  301. package/dist/media/host.js +42 -0
  302. package/dist/media/image-ops.js +121 -0
  303. package/dist/media/mime.js +115 -0
  304. package/dist/media/parse.js +81 -0
  305. package/dist/media/server.js +64 -0
  306. package/dist/media/store.js +139 -0
  307. package/dist/process/command-queue.js +97 -0
  308. package/dist/process/exec.js +75 -0
  309. package/dist/protocol.schema.json +2918 -0
  310. package/dist/provider-web.js +8 -0
  311. package/dist/providers/web/index.js +2 -0
  312. package/dist/runtime.js +8 -0
  313. package/dist/sessions/send-policy.js +68 -0
  314. package/dist/signal/client.js +134 -0
  315. package/dist/signal/daemon.js +69 -0
  316. package/dist/signal/index.js +3 -0
  317. package/dist/signal/monitor.js +336 -0
  318. package/dist/signal/probe.js +46 -0
  319. package/dist/signal/send.js +91 -0
  320. package/dist/slack/actions.js +97 -0
  321. package/dist/slack/index.js +5 -0
  322. package/dist/slack/monitor.js +1029 -0
  323. package/dist/slack/probe.js +47 -0
  324. package/dist/slack/send.js +131 -0
  325. package/dist/slack/token.js +10 -0
  326. package/dist/telegram/bot.js +394 -0
  327. package/dist/telegram/download.js +34 -0
  328. package/dist/telegram/index.js +4 -0
  329. package/dist/telegram/monitor.js +47 -0
  330. package/dist/telegram/probe.js +63 -0
  331. package/dist/telegram/proxy.js +9 -0
  332. package/dist/telegram/send.js +138 -0
  333. package/dist/telegram/token.js +30 -0
  334. package/dist/telegram/webhook-set.js +12 -0
  335. package/dist/telegram/webhook.js +56 -0
  336. package/dist/tui/commands.js +74 -0
  337. package/dist/tui/components/assistant-message.js +16 -0
  338. package/dist/tui/components/chat-log.js +92 -0
  339. package/dist/tui/components/custom-editor.js +53 -0
  340. package/dist/tui/components/selectors.js +8 -0
  341. package/dist/tui/components/tool-execution.js +111 -0
  342. package/dist/tui/components/user-message.js +17 -0
  343. package/dist/tui/gateway-chat.js +140 -0
  344. package/dist/tui/layout.js +41 -0
  345. package/dist/tui/message-list.js +57 -0
  346. package/dist/tui/theme/theme.js +80 -0
  347. package/dist/tui/theme.js +25 -0
  348. package/dist/tui/tui.js +708 -0
  349. package/dist/utils.js +133 -0
  350. package/dist/version.js +18 -0
  351. package/dist/web/active-listener.js +7 -0
  352. package/dist/web/auto-reply.js +1203 -0
  353. package/dist/web/inbound.js +481 -0
  354. package/dist/web/login-qr.js +204 -0
  355. package/dist/web/login.js +59 -0
  356. package/dist/web/media.js +148 -0
  357. package/dist/web/outbound.js +67 -0
  358. package/dist/web/qr-image.js +97 -0
  359. package/dist/web/reconnect.js +60 -0
  360. package/dist/web/reply-heartbeat-wake.js +61 -0
  361. package/dist/web/session.js +346 -0
  362. package/dist/wizard/clack-prompter.js +56 -0
  363. package/dist/wizard/onboarding.js +452 -0
  364. package/dist/wizard/prompts.js +6 -0
  365. package/dist/wizard/session.js +203 -0
  366. package/docs/AGENTS.default.md +116 -0
  367. package/docs/CNAME +1 -0
  368. package/docs/RELEASING.md +64 -0
  369. package/docs/_config.yml +51 -0
  370. package/docs/_layouts/default.html +145 -0
  371. package/docs/agent-send.md +21 -0
  372. package/docs/agent.md +104 -0
  373. package/docs/android/connect.md +131 -0
  374. package/docs/architecture.md +89 -0
  375. package/docs/assets/markdown.css +130 -0
  376. package/docs/assets/pixel-lobster.svg +60 -0
  377. package/docs/assets/terminal.css +497 -0
  378. package/docs/assets/theme.js +55 -0
  379. package/docs/audio.md +50 -0
  380. package/docs/background-process.md +74 -0
  381. package/docs/bash.md +32 -0
  382. package/docs/bonjour.md +159 -0
  383. package/docs/browser.md +289 -0
  384. package/docs/camera.md +152 -0
  385. package/docs/clawd.md +199 -0
  386. package/docs/clawdbot-mac.md +104 -0
  387. package/docs/configuration.md +1177 -0
  388. package/docs/control-api.md +49 -0
  389. package/docs/control-ui.md +83 -0
  390. package/docs/cron.md +374 -0
  391. package/docs/dashboard.md +17 -0
  392. package/docs/device-models.md +46 -0
  393. package/docs/discord.md +293 -0
  394. package/docs/discovery.md +112 -0
  395. package/docs/docker.md +251 -0
  396. package/docs/docs.json +86 -0
  397. package/docs/doctor.md +47 -0
  398. package/docs/elevated.md +31 -0
  399. package/docs/faq.md +640 -0
  400. package/docs/gateway/pairing.md +109 -0
  401. package/docs/gateway-lock.md +28 -0
  402. package/docs/gateway.md +174 -0
  403. package/docs/gmail-pubsub.md +191 -0
  404. package/docs/grammy.md +27 -0
  405. package/docs/group-messages.md +71 -0
  406. package/docs/groups.md +78 -0
  407. package/docs/health.md +28 -0
  408. package/docs/heartbeat.md +64 -0
  409. package/docs/images.md +52 -0
  410. package/docs/imessage.md +63 -0
  411. package/docs/index.md +182 -0
  412. package/docs/ios/connect.md +177 -0
  413. package/docs/ios/spec.md +236 -0
  414. package/docs/location-command.md +95 -0
  415. package/docs/logging.md +99 -0
  416. package/docs/lore.md +131 -0
  417. package/docs/mac/bun.md +133 -0
  418. package/docs/mac/canvas.md +161 -0
  419. package/docs/mac/child-process.md +72 -0
  420. package/docs/mac/dev-setup.md +81 -0
  421. package/docs/mac/health.md +28 -0
  422. package/docs/mac/icon.md +26 -0
  423. package/docs/mac/logging.md +51 -0
  424. package/docs/mac/menu-bar.md +69 -0
  425. package/docs/mac/peekaboo.md +170 -0
  426. package/docs/mac/permissions.md +40 -0
  427. package/docs/mac/release.md +76 -0
  428. package/docs/mac/remote.md +57 -0
  429. package/docs/mac/signing.md +41 -0
  430. package/docs/mac/skills.md +27 -0
  431. package/docs/mac/voice-overlay.md +52 -0
  432. package/docs/mac/voicewake.md +56 -0
  433. package/docs/mac/webchat.md +27 -0
  434. package/docs/mac/xpc.md +40 -0
  435. package/docs/models.md +90 -0
  436. package/docs/nix.md +49 -0
  437. package/docs/nodes.md +157 -0
  438. package/docs/onboarding-config-protocol.md +29 -0
  439. package/docs/onboarding.md +185 -0
  440. package/docs/presence.md +133 -0
  441. package/docs/queue.md +78 -0
  442. package/docs/refactor/browser-control-simplification.md +58 -0
  443. package/docs/refactor/canvas-a2ui.md +93 -0
  444. package/docs/refactor/cli-unification.md +64 -0
  445. package/docs/refactor/gateway-client.md +31 -0
  446. package/docs/refactor/gateway.md +99 -0
  447. package/docs/refactor/new-arch.md +171 -0
  448. package/docs/refactor/tui.md +26 -0
  449. package/docs/refactor/web-gateway-troubleshooting.md +37 -0
  450. package/docs/refactor/webagent-session.md +46 -0
  451. package/docs/remote-gateway-readme.md +148 -0
  452. package/docs/remote.md +66 -0
  453. package/docs/research/memory.md +227 -0
  454. package/docs/rpc.md +35 -0
  455. package/docs/security.md +168 -0
  456. package/docs/session-tool.md +119 -0
  457. package/docs/session.md +84 -0
  458. package/docs/sessions.md +8 -0
  459. package/docs/setup.md +118 -0
  460. package/docs/signal.md +113 -0
  461. package/docs/skills-config.md +58 -0
  462. package/docs/skills.md +149 -0
  463. package/docs/slack.md +158 -0
  464. package/docs/surface.md +20 -0
  465. package/docs/tailscale.md +71 -0
  466. package/docs/talk.md +79 -0
  467. package/docs/telegram.md +90 -0
  468. package/docs/templates/AGENTS.md +126 -0
  469. package/docs/templates/BOOTSTRAP.md +53 -0
  470. package/docs/templates/IDENTITY.md +17 -0
  471. package/docs/templates/SOUL.md +41 -0
  472. package/docs/templates/TOOLS.md +41 -0
  473. package/docs/templates/USER.md +22 -0
  474. package/docs/test.md +35 -0
  475. package/docs/thinking.md +46 -0
  476. package/docs/tools.md +248 -0
  477. package/docs/troubleshooting.md +227 -0
  478. package/docs/tui.md +69 -0
  479. package/docs/typebox.md +42 -0
  480. package/docs/voicewake.md +61 -0
  481. package/docs/web.md +115 -0
  482. package/docs/webchat.md +34 -0
  483. package/docs/webhook.md +132 -0
  484. package/docs/whatsapp-clawd.jpg +0 -0
  485. package/docs/whatsapp.md +142 -0
  486. package/docs/wizard.md +158 -0
  487. package/package.json +186 -0
  488. package/skills/apple-notes/SKILL.md +50 -0
  489. package/skills/apple-reminders/SKILL.md +67 -0
  490. package/skills/bear-notes/SKILL.md +79 -0
  491. package/skills/bird/SKILL.md +25 -0
  492. package/skills/blogwatcher/SKILL.md +46 -0
  493. package/skills/blucli/SKILL.md +27 -0
  494. package/skills/brave-search/SKILL.md +30 -0
  495. package/skills/brave-search/scripts/content.mjs +53 -0
  496. package/skills/brave-search/scripts/search.mjs +79 -0
  497. package/skills/camsnap/SKILL.md +25 -0
  498. package/skills/clawdhub/SKILL.md +53 -0
  499. package/skills/coding-agent/SKILL.md +275 -0
  500. package/skills/discord/SKILL.md +369 -0
  501. package/skills/eightctl/SKILL.md +29 -0
  502. package/skills/food-order/SKILL.md +41 -0
  503. package/skills/gemini/SKILL.md +23 -0
  504. package/skills/gifgrep/SKILL.md +47 -0
  505. package/skills/github/SKILL.md +47 -0
  506. package/skills/gog/SKILL.md +36 -0
  507. package/skills/goplaces/SKILL.md +30 -0
  508. package/skills/imsg/SKILL.md +25 -0
  509. package/skills/local-places/SERVER_README.md +101 -0
  510. package/skills/local-places/SKILL.md +91 -0
  511. package/skills/local-places/pyproject.toml +27 -0
  512. package/skills/local-places/src/local_places/__init__.py +2 -0
  513. package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  514. package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  515. package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  516. package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  517. package/skills/local-places/src/local_places/google_places.py +314 -0
  518. package/skills/local-places/src/local_places/main.py +65 -0
  519. package/skills/local-places/src/local_places/schemas.py +107 -0
  520. package/skills/mcporter/SKILL.md +38 -0
  521. package/skills/nano-banana-pro/SKILL.md +29 -0
  522. package/skills/nano-banana-pro/scripts/generate_image.py +167 -0
  523. package/skills/nano-pdf/SKILL.md +20 -0
  524. package/skills/notion/SKILL.md +156 -0
  525. package/skills/obsidian/SKILL.md +55 -0
  526. package/skills/openai-image-gen/SKILL.md +31 -0
  527. package/skills/openai-image-gen/scripts/gen.py +173 -0
  528. package/skills/openai-whisper/SKILL.md +19 -0
  529. package/skills/openai-whisper-api/SKILL.md +43 -0
  530. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  531. package/skills/openhue/SKILL.md +30 -0
  532. package/skills/oracle/SKILL.md +105 -0
  533. package/skills/ordercli/SKILL.md +47 -0
  534. package/skills/peekaboo/SKILL.md +153 -0
  535. package/skills/qmd/SKILL.md +26 -0
  536. package/skills/sag/SKILL.md +62 -0
  537. package/skills/slack/SKILL.md +143 -0
  538. package/skills/songsee/SKILL.md +29 -0
  539. package/skills/sonoscli/SKILL.md +26 -0
  540. package/skills/spotify-player/SKILL.md +34 -0
  541. package/skills/summarize/SKILL.md +49 -0
  542. package/skills/things-mac/SKILL.md +61 -0
  543. package/skills/tmux/SKILL.md +121 -0
  544. package/skills/tmux/scripts/find-sessions.sh +112 -0
  545. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  546. package/skills/trello/SKILL.md +84 -0
  547. package/skills/video-frames/SKILL.md +29 -0
  548. package/skills/video-frames/scripts/frame.sh +81 -0
  549. package/skills/wacli/SKILL.md +42 -0
  550. package/skills/weather/SKILL.md +49 -0
@@ -0,0 +1,116 @@
1
+ ---
2
+ summary: "Default Clawdbot agent instructions and skills roster for the personal assistant setup"
3
+ read_when:
4
+ - Starting a new Clawdbot agent session
5
+ - Enabling or auditing default skills
6
+ ---
7
+ # AGENTS.md — Clawdbot Personal Assistant (default)
8
+
9
+ ## First run (recommended)
10
+
11
+ Clawdbot uses a dedicated workspace directory for the agent. Default: `~/.clawdbot/workspace`.
12
+
13
+ 1) Create the workspace (if it doesn’t already exist):
14
+
15
+ ```bash
16
+ mkdir -p ~/.clawdbot/workspace
17
+ ```
18
+
19
+ 2) Copy the default workspace templates into the workspace:
20
+
21
+ ```bash
22
+ cp docs/templates/AGENTS.md ~/.clawdbot/workspace/AGENTS.md
23
+ cp docs/templates/SOUL.md ~/.clawdbot/workspace/SOUL.md
24
+ cp docs/templates/TOOLS.md ~/.clawdbot/workspace/TOOLS.md
25
+ ```
26
+
27
+ 3) Optional: if you want the personal assistant skill roster, replace AGENTS.md with this file:
28
+
29
+ ```bash
30
+ cp docs/AGENTS.default.md ~/.clawdbot/workspace/AGENTS.md
31
+ ```
32
+
33
+ 4) Optional: choose a different workspace by setting `agent.workspace` (supports `~`):
34
+
35
+ ```json5
36
+ {
37
+ agent: {
38
+ workspace: "~/clawd"
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Safety defaults
44
+ - Don’t dump directories or secrets into chat.
45
+ - Don’t run destructive commands unless explicitly asked.
46
+ - Don’t send partial/streaming replies to external messaging surfaces (only final replies).
47
+
48
+ ## Session start (required)
49
+ - Read `SOUL.md`, `USER.md`, `memory.md`, and today+yesterday in `memory/`.
50
+ - Do it before responding.
51
+
52
+ ## Soul (required)
53
+ - `SOUL.md` defines identity, tone, and boundaries. Keep it current.
54
+ - If you change `SOUL.md`, tell the user.
55
+ - You are a fresh instance each session; continuity lives in these files.
56
+
57
+ ## Shared spaces (recommended)
58
+ - You’re not the user’s voice; be careful in group chats or public channels.
59
+ - Don’t share private data, contact info, or internal notes.
60
+
61
+ ## Memory system (recommended)
62
+ - Daily log: `memory/YYYY-MM-DD.md` (create `memory/` if needed).
63
+ - Long-term memory: `memory.md` for durable facts, preferences, and decisions.
64
+ - On session start, read today + yesterday + `memory.md` if present.
65
+ - Capture: decisions, preferences, constraints, open loops.
66
+ - Avoid secrets unless explicitly requested.
67
+
68
+ ## Tools & skills
69
+ - Tools live in skills; follow each skill’s `SKILL.md` when you need it.
70
+ - Keep environment-specific notes in `TOOLS.md` (Notes for Skills).
71
+
72
+ ## Backup tip (recommended)
73
+ If you treat this workspace as Clawd’s “memory”, make it a git repo (ideally private) so `AGENTS.md` and your memory files are backed up.
74
+
75
+ ```bash
76
+ cd ~/.clawdbot/workspace
77
+ git init
78
+ git add AGENTS.md
79
+ git commit -m "Add Clawd workspace"
80
+ # Optional: add a private remote + push
81
+ ```
82
+
83
+ ## What Clawdbot Does
84
+ - Runs WhatsApp gateway + Pi coding agent so the assistant can read/write chats, fetch context, and run skills via the host Mac.
85
+ - macOS app manages permissions (screen recording, notifications, microphone) and exposes the `clawdbot` CLI via its bundled binary.
86
+ - Direct chats collapse into the shared `main` session by default; groups stay isolated as `surface:group:<id>` (rooms: `surface:channel:<id>`); heartbeats keep background tasks alive.
87
+
88
+ ## Core Skills (enable in Settings → Skills)
89
+ - **mcporter** — Tool server runtime/CLI for managing external skill backends.
90
+ - **Peekaboo** — Fast macOS screenshots with optional AI vision analysis.
91
+ - **camsnap** — Capture frames, clips, or motion alerts from RTSP/ONVIF security cams.
92
+ - **oracle** — OpenAI-ready agent CLI with session replay and browser control.
93
+ - **qmd** — Hybrid markdown search (BM25 + vectors + rerank) with a local server for agents.
94
+ - **eightctl** — Control your sleep, from the terminal.
95
+ - **imsg** — Send, read, stream iMessage & SMS.
96
+ - **wacli** — WhatsApp CLI: sync, search, send.
97
+ - **discord** — Discord actions: react, stickers, polls.
98
+ - **gog** — Google Suite CLI: Gmail, Calendar, Drive, Contacts.
99
+ - **spotify-player** — Terminal Spotify client to search/queue/control playback.
100
+ - **sag** — ElevenLabs speech with mac-style say UX; streams to speakers by default.
101
+ - **Sonos CLI** — Control Sonos speakers (discover/status/playback/volume/grouping) from scripts.
102
+ - **blucli** — Play, group, and automate BluOS players from scripts.
103
+ - **OpenHue CLI** — Philips Hue lighting control for scenes and automations.
104
+ - **OpenAI Whisper** — Local speech-to-text for quick dictation and voicemail transcripts.
105
+ - **Gemini CLI** — Google Gemini models from the terminal for fast Q&A.
106
+ - **bird** — X/Twitter CLI to tweet, reply, read threads, and search without a browser.
107
+ - **agent-tools** — Utility toolkit for automations and helper scripts.
108
+
109
+ ## Usage Notes
110
+ - Prefer the `clawdbot` CLI for scripting; mac app handles permissions.
111
+ - Run installs from the Skills tab; it hides the button if a binary is already present.
112
+ - Keep heartbeats enabled so the assistant can schedule reminders, monitor inboxes, and trigger camera captures.
113
+ - Canvas UI runs full-screen with native overlays. Avoid placing critical controls in the top-left/top-right/bottom edges; add explicit gutters in the layout and don’t rely on safe-area insets.
114
+ - For browser-driven verification, use `clawdbot browser` (tabs/status/screenshot) with the clawd-managed Chrome profile.
115
+ - For DOM inspection, use `clawdbot browser eval|query|dom|snapshot` (and `--json`/`--out` when you need machine output).
116
+ - For interactions, use `clawdbot browser click|type|hover|drag|select|upload|press|wait|navigate|back|evaluate|run` (click/type require snapshot refs; use `evaluate` for CSS selectors).
package/docs/CNAME ADDED
@@ -0,0 +1 @@
1
+ clawdbot.com
@@ -0,0 +1,64 @@
1
+ ---
2
+ summary: "Step-by-step release checklist for npm + macOS app"
3
+ read_when:
4
+ - Cutting a new npm release
5
+ - Cutting a new macOS app release
6
+ - Verifying metadata before publishing
7
+ ---
8
+
9
+ # Release Checklist (npm + macOS)
10
+
11
+ Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tagging/publishing.
12
+
13
+ 1) **Version & metadata**
14
+ - [ ] Bump `package.json` version (e.g., `1.1.0`).
15
+ - [ ] Update CLI/version strings: `src/cli/program.ts` and the Baileys user agent in `src/provider-web.ts`.
16
+ - [ ] Confirm package metadata (name, description, repository, keywords, license) and `bin` map points to `dist/index.js` for `clawdbot`.
17
+ - [ ] If dependencies changed, run `pnpm install` so `pnpm-lock.yaml` is current.
18
+
19
+ 2) **Build & artifacts**
20
+ - [ ] If A2UI inputs changed, run `pnpm canvas:a2ui:bundle` and commit any updated `src/canvas-host/a2ui/a2ui.bundle.js`.
21
+ - [ ] `pnpm run build` (regenerates `dist/`).
22
+ - [ ] Optional: `npm pack --pack-destination /tmp` after the build; inspect the tarball contents and keep it handy for the GitHub release (do **not** commit it).
23
+
24
+ 3) **Changelog & docs**
25
+ - [ ] Update `CHANGELOG.md` with user-facing highlights (create the file if missing); keep entries strictly descending by version.
26
+ - [ ] Ensure README examples/flags match current CLI behavior (notably new commands or options).
27
+
28
+ 4) **Validation**
29
+ - [ ] `pnpm lint`
30
+ - [ ] `pnpm test` (or `pnpm test:coverage` if you need coverage output)
31
+ - [ ] `pnpm run build` (last sanity check after tests)
32
+ - [ ] `pnpm release:check` (verifies npm pack contents)
33
+ - [ ] (Optional) Spot-check the web gateway if your changes affect send/receive paths.
34
+
35
+ 5) **macOS app (Sparkle)**
36
+ - [ ] Build + sign the macOS app, then zip it for distribution.
37
+ - [ ] Generate the Sparkle appcast (HTML notes via `scripts/make_appcast.sh`) and update `appcast.xml`.
38
+ - [ ] Keep the app zip (and optional dSYM zip) ready to attach to the GitHub release.
39
+ - [ ] Follow `docs/mac/release.md` for the exact commands and required env vars.
40
+ - `APP_BUILD` must be numeric + monotonic (no `-beta`) so Sparkle compares versions correctly.
41
+ - If notarizing, use the `clawdbot-notary` keychain profile created from App Store Connect API env vars (see `docs/mac/release.md`).
42
+
43
+ 6) **Publish (npm)**
44
+ - [ ] Confirm git status is clean; commit and push as needed.
45
+ - [ ] `npm login` (verify 2FA) if needed.
46
+ - [ ] `npm publish --access public` (use `--tag beta` for pre-releases).
47
+ - [ ] Verify the registry: `npm view clawdbot version` and `npx -y clawdbot@X.Y.Z --version` (or `--help`).
48
+
49
+ ### Troubleshooting (notes from 2.0.0-beta2 release)
50
+ - **npm pack/publish hangs or produces huge tarball**: the macOS app bundle in `dist/Clawdbot.app` (and release zips) get swept into the package. Fix by whitelisting publish contents via `package.json` `files` (include dist subdirs, docs, skills; exclude app bundles). Confirm with `npm pack --dry-run` that `dist/Clawdbot.app` is not listed.
51
+ - **npm auth web loop for dist-tags**: use legacy auth to get an OTP prompt:
52
+ - `NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add clawdbot@X.Y.Z latest`
53
+ - **`npx` verification fails with `ECOMPROMISED: Lock compromised`**: retry with a fresh cache:
54
+ - `NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y clawdbot@X.Y.Z --version`
55
+ - **Tag needs repointing after a late fix**: force-update and push the tag, then ensure the GitHub release assets still match:
56
+ - `git tag -f vX.Y.Z && git push -f origin vX.Y.Z`
57
+
58
+ 7) **GitHub release + appcast**
59
+ - [ ] Tag and push: `git tag vX.Y.Z && git push origin vX.Y.Z` (or `git push --tags`).
60
+ - [ ] Create/refresh the GitHub release for `vX.Y.Z` with **title `clawdbot X.Y.Z`** (not just the tag); body should inline the product-facing bullets from the changelog (no bare links) **and must not repeat the title inside the body**.
61
+ - [ ] Attach artifacts: `npm pack` tarball (optional), `Clawdbot-X.Y.Z.zip`, and `Clawdbot-X.Y.Z.dSYM.zip` (if generated).
62
+ - [ ] Commit the updated `appcast.xml` and push it (Sparkle feeds from main).
63
+ - [ ] From a clean temp directory (no `package.json`), run `npx -y clawdbot@X.Y.Z send --help` to confirm install/CLI entrypoints work.
64
+ - [ ] Announce/share release notes.
@@ -0,0 +1,51 @@
1
+ title: "CLAWDBOT Docs"
2
+ description: "A TypeScript/Node gateway + macOS/iOS companions for WhatsApp (web) and Telegram (bot)."
3
+ markdown: kramdown
4
+ highlighter: rouge
5
+
6
+ # Keep GitHub Pages' default page URLs (e.g. /gateway.html). Many docs links
7
+ # are written as relative *.md links and are rewritten during the build.
8
+
9
+ plugins:
10
+ - jekyll-relative-links
11
+
12
+ relative_links:
13
+ enabled: true
14
+ collections: true
15
+
16
+ defaults:
17
+ - scope:
18
+ path: ""
19
+ values:
20
+ layout: default
21
+
22
+ nav:
23
+ - title: "Home"
24
+ url: "/"
25
+ - title: "Clawd Setup"
26
+ url: "/clawd.html"
27
+ - title: "Gateway"
28
+ url: "/gateway.html"
29
+ - title: "Remote"
30
+ url: "/remote.html"
31
+ - title: "Discovery"
32
+ url: "/discovery.html"
33
+ - title: "Configuration"
34
+ url: "/configuration.html"
35
+ - title: "WebChat"
36
+ url: "/webchat.html"
37
+ - title: "macOS App"
38
+ url: "/clawdbot-mac.html"
39
+ - title: "iOS Node"
40
+ url: "/ios/connect.html"
41
+ - title: "Telegram"
42
+ url: "/telegram.html"
43
+ - title: "Security"
44
+ url: "/security.html"
45
+ - title: "Troubleshooting"
46
+ url: "/troubleshooting.html"
47
+
48
+ kramdown:
49
+ input: GFM
50
+ hard_wrap: false
51
+ syntax_highlighter: rouge
@@ -0,0 +1,145 @@
1
+ <!doctype html>
2
+ <html lang="en" data-theme="auto">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <meta name="color-scheme" content="light dark" />
7
+ <title>
8
+ {% if page.url == "/" %}{{ site.title }}{% else %}{{ page.title | default: page.path | split: "/" | last | replace: ".md", "" }} · {{ site.title }}{% endif %}
9
+ </title>
10
+
11
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
12
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
13
+ <link
14
+ href="https://fonts.googleapis.com/css2?family=Pixelify+Sans:wght@400..700&family=Fragment+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap"
15
+ rel="stylesheet"
16
+ />
17
+ <script>
18
+ (() => {
19
+ try {
20
+ const stored = localStorage.getItem("clawdbot:theme");
21
+ if (stored === "light" || stored === "dark") document.documentElement.dataset.theme = stored;
22
+ } catch {
23
+ // ignore
24
+ }
25
+ })();
26
+ </script>
27
+ <link rel="stylesheet" href="{{ "/assets/terminal.css" | relative_url }}" />
28
+ <link rel="stylesheet" href="{{ "/assets/markdown.css" | relative_url }}" />
29
+ <script defer src="{{ "/assets/theme.js" | relative_url }}"></script>
30
+ </head>
31
+
32
+ <body>
33
+ <a class="skip-link" href="#content">Skip to content</a>
34
+
35
+ <header class="shell">
36
+ <div class="shell__frame" role="banner">
37
+ <div class="shell__titlebar">
38
+ <div class="brand" aria-label="CLAWDBOT docs terminal">
39
+ <img
40
+ class="brand__logo"
41
+ src="{{ "/assets/pixel-lobster.svg" | relative_url }}"
42
+ alt=""
43
+ width="40"
44
+ height="40"
45
+ decoding="async"
46
+ />
47
+ <div class="brand__text">
48
+ <div class="brand__name">CLAWDBOT</div>
49
+ <div class="brand__hint">docs // lobster terminal</div>
50
+ </div>
51
+ </div>
52
+
53
+ <div class="titlebar__actions">
54
+ <a class="titlebar__cta" href="https://github.com/clawdbot/clawdbot">
55
+ <span class="titlebar__cta-label">GitHub</span>
56
+ <span class="titlebar__cta-meta">repo</span>
57
+ </a>
58
+ <a class="titlebar__cta titlebar__cta--accent" href="https://github.com/clawdbot/clawdbot/releases/latest">
59
+ <span class="titlebar__cta-label">Download</span>
60
+ <span class="titlebar__cta-meta">latest</span>
61
+ </a>
62
+ </div>
63
+ </div>
64
+
65
+ <div class="shell__nav" aria-label="Primary">
66
+ <nav class="nav">
67
+ {% assign nav = site.nav | default: empty %}
68
+ {% for item in nav %}
69
+ {% assign item_url = item.url | relative_url %}
70
+ <a class="nav__link" href="{{ item_url }}">
71
+ <span class="nav__chev">›</span>{{ item.title }}
72
+ </a>
73
+ {% endfor %}
74
+ </nav>
75
+
76
+ <div class="shell__status" aria-hidden="true">
77
+ <span class="status__dot"></span>
78
+ <span class="status__text">
79
+ {% if page.url == "/" %}
80
+ ready
81
+ {% else %}
82
+ viewing: {{ page.path }}
83
+ {% endif %}
84
+ </span>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </header>
89
+
90
+ <main id="content" class="content" role="main">
91
+ <div class="terminal">
92
+ <div class="terminal__prompt" aria-hidden="true">
93
+ <span class="prompt__user">clawd</span>@<span class="prompt__host">clawdbot</span>:<span class="prompt__path">~/docs</span>$<span class="prompt__cmd">
94
+ {% if page.url == "/" %}cat index.md{% else %}less {{ page.path }}{% endif %}
95
+ </span>
96
+ </div>
97
+
98
+ {% if page.summary %}
99
+ <p class="terminal__summary">{{ page.summary }}</p>
100
+ {% endif %}
101
+
102
+ {% if page.read_when %}
103
+ <details class="terminal__meta">
104
+ <summary>Read when…</summary>
105
+ <ul>
106
+ {% for hint in page.read_when %}
107
+ <li>{{ hint }}</li>
108
+ {% endfor %}
109
+ </ul>
110
+ </details>
111
+ {% endif %}
112
+
113
+ <article class="markdown">
114
+ {{ content }}
115
+ </article>
116
+
117
+ <footer class="terminal__footer" role="contentinfo">
118
+ <div class="footer__line">
119
+ <span class="footer__sig">clawdbot.ai</span>
120
+ <span class="footer__sep">·</span>
121
+ <a href="https://github.com/clawdbot/clawdbot">source</a>
122
+ <span class="footer__sep">·</span>
123
+ <a href="https://github.com/clawdbot/clawdbot/releases">releases</a>
124
+ </div>
125
+ <div class="footer__hint" aria-hidden="true">
126
+ tip: press <kbd>F2</kbd> (Mac: <kbd>fn</kbd>+<kbd>F2</kbd>) to flip
127
+ the universe
128
+ </div>
129
+ <div class="footer__actions">
130
+ <button
131
+ class="theme-toggle"
132
+ type="button"
133
+ data-theme-toggle
134
+ aria-label="Toggle theme (F2; on Mac: fn+F2)"
135
+ aria-pressed="false"
136
+ >
137
+ <span class="theme-toggle__key">F2</span>
138
+ <span class="theme-toggle__label" data-theme-label>theme</span>
139
+ </button>
140
+ </div>
141
+ </footer>
142
+ </div>
143
+ </main>
144
+ </body>
145
+ </html>
@@ -0,0 +1,21 @@
1
+ ---
2
+ summary: "Design notes for a direct `clawdbot agent` CLI subcommand without WhatsApp delivery"
3
+ read_when:
4
+ - Adding or modifying the agent CLI entrypoint
5
+ ---
6
+ # `clawdbot agent` (direct-to-agent invocation)
7
+
8
+ `clawdbot agent` lets you talk to the **embedded** agent runtime directly (no chat send unless you opt in), while reusing the same session store and thinking/verbose persistence as inbound auto-replies.
9
+
10
+ ## Behavior
11
+ - Required: `--message <text>`
12
+ - Session selection:
13
+ - If `--session-id` is given, reuse it.
14
+ - Else if `--to <e164>` is given, derive the session key from `session.scope` (direct chats collapse to `main`, or `global` when scope is global).
15
+ - Runs the embedded Pi agent (configured via `agent`).
16
+ - Thinking/verbose:
17
+ - Flags `--thinking <off|minimal|low|medium|high>` and `--verbose <on|off>` persist into the session store.
18
+ - Output:
19
+ - Default: prints text (and `MEDIA:<url>` lines) to stdout.
20
+ - `--json`: prints structured payloads + meta.
21
+ - Optional: `--deliver` sends the reply back to the selected provider (`whatsapp`, `telegram`, `discord`, `signal`, `imessage`).
package/docs/agent.md ADDED
@@ -0,0 +1,104 @@
1
+ ---
2
+ summary: "Agent runtime (embedded p-mono), workspace contract, and session bootstrap"
3
+ read_when:
4
+ - Changing agent runtime, workspace bootstrap, or session behavior
5
+ ---
6
+ <!-- {% raw %} -->
7
+ # Agent Runtime 🤖
8
+
9
+ CLAWDBOT runs a single embedded agent runtime derived from **p-mono** (internal name: **p**).
10
+
11
+ ## Workspace (required)
12
+
13
+ You must set an agent home directory via `agent.workspace`. CLAWDBOT uses this as the agent’s **only** working directory (`cwd`) for tools and context.
14
+
15
+ Recommended: use `clawdbot setup` to create `~/.clawdbot/clawdbot.json` if missing and initialize the workspace files.
16
+
17
+ If `agent.sandbox` is enabled, non-main sessions can override this with
18
+ per-session workspaces under `agent.sandbox.workspaceRoot` (see
19
+ `docs/configuration.md`).
20
+
21
+ ## Bootstrap files (injected)
22
+
23
+ Inside `agent.workspace`, CLAWDBOT expects these user-editable files:
24
+ - `AGENTS.md` — operating instructions + “memory”
25
+ - `SOUL.md` — persona, boundaries, tone
26
+ - `TOOLS.md` — user-maintained tool notes (e.g. `imsg`, `sag`, conventions)
27
+ - `BOOTSTRAP.md` — one-time first-run ritual (deleted after completion)
28
+ - `IDENTITY.md` — agent name/vibe/emoji
29
+ - `USER.md` — user profile + preferred address
30
+
31
+ On the first turn of a new session, CLAWDBOT injects the contents of these files directly into the agent context.
32
+
33
+ If a file is missing, CLAWDBOT injects a single “missing file” marker line (and `clawdbot setup` will create a safe default template).
34
+
35
+ ## Built-in tools (internal)
36
+
37
+ p’s embedded core tools (read/bash/edit/write and related internals) are defined in code and always available. `TOOLS.md` does **not** control which tools exist; it’s guidance for how *you* want them used.
38
+
39
+ ## Skills
40
+
41
+ Clawdbot loads skills from three locations (workspace wins on name conflict):
42
+ - Bundled (shipped with the install)
43
+ - Managed/local: `~/.clawdbot/skills`
44
+ - Workspace: `<workspace>/skills`
45
+
46
+ Skills can be gated by config/env (see `skills` in `docs/configuration.md`).
47
+
48
+ ## p-mono integration
49
+
50
+ Clawdbot reuses pieces of the p-mono codebase (models/tools), but **session management, discovery, and tool wiring are Clawdbot-owned**.
51
+
52
+ - No p-coding agent runtime.
53
+ - No `~/.pi/agent` or `<workspace>/.pi` settings are consulted.
54
+
55
+ ## Peter @ steipete (only)
56
+
57
+ Apply these notes **only** when the user is Peter Steinberger at steipete.
58
+
59
+ - Gateway runs on the **Mac Studio in London**.
60
+ - Primary work computer: **MacBook Pro**.
61
+ - Peter travels between **Vienna** and **London**; there are two networks bridged via **Tailscale**.
62
+ - For debugging, connect to the Mac Studio (London) or MacBook Pro (primary).
63
+ - There is also an **M1 MacBook Pro** on the Vienna tailnet you can use to access the Vienna network.
64
+ - Nodes can be accessed via the `clawdbot` binary (`pnpm clawdbot` in `~/Projects/clawdbot`).
65
+ - See also `skills/clawdbot*` for node/browser/canvas/cron usage.
66
+
67
+ ## Sessions
68
+
69
+ Session transcripts are stored as JSONL at:
70
+ - `~/.clawdbot/sessions/<SessionId>.jsonl`
71
+
72
+ The session ID is stable and chosen by CLAWDBOT.
73
+ Legacy Pi/Tau session folders are **not** read.
74
+
75
+ ## Steering while streaming
76
+
77
+ When queue mode is `steer`, inbound messages are injected into the current run.
78
+ The queue is checked **after each tool call**; if a queued message is present,
79
+ remaining tool calls from the current assistant message are skipped (error tool
80
+ results with "Skipped due to queued user message."), then the queued user
81
+ message is injected before the next assistant response.
82
+
83
+ When queue mode is `followup` or `collect`, inbound messages are held until the
84
+ current turn ends, then a new agent turn starts with the queued payloads. See
85
+ `docs/queue.md` for mode + debounce/cap behavior.
86
+
87
+ Block streaming sends completed assistant blocks as soon as they finish; disable
88
+ via `agent.blockStreamingDefault: "off"` if you only want the final response.
89
+ Tune the boundary via `agent.blockStreamingBreak` (`text_end` vs `message_end`; defaults to text_end).
90
+ Control soft block chunking with `agent.blockStreamingChunk` (defaults to
91
+ 800–1200 chars; prefers paragraph breaks, then newlines; sentences last).
92
+ Verbose tool summaries are emitted at tool start (no debounce); Control UI
93
+ streams tool output via agent events when available.
94
+
95
+ ## Configuration (minimal)
96
+
97
+ At minimum, set:
98
+ - `agent.workspace`
99
+ - `whatsapp.allowFrom` (strongly recommended)
100
+
101
+ ---
102
+
103
+ *Next: [Group Chats](./group-messages.md)* 🦞
104
+ <!-- {% endraw %} -->
@@ -0,0 +1,131 @@
1
+ ---
2
+ summary: "Runbook: connect/pair the Android node to a Clawdbot Gateway and use Canvas/Chat/Camera"
3
+ read_when:
4
+ - Pairing or reconnecting the Android node
5
+ - Debugging Android bridge discovery or auth
6
+ - Verifying chat history parity across clients
7
+ ---
8
+
9
+ # Android Node Connection Runbook
10
+
11
+ Android node app ⇄ (mDNS/NSD + TCP bridge) ⇄ **Gateway bridge** ⇄ (loopback WS) ⇄ **Gateway**
12
+
13
+ The Gateway WebSocket stays loopback-only (`ws://127.0.0.1:18789`). Android talks to the LAN-facing **bridge** (default `tcp://0.0.0.0:18790`) and uses Gateway-owned pairing.
14
+
15
+ ## Prerequisites
16
+
17
+ - You can run the Gateway on the “master” machine.
18
+ - Android device/emulator can reach the gateway bridge:
19
+ - Same LAN with mDNS/NSD, **or**
20
+ - Same Tailscale tailnet using Wide-Area Bonjour / unicast DNS-SD (see below), **or**
21
+ - Manual bridge host/port (fallback)
22
+ - You can run the CLI (`clawdbot`) on the gateway machine (or via SSH).
23
+
24
+ ## 1) Start the Gateway (with bridge enabled)
25
+
26
+ Bridge is enabled by default (disable via `CLAWDBOT_BRIDGE_ENABLED=0`).
27
+
28
+ ```bash
29
+ pnpm clawdbot gateway --port 18789 --verbose
30
+ ```
31
+
32
+ Confirm in logs you see something like:
33
+ - `bridge listening on tcp://0.0.0.0:18790 (node)`
34
+
35
+ For tailnet-only setups (recommended for Vienna ⇄ London), bind the bridge to the gateway machine’s Tailscale IP instead:
36
+
37
+ - Set `bridge.bind: "tailnet"` in `~/.clawdbot/clawdbot.json` on the gateway host.
38
+ - Restart the Gateway / macOS menubar app.
39
+
40
+ ## 2) Verify discovery (optional)
41
+
42
+ From the gateway machine:
43
+
44
+ ```bash
45
+ dns-sd -B _clawdbot-bridge._tcp local.
46
+ ```
47
+
48
+ More debugging notes: `docs/bonjour.md`.
49
+
50
+ ### Tailnet (Vienna ⇄ London) discovery via unicast DNS-SD
51
+
52
+ Android NSD/mDNS discovery won’t cross networks. If your Android node and the gateway are on different networks but connected via Tailscale, use Wide-Area Bonjour / unicast DNS-SD instead:
53
+
54
+ 1) Set up a DNS-SD zone (example `clawdbot.internal.`) on the gateway host and publish `_clawdbot-bridge._tcp` records.
55
+ 2) Configure Tailscale split DNS for `clawdbot.internal` pointing at that DNS server.
56
+
57
+ Details and example CoreDNS config: `docs/bonjour.md`.
58
+
59
+ ## 3) Connect from Android
60
+
61
+ In the Android app:
62
+
63
+ - The app keeps its bridge connection alive via a **foreground service** (persistent notification).
64
+ - Open **Settings**.
65
+ - Under **Discovered Bridges**, select your gateway and hit **Connect**.
66
+ - If mDNS is blocked, use **Advanced → Manual Bridge** (host + port) and **Connect (Manual)**.
67
+
68
+ After the first successful pairing, Android auto-reconnects on launch:
69
+ - Manual endpoint (if enabled), otherwise
70
+ - The last discovered bridge (best-effort).
71
+
72
+ ## 4) Approve pairing (CLI)
73
+
74
+ On the gateway machine:
75
+
76
+ ```bash
77
+ clawdbot nodes pending
78
+ clawdbot nodes approve <requestId>
79
+ ```
80
+
81
+ Pairing details: `docs/gateway/pairing.md`.
82
+
83
+ ## 5) Verify the node is connected
84
+
85
+ - Via nodes status:
86
+ ```bash
87
+ clawdbot nodes status
88
+ ```
89
+ - Via Gateway:
90
+ ```bash
91
+ clawdbot gateway call node.list --params "{}"
92
+ ```
93
+
94
+ ## 6) Chat + history
95
+
96
+ The Android node’s Chat sheet uses the gateway’s **primary session key** (`main`), so history and replies are shared with WebChat and other clients:
97
+
98
+ - History: `chat.history`
99
+ - Send: `chat.send`
100
+ - Push updates (best-effort): `chat.subscribe` → `event:"chat"`
101
+
102
+ ## 7) Canvas + camera
103
+
104
+ ### Gateway Canvas Host (recommended for web content)
105
+
106
+ If you want the node to show real HTML/CSS/JS that the agent can edit on disk, point the node at the Gateway canvas host.
107
+
108
+ Note: nodes always use the standalone canvas host on `canvasHost.port` (default `18793`), bound to the bridge interface.
109
+
110
+ 1) Create `~/clawd/canvas/index.html` on the gateway host.
111
+
112
+ 2) Navigate the node to it (LAN):
113
+
114
+ ```bash
115
+ clawdbot nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__clawdbot__/canvas/"}'
116
+ ```
117
+
118
+ Tailnet (optional): if both devices are on Tailscale, use a MagicDNS name or tailnet IP instead of `.local`, e.g. `http://<gateway-magicdns>:18793/__clawdbot__/canvas/`.
119
+
120
+ This server injects a live-reload client into HTML and reloads on file changes.
121
+ The A2UI host lives at `http://<gateway-host>:18793/__clawdbot__/a2ui/`.
122
+
123
+ Canvas commands (foreground only):
124
+ - `canvas.eval`, `canvas.snapshot`, `canvas.navigate` (use `{"url":""}` or `{"url":"/"}` to return to the default scaffold). `canvas.snapshot` returns `{ format, base64 }` (default `format="jpeg"`).
125
+ - A2UI: `canvas.a2ui.push`, `canvas.a2ui.reset` (`canvas.a2ui.pushJSONL` legacy alias)
126
+
127
+ Camera commands (foreground only; permission-gated):
128
+ - `camera.snap` (jpg)
129
+ - `camera.clip` (mp4)
130
+
131
+ See `docs/camera.md` for parameters and CLI helpers.