@quantumclaw/quantumclaw 2026.3.22

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 (821) hide show
  1. package/CHANGELOG.md +4601 -0
  2. package/LICENSE +21 -0
  3. package/README.md +559 -0
  4. package/assets/avatar-placeholder.svg +19 -0
  5. package/assets/chrome-extension/icons/icon128.png +0 -0
  6. package/assets/chrome-extension/icons/icon16.png +0 -0
  7. package/assets/chrome-extension/icons/icon32.png +0 -0
  8. package/assets/chrome-extension/icons/icon48.png +0 -0
  9. package/assets/dmg-background-small.png +0 -0
  10. package/assets/dmg-background.png +0 -0
  11. package/docs/.i18n/README.md +31 -0
  12. package/docs/.i18n/glossary.ja-JP.json +14 -0
  13. package/docs/.i18n/glossary.zh-CN.json +302 -0
  14. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  15. package/docs/assets/install-script.svg +1 -0
  16. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  17. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  18. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  19. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  20. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  21. package/docs/assets/pixel-lobster.svg +60 -0
  22. package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
  23. package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
  24. package/docs/assets/quantumclaw-logo-text.png +0 -0
  25. package/docs/assets/quantumclaw-logo-text.svg +418 -0
  26. package/docs/assets/showcase/agents-ui.jpg +0 -0
  27. package/docs/assets/showcase/bambu-cli.png +0 -0
  28. package/docs/assets/showcase/codexmonitor.png +0 -0
  29. package/docs/assets/showcase/gohome-grafana.png +0 -0
  30. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  31. package/docs/assets/showcase/oura-health.png +0 -0
  32. package/docs/assets/showcase/padel-cli.svg +11 -0
  33. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  34. package/docs/assets/showcase/papla-tts.jpg +0 -0
  35. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  36. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  37. package/docs/assets/showcase/roborock-status.svg +13 -0
  38. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  39. package/docs/assets/showcase/snag.png +0 -0
  40. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  41. package/docs/assets/showcase/wienerlinien.png +0 -0
  42. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  43. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  44. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  45. package/docs/assets/sponsors/blacksmith.svg +14 -0
  46. package/docs/assets/sponsors/convex.svg +16 -0
  47. package/docs/assets/sponsors/openai.svg +3 -0
  48. package/docs/assets/sponsors/vercel.svg +5 -0
  49. package/docs/auth-credential-semantics.md +53 -0
  50. package/docs/automation/auth-monitoring.md +44 -0
  51. package/docs/automation/cron-jobs.md +727 -0
  52. package/docs/automation/cron-vs-heartbeat.md +286 -0
  53. package/docs/automation/gmail-pubsub.md +256 -0
  54. package/docs/automation/hooks.md +1056 -0
  55. package/docs/automation/poll.md +86 -0
  56. package/docs/automation/standing-orders.md +251 -0
  57. package/docs/automation/troubleshooting.md +122 -0
  58. package/docs/automation/webhook.md +217 -0
  59. package/docs/brave-search.md +93 -0
  60. package/docs/channels/bluebubbles.md +347 -0
  61. package/docs/channels/broadcast-groups.md +442 -0
  62. package/docs/channels/channel-routing.md +139 -0
  63. package/docs/channels/discord.md +1229 -0
  64. package/docs/channels/feishu.md +747 -0
  65. package/docs/channels/googlechat.md +261 -0
  66. package/docs/channels/group-messages.md +84 -0
  67. package/docs/channels/groups.md +379 -0
  68. package/docs/channels/imessage.md +367 -0
  69. package/docs/channels/index.md +47 -0
  70. package/docs/channels/irc.md +242 -0
  71. package/docs/channels/line.md +194 -0
  72. package/docs/channels/location.md +56 -0
  73. package/docs/channels/matrix.md +677 -0
  74. package/docs/channels/mattermost.md +427 -0
  75. package/docs/channels/msteams.md +780 -0
  76. package/docs/channels/nextcloud-talk.md +138 -0
  77. package/docs/channels/nostr.md +249 -0
  78. package/docs/channels/pairing.md +114 -0
  79. package/docs/channels/signal.md +329 -0
  80. package/docs/channels/slack.md +603 -0
  81. package/docs/channels/synology-chat.md +134 -0
  82. package/docs/channels/telegram.md +987 -0
  83. package/docs/channels/tlon.md +276 -0
  84. package/docs/channels/troubleshooting.md +118 -0
  85. package/docs/channels/twitch.md +379 -0
  86. package/docs/channels/whatsapp.md +460 -0
  87. package/docs/channels/zalo.md +243 -0
  88. package/docs/channels/zalouser.md +181 -0
  89. package/docs/ci.md +55 -0
  90. package/docs/cli/acp.md +288 -0
  91. package/docs/cli/agent.md +29 -0
  92. package/docs/cli/agents.md +123 -0
  93. package/docs/cli/approvals.md +50 -0
  94. package/docs/cli/backup.md +76 -0
  95. package/docs/cli/browser.md +106 -0
  96. package/docs/cli/channels.md +102 -0
  97. package/docs/cli/clawbot.md +21 -0
  98. package/docs/cli/completion.md +35 -0
  99. package/docs/cli/config.md +295 -0
  100. package/docs/cli/configure.md +36 -0
  101. package/docs/cli/cron.md +77 -0
  102. package/docs/cli/daemon.md +53 -0
  103. package/docs/cli/dashboard.md +22 -0
  104. package/docs/cli/devices.md +139 -0
  105. package/docs/cli/directory.md +63 -0
  106. package/docs/cli/dns.md +23 -0
  107. package/docs/cli/docs.md +15 -0
  108. package/docs/cli/doctor.md +48 -0
  109. package/docs/cli/gateway.md +235 -0
  110. package/docs/cli/health.md +21 -0
  111. package/docs/cli/hooks.md +329 -0
  112. package/docs/cli/index.md +1150 -0
  113. package/docs/cli/logs.md +28 -0
  114. package/docs/cli/memory.md +66 -0
  115. package/docs/cli/message.md +278 -0
  116. package/docs/cli/models.md +81 -0
  117. package/docs/cli/node.md +127 -0
  118. package/docs/cli/nodes.md +75 -0
  119. package/docs/cli/onboard.md +157 -0
  120. package/docs/cli/pairing.md +32 -0
  121. package/docs/cli/plugins.md +210 -0
  122. package/docs/cli/qr.md +46 -0
  123. package/docs/cli/reset.md +20 -0
  124. package/docs/cli/sandbox.md +197 -0
  125. package/docs/cli/secrets.md +188 -0
  126. package/docs/cli/security.md +79 -0
  127. package/docs/cli/sessions.md +110 -0
  128. package/docs/cli/setup.md +29 -0
  129. package/docs/cli/skills.md +36 -0
  130. package/docs/cli/status.md +30 -0
  131. package/docs/cli/system.md +60 -0
  132. package/docs/cli/tui.md +30 -0
  133. package/docs/cli/uninstall.md +20 -0
  134. package/docs/cli/update.md +103 -0
  135. package/docs/cli/voicecall.md +34 -0
  136. package/docs/cli/webhooks.md +25 -0
  137. package/docs/concepts/agent-loop.md +148 -0
  138. package/docs/concepts/agent-workspace.md +236 -0
  139. package/docs/concepts/agent.md +122 -0
  140. package/docs/concepts/architecture.md +137 -0
  141. package/docs/concepts/compaction.md +123 -0
  142. package/docs/concepts/context-engine.md +268 -0
  143. package/docs/concepts/context.md +172 -0
  144. package/docs/concepts/delegate-architecture.md +296 -0
  145. package/docs/concepts/features.md +73 -0
  146. package/docs/concepts/markdown-formatting.md +130 -0
  147. package/docs/concepts/memory.md +108 -0
  148. package/docs/concepts/messages.md +154 -0
  149. package/docs/concepts/model-failover.md +152 -0
  150. package/docs/concepts/model-providers.md +607 -0
  151. package/docs/concepts/models.md +225 -0
  152. package/docs/concepts/multi-agent.md +552 -0
  153. package/docs/concepts/oauth.md +158 -0
  154. package/docs/concepts/presence.md +102 -0
  155. package/docs/concepts/queue.md +89 -0
  156. package/docs/concepts/retry.md +69 -0
  157. package/docs/concepts/session-pruning.md +121 -0
  158. package/docs/concepts/session-tool.md +242 -0
  159. package/docs/concepts/session.md +310 -0
  160. package/docs/concepts/streaming.md +155 -0
  161. package/docs/concepts/system-prompt.md +132 -0
  162. package/docs/concepts/timezone.md +91 -0
  163. package/docs/concepts/typebox.md +291 -0
  164. package/docs/concepts/typing-indicators.md +68 -0
  165. package/docs/concepts/usage-tracking.md +35 -0
  166. package/docs/date-time.md +128 -0
  167. package/docs/debug/node-issue.md +85 -0
  168. package/docs/diagnostics/flags.md +91 -0
  169. package/docs/docs.json +2078 -0
  170. package/docs/gateway/authentication.md +179 -0
  171. package/docs/gateway/background-process.md +97 -0
  172. package/docs/gateway/bonjour.md +177 -0
  173. package/docs/gateway/bridge-protocol.md +91 -0
  174. package/docs/gateway/cli-backends.md +225 -0
  175. package/docs/gateway/configuration-examples.md +651 -0
  176. package/docs/gateway/configuration-reference.md +3123 -0
  177. package/docs/gateway/configuration.md +633 -0
  178. package/docs/gateway/discovery.md +123 -0
  179. package/docs/gateway/doctor.md +362 -0
  180. package/docs/gateway/gateway-lock.md +34 -0
  181. package/docs/gateway/health.md +44 -0
  182. package/docs/gateway/heartbeat.md +393 -0
  183. package/docs/gateway/index.md +261 -0
  184. package/docs/gateway/local-models.md +152 -0
  185. package/docs/gateway/logging.md +113 -0
  186. package/docs/gateway/multiple-gateways.md +112 -0
  187. package/docs/gateway/network-model.md +22 -0
  188. package/docs/gateway/openai-http-api.md +132 -0
  189. package/docs/gateway/openresponses-http-api.md +295 -0
  190. package/docs/gateway/openshell.md +307 -0
  191. package/docs/gateway/pairing.md +99 -0
  192. package/docs/gateway/protocol.md +267 -0
  193. package/docs/gateway/remote-gateway-readme.md +158 -0
  194. package/docs/gateway/remote.md +153 -0
  195. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
  196. package/docs/gateway/sandboxing.md +469 -0
  197. package/docs/gateway/secrets-plan-contract.md +116 -0
  198. package/docs/gateway/secrets.md +503 -0
  199. package/docs/gateway/security/index.md +1220 -0
  200. package/docs/gateway/tailscale.md +132 -0
  201. package/docs/gateway/tools-invoke-http-api.md +118 -0
  202. package/docs/gateway/troubleshooting.md +378 -0
  203. package/docs/gateway/trusted-proxy-auth.md +330 -0
  204. package/docs/help/debugging.md +168 -0
  205. package/docs/help/environment.md +163 -0
  206. package/docs/help/faq.md +2997 -0
  207. package/docs/help/index.md +28 -0
  208. package/docs/help/scripts.md +28 -0
  209. package/docs/help/testing.md +526 -0
  210. package/docs/help/troubleshooting.md +297 -0
  211. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  212. package/docs/images/feishu-step2-create-app.png +0 -0
  213. package/docs/images/feishu-step3-credentials.png +0 -0
  214. package/docs/images/feishu-step4-permissions.png +0 -0
  215. package/docs/images/feishu-step5-bot-capability.png +0 -0
  216. package/docs/images/feishu-step6-event-subscription.png +0 -0
  217. package/docs/images/feishu-verification-token.png +0 -0
  218. package/docs/images/groups-flow.svg +52 -0
  219. package/docs/images/mobile-ui-screenshot.png +0 -0
  220. package/docs/index.md +196 -0
  221. package/docs/install/ansible.md +230 -0
  222. package/docs/install/azure.md +311 -0
  223. package/docs/install/bun.md +55 -0
  224. package/docs/install/development-channels.md +120 -0
  225. package/docs/install/digitalocean.md +129 -0
  226. package/docs/install/docker-vm-runtime.md +142 -0
  227. package/docs/install/docker.md +375 -0
  228. package/docs/install/exe-dev.md +126 -0
  229. package/docs/install/fly.md +501 -0
  230. package/docs/install/gcp.md +402 -0
  231. package/docs/install/hetzner.md +251 -0
  232. package/docs/install/index.md +183 -0
  233. package/docs/install/installer.md +415 -0
  234. package/docs/install/kubernetes.md +191 -0
  235. package/docs/install/macos-vm.md +281 -0
  236. package/docs/install/migrating-matrix.md +346 -0
  237. package/docs/install/migrating.md +110 -0
  238. package/docs/install/nix.md +89 -0
  239. package/docs/install/node.md +138 -0
  240. package/docs/install/northflank.mdx +54 -0
  241. package/docs/install/oracle.md +156 -0
  242. package/docs/install/podman.md +133 -0
  243. package/docs/install/railway.mdx +100 -0
  244. package/docs/install/raspberry-pi.md +159 -0
  245. package/docs/install/render.mdx +169 -0
  246. package/docs/install/uninstall.md +128 -0
  247. package/docs/install/updating.md +128 -0
  248. package/docs/ja-JP/index.md +186 -0
  249. package/docs/ja-JP/start/getting-started.md +125 -0
  250. package/docs/ja-JP/start/wizard.md +77 -0
  251. package/docs/logging.md +352 -0
  252. package/docs/nav-tabs-underline.js +100 -0
  253. package/docs/network.md +54 -0
  254. package/docs/nodes/audio.md +187 -0
  255. package/docs/nodes/camera.md +162 -0
  256. package/docs/nodes/images.md +72 -0
  257. package/docs/nodes/index.md +393 -0
  258. package/docs/nodes/location-command.md +98 -0
  259. package/docs/nodes/media-understanding.md +394 -0
  260. package/docs/nodes/talk.md +92 -0
  261. package/docs/nodes/troubleshooting.md +114 -0
  262. package/docs/nodes/voicewake.md +66 -0
  263. package/docs/perplexity.md +174 -0
  264. package/docs/pi-dev.md +80 -0
  265. package/docs/pi.md +567 -0
  266. package/docs/platforms/android.md +168 -0
  267. package/docs/platforms/digitalocean.md +266 -0
  268. package/docs/platforms/index.md +54 -0
  269. package/docs/platforms/ios.md +220 -0
  270. package/docs/platforms/linux.md +94 -0
  271. package/docs/platforms/mac/bundled-gateway.md +73 -0
  272. package/docs/platforms/mac/canvas.md +125 -0
  273. package/docs/platforms/mac/child-process.md +69 -0
  274. package/docs/platforms/mac/dev-setup.md +104 -0
  275. package/docs/platforms/mac/health.md +34 -0
  276. package/docs/platforms/mac/icon.md +31 -0
  277. package/docs/platforms/mac/logging.md +57 -0
  278. package/docs/platforms/mac/menu-bar.md +81 -0
  279. package/docs/platforms/mac/peekaboo.md +65 -0
  280. package/docs/platforms/mac/permissions.md +50 -0
  281. package/docs/platforms/mac/remote.md +84 -0
  282. package/docs/platforms/mac/signing.md +47 -0
  283. package/docs/platforms/mac/skills.md +33 -0
  284. package/docs/platforms/mac/voice-overlay.md +60 -0
  285. package/docs/platforms/mac/voicewake.md +67 -0
  286. package/docs/platforms/mac/webchat.md +43 -0
  287. package/docs/platforms/mac/xpc.md +61 -0
  288. package/docs/platforms/macos.md +226 -0
  289. package/docs/platforms/oracle.md +303 -0
  290. package/docs/platforms/raspberry-pi.md +412 -0
  291. package/docs/platforms/windows.md +241 -0
  292. package/docs/plugins/agent-tools.md +10 -0
  293. package/docs/plugins/architecture.md +1366 -0
  294. package/docs/plugins/building-extensions.md +10 -0
  295. package/docs/plugins/building-plugins.md +239 -0
  296. package/docs/plugins/bundles.md +181 -0
  297. package/docs/plugins/community.md +145 -0
  298. package/docs/plugins/manifest.md +241 -0
  299. package/docs/plugins/sdk-channel-plugins.md +370 -0
  300. package/docs/plugins/sdk-entrypoints.md +161 -0
  301. package/docs/plugins/sdk-migration.md +172 -0
  302. package/docs/plugins/sdk-overview.md +196 -0
  303. package/docs/plugins/sdk-provider-plugins.md +370 -0
  304. package/docs/plugins/sdk-runtime.md +345 -0
  305. package/docs/plugins/sdk-setup.md +331 -0
  306. package/docs/plugins/sdk-testing.md +263 -0
  307. package/docs/plugins/voice-call.md +380 -0
  308. package/docs/plugins/zalouser.md +77 -0
  309. package/docs/prose.md +134 -0
  310. package/docs/providers/anthropic.md +259 -0
  311. package/docs/providers/bedrock.md +176 -0
  312. package/docs/providers/claude-max-api-proxy.md +154 -0
  313. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  314. package/docs/providers/deepgram.md +93 -0
  315. package/docs/providers/github-copilot.md +72 -0
  316. package/docs/providers/glm.md +43 -0
  317. package/docs/providers/google.md +78 -0
  318. package/docs/providers/groq.md +96 -0
  319. package/docs/providers/huggingface.md +209 -0
  320. package/docs/providers/index.md +69 -0
  321. package/docs/providers/kilocode.md +74 -0
  322. package/docs/providers/litellm.md +154 -0
  323. package/docs/providers/minimax.md +224 -0
  324. package/docs/providers/mistral.md +54 -0
  325. package/docs/providers/models.md +45 -0
  326. package/docs/providers/modelstudio.md +66 -0
  327. package/docs/providers/moonshot.md +175 -0
  328. package/docs/providers/nvidia.md +55 -0
  329. package/docs/providers/ollama.md +352 -0
  330. package/docs/providers/openai.md +303 -0
  331. package/docs/providers/opencode-go.md +45 -0
  332. package/docs/providers/opencode.md +64 -0
  333. package/docs/providers/openrouter.md +37 -0
  334. package/docs/providers/perplexity-provider.md +62 -0
  335. package/docs/providers/qianfan.md +38 -0
  336. package/docs/providers/qwen.md +53 -0
  337. package/docs/providers/sglang.md +104 -0
  338. package/docs/providers/synthetic.md +99 -0
  339. package/docs/providers/together.md +66 -0
  340. package/docs/providers/venice.md +282 -0
  341. package/docs/providers/vercel-ai-gateway.md +60 -0
  342. package/docs/providers/vllm.md +92 -0
  343. package/docs/providers/volcengine.md +74 -0
  344. package/docs/providers/xai.md +60 -0
  345. package/docs/providers/xiaomi.md +86 -0
  346. package/docs/providers/zai.md +46 -0
  347. package/docs/reference/AGENTS.default.md +126 -0
  348. package/docs/reference/RELEASING.md +42 -0
  349. package/docs/reference/api-usage-costs.md +144 -0
  350. package/docs/reference/credits.md +30 -0
  351. package/docs/reference/device-models.md +47 -0
  352. package/docs/reference/memory-config.md +711 -0
  353. package/docs/reference/prompt-caching.md +185 -0
  354. package/docs/reference/rpc.md +43 -0
  355. package/docs/reference/secretref-credential-surface.md +140 -0
  356. package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
  357. package/docs/reference/session-management-compaction.md +324 -0
  358. package/docs/reference/templates/AGENTS.dev.md +83 -0
  359. package/docs/reference/templates/AGENTS.md +219 -0
  360. package/docs/reference/templates/BOOT.md +11 -0
  361. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  362. package/docs/reference/templates/HEARTBEAT.md +14 -0
  363. package/docs/reference/templates/IDENTITY.dev.md +47 -0
  364. package/docs/reference/templates/IDENTITY.md +29 -0
  365. package/docs/reference/templates/SOUL.dev.md +76 -0
  366. package/docs/reference/templates/SOUL.md +43 -0
  367. package/docs/reference/templates/TOOLS.dev.md +24 -0
  368. package/docs/reference/templates/TOOLS.md +47 -0
  369. package/docs/reference/templates/USER.dev.md +18 -0
  370. package/docs/reference/templates/USER.md +23 -0
  371. package/docs/reference/test.md +90 -0
  372. package/docs/reference/token-use.md +175 -0
  373. package/docs/reference/transcript-hygiene.md +151 -0
  374. package/docs/reference/wizard.md +235 -0
  375. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  376. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  377. package/docs/security/formal-verification.md +167 -0
  378. package/docs/start/bootstrapping.md +41 -0
  379. package/docs/start/docs-directory.md +66 -0
  380. package/docs/start/getting-started.md +116 -0
  381. package/docs/start/hubs.md +198 -0
  382. package/docs/start/lore.md +219 -0
  383. package/docs/start/onboarding-overview.md +67 -0
  384. package/docs/start/onboarding.md +91 -0
  385. package/docs/start/openclaw.md +221 -0
  386. package/docs/start/quickstart.md +22 -0
  387. package/docs/start/setup.md +164 -0
  388. package/docs/start/showcase.md +418 -0
  389. package/docs/start/wizard-cli-automation.md +215 -0
  390. package/docs/start/wizard-cli-reference.md +299 -0
  391. package/docs/start/wizard.md +125 -0
  392. package/docs/style.css +37 -0
  393. package/docs/tools/acp-agents.md +623 -0
  394. package/docs/tools/agent-send.md +100 -0
  395. package/docs/tools/apply-patch.md +51 -0
  396. package/docs/tools/brave-search.md +93 -0
  397. package/docs/tools/browser-linux-troubleshooting.md +138 -0
  398. package/docs/tools/browser-login.md +73 -0
  399. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
  400. package/docs/tools/browser.md +731 -0
  401. package/docs/tools/btw.md +142 -0
  402. package/docs/tools/capability-cookbook.md +119 -0
  403. package/docs/tools/clawhub.md +298 -0
  404. package/docs/tools/creating-skills.md +117 -0
  405. package/docs/tools/diffs.md +386 -0
  406. package/docs/tools/elevated.md +114 -0
  407. package/docs/tools/exec-approvals.md +430 -0
  408. package/docs/tools/exec.md +207 -0
  409. package/docs/tools/firecrawl.md +140 -0
  410. package/docs/tools/index.md +137 -0
  411. package/docs/tools/llm-task.md +119 -0
  412. package/docs/tools/lobster.md +340 -0
  413. package/docs/tools/loop-detection.md +100 -0
  414. package/docs/tools/multi-agent-sandbox-tools.md +364 -0
  415. package/docs/tools/pdf.md +156 -0
  416. package/docs/tools/perplexity-search.md +174 -0
  417. package/docs/tools/plugin.md +255 -0
  418. package/docs/tools/reactions.md +64 -0
  419. package/docs/tools/skills-config.md +86 -0
  420. package/docs/tools/skills.md +309 -0
  421. package/docs/tools/slash-commands.md +294 -0
  422. package/docs/tools/subagents.md +295 -0
  423. package/docs/tools/tavily.md +125 -0
  424. package/docs/tools/thinking.md +96 -0
  425. package/docs/tools/tts.md +406 -0
  426. package/docs/tools/web.md +516 -0
  427. package/docs/tts.md +406 -0
  428. package/docs/vps.md +112 -0
  429. package/docs/web/control-ui.md +275 -0
  430. package/docs/web/dashboard.md +54 -0
  431. package/docs/web/index.md +120 -0
  432. package/docs/web/tui.md +170 -0
  433. package/docs/web/webchat.md +61 -0
  434. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  435. package/docs/whatsapp-openclaw.jpg +0 -0
  436. package/docs/zh-CN/AGENTS.md +61 -0
  437. package/docs/zh-CN/automation/auth-monitoring.md +47 -0
  438. package/docs/zh-CN/automation/cron-jobs.md +435 -0
  439. package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
  440. package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
  441. package/docs/zh-CN/automation/hooks.md +1051 -0
  442. package/docs/zh-CN/automation/poll.md +76 -0
  443. package/docs/zh-CN/automation/troubleshooting.md +8 -0
  444. package/docs/zh-CN/automation/webhook.md +163 -0
  445. package/docs/zh-CN/brave-search.md +60 -0
  446. package/docs/zh-CN/channels/bluebubbles.md +354 -0
  447. package/docs/zh-CN/channels/broadcast-groups.md +449 -0
  448. package/docs/zh-CN/channels/channel-routing.md +117 -0
  449. package/docs/zh-CN/channels/discord.md +468 -0
  450. package/docs/zh-CN/channels/feishu.md +728 -0
  451. package/docs/zh-CN/channels/googlechat.md +257 -0
  452. package/docs/zh-CN/channels/grammy.md +38 -0
  453. package/docs/zh-CN/channels/group-messages.md +91 -0
  454. package/docs/zh-CN/channels/groups.md +379 -0
  455. package/docs/zh-CN/channels/imessage.md +302 -0
  456. package/docs/zh-CN/channels/index.md +53 -0
  457. package/docs/zh-CN/channels/line.md +180 -0
  458. package/docs/zh-CN/channels/location.md +63 -0
  459. package/docs/zh-CN/channels/matrix.md +221 -0
  460. package/docs/zh-CN/channels/mattermost.md +144 -0
  461. package/docs/zh-CN/channels/msteams.md +775 -0
  462. package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
  463. package/docs/zh-CN/channels/nostr.md +249 -0
  464. package/docs/zh-CN/channels/pairing.md +89 -0
  465. package/docs/zh-CN/channels/signal.md +209 -0
  466. package/docs/zh-CN/channels/slack.md +531 -0
  467. package/docs/zh-CN/channels/synology-chat.md +138 -0
  468. package/docs/zh-CN/channels/telegram.md +751 -0
  469. package/docs/zh-CN/channels/tlon.md +136 -0
  470. package/docs/zh-CN/channels/troubleshooting.md +36 -0
  471. package/docs/zh-CN/channels/twitch.md +385 -0
  472. package/docs/zh-CN/channels/whatsapp.md +411 -0
  473. package/docs/zh-CN/channels/zalo.md +196 -0
  474. package/docs/zh-CN/channels/zalouser.md +147 -0
  475. package/docs/zh-CN/cli/acp.md +173 -0
  476. package/docs/zh-CN/cli/agent.md +30 -0
  477. package/docs/zh-CN/cli/agents.md +82 -0
  478. package/docs/zh-CN/cli/approvals.md +57 -0
  479. package/docs/zh-CN/cli/browser.md +114 -0
  480. package/docs/zh-CN/cli/channels.md +86 -0
  481. package/docs/zh-CN/cli/config.md +57 -0
  482. package/docs/zh-CN/cli/configure.md +38 -0
  483. package/docs/zh-CN/cli/cron.md +43 -0
  484. package/docs/zh-CN/cli/dashboard.md +23 -0
  485. package/docs/zh-CN/cli/devices.md +74 -0
  486. package/docs/zh-CN/cli/directory.md +70 -0
  487. package/docs/zh-CN/cli/dns.md +30 -0
  488. package/docs/zh-CN/cli/docs.md +22 -0
  489. package/docs/zh-CN/cli/doctor.md +48 -0
  490. package/docs/zh-CN/cli/gateway.md +206 -0
  491. package/docs/zh-CN/cli/health.md +28 -0
  492. package/docs/zh-CN/cli/hooks.md +298 -0
  493. package/docs/zh-CN/cli/index.md +1143 -0
  494. package/docs/zh-CN/cli/logs.md +31 -0
  495. package/docs/zh-CN/cli/memory.md +52 -0
  496. package/docs/zh-CN/cli/message.md +246 -0
  497. package/docs/zh-CN/cli/models.md +85 -0
  498. package/docs/zh-CN/cli/node.md +115 -0
  499. package/docs/zh-CN/cli/nodes.md +80 -0
  500. package/docs/zh-CN/cli/onboard.md +164 -0
  501. package/docs/zh-CN/cli/pairing.md +28 -0
  502. package/docs/zh-CN/cli/plugins.md +66 -0
  503. package/docs/zh-CN/cli/reset.md +24 -0
  504. package/docs/zh-CN/cli/sandbox.md +158 -0
  505. package/docs/zh-CN/cli/security.md +33 -0
  506. package/docs/zh-CN/cli/sessions.md +23 -0
  507. package/docs/zh-CN/cli/setup.md +36 -0
  508. package/docs/zh-CN/cli/skills.md +33 -0
  509. package/docs/zh-CN/cli/status.md +33 -0
  510. package/docs/zh-CN/cli/system.md +63 -0
  511. package/docs/zh-CN/cli/tui.md +30 -0
  512. package/docs/zh-CN/cli/uninstall.md +24 -0
  513. package/docs/zh-CN/cli/update.md +101 -0
  514. package/docs/zh-CN/cli/voicecall.md +41 -0
  515. package/docs/zh-CN/cli/webhooks.md +32 -0
  516. package/docs/zh-CN/concepts/agent-loop.md +146 -0
  517. package/docs/zh-CN/concepts/agent-workspace.md +219 -0
  518. package/docs/zh-CN/concepts/agent.md +115 -0
  519. package/docs/zh-CN/concepts/architecture.md +123 -0
  520. package/docs/zh-CN/concepts/compaction.md +67 -0
  521. package/docs/zh-CN/concepts/context.md +168 -0
  522. package/docs/zh-CN/concepts/features.md +59 -0
  523. package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
  524. package/docs/zh-CN/concepts/memory.md +412 -0
  525. package/docs/zh-CN/concepts/messages.md +141 -0
  526. package/docs/zh-CN/concepts/model-failover.md +145 -0
  527. package/docs/zh-CN/concepts/model-providers.md +606 -0
  528. package/docs/zh-CN/concepts/models.md +225 -0
  529. package/docs/zh-CN/concepts/multi-agent.md +372 -0
  530. package/docs/zh-CN/concepts/oauth.md +164 -0
  531. package/docs/zh-CN/concepts/presence.md +99 -0
  532. package/docs/zh-CN/concepts/queue.md +94 -0
  533. package/docs/zh-CN/concepts/retry.md +76 -0
  534. package/docs/zh-CN/concepts/session-pruning.md +129 -0
  535. package/docs/zh-CN/concepts/session-tool.md +200 -0
  536. package/docs/zh-CN/concepts/session.md +166 -0
  537. package/docs/zh-CN/concepts/streaming.md +133 -0
  538. package/docs/zh-CN/concepts/system-prompt.md +101 -0
  539. package/docs/zh-CN/concepts/timezone.md +96 -0
  540. package/docs/zh-CN/concepts/typebox.md +284 -0
  541. package/docs/zh-CN/concepts/typing-indicators.md +74 -0
  542. package/docs/zh-CN/concepts/usage-tracking.md +42 -0
  543. package/docs/zh-CN/date-time.md +129 -0
  544. package/docs/zh-CN/debug/node-issue.md +90 -0
  545. package/docs/zh-CN/diagnostics/flags.md +98 -0
  546. package/docs/zh-CN/gateway/authentication.md +184 -0
  547. package/docs/zh-CN/gateway/background-process.md +100 -0
  548. package/docs/zh-CN/gateway/bonjour.md +174 -0
  549. package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
  550. package/docs/zh-CN/gateway/cli-backends.md +213 -0
  551. package/docs/zh-CN/gateway/configuration-examples.md +587 -0
  552. package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
  553. package/docs/zh-CN/gateway/configuration.md +640 -0
  554. package/docs/zh-CN/gateway/discovery.md +123 -0
  555. package/docs/zh-CN/gateway/doctor.md +238 -0
  556. package/docs/zh-CN/gateway/gateway-lock.md +41 -0
  557. package/docs/zh-CN/gateway/health.md +42 -0
  558. package/docs/zh-CN/gateway/heartbeat.md +274 -0
  559. package/docs/zh-CN/gateway/index.md +335 -0
  560. package/docs/zh-CN/gateway/local-models.md +159 -0
  561. package/docs/zh-CN/gateway/logging.md +114 -0
  562. package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
  563. package/docs/zh-CN/gateway/network-model.md +23 -0
  564. package/docs/zh-CN/gateway/openai-http-api.md +125 -0
  565. package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
  566. package/docs/zh-CN/gateway/pairing.md +99 -0
  567. package/docs/zh-CN/gateway/protocol.md +220 -0
  568. package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
  569. package/docs/zh-CN/gateway/remote.md +133 -0
  570. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
  571. package/docs/zh-CN/gateway/sandboxing.md +188 -0
  572. package/docs/zh-CN/gateway/security/index.md +777 -0
  573. package/docs/zh-CN/gateway/tailscale.md +124 -0
  574. package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
  575. package/docs/zh-CN/gateway/troubleshooting.md +771 -0
  576. package/docs/zh-CN/help/debugging.md +160 -0
  577. package/docs/zh-CN/help/environment.md +88 -0
  578. package/docs/zh-CN/help/faq.md +2640 -0
  579. package/docs/zh-CN/help/index.md +28 -0
  580. package/docs/zh-CN/help/scripts.md +35 -0
  581. package/docs/zh-CN/help/testing.md +375 -0
  582. package/docs/zh-CN/help/troubleshooting.md +104 -0
  583. package/docs/zh-CN/index.md +186 -0
  584. package/docs/zh-CN/install/ansible.md +215 -0
  585. package/docs/zh-CN/install/bun.md +65 -0
  586. package/docs/zh-CN/install/development-channels.md +81 -0
  587. package/docs/zh-CN/install/docker.md +532 -0
  588. package/docs/zh-CN/install/exe-dev.md +133 -0
  589. package/docs/zh-CN/install/fly.md +490 -0
  590. package/docs/zh-CN/install/gcp.md +510 -0
  591. package/docs/zh-CN/install/hetzner.md +337 -0
  592. package/docs/zh-CN/install/index.md +235 -0
  593. package/docs/zh-CN/install/installer.md +422 -0
  594. package/docs/zh-CN/install/macos-vm.md +288 -0
  595. package/docs/zh-CN/install/migrating.md +199 -0
  596. package/docs/zh-CN/install/nix.md +99 -0
  597. package/docs/zh-CN/install/node.md +8 -0
  598. package/docs/zh-CN/install/northflank.mdx +60 -0
  599. package/docs/zh-CN/install/railway.mdx +106 -0
  600. package/docs/zh-CN/install/render.mdx +169 -0
  601. package/docs/zh-CN/install/uninstall.md +135 -0
  602. package/docs/zh-CN/install/updating.md +233 -0
  603. package/docs/zh-CN/logging.md +329 -0
  604. package/docs/zh-CN/network.md +59 -0
  605. package/docs/zh-CN/nodes/audio.md +120 -0
  606. package/docs/zh-CN/nodes/camera.md +162 -0
  607. package/docs/zh-CN/nodes/images.md +79 -0
  608. package/docs/zh-CN/nodes/index.md +348 -0
  609. package/docs/zh-CN/nodes/location-command.md +120 -0
  610. package/docs/zh-CN/nodes/media-understanding.md +380 -0
  611. package/docs/zh-CN/nodes/talk.md +97 -0
  612. package/docs/zh-CN/nodes/troubleshooting.md +8 -0
  613. package/docs/zh-CN/nodes/voicewake.md +72 -0
  614. package/docs/zh-CN/perplexity.md +102 -0
  615. package/docs/zh-CN/pi-dev.md +77 -0
  616. package/docs/zh-CN/pi.md +619 -0
  617. package/docs/zh-CN/platforms/android.md +155 -0
  618. package/docs/zh-CN/platforms/digitalocean.md +273 -0
  619. package/docs/zh-CN/platforms/index.md +60 -0
  620. package/docs/zh-CN/platforms/ios.md +114 -0
  621. package/docs/zh-CN/platforms/linux.md +100 -0
  622. package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
  623. package/docs/zh-CN/platforms/mac/canvas.md +128 -0
  624. package/docs/zh-CN/platforms/mac/child-process.md +73 -0
  625. package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
  626. package/docs/zh-CN/platforms/mac/health.md +41 -0
  627. package/docs/zh-CN/platforms/mac/icon.md +38 -0
  628. package/docs/zh-CN/platforms/mac/logging.md +64 -0
  629. package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
  630. package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
  631. package/docs/zh-CN/platforms/mac/permissions.md +46 -0
  632. package/docs/zh-CN/platforms/mac/remote.md +90 -0
  633. package/docs/zh-CN/platforms/mac/signing.md +54 -0
  634. package/docs/zh-CN/platforms/mac/skills.md +40 -0
  635. package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
  636. package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
  637. package/docs/zh-CN/platforms/mac/webchat.md +43 -0
  638. package/docs/zh-CN/platforms/mac/xpc.md +68 -0
  639. package/docs/zh-CN/platforms/macos.md +193 -0
  640. package/docs/zh-CN/platforms/oracle.md +310 -0
  641. package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
  642. package/docs/zh-CN/platforms/windows.md +247 -0
  643. package/docs/zh-CN/plugins/agent-tools.md +99 -0
  644. package/docs/zh-CN/plugins/manifest.md +68 -0
  645. package/docs/zh-CN/plugins/voice-call.md +250 -0
  646. package/docs/zh-CN/plugins/zalouser.md +88 -0
  647. package/docs/zh-CN/prose.md +141 -0
  648. package/docs/zh-CN/providers/anthropic.md +265 -0
  649. package/docs/zh-CN/providers/bedrock.md +170 -0
  650. package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
  651. package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
  652. package/docs/zh-CN/providers/deepgram.md +97 -0
  653. package/docs/zh-CN/providers/github-copilot.md +67 -0
  654. package/docs/zh-CN/providers/glm.md +50 -0
  655. package/docs/zh-CN/providers/huggingface.md +216 -0
  656. package/docs/zh-CN/providers/index.md +69 -0
  657. package/docs/zh-CN/providers/kilocode.md +80 -0
  658. package/docs/zh-CN/providers/litellm.md +160 -0
  659. package/docs/zh-CN/providers/minimax.md +222 -0
  660. package/docs/zh-CN/providers/mistral.md +61 -0
  661. package/docs/zh-CN/providers/models.md +51 -0
  662. package/docs/zh-CN/providers/moonshot.md +182 -0
  663. package/docs/zh-CN/providers/nvidia.md +62 -0
  664. package/docs/zh-CN/providers/ollama.md +359 -0
  665. package/docs/zh-CN/providers/openai.md +308 -0
  666. package/docs/zh-CN/providers/opencode-go.md +52 -0
  667. package/docs/zh-CN/providers/opencode.md +71 -0
  668. package/docs/zh-CN/providers/openrouter.md +44 -0
  669. package/docs/zh-CN/providers/qianfan.md +45 -0
  670. package/docs/zh-CN/providers/qwen.md +55 -0
  671. package/docs/zh-CN/providers/sglang.md +111 -0
  672. package/docs/zh-CN/providers/synthetic.md +106 -0
  673. package/docs/zh-CN/providers/together.md +72 -0
  674. package/docs/zh-CN/providers/venice.md +289 -0
  675. package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
  676. package/docs/zh-CN/providers/xiaomi.md +93 -0
  677. package/docs/zh-CN/providers/zai.md +53 -0
  678. package/docs/zh-CN/reference/AGENTS.default.md +131 -0
  679. package/docs/zh-CN/reference/RELEASING.md +48 -0
  680. package/docs/zh-CN/reference/api-usage-costs.md +141 -0
  681. package/docs/zh-CN/reference/credits.md +34 -0
  682. package/docs/zh-CN/reference/device-models.md +54 -0
  683. package/docs/zh-CN/reference/rpc.md +48 -0
  684. package/docs/zh-CN/reference/session-management-compaction.md +287 -0
  685. package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
  686. package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
  687. package/docs/zh-CN/reference/templates/BOOT.md +17 -0
  688. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
  689. package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
  690. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
  691. package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
  692. package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
  693. package/docs/zh-CN/reference/templates/SOUL.md +49 -0
  694. package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
  695. package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
  696. package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
  697. package/docs/zh-CN/reference/templates/USER.md +30 -0
  698. package/docs/zh-CN/reference/test.md +57 -0
  699. package/docs/zh-CN/reference/token-use.md +119 -0
  700. package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
  701. package/docs/zh-CN/reference/wizard.md +242 -0
  702. package/docs/zh-CN/security/formal-verification.md +171 -0
  703. package/docs/zh-CN/start/bootstrapping.md +9 -0
  704. package/docs/zh-CN/start/docs-directory.md +70 -0
  705. package/docs/zh-CN/start/getting-started.md +143 -0
  706. package/docs/zh-CN/start/hubs.md +194 -0
  707. package/docs/zh-CN/start/lore.md +226 -0
  708. package/docs/zh-CN/start/onboarding-overview.md +58 -0
  709. package/docs/zh-CN/start/onboarding.md +105 -0
  710. package/docs/zh-CN/start/openclaw.md +248 -0
  711. package/docs/zh-CN/start/quickstart.md +88 -0
  712. package/docs/zh-CN/start/setup.md +153 -0
  713. package/docs/zh-CN/start/showcase.md +423 -0
  714. package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
  715. package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
  716. package/docs/zh-CN/start/wizard.md +132 -0
  717. package/docs/zh-CN/tools/agent-send.md +59 -0
  718. package/docs/zh-CN/tools/apply-patch.md +57 -0
  719. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
  720. package/docs/zh-CN/tools/browser-login.md +75 -0
  721. package/docs/zh-CN/tools/browser.md +553 -0
  722. package/docs/zh-CN/tools/chrome-extension.md +183 -0
  723. package/docs/zh-CN/tools/clawhub.md +209 -0
  724. package/docs/zh-CN/tools/creating-skills.md +61 -0
  725. package/docs/zh-CN/tools/elevated.md +64 -0
  726. package/docs/zh-CN/tools/exec-approvals.md +234 -0
  727. package/docs/zh-CN/tools/exec.md +169 -0
  728. package/docs/zh-CN/tools/firecrawl.md +68 -0
  729. package/docs/zh-CN/tools/index.md +515 -0
  730. package/docs/zh-CN/tools/llm-task.md +117 -0
  731. package/docs/zh-CN/tools/lobster.md +349 -0
  732. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
  733. package/docs/zh-CN/tools/plugin.md +1612 -0
  734. package/docs/zh-CN/tools/reactions.md +29 -0
  735. package/docs/zh-CN/tools/skills-config.md +78 -0
  736. package/docs/zh-CN/tools/skills.md +279 -0
  737. package/docs/zh-CN/tools/slash-commands.md +205 -0
  738. package/docs/zh-CN/tools/subagents.md +167 -0
  739. package/docs/zh-CN/tools/thinking.md +80 -0
  740. package/docs/zh-CN/tools/web.md +289 -0
  741. package/docs/zh-CN/tts.md +375 -0
  742. package/docs/zh-CN/vps.md +47 -0
  743. package/docs/zh-CN/web/control-ui.md +191 -0
  744. package/docs/zh-CN/web/dashboard.md +53 -0
  745. package/docs/zh-CN/web/index.md +118 -0
  746. package/docs/zh-CN/web/tui.md +166 -0
  747. package/docs/zh-CN/web/webchat.md +56 -0
  748. package/package.json +841 -0
  749. package/quantumclaw.mjs +135 -0
  750. package/skills/1password/SKILL.md +70 -0
  751. package/skills/1password/references/cli-examples.md +29 -0
  752. package/skills/1password/references/get-started.md +17 -0
  753. package/skills/apple-notes/SKILL.md +77 -0
  754. package/skills/apple-reminders/SKILL.md +118 -0
  755. package/skills/bear-notes/SKILL.md +107 -0
  756. package/skills/blogwatcher/SKILL.md +69 -0
  757. package/skills/blucli/SKILL.md +47 -0
  758. package/skills/bluebubbles/SKILL.md +131 -0
  759. package/skills/camsnap/SKILL.md +45 -0
  760. package/skills/canvas/SKILL.md +198 -0
  761. package/skills/clawhub/SKILL.md +77 -0
  762. package/skills/coding-agent/SKILL.md +295 -0
  763. package/skills/discord/SKILL.md +197 -0
  764. package/skills/eightctl/SKILL.md +50 -0
  765. package/skills/gemini/SKILL.md +43 -0
  766. package/skills/gh-issues/SKILL.md +865 -0
  767. package/skills/gifgrep/SKILL.md +79 -0
  768. package/skills/github/SKILL.md +163 -0
  769. package/skills/gog/SKILL.md +116 -0
  770. package/skills/goplaces/SKILL.md +52 -0
  771. package/skills/healthcheck/SKILL.md +245 -0
  772. package/skills/himalaya/SKILL.md +257 -0
  773. package/skills/himalaya/references/configuration.md +184 -0
  774. package/skills/himalaya/references/message-composition.md +199 -0
  775. package/skills/imsg/SKILL.md +122 -0
  776. package/skills/mcporter/SKILL.md +61 -0
  777. package/skills/model-usage/SKILL.md +69 -0
  778. package/skills/model-usage/references/codexbar-cli.md +33 -0
  779. package/skills/model-usage/scripts/model_usage.py +320 -0
  780. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  781. package/skills/nano-pdf/SKILL.md +38 -0
  782. package/skills/node-connect/SKILL.md +142 -0
  783. package/skills/notion/SKILL.md +174 -0
  784. package/skills/obsidian/SKILL.md +81 -0
  785. package/skills/openai-image-gen/SKILL.md +92 -0
  786. package/skills/openai-image-gen/scripts/gen.py +328 -0
  787. package/skills/openai-image-gen/scripts/test_gen.py +140 -0
  788. package/skills/openai-whisper/SKILL.md +38 -0
  789. package/skills/openai-whisper-api/SKILL.md +52 -0
  790. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  791. package/skills/openhue/SKILL.md +112 -0
  792. package/skills/oracle/SKILL.md +125 -0
  793. package/skills/ordercli/SKILL.md +78 -0
  794. package/skills/peekaboo/SKILL.md +190 -0
  795. package/skills/sag/SKILL.md +87 -0
  796. package/skills/session-logs/SKILL.md +115 -0
  797. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  798. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  799. package/skills/skill-creator/SKILL.md +372 -0
  800. package/skills/skill-creator/license.txt +202 -0
  801. package/skills/skill-creator/scripts/init_skill.py +378 -0
  802. package/skills/skill-creator/scripts/package_skill.py +139 -0
  803. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  804. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  805. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  806. package/skills/slack/SKILL.md +144 -0
  807. package/skills/songsee/SKILL.md +49 -0
  808. package/skills/sonoscli/SKILL.md +65 -0
  809. package/skills/spotify-player/SKILL.md +64 -0
  810. package/skills/summarize/SKILL.md +87 -0
  811. package/skills/things-mac/SKILL.md +86 -0
  812. package/skills/tmux/SKILL.md +153 -0
  813. package/skills/tmux/scripts/find-sessions.sh +112 -0
  814. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  815. package/skills/trello/SKILL.md +95 -0
  816. package/skills/video-frames/SKILL.md +46 -0
  817. package/skills/video-frames/scripts/frame.sh +81 -0
  818. package/skills/voice-call/SKILL.md +45 -0
  819. package/skills/wacli/SKILL.md +72 -0
  820. package/skills/weather/SKILL.md +112 -0
  821. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,987 @@
