@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,1229 @@
1
+ ---
2
+ summary: "Discord bot support status, capabilities, and configuration"
3
+ read_when:
4
+ - Working on Discord channel features
5
+ title: "Discord"
6
+ ---
7
+
8
+ # Discord (Bot API)
9
+
10
+ Status: ready for DMs and guild channels via the official Discord gateway.
11
+
12
+ <CardGroup cols={3}>
13
+ <Card title="Pairing" icon="link" href="/channels/pairing">
14
+ Discord DMs default to pairing mode.
15
+ </Card>
16
+ <Card title="Slash commands" icon="terminal" href="/tools/slash-commands">
17
+ Native command behavior and command catalog.
18
+ </Card>
19
+ <Card title="Channel troubleshooting" icon="wrench" href="/channels/troubleshooting">
20
+ Cross-channel diagnostics and repair flow.
21
+ </Card>
22
+ </CardGroup>
23
+
24
+ ## Quick setup
25
+
26
+ You will need to create a new application with a bot, add the bot to your server, and pair it to QuantumClaw. We recommend adding your bot to your own private server. If you don't have one yet, [create one first](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (choose **Create My Own > For me and my friends**).
27
+
28
+ <Steps>
29
+ <Step title="Create a Discord application and bot">
30
+ Go to the [Discord Developer Portal](https://discord.com/developers/applications) and click **New Application**. Name it something like "QuantumClaw".
31
+
32
+ Click **Bot** on the sidebar. Set the **Username** to whatever you call your QuantumClaw agent.
33
+
34
+ </Step>
35
+
36
+ <Step title="Enable privileged intents">
37
+ Still on the **Bot** page, scroll down to **Privileged Gateway Intents** and enable:
38
+
39
+ - **Message Content Intent** (required)
40
+ - **Server Members Intent** (recommended; required for role allowlists and name-to-ID matching)
41
+ - **Presence Intent** (optional; only needed for presence updates)
42
+
43
+ </Step>
44
+
45
+ <Step title="Copy your bot token">
46
+ Scroll back up on the **Bot** page and click **Reset Token**.
47
+
48
+ <Note>
49
+ Despite the name, this generates your first token — nothing is being "reset."
50
+ </Note>
51
+
52
+ Copy the token and save it somewhere. This is your **Bot Token** and you will need it shortly.
53
+
54
+ </Step>
55
+
56
+ <Step title="Generate an invite URL and add the bot to your server">
57
+ Click **OAuth2** on the sidebar. You'll generate an invite URL with the right permissions to add the bot to your server.
58
+
59
+ Scroll down to **OAuth2 URL Generator** and enable:
60
+
61
+ - `bot`
62
+ - `applications.commands`
63
+
64
+ A **Bot Permissions** section will appear below. Enable:
65
+
66
+ - View Channels
67
+ - Send Messages
68
+ - Read Message History
69
+ - Embed Links
70
+ - Attach Files
71
+ - Add Reactions (optional)
72
+
73
+ Copy the generated URL at the bottom, paste it into your browser, select your server, and click **Continue** to connect. You should now see your bot in the Discord server.
74
+
75
+ </Step>
76
+
77
+ <Step title="Enable Developer Mode and collect your IDs">
78
+ Back in the Discord app, you need to enable Developer Mode so you can copy internal IDs.
79
+
80
+ 1. Click **User Settings** (gear icon next to your avatar) → **Advanced** → toggle on **Developer Mode**
81
+ 2. Right-click your **server icon** in the sidebar → **Copy Server ID**
82
+ 3. Right-click your **own avatar** → **Copy User ID**
83
+
84
+ Save your **Server ID** and **User ID** alongside your Bot Token — you'll send all three to QuantumClaw in the next step.
85
+
86
+ </Step>
87
+
88
+ <Step title="Allow DMs from server members">
89
+ For pairing to work, Discord needs to allow your bot to DM you. Right-click your **server icon** → **Privacy Settings** → toggle on **Direct Messages**.
90
+
91
+ This lets server members (including bots) send you DMs. Keep this enabled if you want to use Discord DMs with QuantumClaw. If you only plan to use guild channels, you can disable DMs after pairing.
92
+
93
+ </Step>
94
+
95
+ <Step title="Step 0: Set your bot token securely (do not send it in chat)">
96
+ Your Discord bot token is a secret (like a password). Set it on the machine running QuantumClaw before messaging your agent.
97
+
98
+ ```bash
99
+ export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
100
+ quantumclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN --dry-run
101
+ quantumclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
102
+ quantumclaw config set channels.discord.enabled true --strict-json
103
+ quantumclaw gateway
104
+ ```
105
+
106
+ If QuantumClaw is already running as a background service, use `quantumclaw gateway restart` instead.
107
+
108
+ </Step>
109
+
110
+ <Step title="Configure QuantumClaw and pair">
111
+
112
+ <Tabs>
113
+ <Tab title="Ask your agent">
114
+ Chat with your QuantumClaw agent on any existing channel (e.g. Telegram) and tell it. If Discord is your first channel, use the CLI / config tab instead.
115
+
116
+ > "I already set my Discord bot token in config. Please finish Discord setup with User ID `<user_id>` and Server ID `<server_id>`."
117
+ </Tab>
118
+ <Tab title="CLI / config">
119
+ If you prefer file-based config, set:
120
+
121
+ ```json5
122
+ {
123
+ channels: {
124
+ discord: {
125
+ enabled: true,
126
+ token: {
127
+ source: "env",
128
+ provider: "default",
129
+ id: "DISCORD_BOT_TOKEN",
130
+ },
131
+ },
132
+ },
133
+ }
134
+ ```
135
+
136
+ Env fallback for the default account:
137
+
138
+ ```bash
139
+ DISCORD_BOT_TOKEN=...
140
+ ```
141
+
142
+ Plaintext `token` values are supported. SecretRef values are also supported for `channels.discord.token` across env/file/exec providers. See [Secrets Management](/gateway/secrets).
143
+
144
+ </Tab>
145
+ </Tabs>
146
+
147
+ </Step>
148
+
149
+ <Step title="Approve first DM pairing">
150
+ Wait until the gateway is running, then DM your bot in Discord. It will respond with a pairing code.
151
+
152
+ <Tabs>
153
+ <Tab title="Ask your agent">
154
+ Send the pairing code to your agent on your existing channel:
155
+
156
+ > "Approve this Discord pairing code: `<CODE>`"
157
+ </Tab>
158
+ <Tab title="CLI">
159
+
160
+ ```bash
161
+ quantumclaw pairing list discord
162
+ quantumclaw pairing approve discord <CODE>
163
+ ```
164
+
165
+ </Tab>
166
+ </Tabs>
167
+
168
+ Pairing codes expire after 1 hour.
169
+
170
+ You should now be able to chat with your agent in Discord via DM.
171
+
172
+ </Step>
173
+ </Steps>
174
+
175
+ <Note>
176
+ Token resolution is account-aware. Config token values win over env fallback. `DISCORD_BOT_TOKEN` is only used for the default account.
177
+ For advanced outbound calls (message tool/channel actions), an explicit per-call `token` is used for that call. This applies to send and read/probe-style actions (for example read/search/fetch/thread/pins/permissions). Account policy/retry settings still come from the selected account in the active runtime snapshot.
178
+ </Note>
179
+
180
+ ## Recommended: Set up a guild workspace
181
+
182
+ Once DMs are working, you can set up your Discord server as a full workspace where each channel gets its own agent session with its own context. This is recommended for private servers where it's just you and your bot.
183
+
184
+ <Steps>
185
+ <Step title="Add your server to the guild allowlist">
186
+ This enables your agent to respond in any channel on your server, not just DMs.
187
+
188
+ <Tabs>
189
+ <Tab title="Ask your agent">
190
+ > "Add my Discord Server ID `<server_id>` to the guild allowlist"
191
+ </Tab>
192
+ <Tab title="Config">
193
+
194
+ ```json5
195
+ {
196
+ channels: {
197
+ discord: {
198
+ groupPolicy: "allowlist",
199
+ guilds: {
200
+ YOUR_SERVER_ID: {
201
+ requireMention: true,
202
+ users: ["YOUR_USER_ID"],
203
+ },
204
+ },
205
+ },
206
+ },
207
+ }
208
+ ```
209
+
210
+ </Tab>
211
+ </Tabs>
212
+
213
+ </Step>
214
+
215
+ <Step title="Allow responses without @mention">
216
+ By default, your agent only responds in guild channels when @mentioned. For a private server, you probably want it to respond to every message.
217
+
218
+ <Tabs>
219
+ <Tab title="Ask your agent">
220
+ > "Allow my agent to respond on this server without having to be @mentioned"
221
+ </Tab>
222
+ <Tab title="Config">
223
+ Set `requireMention: false` in your guild config:
224
+
225
+ ```json5
226
+ {
227
+ channels: {
228
+ discord: {
229
+ guilds: {
230
+ YOUR_SERVER_ID: {
231
+ requireMention: false,
232
+ },
233
+ },
234
+ },
235
+ },
236
+ }
237
+ ```
238
+
239
+ </Tab>
240
+ </Tabs>
241
+
242
+ </Step>
243
+
244
+ <Step title="Plan for memory in guild channels">
245
+ By default, long-term memory (MEMORY.md) only loads in DM sessions. Guild channels do not auto-load MEMORY.md.
246
+
247
+ <Tabs>
248
+ <Tab title="Ask your agent">
249
+ > "When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md."
250
+ </Tab>
251
+ <Tab title="Manual">
252
+ If you need shared context in every channel, put the stable instructions in `AGENTS.md` or `USER.md` (they are injected for every session). Keep long-term notes in `MEMORY.md` and access them on demand with memory tools.
253
+ </Tab>
254
+ </Tabs>
255
+
256
+ </Step>
257
+ </Steps>
258
+
259
+ Now create some channels on your Discord server and start chatting. Your agent can see the channel name, and each channel gets its own isolated session — so you can set up `#coding`, `#home`, `#research`, or whatever fits your workflow.
260
+
261
+ ## Runtime model
262
+
263
+ - Gateway owns the Discord connection.
264
+ - Reply routing is deterministic: Discord inbound replies back to Discord.
265
+ - By default (`session.dmScope=main`), direct chats share the agent main session (`agent:main:main`).
266
+ - Guild channels are isolated session keys (`agent:<agentId>:discord:channel:<channelId>`).
267
+ - Group DMs are ignored by default (`channels.discord.dm.groupEnabled=false`).
268
+ - Native slash commands run in isolated command sessions (`agent:<agentId>:discord:slash:<userId>`), while still carrying `CommandTargetSessionKey` to the routed conversation session.
269
+
270
+ ## Forum channels
271
+
272
+ Discord forum and media channels only accept thread posts. QuantumClaw supports two ways to create them:
273
+
274
+ - Send a message to the forum parent (`channel:<forumId>`) to auto-create a thread. The thread title uses the first non-empty line of your message.
275
+ - Use `quantumclaw message thread create` to create a thread directly. Do not pass `--message-id` for forum channels.
276
+
277
+ Example: send to forum parent to create a thread
278
+
279
+ ```bash
280
+ quantumclaw message send --channel discord --target channel:<forumId> \
281
+ --message "Topic title\nBody of the post"
282
+ ```
283
+
284
+ Example: create a forum thread explicitly
285
+
286
+ ```bash
287
+ quantumclaw message thread create --channel discord --target channel:<forumId> \
288
+ --thread-name "Topic title" --message "Body of the post"
289
+ ```
290
+
291
+ Forum parents do not accept Discord components. If you need components, send to the thread itself (`channel:<threadId>`).
292
+
293
+ ## Interactive components
294
+
295
+ QuantumClaw supports Discord components v2 containers for agent messages. Use the message tool with a `components` payload. Interaction results are routed back to the agent as normal inbound messages and follow the existing Discord `replyToMode` settings.
296
+
297
+ Supported blocks:
298
+
299
+ - `text`, `section`, `separator`, `actions`, `media-gallery`, `file`
300
+ - Action rows allow up to 5 buttons or a single select menu
301
+ - Select types: `string`, `user`, `role`, `mentionable`, `channel`
302
+
303
+ By default, components are single use. Set `components.reusable=true` to allow buttons, selects, and forms to be used multiple times until they expire.
304
+
305
+ To restrict who can click a button, set `allowedUsers` on that button (Discord user IDs, tags, or `*`). When configured, unmatched users receive an ephemeral denial.
306
+
307
+ The `/model` and `/models` slash commands open an interactive model picker with provider and model dropdowns plus a Submit step. The picker reply is ephemeral and only the invoking user can use it.
308
+
309
+ File attachments:
310
+
311
+ - `file` blocks must point to an attachment reference (`attachment://<filename>`)
312
+ - Provide the attachment via `media`/`path`/`filePath` (single file); use `media-gallery` for multiple files
313
+ - Use `filename` to override the upload name when it should match the attachment reference
314
+
315
+ Modal forms:
316
+
317
+ - Add `components.modal` with up to 5 fields
318
+ - Field types: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select`
319
+ - QuantumClaw adds a trigger button automatically
320
+
321
+ Example:
322
+
323
+ ```json5
324
+ {
325
+ channel: "discord",
326
+ action: "send",
327
+ to: "channel:123456789012345678",
328
+ message: "Optional fallback text",
329
+ components: {
330
+ reusable: true,
331
+ text: "Choose a path",
332
+ blocks: [
333
+ {
334
+ type: "actions",
335
+ buttons: [
336
+ {
337
+ label: "Approve",
338
+ style: "success",
339
+ allowedUsers: ["123456789012345678"],
340
+ },
341
+ { label: "Decline", style: "danger" },
342
+ ],
343
+ },
344
+ {
345
+ type: "actions",
346
+ select: {
347
+ type: "string",
348
+ placeholder: "Pick an option",
349
+ options: [
350
+ { label: "Option A", value: "a" },
351
+ { label: "Option B", value: "b" },
352
+ ],
353
+ },
354
+ },
355
+ ],
356
+ modal: {
357
+ title: "Details",
358
+ triggerLabel: "Open form",
359
+ fields: [
360
+ { type: "text", label: "Requester" },
361
+ {
362
+ type: "select",
363
+ label: "Priority",
364
+ options: [
365
+ { label: "Low", value: "low" },
366
+ { label: "High", value: "high" },
367
+ ],
368
+ },
369
+ ],
370
+ },
371
+ },
372
+ }
373
+ ```
374
+
375
+ ## Access control and routing
376
+
377
+ <Tabs>
378
+ <Tab title="DM policy">
379
+ `channels.discord.dmPolicy` controls DM access (legacy: `channels.discord.dm.policy`):
380
+
381
+ - `pairing` (default)
382
+ - `allowlist`
383
+ - `open` (requires `channels.discord.allowFrom` to include `"*"`; legacy: `channels.discord.dm.allowFrom`)
384
+ - `disabled`
385
+
386
+ If DM policy is not open, unknown users are blocked (or prompted for pairing in `pairing` mode).
387
+
388
+ Multi-account precedence:
389
+
390
+ - `channels.discord.accounts.default.allowFrom` applies only to the `default` account.
391
+ - Named accounts inherit `channels.discord.allowFrom` when their own `allowFrom` is unset.
392
+ - Named accounts do not inherit `channels.discord.accounts.default.allowFrom`.
393
+
394
+ DM target format for delivery:
395
+
396
+ - `user:<id>`
397
+ - `<@id>` mention
398
+
399
+ Bare numeric IDs are ambiguous and rejected unless an explicit user/channel target kind is provided.
400
+
401
+ </Tab>
402
+
403
+ <Tab title="Guild policy">
404
+ Guild handling is controlled by `channels.discord.groupPolicy`:
405
+
406
+ - `open`
407
+ - `allowlist`
408
+ - `disabled`
409
+
410
+ Secure baseline when `channels.discord` exists is `allowlist`.
411
+
412
+ `allowlist` behavior:
413
+
414
+ - guild must match `channels.discord.guilds` (`id` preferred, slug accepted)
415
+ - optional sender allowlists: `users` (stable IDs recommended) and `roles` (role IDs only); if either is configured, senders are allowed when they match `users` OR `roles`
416
+ - direct name/tag matching is disabled by default; enable `channels.discord.dangerouslyAllowNameMatching: true` only as break-glass compatibility mode
417
+ - names/tags are supported for `users`, but IDs are safer; `quantumclaw security audit` warns when name/tag entries are used
418
+ - if a guild has `channels` configured, non-listed channels are denied
419
+ - if a guild has no `channels` block, all channels in that allowlisted guild are allowed
420
+
421
+ Example:
422
+
423
+ ```json5
424
+ {
425
+ channels: {
426
+ discord: {
427
+ groupPolicy: "allowlist",
428
+ guilds: {
429
+ "123456789012345678": {
430
+ requireMention: true,
431
+ ignoreOtherMentions: true,
432
+ users: ["987654321098765432"],
433
+ roles: ["123456789012345678"],
434
+ channels: {
435
+ general: { allow: true },
436
+ help: { allow: true, requireMention: true },
437
+ },
438
+ },
439
+ },
440
+ },
441
+ },
442
+ }
443
+ ```
444
+
445
+ If you only set `DISCORD_BOT_TOKEN` and do not create a `channels.discord` block, runtime fallback is `groupPolicy="allowlist"` (with a warning in logs), even if `channels.defaults.groupPolicy` is `open`.
446
+
447
+ </Tab>
448
+
449
+ <Tab title="Mentions and group DMs">
450
+ Guild messages are mention-gated by default.
451
+
452
+ Mention detection includes:
453
+
454
+ - explicit bot mention
455
+ - configured mention patterns (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
456
+ - implicit reply-to-bot behavior in supported cases
457
+
458
+ `requireMention` is configured per guild/channel (`channels.discord.guilds...`).
459
+ `ignoreOtherMentions` optionally drops messages that mention another user/role but not the bot (excluding @everyone/@here).
460
+
461
+ Group DMs:
462
+
463
+ - default: ignored (`dm.groupEnabled=false`)
464
+ - optional allowlist via `dm.groupChannels` (channel IDs or slugs)
465
+
466
+ </Tab>
467
+ </Tabs>
468
+
469
+ ### Role-based agent routing
470
+
471
+ Use `bindings[].match.roles` to route Discord guild members to different agents by role ID. Role-based bindings accept role IDs only and are evaluated after peer or parent-peer bindings and before guild-only bindings. If a binding also sets other match fields (for example `peer` + `guildId` + `roles`), all configured fields must match.
472
+
473
+ ```json5
474
+ {
475
+ bindings: [
476
+ {
477
+ agentId: "opus",
478
+ match: {
479
+ channel: "discord",
480
+ guildId: "123456789012345678",
481
+ roles: ["111111111111111111"],
482
+ },
483
+ },
484
+ {
485
+ agentId: "sonnet",
486
+ match: {
487
+ channel: "discord",
488
+ guildId: "123456789012345678",
489
+ },
490
+ },
491
+ ],
492
+ }
493
+ ```
494
+
495
+ ## Developer Portal setup
496
+
497
+ <AccordionGroup>
498
+ <Accordion title="Create app and bot">
499
+
500
+ 1. Discord Developer Portal -> **Applications** -> **New Application**
501
+ 2. **Bot** -> **Add Bot**
502
+ 3. Copy bot token
503
+
504
+ </Accordion>
505
+
506
+ <Accordion title="Privileged intents">
507
+ In **Bot -> Privileged Gateway Intents**, enable:
508
+
509
+ - Message Content Intent
510
+ - Server Members Intent (recommended)
511
+
512
+ Presence intent is optional and only required if you want to receive presence updates. Setting bot presence (`setPresence`) does not require enabling presence updates for members.
513
+
514
+ </Accordion>
515
+
516
+ <Accordion title="OAuth scopes and baseline permissions">
517
+ OAuth URL generator:
518
+
519
+ - scopes: `bot`, `applications.commands`
520
+
521
+ Typical baseline permissions:
522
+
523
+ - View Channels
524
+ - Send Messages
525
+ - Read Message History
526
+ - Embed Links
527
+ - Attach Files
528
+ - Add Reactions (optional)
529
+
530
+ Avoid `Administrator` unless explicitly needed.
531
+
532
+ </Accordion>
533
+
534
+ <Accordion title="Copy IDs">
535
+ Enable Discord Developer Mode, then copy:
536
+
537
+ - server ID
538
+ - channel ID
539
+ - user ID
540
+
541
+ Prefer numeric IDs in QuantumClaw config for reliable audits and probes.
542
+
543
+ </Accordion>
544
+ </AccordionGroup>
545
+
546
+ ## Native commands and command auth
547
+
548
+ - `commands.native` defaults to `"auto"` and is enabled for Discord.
549
+ - Per-channel override: `channels.discord.commands.native`.
550
+ - `commands.native=false` explicitly clears previously registered Discord native commands.
551
+ - Native command auth uses the same Discord allowlists/policies as normal message handling.
552
+ - Commands may still be visible in Discord UI for users who are not authorized; execution still enforces QuantumClaw auth and returns "not authorized".
553
+
554
+ See [Slash commands](/tools/slash-commands) for command catalog and behavior.
555
+
556
+ Default slash command settings:
557
+
558
+ - `ephemeral: true`
559
+
560
+ ## Feature details
561
+
562
+ <AccordionGroup>
563
+ <Accordion title="Reply tags and native replies">
564
+ Discord supports reply tags in agent output:
565
+
566
+ - `[[reply_to_current]]`
567
+ - `[[reply_to:<id>]]`
568
+
569
+ Controlled by `channels.discord.replyToMode`:
570
+
571
+ - `off` (default)
572
+ - `first`
573
+ - `all`
574
+
575
+ Note: `off` disables implicit reply threading. Explicit `[[reply_to_*]]` tags are still honored.
576
+
577
+ Message IDs are surfaced in context/history so agents can target specific messages.
578
+
579
+ </Accordion>
580
+
581
+ <Accordion title="Live stream preview">
582
+ QuantumClaw can stream draft replies by sending a temporary message and editing it as text arrives.
583
+
584
+ - `channels.discord.streaming` controls preview streaming (`off` | `partial` | `block` | `progress`, default: `off`).
585
+ - `progress` is accepted for cross-channel consistency and maps to `partial` on Discord.
586
+ - `channels.discord.streamMode` is a legacy alias and is auto-migrated.
587
+ - `partial` edits a single preview message as tokens arrive.
588
+ - `block` emits draft-sized chunks (use `draftChunk` to tune size and breakpoints).
589
+
590
+ Example:
591
+
592
+ ```json5
593
+ {
594
+ channels: {
595
+ discord: {
596
+ streaming: "partial",
597
+ },
598
+ },
599
+ }
600
+ ```
601
+
602
+ `block` mode chunking defaults (clamped to `channels.discord.textChunkLimit`):
603
+
604
+ ```json5
605
+ {
606
+ channels: {
607
+ discord: {
608
+ streaming: "block",
609
+ draftChunk: {
610
+ minChars: 200,
611
+ maxChars: 800,
612
+ breakPreference: "paragraph",
613
+ },
614
+ },
615
+ },
616
+ }
617
+ ```
618
+
619
+ Preview streaming is text-only; media replies fall back to normal delivery.
620
+
621
+ Note: preview streaming is separate from block streaming. When block streaming is explicitly
622
+ enabled for Discord, QuantumClaw skips the preview stream to avoid double streaming.
623
+
624
+ </Accordion>
625
+
626
+ <Accordion title="History, context, and thread behavior">
627
+ Guild history context:
628
+
629
+ - `channels.discord.historyLimit` default `20`
630
+ - fallback: `messages.groupChat.historyLimit`
631
+ - `0` disables
632
+
633
+ DM history controls:
634
+
635
+ - `channels.discord.dmHistoryLimit`
636
+ - `channels.discord.dms["<user_id>"].historyLimit`
637
+
638
+ Thread behavior:
639
+
640
+ - Discord threads are routed as channel sessions
641
+ - parent thread metadata can be used for parent-session linkage
642
+ - thread config inherits parent channel config unless a thread-specific entry exists
643
+
644
+ Channel topics are injected as **untrusted** context (not as system prompt).
645
+
646
+ </Accordion>
647
+
648
+ <Accordion title="Thread-bound sessions for subagents">
649
+ Discord can bind a thread to a session target so follow-up messages in that thread keep routing to the same session (including subagent sessions).
650
+
651
+ Commands:
652
+
653
+ - `/focus <target>` bind current/new thread to a subagent/session target
654
+ - `/unfocus` remove current thread binding
655
+ - `/agents` show active runs and binding state
656
+ - `/session idle <duration|off>` inspect/update inactivity auto-unfocus for focused bindings
657
+ - `/session max-age <duration|off>` inspect/update hard max age for focused bindings
658
+
659
+ Config:
660
+
661
+ ```json5
662
+ {
663
+ session: {
664
+ threadBindings: {
665
+ enabled: true,
666
+ idleHours: 24,
667
+ maxAgeHours: 0,
668
+ },
669
+ },
670
+ channels: {
671
+ discord: {
672
+ threadBindings: {
673
+ enabled: true,
674
+ idleHours: 24,
675
+ maxAgeHours: 0,
676
+ spawnSubagentSessions: false, // opt-in
677
+ },
678
+ },
679
+ },
680
+ }
681
+ ```
682
+
683
+ Notes:
684
+
685
+ - `session.threadBindings.*` sets global defaults.
686
+ - `channels.discord.threadBindings.*` overrides Discord behavior.
687
+ - `spawnSubagentSessions` must be true to auto-create/bind threads for `sessions_spawn({ thread: true })`.
688
+ - `spawnAcpSessions` must be true to auto-create/bind threads for ACP (`/acp spawn ... --thread ...` or `sessions_spawn({ runtime: "acp", thread: true })`).
689
+ - If thread bindings are disabled for an account, `/focus` and related thread binding operations are unavailable.
690
+
691
+ See [Sub-agents](/tools/subagents), [ACP Agents](/tools/acp-agents), and [Configuration Reference](/gateway/configuration-reference).
692
+
693
+ </Accordion>
694
+
695
+ <Accordion title="Persistent ACP channel bindings">
696
+ For stable "always-on" ACP workspaces, configure top-level typed ACP bindings targeting Discord conversations.
697
+
698
+ Config path:
699
+
700
+ - `bindings[]` with `type: "acp"` and `match.channel: "discord"`
701
+
702
+ Example:
703
+
704
+ ```json5
705
+ {
706
+ agents: {
707
+ list: [
708
+ {
709
+ id: "codex",
710
+ runtime: {
711
+ type: "acp",
712
+ acp: {
713
+ agent: "codex",
714
+ backend: "acpx",
715
+ mode: "persistent",
716
+ cwd: "/workspace/quantumclaw",
717
+ },
718
+ },
719
+ },
720
+ ],
721
+ },
722
+ bindings: [
723
+ {
724
+ type: "acp",
725
+ agentId: "codex",
726
+ match: {
727
+ channel: "discord",
728
+ accountId: "default",
729
+ peer: { kind: "channel", id: "222222222222222222" },
730
+ },
731
+ acp: { label: "codex-main" },
732
+ },
733
+ ],
734
+ channels: {
735
+ discord: {
736
+ guilds: {
737
+ "111111111111111111": {
738
+ channels: {
739
+ "222222222222222222": {
740
+ requireMention: false,
741
+ },
742
+ },
743
+ },
744
+ },
745
+ },
746
+ },
747
+ }
748
+ ```
749
+
750
+ Notes:
751
+
752
+ - Thread messages can inherit the parent channel ACP binding.
753
+ - In a bound channel or thread, `/new` and `/reset` reset the same ACP session in place.
754
+ - Temporary thread bindings still work and can override target resolution while active.
755
+
756
+ See [ACP Agents](/tools/acp-agents) for binding behavior details.
757
+
758
+ </Accordion>
759
+
760
+ <Accordion title="Reaction notifications">
761
+ Per-guild reaction notification mode:
762
+
763
+ - `off`
764
+ - `own` (default)
765
+ - `all`
766
+ - `allowlist` (uses `guilds.<id>.users`)
767
+
768
+ Reaction events are turned into system events and attached to the routed Discord session.
769
+
770
+ </Accordion>
771
+
772
+ <Accordion title="Ack reactions">
773
+ `ackReaction` sends an acknowledgement emoji while QuantumClaw is processing an inbound message.
774
+
775
+ Resolution order:
776
+
777
+ - `channels.discord.accounts.<accountId>.ackReaction`
778
+ - `channels.discord.ackReaction`
779
+ - `messages.ackReaction`
780
+ - agent identity emoji fallback (`agents.list[].identity.emoji`, else "👀")
781
+
782
+ Notes:
783
+
784
+ - Discord accepts unicode emoji or custom emoji names.
785
+ - Use `""` to disable the reaction for a channel or account.
786
+
787
+ </Accordion>
788
+
789
+ <Accordion title="Config writes">
790
+ Channel-initiated config writes are enabled by default.
791
+
792
+ This affects `/config set|unset` flows (when command features are enabled).
793
+
794
+ Disable:
795
+
796
+ ```json5
797
+ {
798
+ channels: {
799
+ discord: {
800
+ configWrites: false,
801
+ },
802
+ },
803
+ }
804
+ ```
805
+
806
+ </Accordion>
807
+
808
+ <Accordion title="Gateway proxy">
809
+ Route Discord gateway WebSocket traffic and startup REST lookups (application ID + allowlist resolution) through an HTTP(S) proxy with `channels.discord.proxy`.
810
+
811
+ ```json5
812
+ {
813
+ channels: {
814
+ discord: {
815
+ proxy: "http://proxy.example:8080",
816
+ },
817
+ },
818
+ }
819
+ ```
820
+
821
+ Per-account override:
822
+
823
+ ```json5
824
+ {
825
+ channels: {
826
+ discord: {
827
+ accounts: {
828
+ primary: {
829
+ proxy: "http://proxy.example:8080",
830
+ },
831
+ },
832
+ },
833
+ },
834
+ }
835
+ ```
836
+
837
+ </Accordion>
838
+
839
+ <Accordion title="PluralKit support">
840
+ Enable PluralKit resolution to map proxied messages to system member identity:
841
+
842
+ ```json5
843
+ {
844
+ channels: {
845
+ discord: {
846
+ pluralkit: {
847
+ enabled: true,
848
+ token: "pk_live_...", // optional; needed for private systems
849
+ },
850
+ },
851
+ },
852
+ }
853
+ ```
854
+
855
+ Notes:
856
+
857
+ - allowlists can use `pk:<memberId>`
858
+ - member display names are matched by name/slug only when `channels.discord.dangerouslyAllowNameMatching: true`
859
+ - lookups use original message ID and are time-window constrained
860
+ - if lookup fails, proxied messages are treated as bot messages and dropped unless `allowBots=true`
861
+
862
+ </Accordion>
863
+
864
+ <Accordion title="Presence configuration">
865
+ Presence updates are applied when you set a status or activity field, or when you enable auto presence.
866
+
867
+ Status only example:
868
+
869
+ ```json5
870
+ {
871
+ channels: {
872
+ discord: {
873
+ status: "idle",
874
+ },
875
+ },
876
+ }
877
+ ```
878
+
879
+ Activity example (custom status is the default activity type):
880
+
881
+ ```json5
882
+ {
883
+ channels: {
884
+ discord: {
885
+ activity: "Focus time",
886
+ activityType: 4,
887
+ },
888
+ },
889
+ }
890
+ ```
891
+
892
+ Streaming example:
893
+
894
+ ```json5
895
+ {
896
+ channels: {
897
+ discord: {
898
+ activity: "Live coding",
899
+ activityType: 1,
900
+ activityUrl: "https://twitch.tv/quantumclaw",
901
+ },
902
+ },
903
+ }
904
+ ```
905
+
906
+ Activity type map:
907
+
908
+ - 0: Playing
909
+ - 1: Streaming (requires `activityUrl`)
910
+ - 2: Listening
911
+ - 3: Watching
912
+ - 4: Custom (uses the activity text as the status state; emoji is optional)
913
+ - 5: Competing
914
+
915
+ Auto presence example (runtime health signal):
916
+
917
+ ```json5
918
+ {
919
+ channels: {
920
+ discord: {
921
+ autoPresence: {
922
+ enabled: true,
923
+ intervalMs: 30000,
924
+ minUpdateIntervalMs: 15000,
925
+ exhaustedText: "token exhausted",
926
+ },
927
+ },
928
+ },
929
+ }
930
+ ```
931
+
932
+ Auto presence maps runtime availability to Discord status: healthy => online, degraded or unknown => idle, exhausted or unavailable => dnd. Optional text overrides:
933
+
934
+ - `autoPresence.healthyText`
935
+ - `autoPresence.degradedText`
936
+ - `autoPresence.exhaustedText` (supports `{reason}` placeholder)
937
+
938
+ </Accordion>
939
+
940
+ <Accordion title="Exec approvals in Discord">
941
+ Discord supports button-based exec approvals in DMs and can optionally post approval prompts in the originating channel.
942
+
943
+ Config path:
944
+
945
+ - `channels.discord.execApprovals.enabled`
946
+ - `channels.discord.execApprovals.approvers`
947
+ - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, default: `dm`)
948
+ - `agentFilter`, `sessionFilter`, `cleanupAfterResolve`
949
+
950
+ When `target` is `channel` or `both`, the approval prompt is visible in the channel. Only configured approvers can use the buttons; other users receive an ephemeral denial. Approval prompts include the command text, so only enable channel delivery in trusted channels. If the channel ID cannot be derived from the session key, QuantumClaw falls back to DM delivery.
951
+
952
+ Gateway auth for this handler uses the same shared credential resolution contract as other Gateway clients:
953
+
954
+ - env-first local auth (`QUANTUMCLAW_GATEWAY_TOKEN` / `QUANTUMCLAW_GATEWAY_PASSWORD` then `gateway.auth.*`)
955
+ - in local mode, `gateway.remote.*` can be used as fallback only when `gateway.auth.*` is unset; configured-but-unresolved local SecretRefs fail closed
956
+ - remote-mode support via `gateway.remote.*` when applicable
957
+ - URL overrides are override-safe: CLI overrides do not reuse implicit credentials, and env overrides use env credentials only
958
+
959
+ If approvals fail with unknown approval IDs, verify approver list and feature enablement.
960
+
961
+ Related docs: [Exec approvals](/tools/exec-approvals)
962
+
963
+ </Accordion>
964
+ </AccordionGroup>
965
+
966
+ ## Tools and action gates
967
+
968
+ Discord message actions include messaging, channel admin, moderation, presence, and metadata actions.
969
+
970
+ Core examples:
971
+
972
+ - messaging: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
973
+ - reactions: `react`, `reactions`, `emojiList`
974
+ - moderation: `timeout`, `kick`, `ban`
975
+ - presence: `setPresence`
976
+
977
+ Action gates live under `channels.discord.actions.*`.
978
+
979
+ Default gate behavior:
980
+
981
+ | Action group | Default |
982
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
983
+ | reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | enabled |
984
+ | roles | disabled |
985
+ | moderation | disabled |
986
+ | presence | disabled |
987
+
988
+ ## Components v2 UI
989
+
990
+ QuantumClaw uses Discord components v2 for exec approvals and cross-context markers. Discord message actions can also accept `components` for custom UI (advanced; requires Carbon component instances), while legacy `embeds` remain available but are not recommended.
991
+
992
+ - `channels.discord.ui.components.accentColor` sets the accent color used by Discord component containers (hex).
993
+ - Set per account with `channels.discord.accounts.<id>.ui.components.accentColor`.
994
+ - `embeds` are ignored when components v2 are present.
995
+
996
+ Example:
997
+
998
+ ```json5
999
+ {
1000
+ channels: {
1001
+ discord: {
1002
+ ui: {
1003
+ components: {
1004
+ accentColor: "#5865F2",
1005
+ },
1006
+ },
1007
+ },
1008
+ },
1009
+ }
1010
+ ```
1011
+
1012
+ ## Voice channels
1013
+
1014
+ QuantumClaw can join Discord voice channels for realtime, continuous conversations. This is separate from voice message attachments.
1015
+
1016
+ Requirements:
1017
+
1018
+ - Enable native commands (`commands.native` or `channels.discord.commands.native`).
1019
+ - Configure `channels.discord.voice`.
1020
+ - The bot needs Connect + Speak permissions in the target voice channel.
1021
+
1022
+ Use the Discord-only native command `/vc join|leave|status` to control sessions. The command uses the account default agent and follows the same allowlist and group policy rules as other Discord commands.
1023
+
1024
+ Auto-join example:
1025
+
1026
+ ```json5
1027
+ {
1028
+ channels: {
1029
+ discord: {
1030
+ voice: {
1031
+ enabled: true,
1032
+ autoJoin: [
1033
+ {
1034
+ guildId: "123456789012345678",
1035
+ channelId: "234567890123456789",
1036
+ },
1037
+ ],
1038
+ daveEncryption: true,
1039
+ decryptionFailureTolerance: 24,
1040
+ tts: {
1041
+ provider: "openai",
1042
+ openai: { voice: "alloy" },
1043
+ },
1044
+ },
1045
+ },
1046
+ },
1047
+ }
1048
+ ```
1049
+
1050
+ Notes:
1051
+
1052
+ - `voice.tts` overrides `messages.tts` for voice playback only.
1053
+ - Voice transcript turns derive owner status from Discord `allowFrom` (or `dm.allowFrom`); non-owner speakers cannot access owner-only tools (for example `gateway` and `cron`).
1054
+ - Voice is enabled by default; set `channels.discord.voice.enabled=false` to disable it.
1055
+ - `voice.daveEncryption` and `voice.decryptionFailureTolerance` pass through to `@discordjs/voice` join options.
1056
+ - `@discordjs/voice` defaults are `daveEncryption=true` and `decryptionFailureTolerance=24` if unset.
1057
+ - QuantumClaw also watches receive decrypt failures and auto-recovers by leaving/rejoining the voice channel after repeated failures in a short window.
1058
+ - If receive logs repeatedly show `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, this may be the upstream `@discordjs/voice` receive bug tracked in [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
1059
+
1060
+ ## Voice messages
1061
+
1062
+ Discord voice messages show a waveform preview and require OGG/Opus audio plus metadata. QuantumClaw generates the waveform automatically, but it needs `ffmpeg` and `ffprobe` available on the gateway host to inspect and convert audio files.
1063
+
1064
+ Requirements and constraints:
1065
+
1066
+ - Provide a **local file path** (URLs are rejected).
1067
+ - Omit text content (Discord does not allow text + voice message in the same payload).
1068
+ - Any audio format is accepted; QuantumClaw converts to OGG/Opus when needed.
1069
+
1070
+ Example:
1071
+
1072
+ ```bash
1073
+ message(action="send", channel="discord", target="channel:123", path="/path/to/audio.mp3", asVoice=true)
1074
+ ```
1075
+
1076
+ ## Troubleshooting
1077
+
1078
+ <AccordionGroup>
1079
+ <Accordion title="Used disallowed intents or bot sees no guild messages">
1080
+
1081
+ - enable Message Content Intent
1082
+ - enable Server Members Intent when you depend on user/member resolution
1083
+ - restart gateway after changing intents
1084
+
1085
+ </Accordion>
1086
+
1087
+ <Accordion title="Guild messages blocked unexpectedly">
1088
+
1089
+ - verify `groupPolicy`
1090
+ - verify guild allowlist under `channels.discord.guilds`
1091
+ - if guild `channels` map exists, only listed channels are allowed
1092
+ - verify `requireMention` behavior and mention patterns
1093
+
1094
+ Useful checks:
1095
+
1096
+ ```bash
1097
+ quantumclaw doctor
1098
+ quantumclaw channels status --probe
1099
+ quantumclaw logs --follow
1100
+ ```
1101
+
1102
+ </Accordion>
1103
+
1104
+ <Accordion title="Require mention false but still blocked">
1105
+ Common causes:
1106
+
1107
+ - `groupPolicy="allowlist"` without matching guild/channel allowlist
1108
+ - `requireMention` configured in the wrong place (must be under `channels.discord.guilds` or channel entry)
1109
+ - sender blocked by guild/channel `users` allowlist
1110
+
1111
+ </Accordion>
1112
+
1113
+ <Accordion title="Long-running handlers time out or duplicate replies">
1114
+
1115
+ Typical logs:
1116
+
1117
+ - `Listener DiscordMessageListener timed out after 30000ms for event MESSAGE_CREATE`
1118
+ - `Slow listener detected ...`
1119
+ - `discord inbound worker timed out after ...`
1120
+
1121
+ Listener budget knob:
1122
+
1123
+ - single-account: `channels.discord.eventQueue.listenerTimeout`
1124
+ - multi-account: `channels.discord.accounts.<accountId>.eventQueue.listenerTimeout`
1125
+
1126
+ Worker run timeout knob:
1127
+
1128
+ - single-account: `channels.discord.inboundWorker.runTimeoutMs`
1129
+ - multi-account: `channels.discord.accounts.<accountId>.inboundWorker.runTimeoutMs`
1130
+ - default: `1800000` (30 minutes); set `0` to disable
1131
+
1132
+ Recommended baseline:
1133
+
1134
+ ```json5
1135
+ {
1136
+ channels: {
1137
+ discord: {
1138
+ accounts: {
1139
+ default: {
1140
+ eventQueue: {
1141
+ listenerTimeout: 120000,
1142
+ },
1143
+ inboundWorker: {
1144
+ runTimeoutMs: 1800000,
1145
+ },
1146
+ },
1147
+ },
1148
+ },
1149
+ },
1150
+ }
1151
+ ```
1152
+
1153
+ Use `eventQueue.listenerTimeout` for slow listener setup and `inboundWorker.runTimeoutMs`
1154
+ only if you want a separate safety valve for queued agent turns.
1155
+
1156
+ </Accordion>
1157
+
1158
+ <Accordion title="Permissions audit mismatches">
1159
+ `channels status --probe` permission checks only work for numeric channel IDs.
1160
+
1161
+ If you use slug keys, runtime matching can still work, but probe cannot fully verify permissions.
1162
+
1163
+ </Accordion>
1164
+
1165
+ <Accordion title="DM and pairing issues">
1166
+
1167
+ - DM disabled: `channels.discord.dm.enabled=false`
1168
+ - DM policy disabled: `channels.discord.dmPolicy="disabled"` (legacy: `channels.discord.dm.policy`)
1169
+ - awaiting pairing approval in `pairing` mode
1170
+
1171
+ </Accordion>
1172
+
1173
+ <Accordion title="Bot to bot loops">
1174
+ By default bot-authored messages are ignored.
1175
+
1176
+ If you set `channels.discord.allowBots=true`, use strict mention and allowlist rules to avoid loop behavior.
1177
+ Prefer `channels.discord.allowBots="mentions"` to only accept bot messages that mention the bot.
1178
+
1179
+ </Accordion>
1180
+
1181
+ <Accordion title="Voice STT drops with DecryptionFailed(...)">
1182
+
1183
+ - keep QuantumClaw current (`quantumclaw update`) so the Discord voice receive recovery logic is present
1184
+ - confirm `channels.discord.voice.daveEncryption=true` (default)
1185
+ - start from `channels.discord.voice.decryptionFailureTolerance=24` (upstream default) and tune only if needed
1186
+ - watch logs for:
1187
+ - `discord voice: DAVE decrypt failures detected`
1188
+ - `discord voice: repeated decrypt failures; attempting rejoin`
1189
+ - if failures continue after automatic rejoin, collect logs and compare against [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
1190
+
1191
+ </Accordion>
1192
+ </AccordionGroup>
1193
+
1194
+ ## Configuration reference pointers
1195
+
1196
+ Primary reference:
1197
+
1198
+ - [Configuration reference - Discord](/gateway/configuration-reference#discord)
1199
+
1200
+ High-signal Discord fields:
1201
+
1202
+ - startup/auth: `enabled`, `token`, `accounts.*`, `allowBots`
1203
+ - policy: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
1204
+ - command: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
1205
+ - event queue: `eventQueue.listenerTimeout` (listener budget), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
1206
+ - inbound worker: `inboundWorker.runTimeoutMs`
1207
+ - reply/history: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
1208
+ - delivery: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
1209
+ - streaming: `streaming` (legacy alias: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
1210
+ - media/retry: `mediaMaxMb`, `retry`
1211
+ - `mediaMaxMb` caps outbound Discord uploads (default: `8MB`)
1212
+ - actions: `actions.*`
1213
+ - presence: `activity`, `status`, `activityType`, `activityUrl`
1214
+ - UI: `ui.components.accentColor`
1215
+ - features: `threadBindings`, top-level `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
1216
+
1217
+ ## Safety and operations
1218
+
1219
+ - Treat bot tokens as secrets (`DISCORD_BOT_TOKEN` preferred in supervised environments).
1220
+ - Grant least-privilege Discord permissions.
1221
+ - If command deploy/state is stale, restart gateway and re-check with `quantumclaw channels status --probe`.
1222
+
1223
+ ## Related
1224
+
1225
+ - [Pairing](/channels/pairing)
1226
+ - [Channel routing](/channels/channel-routing)
1227
+ - [Multi-agent routing](/concepts/multi-agent)
1228
+ - [Troubleshooting](/channels/troubleshooting)
1229
+ - [Slash commands](/tools/slash-commands)