hyperclaw 4.0.2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/README.md +246 -60
  2. package/dist/a2ui-protocol-CfBI44-Q.js +75 -0
  3. package/dist/agents-routing-ChHiZp36.js +327 -0
  4. package/dist/agents-routing-ChqZ6l2S.js +4 -0
  5. package/dist/api-keys-guide-BCcOl0Q7.js +149 -0
  6. package/dist/api-keys-guide-CGn5BSF7.js +149 -0
  7. package/dist/audit-BJohI_vC.js +441 -0
  8. package/dist/audit-BaIiyWFu.js +441 -0
  9. package/dist/bounty-tools-CY_i91DU.js +211 -0
  10. package/dist/bounty-tools-DWudyZie.js +211 -0
  11. package/dist/browser-tools-BsTeGMnX.js +5 -0
  12. package/dist/browser-tools-D8_rLe2p.js +179 -0
  13. package/dist/claw-tasks-CgTsiNE8.js +80 -0
  14. package/dist/claw-tasks-Cyzdbhz_.js +80 -0
  15. package/dist/connector-5N0-X_xs.js +194 -0
  16. package/dist/connector-B3v0qcXg.js +425 -0
  17. package/dist/connector-B8R3iBY1.js +280 -0
  18. package/dist/connector-BAM-08NN.js +189 -0
  19. package/dist/connector-BC8FIVu4.js +181 -0
  20. package/dist/connector-BDmwwaVc.js +213 -0
  21. package/dist/connector-BGjbBy69.js +225 -0
  22. package/dist/connector-BO2SRzfG.js +218 -0
  23. package/dist/connector-BfXky0L3.js +167 -0
  24. package/dist/connector-BiiSJpx3.js +192 -0
  25. package/dist/connector-BnDmIhIu.js +85 -0
  26. package/dist/connector-C1HSoUyk.js +189 -0
  27. package/dist/connector-CKQHZOXg.js +568 -0
  28. package/dist/connector-CRl-iidy.js +239 -0
  29. package/dist/connector-Ci9glMD-.js +340 -0
  30. package/dist/connector-CjtZIEDj.js +181 -0
  31. package/dist/connector-Ck6JtOsX.js +531 -0
  32. package/dist/connector-D8Kelee0.js +286 -0
  33. package/dist/connector-DAnRJ0oP.js +162 -0
  34. package/dist/connector-DXTp5PE8.js +508 -0
  35. package/dist/connector-Dih6dUPP.js +173 -0
  36. package/dist/connector-DqTH_tPX.js +182 -0
  37. package/dist/connector-DrnEiiyP.js +419 -0
  38. package/dist/connector-DtR5GGTX.js +167 -0
  39. package/dist/connector-Tky_qS_K.js +350 -0
  40. package/dist/connector-ZSc3oTTy.js +305 -0
  41. package/dist/connector-sW5yhU1m.js +498 -0
  42. package/dist/connector-u3ICd3Ic.js +552 -0
  43. package/dist/cost-tracker-Ca1UPZ33.js +103 -0
  44. package/dist/cost-tracker-DD9wtWsr.js +103 -0
  45. package/dist/credentials-store-C6ir0Dae.js +4 -0
  46. package/dist/credentials-store-CA8UtK0T.js +77 -0
  47. package/dist/credentials-store-Cm7DH-kh.js +4 -0
  48. package/dist/credentials-store-H13LqOwJ.js +77 -0
  49. package/dist/cron-tasks-Bli7Kzd2.js +82 -0
  50. package/dist/cron-tasks-_pqQCmxc.js +82 -0
  51. package/dist/daemon-7ViroziB.js +5 -0
  52. package/dist/daemon-BfyKmZhr.js +318 -0
  53. package/dist/daemon-Bg4GtCmc.js +318 -0
  54. package/dist/daemon-DhmwY8k4.js +5 -0
  55. package/dist/delivery-BmIYy9VQ.js +4 -0
  56. package/dist/delivery-DVHmv1IR.js +4 -0
  57. package/dist/delivery-DpMX0Yyc.js +95 -0
  58. package/dist/delivery-pWUPBp1F.js +95 -0
  59. package/dist/destructive-gate-D6vWOdEl.js +101 -0
  60. package/dist/destructive-gate-DZt71UZR.js +101 -0
  61. package/dist/developer-keys-CPWT7Q6S.js +8 -0
  62. package/dist/developer-keys-DrrcUqFa.js +127 -0
  63. package/dist/doctor-BvCe8BBk.js +230 -0
  64. package/dist/doctor-CxyPLYsJ.js +6 -0
  65. package/dist/engine-B0kLfRL0.js +256 -0
  66. package/dist/engine-BJUpRUOv.js +7 -0
  67. package/dist/engine-CEDSqXfw.js +256 -0
  68. package/dist/engine-Da4JMNpI.js +7 -0
  69. package/dist/env-resolve-17ekEU6p.js +10 -0
  70. package/dist/env-resolve-CiXbWYwe.js +10 -0
  71. package/dist/env-resolve-CmGWhWXJ.js +115 -0
  72. package/dist/env-resolve-Z2XF6leB.js +115 -0
  73. package/dist/extraction-tools-HOZstZ0y.js +91 -0
  74. package/dist/extraction-tools-m4lmAv7l.js +5 -0
  75. package/dist/form_data-Cz040rio.js +8657 -0
  76. package/dist/gmail-watch-setup-Du7DVV7S.js +40 -0
  77. package/dist/health-B-asI__D.js +6 -0
  78. package/dist/health-Ds2YlpTB.js +152 -0
  79. package/dist/heartbeat-engine-BYT5ayQH.js +83 -0
  80. package/dist/heartbeat-engine-Ut6pXBD6.js +83 -0
  81. package/dist/hub-9LaKnLjY.js +6 -0
  82. package/dist/hub-CfwUz9YW.js +515 -0
  83. package/dist/hub-D0XwdjM-.js +515 -0
  84. package/dist/hub-LiD5Iztb.js +6 -0
  85. package/dist/hyperclawbot-CBiDSKsa.js +505 -0
  86. package/dist/hyperclawbot-zvczQgKx.js +505 -0
  87. package/dist/inference-0mlFQqIm.js +922 -0
  88. package/dist/inference-BKVkBREb.js +6 -0
  89. package/dist/inference-DCXH4Q3x.js +922 -0
  90. package/dist/inference-SzqFe_nk.js +6 -0
  91. package/dist/knowledge-graph-DE5lSF02.js +131 -0
  92. package/dist/knowledge-graph-iBG76fvm.js +131 -0
  93. package/dist/loader-BkDi8MD9.js +400 -0
  94. package/dist/loader-CC45xGpC.js +4 -0
  95. package/dist/loader-CnEdOyjT.js +400 -0
  96. package/dist/loader-DI2qDRPC.js +4 -0
  97. package/dist/logger-Cp8wC7F8.js +83 -0
  98. package/dist/logger-ybOp7VOC.js +83 -0
  99. package/dist/manager-03ipO9R0.js +105 -0
  100. package/dist/manager-B2Gls5RG.js +218 -0
  101. package/dist/manager-BpDfbDjg.js +117 -0
  102. package/dist/manager-Bxl0sqlh.js +4 -0
  103. package/dist/manager-CWNSML5D.js +117 -0
  104. package/dist/manager-CrVDn6eN.js +6 -0
  105. package/dist/manager-FCgF1plu.js +218 -0
  106. package/dist/manager-SJe9gt-q.js +4 -0
  107. package/dist/manager-rgCsaWT1.js +40 -0
  108. package/dist/mcp-CfoSU4Uz.js +139 -0
  109. package/dist/mcp-loader-CvxRDtPC.js +94 -0
  110. package/dist/mcp-loader-DkRBsLpk.js +94 -0
  111. package/dist/memory-BlHL7JCO.js +4 -0
  112. package/dist/memory-DsS_eFvJ.js +270 -0
  113. package/dist/memory-auto-BkvtSFUw.js +5 -0
  114. package/dist/memory-auto-Bnz_-1wP.js +306 -0
  115. package/dist/memory-auto-CpQHZlEJ.js +306 -0
  116. package/dist/memory-auto-Z6LCf-iK.js +5 -0
  117. package/dist/memory-integration-cSYkZyEo.js +91 -0
  118. package/dist/memory-integration-g2vxwgoE.js +91 -0
  119. package/dist/moltbook-BtLDZTfM.js +81 -0
  120. package/dist/moltbook-Cl8cQfxJ.js +81 -0
  121. package/dist/node-Dw2Gi-cP.js +222 -0
  122. package/dist/nodes-registry-B8dmrlLv.js +52 -0
  123. package/dist/nodes-registry-C9dCFwjh.js +52 -0
  124. package/dist/oauth-flow-CeaaGAz0.js +150 -0
  125. package/dist/oauth-flow-DQPvMHRH.js +150 -0
  126. package/dist/oauth-provider-B4dzn56l.js +110 -0
  127. package/dist/oauth-provider-Uo4Nib_c.js +110 -0
  128. package/dist/observability-BV-Yx0V9.js +89 -0
  129. package/dist/observability-nZ3CBIxG.js +89 -0
  130. package/dist/onboard-0WoDxbv_.js +10 -0
  131. package/dist/onboard-BBBWcfhp.js +10 -0
  132. package/dist/onboard-BXNXCQp4.js +4070 -0
  133. package/dist/onboard-Bw28IRQ3.js +4070 -0
  134. package/dist/orchestrator-BovkM63z.js +6 -0
  135. package/dist/orchestrator-DSbpkP1X.js +189 -0
  136. package/dist/orchestrator-DmnEvMaL.js +189 -0
  137. package/dist/orchestrator-RI3bpqqc.js +6 -0
  138. package/dist/osint-B4_m3VHQ.js +277 -0
  139. package/dist/pairing-6iM27aD8.js +196 -0
  140. package/dist/pairing-dGoiGepK.js +4 -0
  141. package/dist/pc-access-CgCsYrpt.js +8 -0
  142. package/dist/pc-access-_iH2aorG.js +819 -0
  143. package/dist/pending-approval-BgNjjuI2.js +22 -0
  144. package/dist/pending-approval-CUXjysAo.js +22 -0
  145. package/dist/reminders-store-Drjed_-h.js +58 -0
  146. package/dist/renderer-BVQrd0_g.js +225 -0
  147. package/dist/rules-BE4GV6cV.js +103 -0
  148. package/dist/run-main.js +1639 -460
  149. package/dist/runner-CJFJUtPm.js +1271 -0
  150. package/dist/runner-DatMMYYE.js +1271 -0
  151. package/dist/sdk/index.js +2 -2
  152. package/dist/sdk/index.mjs +2 -2
  153. package/dist/security-BqNyT4ID.js +4 -0
  154. package/dist/security-tpgqPWWH.js +73 -0
  155. package/dist/server-Brl_HQUB.js +1255 -0
  156. package/dist/server-D4wVHiX9.js +4 -0
  157. package/dist/server-Dh3JlBFB.js +1255 -0
  158. package/dist/server-DhfipkwN.js +4 -0
  159. package/dist/session-store-BUiPz0Vv.js +5 -0
  160. package/dist/session-store-is4B6qmD.js +113 -0
  161. package/dist/sessions-tools-CbUTFe4i.js +5 -0
  162. package/dist/sessions-tools-CeqD7iil.js +95 -0
  163. package/dist/skill-loader-BaNLVmJy.js +7 -0
  164. package/dist/skill-loader-HgpF6Vqs.js +159 -0
  165. package/dist/skill-runtime-BXWd-Ktf.js +102 -0
  166. package/dist/skill-runtime-CJN24QPW.js +102 -0
  167. package/dist/skill-runtime-jgklm02e.js +5 -0
  168. package/dist/skill-runtime-w1ig_lcw.js +5 -0
  169. package/dist/src-Bhybpk1J.js +63 -0
  170. package/dist/src-BxPHKO5x.js +63 -0
  171. package/dist/src-DIc-L2IG.js +20 -0
  172. package/dist/src-DMJ4-uqk.js +458 -0
  173. package/dist/src-g_rNx5rh.js +458 -0
  174. package/dist/sub-agent-tools-CHQoHz9c.js +39 -0
  175. package/dist/sub-agent-tools-DHY-4WWM.js +39 -0
  176. package/dist/theme-DcxwcUgZ.js +180 -0
  177. package/dist/theme-cx0fkgWC.js +8 -0
  178. package/dist/tool-policy-CNT-mF2Z.js +189 -0
  179. package/dist/tool-policy-DZvF8xlQ.js +189 -0
  180. package/dist/tts-elevenlabs-BRosZv-f.js +61 -0
  181. package/dist/tts-elevenlabs-C06nUxMK.js +61 -0
  182. package/dist/update-check-C2Dz85wJ.js +81 -0
  183. package/dist/update-check-w4XuxVl7.js +81 -0
  184. package/dist/vision-BMmiIKy7.js +121 -0
  185. package/dist/vision-JOtOS1Br.js +121 -0
  186. package/dist/vision-tools-CB28ZCO_.js +5 -0
  187. package/dist/vision-tools-DVuYc17I.js +51 -0
  188. package/dist/vision-tools-U3YC4L-g.js +5 -0
  189. package/dist/vision-tools-vPPwQ-0N.js +51 -0
  190. package/dist/voice-transcription-B555DbWR.js +138 -0
  191. package/dist/voice-transcription-DBo5hXmu.js +138 -0
  192. package/dist/website-watch-tools-DFMrJU-R.js +139 -0
  193. package/dist/website-watch-tools-Du3W5sN7.js +5 -0
  194. package/package.json +1 -1