1
+ ---
2
+ summary: "Telegram bot support status, capabilities, and configuration"
3
+ read_when:
4
+ - Working on Telegram features or webhooks
5
+ title: "Telegram"
6
+ ---
7
+
8
+ # Telegram (Bot API)
9
+
10
+ Status: production-ready for bot DMs + groups via grammY. Long polling is the default mode; webhook mode is optional.
11
+
12
+ <CardGroup cols={3}>
13
+ <Card title="Pairing" icon="link" href="/channels/pairing">
14
+ Default DM policy for Telegram is pairing.
15
+ </Card>
16
+ <Card title="Channel troubleshooting" icon="wrench" href="/channels/troubleshooting">
17
+ Cross-channel diagnostics and repair playbooks.
18
+ </Card>
19
+ <Card title="Gateway configuration" icon="settings" href="/gateway/configuration">
20
+ Full channel config patterns and examples.
21
+ </Card>
22
+ </CardGroup>
23
+
24
+ ## Quick setup
25
+
26
+ <Steps>
27
+ <Step title="Create the bot token in BotFather">
28
+ Open Telegram and chat with **@BotFather** (confirm the handle is exactly `@BotFather`).
29
+
30
+ Run `/newbot`, follow prompts, and save the token.
31
+
32
+ </Step>
33
+
34
+ <Step title="Configure token and DM policy">
35
+
36
+ ```json5
37
+ {
38
+ channels: {
39
+ telegram: {
40
+ enabled: true,
41
+ botToken: "123:abc",
42
+ dmPolicy: "pairing",
43
+ groups: { "*": { requireMention: true } },
44
+ },
45
+ },
46
+ }
47
+ ```
48
+
49
+ Env fallback: `TELEGRAM_BOT_TOKEN=...` (default account only).
50
+ Telegram does **not** use `quantumclaw channels login telegram`; configure token in config/env, then start gateway.
51
+
52
+ </Step>
53
+
54
+ <Step title="Start gateway and approve first DM">
55
+
56
+ ```bash
57
+ quantumclaw gateway
58
+ quantumclaw pairing list telegram
59
+ quantumclaw pairing approve telegram <CODE>
60
+ ```
61
+
62
+ Pairing codes expire after 1 hour.
63
+
64
+ </Step>
65
+
66
+ <Step title="Add the bot to a group">
67
+ Add the bot to your group, then set `channels.telegram.groups` and `groupPolicy` to match your access model.
68
+ </Step>
69
+ </Steps>
70
+
71
+ <Note>
72
+ Token resolution order is account-aware. In practice, config values win over env fallback, and `TELEGRAM_BOT_TOKEN` only applies to the default account.
73
+ </Note>
74
+
75
+ ## Telegram side settings
76
+
77
+ <AccordionGroup>
78
+ <Accordion title="Privacy mode and group visibility">
79
+ Telegram bots default to **Privacy Mode**, which limits what group messages they receive.
80
+
81
+ If the bot must see all group messages, either:
82
+
83
+ - disable privacy mode via `/setprivacy`, or
84
+ - make the bot a group admin.
85
+
86
+ When toggling privacy mode, remove + re-add the bot in each group so Telegram applies the change.
87
+
88
+ </Accordion>
89
+
90
+ <Accordion title="Group permissions">
91
+ Admin status is controlled in Telegram group settings.
92
+
93
+ Admin bots receive all group messages, which is useful for always-on group behavior.
94
+
95
+ </Accordion>
96
+
97
+ <Accordion title="Helpful BotFather toggles">
98
+
99
+ - `/setjoingroups` to allow/deny group adds
100
+ - `/setprivacy` for group visibility behavior
101
+
102
+ </Accordion>
103
+ </AccordionGroup>
104
+
105
+ ## Access control and activation
106
+
107
+ <Tabs>
108
+ <Tab title="DM policy">
109
+ `channels.telegram.dmPolicy` controls direct message access:
110
+
111
+ - `pairing` (default)
112
+ - `allowlist` (requires at least one sender ID in `allowFrom`)
113
+ - `open` (requires `allowFrom` to include `"*"`)
114
+ - `disabled`
115
+
116
+ `channels.telegram.allowFrom` accepts numeric Telegram user IDs. `telegram:` / `tg:` prefixes are accepted and normalized.
117
+ `dmPolicy: "allowlist"` with empty `allowFrom` blocks all DMs and is rejected by config validation.
118
+ Onboarding accepts `@username` input and resolves it to numeric IDs.
119
+ If you upgraded and your config contains `@username` allowlist entries, run `quantumclaw doctor --fix` to resolve them (best-effort; requires a Telegram bot token).
120
+ If you previously relied on pairing-store allowlist files, `quantumclaw doctor --fix` can recover entries into `channels.telegram.allowFrom` in allowlist flows (for example when `dmPolicy: "allowlist"` has no explicit IDs yet).
121
+
122
+ For one-owner bots, prefer `dmPolicy: "allowlist"` with explicit numeric `allowFrom` IDs to keep access policy durable in config (instead of depending on previous pairing approvals).
123
+
124
+ ### Finding your Telegram user ID
125
+
126
+ Safer (no third-party bot):
127
+
128
+ 1. DM your bot.
129
+ 2. Run `quantumclaw logs --follow`.
130
+ 3. Read `from.id`.
131
+
132
+ Official Bot API method:
133
+
134
+ ```bash
135
+ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
136
+ ```
137
+
138
+ Third-party method (less private): `@userinfobot` or `@getidsbot`.
139
+
140
+ </Tab>
141
+
142
+ <Tab title="Group policy and allowlists">
143
+ Two controls apply together:
144
+
145
+ 1. **Which groups are allowed** (`channels.telegram.groups`)
146
+ - no `groups` config:
147
+ - with `groupPolicy: "open"`: any group can pass group-ID checks
148
+ - with `groupPolicy: "allowlist"` (default): groups are blocked until you add `groups` entries (or `"*"`)
149
+ - `groups` configured: acts as allowlist (explicit IDs or `"*"`)
150
+
151
+ 2. **Which senders are allowed in groups** (`channels.telegram.groupPolicy`)
152
+ - `open`
153
+ - `allowlist` (default)
154
+ - `disabled`
155
+
156
+ `groupAllowFrom` is used for group sender filtering. If not set, Telegram falls back to `allowFrom`.
157
+ `groupAllowFrom` entries should be numeric Telegram user IDs (`telegram:` / `tg:` prefixes are normalized).
158
+ Do not put Telegram group or supergroup chat IDs in `groupAllowFrom`. Negative chat IDs belong under `channels.telegram.groups`.
159
+ Non-numeric entries are ignored for sender authorization.
160
+ Security boundary (`2026.2.25+`): group sender auth does **not** inherit DM pairing-store approvals.
161
+ Pairing stays DM-only. For groups, set `groupAllowFrom` or per-group/per-topic `allowFrom`.
162
+ Runtime note: if `channels.telegram` is completely missing, runtime defaults to fail-closed `groupPolicy="allowlist"` unless `channels.defaults.groupPolicy` is explicitly set.
163
+
164
+ Example: allow any member in one specific group:
165
+
166
+ ```json5
167
+ {
168
+ channels: {
169
+ telegram: {
170
+ groups: {
171
+ "-1001234567890": {
172
+ groupPolicy: "open",
173
+ requireMention: false,
174
+ },
175
+ },
176
+ },
177
+ },
178
+ }
179
+ ```
180
+
181
+ Example: allow only specific users inside one specific group:
182
+
183
+ ```json5
184
+ {
185
+ channels: {
186
+ telegram: {
187
+ groups: {
188
+ "-1001234567890": {
189
+ requireMention: true,
190
+ allowFrom: ["8734062810", "745123456"],
191
+ },
192
+ },
193
+ },
194
+ },
195
+ }
196
+ ```
197
+
198
+ <Warning>
199
+ Common mistake: `groupAllowFrom` is not a Telegram group allowlist.
200
+
201
+ - Put negative Telegram group or supergroup chat IDs like `-1001234567890` under `channels.telegram.groups`.
202
+ - Put Telegram user IDs like `8734062810` under `groupAllowFrom` when you want to limit which people inside an allowed group can trigger the bot.
203
+ - Use `groupAllowFrom: ["*"]` only when you want any member of an allowed group to be able to talk to the bot.
204
+ </Warning>
205
+
206
+ </Tab>
207
+
208
+ <Tab title="Mention behavior">
209
+ Group replies require mention by default.
210
+
211
+ Mention can come from:
212
+
213
+ - native `@botusername` mention, or
214
+ - mention patterns in:
215
+ - `agents.list[].groupChat.mentionPatterns`
216
+ - `messages.groupChat.mentionPatterns`
217
+
218
+ Session-level command toggles:
219
+
220
+ - `/activation always`
221
+ - `/activation mention`
222
+
223
+ These update session state only. Use config for persistence.
224
+
225
+ Persistent config example:
226
+
227
+ ```json5
228
+ {
229
+ channels: {
230
+ telegram: {
231
+ groups: {
232
+ "*": { requireMention: false },
233
+ },
234
+ },
235
+ },
236
+ }
237
+ ```
238
+
239
+ Getting the group chat ID:
240
+
241
+ - forward a group message to `@userinfobot` / `@getidsbot`
242
+ - or read `chat.id` from `quantumclaw logs --follow`
243
+ - or inspect Bot API `getUpdates`
244
+
245
+ </Tab>
246
+ </Tabs>
247
+
248
+ ## Runtime behavior
249
+
250
+ - Telegram is owned by the gateway process.
251
+ - Routing is deterministic: Telegram inbound replies back to Telegram (the model does not pick channels).
252
+ - Inbound messages normalize into the shared channel envelope with reply metadata and media placeholders.
253
+ - Group sessions are isolated by group ID. Forum topics append `:topic:<threadId>` to keep topics isolated.
254
+ - DM messages can carry `message_thread_id`; QuantumClaw routes them with thread-aware session keys and preserves thread ID for replies.
255
+ - Long polling uses grammY runner with per-chat/per-thread sequencing. Overall runner sink concurrency uses `agents.defaults.maxConcurrent`.
256
+ - Telegram Bot API has no read-receipt support (`sendReadReceipts` does not apply).
257
+
258
+ ## Feature reference
259
+
260
+ <AccordionGroup>
261
+ <Accordion title="Live stream preview (message edits)">
262
+ QuantumClaw can stream partial replies in real time:
263
+
264
+ - direct chats: preview message + `editMessageText`
265
+ - groups/topics: preview message + `editMessageText`
266
+
267
+ Requirement:
268
+
269
+ - `channels.telegram.streaming` is `off | partial | block | progress` (default: `partial`)
270
+ - `progress` maps to `partial` on Telegram (compat with cross-channel naming)
271
+ - legacy `channels.telegram.streamMode` and boolean `streaming` values are auto-mapped
272
+
273
+ For text-only replies:
274
+
275
+ - DM: QuantumClaw keeps the same preview message and performs a final edit in place (no second message)
276
+ - group/topic: QuantumClaw keeps the same preview message and performs a final edit in place (no second message)
277
+
278
+ For complex replies (for example media payloads), QuantumClaw falls back to normal final delivery and then cleans up the preview message.
279
+
280
+ Preview streaming is separate from block streaming. When block streaming is explicitly enabled for Telegram, QuantumClaw skips the preview stream to avoid double-streaming.
281
+
282
+ If native draft transport is unavailable/rejected, QuantumClaw automatically falls back to `sendMessage` + `editMessageText`.
283
+
284
+ Telegram-only reasoning stream:
285
+
286
+ - `/reasoning stream` sends reasoning to the live preview while generating
287
+ - final answer is sent without reasoning text
288
+
289
+ </Accordion>
290
+
291
+ <Accordion title="Formatting and HTML fallback">
292
+ Outbound text uses Telegram `parse_mode: "HTML"`.
293
+
294
+ - Markdown-ish text is rendered to Telegram-safe HTML.
295
+ - Raw model HTML is escaped to reduce Telegram parse failures.
296
+ - If Telegram rejects parsed HTML, QuantumClaw retries as plain text.
297
+
298
+ Link previews are enabled by default and can be disabled with `channels.telegram.linkPreview: false`.
299
+
300
+ </Accordion>
301
+
302
+ <Accordion title="Native commands and custom commands">
303
+ Telegram command menu registration is handled at startup with `setMyCommands`.
304
+
305
+ Native command defaults:
306
+
307
+ - `commands.native: "auto"` enables native commands for Telegram
308
+
309
+ Add custom command menu entries:
310
+
311
+ ```json5
312
+ {
313
+ channels: {
314
+ telegram: {
315
+ customCommands: [
316
+ { command: "backup", description: "Git backup" },
317
+ { command: "generate", description: "Create an image" },
318
+ ],
319
+ },
320
+ },
321
+ }
322
+ ```
323
+
324
+ Rules:
325
+
326
+ - names are normalized (strip leading `/`, lowercase)
327
+ - valid pattern: `a-z`, `0-9`, `_`, length `1..32`
328
+ - custom commands cannot override native commands
329
+ - conflicts/duplicates are skipped and logged
330
+
331
+ Notes:
332
+
333
+ - custom commands are menu entries only; they do not auto-implement behavior
334
+ - plugin/skill commands can still work when typed even if not shown in Telegram menu
335
+
336
+ If native commands are disabled, built-ins are removed. Custom/plugin commands may still register if configured.
337
+
338
+ Common setup failures:
339
+
340
+ - `setMyCommands failed` with `BOT_COMMANDS_TOO_MUCH` means the Telegram menu still overflowed after trimming; reduce plugin/skill/custom commands or disable `channels.telegram.commands.native`.
341
+ - `setMyCommands failed` with network/fetch errors usually means outbound DNS/HTTPS to `api.telegram.org` is blocked.
342
+
343
+ ### Device pairing commands (`device-pair` plugin)
344
+
345
+ When the `device-pair` plugin is installed:
346
+
347
+ 1. `/pair` generates setup code
348
+ 2. paste code in iOS app
349
+ 3. `/pair pending` lists pending requests (including role/scopes)
350
+ 4. approve the request:
351
+ - `/pair approve <requestId>` for explicit approval
352
+ - `/pair approve` when there is only one pending request
353
+ - `/pair approve latest` for most recent
354
+
355
+ If a device retries with changed auth details (for example role/scopes/public key), the previous pending request is superseded and the new request uses a different `requestId`. Re-run `/pair pending` before approving.
356
+
357
+ More details: [Pairing](/channels/pairing#pair-via-telegram-recommended-for-ios).
358
+
359
+ </Accordion>
360
+
361
+ <Accordion title="Inline buttons">
362
+ Configure inline keyboard scope:
363
+
364
+ ```json5
365
+ {
366
+ channels: {
367
+ telegram: {
368
+ capabilities: {
369
+ inlineButtons: "allowlist",
370
+ },
371
+ },
372
+ },
373
+ }
374
+ ```
375
+
376
+ Per-account override:
377
+
378
+ ```json5
379
+ {
380
+ channels: {
381
+ telegram: {
382
+ accounts: {
383
+ main: {
384
+ capabilities: {
385
+ inlineButtons: "allowlist",
386
+ },
387
+ },
388
+ },
389
+ },
390
+ },
391
+ }
392
+ ```
393
+
394
+ Scopes:
395
+
396
+ - `off`
397
+ - `dm`
398
+ - `group`
399
+ - `all`
400
+ - `allowlist` (default)
401
+
402
+ Legacy `capabilities: ["inlineButtons"]` maps to `inlineButtons: "all"`.
403
+
404
+ Message action example:
405
+
406
+ ```json5
407
+ {
408
+ action: "send",
409
+ channel: "telegram",
410
+ to: "123456789",
411
+ message: "Choose an option:",
412
+ buttons: [
413
+ [
414
+ { text: "Yes", callback_data: "yes" },
415
+ { text: "No", callback_data: "no" },
416
+ ],
417
+ [{ text: "Cancel", callback_data: "cancel" }],
418
+ ],
419
+ }
420
+ ```
421
+
422
+ Callback clicks are passed to the agent as text:
423
+ `callback_data: <value>`
424
+
425
+ </Accordion>
426
+
427
+ <Accordion title="Telegram message actions for agents and automation">
428
+ Telegram tool actions include:
429
+
430
+ - `sendMessage` (`to`, `content`, optional `mediaUrl`, `replyToMessageId`, `messageThreadId`)
431
+ - `react` (`chatId`, `messageId`, `emoji`)
432
+ - `deleteMessage` (`chatId`, `messageId`)
433
+ - `editMessage` (`chatId`, `messageId`, `content`)
434
+ - `createForumTopic` (`chatId`, `name`, optional `iconColor`, `iconCustomEmojiId`)
435
+
436
+ Channel message actions expose ergonomic aliases (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
437
+
438
+ Gating controls:
439
+
440
+ - `channels.telegram.actions.sendMessage`
441
+ - `channels.telegram.actions.deleteMessage`
442
+ - `channels.telegram.actions.reactions`
443
+ - `channels.telegram.actions.sticker` (default: disabled)
444
+
445
+ Note: `edit` and `topic-create` are currently enabled by default and do not have separate `channels.telegram.actions.*` toggles.
446
+ Runtime sends use the active config/secrets snapshot (startup/reload), so action paths do not perform ad-hoc SecretRef re-resolution per send.
447
+
448
+ Reaction removal semantics: [/tools/reactions](/tools/reactions)
449
+
450
+ </Accordion>
451
+
452
+ <Accordion title="Reply threading tags">
453
+ Telegram supports explicit reply threading tags in generated output:
454
+
455
+ - `[[reply_to_current]]` replies to the triggering message
456
+ - `[[reply_to:<id>]]` replies to a specific Telegram message ID
457
+
458
+ `channels.telegram.replyToMode` controls handling:
459
+
460
+ - `off` (default)
461
+ - `first`
462
+ - `all`
463
+
464
+ Note: `off` disables implicit reply threading. Explicit `[[reply_to_*]]` tags are still honored.
465
+
466
+ </Accordion>
467
+
468
+ <Accordion title="Forum topics and thread behavior">
469
+ Forum supergroups:
470
+
471
+ - topic session keys append `:topic:<threadId>`
472
+ - replies and typing target the topic thread
473
+ - topic config path:
474
+ `channels.telegram.groups.<chatId>.topics.<threadId>`
475
+
476
+ General topic (`threadId=1`) special-case:
477
+
478
+ - message sends omit `message_thread_id` (Telegram rejects `sendMessage(...thread_id=1)`)
479
+ - typing actions still include `message_thread_id`
480
+
481
+ Topic inheritance: topic entries inherit group settings unless overridden (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`).
482
+ `agentId` is topic-only and does not inherit from group defaults.
483
+
484
+ **Per-topic agent routing**: Each topic can route to a different agent by setting `agentId` in the topic config. This gives each topic its own isolated workspace, memory, and session. Example:
485
+
486
+ ```json5
487
+ {
488
+ channels: {
489
+ telegram: {
490
+ groups: {
491
+ "-1001234567890": {
492
+ topics: {
493
+ "1": { agentId: "main" }, // General topic → main agent
494
+ "3": { agentId: "zu" }, // Dev topic → zu agent
495
+ "5": { agentId: "coder" } // Code review → coder agent
496
+ }
497
+ }
498
+ }
499
+ }
500
+ }
501
+ }
502
+ ```
503
+
504
+ Each topic then has its own session key: `agent:zu:telegram:group:-1001234567890:topic:3`
505
+
506
+ **Persistent ACP topic binding**: Forum topics can pin ACP harness sessions through top-level typed ACP bindings:
507
+
508
+ - `bindings[]` with `type: "acp"` and `match.channel: "telegram"`
509
+
510
+ Example:
511
+
512
+ ```json5
513
+ {
514
+ agents: {
515
+ list: [
516
+ {
517
+ id: "codex",
518
+ runtime: {
519
+ type: "acp",
520
+ acp: {
521
+ agent: "codex",
522
+ backend: "acpx",
523
+ mode: "persistent",
524
+ cwd: "/workspace/quantumclaw",
525
+ },
526
+ },
527
+ },
528
+ ],
529
+ },
530
+ bindings: [
531
+ {
532
+ type: "acp",
533
+ agentId: "codex",
534
+ match: {
535
+ channel: "telegram",
536
+ accountId: "default",
537
+ peer: { kind: "group", id: "-1001234567890:topic:42" },
538
+ },
539
+ },
540
+ ],
541
+ channels: {
542
+ telegram: {
543
+ groups: {
544
+ "-1001234567890": {
545
+ topics: {
546
+ "42": {
547
+ requireMention: false,
548
+ },
549
+ },
550
+ },
551
+ },
552
+ },
553
+ },
554
+ }
555
+ ```
556
+
557
+ This is currently scoped to forum topics in groups and supergroups.
558
+
559
+ **Thread-bound ACP spawn from chat**:
560
+
561
+ - `/acp spawn <agent> --thread here|auto` can bind the current Telegram topic to a new ACP session.
562
+ - Follow-up topic messages route to the bound ACP session directly (no `/acp steer` required).
563
+ - QuantumClaw pins the spawn confirmation message in-topic after a successful bind.
564
+ - Requires `channels.telegram.threadBindings.spawnAcpSessions=true`.
565
+
566
+ Template context includes:
567
+
568
+ - `MessageThreadId`
569
+ - `IsForum`
570
+
571
+ DM thread behavior:
572
+
573
+ - private chats with `message_thread_id` keep DM routing but use thread-aware session keys/reply targets.
574
+
575
+ </Accordion>
576
+
577
+ <Accordion title="Audio, video, and stickers">
578
+ ### Audio messages
579
+
580
+ Telegram distinguishes voice notes vs audio files.
581
+
582
+ - default: audio file behavior
583
+ - tag `[[audio_as_voice]]` in agent reply to force voice-note send
584
+
585
+ Message action example:
586
+
587
+ ```json5
588
+ {
589
+ action: "send",
590
+ channel: "telegram",
591
+ to: "123456789",
592
+ media: "https://example.com/voice.ogg",
593
+ asVoice: true,
594
+ }
595
+ ```
596
+
597
+ ### Video messages
598
+
599
+ Telegram distinguishes video files vs video notes.
600
+
601
+ Message action example:
602
+
603
+ ```json5
604
+ {
605
+ action: "send",
606
+ channel: "telegram",
607
+ to: "123456789",
608
+ media: "https://example.com/video.mp4",
609
+ asVideoNote: true,
610
+ }
611
+ ```
612
+
613
+ Video notes do not support captions; provided message text is sent separately.
614
+
615
+ ### Stickers
616
+
617
+ Inbound sticker handling:
618
+
619
+ - static WEBP: downloaded and processed (placeholder `<media:sticker>`)
620
+ - animated TGS: skipped
621
+ - video WEBM: skipped
622
+
623
+ Sticker context fields:
624
+
625
+ - `Sticker.emoji`
626
+ - `Sticker.setName`
627
+ - `Sticker.fileId`
628
+ - `Sticker.fileUniqueId`
629
+ - `Sticker.cachedDescription`
630
+
631
+ Sticker cache file:
632
+
633
+ - `~/.quantumclaw/telegram/sticker-cache.json`
634
+
635
+ Stickers are described once (when possible) and cached to reduce repeated vision calls.
636
+
637
+ Enable sticker actions:
638
+
639
+ ```json5
640
+ {
641
+ channels: {
642
+ telegram: {
643
+ actions: {
644
+ sticker: true,
645
+ },
646
+ },
647
+ },
648
+ }
649
+ ```
650
+
651
+ Send sticker action:
652
+
653
+ ```json5
654
+ {
655
+ action: "sticker",
656
+ channel: "telegram",
657
+ to: "123456789",
658
+ fileId: "CAACAgIAAxkBAAI...",
659
+ }
660
+ ```
661
+
662
+ Search cached stickers:
663
+
664
+ ```json5
665
+ {
666
+ action: "sticker-search",
667
+ channel: "telegram",
668
+ query: "cat waving",
669
+ limit: 5,
670
+ }
671
+ ```
672
+
673
+ </Accordion>
674
+
675
+ <Accordion title="Reaction notifications">
676
+ Telegram reactions arrive as `message_reaction` updates (separate from message payloads).
677
+
678
+ When enabled, QuantumClaw enqueues system events like:
679
+
680
+ - `Telegram reaction added: 👍 by Alice (@alice) on msg 42`
681
+
682
+ Config:
683
+
684
+ - `channels.telegram.reactionNotifications`: `off | own | all` (default: `own`)
685
+ - `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` (default: `minimal`)
686
+
687
+ Notes:
688
+
689
+ - `own` means user reactions to bot-sent messages only (best-effort via sent-message cache).
690
+ - Reaction events still respect Telegram access controls (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); unauthorized senders are dropped.
691
+ - Telegram does not provide thread IDs in reaction updates.
692
+ - non-forum groups route to group chat session
693
+ - forum groups route to the group general-topic session (`:topic:1`), not the exact originating topic
694
+
695
+ `allowed_updates` for polling/webhook include `message_reaction` automatically.
696
+
697
+ </Accordion>
698
+
699
+ <Accordion title="Ack reactions">
700
+ `ackReaction` sends an acknowledgement emoji while QuantumClaw is processing an inbound message.
701
+
702
+ Resolution order:
703
+
704
+ - `channels.telegram.accounts.<accountId>.ackReaction`
705
+ - `channels.telegram.ackReaction`
706
+ - `messages.ackReaction`
707
+ - agent identity emoji fallback (`agents.list[].identity.emoji`, else "👀")
708
+
709
+ Notes:
710
+
711
+ - Telegram expects unicode emoji (for example "👀").
712
+ - Use `""` to disable the reaction for a channel or account.
713
+
714
+ </Accordion>
715
+
716
+ <Accordion title="Config writes from Telegram events and commands">
717
+ Channel config writes are enabled by default (`configWrites !== false`).
718
+
719
+ Telegram-triggered writes include:
720
+
721
+ - group migration events (`migrate_to_chat_id`) to update `channels.telegram.groups`
722
+ - `/config set` and `/config unset` (requires command enablement)
723
+
724
+ Disable:
725
+
726
+ ```json5
727
+ {
728
+ channels: {
729
+ telegram: {
730
+ configWrites: false,
731
+ },
732
+ },
733
+ }
734
+ ```
735
+
736
+ </Accordion>
737
+
738
+ <Accordion title="Long polling vs webhook">
739
+ Default: long polling.
740
+
741
+ Webhook mode:
742
+
743
+ - set `channels.telegram.webhookUrl`
744
+ - set `channels.telegram.webhookSecret` (required when webhook URL is set)
745
+ - optional `channels.telegram.webhookPath` (default `/telegram-webhook`)
746
+ - optional `channels.telegram.webhookHost` (default `127.0.0.1`)
747
+ - optional `channels.telegram.webhookPort` (default `8787`)
748
+
749
+ Default local listener for webhook mode binds to `127.0.0.1:8787`.
750
+
751
+ If your public endpoint differs, place a reverse proxy in front and point `webhookUrl` at the public URL.
752
+ Set `webhookHost` (for example `0.0.0.0`) when you intentionally need external ingress.
753
+
754
+ </Accordion>
755
+
756
+ <Accordion title="Limits, retry, and CLI targets">
757
+ - `channels.telegram.textChunkLimit` default is 4000.
758
+ - `channels.telegram.chunkMode="newline"` prefers paragraph boundaries (blank lines) before length splitting.
759
+ - `channels.telegram.mediaMaxMb` (default 100) caps inbound and outbound Telegram media size.
760
+ - `channels.telegram.timeoutSeconds` overrides Telegram API client timeout (if unset, grammY default applies).
761
+ - group context history uses `channels.telegram.historyLimit` or `messages.groupChat.historyLimit` (default 50); `0` disables.
762
+ - DM history controls:
763
+ - `channels.telegram.dmHistoryLimit`
764
+ - `channels.telegram.dms["<user_id>"].historyLimit`
765
+ - `channels.telegram.retry` config applies to Telegram send helpers (CLI/tools/actions) for recoverable outbound API errors.
766
+
767
+ CLI send target can be numeric chat ID or username:
768
+
769
+ ```bash
770
+ quantumclaw message send --channel telegram --target 123456789 --message "hi"
771
+ quantumclaw message send --channel telegram --target @name --message "hi"
772
+ ```
773
+
774
+ Telegram polls use `quantumclaw message poll` and support forum topics:
775
+
776
+ ```bash
777
+ quantumclaw message poll --channel telegram --target 123456789 \
778
+ --poll-question "Ship it?" --poll-option "Yes" --poll-option "No"
779
+ quantumclaw message poll --channel telegram --target -1001234567890:topic:42 \
780
+ --poll-question "Pick a time" --poll-option "10am" --poll-option "2pm" \
781
+ --poll-duration-seconds 300 --poll-public
782
+ ```
783
+
784
+ Telegram-only poll flags:
785
+
786
+ - `--poll-duration-seconds` (5-600)
787
+ - `--poll-anonymous`
788
+ - `--poll-public`
789
+ - `--thread-id` for forum topics (or use a `:topic:` target)
790
+
791
+ Telegram send also supports:
792
+
793
+ - `--buttons` for inline keyboards when `channels.telegram.capabilities.inlineButtons` allows it
794
+ - `--force-document` to send outbound images and GIFs as documents instead of compressed photo or animated-media uploads
795
+
796
+ Action gating:
797
+
798
+ - `channels.telegram.actions.sendMessage=false` disables outbound Telegram messages, including polls
799
+ - `channels.telegram.actions.poll=false` disables Telegram poll creation while leaving regular sends enabled
800
+
801
+ </Accordion>
802
+
803
+ <Accordion title="Exec approvals in Telegram">
804
+ Telegram supports exec approvals in approver DMs and can optionally post approval prompts in the originating chat or topic.
805
+
806
+ Config path:
807
+
808
+ - `channels.telegram.execApprovals.enabled`
809
+ - `channels.telegram.execApprovals.approvers`
810
+ - `channels.telegram.execApprovals.target` (`dm` | `channel` | `both`, default: `dm`)
811
+ - `agentFilter`, `sessionFilter`
812
+
813
+ Approvers must be numeric Telegram user IDs. When `enabled` is false or `approvers` is empty, Telegram does not act as an exec approval client. Approval requests fall back to other configured approval routes or the exec approval fallback policy.
814
+
815
+ Delivery rules:
816
+
817
+ - `target: "dm"` sends approval prompts only to configured approver DMs
818
+ - `target: "channel"` sends the prompt back to the originating Telegram chat/topic
819
+ - `target: "both"` sends to approver DMs and the originating chat/topic
820
+
821
+ Only configured approvers can approve or deny. Non-approvers cannot use `/approve` and cannot use Telegram approval buttons.
822
+
823
+ Channel delivery shows the command text in the chat, so only enable `channel` or `both` in trusted groups/topics. When the prompt lands in a forum topic, QuantumClaw preserves the topic for both the approval prompt and the post-approval follow-up.
824
+
825
+ Inline approval buttons also depend on `channels.telegram.capabilities.inlineButtons` allowing the target surface (`dm`, `group`, or `all`).
826
+
827
+ Related docs: [Exec approvals](/tools/exec-approvals)
828
+
829
+ </Accordion>
830
+ </AccordionGroup>
831
+
832
+ ## Troubleshooting
833
+
834
+ <AccordionGroup>
835
+ <Accordion title="Bot does not respond to non mention group messages">
836
+
837
+ - If `requireMention=false`, Telegram privacy mode must allow full visibility.
838
+ - BotFather: `/setprivacy` -> Disable
839
+ - then remove + re-add bot to group
840
+ - `quantumclaw channels status` warns when config expects unmentioned group messages.
841
+ - `quantumclaw channels status --probe` can check explicit numeric group IDs; wildcard `"*"` cannot be membership-probed.
842
+ - quick session test: `/activation always`.
843
+
844
+ </Accordion>
845
+
846
+ <Accordion title="Bot not seeing group messages at all">
847
+
848
+ - when `channels.telegram.groups` exists, group must be listed (or include `"*"`)
849
+ - verify bot membership in group
850
+ - review logs: `quantumclaw logs --follow` for skip reasons
851
+
852
+ </Accordion>
853
+
854
+ <Accordion title="Commands work partially or not at all">
855
+
856
+ - authorize your sender identity (pairing and/or numeric `allowFrom`)
857
+ - command authorization still applies even when group policy is `open`
858
+ - `setMyCommands failed` with `BOT_COMMANDS_TOO_MUCH` means the native menu has too many entries; reduce plugin/skill/custom commands or disable native menus
859
+ - `setMyCommands failed` with network/fetch errors usually indicates DNS/HTTPS reachability issues to `api.telegram.org`
860
+
861
+ </Accordion>
862
+
863
+ <Accordion title="Polling or network instability">
864
+
865
+ - Node 22+ + custom fetch/proxy can trigger immediate abort behavior if AbortSignal types mismatch.
866
+ - Some hosts resolve `api.telegram.org` to IPv6 first; broken IPv6 egress can cause intermittent Telegram API failures.
867
+ - If logs include `TypeError: fetch failed` or `Network request for 'getUpdates' failed!`, QuantumClaw now retries these as recoverable network errors.
868
+ - On VPS hosts with unstable direct egress/TLS, route Telegram API calls through `channels.telegram.proxy`:
869
+
870
+ ```yaml
871
+ channels:
872
+ telegram:
873
+ proxy: socks5://<user>:<password>@proxy-host:1080
874
+ ```
875
+
876
+ - Node 22+ defaults to `autoSelectFamily=true` (except WSL2) and `dnsResultOrder=ipv4first`.
877
+ - If your host is WSL2 or explicitly works better with IPv4-only behavior, force family selection:
878
+
879
+ ```yaml
880
+ channels:
881
+ telegram:
882
+ network:
883
+ autoSelectFamily: false
884
+ ```
885
+
886
+ - Environment overrides (temporary):
887
+ - `QUANTUMCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1`
888
+ - `QUANTUMCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1`
889
+ - `QUANTUMCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first`
890
+ - Validate DNS answers:
891
+
892
+ ```bash
893
+ dig +short api.telegram.org A
894
+ dig +short api.telegram.org AAAA
895
+ ```
896
+
897
+ </Accordion>
898
+ </AccordionGroup>
899
+
900
+ More help: [Channel troubleshooting](/channels/troubleshooting).
901
+
902
+ ## Telegram config reference pointers
903
+
904
+ Primary reference:
905
+
906
+ - `channels.telegram.enabled`: enable/disable channel startup.
907
+ - `channels.telegram.botToken`: bot token (BotFather).
908
+ - `channels.telegram.tokenFile`: read token from a regular file path. Symlinks are rejected.
909
+ - `channels.telegram.dmPolicy`: `pairing | allowlist | open | disabled` (default: pairing).
910
+ - `channels.telegram.allowFrom`: DM allowlist (numeric Telegram user IDs). `allowlist` requires at least one sender ID. `open` requires `"*"`. `quantumclaw doctor --fix` can resolve legacy `@username` entries to IDs and can recover allowlist entries from pairing-store files in allowlist migration flows.
911
+ - `channels.telegram.actions.poll`: enable or disable Telegram poll creation (default: enabled; still requires `sendMessage`).
912
+ - `channels.telegram.defaultTo`: default Telegram target used by CLI `--deliver` when no explicit `--reply-to` is provided.
913
+ - `channels.telegram.groupPolicy`: `open | allowlist | disabled` (default: allowlist).
914
+ - `channels.telegram.groupAllowFrom`: group sender allowlist (numeric Telegram user IDs). `quantumclaw doctor --fix` can resolve legacy `@username` entries to IDs. Non-numeric entries are ignored at auth time. Group auth does not use DM pairing-store fallback (`2026.2.25+`).
915
+ - Multi-account precedence:
916
+ - When two or more account IDs are configured, set `channels.telegram.defaultAccount` (or include `channels.telegram.accounts.default`) to make default routing explicit.
917
+ - If neither is set, QuantumClaw falls back to the first normalized account ID and `quantumclaw doctor` warns.
918
+ - `channels.telegram.accounts.default.allowFrom` and `channels.telegram.accounts.default.groupAllowFrom` apply only to the `default` account.
919
+ - Named accounts inherit `channels.telegram.allowFrom` and `channels.telegram.groupAllowFrom` when account-level values are unset.
920
+ - Named accounts do not inherit `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`.
921
+ - `channels.telegram.groups`: per-group defaults + allowlist (use `"*"` for global defaults).
922
+ - `channels.telegram.groups.<id>.groupPolicy`: per-group override for groupPolicy (`open | allowlist | disabled`).
923
+ - `channels.telegram.groups.<id>.requireMention`: mention gating default.
924
+ - `channels.telegram.groups.<id>.skills`: skill filter (omit = all skills, empty = none).
925
+ - `channels.telegram.groups.<id>.allowFrom`: per-group sender allowlist override.
926
+ - `channels.telegram.groups.<id>.systemPrompt`: extra system prompt for the group.
927
+ - `channels.telegram.groups.<id>.enabled`: disable the group when `false`.
928
+ - `channels.telegram.groups.<id>.topics.<threadId>.*`: per-topic overrides (group fields + topic-only `agentId`).
929
+ - `channels.telegram.groups.<id>.topics.<threadId>.agentId`: route this topic to a specific agent (overrides group-level and binding routing).
930
+ - `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy`: per-topic override for groupPolicy (`open | allowlist | disabled`).
931
+ - `channels.telegram.groups.<id>.topics.<threadId>.requireMention`: per-topic mention gating override.
932
+ - top-level `bindings[]` with `type: "acp"` and canonical topic id `chatId:topic:topicId` in `match.peer.id`: persistent ACP topic binding fields (see [ACP Agents](/tools/acp-agents#channel-specific-settings)).
933
+ - `channels.telegram.direct.<id>.topics.<threadId>.agentId`: route DM topics to a specific agent (same behavior as forum topics).
934
+ - `channels.telegram.execApprovals.enabled`: enable Telegram as a chat-based exec approval client for this account.
935
+ - `channels.telegram.execApprovals.approvers`: Telegram user IDs allowed to approve or deny exec requests. Required when exec approvals are enabled.
936
+ - `channels.telegram.execApprovals.target`: `dm | channel | both` (default: `dm`). `channel` and `both` preserve the originating Telegram topic when present.
937
+ - `channels.telegram.execApprovals.agentFilter`: optional agent ID filter for forwarded approval prompts.
938
+ - `channels.telegram.execApprovals.sessionFilter`: optional session key filter (substring or regex) for forwarded approval prompts.
939
+ - `channels.telegram.accounts.<account>.execApprovals`: per-account override for Telegram exec approval routing and approver authorization.
940
+ - `channels.telegram.capabilities.inlineButtons`: `off | dm | group | all | allowlist` (default: allowlist).
941
+ - `channels.telegram.accounts.<account>.capabilities.inlineButtons`: per-account override.
942
+ - `channels.telegram.commands.nativeSkills`: enable/disable Telegram native skills commands.
943
+ - `channels.telegram.replyToMode`: `off | first | all` (default: `off`).
944
+ - `channels.telegram.textChunkLimit`: outbound chunk size (chars).
945
+ - `channels.telegram.chunkMode`: `length` (default) or `newline` to split on blank lines (paragraph boundaries) before length chunking.
946
+ - `channels.telegram.linkPreview`: toggle link previews for outbound messages (default: true).
947
+ - `channels.telegram.streaming`: `off | partial | block | progress` (live stream preview; default: `partial`; `progress` maps to `partial`; `block` is legacy preview mode compatibility). Telegram preview streaming uses a single preview message that is edited in place.
948
+ - `channels.telegram.mediaMaxMb`: inbound/outbound Telegram media cap (MB, default: 100).
949
+ - `channels.telegram.retry`: retry policy for Telegram send helpers (CLI/tools/actions) on recoverable outbound API errors (attempts, minDelayMs, maxDelayMs, jitter).
950
+ - `channels.telegram.network.autoSelectFamily`: override Node autoSelectFamily (true=enable, false=disable). Defaults to enabled on Node 22+, with WSL2 defaulting to disabled.
951
+ - `channels.telegram.network.dnsResultOrder`: override DNS result order (`ipv4first` or `verbatim`). Defaults to `ipv4first` on Node 22+.
952
+ - `channels.telegram.proxy`: proxy URL for Bot API calls (SOCKS/HTTP).
953
+ - `channels.telegram.webhookUrl`: enable webhook mode (requires `channels.telegram.webhookSecret`).
954
+ - `channels.telegram.webhookSecret`: webhook secret (required when webhookUrl is set).
955
+ - `channels.telegram.webhookPath`: local webhook path (default `/telegram-webhook`).
956
+ - `channels.telegram.webhookHost`: local webhook bind host (default `127.0.0.1`).
957
+ - `channels.telegram.webhookPort`: local webhook bind port (default `8787`).
958
+ - `channels.telegram.actions.reactions`: gate Telegram tool reactions.
959
+ - `channels.telegram.actions.sendMessage`: gate Telegram tool message sends.
960
+ - `channels.telegram.actions.deleteMessage`: gate Telegram tool message deletes.
961
+ - `channels.telegram.actions.sticker`: gate Telegram sticker actions — send and search (default: false).
962
+ - `channels.telegram.reactionNotifications`: `off | own | all` — control which reactions trigger system events (default: `own` when not set).
963
+ - `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — control agent's reaction capability (default: `minimal` when not set).
964
+
965
+ - [Configuration reference - Telegram](/gateway/configuration-reference#telegram)
966
+
967
+ Telegram-specific high-signal fields:
968
+
969
+ - startup/auth: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` must point to a regular file; symlinks are rejected)
970
+ - access control: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, top-level `bindings[]` (`type: "acp"`)
971
+ - exec approvals: `execApprovals`, `accounts.*.execApprovals`
972
+ - command/menu: `commands.native`, `commands.nativeSkills`, `customCommands`
973
+ - threading/replies: `replyToMode`
974
+ - streaming: `streaming` (preview), `blockStreaming`
975
+ - formatting/delivery: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
976
+ - media/network: `mediaMaxMb`, `timeoutSeconds`, `retry`, `network.autoSelectFamily`, `proxy`
977
+ - webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost`
978
+ - actions/capabilities: `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker`
979
+ - reactions: `reactionNotifications`, `reactionLevel`
980
+ - writes/history: `configWrites`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
981
+
982
+ ## Related
983
+
984
+ - [Pairing](/channels/pairing)
985
+ - [Channel routing](/channels/channel-routing)
986
+ - [Multi-agent routing](/concepts/multi-agent)
987
+ - [Troubleshooting](/channels/troubleshooting)