durar-ai 2026.4.4

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 (571) hide show
  1. package/CHANGELOG.md +5497 -0
  2. package/LICENSE +21 -0
  3. package/README.md +614 -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 +72 -0
  12. package/docs/.i18n/ar-navigation.json +18 -0
  13. package/docs/.i18n/de-navigation.json +18 -0
  14. package/docs/.i18n/es-navigation.json +18 -0
  15. package/docs/.i18n/fr-navigation.json +18 -0
  16. package/docs/.i18n/glossary.ar.json +5 -0
  17. package/docs/.i18n/glossary.de.json +5 -0
  18. package/docs/.i18n/glossary.es.json +5 -0
  19. package/docs/.i18n/glossary.fr.json +5 -0
  20. package/docs/.i18n/glossary.id.json +5 -0
  21. package/docs/.i18n/glossary.it.json +5 -0
  22. package/docs/.i18n/glossary.ja-JP.json +14 -0
  23. package/docs/.i18n/glossary.ko.json +5 -0
  24. package/docs/.i18n/glossary.pl.json +5 -0
  25. package/docs/.i18n/glossary.pt-BR.json +5 -0
  26. package/docs/.i18n/glossary.tr.json +5 -0
  27. package/docs/.i18n/glossary.zh-CN.json +358 -0
  28. package/docs/.i18n/id-navigation.json +18 -0
  29. package/docs/.i18n/it-navigation.json +18 -0
  30. package/docs/.i18n/ja-navigation.json +18 -0
  31. package/docs/.i18n/ko-navigation.json +18 -0
  32. package/docs/.i18n/pl-navigation.json +18 -0
  33. package/docs/.i18n/pt-BR-navigation.json +18 -0
  34. package/docs/.i18n/tr-navigation.json +18 -0
  35. package/docs/.i18n/zh-Hans-navigation.json +544 -0
  36. package/docs/assets/install-script.svg +1 -0
  37. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  38. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  39. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  40. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  41. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  42. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  43. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  44. package/docs/assets/openclaw-logo-text.png +0 -0
  45. package/docs/assets/openclaw-logo-text.svg +418 -0
  46. package/docs/assets/pixel-lobster.svg +60 -0
  47. package/docs/assets/showcase/agents-ui.jpg +0 -0
  48. package/docs/assets/showcase/bambu-cli.png +0 -0
  49. package/docs/assets/showcase/codexmonitor.png +0 -0
  50. package/docs/assets/showcase/gohome-grafana.png +0 -0
  51. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  52. package/docs/assets/showcase/oura-health.png +0 -0
  53. package/docs/assets/showcase/padel-cli.svg +11 -0
  54. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  55. package/docs/assets/showcase/papla-tts.jpg +0 -0
  56. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  57. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  58. package/docs/assets/showcase/roborock-status.svg +13 -0
  59. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  60. package/docs/assets/showcase/snag.png +0 -0
  61. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  62. package/docs/assets/showcase/wienerlinien.png +0 -0
  63. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  64. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  65. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  66. package/docs/assets/sponsors/blacksmith-light.svg +14 -0
  67. package/docs/assets/sponsors/blacksmith.svg +14 -0
  68. package/docs/assets/sponsors/convex-light.svg +16 -0
  69. package/docs/assets/sponsors/convex.svg +16 -0
  70. package/docs/assets/sponsors/github-light.svg +3 -0
  71. package/docs/assets/sponsors/github.svg +3 -0
  72. package/docs/assets/sponsors/nvidia-dark.svg +9 -0
  73. package/docs/assets/sponsors/nvidia.svg +9 -0
  74. package/docs/assets/sponsors/openai-light.svg +3 -0
  75. package/docs/assets/sponsors/openai.svg +3 -0
  76. package/docs/assets/sponsors/vercel-light.svg +5 -0
  77. package/docs/assets/sponsors/vercel.svg +5 -0
  78. package/docs/auth-credential-semantics.md +80 -0
  79. package/docs/automation/auth-monitoring.md +8 -0
  80. package/docs/automation/clawflow.md +8 -0
  81. package/docs/automation/cron-jobs.md +410 -0
  82. package/docs/automation/cron-vs-heartbeat.md +8 -0
  83. package/docs/automation/gmail-pubsub.md +8 -0
  84. package/docs/automation/hooks.md +303 -0
  85. package/docs/automation/index.md +115 -0
  86. package/docs/automation/poll.md +8 -0
  87. package/docs/automation/standing-orders.md +254 -0
  88. package/docs/automation/taskflow.md +82 -0
  89. package/docs/automation/tasks.md +323 -0
  90. package/docs/automation/troubleshooting.md +8 -0
  91. package/docs/automation/webhook.md +8 -0
  92. package/docs/brave-search.md +103 -0
  93. package/docs/channels/bluebubbles.md +435 -0
  94. package/docs/channels/broadcast-groups.md +442 -0
  95. package/docs/channels/channel-routing.md +139 -0
  96. package/docs/channels/discord.md +1254 -0
  97. package/docs/channels/feishu.md +793 -0
  98. package/docs/channels/googlechat.md +270 -0
  99. package/docs/channels/group-messages.md +84 -0
  100. package/docs/channels/groups.md +410 -0
  101. package/docs/channels/imessage.md +427 -0
  102. package/docs/channels/index.md +50 -0
  103. package/docs/channels/irc.md +252 -0
  104. package/docs/channels/line.md +225 -0
  105. package/docs/channels/location.md +56 -0
  106. package/docs/channels/matrix.md +869 -0
  107. package/docs/channels/mattermost.md +472 -0
  108. package/docs/channels/msteams.md +805 -0
  109. package/docs/channels/nextcloud-talk.md +149 -0
  110. package/docs/channels/nostr.md +252 -0
  111. package/docs/channels/pairing.md +129 -0
  112. package/docs/channels/qqbot.md +193 -0
  113. package/docs/channels/signal.md +337 -0
  114. package/docs/channels/slack.md +681 -0
  115. package/docs/channels/synology-chat.md +185 -0
  116. package/docs/channels/telegram.md +1072 -0
  117. package/docs/channels/tlon.md +290 -0
  118. package/docs/channels/troubleshooting.md +133 -0
  119. package/docs/channels/twitch.md +394 -0
  120. package/docs/channels/whatsapp.md +488 -0
  121. package/docs/channels/zalo.md +254 -0
  122. package/docs/channels/zalouser.md +195 -0
  123. package/docs/ci.md +66 -0
  124. package/docs/cli/acp.md +316 -0
  125. package/docs/cli/agent.md +57 -0
  126. package/docs/cli/agents.md +220 -0
  127. package/docs/cli/approvals.md +136 -0
  128. package/docs/cli/backup.md +84 -0
  129. package/docs/cli/browser.md +233 -0
  130. package/docs/cli/channels.md +131 -0
  131. package/docs/cli/clawbot.md +21 -0
  132. package/docs/cli/completion.md +35 -0
  133. package/docs/cli/config.md +353 -0
  134. package/docs/cli/configure.md +70 -0
  135. package/docs/cli/cron.md +167 -0
  136. package/docs/cli/daemon.md +57 -0
  137. package/docs/cli/dashboard.md +22 -0
  138. package/docs/cli/devices.md +171 -0
  139. package/docs/cli/directory.md +63 -0
  140. package/docs/cli/dns.md +48 -0
  141. package/docs/cli/docs.md +28 -0
  142. package/docs/cli/doctor.md +63 -0
  143. package/docs/cli/flows.md +18 -0
  144. package/docs/cli/gateway.md +307 -0
  145. package/docs/cli/health.md +36 -0
  146. package/docs/cli/hooks.md +337 -0
  147. package/docs/cli/index.md +1836 -0
  148. package/docs/cli/logs.md +59 -0
  149. package/docs/cli/mcp.md +505 -0
  150. package/docs/cli/memory.md +139 -0
  151. package/docs/cli/message.md +300 -0
  152. package/docs/cli/models.md +136 -0
  153. package/docs/cli/node.md +137 -0
  154. package/docs/cli/nodes.md +66 -0
  155. package/docs/cli/onboard.md +171 -0
  156. package/docs/cli/pairing.md +65 -0
  157. package/docs/cli/plugins.md +305 -0
  158. package/docs/cli/qr.md +52 -0
  159. package/docs/cli/reset.md +35 -0
  160. package/docs/cli/sandbox.md +197 -0
  161. package/docs/cli/secrets.md +197 -0
  162. package/docs/cli/security.md +86 -0
  163. package/docs/cli/sessions.md +113 -0
  164. package/docs/cli/setup.md +45 -0
  165. package/docs/cli/skills.md +59 -0
  166. package/docs/cli/status.md +35 -0
  167. package/docs/cli/system.md +71 -0
  168. package/docs/cli/tui.md +30 -0
  169. package/docs/cli/uninstall.md +39 -0
  170. package/docs/cli/update.md +113 -0
  171. package/docs/cli/voicecall.md +34 -0
  172. package/docs/cli/webhooks.md +91 -0
  173. package/docs/concepts/agent-loop.md +168 -0
  174. package/docs/concepts/agent-workspace.md +246 -0
  175. package/docs/concepts/agent.md +129 -0
  176. package/docs/concepts/architecture.md +156 -0
  177. package/docs/concepts/compaction.md +122 -0
  178. package/docs/concepts/context-engine.md +274 -0
  179. package/docs/concepts/context.md +179 -0
  180. package/docs/concepts/delegate-architecture.md +307 -0
  181. package/docs/concepts/dreaming.md +173 -0
  182. package/docs/concepts/features.md +76 -0
  183. package/docs/concepts/markdown-formatting.md +130 -0
  184. package/docs/concepts/memory-builtin.md +105 -0
  185. package/docs/concepts/memory-honcho.md +140 -0
  186. package/docs/concepts/memory-qmd.md +163 -0
  187. package/docs/concepts/memory-search.md +141 -0
  188. package/docs/concepts/memory.md +121 -0
  189. package/docs/concepts/messages.md +161 -0
  190. package/docs/concepts/model-failover.md +349 -0
  191. package/docs/concepts/model-providers.md +799 -0
  192. package/docs/concepts/models.md +255 -0
  193. package/docs/concepts/multi-agent.md +615 -0
  194. package/docs/concepts/oauth.md +225 -0
  195. package/docs/concepts/presence.md +102 -0
  196. package/docs/concepts/queue.md +89 -0
  197. package/docs/concepts/retry.md +69 -0
  198. package/docs/concepts/session-pruning.md +92 -0
  199. package/docs/concepts/session-tool.md +141 -0
  200. package/docs/concepts/session.md +116 -0
  201. package/docs/concepts/soul.md +110 -0
  202. package/docs/concepts/streaming.md +161 -0
  203. package/docs/concepts/system-prompt.md +182 -0
  204. package/docs/concepts/timezone.md +97 -0
  205. package/docs/concepts/typebox.md +307 -0
  206. package/docs/concepts/typing-indicators.md +69 -0
  207. package/docs/concepts/usage-tracking.md +59 -0
  208. package/docs/date-time.md +128 -0
  209. package/docs/debug/node-issue.md +85 -0
  210. package/docs/diagnostics/flags.md +91 -0
  211. package/docs/docs.json +1601 -0
  212. package/docs/gateway/authentication.md +218 -0
  213. package/docs/gateway/background-process.md +131 -0
  214. package/docs/gateway/bonjour.md +179 -0
  215. package/docs/gateway/bridge-protocol.md +89 -0
  216. package/docs/gateway/cli-backends.md +310 -0
  217. package/docs/gateway/configuration-examples.md +631 -0
  218. package/docs/gateway/configuration-reference.md +3618 -0
  219. package/docs/gateway/configuration.md +698 -0
  220. package/docs/gateway/discovery.md +141 -0
  221. package/docs/gateway/doctor.md +494 -0
  222. package/docs/gateway/gateway-lock.md +37 -0
  223. package/docs/gateway/health.md +61 -0
  224. package/docs/gateway/heartbeat.md +443 -0
  225. package/docs/gateway/index.md +367 -0
  226. package/docs/gateway/local-models.md +163 -0
  227. package/docs/gateway/logging.md +113 -0
  228. package/docs/gateway/multiple-gateways.md +120 -0
  229. package/docs/gateway/network-model.md +25 -0
  230. package/docs/gateway/openai-http-api.md +280 -0
  231. package/docs/gateway/openresponses-http-api.md +340 -0
  232. package/docs/gateway/openshell.md +307 -0
  233. package/docs/gateway/pairing.md +138 -0
  234. package/docs/gateway/protocol.md +588 -0
  235. package/docs/gateway/remote-gateway-readme.md +164 -0
  236. package/docs/gateway/remote.md +251 -0
  237. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +141 -0
  238. package/docs/gateway/sandboxing.md +473 -0
  239. package/docs/gateway/secrets-plan-contract.md +116 -0
  240. package/docs/gateway/secrets.md +541 -0
  241. package/docs/gateway/security/index.md +1362 -0
  242. package/docs/gateway/tailscale.md +136 -0
  243. package/docs/gateway/tools-invoke-http-api.md +161 -0
  244. package/docs/gateway/troubleshooting.md +451 -0
  245. package/docs/gateway/trusted-proxy-auth.md +399 -0
  246. package/docs/help/debugging.md +168 -0
  247. package/docs/help/environment.md +165 -0
  248. package/docs/help/faq.md +3244 -0
  249. package/docs/help/index.md +28 -0
  250. package/docs/help/scripts.md +27 -0
  251. package/docs/help/testing.md +640 -0
  252. package/docs/help/troubleshooting.md +372 -0
  253. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  254. package/docs/images/feishu-step2-create-app.png +0 -0
  255. package/docs/images/feishu-step3-credentials.png +0 -0
  256. package/docs/images/feishu-step4-permissions.png +0 -0
  257. package/docs/images/feishu-step5-bot-capability.png +0 -0
  258. package/docs/images/feishu-step6-event-subscription.png +0 -0
  259. package/docs/images/feishu-verification-token.png +0 -0
  260. package/docs/images/groups-flow.svg +52 -0
  261. package/docs/images/mobile-ui-screenshot.png +0 -0
  262. package/docs/index.md +196 -0
  263. package/docs/install/ansible.md +230 -0
  264. package/docs/install/azure.md +311 -0
  265. package/docs/install/bun.md +55 -0
  266. package/docs/install/clawdock.md +106 -0
  267. package/docs/install/development-channels.md +131 -0
  268. package/docs/install/digitalocean.md +129 -0
  269. package/docs/install/docker-vm-runtime.md +142 -0
  270. package/docs/install/docker.md +412 -0
  271. package/docs/install/exe-dev.md +133 -0
  272. package/docs/install/fly.md +504 -0
  273. package/docs/install/gcp.md +412 -0
  274. package/docs/install/hetzner.md +259 -0
  275. package/docs/install/index.md +212 -0
  276. package/docs/install/installer.md +443 -0
  277. package/docs/install/kubernetes.md +192 -0
  278. package/docs/install/macos-vm.md +281 -0
  279. package/docs/install/migrating-matrix.md +349 -0
  280. package/docs/install/migrating.md +112 -0
  281. package/docs/install/nix.md +89 -0
  282. package/docs/install/node.md +144 -0
  283. package/docs/install/northflank.mdx +42 -0
  284. package/docs/install/oracle.md +158 -0
  285. package/docs/install/podman.md +210 -0
  286. package/docs/install/railway.mdx +90 -0
  287. package/docs/install/raspberry-pi.md +159 -0
  288. package/docs/install/render.mdx +165 -0
  289. package/docs/install/uninstall.md +128 -0
  290. package/docs/install/updating.md +142 -0
  291. package/docs/logging.md +389 -0
  292. package/docs/nav-tabs-underline.js +100 -0
  293. package/docs/network.md +69 -0
  294. package/docs/nodes/audio.md +191 -0
  295. package/docs/nodes/camera.md +162 -0
  296. package/docs/nodes/images.md +73 -0
  297. package/docs/nodes/index.md +408 -0
  298. package/docs/nodes/location-command.md +98 -0
  299. package/docs/nodes/media-understanding.md +432 -0
  300. package/docs/nodes/talk.md +92 -0
  301. package/docs/nodes/troubleshooting.md +123 -0
  302. package/docs/nodes/voicewake.md +66 -0
  303. package/docs/perplexity.md +181 -0
  304. package/docs/pi-dev.md +80 -0
  305. package/docs/pi.md +570 -0
  306. package/docs/platforms/android.md +244 -0
  307. package/docs/platforms/digitalocean.md +266 -0
  308. package/docs/platforms/index.md +55 -0
  309. package/docs/platforms/ios.md +223 -0
  310. package/docs/platforms/linux.md +100 -0
  311. package/docs/platforms/mac/bundled-gateway.md +75 -0
  312. package/docs/platforms/mac/canvas.md +125 -0
  313. package/docs/platforms/mac/child-process.md +69 -0
  314. package/docs/platforms/mac/dev-setup.md +107 -0
  315. package/docs/platforms/mac/health.md +34 -0
  316. package/docs/platforms/mac/icon.md +31 -0
  317. package/docs/platforms/mac/logging.md +57 -0
  318. package/docs/platforms/mac/menu-bar.md +81 -0
  319. package/docs/platforms/mac/peekaboo.md +65 -0
  320. package/docs/platforms/mac/permissions.md +50 -0
  321. package/docs/platforms/mac/remote.md +84 -0
  322. package/docs/platforms/mac/signing.md +47 -0
  323. package/docs/platforms/mac/skills.md +40 -0
  324. package/docs/platforms/mac/voice-overlay.md +60 -0
  325. package/docs/platforms/mac/voicewake.md +67 -0
  326. package/docs/platforms/mac/webchat.md +51 -0
  327. package/docs/platforms/mac/xpc.md +61 -0
  328. package/docs/platforms/macos.md +229 -0
  329. package/docs/platforms/oracle.md +305 -0
  330. package/docs/platforms/raspberry-pi.md +420 -0
  331. package/docs/platforms/windows.md +241 -0
  332. package/docs/plugins/agent-tools.md +10 -0
  333. package/docs/plugins/architecture.md +1609 -0
  334. package/docs/plugins/building-extensions.md +10 -0
  335. package/docs/plugins/building-plugins.md +319 -0
  336. package/docs/plugins/bundles.md +292 -0
  337. package/docs/plugins/community.md +149 -0
  338. package/docs/plugins/manifest.md +412 -0
  339. package/docs/plugins/sdk-channel-plugins.md +508 -0
  340. package/docs/plugins/sdk-entrypoints.md +210 -0
  341. package/docs/plugins/sdk-migration.md +359 -0
  342. package/docs/plugins/sdk-overview.md +475 -0
  343. package/docs/plugins/sdk-provider-plugins.md +712 -0
  344. package/docs/plugins/sdk-runtime.md +381 -0
  345. package/docs/plugins/sdk-setup.md +516 -0
  346. package/docs/plugins/sdk-testing.md +263 -0
  347. package/docs/plugins/voice-call.md +466 -0
  348. package/docs/plugins/zalouser.md +78 -0
  349. package/docs/prose.md +134 -0
  350. package/docs/providers/anthropic.md +402 -0
  351. package/docs/providers/bedrock-mantle.md +91 -0
  352. package/docs/providers/bedrock.md +273 -0
  353. package/docs/providers/chutes.md +103 -0
  354. package/docs/providers/claude-max-api-proxy.md +163 -0
  355. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  356. package/docs/providers/deepgram.md +93 -0
  357. package/docs/providers/deepseek.md +53 -0
  358. package/docs/providers/fireworks.md +69 -0
  359. package/docs/providers/github-copilot.md +80 -0
  360. package/docs/providers/glm.md +68 -0
  361. package/docs/providers/google.md +149 -0
  362. package/docs/providers/groq.md +105 -0
  363. package/docs/providers/huggingface.md +193 -0
  364. package/docs/providers/index.md +81 -0
  365. package/docs/providers/kilocode.md +89 -0
  366. package/docs/providers/litellm.md +159 -0
  367. package/docs/providers/minimax.md +281 -0
  368. package/docs/providers/mistral.md +68 -0
  369. package/docs/providers/models.md +56 -0
  370. package/docs/providers/moonshot.md +224 -0
  371. package/docs/providers/nvidia.md +58 -0
  372. package/docs/providers/ollama.md +379 -0
  373. package/docs/providers/openai.md +472 -0
  374. package/docs/providers/opencode-go.md +45 -0
  375. package/docs/providers/opencode.md +68 -0
  376. package/docs/providers/openrouter.md +59 -0
  377. package/docs/providers/perplexity-provider.md +62 -0
  378. package/docs/providers/qianfan.md +90 -0
  379. package/docs/providers/qwen.md +128 -0
  380. package/docs/providers/qwen_modelstudio.md +137 -0
  381. package/docs/providers/sglang.md +115 -0
  382. package/docs/providers/stepfun.md +152 -0
  383. package/docs/providers/synthetic.md +101 -0
  384. package/docs/providers/together.md +70 -0
  385. package/docs/providers/venice.md +282 -0
  386. package/docs/providers/vercel-ai-gateway.md +60 -0
  387. package/docs/providers/vllm.md +103 -0
  388. package/docs/providers/volcengine.md +94 -0
  389. package/docs/providers/xai.md +94 -0
  390. package/docs/providers/xiaomi.md +89 -0
  391. package/docs/providers/zai.md +75 -0
  392. package/docs/reference/AGENTS.default.md +126 -0
  393. package/docs/reference/RELEASING.md +138 -0
  394. package/docs/reference/api-usage-costs.md +198 -0
  395. package/docs/reference/credits.md +30 -0
  396. package/docs/reference/device-models.md +47 -0
  397. package/docs/reference/memory-config.md +421 -0
  398. package/docs/reference/prompt-caching.md +344 -0
  399. package/docs/reference/rpc.md +43 -0
  400. package/docs/reference/secretref-credential-surface.md +148 -0
  401. package/docs/reference/secretref-user-supplied-credentials-matrix.json +607 -0
  402. package/docs/reference/session-management-compaction.md +352 -0
  403. package/docs/reference/templates/AGENTS.dev.md +84 -0
  404. package/docs/reference/templates/AGENTS.md +219 -0
  405. package/docs/reference/templates/BOOT.md +12 -0
  406. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  407. package/docs/reference/templates/CLAUDE.md +1 -0
  408. package/docs/reference/templates/HEARTBEAT.md +14 -0
  409. package/docs/reference/templates/IDENTITY.dev.md +48 -0
  410. package/docs/reference/templates/IDENTITY.md +30 -0
  411. package/docs/reference/templates/SOUL.dev.md +77 -0
  412. package/docs/reference/templates/SOUL.md +45 -0
  413. package/docs/reference/templates/TOOLS.dev.md +25 -0
  414. package/docs/reference/templates/TOOLS.md +47 -0
  415. package/docs/reference/templates/USER.dev.md +19 -0
  416. package/docs/reference/templates/USER.md +24 -0
  417. package/docs/reference/test.md +119 -0
  418. package/docs/reference/token-use.md +197 -0
  419. package/docs/reference/transcript-hygiene.md +151 -0
  420. package/docs/reference/wizard.md +245 -0
  421. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  422. package/docs/security/THREAT-MODEL-ATLAS.md +608 -0
  423. package/docs/security/formal-verification.md +167 -0
  424. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +9 -0
  425. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  426. package/docs/start/bootstrapping.md +41 -0
  427. package/docs/start/docs-directory.md +67 -0
  428. package/docs/start/getting-started.md +148 -0
  429. package/docs/start/hubs.md +199 -0
  430. package/docs/start/lore.md +219 -0
  431. package/docs/start/onboarding-overview.md +69 -0
  432. package/docs/start/onboarding.md +92 -0
  433. package/docs/start/openclaw.md +225 -0
  434. package/docs/start/quickstart.md +22 -0
  435. package/docs/start/setup.md +172 -0
  436. package/docs/start/showcase.md +418 -0
  437. package/docs/start/wizard-cli-automation.md +233 -0
  438. package/docs/start/wizard-cli-reference.md +324 -0
  439. package/docs/start/wizard.md +127 -0
  440. package/docs/style.css +37 -0
  441. package/docs/tools/acp-agents.md +837 -0
  442. package/docs/tools/agent-send.md +100 -0
  443. package/docs/tools/apply-patch.md +52 -0
  444. package/docs/tools/brave-search.md +107 -0
  445. package/docs/tools/browser-linux-troubleshooting.md +145 -0
  446. package/docs/tools/browser-login.md +73 -0
  447. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +221 -0
  448. package/docs/tools/browser.md +890 -0
  449. package/docs/tools/btw.md +142 -0
  450. package/docs/tools/capability-cookbook.md +119 -0
  451. package/docs/tools/clawhub.md +348 -0
  452. package/docs/tools/code-execution.md +90 -0
  453. package/docs/tools/creating-skills.md +119 -0
  454. package/docs/tools/diffs.md +434 -0
  455. package/docs/tools/duckduckgo-search.md +102 -0
  456. package/docs/tools/elevated.md +116 -0
  457. package/docs/tools/exa-search.md +127 -0
  458. package/docs/tools/exec-approvals.md +635 -0
  459. package/docs/tools/exec.md +237 -0
  460. package/docs/tools/firecrawl.md +147 -0
  461. package/docs/tools/gemini-search.md +98 -0
  462. package/docs/tools/grok-search.md +102 -0
  463. package/docs/tools/image-generation.md +139 -0
  464. package/docs/tools/index.md +174 -0
  465. package/docs/tools/kimi-search.md +98 -0
  466. package/docs/tools/llm-task.md +119 -0
  467. package/docs/tools/lobster.md +348 -0
  468. package/docs/tools/loop-detection.md +100 -0
  469. package/docs/tools/minimax-search.md +99 -0
  470. package/docs/tools/multi-agent-sandbox-tools.md +373 -0
  471. package/docs/tools/ollama-search.md +100 -0
  472. package/docs/tools/pdf.md +176 -0
  473. package/docs/tools/perplexity-search.md +185 -0
  474. package/docs/tools/plugin.md +348 -0
  475. package/docs/tools/reactions.md +78 -0
  476. package/docs/tools/searxng-search.md +132 -0
  477. package/docs/tools/skills-config.md +133 -0
  478. package/docs/tools/skills.md +377 -0
  479. package/docs/tools/slash-commands.md +322 -0
  480. package/docs/tools/subagents.md +341 -0
  481. package/docs/tools/tavily.md +129 -0
  482. package/docs/tools/thinking.md +102 -0
  483. package/docs/tools/tts.md +452 -0
  484. package/docs/tools/web-fetch.md +159 -0
  485. package/docs/tools/web.md +417 -0
  486. package/docs/tts.md +452 -0
  487. package/docs/vps.md +115 -0
  488. package/docs/web/control-ui.md +318 -0
  489. package/docs/web/dashboard.md +93 -0
  490. package/docs/web/index.md +126 -0
  491. package/docs/web/tui.md +176 -0
  492. package/docs/web/webchat.md +77 -0
  493. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  494. package/docs/whatsapp-openclaw.jpg +0 -0
  495. package/durar.mjs +180 -0
  496. package/package.json +1259 -0
  497. package/scripts/npm-runner.mjs +111 -0
  498. package/scripts/postinstall-bundled-plugins.mjs +188 -0
  499. package/skills/1password/SKILL.md +70 -0
  500. package/skills/1password/references/cli-examples.md +29 -0
  501. package/skills/1password/references/get-started.md +17 -0
  502. package/skills/apple-notes/SKILL.md +77 -0
  503. package/skills/apple-reminders/SKILL.md +118 -0
  504. package/skills/bear-notes/SKILL.md +107 -0
  505. package/skills/blogwatcher/SKILL.md +69 -0
  506. package/skills/blucli/SKILL.md +47 -0
  507. package/skills/bluebubbles/SKILL.md +131 -0
  508. package/skills/camsnap/SKILL.md +45 -0
  509. package/skills/canvas/SKILL.md +199 -0
  510. package/skills/clawhub/SKILL.md +77 -0
  511. package/skills/coding-agent/SKILL.md +316 -0
  512. package/skills/discord/SKILL.md +197 -0
  513. package/skills/eightctl/SKILL.md +50 -0
  514. package/skills/gemini/SKILL.md +43 -0
  515. package/skills/gh-issues/SKILL.md +885 -0
  516. package/skills/gifgrep/SKILL.md +79 -0
  517. package/skills/github/SKILL.md +163 -0
  518. package/skills/gog/SKILL.md +116 -0
  519. package/skills/goplaces/SKILL.md +52 -0
  520. package/skills/healthcheck/SKILL.md +245 -0
  521. package/skills/himalaya/SKILL.md +257 -0
  522. package/skills/himalaya/references/configuration.md +184 -0
  523. package/skills/himalaya/references/message-composition.md +199 -0
  524. package/skills/imsg/SKILL.md +122 -0
  525. package/skills/mcporter/SKILL.md +61 -0
  526. package/skills/model-usage/SKILL.md +69 -0
  527. package/skills/model-usage/references/codexbar-cli.md +33 -0
  528. package/skills/model-usage/scripts/model_usage.py +320 -0
  529. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  530. package/skills/nano-pdf/SKILL.md +38 -0
  531. package/skills/node-connect/SKILL.md +142 -0
  532. package/skills/notion/SKILL.md +174 -0
  533. package/skills/obsidian/SKILL.md +81 -0
  534. package/skills/openai-whisper/SKILL.md +38 -0
  535. package/skills/openai-whisper-api/SKILL.md +62 -0
  536. package/skills/openai-whisper-api/scripts/transcribe.sh +88 -0
  537. package/skills/openhue/SKILL.md +112 -0
  538. package/skills/oracle/SKILL.md +125 -0
  539. package/skills/ordercli/SKILL.md +78 -0
  540. package/skills/peekaboo/SKILL.md +190 -0
  541. package/skills/sag/SKILL.md +87 -0
  542. package/skills/session-logs/SKILL.md +151 -0
  543. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  544. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  545. package/skills/skill-creator/SKILL.md +372 -0
  546. package/skills/skill-creator/license.txt +202 -0
  547. package/skills/skill-creator/scripts/init_skill.py +378 -0
  548. package/skills/skill-creator/scripts/package_skill.py +139 -0
  549. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  550. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  551. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  552. package/skills/slack/SKILL.md +144 -0
  553. package/skills/songsee/SKILL.md +49 -0
  554. package/skills/sonoscli/SKILL.md +65 -0
  555. package/skills/spotify-player/SKILL.md +64 -0
  556. package/skills/summarize/SKILL.md +87 -0
  557. package/skills/taskflow/SKILL.md +149 -0
  558. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  559. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  560. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  561. package/skills/things-mac/SKILL.md +86 -0
  562. package/skills/tmux/SKILL.md +170 -0
  563. package/skills/tmux/scripts/find-sessions.sh +112 -0
  564. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  565. package/skills/trello/SKILL.md +108 -0
  566. package/skills/video-frames/SKILL.md +46 -0
  567. package/skills/video-frames/scripts/frame.sh +81 -0
  568. package/skills/voice-call/SKILL.md +45 -0
  569. package/skills/wacli/SKILL.md +72 -0
  570. package/skills/weather/SKILL.md +129 -0
  571. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,389 @@