package/README.md CHANGED
@@ -1,40 +1,55 @@
1
- <p align="center">
2
- <img src="assets/icon.png" width="120" alt="HyperClaw">
3
- <br>
4
- <h1 align="center">🦅 HyperClawPersonal AI Assistant</h1>
5
- </p>
1
+ <div align="center">
2
+ <img src="assets/icon.png" width="140" alt="HyperClaw">
3
+ <h1>🦅 HyperClaw</h1>
4
+ <p><strong>Your personal AI assistant running on your hardware, talking on your channels.</strong></p>
5
+ <p><em>One command to install. Works on Telegram, Discord, WhatsApp, Signal, iMessage and 25+ more.</em></p>
6
+ </div>
6
7
 
7
8
  <p align="center">
8
- <img src="https://img.shields.io/badge/build-passing-brightgreen?style=flat-square" alt="build">
9
- <img src="https://img.shields.io/badge/release-v4.0.2-blue?style=flat-square" alt="release">
10
- <img src="https://img.shields.io/badge/node-%E2%89%A522-green?style=flat-square" alt="node">
11
- <img src="https://img.shields.io/badge/license-MIT-gray?style=flat-square" alt="license">
9
+ <a href="https://github.com/mylo-2001/hyperclaw/stargazers"><img src="https://img.shields.io/github/stars/mylo-2001/hyperclaw?style=flat-square&logo=github&color=yellow" alt="GitHub Stars"></a>
10
+ <a href="https://github.com/mylo-2001/hyperclaw/network/members"><img src="https://img.shields.io/github/forks/mylo-2001/hyperclaw?style=flat-square&logo=github" alt="GitHub Forks"></a>
11
+ <a href="https://www.npmjs.com/package/hyperclaw"><img src="https://img.shields.io/npm/dw/hyperclaw?style=flat-square&logo=npm&color=red" alt="npm downloads"></a>
12
+ <a href="https://www.npmjs.com/package/hyperclaw"><img src="https://img.shields.io/npm/v/hyperclaw?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
13
+ <a href="https://github.com/mylo-2001/hyperclaw/actions"><img src="https://img.shields.io/github/actions/workflow/status/mylo-2001/hyperclaw/secrets-scan.yml?branch=main&style=flat-square&label=CI" alt="CI"></a>
14
+ <img src="https://img.shields.io/badge/node-%E2%89%A522-green?style=flat-square&logo=node.js" alt="node">
12
15
  <img src="https://img.shields.io/badge/typescript-5.4-3178c6?style=flat-square&logo=typescript&logoColor=white" alt="typescript">
