hyperclaw 5.0.1 → 5.0.3

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 (157) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +373 -32
  3. package/bin/hyperclaw.js +3 -0
  4. package/dist/a2ui-protocol-Gzm29Gaw.js +75 -0
  5. package/dist/agents-routing-Biy5ew4a.js +4 -0
  6. package/dist/agents-routing-CL3HQNoM.js +327 -0
  7. package/dist/api-keys-guide-ChbThbPj.js +149 -0
  8. package/dist/audit-NPIMmOSq.js +441 -0
  9. package/dist/bounty-tools-BUqUKjt0.js +211 -0
  10. package/dist/browser-tools-CxJY6pAn.js +5 -0
  11. package/dist/browser-tools-JZ9ji6AW.js +179 -0
  12. package/dist/chat-GGvIJUVJ.js +258 -0
  13. package/dist/chat-qVuqhlPu.js +258 -0
  14. package/dist/claw-tasks-B-8RRMdq.js +80 -0
  15. package/dist/connector-1x1rCBHz.js +162 -0
  16. package/dist/connector-B4jeCULG.js +305 -0
  17. package/dist/connector-B7qngfkT.js +286 -0
  18. package/dist/connector-B8BK0GBo.js +531 -0
  19. package/dist/connector-BE9eJs8-.js +182 -0
  20. package/dist/connector-BEe-DTGQ.js +189 -0
  21. package/dist/connector-BU7p5ZgB.js +167 -0
  22. package/dist/connector-BUzzq7Ij.js +568 -0
  23. package/dist/connector-BpDqLgnW.js +419 -0
  24. package/dist/connector-BpW88ut2.js +189 -0
  25. package/dist/connector-Bxv-gy8U.js +167 -0
  26. package/dist/connector-Bz14zcJv.js +213 -0
  27. package/dist/connector-C1zP5-5q.js +85 -0
  28. package/dist/connector-CAcpcovF.js +498 -0
  29. package/dist/connector-CJgVjS58.js +181 -0
  30. package/dist/connector-Cf53D6qV.js +425 -0
  31. package/dist/connector-CyHmlbNz.js +508 -0
  32. package/dist/connector-D22mJGVu.js +340 -0
  33. package/dist/connector-D6RtMmlL.js +225 -0
  34. package/dist/connector-D9EnT8A4.js +280 -0
  35. package/dist/connector-DNDwIh37.js +239 -0
  36. package/dist/connector-Di27MeO4.js +350 -0
  37. package/dist/connector-Do0BPiHt.js +194 -0
  38. package/dist/connector-DvLwOfJy.js +192 -0
  39. package/dist/connector-DvU83NSq.js +181 -0
  40. package/dist/connector-DxskpDc_.js +173 -0
  41. package/dist/connector-byy3eISx.js +552 -0
  42. package/dist/connector-vV89hsyd.js +218 -0
  43. package/dist/cost-tracker-fnaj_6M9.js +103 -0
  44. package/dist/credentials-store-BxijEirw.js +77 -0
  45. package/dist/credentials-store-CPkVO6-z.js +4 -0
  46. package/dist/cron-tasks-L0mz1yyU.js +82 -0
  47. package/dist/daemon-BpKOVkT1.js +5 -0
  48. package/dist/daemon-CNyunwkR.js +5 -0
  49. package/dist/daemon-CindY8OK.js +318 -0
  50. package/dist/daemon-MtT2Tqkp.js +318 -0
  51. package/dist/delivery-DgiZcJBp.js +4 -0
  52. package/dist/delivery-otAU4alM.js +95 -0
  53. package/dist/destructive-gate-CA0DtA5K.js +101 -0
  54. package/dist/developer-keys-Cnd1kswV.js +127 -0
  55. package/dist/developer-keys-DENo3ZA6.js +8 -0
  56. package/dist/doctor-Dgjoc3DG.js +230 -0
  57. package/dist/doctor-RwsOhtAl.js +6 -0
  58. package/dist/engine-DAS8lres.js +305 -0
  59. package/dist/engine-D_VeoZHw.js +305 -0
  60. package/dist/engine-JjRnhlsE.js +7 -0
  61. package/dist/engine-R0howgUa.js +7 -0
  62. package/dist/env-resolve-BFJXWl94.js +115 -0
  63. package/dist/env-resolve-bDYssfih.js +10 -0
  64. package/dist/extraction-tools-DbxnxIco.js +5 -0
  65. package/dist/extraction-tools-Dg7AHS35.js +91 -0
  66. package/dist/form_data-CGAy4HE0.js +8657 -0
  67. package/dist/gmail-watch-setup-C3uSWznp.js +40 -0
  68. package/dist/health-DUjluWHQ.js +6 -0
  69. package/dist/health-DVfkpUQW.js +152 -0
  70. package/dist/heartbeat-engine-CrgL4mrP.js +83 -0
  71. package/dist/hub-BO6bj8Yj.js +515 -0
  72. package/dist/hub-Bu52YZqW.js +6 -0
  73. package/dist/hyperclawbot-BrcoYLOp.js +505 -0
  74. package/dist/hyperclawbot-CnNeGJ-M.js +505 -0
  75. package/dist/inference-DHR82Gh7.js +6 -0
  76. package/dist/inference-DhA8jpfH.js +2692 -0
  77. package/dist/knowledge-graph-BrYpSgxW.js +131 -0
  78. package/dist/loader-9JqY6Nlq.js +4 -0
  79. package/dist/loader-Cjdd1kw4.js +400 -0
  80. package/dist/logger-DCT2l9GV.js +83 -0
  81. package/dist/manager-3cq3DydI.js +4 -0
  82. package/dist/manager-BUrFrPuq.js +117 -0
  83. package/dist/manager-Bi9UYyVR.js +105 -0
  84. package/dist/manager-Biz9ixWJ.js +40 -0
  85. package/dist/manager-CBUHJiY7.js +6 -0
  86. package/dist/manager-CVLLaKmq.js +218 -0
  87. package/dist/mcp-CUoTCMw-.js +139 -0
  88. package/dist/mcp-loader-BIz-450x.js +94 -0
  89. package/dist/mcp-loader-nkCSFwxV.js +94 -0
  90. package/dist/memory-OL77OMOr.js +270 -0
  91. package/dist/memory-auto-D-L2q21G.js +306 -0
  92. package/dist/memory-auto-DTcy5VBy.js +5 -0
  93. package/dist/memory-gUi4VaIf.js +4 -0
  94. package/dist/memory-integration-B8RSN4pr.js +91 -0
  95. package/dist/moltbook-B-40gQOL.js +81 -0
  96. package/dist/node-TWxRm84k.js +222 -0
  97. package/dist/nodes-registry-DKRtsbNg.js +52 -0
  98. package/dist/oauth-flow-JCfporKq.js +150 -0
  99. package/dist/oauth-provider-4R0EJlsT.js +110 -0
  100. package/dist/observability-CDZmeHfa.js +89 -0
  101. package/dist/onboard-B2V24zkc.js +11 -0
  102. package/dist/onboard-BVOtKQdh.js +3641 -0
  103. package/dist/onboard-CGNIw27w.js +11 -0
  104. package/dist/onboard-CdJCHc1l.js +3959 -0
  105. package/dist/orchestrator-CcKx1Ovk.js +189 -0
  106. package/dist/orchestrator-DZKfDwbu.js +189 -0
  107. package/dist/orchestrator-DcFfDLTX.js +6 -0
  108. package/dist/orchestrator-JMJXUA6c.js +6 -0
  109. package/dist/osint-B6BZKQAD.js +277 -0
  110. package/dist/pairing-B6RArWhD.js +196 -0
  111. package/dist/pairing-BsQ08DLq.js +4 -0
  112. package/dist/pc-access-B0KocJNe.js +819 -0
  113. package/dist/pc-access-DkzmugZ7.js +8 -0
  114. package/dist/pending-approval-C_HkX1QL.js +22 -0
  115. package/dist/providers-DxiamZSL.js +5 -0
  116. package/dist/providers-Dy15rDb7.js +657 -0
  117. package/dist/reminders-store-CzUY0zYx.js +58 -0
  118. package/dist/renderer-ANNfXsHn.js +225 -0
  119. package/dist/rules-BSQwwAYC.js +103 -0
  120. package/dist/run-main.js +112 -117
  121. package/dist/runner-BHRSOPEU.js +1271 -0
  122. package/dist/security--oQObeJO.js +4 -0
  123. package/dist/security-wBOg0TA8.js +73 -0
  124. package/dist/server-B31aM6eh.js +1255 -0
  125. package/dist/server-CbTTpB5m.js +1255 -0
  126. package/dist/server-D2KyJXOC.js +4 -0
  127. package/dist/server-DP_bPzvI.js +4 -0
  128. package/dist/session-store-B09r5HgB.js +5 -0
  129. package/dist/session-store-DCTQIVur.js +113 -0
  130. package/dist/sessions-tools-BdlN6Pb6.js +95 -0
  131. package/dist/sessions-tools-JVLDKSJ_.js +5 -0
  132. package/dist/skill-loader-B5oeliGu.js +7 -0
  133. package/dist/skill-loader-Wf3brNOj.js +160 -0
  134. package/dist/skill-runtime-BGlvly2s.js +102 -0
  135. package/dist/skill-runtime-C-TGLn1X.js +102 -0
  136. package/dist/skill-runtime-Cgo0CKKU.js +5 -0
  137. package/dist/skill-runtime-DhL2T76p.js +5 -0
  138. package/dist/src-BbPa6Q8p.js +63 -0
  139. package/dist/src-BeXtfkK2.js +458 -0
  140. package/dist/src-Bnw5V6w0.js +63 -0
  141. package/dist/src-C5enhnSg.js +458 -0
  142. package/dist/src-CGQjRI4N.js +20 -0
  143. package/dist/sub-agent-tools-B7Z6MP8P.js +39 -0
  144. package/dist/sub-agent-tools-CmE345s_.js +39 -0
  145. package/dist/theme-D0smfC_l.js +8 -0
  146. package/dist/theme-DajRRZbA.js +180 -0
  147. package/dist/tool-policy-DgNqFWYn.js +189 -0
  148. package/dist/tts-elevenlabs-JeFaGNJU.js +61 -0
  149. package/dist/update-check-BVEqHhFY.js +83 -0
  150. package/dist/vision-fky3elEo.js +121 -0
  151. package/dist/vision-tools-C8B3776g.js +5 -0
  152. package/dist/vision-tools-dwn9p4el.js +51 -0
  153. package/dist/voice-transcription-B6RtplmN.js +138 -0
  154. package/dist/website-watch-tools-B-jRAeTe.js +139 -0
  155. package/dist/website-watch-tools-BC9xAL67.js +5 -0
  156. package/package.json +4 -3
  157. package/scripts/postinstall.js +43 -32