1
+ ---
2
+ summary: "Logging overview: file logs, console output, CLI tailing, and the Control UI"
3
+ read_when:
4
+ - You need a beginner-friendly overview of logging
5
+ - You want to configure log levels or formats
6
+ - You are troubleshooting and need to find logs quickly
7
+ title: "Logging Overview"
8
+ ---
9
+
10
+ # Logging
11
+
12
+ Durar has two main log surfaces:
13
+
14
+ - **File logs** (JSON lines) written by the Gateway.
15
+ - **Console output** shown in terminals and the Gateway Debug UI.
16
+
17
+ The Control UI **Logs** tab tails the gateway file log. This page explains where
18
+ logs live, how to read them, and how to configure log levels and formats.
19
+
20
+ ## Where logs live
21
+
22
+ By default, the Gateway writes a rolling log file under:
23
+
24
+ `/tmp/Durar/Durar-YYYY-MM-DD.log`
25
+
26
+ The date uses the gateway host's local timezone.
27
+
28
+ You can override this in `~/.Durar/Durar.json`:
29
+
30
+ ```json
31
+ {
32
+ "logging": {
33
+ "file": "/path/to/Durar.log"
34
+ }
35
+ }
36
+ ```
37
+
38
+ ## How to read logs
39
+
40
+ ### CLI: live tail (recommended)
41
+
42
+ Use the CLI to tail the gateway log file via RPC:
43
+
44
+ ```bash
45
+ Durar logs --follow
46
+ ```
47
+
48
+ Useful current options:
49
+
50
+ - `--local-time`: render timestamps in your local timezone
51
+ - `--url <url>` / `--token <token>` / `--timeout <ms>`: standard Gateway RPC flags
52
+ - `--expect-final`: agent-backed RPC final-response wait flag (accepted here via the shared client layer)
53
+
54
+ Output modes:
55
+
56
+ - **TTY sessions**: pretty, colorized, structured log lines.
57
+ - **Non-TTY sessions**: plain text.
58
+ - `--json`: line-delimited JSON (one log event per line).
59
+ - `--plain`: force plain text in TTY sessions.
60
+ - `--no-color`: disable ANSI colors.
61
+
62
+ When you pass an explicit `--url`, the CLI does not auto-apply config or
63
+ environment credentials; include `--token` yourself if the target Gateway
64
+ requires auth.
65
+
66
+ In JSON mode, the CLI emits `type`-tagged objects:
67
+
68
+ - `meta`: stream metadata (file, cursor, size)
69
+ - `log`: parsed log entry
70
+ - `notice`: truncation / rotation hints
71
+ - `raw`: unparsed log line
72
+
73
+ If the local loopback Gateway asks for pairing, `Durar logs` falls back to
74
+ the configured local log file automatically. Explicit `--url` targets do not
75
+ use this fallback.
76
+
77
+ If the Gateway is unreachable, the CLI prints a short hint to run:
78
+
79
+ ```bash
80
+ Durar doctor
81
+ ```
82
+
83
+ ### Control UI (web)
84
+
85
+ The Control UI’s **Logs** tab tails the same file using `logs.tail`.
86
+ See [/web/control-ui](/web/control-ui) for how to open it.
87
+
88
+ ### Channel-only logs
89
+
90
+ To filter channel activity (WhatsApp/Telegram/etc), use:
91
+
92
+ ```bash
93
+ Durar channels logs --channel whatsapp
94
+ ```
95
+
96
+ ## Log formats
97
+
98
+ ### File logs (JSONL)
99
+
100
+ Each line in the log file is a JSON object. The CLI and Control UI parse these
101
+ entries to render structured output (time, level, subsystem, message).
102
+
103
+ ### Console output
104
+
105
+ Console logs are **TTY-aware** and formatted for readability:
106
+
107
+ - Subsystem prefixes (e.g. `gateway/channels/whatsapp`)
108
+ - Level coloring (info/warn/error)
109
+ - Optional compact or JSON mode
110
+
111
+ Console formatting is controlled by `logging.consoleStyle`.
112
+
113
+ ### Gateway WebSocket logs
114
+
115
+ `Durar gateway` also has WebSocket protocol logging for RPC traffic:
116
+
117
+ - normal mode: only interesting results (errors, parse errors, slow calls)
118
+ - `--verbose`: all request/response traffic
119
+ - `--ws-log auto|compact|full`: pick the verbose rendering style
120
+ - `--compact`: alias for `--ws-log compact`
121
+
122
+ Examples:
123
+
124
+ ```bash
125
+ Durar gateway
126
+ Durar gateway --verbose --ws-log compact
127
+ Durar gateway --verbose --ws-log full
128
+ ```
129
+
130
+ ## Configuring logging
131
+
132
+ All logging configuration lives under `logging` in `~/.Durar/Durar.json`.
133
+
134
+ ```json
135
+ {
136
+ "logging": {
137
+ "level": "info",
138
+ "file": "/tmp/Durar/Durar-YYYY-MM-DD.log",
139
+ "consoleLevel": "info",
140
+ "consoleStyle": "pretty",
141
+ "redactSensitive": "tools",
142
+ "redactPatterns": ["sk-.*"]
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### Log levels
148
+
149
+ - `logging.level`: **file logs** (JSONL) level.
150
+ - `logging.consoleLevel`: **console** verbosity level.
151
+
152
+ You can override both via the **`Durar_LOG_LEVEL`** environment variable (e.g. `Durar_LOG_LEVEL=debug`). The env var takes precedence over the config file, so you can raise verbosity for a single run without editing `Durar.json`. You can also pass the global CLI option **`--log-level <level>`** (for example, `Durar --log-level debug gateway run`), which overrides the environment variable for that command.
153
+
154
+ `--verbose` only affects console output and WS log verbosity; it does not change
155
+ file log levels.
156
+
157
+ ### Console styles
158
+
159
+ `logging.consoleStyle`:
160
+
161
+ - `pretty`: human-friendly, colored, with timestamps.
162
+ - `compact`: tighter output (best for long sessions).
163
+ - `json`: JSON per line (for log processors).
164
+
165
+ ### Redaction
166
+
167
+ Tool summaries can redact sensitive tokens before they hit the console:
168
+
169
+ - `logging.redactSensitive`: `off` | `tools` (default: `tools`)
170
+ - `logging.redactPatterns`: list of regex strings to override the default set
171
+
172
+ Redaction affects **console output only** and does not alter file logs.
173
+
174
+ ## Diagnostics + OpenTelemetry
175
+
176
+ Diagnostics are structured, machine-readable events for model runs **and**
177
+ message-flow telemetry (webhooks, queueing, session state). They do **not**
178
+ replace logs; they exist to feed metrics, traces, and other exporters.
179
+
180
+ Diagnostics events are emitted in-process, but exporters only attach when
181
+ diagnostics + the exporter plugin are enabled.
182
+
183
+ ### OpenTelemetry vs OTLP
184
+
185
+ - **OpenTelemetry (OTel)**: the data model + SDKs for traces, metrics, and logs.
186
+ - **OTLP**: the wire protocol used to export OTel data to a collector/backend.
187
+ - Durar exports via **OTLP/HTTP (protobuf)** today.
188
+
189
+ ### Signals exported
190
+
191
+ - **Metrics**: counters + histograms (token usage, message flow, queueing).
192
+ - **Traces**: spans for model usage + webhook/message processing.
193
+ - **Logs**: exported over OTLP when `diagnostics.otel.logs` is enabled. Log
194
+ volume can be high; keep `logging.level` and exporter filters in mind.
195
+
196
+ ### Diagnostic event catalog
197
+
198
+ Model usage:
199
+
200
+ - `model.usage`: tokens, cost, duration, context, provider/model/channel, session ids.
201
+
202
+ Message flow:
203
+
204
+ - `webhook.received`: webhook ingress per channel.
205
+ - `webhook.processed`: webhook handled + duration.
206
+ - `webhook.error`: webhook handler errors.
207
+ - `message.queued`: message enqueued for processing.
208
+ - `message.processed`: outcome + duration + optional error.
209
+
210
+ Queue + session:
211
+
212
+ - `queue.lane.enqueue`: command queue lane enqueue + depth.
213
+ - `queue.lane.dequeue`: command queue lane dequeue + wait time.
214
+ - `session.state`: session state transition + reason.
215
+ - `session.stuck`: session stuck warning + age.
216
+ - `run.attempt`: run retry/attempt metadata.
217
+ - `diagnostic.heartbeat`: aggregate counters (webhooks/queue/session).
218
+
219
+ ### Enable diagnostics (no exporter)
220
+
221
+ Use this if you want diagnostics events available to plugins or custom sinks:
222
+
223
+ ```json
224
+ {
225
+ "diagnostics": {
226
+ "enabled": true
227
+ }
228
+ }
229
+ ```
230
+
231
+ ### Diagnostics flags (targeted logs)
232
+
233
+ Use flags to turn on extra, targeted debug logs without raising `logging.level`.
234
+ Flags are case-insensitive and support wildcards (e.g. `telegram.*` or `*`).
235
+
236
+ ```json
237
+ {
238
+ "diagnostics": {
239
+ "flags": ["telegram.http"]
240
+ }
241
+ }
242
+ ```
243
+
244
+ Env override (one-off):
245
+
246
+ ```
247
+ Durar_DIAGNOSTICS=telegram.http,telegram.payload
248
+ ```
249
+
250
+ Notes:
251
+
252
+ - Flag logs go to the standard log file (same as `logging.file`).
253
+ - Output is still redacted according to `logging.redactSensitive`.
254
+ - Full guide: [/diagnostics/flags](/diagnostics/flags).
255
+
256
+ ### Export to OpenTelemetry
257
+
258
+ Diagnostics can be exported via the `diagnostics-otel` plugin (OTLP/HTTP). This
259
+ works with any OpenTelemetry collector/backend that accepts OTLP/HTTP.
260
+
261
+ ```json
262
+ {
263
+ "plugins": {
264
+ "allow": ["diagnostics-otel"],
265
+ "entries": {
266
+ "diagnostics-otel": {
267
+ "enabled": true
268
+ }
269
+ }
270
+ },
271
+ "diagnostics": {
272
+ "enabled": true,
273
+ "otel": {
274
+ "enabled": true,
275
+ "endpoint": "http://otel-collector:4318",
276
+ "protocol": "http/protobuf",
277
+ "serviceName": "Durar-gateway",
278
+ "traces": true,
279
+ "metrics": true,
280
+ "logs": true,
281
+ "sampleRate": 0.2,
282
+ "flushIntervalMs": 60000
283
+ }
284
+ }
285
+ }
286
+ ```
287
+
288
+ Notes:
289
+
290
+ - You can also enable the plugin with `Durar plugins enable diagnostics-otel`.
291
+ - `protocol` currently supports `http/protobuf` only. `grpc` is ignored.
292
+ - Metrics include token usage, cost, context size, run duration, and message-flow
293
+ counters/histograms (webhooks, queueing, session state, queue depth/wait).
294
+ - Traces/metrics can be toggled with `traces` / `metrics` (default: on). Traces
295
+ include model usage spans plus webhook/message processing spans when enabled.
296
+ - Set `headers` when your collector requires auth.
297
+ - Environment variables supported: `OTEL_EXPORTER_OTLP_ENDPOINT`,
298
+ `OTEL_SERVICE_NAME`, `OTEL_EXPORTER_OTLP_PROTOCOL`.
299
+
300
+ ### Exported metrics (names + types)
301
+
302
+ Model usage:
303
+
304
+ - `Durar.tokens` (counter, attrs: `Durar.token`, `Durar.channel`,
305
+ `Durar.provider`, `Durar.model`)
306
+ - `Durar.cost.usd` (counter, attrs: `Durar.channel`, `Durar.provider`,
307
+ `Durar.model`)
308
+ - `Durar.run.duration_ms` (histogram, attrs: `Durar.channel`,
309
+ `Durar.provider`, `Durar.model`)
310
+ - `Durar.context.tokens` (histogram, attrs: `Durar.context`,
311
+ `Durar.channel`, `Durar.provider`, `Durar.model`)
312
+
313
+ Message flow:
314
+
315
+ - `Durar.webhook.received` (counter, attrs: `Durar.channel`,
316
+ `Durar.webhook`)
317
+ - `Durar.webhook.error` (counter, attrs: `Durar.channel`,
318
+ `Durar.webhook`)
319
+ - `Durar.webhook.duration_ms` (histogram, attrs: `Durar.channel`,
320
+ `Durar.webhook`)
321
+ - `Durar.message.queued` (counter, attrs: `Durar.channel`,
322
+ `Durar.source`)
323
+ - `Durar.message.processed` (counter, attrs: `Durar.channel`,
324
+ `Durar.outcome`)
325
+ - `Durar.message.duration_ms` (histogram, attrs: `Durar.channel`,
326
+ `Durar.outcome`)
327
+
328
+ Queues + sessions:
329
+
330
+ - `Durar.queue.lane.enqueue` (counter, attrs: `Durar.lane`)
331
+ - `Durar.queue.lane.dequeue` (counter, attrs: `Durar.lane`)
332
+ - `Durar.queue.depth` (histogram, attrs: `Durar.lane` or
333
+ `Durar.channel=heartbeat`)
334
+ - `Durar.queue.wait_ms` (histogram, attrs: `Durar.lane`)
335
+ - `Durar.session.state` (counter, attrs: `Durar.state`, `Durar.reason`)
336
+ - `Durar.session.stuck` (counter, attrs: `Durar.state`)
337
+ - `Durar.session.stuck_age_ms` (histogram, attrs: `Durar.state`)
338
+ - `Durar.run.attempt` (counter, attrs: `Durar.attempt`)
339
+
340
+ ### Exported spans (names + key attributes)
341
+
342
+ - `Durar.model.usage`
343
+ - `Durar.channel`, `Durar.provider`, `Durar.model`
344
+ - `Durar.sessionKey`, `Durar.sessionId`
345
+ - `Durar.tokens.*` (input/output/cache_read/cache_write/total)
346
+ - `Durar.webhook.processed`
347
+ - `Durar.channel`, `Durar.webhook`, `Durar.chatId`
348
+ - `Durar.webhook.error`
349
+ - `Durar.channel`, `Durar.webhook`, `Durar.chatId`,
350
+ `Durar.error`
351
+ - `Durar.message.processed`
352
+ - `Durar.channel`, `Durar.outcome`, `Durar.chatId`,
353
+ `Durar.messageId`, `Durar.sessionKey`, `Durar.sessionId`,
354
+ `Durar.reason`
355
+ - `Durar.session.stuck`
356
+ - `Durar.state`, `Durar.ageMs`, `Durar.queueDepth`,
357
+ `Durar.sessionKey`, `Durar.sessionId`
358
+
359
+ ### Sampling + flushing
360
+
361
+ - Trace sampling: `diagnostics.otel.sampleRate` (0.0–1.0, root spans only).
362
+ - Metric export interval: `diagnostics.otel.flushIntervalMs` (min 1000ms).
363
+
364
+ ### Protocol notes
365
+
366
+ - OTLP/HTTP endpoints can be set via `diagnostics.otel.endpoint` or
367
+ `OTEL_EXPORTER_OTLP_ENDPOINT`.
368
+ - If the endpoint already contains `/v1/traces` or `/v1/metrics`, it is used as-is.
369
+ - If the endpoint already contains `/v1/logs`, it is used as-is for logs.
370
+ - `diagnostics.otel.logs` enables OTLP log export for the main logger output.
371
+
372
+ ### Log export behavior
373
+
374
+ - OTLP logs use the same structured records written to `logging.file`.
375
+ - Respect `logging.level` (file log level). Console redaction does **not** apply
376
+ to OTLP logs.
377
+ - High-volume installs should prefer OTLP collector sampling/filtering.
378
+
379
+ ## Troubleshooting tips
380
+
381
+ - **Gateway not reachable?** Run `Durar doctor` first.
382
+ - **Logs empty?** Check that the Gateway is running and writing to the file path
383
+ in `logging.file`.
384
+ - **Need more detail?** Set `logging.level` to `debug` or `trace` and retry.
385
+
386
+ ## Related
387
+
388
+ - [Gateway Logging Internals](/gateway/logging) — WS log styles, subsystem prefixes, and console capture
389
+ - [Diagnostics](/gateway/configuration-reference#diagnostics) — OpenTelemetry export and cache trace config
@@ -0,0 +1,100 @@
1
+ (() => {
2
+ const NAV_TABS_SELECTOR = ".nav-tabs";
3
+ const ACTIVE_UNDERLINE_SELECTOR = ".nav-tabs-item > div.bg-primary";
4
+ const UNDERLINE_CLASS = "nav-tabs-underline";
5
+ const READY_CLASS = "nav-tabs-underline-ready";
6
+
7
+ let navTabs = null;
8
+ let navTabsObserver = null;
9
+ let lastX = null;
10
+ let lastWidth = null;
11
+
12
+ const ensureUnderline = (tabs) => {
13
+ let underline = tabs.querySelector(`.${UNDERLINE_CLASS}`);
14
+ if (!underline) {
15
+ underline = document.createElement("div");
16
+ underline.className = UNDERLINE_CLASS;
17
+ tabs.appendChild(underline);
18
+ }
19
+ return underline;
20
+ };
21
+
22
+ const getActiveTab = (tabs) => {
23
+ const activeUnderline = tabs.querySelector(ACTIVE_UNDERLINE_SELECTOR);
24
+ return activeUnderline?.closest(".nav-tabs-item") ?? null;
25
+ };
26
+
27
+ const updateUnderline = () => {
28
+ if (!navTabs) {
29
+ return;
30
+ }
31
+
32
+ ensureUnderline(navTabs);
33
+
34
+ const activeTab = getActiveTab(navTabs);
35
+ if (!activeTab) {
36
+ navTabs.classList.remove(READY_CLASS);
37
+ return;
38
+ }
39
+
40
+ const navRect = navTabs.getBoundingClientRect();
41
+ const tabRect = activeTab.getBoundingClientRect();
42
+ const left = tabRect.left - navRect.left;
43
+
44
+ navTabs.style.setProperty("--nav-tab-underline-x", `${left}px`);
45
+ navTabs.style.setProperty("--nav-tab-underline-width", `${tabRect.width}px`);
46
+ navTabs.classList.add(READY_CLASS);
47
+
48
+ lastX = left;
49
+ lastWidth = tabRect.width;
50
+ };
51
+
52
+ const scheduleUpdate = () => {
53
+ requestAnimationFrame(updateUnderline);
54
+ };
55
+
56
+ const setupNavTabsObserver = (tabs) => {
57
+ if (!tabs || tabs === navTabs) {
58
+ return;
59
+ }
60
+
61
+ navTabs = tabs;
62
+ ensureUnderline(navTabs);
63
+ if (lastX !== null && lastWidth !== null) {
64
+ navTabs.style.setProperty("--nav-tab-underline-x", `${lastX}px`);
65
+ navTabs.style.setProperty("--nav-tab-underline-width", `${lastWidth}px`);
66
+ navTabs.classList.add(READY_CLASS);
67
+ }
68
+ navTabsObserver?.disconnect();
69
+ navTabsObserver = new MutationObserver(scheduleUpdate);
70
+ navTabsObserver.observe(navTabs, {
71
+ subtree: true,
72
+ attributes: true,
73
+ attributeFilter: ["class"],
74
+ });
75
+
76
+ scheduleUpdate();
77
+ };
78
+
79
+ const setupObservers = () => {
80
+ const tabs = document.querySelector(NAV_TABS_SELECTOR);
81
+ if (tabs) {
82
+ setupNavTabsObserver(tabs);
83
+ }
84
+ };
85
+
86
+ const rootObserver = new MutationObserver(setupObservers);
87
+
88
+ if (document.readyState === "loading") {
89
+ document.addEventListener("DOMContentLoaded", () => {
90
+ setupObservers();
91
+ rootObserver.observe(document.body, { childList: true, subtree: true });
92
+ });
93
+ } else {
94
+ setupObservers();
95
+ rootObserver.observe(document.body, { childList: true, subtree: true });
96
+ }
97
+
98
+ window.addEventListener("resize", scheduleUpdate);
99
+ void document.fonts?.ready?.then(scheduleUpdate, () => {});
100
+ })();
@@ -0,0 +1,69 @@
1
+ ---
2
+ summary: "Network hub: gateway surfaces, pairing, discovery, and security"
3
+ read_when:
4
+ - You need the network architecture + security overview
5
+ - You are debugging local vs tailnet access or pairing
6
+ - You want the canonical list of networking docs
7
+ title: "Network"
8
+ ---
9
+
10
+ # Network hub
11
+
12
+ This hub links the core docs for how Durar connects, pairs, and secures
13
+ devices across localhost, LAN, and tailnet.
14
+
15
+ ## Core model
16
+
17
+ Most operations flow through the Gateway (`Durar gateway`), a single long-running process that owns channel connections and the WebSocket control plane.
18
+
19
+ - **Loopback first**: the Gateway WS defaults to `ws://127.0.0.1:18789`.
20
+ Non-loopback binds require a valid gateway auth path: shared-secret
21
+ token/password auth, or a correctly configured non-loopback
22
+ `trusted-proxy` deployment.
23
+ - **One Gateway per host** is recommended. For isolation, run multiple gateways with isolated profiles and ports ([Multiple Gateways](/gateway/multiple-gateways)).
24
+ - **Canvas host** is served on the same port as the Gateway (`/__Durar__/canvas/`, `/__Durar__/a2ui/`), protected by Gateway auth when bound beyond loopback.
25
+ - **Remote access** is typically SSH tunnel or Tailscale VPN ([Remote Access](/gateway/remote)).
26
+
27
+ Key references:
28
+
29
+ - [Gateway architecture](/concepts/architecture)
30
+ - [Gateway protocol](/gateway/protocol)
31
+ - [Gateway runbook](/gateway)
32
+ - [Web surfaces + bind modes](/web)
33
+
34
+ ## Pairing + identity
35
+
36
+ - [Pairing overview (DM + nodes)](/channels/pairing)
37
+ - [Gateway-owned node pairing](/gateway/pairing)
38
+ - [Devices CLI (pairing + token rotation)](/cli/devices)
39
+ - [Pairing CLI (DM approvals)](/cli/pairing)
40
+
41
+ Local trust:
42
+
43
+ - Direct local loopback connects can be auto-approved for pairing to keep
44
+ same-host UX smooth.
45
+ - Durar also has a narrow backend/container-local self-connect path for
46
+ trusted shared-secret helper flows.
47
+ - Tailnet and LAN clients, including same-host tailnet binds, still require
48
+ explicit pairing approval.
49
+
50
+ ## Discovery + transports
51
+
52
+ - [Discovery & transports](/gateway/discovery)
53
+ - [Bonjour / mDNS](/gateway/bonjour)
54
+ - [Remote access (SSH)](/gateway/remote)
55
+ - [Tailscale](/gateway/tailscale)
56
+
57
+ ## Nodes + transports
58
+
59
+ - [Nodes overview](/nodes)
60
+ - [Bridge protocol (legacy nodes, historical)](/gateway/bridge-protocol)
61
+ - [Node runbook: iOS](/platforms/ios)
62
+ - [Node runbook: Android](/platforms/android)
63
+
64
+ ## Security
65
+
66
+ - [Security overview](/gateway/security)
67
+ - [Gateway config reference](/gateway/configuration)
68
+ - [Troubleshooting](/gateway/troubleshooting)
69
+ - [Doctor](/gateway/doctor)