13
- <img src="https://img.shields.io/badge/security-ethical%20hacking-red?style=flat-square&logo=hackthebox&logoColor=white" alt="security">
16
+ <img src="https://img.shields.io/badge/license-MIT-gray?style=flat-square" alt="license">
17
+ <img src="https://img.shields.io/badge/platforms-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=flat-square" alt="platforms">
14
18
  </p>
15
19
 
16
20
  <p align="center">
17
- <strong>HyperClaw</strong> is a personal AI assistant you run on your own devices.<br>
18
- It answers you on the channels you already use — Telegram, Discord, WhatsApp, Slack, Signal, iMessage,<br>
19
- Matrix, IRC, Mattermost, Google Chat, Microsoft Teams, Nostr, and more.<br>
20
- It can speak and listen on macOS/iOS/Android, and render a live Canvas you control.<br>
21
- The Gateway is just the control plane — the product is the assistant.
21
+ <a href="docs/README.md">📚 Docs</a> ·
22
+ <a href="docs/architecture.md">🏗 Architecture</a> ·
23
+ <a href="docs/configuration.md">⚙️ Config</a> ·
24
+ <a href="docs/security.md">🔒 Security</a> ·
25
+ <a href="docs/sandboxing.md">🐳 Sandboxing</a> ·
26
+ <a href="docs/tlon.md">🌊 Tlon</a> ·
27
+ <a href="docs/google-chat.md">💬 Google Chat</a> ·
28
+ <a href="CONTRIBUTING.md">🤝 Contributing</a>
22
29
  </p>
