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.
- package/LICENSE +2 -1
- package/README.md +373 -32
- package/bin/hyperclaw.js +3 -0
- package/dist/a2ui-protocol-Gzm29Gaw.js +75 -0
- package/dist/agents-routing-Biy5ew4a.js +4 -0
- package/dist/agents-routing-CL3HQNoM.js +327 -0
- package/dist/api-keys-guide-ChbThbPj.js +149 -0
- package/dist/audit-NPIMmOSq.js +441 -0
- package/dist/bounty-tools-BUqUKjt0.js +211 -0
- package/dist/browser-tools-CxJY6pAn.js +5 -0
- package/dist/browser-tools-JZ9ji6AW.js +179 -0
- package/dist/chat-GGvIJUVJ.js +258 -0
- package/dist/chat-qVuqhlPu.js +258 -0
- package/dist/claw-tasks-B-8RRMdq.js +80 -0
- package/dist/connector-1x1rCBHz.js +162 -0
- package/dist/connector-B4jeCULG.js +305 -0
- package/dist/connector-B7qngfkT.js +286 -0
- package/dist/connector-B8BK0GBo.js +531 -0
- package/dist/connector-BE9eJs8-.js +182 -0
- package/dist/connector-BEe-DTGQ.js +189 -0
- package/dist/connector-BU7p5ZgB.js +167 -0
- package/dist/connector-BUzzq7Ij.js +568 -0
- package/dist/connector-BpDqLgnW.js +419 -0
- package/dist/connector-BpW88ut2.js +189 -0
- package/dist/connector-Bxv-gy8U.js +167 -0
- package/dist/connector-Bz14zcJv.js +213 -0
- package/dist/connector-C1zP5-5q.js +85 -0
- package/dist/connector-CAcpcovF.js +498 -0
- package/dist/connector-CJgVjS58.js +181 -0
- package/dist/connector-Cf53D6qV.js +425 -0
- package/dist/connector-CyHmlbNz.js +508 -0
- package/dist/connector-D22mJGVu.js +340 -0
- package/dist/connector-D6RtMmlL.js +225 -0
- package/dist/connector-D9EnT8A4.js +280 -0
- package/dist/connector-DNDwIh37.js +239 -0
- package/dist/connector-Di27MeO4.js +350 -0
- package/dist/connector-Do0BPiHt.js +194 -0
- package/dist/connector-DvLwOfJy.js +192 -0
- package/dist/connector-DvU83NSq.js +181 -0
- package/dist/connector-DxskpDc_.js +173 -0
- package/dist/connector-byy3eISx.js +552 -0
- package/dist/connector-vV89hsyd.js +218 -0
- package/dist/cost-tracker-fnaj_6M9.js +103 -0
- package/dist/credentials-store-BxijEirw.js +77 -0
- package/dist/credentials-store-CPkVO6-z.js +4 -0
- package/dist/cron-tasks-L0mz1yyU.js +82 -0
- package/dist/daemon-BpKOVkT1.js +5 -0
- package/dist/daemon-CNyunwkR.js +5 -0
- package/dist/daemon-CindY8OK.js +318 -0
- package/dist/daemon-MtT2Tqkp.js +318 -0
- package/dist/delivery-DgiZcJBp.js +4 -0
- package/dist/delivery-otAU4alM.js +95 -0
- package/dist/destructive-gate-CA0DtA5K.js +101 -0
- package/dist/developer-keys-Cnd1kswV.js +127 -0
- package/dist/developer-keys-DENo3ZA6.js +8 -0
- package/dist/doctor-Dgjoc3DG.js +230 -0
- package/dist/doctor-RwsOhtAl.js +6 -0
- package/dist/engine-DAS8lres.js +305 -0
- package/dist/engine-D_VeoZHw.js +305 -0
- package/dist/engine-JjRnhlsE.js +7 -0
- package/dist/engine-R0howgUa.js +7 -0
- package/dist/env-resolve-BFJXWl94.js +115 -0
- package/dist/env-resolve-bDYssfih.js +10 -0
- package/dist/extraction-tools-DbxnxIco.js +5 -0
- package/dist/extraction-tools-Dg7AHS35.js +91 -0
- package/dist/form_data-CGAy4HE0.js +8657 -0
- package/dist/gmail-watch-setup-C3uSWznp.js +40 -0
- package/dist/health-DUjluWHQ.js +6 -0
- package/dist/health-DVfkpUQW.js +152 -0
- package/dist/heartbeat-engine-CrgL4mrP.js +83 -0
- package/dist/hub-BO6bj8Yj.js +515 -0
- package/dist/hub-Bu52YZqW.js +6 -0
- package/dist/hyperclawbot-BrcoYLOp.js +505 -0
- package/dist/hyperclawbot-CnNeGJ-M.js +505 -0
- package/dist/inference-DHR82Gh7.js +6 -0
- package/dist/inference-DhA8jpfH.js +2692 -0
- package/dist/knowledge-graph-BrYpSgxW.js +131 -0
- package/dist/loader-9JqY6Nlq.js +4 -0
- package/dist/loader-Cjdd1kw4.js +400 -0
- package/dist/logger-DCT2l9GV.js +83 -0
- package/dist/manager-3cq3DydI.js +4 -0
- package/dist/manager-BUrFrPuq.js +117 -0
- package/dist/manager-Bi9UYyVR.js +105 -0
- package/dist/manager-Biz9ixWJ.js +40 -0
- package/dist/manager-CBUHJiY7.js +6 -0
- package/dist/manager-CVLLaKmq.js +218 -0
- package/dist/mcp-CUoTCMw-.js +139 -0
- package/dist/mcp-loader-BIz-450x.js +94 -0
- package/dist/mcp-loader-nkCSFwxV.js +94 -0
- package/dist/memory-OL77OMOr.js +270 -0
- package/dist/memory-auto-D-L2q21G.js +306 -0
- package/dist/memory-auto-DTcy5VBy.js +5 -0
- package/dist/memory-gUi4VaIf.js +4 -0
- package/dist/memory-integration-B8RSN4pr.js +91 -0
- package/dist/moltbook-B-40gQOL.js +81 -0
- package/dist/node-TWxRm84k.js +222 -0
- package/dist/nodes-registry-DKRtsbNg.js +52 -0
- package/dist/oauth-flow-JCfporKq.js +150 -0
- package/dist/oauth-provider-4R0EJlsT.js +110 -0
- package/dist/observability-CDZmeHfa.js +89 -0
- package/dist/onboard-B2V24zkc.js +11 -0
- package/dist/onboard-BVOtKQdh.js +3641 -0
- package/dist/onboard-CGNIw27w.js +11 -0
- package/dist/onboard-CdJCHc1l.js +3959 -0
- package/dist/orchestrator-CcKx1Ovk.js +189 -0
- package/dist/orchestrator-DZKfDwbu.js +189 -0
- package/dist/orchestrator-DcFfDLTX.js +6 -0
- package/dist/orchestrator-JMJXUA6c.js +6 -0
- package/dist/osint-B6BZKQAD.js +277 -0
- package/dist/pairing-B6RArWhD.js +196 -0
- package/dist/pairing-BsQ08DLq.js +4 -0
- package/dist/pc-access-B0KocJNe.js +819 -0
- package/dist/pc-access-DkzmugZ7.js +8 -0
- package/dist/pending-approval-C_HkX1QL.js +22 -0
- package/dist/providers-DxiamZSL.js +5 -0
- package/dist/providers-Dy15rDb7.js +657 -0
- package/dist/reminders-store-CzUY0zYx.js +58 -0
- package/dist/renderer-ANNfXsHn.js +225 -0
- package/dist/rules-BSQwwAYC.js +103 -0
- package/dist/run-main.js +112 -117
- package/dist/runner-BHRSOPEU.js +1271 -0
- package/dist/security--oQObeJO.js +4 -0
- package/dist/security-wBOg0TA8.js +73 -0
- package/dist/server-B31aM6eh.js +1255 -0
- package/dist/server-CbTTpB5m.js +1255 -0
- package/dist/server-D2KyJXOC.js +4 -0
- package/dist/server-DP_bPzvI.js +4 -0
- package/dist/session-store-B09r5HgB.js +5 -0
- package/dist/session-store-DCTQIVur.js +113 -0
- package/dist/sessions-tools-BdlN6Pb6.js +95 -0
- package/dist/sessions-tools-JVLDKSJ_.js +5 -0
- package/dist/skill-loader-B5oeliGu.js +7 -0
- package/dist/skill-loader-Wf3brNOj.js +160 -0
- package/dist/skill-runtime-BGlvly2s.js +102 -0
- package/dist/skill-runtime-C-TGLn1X.js +102 -0
- package/dist/skill-runtime-Cgo0CKKU.js +5 -0
- package/dist/skill-runtime-DhL2T76p.js +5 -0
- package/dist/src-BbPa6Q8p.js +63 -0
- package/dist/src-BeXtfkK2.js +458 -0
- package/dist/src-Bnw5V6w0.js +63 -0
- package/dist/src-C5enhnSg.js +458 -0
- package/dist/src-CGQjRI4N.js +20 -0
- package/dist/sub-agent-tools-B7Z6MP8P.js +39 -0
- package/dist/sub-agent-tools-CmE345s_.js +39 -0
- package/dist/theme-D0smfC_l.js +8 -0
- package/dist/theme-DajRRZbA.js +180 -0
- package/dist/tool-policy-DgNqFWYn.js +189 -0
- package/dist/tts-elevenlabs-JeFaGNJU.js +61 -0
- package/dist/update-check-BVEqHhFY.js +83 -0
- package/dist/vision-fky3elEo.js +121 -0
- package/dist/vision-tools-C8B3776g.js +5 -0
- package/dist/vision-tools-dwn9p4el.js +51 -0
- package/dist/voice-transcription-B6RtplmN.js +138 -0
- package/dist/website-watch-tools-B-jRAeTe.js +139 -0
- package/dist/website-watch-tools-BC9xAL67.js +5 -0
- package/package.json +4 -3
- package/scripts/postinstall.js +43 -32
package/LICENSE
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
##
|
|
190
|
-
|
|
191
|
-
HyperClaw supports
|
|
192
|
-
|
|
193
|
-
| Provider |
|
|
194
|
-
|
|
195
|
-
| **Anthropic** | `anthropic`
|
|
196
|
-
| **
|
|
197
|
-
| **
|
|
198
|
-
| **
|
|
199
|
-
| **
|
|
200
|
-
| **
|
|
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) |
|
package/bin/hyperclaw.js
ADDED
|
@@ -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;
|