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.
- package/README.md +246 -60
- package/dist/a2ui-protocol-CfBI44-Q.js +75 -0
- package/dist/agents-routing-ChHiZp36.js +327 -0
- package/dist/agents-routing-ChqZ6l2S.js +4 -0
- package/dist/api-keys-guide-BCcOl0Q7.js +149 -0
- package/dist/api-keys-guide-CGn5BSF7.js +149 -0
- package/dist/audit-BJohI_vC.js +441 -0
- package/dist/audit-BaIiyWFu.js +441 -0
- package/dist/bounty-tools-CY_i91DU.js +211 -0
- package/dist/bounty-tools-DWudyZie.js +211 -0
- package/dist/browser-tools-BsTeGMnX.js +5 -0
- package/dist/browser-tools-D8_rLe2p.js +179 -0
- package/dist/claw-tasks-CgTsiNE8.js +80 -0
- package/dist/claw-tasks-Cyzdbhz_.js +80 -0
- package/dist/connector-5N0-X_xs.js +194 -0
- package/dist/connector-B3v0qcXg.js +425 -0
- package/dist/connector-B8R3iBY1.js +280 -0
- package/dist/connector-BAM-08NN.js +189 -0
- package/dist/connector-BC8FIVu4.js +181 -0
- package/dist/connector-BDmwwaVc.js +213 -0
- package/dist/connector-BGjbBy69.js +225 -0
- package/dist/connector-BO2SRzfG.js +218 -0
- package/dist/connector-BfXky0L3.js +167 -0
- package/dist/connector-BiiSJpx3.js +192 -0
- package/dist/connector-BnDmIhIu.js +85 -0
- package/dist/connector-C1HSoUyk.js +189 -0
- package/dist/connector-CKQHZOXg.js +568 -0
- package/dist/connector-CRl-iidy.js +239 -0
- package/dist/connector-Ci9glMD-.js +340 -0
- package/dist/connector-CjtZIEDj.js +181 -0
- package/dist/connector-Ck6JtOsX.js +531 -0
- package/dist/connector-D8Kelee0.js +286 -0
- package/dist/connector-DAnRJ0oP.js +162 -0
- package/dist/connector-DXTp5PE8.js +508 -0
- package/dist/connector-Dih6dUPP.js +173 -0
- package/dist/connector-DqTH_tPX.js +182 -0
- package/dist/connector-DrnEiiyP.js +419 -0
- package/dist/connector-DtR5GGTX.js +167 -0
- package/dist/connector-Tky_qS_K.js +350 -0
- package/dist/connector-ZSc3oTTy.js +305 -0
- package/dist/connector-sW5yhU1m.js +498 -0
- package/dist/connector-u3ICd3Ic.js +552 -0
- package/dist/cost-tracker-Ca1UPZ33.js +103 -0
- package/dist/cost-tracker-DD9wtWsr.js +103 -0
- package/dist/credentials-store-C6ir0Dae.js +4 -0
- package/dist/credentials-store-CA8UtK0T.js +77 -0
- package/dist/credentials-store-Cm7DH-kh.js +4 -0
- package/dist/credentials-store-H13LqOwJ.js +77 -0
- package/dist/cron-tasks-Bli7Kzd2.js +82 -0
- package/dist/cron-tasks-_pqQCmxc.js +82 -0
- package/dist/daemon-7ViroziB.js +5 -0
- package/dist/daemon-BfyKmZhr.js +318 -0
- package/dist/daemon-Bg4GtCmc.js +318 -0
- package/dist/daemon-DhmwY8k4.js +5 -0
- package/dist/delivery-BmIYy9VQ.js +4 -0
- package/dist/delivery-DVHmv1IR.js +4 -0
- package/dist/delivery-DpMX0Yyc.js +95 -0
- package/dist/delivery-pWUPBp1F.js +95 -0
- package/dist/destructive-gate-D6vWOdEl.js +101 -0
- package/dist/destructive-gate-DZt71UZR.js +101 -0
- package/dist/developer-keys-CPWT7Q6S.js +8 -0
- package/dist/developer-keys-DrrcUqFa.js +127 -0
- package/dist/doctor-BvCe8BBk.js +230 -0
- package/dist/doctor-CxyPLYsJ.js +6 -0
- package/dist/engine-B0kLfRL0.js +256 -0
- package/dist/engine-BJUpRUOv.js +7 -0
- package/dist/engine-CEDSqXfw.js +256 -0
- package/dist/engine-Da4JMNpI.js +7 -0
- package/dist/env-resolve-17ekEU6p.js +10 -0
- package/dist/env-resolve-CiXbWYwe.js +10 -0
- package/dist/env-resolve-CmGWhWXJ.js +115 -0
- package/dist/env-resolve-Z2XF6leB.js +115 -0
- package/dist/extraction-tools-HOZstZ0y.js +91 -0
- package/dist/extraction-tools-m4lmAv7l.js +5 -0
- package/dist/form_data-Cz040rio.js +8657 -0
- package/dist/gmail-watch-setup-Du7DVV7S.js +40 -0
- package/dist/health-B-asI__D.js +6 -0
- package/dist/health-Ds2YlpTB.js +152 -0
- package/dist/heartbeat-engine-BYT5ayQH.js +83 -0
- package/dist/heartbeat-engine-Ut6pXBD6.js +83 -0
- package/dist/hub-9LaKnLjY.js +6 -0
- package/dist/hub-CfwUz9YW.js +515 -0
- package/dist/hub-D0XwdjM-.js +515 -0
- package/dist/hub-LiD5Iztb.js +6 -0
- package/dist/hyperclawbot-CBiDSKsa.js +505 -0
- package/dist/hyperclawbot-zvczQgKx.js +505 -0
- package/dist/inference-0mlFQqIm.js +922 -0
- package/dist/inference-BKVkBREb.js +6 -0
- package/dist/inference-DCXH4Q3x.js +922 -0
- package/dist/inference-SzqFe_nk.js +6 -0
- package/dist/knowledge-graph-DE5lSF02.js +131 -0
- package/dist/knowledge-graph-iBG76fvm.js +131 -0
- package/dist/loader-BkDi8MD9.js +400 -0
- package/dist/loader-CC45xGpC.js +4 -0
- package/dist/loader-CnEdOyjT.js +400 -0
- package/dist/loader-DI2qDRPC.js +4 -0
- package/dist/logger-Cp8wC7F8.js +83 -0
- package/dist/logger-ybOp7VOC.js +83 -0
- package/dist/manager-03ipO9R0.js +105 -0
- package/dist/manager-B2Gls5RG.js +218 -0
- package/dist/manager-BpDfbDjg.js +117 -0
- package/dist/manager-Bxl0sqlh.js +4 -0
- package/dist/manager-CWNSML5D.js +117 -0
- package/dist/manager-CrVDn6eN.js +6 -0
- package/dist/manager-FCgF1plu.js +218 -0
- package/dist/manager-SJe9gt-q.js +4 -0
- package/dist/manager-rgCsaWT1.js +40 -0
- package/dist/mcp-CfoSU4Uz.js +139 -0
- package/dist/mcp-loader-CvxRDtPC.js +94 -0
- package/dist/mcp-loader-DkRBsLpk.js +94 -0
- package/dist/memory-BlHL7JCO.js +4 -0
- package/dist/memory-DsS_eFvJ.js +270 -0
- package/dist/memory-auto-BkvtSFUw.js +5 -0
- package/dist/memory-auto-Bnz_-1wP.js +306 -0
- package/dist/memory-auto-CpQHZlEJ.js +306 -0
- package/dist/memory-auto-Z6LCf-iK.js +5 -0
- package/dist/memory-integration-cSYkZyEo.js +91 -0
- package/dist/memory-integration-g2vxwgoE.js +91 -0
- package/dist/moltbook-BtLDZTfM.js +81 -0
- package/dist/moltbook-Cl8cQfxJ.js +81 -0
- package/dist/node-Dw2Gi-cP.js +222 -0
- package/dist/nodes-registry-B8dmrlLv.js +52 -0
- package/dist/nodes-registry-C9dCFwjh.js +52 -0
- package/dist/oauth-flow-CeaaGAz0.js +150 -0
- package/dist/oauth-flow-DQPvMHRH.js +150 -0
- package/dist/oauth-provider-B4dzn56l.js +110 -0
- package/dist/oauth-provider-Uo4Nib_c.js +110 -0
- package/dist/observability-BV-Yx0V9.js +89 -0
- package/dist/observability-nZ3CBIxG.js +89 -0
- package/dist/onboard-0WoDxbv_.js +10 -0
- package/dist/onboard-BBBWcfhp.js +10 -0
- package/dist/onboard-BXNXCQp4.js +4070 -0
- package/dist/onboard-Bw28IRQ3.js +4070 -0
- package/dist/orchestrator-BovkM63z.js +6 -0
- package/dist/orchestrator-DSbpkP1X.js +189 -0
- package/dist/orchestrator-DmnEvMaL.js +189 -0
- package/dist/orchestrator-RI3bpqqc.js +6 -0
- package/dist/osint-B4_m3VHQ.js +277 -0
- package/dist/pairing-6iM27aD8.js +196 -0
- package/dist/pairing-dGoiGepK.js +4 -0
- package/dist/pc-access-CgCsYrpt.js +8 -0
- package/dist/pc-access-_iH2aorG.js +819 -0
- package/dist/pending-approval-BgNjjuI2.js +22 -0
- package/dist/pending-approval-CUXjysAo.js +22 -0
- package/dist/reminders-store-Drjed_-h.js +58 -0
- package/dist/renderer-BVQrd0_g.js +225 -0
- package/dist/rules-BE4GV6cV.js +103 -0
- package/dist/run-main.js +1639 -460
- package/dist/runner-CJFJUtPm.js +1271 -0
- package/dist/runner-DatMMYYE.js +1271 -0
- package/dist/sdk/index.js +2 -2
- package/dist/sdk/index.mjs +2 -2
- package/dist/security-BqNyT4ID.js +4 -0
- package/dist/security-tpgqPWWH.js +73 -0
- package/dist/server-Brl_HQUB.js +1255 -0
- package/dist/server-D4wVHiX9.js +4 -0
- package/dist/server-Dh3JlBFB.js +1255 -0
- package/dist/server-DhfipkwN.js +4 -0
- package/dist/session-store-BUiPz0Vv.js +5 -0
- package/dist/session-store-is4B6qmD.js +113 -0
- package/dist/sessions-tools-CbUTFe4i.js +5 -0
- package/dist/sessions-tools-CeqD7iil.js +95 -0
- package/dist/skill-loader-BaNLVmJy.js +7 -0
- package/dist/skill-loader-HgpF6Vqs.js +159 -0
- package/dist/skill-runtime-BXWd-Ktf.js +102 -0
- package/dist/skill-runtime-CJN24QPW.js +102 -0
- package/dist/skill-runtime-jgklm02e.js +5 -0
- package/dist/skill-runtime-w1ig_lcw.js +5 -0
- package/dist/src-Bhybpk1J.js +63 -0
- package/dist/src-BxPHKO5x.js +63 -0
- package/dist/src-DIc-L2IG.js +20 -0
- package/dist/src-DMJ4-uqk.js +458 -0
- package/dist/src-g_rNx5rh.js +458 -0
- package/dist/sub-agent-tools-CHQoHz9c.js +39 -0
- package/dist/sub-agent-tools-DHY-4WWM.js +39 -0
- package/dist/theme-DcxwcUgZ.js +180 -0
- package/dist/theme-cx0fkgWC.js +8 -0
- package/dist/tool-policy-CNT-mF2Z.js +189 -0
- package/dist/tool-policy-DZvF8xlQ.js +189 -0
- package/dist/tts-elevenlabs-BRosZv-f.js +61 -0
- package/dist/tts-elevenlabs-C06nUxMK.js +61 -0
- package/dist/update-check-C2Dz85wJ.js +81 -0
- package/dist/update-check-w4XuxVl7.js +81 -0
- package/dist/vision-BMmiIKy7.js +121 -0
- package/dist/vision-JOtOS1Br.js +121 -0
- package/dist/vision-tools-CB28ZCO_.js +5 -0
- package/dist/vision-tools-DVuYc17I.js +51 -0
- package/dist/vision-tools-U3YC4L-g.js +5 -0
- package/dist/vision-tools-vPPwQ-0N.js +51 -0
- package/dist/voice-transcription-B555DbWR.js +138 -0
- package/dist/voice-transcription-DBo5hXmu.js +138 -0
- package/dist/website-watch-tools-DFMrJU-R.js +139 -0
- package/dist/website-watch-tools-Du3W5sN7.js +5 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,40 +1,55 @@
|
|
|
1
|
-
<
|
|
2
|
-
<img src="assets/icon.png" width="
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
|
|
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/
|
|
9
|
-
<img src="https://img.shields.io/
|
|
10
|
-
<img src="https://img.shields.io/
|
|
11
|
-
<img src="https://img.shields.io/
|
|
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/
|
|
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
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
##
|
|
71
|
+
## 🚀 Get started in 60 seconds
|
|
57
72
|
|
|
58
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
91
|
+
# Send a test message
|
|
92
|
+
hyperclaw agent --message "What can you do?"
|
|
80
93
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
94
|
+
# Health check
|
|
95
|
+
hyperclaw doctor
|
|
96
|
+
```
|
|
84
97
|
|
|
85
|
-
|
|
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
|
-
|
|
89
|
-
|
|
100
|
+
<details>
|
|
101
|
+
<summary>More install options</summary>
|
|
90
102
|
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
```bash
|
|
104
|
+
# pnpm
|
|
105
|
+
pnpm add -g hyperclaw@latest
|
|
93
106
|
|
|
94
|
-
#
|
|
95
|
-
|
|
107
|
+
# Install with daemon (auto-start on boot + full PC access)
|
|
108
|
+
hyperclaw onboard --install-daemon
|
|
96
109
|
|
|
97
|
-
#
|
|
98
|
-
hyperclaw
|
|
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
|
-
|
|
116
|
+
</details>
|
|
102
117
|
|
|
103
118
|
---
|
|
104
119
|
|
|
105
120
|
## Channels
|
|
106
121
|
|
|
107
|
-
HyperClaw connects to the channels you already use (
|
|
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
|
|
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
|
-
- **
|
|
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
|
-
│ └── …
|
|
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
|
+
[](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;
|