23
30
 
24
- <p align="center">
25
- <em>If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.</em><br>
26
- <em>Built for developers, security researchers, and power users who want full control.</em>
27
- </p>
31
+ ---
28
32
 
29
- <p align="center">
30
- <a href="docs/README.md">Docs</a> ·
31
- <a href="docs/architecture.md">Architecture</a> ·
32
- <a href="docs/configuration.md">Configuration</a> ·
33
- <a href="docs/security.md">Security</a> ·
34
- <a href="docs/deployment.md">Docker</a> ·
35
- <a href="docs/tailscale.md">Tailscale</a> ·
36
- <a href="CONTRIBUTING.md">Contributing</a>
37
- </p>
33
+ > **"One `npm install -g hyperclaw` and your AI is live on Telegram."**
34
+
35
+ ---
36
+
37
+ ## Why HyperClaw?
38
+
39
+ | Feature | HyperClaw | Cloud assistants | Self-hosted alternatives |
40
+ |---------|:---------:|:----------------:|:------------------------:|
41
+ | Runs on your own hardware | ✅ | ❌ | ✅ |
42
+ | No subscription / pay-per-token only | ✅ | ❌ | ✅ |
43
+ | 28+ messaging channels built-in | ✅ | ❌ | ⚠️ few |
44
+ | Windows native (no WSL) | ✅ | — | ❌ |
45
+ | Config hot-reload (no restart) | ✅ | — | ❌ |
46
+ | Built-in security audit (`--fix`) | ✅ | — | ❌ |
47
+ | DM pairing / allowlist by default | ✅ | — | ⚠️ manual |
48
+ | Voice (TTS + STT) | ✅ | ✅ | ⚠️ |
49
+ | Docker sandbox for agent tools | ✅ | — | ⚠️ |
50
+ | MCP (Model Context Protocol) | ✅ | ⚠️ | ⚠️ |
51
+ | One-command wizard (`hyperclaw onboard`) | ✅ | — | ❌ |
52
+ | OSINT / Ethical hacking mode (`hyperclaw osint`) | ✅ | ❌ | ❌ |
38
53
 