package/LICENSE CHANGED
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 HyperClaw Team
3
+ Copyright (c) 2025 Peter Steinberger
4
+ Copyright (c) 2026 HyperClaw Team
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <div align="center">
1
+ <div align="center">
2
2
  <img src="assets/icon.png" width="140" alt="HyperClaw">
3
3
  <h1>🦅 HyperClaw</h1>
4
4
  <p><strong>Your personal AI assistant — running on your hardware, talking on your channels.</strong></p>
@@ -88,7 +88,10 @@ The wizard walks you through: AI provider → model → channels → skills. Don
88
88
  # After setup, start your assistant
89
89
  hyperclaw daemon start
90
90
 
91
- # Send a test message
91
+ # Interactive terminal chat (multi-turn, streams responses)
92
+ hyperclaw chat
93
+
94
+ # Send a single message (non-interactive)
92
95
  hyperclaw agent --message "What can you do?"
93
96
 
94
97
  # Health check
@@ -97,6 +100,8 @@ hyperclaw doctor
97
100
 
98
101
  > **Windows**: No WSL2, no admin rights needed. The daemon uses Task Scheduler and runs as your account.
99
102
 
103
+ > **Linux**: If you get an `EACCES: permission denied` error during `npm install -g`, see the [Linux install fix](#-linux-permission-fix) below.
104
+
100
105
  <details>
101
106
  <summary>More install options</summary>
102
107
 
@@ -115,6 +120,84 @@ rm -rf ~/.hyperclaw # optional — removes config and data
115
120
 
116
121
  </details>
117
122
 
123
+ <details>
124
+ <summary id="-linux-permission-fix">🐧 Linux / macOS permission fix (EACCES error)</summary>
125
+
126
+ If `npm install -g hyperclaw@latest` fails with `EACCES: permission denied`, it means npm is trying to write to a system directory it doesn't own. This can happen on **any Linux distro or macOS** depending on how Node.js was installed.
127
+
128
+ ---
129
+
130
+ ### ✅ Universal fix — user-local npm prefix (works on ALL distros + macOS)
131
+
132
+ This is the **recommended permanent solution** — works on Ubuntu, Debian, Arch, Fedora, Kali, openSUSE, macOS, and any other Unix system:
133
+
134
+ ```bash
135
+ # 1. Create a user-owned npm directory
136
+ mkdir -p ~/.npm-global
137
+
138
+ # 2. Tell npm to use it
139
+ npm config set prefix '~/.npm-global'
140
+
141
+ # 3. Add it to your PATH
142
+ # bash users:
143
+ echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
144
+ # zsh users (macOS default, Kali zsh, etc.):
145
+ echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc && source ~/.zshrc
146
+ # fish users:
147
+ echo 'set -x PATH ~/.npm-global/bin $PATH' >> ~/.config/fish/config.fish
148
+
149
+ # 4. Install (no sudo needed)
150
+ npm install -g hyperclaw@latest
151
+ ```
152
+
153
+ ---
154
+
155
+ ### Distro-specific notes
156
+
157
+ | Distro | Node install method | Typical fix |
158
+ |--------|-------------------|-------------|
159
+ | Ubuntu / Debian | `apt install nodejs` | User-local prefix (above) |
160
+ | **Arch / Manjaro** | `pacman -S nodejs npm` | User-local prefix — **do NOT use sudo** with pacman-installed npm |
161
+ | Fedora / RHEL | `dnf install nodejs` | User-local prefix (above) |
162
+ | Kali Linux | `apt install nodejs` | User-local prefix (above) |
163
+ | openSUSE | `zypper install nodejs` | User-local prefix (above) |
164
+ | **Any distro** via `nvm` | `nvm install 22` | ✅ No fix needed — nvm installs to `~/.nvm`, no permissions issue |
165
+ | macOS via Homebrew | `brew install node` | ✅ Usually works out of the box |
166
+ | macOS via system Node | (not recommended) | User-local prefix (above) |
167
+
168
+ > **Arch Linux note**: `sudo npm install -g` can break your system's npm installation because pacman manages `/usr/lib/node_modules`. Always use the user-local prefix on Arch.
169
+
170
+ ---
171
+
172
+ ### Alternative: Use nvm (Node Version Manager)
173
+
174
+ [nvm](https://github.com/nvm-sh/nvm) manages Node per-user with no root access needed — the cleanest long-term solution:
175
+
176
+ ```bash
177
+ # Install nvm
178
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
179
+ source ~/.bashrc # or ~/.zshrc
180
+
181
+ # Install Node 22
182
+ nvm install 22
183
+ nvm use 22
184
+
185
+ # Install HyperClaw (no sudo, no prefix config needed)
186
+ npm install -g hyperclaw@latest
187
+ ```
188
+
189
+ ---
190
+
191
+ ### macOS: Quick fix with sudo (if all else fails)
192
+
193
+ ```bash
194
+ sudo npm install -g hyperclaw@latest
195
+ ```
196
+
197
+ > On macOS with **Homebrew Node**, `sudo` is usually not needed. If it is, prefer the user-local prefix or nvm approach above.
198
+
199
+ </details>
200
+
118
201
  ---
119
202
 
120
203
  ## Channels
@@ -126,7 +209,7 @@ HyperClaw connects to the channels you already use (28+ channels):
126
209
  | ✈️ Telegram | ✅ Recommended | Bot API via @BotFather |
127
210
  | 🎮 Discord | ✅ Recommended | discord.js — full bot |
128
211
  | 🌐 WebChat | ✅ Built-in | Gateway WebSocket, no setup |
129
- | 🖥️ CLI / Terminal | ✅ Built-in | `hyperclaw agent` |
212
+ | 🖥️ CLI / Terminal | ✅ Built-in | `hyperclaw chat` (interactive) · `hyperclaw agent -m "..."` (single) |
130
213
  | 📲 WhatsApp (Baileys) | ✅ Available | No Meta API — scan QR |
131
214
  | 📱 WhatsApp (Cloud API) | ✅ Available | Meta Business API |
132
215
  | 💼 Slack | ✅ Available | Bolt — Events API |
@@ -186,18 +269,30 @@ Google Chat / Matrix / IRC / Mattermost / Teams / Nostr / WebChat
186
269
 
187
270
  ---
188
271
 
189
- ## Providers
190
-
191
- HyperClaw supports any OpenAI-compatible API and Anthropic natively:
192
-
193
- | Provider | IDs |
194
- |----------|-----|
195
- | **Anthropic** | `anthropic` Claude 4 Opus/Sonnet/Haiku |
196
- | **OpenRouter** | `openrouter` 200+ models |
197
- | **OpenAI** | `openai` — GPT-4o, GPT-4.1 |
198
- | **xAI** | `xai` Grok |
199
- | **Groq** | `groq` Llama, Mixtral (fast) |
200
- | **Custom** | `custom` any OpenAI-compatible endpoint |
272
+ ## AI Models
273
+
274
+ HyperClaw supports 20+ providers. Pick one in the wizard or set `provider.providerId` in config:
275
+
276
+ | Provider | ID | Notes |
277
+ |----------|-----|-------|
278
+ | **Anthropic** | `anthropic` | Claude Opus/Sonnet/Haiku — native streaming |
279
+ | **Anthropic OAuth** | `anthropic-oauth` | Claude Code / Max subscription |
280
+ | **OpenRouter** | `openrouter` | 200+ models one key |
281
+ | **OpenAI** | `openai` | GPT-4o, o3, o4-mini |
282
+ | **Google** | `google` | Gemini 2.5 Pro, 2.0 Flash |
283
+ | **xAI** | `xai` | Grok 3, Grok 3 Mini |
284
+ | **Groq** | `groq` | Llama 3.3, Mixtral — fast inference |
285
+ | **Mistral** | `mistral` | Mistral Large, Codestral |
286
+ | **DeepSeek** | `deepseek` | DeepSeek V3, R1 reasoning |
287
+ | **Perplexity** | `perplexity` | Sonar — search-augmented AI |
288
+ | **Hugging Face** | `huggingface` | Open-source models |
289
+ | **MiniMax** | `minimax` | MiniMax Text-01 |
290
+ | **Qwen** | `qwen` | Alibaba Qwen 3, Qwen Max |
291
+ | **Z.AI** | `zai` | GLM-4 models |
292
+ | **Vercel AI Gateway** | `vercel-ai` | Multi-model proxy |
293
+ | **Ollama** | `ollama` | Local models — `ollama serve` |
294
+ | **LM Studio** | `lmstudio` | Local models — enable local server |
295
+ | **Custom** | `custom` | Any OpenAI-compatible `/chat/completions` |
201
296
 
202
297
  ---
203
298
 
@@ -313,6 +408,7 @@ Full guide: [docs/security.md](docs/security.md)
313
408
  - **Auto-memory** — extracts facts from conversations automatically
314
409
  - **Skills** — bundled and workspace skills (reminders, translator, web search, etc.)
315
410
  - **Daemon mode** — launchd/systemd user service, auto-restart, `🩸` icon
411
+ - **Update notifications** — notifies when a newer version is available on npm (non-blocking check at startup)
316
412
  - **MCP support** — Model Context Protocol server and client
317
413
  - **Docker** — sandboxed agent execution, browser tools with Puppeteer
318
414
  - **Tailscale** — Serve/Funnel for remote access without port forwarding
@@ -344,6 +440,180 @@ The Gateway alone delivers a great experience. Apps add extra features:
344
440
 
345
441
  ---
346
442
 
443
+ ## Development channels
444
+
445
+ Three release channels, switch any time:
446
+
447
+ ```bash
448
+ hyperclaw update --channel stable # tagged releases (default)
449
+ hyperclaw update --channel beta # prereleases
450
+ hyperclaw update --channel dev # moving head of main
451
+ ```
452
+
453
+ | Channel | npm dist-tag | Notes |
454
+ |---------|-------------|-------|
455
+ | `stable` | `latest` | Tagged releases — recommended |
456
+ | `beta` | `beta` | Prerelease — new features, may have rough edges |
457
+ | `dev` | `dev` | Latest main branch (when published) |
458
+
459
+ ---
460
+
461
+ ## Integrations (Skills & Tools)
462
+
463
+ The agent has built-in tools for common integrations — no extra packages needed. Full reference: [docs/integrations.md](docs/integrations.md)
464
+
465
+ ### Core Tools
466
+
467
+ | Tool | How to enable |
468
+ |------|---------------|
469
+ | **Weather** | Free — no key needed (Open-Meteo) |
470
+ | **Image generation** | Set `OPENAI_API_KEY` (DALL-E 3) or `STABILITY_API_KEY` |
471
+ | **GIF search** | Set `GIPHY_API_KEY` or `TENOR_API_KEY` |
472
+ | **Spotify** | Set `SPOTIFY_CLIENT_ID` + `SPOTIFY_CLIENT_SECRET` + `SPOTIFY_REFRESH_TOKEN` |
473
+ | **Home Assistant** | Set `HA_URL` + `HA_TOKEN` (long-lived access token) |
474
+ | **GitHub** | Set `GITHUB_TOKEN` |
475
+ | **Canvas** | Built-in — view at `http://localhost:18789/canvas` |
476
+ | **Browser** | Built-in — enable `browser.enabled: true` |
477
+ | **Gmail** | Set `GOOGLE_CREDENTIALS_PATH` + configure Pub/Sub |
478
+
479
+ ### Productivity
480
+
481
+ | Tool | How to enable |
482
+ |------|---------------|
483
+ | **Apple Notes** | macOS only — built-in (requires Accessibility permissions) |
484
+ | **Apple Reminders** | macOS only — built-in (requires Accessibility permissions) |
485
+ | **Things 3** | macOS only — install Things 3, no extra config |
486
+ | **Obsidian** | Install Local REST API plugin, set `OBSIDIAN_API_KEY` (and optionally `OBSIDIAN_PORT`, default 27123) |
487
+ | **Bear Notes** | macOS only — install Bear, no extra config |
488
+ | **Trello** | Set `TRELLO_API_KEY` + `TRELLO_TOKEN` (from trello.com/app-key) |
489
+
490
+ ### Music
491
+
492
+ | Tool | How to enable |
493
+ |------|---------------|
494
+ | **Sonos** | Set `SONOS_IP` to your speaker's local IP address |
495
+ | **Music search** | Free — no key needed (iTunes Search API) |
496
+
497
+ ### Smart Home
498
+
499
+ | Tool | How to enable |
500
+ |------|---------------|
501
+ | **Philips Hue** | Set `HUE_BRIDGE_IP` + `HUE_USERNAME` (from bridge discovery) |
502
+ | **8Sleep** | Set `EIGHTSLEEP_EMAIL` + `EIGHTSLEEP_PASSWORD` |
503
+
504
+ ### Security & Messaging
505
+
506
+ | Tool | How to enable |
507
+ |------|---------------|
508
+ | **1Password** | Install `op` CLI, set `OP_SERVICE_ACCOUNT_TOKEN` |
509
+ | **iMessage** | macOS only — built-in (requires Full Disk Access + Accessibility) |
510
+
511
+ Example — ask the agent:
512
+ ```
513
+ "What's the weather in Athens for the next 3 days?"
514
+ "Generate an image of a space lobster"
515
+ "Play some Daft Punk on Spotify"
516
+ "Turn on the living room lights" # Home Assistant or Philips Hue
517
+ "List my open GitHub issues"
518
+ "Add 'Buy milk' to my Reminders"
519
+ "Create a note in Obsidian: Meeting notes..."
520
+ "Add a card to my Trello board"
521
+ "Set my 8Sleep to temperature 20 on the left side"
522
+ "Get my GitHub password from 1Password"
523
+ "Send an iMessage to +1234567890: I'll be late"
524
+ "What's playing on my Sonos?"
525
+ ```
526
+
527
+ ### How to add integration API keys
528
+
529
+ **Option 1 — During onboarding wizard** (recommended for first setup):
530
+ ```bash
531
+ hyperclaw onboard
532
+ # At the end of the wizard, you'll be asked:
533
+ # "Configure integrations now? (Spotify, Home Assistant, GitHub, Trello, etc.)"
534
+ # Select the ones you want and enter your keys interactively.
535
+ ```
536
+
537
+ **Option 2 — Tell the agent** (easiest after setup):
538
+ ```
539
+ You › Save my Spotify keys:
540
+ CLIENT_ID: abc123
541
+ CLIENT_SECRET: xyz456
542
+ REFRESH_TOKEN: def789
543
+ ```
544
+
545
+ **Option 3 — CLI command**:
546
+ ```bash
547
+ hyperclaw config set-key SPOTIFY_CLIENT_ID abc123
548
+ hyperclaw config set-key SPOTIFY_CLIENT_SECRET xyz456
549
+ hyperclaw config set-key GITHUB_TOKEN ghp_xxxx
550
+ hyperclaw config set-key HA_URL http://homeassistant.local:8123
551
+ hyperclaw config set-key HA_TOKEN your-long-lived-token
552
+ ```
553
+
554
+ **Option 4 — Edit directly** `~/.hyperclaw/.env`:
555
+ ```bash
556
+ SPOTIFY_CLIENT_ID=abc123
557
+ SPOTIFY_CLIENT_SECRET=xyz456
558
+ GITHUB_TOKEN=ghp_xxxx
559
+ HA_URL=http://homeassistant.local:8123
560
+ HA_TOKEN=your-token
561
+ TRELLO_API_KEY=abc
562
+ TRELLO_TOKEN=xyz
563
+ OBSIDIAN_API_KEY=abc
564
+ HUE_BRIDGE_IP=192.168.1.100
565
+ HUE_USERNAME=your-username
566
+ SONOS_IP=192.168.1.50
567
+ GIPHY_API_KEY=abc
568
+ OP_SERVICE_ACCOUNT_TOKEN=ops_xxxx
569
+ ```
570
+
571
+ All keys are stored locally in `~/.hyperclaw/.env` — never sent anywhere except the respective service.
572
+
573
+ ---
574
+
575
+ ## Agent-to-Agent (sessions tools)
576
+
577
+ When the gateway is running, the agent can communicate with other connected sessions:
578
+
579
+ | Tool | Description |
580
+ |------|-------------|
581
+ | `sessions_list` | List all active sessions connected to the gateway |
582
+ | `sessions_send` | Send a message to another session by session ID |
583
+ | `sessions_history` | Get the chat transcript of a session (`"self"` for current) |
584
+
585
+ Example — ask the agent:
586
+ ```
587
+ "List all connected sessions and send a briefing to the first one"
588
+ ```
589
+
590
+ ---
591
+
592
+ ## Terminal chat (`hyperclaw chat`)
593
+
594
+ Interactive multi-turn chat with the agent directly from your terminal:
595
+
596
+ ```bash
597
+ hyperclaw chat # start a session
598
+ hyperclaw chat --thinking high # enable extended thinking
599
+ hyperclaw chat --session my-session # named session
600
+ hyperclaw chat --model claude-opus-4-6 # override model
601
+ ```
602
+
603
+ | Input | Action |
604
+ |-------|--------|
605
+ | Any text + Enter | Send message to agent |
606
+ | `exit` / `quit` / `bye` | Quit the chat |
607
+ | `/exit` / `/quit` / `/bye` | Quit the chat |
608
+ | `Ctrl+C` | Quit the chat |
609
+ | `/clear` | Clear conversation history |
610
+ | `/model` | Show current model |
611
+ | `/help` | Show available commands |
612
+
613
+ Responses stream token-by-token as they are generated. The full conversation history is kept for the entire session (true multi-turn context).
614
+
615
+ ---
616
+
347
617
  ## Chat commands
348
618
 
349
619
  Send these in any connected channel (Telegram, Discord, Slack, etc.):
@@ -356,6 +626,91 @@ Send these in any connected channel (Telegram, Discord, Slack, etc.):
356
626
  | `/think <level>` | `off` · `low` · `medium` · `high` · `xhigh` |
357
627
  | `/verbose on\|off` | Verbose mode |
358
628
  | `/usage off\|tokens\|full` | Per-response usage footer |
629
+ | `/restart` | Restart the gateway (owner-only in groups) |
630
+ | `/activation mention\|always` | Group activation toggle |
631
+
632
+ ## SkillHub
633
+
634
+ SkillHub is HyperClaw's skill registry. Full guide: [docs/skillhub.md](docs/skillhub.md)
635
+
636
+ The agent can install skills on demand or you can install them via the wizard:
637
+
638
+ ```bash
639
+ # Install a skill
640
+ hyperclaw skills install web-search
641
+
642
+ # List installed skills
643
+ hyperclaw skills list
644
+ ```
645
+
646
+ Featured skills: `web-search` · `file-manager` · `code-runner` · `github-tools` · `calendar-tools` · `summarizer`
647
+
648
+ ### Installing skills — 3 ways
649
+
650
+ **Option 1 — tell the agent (easiest):**
651
+
652
+ ```
653
+ You › Install the web-search skill
654
+ You › Install this: https://clawhub.ai/user/skill-name
655
+ ```
656
+
657
+ The agent automatically calls `install_skill_from_hub` — no commands needed.
658
+
659
+ **Option 2 — `/skills` inside `hyperclaw chat`:**
660
+
661
+ ```
662
+ You › /skills
663
+ ```
664
+
665
+ Shows installed skills and how to add more:
666
+
667
+ ```
668
+ Installed skills:
669
+ • Web Search (web-search)
670
+ • File Manager (file-manager)
671
+
672
+ How to add a skill:
673
+ 1. Tell the agent: "Install the web-search skill"
674
+ 2. Paste a link: "Install this: https://clawhub.ai/user/skill-name"
675
+ 3. CLI: hyperclaw skill install <name>
676
+ 4. Re-run wizard: hyperclaw onboard
677
+ ```
678
+
679
+ `/skills` also appears in `/help` and in the chat header when you open `hyperclaw chat`.
680
+
681
+ **Option 3 — CLI:**
682
+
683
+ ```bash
684
+ hyperclaw skill install web-search
685
+ hyperclaw skills list
686
+ ```
687
+
688
+ ### Install from URL
689
+
690
+ Give the agent a clawhub.ai link and it installs automatically:
691
+
692
+ ```
693
+ "Install this skill: https://clawhub.ai/b0tresch/stealth-browser"
694
+ ```
695
+
696
+ The agent calls `install_skill_from_hub` — fetches SKILL.md + extra files, writes them to `~/.hyperclaw/workspace/skills/`, and runs `npm install` if needed.
697
+
698
+ ### Self-writing skills
699
+
700
+ The agent can create fully custom skills on demand:
701
+
702
+ ```
703
+ "Create a skill that summarizes my daily Telegram messages"
704
+ ```
705
+
706
+ `create_skill` supports:
707
+ - **`content`** — SKILL.md instructions
708
+ - **`files`** — JSON map of extra files (e.g. `{"scripts/run.js": "..."}`)
709
+ - **`npmInstall: "true"`** — auto-runs `npm install` after writing files
710
+
711
+ Skills are saved to `~/.hyperclaw/workspace/skills/{id}/` and loaded on the next message.
712
+
713
+ ---
359
714
 
360
715
  ## HyperClaw Bot commands
361
716
 
@@ -378,23 +733,6 @@ Control the gateway remotely via your Telegram or Discord bot (`hyperclaw bot st
378
733
  | `/security` | Security audit summary |
379
734
  | `/help` | List all commands |
380
735
 
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
-
396
- ---
397
-
398
736
  ## From source
399
737
 
400
738
  ```bash
@@ -493,6 +831,9 @@ hyperclaw/
493
831
  | Environment variables | [docs/environment.md](docs/environment.md) |
494
832
  | API keys guide | [docs/API-KEYS-README.md](docs/API-KEYS-README.md) |
495
833
  | OAuth providers | [docs/oauth-providers.md](docs/oauth-providers.md) |
834
+ | **Integrations (all tools)** | [docs/integrations.md](docs/integrations.md) |
835
+ | **SkillHub & custom skills** | [docs/skillhub.md](docs/skillhub.md) |
836
+ | **Update notifications** | [docs/update-notifications.md](docs/update-notifications.md) |
496
837
  | **Security** | [docs/security.md](docs/security.md) · [SECURITY.md](SECURITY.md) |
497
838
  | Deployment / Docker | [docs/deployment.md](docs/deployment.md) |
498
839
  | Tailscale remote access | [docs/tailscale.md](docs/tailscale.md) |
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ require('../dist/run-main.js');
@@ -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;
@@ -0,0 +1,4 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_agents_routing = require('./agents-routing-CL3HQNoM.js');
3
+
4
+ exports.AgentRouter = require_agents_routing.AgentRouter;