39
54
  ---
40
55
 
@@ -53,58 +68,58 @@
53
68
 
54
69
  ---
55
70
 
56
- ## Install
71
+ ## 🚀 Get started in 60 seconds
57
72
 
58
- Runtime: Node ≥ 22. Runs **natively on Windows, macOS, and Linux** — no WSL2 required.
73
+ **Requires Node ≥ 22.** Runs natively on Windows, macOS, and Linux — no WSL2 required.
59
74
 
60
75
  ```bash
76
+ # Install
61
77
  npm install -g hyperclaw@latest
62
- # or: pnpm add -g hyperclaw@latest
63
78
 
64
- # First-time setup wizard
79
+ # Run the interactive setup wizard
65
80
  hyperclaw onboard
66
-
67
- # Or install with daemon (auto-start on boot, full PC access)
81
+ # Run the interactive setup wizard with deamon
68
82
  hyperclaw onboard --install-daemon
69
83
  ```
70
84
 
71
- > **Windows users**: HyperClaw runs natively via Node.js. No WSL2, no admin rights needed.
72
- > The daemon uses **Task Scheduler** and runs as your user account with full desktop access.
73
-
74
- The wizard guides you step by step — provider, model, gateway, channels, and skills.
75
- Works on **macOS, Linux, and Windows** (native — no WSL2 required). Compatible with npm, pnpm, and bun.
85
+ The wizard walks you through: AI provider model channels skills. Done.
76
86
 
77
- ---
87
+ ```bash
88
+ # After setup, start your assistant
89
+ hyperclaw daemon start
78
90
 
79
- ## Quick start
91
+ # Send a test message
92
+ hyperclaw agent --message "What can you do?"
80
93
 
81
- ```bash
82
- # 1. Run the onboarding wizard (first time)
83
- hyperclaw onboard
94
+ # Health check
95
+ hyperclaw doctor
96
+ ```
84
97
 
85
- # 2a. Start the gateway in foreground
86
- hyperclaw gateway --port 18789 --verbose
98
+ > **Windows**: No WSL2, no admin rights needed. The daemon uses Task Scheduler and runs as your account.
87
99
 
88
- # 2b. Or run as a background daemon (auto-start on boot)
89
- hyperclaw daemon start
100
+ <details>
101
+ <summary>More install options</summary>
90
102
 
91
- # 3. Talk to your assistant
92
- hyperclaw agent --message "What can you do?"
103
+ ```bash
104
+ # pnpm
105
+ pnpm add -g hyperclaw@latest
93
106
 
94
- # 4. Security / bug bounty run recon from your phone
95
- # Just message your Telegram bot: "search HackerOne for targets on acme.com"
107
+ # Install with daemon (auto-start on boot + full PC access)
108
+ hyperclaw onboard --install-daemon
96
109
 
97
- # 5. Check status
98
- hyperclaw doctor
110
+ # Uninstall
111
+ hyperclaw daemon uninstall
112
+ npm uninstall -g hyperclaw
113
+ rm -rf ~/.hyperclaw # optional — removes config and data
99
114
  ```
100
115
 
101
- Upgrading? Run `hyperclaw doctor` to check and migrate.
116
+ </details>
102
117
 
103
118
  ---
104
119
 
105
120
  ## Channels
106
121
 
107
- HyperClaw connects to the channels you already use (27 channels):
122
+ HyperClaw connects to the channels you already use (28+ channels):
108
123
 
109
124
  | Channel | Status | Notes |
110
125
  |---------|--------|-------|
@@ -135,6 +150,9 @@ HyperClaw connects to the channels you already use (27 channels):
135
150
  | 📧 Email | ✅ Available | SMTP + IMAP |
136
151
  | 🎙️ Voice Call | ✅ Available | Terminal voice session |
137
152
  | 🌐 Chrome Extension | ✅ Available | Browser sidebar |
153
+ | 🌊 Tlon (Urbit Groups) | ✅ Available | Decentralized — see [docs/tlon.md](docs/tlon.md) |
154
+
155
+ Twitch is also available via IRC over WebSocket.
138
156
 
139
157
  Add a channel:
140
158
 
@@ -214,6 +232,47 @@ Or use OpenRouter (access to all models with one key):
214
232
 
215
233
  Full reference: [docs/configuration.md](docs/configuration.md)
216
234
 
235
+ ### Config hot reload
236
+
237
+ The gateway watches `~/.hyperclaw/hyperclaw.json` and applies changes automatically — no restart needed for most settings:
238
+
239
+ ```json
240
+ {
241
+ "gateway": {
242
+ "reload": { "mode": "hybrid", "debounceMs": 300 }
243
+ }
244
+ }
245
+ ```
246
+
247
+ | Mode | Behavior |
248
+ |------|----------|
249
+ | `hybrid` _(default)_ | Hot-applies safe changes, auto-restarts for critical ones |
250
+ | `hot` | Hot-applies only — warns when a restart is needed |
251
+ | `restart` | Restarts on any change |
252
+ | `off` | Disables file watching |
253
+
254
+ ### Reverse proxy / trustedProxies
255
+
256
+ If you run behind Nginx, Caddy, or Cloudflare Tunnel, set `trustedProxies` so the gateway resolves the real client IP from `X-Forwarded-For`:
257
+
258
+ ```json
259
+ {
260
+ "gateway": {
261
+ "trustedProxies": ["127.0.0.1", "10.0.0.0/8"]
262
+ }
263
+ }
264
+ ```
265
+
266
+ ### DM scope isolation
267
+
268
+ Isolate DM sessions per channel/peer (useful when multiple people share one gateway):
269
+
270
+ ```json
271
+ {
272
+ "session": { "dmScope": "per-channel-peer" }
273
+ }
274
+ ```
275
+
217
276
  ---
218
277
 
219
278
  ## Security defaults
@@ -227,7 +286,14 @@ HyperClaw connects to real messaging surfaces. Inbound DMs are treated as untrus
227
286
  - Set `dmPolicy: "open"` only if you want anyone to reach your assistant.
228
287
  - Non-main sessions (groups/channels) can run in Docker sandboxes: `agents.defaults.sandbox.mode: "non-main"`
229
288
 
230
- Run `hyperclaw doctor` to surface risky/misconfigured policies.
289
+ Run the security audit regularly:
290
+
291
+ ```bash
292
+ hyperclaw security audit # standard scan
293
+ hyperclaw security audit --deep # live gateway probe
294
+ hyperclaw security audit --fix # auto-fix safe issues
295
+ hyperclaw security audit --json # machine-readable output
296
+ ```
231
297
 
232
298
  Full guide: [docs/security.md](docs/security.md)
233
299
 
@@ -236,7 +302,8 @@ Full guide: [docs/security.md](docs/security.md)
236
302
  ## Features
237
303
 
238
304
  - **Local-first Gateway** — single control plane for sessions, channels, tools, and events
239
- - **Multi-channel inbox** — 27+ channels, unified session model
305
+ - **Config hot reload** — gateway watches `~/.hyperclaw/hyperclaw.json`, hot-applies changes (hybrid/hot/restart/off)
306
+ - **Multi-channel inbox** — 28+ channels, unified session model
240
307
  - **Multi-agent routing** — route channels/accounts to isolated agent workspaces
241
308
  - **Extended thinking** — Claude extended thinking with `/think high` in chat
242
309
  - **Voice** — Talk Mode with ElevenLabs TTS + system TTS fallback
@@ -290,6 +357,42 @@ Send these in any connected channel (Telegram, Discord, Slack, etc.):
290
357
  | `/verbose on\|off` | Verbose mode |
291
358
  | `/usage off\|tokens\|full` | Per-response usage footer |
292
359
 
360
+ ## HyperClaw Bot commands
361
+
362
+ Control the gateway remotely via your Telegram or Discord bot (`hyperclaw bot start`):
363
+
364
+ | Command | Description |
365
+ |---------|-------------|
366
+ | `/status` | Gateway + daemon status |
367
+ | `/restart` | Restart the gateway |
368
+ | `/logs [n]` | Last N log lines (default 20) |
369
+ | `/channels` | List configured channels |
370
+ | `/approve <ch> <code>` | Approve a DM pairing code |
371
+ | `/hook list` | List all hooks |
372
+ | `/hook on <id>` | Enable a hook |
373
+ | `/hook off <id>` | Disable a hook |
374
+ | `/agent <msg>` | Send a message to the AI agent |
375
+ | `/activation` | Show current group activation mode |
376
+ | `/activation mention` | Bot responds only to @mentions and replies _(default)_ |
377
+ | `/activation always` | Bot responds to all messages in a group |
378
+ | `/security` | Security audit summary |
379
+ | `/help` | List all commands |
380
+
381
+ ## Agent-to-Agent (session tools)
382
+
383
+ When the gateway is running, the agent has access to session tools for agent-to-agent communication:
384
+
385
+ | Tool | Description |
386
+ |------|-------------|
387
+ | `sessions_list` | List all active WebSocket sessions connected to the gateway |
388
+ | `sessions_send` | Send a message to another session (by session ID) |
389
+ | `sessions_history` | Get the chat transcript of a session (`"self"` for current) |
390
+
391
+ Example — ask the agent to ping another session:
392
+ ```
393
+ "List all connected sessions and send a hello to the first one"
394
+ ```
395
+
293
396
  ---
294
397
 
295
398
  ## From source
@@ -328,6 +431,18 @@ Sandbox image (no PC access, restricted tools):
328
431
  docker build -f Dockerfile.sandbox -t hyperclaw:sandbox .
329
432
  ```
330
433
 
434
+ Or use **Docker Compose** for the full stack (gateway + browser sandbox):
435
+
436
+ ```bash
437
+ # Copy and fill in your API keys
438
+ cp env.example .env
439
+
440
+ # Start gateway + sandbox
441
+ docker compose --profile full up -d
442
+ ```
443
+
444
+ See [`docker-compose.yml`](docker-compose.yml) and [`env.example`](env.example) for all options.
445
+
331
446
  ---
332
447
 
333
448
  ## Monorepo structure
@@ -347,7 +462,7 @@ hyperclaw/
347
462
  │ ├── media/ # Voice, TTS, STT, audio
348
463
  │ ├── routing/ # Session routing + multi-agent dispatch
349
464
  │ ├── security/ # Auth, sandboxing, DM policy
350
- │ └── … # (sdk, types, webhooks, logging, plugins…)
465
+ │ └── … # (sdk, types, webhooks, logging, plugins…)
351
466
  ├── packages/
352
467
  │ ├── core/ # Inference engine, agent loop
353
468
  │ ├── gateway/ # Gateway package (standalone)
@@ -368,9 +483,80 @@ hyperclaw/
368
483
 
369
484
  ---
370
485
 
486
+ ## Documentation
487
+
488
+ | Topic | File |
489
+ |-------|------|
490
+ | **Getting started** | [docs/README.md](docs/README.md) |
491
+ | Architecture overview | [docs/architecture.md](docs/architecture.md) |
492
+ | Configuration reference | [docs/configuration.md](docs/configuration.md) |
493
+ | Environment variables | [docs/environment.md](docs/environment.md) |
494
+ | API keys guide | [docs/API-KEYS-README.md](docs/API-KEYS-README.md) |
495
+ | OAuth providers | [docs/oauth-providers.md](docs/oauth-providers.md) |
496
+ | **Security** | [docs/security.md](docs/security.md) · [SECURITY.md](SECURITY.md) |
497
+ | Deployment / Docker | [docs/deployment.md](docs/deployment.md) |
498
+ | Tailscale remote access | [docs/tailscale.md](docs/tailscale.md) |
499
+ | Remote gateway setup | [docs/remote-gateway-setup.md](docs/remote-gateway-setup.md) |
500
+ | Multi-agent routing | [docs/multi-agent.md](docs/multi-agent.md) |
501
+ | Session management | [docs/session-management.md](docs/session-management.md) |
502
+ | Sandboxing (Docker isolation) | [docs/sandboxing.md](docs/sandboxing.md) |
503
+ | MCP (Model Context Protocol) | [docs/mcp.md](docs/mcp.md) |
504
+ | OSINT / Ethical Hacking mode | [docs/osint.md](docs/osint.md) |
505
+ | Voice / Talk Mode | [docs/voice.md](docs/voice.md) |
506
+ | Canvas (A2UI) | [docs/canvas-a2ui.md](docs/canvas-a2ui.md) |
507
+ | Browser control | [docs/browser.md](docs/browser.md) |
508
+ | **Channel guides** | |
509
+ | Telegram | [docs/telegram.md](docs/telegram.md) |
510
+ | Discord | [docs/discord-setup.md](docs/discord-setup.md) |
511
+ | WhatsApp | [docs/whatsapp.md](docs/whatsapp.md) |
512
+ | Slack | [docs/slack.md](docs/slack.md) |
513
+ | Google Chat | [docs/google-chat.md](docs/google-chat.md) |
514
+ | Tlon (Urbit Groups) | [docs/tlon.md](docs/tlon.md) |
515
+ | Matrix | [docs/matrix.md](docs/matrix.md) |
516
+ | Zalo / Zalo Personal | [docs/zalo.md](docs/zalo.md) · [docs/zalo-personal.md](docs/zalo-personal.md) |
517
+ | LINE | [docs/line.md](docs/line.md) |
518
+ | Nostr | [docs/nostr.md](docs/nostr.md) |
519
+ | Nextcloud Talk | [docs/nextcloud-talk.md](docs/nextcloud-talk.md) |
520
+ | Microsoft Teams | [docs/msteams.md](docs/msteams.md) |
521
+ | Twitch | [docs/twitch.md](docs/twitch.md) |
522
+ | iMessage (BlueBubbles) | [docs/imessage-native.md](docs/imessage-native.md) |
523
+ | **Apps** | |
524
+ | Mobile & Desktop apps | [docs/mobile-desktop-apps.md](docs/mobile-desktop-apps.md) |
525
+ | Mobile nodes (iOS/Android) | [docs/mobile-nodes.md](docs/mobile-nodes.md) |
526
+ | macOS remote control | [docs/macos-remote-control.md](docs/macos-remote-control.md) |
527
+ | **Help** | |
528
+ | FAQ | [docs/faq.md](docs/faq.md) |
529
+ | Troubleshooting | [docs/troubleshooting.md](docs/troubleshooting.md) |
530
+ | Contributing | [docs/contributing.md](docs/contributing.md) |
531
+
532
+ ---
533
+
371
534
  ## Contributing
372
535
 
373
- See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. AI/vibe-coded PRs welcome! 🤖
536
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. AI/vibe-coded PRs welcome!
537
+
538
+ Found a bug? [Open an issue](https://github.com/mylo-2001/hyperclaw/issues/new/choose).
539
+ Found a vulnerability? Email [securityhyperclaw.ai@gmail.com](mailto:securityhyperclaw.ai@gmail.com) — we respond within 48 h.
540
+
541
+ ---
542
+
543
+ ## Community
544
+
545
+ | | |
546
+ |--|--|
547
+ | 💬 **Discussions** | [GitHub Discussions](https://github.com/mylo-2001/hyperclaw/discussions) — questions, ideas, show & tell |
548
+ | 🐛 **Bug reports** | [GitHub Issues](https://github.com/mylo-2001/hyperclaw/issues) — templates for bugs & features |
549
+ | 🔒 **Security** | [SECURITY.md](SECURITY.md) — responsible disclosure |
550
+
551
+ ---
552
+
553
+ <div align="center">
554
+
555
+ **If HyperClaw is useful to you, a ⭐ helps others find it.**
556
+
557
+ [![Star on GitHub](https://img.shields.io/github/stars/mylo-2001/hyperclaw?style=social)](https://github.com/mylo-2001/hyperclaw)
558
+
559
+ </div>
374
560
 
375
561
  ---
376
562
 
@@ -0,0 +1,75 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+
3
+ //#region src/canvas/a2ui-protocol.ts
4
+ /** Map HyperClaw component type to A2UI-compatible type. */
5
+ function toA2UIType(t) {
6
+ const map = {
7
+ chart: "chart",
8
+ table: "table",
9
+ form: "form",
10
+ markdown: "markdown",
11
+ image: "image",
12
+ custom: "custom",
13
+ script: "script"
14
+ };
15
+ return map[t] || "custom";
16
+ }
17
+ /** Convert a CanvasComponent to A2UI surface. */
18
+ function componentToSurface(c) {
19
+ return {
20
+ id: c.id,
21
+ type: toA2UIType(c.type),
22
+ props: {
23
+ title: c.title,
24
+ width: c.width || "half"
25
+ },
26
+ data: c.data
27
+ };
28
+ }
29
+ /** Generate beginRendering from canvas state (full sync). */
30
+ function toBeginRendering(canvas) {
31
+ const surfaces = canvas.components.map(componentToSurface);
32
+ const dataModel = {};
33
+ for (const c of canvas.components) if (c.data != null) dataModel[c.id] = c.data;
34
+ return {
35
+ type: "beginRendering",
36
+ surfaceId: canvas.id,
37
+ surfaces,
38
+ dataModel: Object.keys(dataModel).length ? dataModel : void 0
39
+ };
40
+ }
41
+ /** Generate surfaceUpdate for newly added component. */
42
+ function toSurfaceUpdate(canvasId, component) {
43
+ return {
44
+ type: "surfaceUpdate",
45
+ surfaceId: canvasId,
46
+ surfaces: [componentToSurface(component)]
47
+ };
48
+ }
49
+ /** Generate dataModelUpdate when component data changes. */
50
+ function toDataModelUpdate(canvasId, componentId, data) {
51
+ return {
52
+ type: "dataModelUpdate",
53
+ surfaceId: canvasId,
54
+ updates: { [componentId]: data }
55
+ };
56
+ }
57
+ /** Generate deleteSurface for removed components. */
58
+ function toDeleteSurface(canvasId, componentIds) {
59
+ return {
60
+ type: "deleteSurface",
61
+ surfaceId: canvasId,
62
+ surfaceIds: componentIds
63
+ };
64
+ }
65
+ /** Serialize A2UI messages to JSONL (one message per line). */
66
+ function toJSONL(messages) {
67
+ return messages.map((m) => JSON.stringify(m)).join("\n");
68
+ }
69
+
70
+ //#endregion
71
+ exports.toBeginRendering = toBeginRendering;
72
+ exports.toDataModelUpdate = toDataModelUpdate;
73
+ exports.toDeleteSurface = toDeleteSurface;
74
+ exports.toJSONL = toJSONL;
75
+ exports.toSurfaceUpdate = toSurfaceUpdate;