@hybridaione/hybridclaw 0.1.5

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 (196) hide show
  1. package/.env.example +14 -0
  2. package/.github/workflows/pages.yml +41 -0
  3. package/AGENTS.md +24 -0
  4. package/CHANGELOG.md +113 -0
  5. package/LICENSE +21 -0
  6. package/README.md +226 -0
  7. package/SECURITY.md +67 -0
  8. package/config.example.json +62 -0
  9. package/container/Dockerfile +23 -0
  10. package/container/package-lock.json +246 -0
  11. package/container/package.json +17 -0
  12. package/container/src/hybridai-client.ts +38 -0
  13. package/container/src/index.ts +198 -0
  14. package/container/src/ipc.ts +37 -0
  15. package/container/src/tools.ts +1008 -0
  16. package/container/src/types.ts +74 -0
  17. package/container/src/web-fetch.ts +389 -0
  18. package/container/tsconfig.json +16 -0
  19. package/dist/agent.d.ts +3 -0
  20. package/dist/agent.d.ts.map +1 -0
  21. package/dist/agent.js +21 -0
  22. package/dist/agent.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +32 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/config.d.ts +38 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +107 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/container-runner.d.ts +11 -0
  32. package/dist/container-runner.d.ts.map +1 -0
  33. package/dist/container-runner.js +246 -0
  34. package/dist/container-runner.js.map +1 -0
  35. package/dist/conversation.d.ts +18 -0
  36. package/dist/conversation.d.ts.map +1 -0
  37. package/dist/conversation.js +29 -0
  38. package/dist/conversation.js.map +1 -0
  39. package/dist/db.d.ts +29 -0
  40. package/dist/db.d.ts.map +1 -0
  41. package/dist/db.js +205 -0
  42. package/dist/db.js.map +1 -0
  43. package/dist/discord.d.ts +17 -0
  44. package/dist/discord.d.ts.map +1 -0
  45. package/dist/discord.js +115 -0
  46. package/dist/discord.js.map +1 -0
  47. package/dist/env.d.ts +6 -0
  48. package/dist/env.d.ts.map +1 -0
  49. package/dist/env.js +36 -0
  50. package/dist/env.js.map +1 -0
  51. package/dist/gateway-client.d.ts +8 -0
  52. package/dist/gateway-client.d.ts.map +1 -0
  53. package/dist/gateway-client.js +57 -0
  54. package/dist/gateway-client.js.map +1 -0
  55. package/dist/gateway-service.d.ts +23 -0
  56. package/dist/gateway-service.d.ts.map +1 -0
  57. package/dist/gateway-service.js +360 -0
  58. package/dist/gateway-service.js.map +1 -0
  59. package/dist/gateway-types.d.ts +40 -0
  60. package/dist/gateway-types.d.ts.map +1 -0
  61. package/dist/gateway-types.js +6 -0
  62. package/dist/gateway-types.js.map +1 -0
  63. package/dist/gateway.d.ts +2 -0
  64. package/dist/gateway.d.ts.map +1 -0
  65. package/dist/gateway.js +138 -0
  66. package/dist/gateway.js.map +1 -0
  67. package/dist/hatch.d.ts +7 -0
  68. package/dist/hatch.d.ts.map +1 -0
  69. package/dist/hatch.js +99 -0
  70. package/dist/hatch.js.map +1 -0
  71. package/dist/health.d.ts +2 -0
  72. package/dist/health.d.ts.map +1 -0
  73. package/dist/health.js +169 -0
  74. package/dist/health.js.map +1 -0
  75. package/dist/heartbeat.d.ts +3 -0
  76. package/dist/heartbeat.d.ts.map +1 -0
  77. package/dist/heartbeat.js +103 -0
  78. package/dist/heartbeat.js.map +1 -0
  79. package/dist/hybridai-bots.d.ts +5 -0
  80. package/dist/hybridai-bots.d.ts.map +1 -0
  81. package/dist/hybridai-bots.js +34 -0
  82. package/dist/hybridai-bots.js.map +1 -0
  83. package/dist/index.d.ts +2 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +60 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/ipc.d.ts +33 -0
  88. package/dist/ipc.d.ts.map +1 -0
  89. package/dist/ipc.js +142 -0
  90. package/dist/ipc.js.map +1 -0
  91. package/dist/logger.d.ts +3 -0
  92. package/dist/logger.d.ts.map +1 -0
  93. package/dist/logger.js +21 -0
  94. package/dist/logger.js.map +1 -0
  95. package/dist/mount-security.d.ts +28 -0
  96. package/dist/mount-security.d.ts.map +1 -0
  97. package/dist/mount-security.js +187 -0
  98. package/dist/mount-security.js.map +1 -0
  99. package/dist/onboarding.d.ts +7 -0
  100. package/dist/onboarding.d.ts.map +1 -0
  101. package/dist/onboarding.js +445 -0
  102. package/dist/onboarding.js.map +1 -0
  103. package/dist/prompt-hooks.d.ts +17 -0
  104. package/dist/prompt-hooks.d.ts.map +1 -0
  105. package/dist/prompt-hooks.js +83 -0
  106. package/dist/prompt-hooks.js.map +1 -0
  107. package/dist/runtime-config.d.ts +78 -0
  108. package/dist/runtime-config.d.ts.map +1 -0
  109. package/dist/runtime-config.js +471 -0
  110. package/dist/runtime-config.js.map +1 -0
  111. package/dist/scheduled-task-runner.d.ts +11 -0
  112. package/dist/scheduled-task-runner.d.ts.map +1 -0
  113. package/dist/scheduled-task-runner.js +16 -0
  114. package/dist/scheduled-task-runner.js.map +1 -0
  115. package/dist/scheduler.d.ts +11 -0
  116. package/dist/scheduler.d.ts.map +1 -0
  117. package/dist/scheduler.js +165 -0
  118. package/dist/scheduler.js.map +1 -0
  119. package/dist/session-maintenance.d.ts +9 -0
  120. package/dist/session-maintenance.d.ts.map +1 -0
  121. package/dist/session-maintenance.js +168 -0
  122. package/dist/session-maintenance.js.map +1 -0
  123. package/dist/session-transcripts.d.ts +11 -0
  124. package/dist/session-transcripts.d.ts.map +1 -0
  125. package/dist/session-transcripts.js +32 -0
  126. package/dist/session-transcripts.js.map +1 -0
  127. package/dist/side-effects.d.ts +3 -0
  128. package/dist/side-effects.d.ts.map +1 -0
  129. package/dist/side-effects.js +30 -0
  130. package/dist/side-effects.js.map +1 -0
  131. package/dist/skills.d.ts +32 -0
  132. package/dist/skills.d.ts.map +1 -0
  133. package/dist/skills.js +376 -0
  134. package/dist/skills.js.map +1 -0
  135. package/dist/tui.d.ts +2 -0
  136. package/dist/tui.d.ts.map +1 -0
  137. package/dist/tui.js +305 -0
  138. package/dist/tui.js.map +1 -0
  139. package/dist/types.d.ts +132 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +3 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/workspace.d.ts +25 -0
  144. package/dist/workspace.d.ts.map +1 -0
  145. package/dist/workspace.js +154 -0
  146. package/dist/workspace.js.map +1 -0
  147. package/docs/chat.html +929 -0
  148. package/docs/hai_logo_free.png +0 -0
  149. package/docs/hero.png +0 -0
  150. package/docs/index.html +1213 -0
  151. package/package.json +34 -0
  152. package/skills/current-time/SKILL.md +26 -0
  153. package/skills/iss-position/SKILL.md +46 -0
  154. package/skills/iss-position/agents/openai.yaml +3 -0
  155. package/skills/iss-position/scripts/get_iss_position.py +107 -0
  156. package/skills/repo-orientation/SKILL.md +74 -0
  157. package/src/agent.ts +35 -0
  158. package/src/cli.ts +35 -0
  159. package/src/config.ts +137 -0
  160. package/src/container-runner.ts +305 -0
  161. package/src/conversation.ts +49 -0
  162. package/src/db.ts +290 -0
  163. package/src/discord.ts +156 -0
  164. package/src/env.ts +36 -0
  165. package/src/gateway-client.ts +73 -0
  166. package/src/gateway-service.ts +456 -0
  167. package/src/gateway-types.ts +47 -0
  168. package/src/gateway.ts +199 -0
  169. package/src/health.ts +189 -0
  170. package/src/heartbeat.ts +121 -0
  171. package/src/hybridai-bots.ts +48 -0
  172. package/src/ipc.ts +163 -0
  173. package/src/logger.ts +26 -0
  174. package/src/mount-security.ts +216 -0
  175. package/src/onboarding.ts +569 -0
  176. package/src/prompt-hooks.ts +113 -0
  177. package/src/runtime-config.ts +588 -0
  178. package/src/scheduled-task-runner.ts +26 -0
  179. package/src/scheduler.ts +196 -0
  180. package/src/session-maintenance.ts +263 -0
  181. package/src/session-transcripts.ts +45 -0
  182. package/src/side-effects.ts +41 -0
  183. package/src/skills.ts +429 -0
  184. package/src/tui.ts +327 -0
  185. package/src/types.ts +135 -0
  186. package/src/workspace.ts +171 -0
  187. package/templates/AGENTS.md +104 -0
  188. package/templates/BOOT.md +3 -0
  189. package/templates/BOOTSTRAP.md +54 -0
  190. package/templates/HEARTBEAT.md +5 -0
  191. package/templates/IDENTITY.md +18 -0
  192. package/templates/MEMORY.md +19 -0
  193. package/templates/SOUL.md +36 -0
  194. package/templates/TOOLS.md +22 -0
  195. package/templates/USER.md +17 -0
  196. package/tsconfig.json +18 -0
@@ -0,0 +1,1213 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>HybridClaw — Enterprise AI Digital Coworker</title>
7
+ <style>
8
+ :root {
9
+ --bg: #0a1221;
10
+ --bg-card: #0f1a2e;
11
+ --bg-card-hover: #162240;
12
+ --border: #1e3050;
13
+ --text: #f8fafc;
14
+ --text-dim: #94a3b8;
15
+ --text-faint: #64748b;
16
+ --accent-1: #4a6cf7; /* HybridAI blue */
17
+ --accent-2: #3b5bdb; /* deep blue */
18
+ --accent-teal: #5ce0d8;
19
+ --accent-teal-2: #31c9bf;
20
+ --accent-gold: #FFD700;
21
+ --accent-gradient: linear-gradient(135deg, #4a6cf7, #7c3aed);
22
+ --accent-gradient-teal: linear-gradient(135deg, var(--accent-teal), var(--accent-teal-2));
23
+ --accent-glow: rgba(74, 108, 247, 0.15);
24
+ --code-bg: #060e1a;
25
+ --success: #10b981;
26
+ }
27
+
28
+ * { margin: 0; padding: 0; box-sizing: border-box; }
29
+
30
+ body {
31
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
32
+ background: var(--bg);
33
+ color: var(--text);
34
+ line-height: 1.6;
35
+ overflow-x: hidden;
36
+ }
37
+
38
+ a { color: var(--accent-1); text-decoration: none; transition: color 0.2s; }
39
+ a:hover { color: var(--accent-2); }
40
+
41
+ /* NAV */
42
+ nav {
43
+ position: fixed;
44
+ top: 0;
45
+ left: 0;
46
+ right: 0;
47
+ z-index: 100;
48
+ background: rgba(10, 18, 33, 0.88);
49
+ backdrop-filter: blur(16px);
50
+ border-bottom: 1px solid var(--border);
51
+ padding: 0 2rem;
52
+ }
53
+ .nav-inner {
54
+ max-width: 1100px;
55
+ margin: 0 auto;
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: space-between;
59
+ height: 60px;
60
+ }
61
+ .nav-logo {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ gap: 0.55rem;
65
+ font-weight: 700;
66
+ font-size: 1.2rem;
67
+ letter-spacing: -0.02em;
68
+ }
69
+ .nav-logo-img {
70
+ width: 26px;
71
+ height: 26px;
72
+ object-fit: contain;
73
+ filter: drop-shadow(0 0 10px rgba(74, 108, 247, 0.25));
74
+ }
75
+ .nav-logo-text {
76
+ background: var(--accent-gradient);
77
+ -webkit-background-clip: text;
78
+ -webkit-text-fill-color: transparent;
79
+ background-clip: text;
80
+ }
81
+ .nav-links { display: flex; gap: 1.5rem; align-items: center; }
82
+ .nav-links a { color: var(--text-dim); font-size: 0.9rem; }
83
+ .nav-links a:hover { color: var(--text); }
84
+ .nav-gh {
85
+ display: inline-flex;
86
+ align-items: center;
87
+ gap: 0.4rem;
88
+ padding: 0.4rem 0.9rem;
89
+ border: 1px solid var(--border);
90
+ border-radius: 6px;
91
+ font-size: 0.85rem;
92
+ color: var(--text-dim) !important;
93
+ transition: border-color 0.2s, color 0.2s;
94
+ }
95
+ .nav-gh:hover { border-color: var(--accent-1); color: var(--text) !important; }
96
+
97
+ /* HERO */
98
+ .hero {
99
+ max-width: 1100px;
100
+ margin: 0 auto;
101
+ padding: 10rem 2rem 6rem;
102
+ text-align: center;
103
+ }
104
+ .hero-img {
105
+ display: block;
106
+ width: 220px;
107
+ height: auto;
108
+ margin: 0 auto 2rem;
109
+ filter: drop-shadow(0 0 40px rgba(74, 108, 247, 0.2));
110
+ }
111
+
112
+ .hero-badge {
113
+ display: inline-block;
114
+ padding: 0.35rem 1rem;
115
+ border-radius: 999px;
116
+ border: 1px solid var(--border);
117
+ font-size: 0.8rem;
118
+ color: var(--text-dim);
119
+ margin-bottom: 2rem;
120
+ background: var(--bg-card);
121
+ }
122
+ .hero-badge span {
123
+ background: var(--accent-gradient);
124
+ -webkit-background-clip: text;
125
+ -webkit-text-fill-color: transparent;
126
+ background-clip: text;
127
+ font-weight: 600;
128
+ }
129
+ .hero h1 {
130
+ font-size: clamp(2.5rem, 6vw, 4rem);
131
+ font-weight: 800;
132
+ line-height: 1.1;
133
+ letter-spacing: -0.03em;
134
+ margin-bottom: 1.5rem;
135
+ }
136
+ .hero h1 .gradient {
137
+ background: var(--accent-gradient);
138
+ -webkit-background-clip: text;
139
+ -webkit-text-fill-color: transparent;
140
+ background-clip: text;
141
+ }
142
+ .hero p {
143
+ font-size: 1.2rem;
144
+ color: var(--text-dim);
145
+ max-width: 600px;
146
+ margin: 0 auto 2.5rem;
147
+ line-height: 1.7;
148
+ }
149
+ .hero-cta {
150
+ display: flex;
151
+ gap: 1rem;
152
+ justify-content: center;
153
+ flex-wrap: wrap;
154
+ }
155
+ .btn {
156
+ display: inline-flex;
157
+ align-items: center;
158
+ gap: 0.5rem;
159
+ padding: 0.75rem 1.5rem;
160
+ border-radius: 8px;
161
+ font-size: 0.95rem;
162
+ font-weight: 600;
163
+ transition: all 0.2s;
164
+ cursor: pointer;
165
+ border: none;
166
+ }
167
+ .btn-primary {
168
+ background: var(--accent-gradient);
169
+ color: #fff;
170
+ }
171
+ .btn-primary:hover { opacity: 0.9; transform: translateY(-1px); color: #fff; }
172
+ .btn-secondary {
173
+ background: var(--bg-card);
174
+ color: var(--text);
175
+ border: 1px solid var(--border);
176
+ }
177
+ .btn-secondary:hover { border-color: var(--accent-1); transform: translateY(-1px); }
178
+
179
+ /* SECTIONS */
180
+ section {
181
+ max-width: 1100px;
182
+ margin: 0 auto;
183
+ padding: 5rem 2rem;
184
+ }
185
+ .section-label {
186
+ font-size: 0.8rem;
187
+ font-weight: 700;
188
+ text-transform: uppercase;
189
+ letter-spacing: 0.1em;
190
+ background: var(--accent-gradient);
191
+ -webkit-background-clip: text;
192
+ -webkit-text-fill-color: transparent;
193
+ background-clip: text;
194
+ margin-bottom: 0.75rem;
195
+ }
196
+ .section-title {
197
+ font-size: 2rem;
198
+ font-weight: 700;
199
+ letter-spacing: -0.02em;
200
+ margin-bottom: 1rem;
201
+ }
202
+ .section-desc {
203
+ color: var(--text-dim);
204
+ max-width: 600px;
205
+ margin-bottom: 3rem;
206
+ font-size: 1.05rem;
207
+ }
208
+ .section-center { text-align: center; }
209
+ .section-center .section-desc { margin-left: auto; margin-right: auto; }
210
+
211
+ /* FEATURE GRID */
212
+ .features-grid {
213
+ display: grid;
214
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
215
+ gap: 1.25rem;
216
+ }
217
+ .feature-card {
218
+ background: var(--bg-card);
219
+ border: 1px solid var(--border);
220
+ border-radius: 12px;
221
+ padding: 1.75rem;
222
+ transition: border-color 0.2s, background 0.2s;
223
+ }
224
+ .feature-card:hover {
225
+ border-color: rgba(74, 108, 247, 0.3);
226
+ background: var(--bg-card-hover);
227
+ }
228
+ .feature-icon {
229
+ width: 40px;
230
+ height: 40px;
231
+ border-radius: 10px;
232
+ background: var(--accent-glow);
233
+ display: flex;
234
+ align-items: center;
235
+ justify-content: center;
236
+ margin-bottom: 1rem;
237
+ font-size: 1.2rem;
238
+ }
239
+ .feature-card h3 {
240
+ font-size: 1.05rem;
241
+ font-weight: 600;
242
+ margin-bottom: 0.5rem;
243
+ }
244
+ .feature-card p {
245
+ color: var(--text-dim);
246
+ font-size: 0.9rem;
247
+ line-height: 1.6;
248
+ }
249
+
250
+ /* ARCHITECTURE */
251
+ .arch-flow {
252
+ display: flex;
253
+ align-items: center;
254
+ justify-content: center;
255
+ gap: 0;
256
+ flex-wrap: wrap;
257
+ margin: 3rem 0 2rem;
258
+ }
259
+ .arch-node {
260
+ background: var(--bg-card);
261
+ border: 1px solid var(--border);
262
+ border-radius: 12px;
263
+ padding: 1.5rem 2rem;
264
+ text-align: center;
265
+ min-width: 180px;
266
+ transition: border-color 0.2s;
267
+ }
268
+ .arch-node:hover { border-color: var(--accent-1); }
269
+ .arch-node-label {
270
+ font-size: 0.75rem;
271
+ text-transform: uppercase;
272
+ letter-spacing: 0.08em;
273
+ color: var(--text-faint);
274
+ margin-bottom: 0.4rem;
275
+ }
276
+ .arch-node-title {
277
+ font-weight: 700;
278
+ font-size: 1.05rem;
279
+ }
280
+ .arch-node-desc {
281
+ font-size: 0.8rem;
282
+ color: var(--text-dim);
283
+ margin-top: 0.3rem;
284
+ }
285
+ .arch-arrow {
286
+ font-size: 1.5rem;
287
+ color: var(--text-faint);
288
+ padding: 0 0.75rem;
289
+ }
290
+ .arch-detail {
291
+ display: grid;
292
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
293
+ gap: 1.25rem;
294
+ margin-top: 2.5rem;
295
+ }
296
+ .arch-detail-card {
297
+ background: var(--bg-card);
298
+ border: 1px solid var(--border);
299
+ border-radius: 12px;
300
+ padding: 1.5rem;
301
+ }
302
+ .arch-detail-card h4 {
303
+ font-size: 0.95rem;
304
+ margin-bottom: 0.5rem;
305
+ color: var(--accent-1);
306
+ }
307
+ .arch-detail-card p {
308
+ font-size: 0.85rem;
309
+ color: var(--text-dim);
310
+ line-height: 1.6;
311
+ }
312
+
313
+ /* TOOLS */
314
+ .tools-grid {
315
+ display: grid;
316
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
317
+ gap: 0.75rem;
318
+ }
319
+ .tool-pill {
320
+ background: var(--bg-card);
321
+ border: 1px solid var(--border);
322
+ border-radius: 10px;
323
+ padding: 1rem 1.25rem;
324
+ text-align: center;
325
+ transition: border-color 0.2s, background 0.2s;
326
+ }
327
+ .tool-pill:hover {
328
+ border-color: rgba(74, 108, 247, 0.25);
329
+ background: var(--bg-card-hover);
330
+ }
331
+ .tool-pill-icon { font-size: 1.3rem; margin-bottom: 0.4rem; }
332
+ .tool-pill-name { font-weight: 600; font-size: 0.9rem; }
333
+ .tool-pill-desc { font-size: 0.75rem; color: var(--text-faint); margin-top: 0.2rem; }
334
+
335
+ /* STATS BAR */
336
+ .stats {
337
+ display: flex;
338
+ justify-content: center;
339
+ gap: 3rem;
340
+ flex-wrap: wrap;
341
+ padding: 3rem 2rem;
342
+ border-top: 1px solid var(--border);
343
+ border-bottom: 1px solid var(--border);
344
+ margin: 2rem auto;
345
+ max-width: 1100px;
346
+ }
347
+ .stat { text-align: center; }
348
+ .stat-value {
349
+ font-size: 2rem;
350
+ font-weight: 800;
351
+ background: var(--accent-gradient);
352
+ -webkit-background-clip: text;
353
+ -webkit-text-fill-color: transparent;
354
+ background-clip: text;
355
+ }
356
+ .stat-label { font-size: 0.8rem; color: var(--text-faint); margin-top: 0.25rem; }
357
+
358
+ /* QUICKSTART */
359
+ .quickstart-box {
360
+ background: var(--code-bg);
361
+ border: 1px solid var(--border);
362
+ border-radius: 12px;
363
+ padding: 2rem;
364
+ max-width: 650px;
365
+ margin: 0 auto;
366
+ }
367
+ .quickstart-box pre {
368
+ font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
369
+ font-size: 0.9rem;
370
+ line-height: 1.8;
371
+ overflow-x: auto;
372
+ }
373
+ .quickstart-box .comment { color: var(--text-faint); }
374
+ .quickstart-box .cmd { color: var(--accent-1); }
375
+ .quickstart-box .flag { color: var(--accent-2); }
376
+
377
+ /* COMPARISON TABLE */
378
+ .comparison {
379
+ max-width: 1100px;
380
+ margin: 0 auto 3rem;
381
+ }
382
+ .comparison table {
383
+ width: 100%;
384
+ border-collapse: collapse;
385
+ table-layout: fixed;
386
+ }
387
+ .comparison th, .comparison td {
388
+ padding: 0.75rem 1.25rem;
389
+ text-align: left;
390
+ border-bottom: 1px solid var(--border);
391
+ font-size: 0.9rem;
392
+ vertical-align: top;
393
+ }
394
+ .comparison th {
395
+ color: var(--text-faint);
396
+ font-weight: 600;
397
+ font-size: 0.8rem;
398
+ text-transform: uppercase;
399
+ letter-spacing: 0.05em;
400
+ }
401
+ .comparison th:nth-child(2) {
402
+ color: var(--accent-teal);
403
+ background: rgba(92, 224, 216, 0.14);
404
+ border-left: 1px solid rgba(92, 224, 216, 0.36);
405
+ border-right: 1px solid rgba(92, 224, 216, 0.36);
406
+ }
407
+ .comparison td:first-child { color: var(--text-dim); }
408
+ .comparison td:nth-child(2) {
409
+ font-weight: 600;
410
+ color: var(--accent-teal);
411
+ background: rgba(92, 224, 216, 0.1);
412
+ border-left: 1px solid rgba(92, 224, 216, 0.26);
413
+ border-right: 1px solid rgba(92, 224, 216, 0.26);
414
+ }
415
+ .compare-text {
416
+ display: block;
417
+ color: var(--text-dim);
418
+ font-size: 0.82rem;
419
+ line-height: 1.45;
420
+ overflow-wrap: anywhere;
421
+ word-break: break-word;
422
+ }
423
+
424
+ /* FAQ */
425
+ .faq-list { max-width: 700px; margin: 0 auto; }
426
+ .faq-item {
427
+ border-bottom: 1px solid var(--border);
428
+ padding: 1.5rem 0;
429
+ }
430
+ .faq-item:last-child { border-bottom: none; }
431
+ .faq-q {
432
+ font-weight: 600;
433
+ font-size: 1rem;
434
+ margin-bottom: 0.5rem;
435
+ cursor: default;
436
+ }
437
+ .faq-a {
438
+ color: var(--text-dim);
439
+ font-size: 0.9rem;
440
+ line-height: 1.7;
441
+ }
442
+
443
+ /* FOOTER */
444
+ footer {
445
+ border-top: 1px solid var(--border);
446
+ padding: 3rem 2rem;
447
+ text-align: center;
448
+ }
449
+ .footer-inner {
450
+ max-width: 1100px;
451
+ margin: 0 auto;
452
+ }
453
+ .footer-links {
454
+ display: flex;
455
+ justify-content: center;
456
+ gap: 2rem;
457
+ margin-bottom: 1.5rem;
458
+ }
459
+ .footer-links a { color: var(--text-dim); font-size: 0.9rem; }
460
+ .footer-copy { color: var(--text-faint); font-size: 0.8rem; }
461
+
462
+ /* HYBRIDAI SHOWCASE */
463
+ #hybridai .section-label {
464
+ background: var(--accent-gradient-teal);
465
+ -webkit-background-clip: text;
466
+ -webkit-text-fill-color: transparent;
467
+ background-clip: text;
468
+ }
469
+ #hybridai .section-title {
470
+ color: #c4f8f3;
471
+ }
472
+ .hybridai-hero {
473
+ background: linear-gradient(135deg, rgba(92, 224, 216, 0.12), rgba(49, 201, 191, 0.08));
474
+ border: 1px solid rgba(92, 224, 216, 0.26);
475
+ border-radius: 16px;
476
+ padding: 3rem;
477
+ max-width: 900px;
478
+ margin: 0 auto 3rem;
479
+ position: relative;
480
+ overflow: hidden;
481
+ }
482
+ .hybridai-hero::before {
483
+ content: '';
484
+ position: absolute;
485
+ top: 0;
486
+ left: 0;
487
+ right: 0;
488
+ height: 2px;
489
+ background: var(--accent-gradient-teal);
490
+ }
491
+ .hybridai-hero h3 {
492
+ font-size: 1.5rem;
493
+ font-weight: 700;
494
+ margin-bottom: 1rem;
495
+ letter-spacing: -0.01em;
496
+ }
497
+ .hybridai-hero h3 .gradient {
498
+ background: var(--accent-gradient-teal);
499
+ -webkit-background-clip: text;
500
+ -webkit-text-fill-color: transparent;
501
+ background-clip: text;
502
+ }
503
+ .hybridai-hero > p {
504
+ color: var(--text-dim);
505
+ font-size: 1.05rem;
506
+ line-height: 1.7;
507
+ margin-bottom: 2rem;
508
+ max-width: 700px;
509
+ }
510
+ .hybridai-features {
511
+ display: grid;
512
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
513
+ gap: 1rem;
514
+ }
515
+ .hybridai-feat {
516
+ background: rgba(11, 14, 20, 0.6);
517
+ border: 1px solid var(--border);
518
+ border-radius: 10px;
519
+ padding: 1.25rem;
520
+ transition: border-color 0.2s;
521
+ }
522
+ .hybridai-feat:hover { border-color: rgba(92, 224, 216, 0.38); }
523
+ .hybridai-feat-icon {
524
+ font-size: 1.3rem;
525
+ margin-bottom: 0.5rem;
526
+ color: var(--accent-teal);
527
+ }
528
+ .hybridai-feat h4 {
529
+ font-size: 0.95rem;
530
+ font-weight: 600;
531
+ margin-bottom: 0.35rem;
532
+ color: #c4f8f3;
533
+ }
534
+ .hybridai-feat p {
535
+ font-size: 0.82rem;
536
+ color: var(--text-dim);
537
+ line-height: 1.5;
538
+ }
539
+ .hybridai-bot-example {
540
+ margin-top: 2rem;
541
+ background: var(--code-bg);
542
+ border: 1px solid var(--border);
543
+ border-radius: 10px;
544
+ padding: 1.25rem 1.5rem;
545
+ max-width: 500px;
546
+ }
547
+ .hybridai-bot-example pre {
548
+ font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
549
+ font-size: 0.85rem;
550
+ line-height: 1.7;
551
+ color: var(--text-dim);
552
+ }
553
+ .hybridai-bot-example .cmd { color: var(--accent-1); }
554
+ .hybridai-bot-example .val { color: var(--accent-2); }
555
+ .hybridai-bot-example .out { color: var(--success); }
556
+
557
+ /* Divider glow */
558
+ .glow-divider {
559
+ height: 1px;
560
+ background: linear-gradient(90deg, transparent, var(--accent-1), #7c3aed, transparent);
561
+ opacity: 0.3;
562
+ max-width: 1100px;
563
+ margin: 0 auto;
564
+ }
565
+
566
+ /* RESPONSIVE */
567
+ @media (max-width: 768px) {
568
+ .hero { padding: 8rem 1.5rem 4rem; }
569
+ section { padding: 3rem 1.5rem; }
570
+ .arch-flow { flex-direction: column; }
571
+ .arch-arrow { transform: rotate(90deg); padding: 0.5rem 0; }
572
+ .stats { gap: 2rem; }
573
+ .nav-links { gap: 1rem; }
574
+ .features-grid { grid-template-columns: 1fr; }
575
+ .comparison th, .comparison td {
576
+ padding: 0.5rem 0.4rem;
577
+ font-size: 0.72rem;
578
+ }
579
+ .compare-text {
580
+ font-size: 0.68rem;
581
+ }
582
+ }
583
+ @media (max-width: 480px) {
584
+ .nav-links a:not(.nav-gh) { display: none; }
585
+ }
586
+ </style>
587
+ </head>
588
+ <body>
589
+
590
+ <!-- NAV -->
591
+ <nav>
592
+ <div class="nav-inner">
593
+ <div class="nav-logo">
594
+ <img src="hai_logo_free.png" alt="HybridAI logo" class="nav-logo-img">
595
+ <span class="nav-logo-text">HybridClaw</span>
596
+ </div>
597
+ <div class="nav-links">
598
+ <a href="#hybridai">HybridAI</a>
599
+ <a href="#features">Features</a>
600
+ <a href="#comparison">Comparison</a>
601
+ <a href="#architecture">Architecture</a>
602
+ <a href="#technical">Technical</a>
603
+ <a href="#tools">Tools</a>
604
+ <a href="#quickstart">Get Started</a>
605
+ <a href="#faq">FAQ</a>
606
+ <a href="https://github.com/HybridAIOne/hybridclaw" class="nav-gh">
607
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
608
+ GitHub
609
+ </a>
610
+ </div>
611
+ </div>
612
+ </nav>
613
+
614
+ <!-- HERO -->
615
+ <header class="hero">
616
+ <img src="hero.png" alt="HybridClaw" class="hero-img">
617
+ <div class="hero-badge">Powered by <span>HybridAI</span></div>
618
+ <h1>Your secure AI coworker<br><span class="gradient">that feels alive</span></h1>
619
+ <p>Give your enterprise team a digital coworker that protects trust by default, acts with power when needed, remembers context, and proactively keeps work moving.</p>
620
+ <div class="hero-cta">
621
+ <a href="#quickstart" class="btn btn-primary">Get Started</a>
622
+ <a href="#comparison" class="btn btn-secondary">See Comparison</a>
623
+ <a href="#features" class="btn btn-secondary">See Features</a>
624
+ </div>
625
+ </header>
626
+
627
+ <div class="glow-divider"></div>
628
+
629
+ <!-- STATS -->
630
+ <div class="stats">
631
+ <div class="stat">
632
+ <div class="stat-value">Trust-First</div>
633
+ <div class="stat-label">Onboarding</div>
634
+ </div>
635
+ <div class="stat">
636
+ <div class="stat-value">24/7</div>
637
+ <div class="stat-label">Proactive Assistant</div>
638
+ </div>
639
+ <div class="stat">
640
+ <div class="stat-value">3</div>
641
+ <div class="stat-label">Ways to Chat</div>
642
+ </div>
643
+ <div class="stat">
644
+ <div class="stat-value">Memory-First</div>
645
+ <div class="stat-label">Conversations</div>
646
+ </div>
647
+ <div class="stat">
648
+ <div class="stat-value">Enterprise-Ready</div>
649
+ <div class="stat-label">Security + Control</div>
650
+ </div>
651
+ </div>
652
+
653
+ <!-- HYBRIDAI PLATFORM -->
654
+ <section id="hybridai">
655
+ <div class="section-center">
656
+ <div class="section-label">HybridAI Advantage</div>
657
+ <h2 class="section-title">Enterprise platform advantage built in</h2>
658
+ <p class="section-desc">HybridAI gives HybridClaw a strong enterprise foundation: security, compliance alignment, and document-grounded intelligence.</p>
659
+ </div>
660
+
661
+ <div class="hybridai-hero">
662
+ <h3>Select your bot. <span class="gradient">Unlock its knowledge.</span></h3>
663
+ <p>Each bot can have its own focus, tone, and knowledge. Use one for deep research, one for support, and one for day-to-day team productivity.</p>
664
+
665
+ <div class="hybridai-features">
666
+ <div class="hybridai-feat">
667
+ <div class="hybridai-feat-icon">&#x1f512;</div>
668
+ <h4>Security</h4>
669
+ <p>Built for teams that need trustworthy controls and secure operations by default.</p>
670
+ </div>
671
+ <div class="hybridai-feat">
672
+ <div class="hybridai-feat-icon">&#x1f3e2;</div>
673
+ <h4>Enterprise-Ready Stack</h4>
674
+ <p>Designed for real business workflows, team governance, and operational reliability.</p>
675
+ </div>
676
+ <div class="hybridai-feat">
677
+ <div class="hybridai-feat-icon">&#x1f1ea;&#x1f1fa;</div>
678
+ <h4>EU Stack</h4>
679
+ <p>Strong fit for organizations prioritizing EU-centric infrastructure and data posture.</p>
680
+ </div>
681
+ <div class="hybridai-feat">
682
+ <div class="hybridai-feat-icon">&#x1f6e1;&#xfe0f;</div>
683
+ <h4>GDPR Alignment</h4>
684
+ <p>Supports privacy-conscious deployment strategies and compliance-driven teams.</p>
685
+ </div>
686
+ <div class="hybridai-feat">
687
+ <div class="hybridai-feat-icon">&#x1f50d;</div>
688
+ <h4>RAG Retrieval</h4>
689
+ <p>Ground answers in your organization’s knowledge for higher relevance and confidence.</p>
690
+ </div>
691
+ <div class="hybridai-feat">
692
+ <div class="hybridai-feat-icon">&#x1f4c4;</div>
693
+ <h4>Document Intelligence</h4>
694
+ <p>Turn internal documents into practical, searchable context your digital coworker can use.</p>
695
+ </div>
696
+ </div>
697
+
698
+ </div>
699
+ </section>
700
+
701
+ <div class="glow-divider"></div>
702
+
703
+ <!-- FEATURES -->
704
+ <section id="features">
705
+ <div class="section-center">
706
+ <div class="section-label">Capabilities</div>
707
+ <h2 class="section-title">Everything you need in a digital coworker</h2>
708
+ <p class="section-desc">HybridClaw is built for enterprise reality: security-first, operationally reliable, and powerful enough for serious workflows.</p>
709
+ </div>
710
+ <div class="features-grid">
711
+ <div class="feature-card">
712
+ <div class="feature-icon">&#x1f6e1;&#xfe0f;</div>
713
+ <h3>Trust-Model Onboarding</h3>
714
+ <p>Teams start with explicit trust acceptance, so security expectations are clear before the assistant goes live.</p>
715
+ </div>
716
+ <div class="feature-card">
717
+ <div class="feature-icon">&#x1f4c2;</div>
718
+ <h3>Simple Runtime Control</h3>
719
+ <p>Adjust behavior from one clean config surface instead of juggling many scattered settings.</p>
720
+ </div>
721
+ <div class="feature-card">
722
+ <div class="feature-icon">&#x1f504;</div>
723
+ <h3>Live Updates</h3>
724
+ <p>Most setting changes apply instantly, so teams can adapt without stopping the assistant.</p>
725
+ </div>
726
+ <div class="feature-card">
727
+ <div class="feature-icon">&#x1f512;</div>
728
+ <h3>Protected Actions</h3>
729
+ <p>Actions run behind strong guardrails to keep your environment safe while still getting real work done.</p>
730
+ </div>
731
+ <div class="feature-card">
732
+ <div class="feature-icon">&#x1f4ac;</div>
733
+ <h3>One Assistant, Multiple Channels</h3>
734
+ <p>Use Discord, web, or terminal with a consistent experience and shared context across channels.</p>
735
+ </div>
736
+ <div class="feature-card">
737
+ <div class="feature-icon">&#x1f9e0;</div>
738
+ <h3>Learns Over Time</h3>
739
+ <p>HybridClaw keeps durable context so it gets more helpful the longer your team works with it.</p>
740
+ </div>
741
+ <div class="feature-card">
742
+ <div class="feature-icon">&#x2697;&#xfe0f;</div>
743
+ <h3>Consistent Quality</h3>
744
+ <p>A structured prompt framework keeps tone, memory, and safety behavior consistent across conversations.</p>
745
+ </div>
746
+ <div class="feature-card">
747
+ <div class="feature-icon">&#x23f0;</div>
748
+ <h3>Smart Scheduling</h3>
749
+ <p>Set recurring and one-time tasks so your assistant follows through without reminders.</p>
750
+ </div>
751
+ <div class="feature-card">
752
+ <div class="feature-icon">&#x1f493;</div>
753
+ <h3>Proactive Heartbeat</h3>
754
+ <p>Your assistant checks in proactively when there is something meaningful to share, and stays quiet when there isn’t.</p>
755
+ </div>
756
+ <div class="feature-card">
757
+ <div class="feature-icon">&#x1f916;</div>
758
+ <h3>Multi-Bot &amp; Multi-Model</h3>
759
+ <p>Choose different assistants and model styles per channel so each team gets the best fit for its work.</p>
760
+ </div>
761
+ <div class="feature-card">
762
+ <div class="feature-icon">&#x1f504;</div>
763
+ <h3>Stays Fast as Chats Grow</h3>
764
+ <p>Long conversations stay responsive while important context is preserved behind the scenes.</p>
765
+ </div>
766
+ <div class="feature-card">
767
+ <div class="feature-icon">&#x1f4da;</div>
768
+ <h3>Compatible Skills</h3>
769
+ <p>SKILL.md format compatible with CLAUDE.md and OpenClaw skills. Drop in community skills or write your own with frontmatter metadata. User-invocable via /skill-name syntax.</p>
770
+ </div>
771
+ <div class="feature-card">
772
+ <div class="feature-icon">&#x1f4ca;</div>
773
+ <h3>Operational Visibility</h3>
774
+ <p>Built-in status and observability help teams run HybridClaw confidently in day-to-day operations.</p>
775
+ </div>
776
+ </div>
777
+ </section>
778
+
779
+ <div class="glow-divider"></div>
780
+
781
+ <!-- COMPARISON -->
782
+ <section id="comparison">
783
+ <div class="section-center">
784
+ <div class="section-label">Comparison</div>
785
+ <h2 class="section-title">Comparison &amp; USPs</h2>
786
+ </div>
787
+ <div class="comparison">
788
+ <table>
789
+ <thead>
790
+ <tr>
791
+ <th>Area</th>
792
+ <th>HybridClaw</th>
793
+ <th>OpenClaw</th>
794
+ <th>NanoClaw</th>
795
+ <th>PicoClaw</th>
796
+ </tr>
797
+ </thead>
798
+ <tbody>
799
+ <tr>
800
+ <td>Onboarding</td>
801
+ <td>
802
+ <span class="compare-text">Explicit trust acceptance</span>
803
+ </td>
804
+ <td>
805
+ <span class="compare-text">Strong default flow</span>
806
+ </td>
807
+ <td>
808
+ <span class="compare-text">Quick startup flow</span>
809
+ </td>
810
+ <td>
811
+ <span class="compare-text">Minimal setup path</span>
812
+ </td>
813
+ </tr>
814
+ <tr>
815
+ <td>Security &amp; Trust</td>
816
+ <td>
817
+ <span class="compare-text">Trust-first policy posture</span>
818
+ </td>
819
+ <td>
820
+ <span class="compare-text">Solid baseline controls</span>
821
+ </td>
822
+ <td>
823
+ <span class="compare-text">Lean safeguards</span>
824
+ </td>
825
+ <td>
826
+ <span class="compare-text">Minimal guardrails</span>
827
+ </td>
828
+ </tr>
829
+ <tr>
830
+ <td>Runtime Control</td>
831
+ <td>
832
+ <span class="compare-text">Live config updates</span>
833
+ </td>
834
+ <td>
835
+ <span class="compare-text">Setup-dependent tuning</span>
836
+ </td>
837
+ <td>
838
+ <span class="compare-text">Simple control surface</span>
839
+ </td>
840
+ <td>
841
+ <span class="compare-text">Minimal controls</span>
842
+ </td>
843
+ </tr>
844
+ <tr>
845
+ <td>Digital Coworker Feel</td>
846
+ <td>
847
+ <span class="compare-text">Memory + proactive follow-up</span>
848
+ </td>
849
+ <td>
850
+ <span class="compare-text">Strong continuity model</span>
851
+ </td>
852
+ <td>
853
+ <span class="compare-text">Lightweight continuity</span>
854
+ </td>
855
+ <td>
856
+ <span class="compare-text">Short-turn focus</span>
857
+ </td>
858
+ </tr>
859
+ <tr>
860
+ <td>Enterprise Readiness</td>
861
+ <td>
862
+ <span class="compare-text">Audit, status, scheduling built in</span>
863
+ </td>
864
+ <td>
865
+ <span class="compare-text">Strong base, extended per team</span>
866
+ </td>
867
+ <td>
868
+ <span class="compare-text">Lean core + add-ons</span>
869
+ </td>
870
+ <td>
871
+ <span class="compare-text">Minimal footprint strategy</span>
872
+ </td>
873
+ </tr>
874
+ <tr>
875
+ <td>Cross-Channel Consistency</td>
876
+ <td>
877
+ <span class="compare-text">One assistant brain across channels</span>
878
+ </td>
879
+ <td>
880
+ <span class="compare-text">Often one primary channel</span>
881
+ </td>
882
+ <td>
883
+ <span class="compare-text">Light multi-channel support</span>
884
+ </td>
885
+ <td>
886
+ <span class="compare-text">Mostly single-channel simplicity</span>
887
+ </td>
888
+ </tr>
889
+ </tbody>
890
+ </table>
891
+ </div>
892
+ </section>
893
+
894
+ <div class="glow-divider"></div>
895
+
896
+ <!-- ARCHITECTURE -->
897
+ <section id="architecture">
898
+ <div class="section-center">
899
+ <div class="section-label">Architecture</div>
900
+ <h2 class="section-title">Built for reliability at scale</h2>
901
+ <p class="section-desc">HybridClaw keeps one shared assistant brain across channels while running actions with safety guardrails.</p>
902
+ </div>
903
+
904
+ <div class="arch-flow">
905
+ <div class="arch-node">
906
+ <div class="arch-node-label">Where people work</div>
907
+ <div class="arch-node-title">Discord / Web / Terminal</div>
908
+ <div class="arch-node-desc">One shared user experience</div>
909
+ </div>
910
+ <div class="arch-arrow">&rarr;</div>
911
+ <div class="arch-node">
912
+ <div class="arch-node-label">HybridClaw Core</div>
913
+ <div class="arch-node-title">Shared Assistant Brain</div>
914
+ <div class="arch-node-desc">Context, memory, and orchestration</div>
915
+ </div>
916
+ <div class="arch-arrow">&rarr;</div>
917
+ <div class="arch-node">
918
+ <div class="arch-node-label">Action Layer</div>
919
+ <div class="arch-node-title">Safe Execution</div>
920
+ <div class="arch-node-desc">Useful actions with guardrails</div>
921
+ </div>
922
+ <div class="arch-arrow">&rarr;</div>
923
+ <div class="arch-node">
924
+ <div class="arch-node-label">Result</div>
925
+ <div class="arch-node-title">Back to your team</div>
926
+ <div class="arch-node-desc">Fast, consistent responses</div>
927
+ </div>
928
+ </div>
929
+
930
+ <div class="arch-detail">
931
+ <div class="arch-detail-card">
932
+ <h4>Fast by Design</h4>
933
+ <p>HybridClaw is optimized for quick responses, even when your team uses it all day.</p>
934
+ </div>
935
+ <div class="arch-detail-card">
936
+ <h4>Reliable Operations</h4>
937
+ <p>Clear runtime surfaces make it easier to monitor, maintain, and trust in production.</p>
938
+ </div>
939
+ <div class="arch-detail-card">
940
+ <h4>Safety by Default</h4>
941
+ <p>Guardrails are built in so teams can unlock automation without sacrificing control.</p>
942
+ </div>
943
+ <div class="arch-detail-card">
944
+ <h4>Consistent Assistant Quality</h4>
945
+ <p>Structured prompting keeps behavior stable, reliable, and aligned with your standards.</p>
946
+ </div>
947
+ </div>
948
+ </section>
949
+
950
+ <div class="glow-divider"></div>
951
+
952
+ <!-- TECHNICAL DETAILS -->
953
+ <section id="technical">
954
+ <div class="section-center">
955
+ <div class="section-label">Technical Details</div>
956
+ <h2 class="section-title">Engineering view</h2>
957
+ <p class="section-desc">For technical teams who want to understand how HybridClaw is built and operated.</p>
958
+ </div>
959
+ <div class="features-grid">
960
+ <div class="feature-card">
961
+ <h3 style="color: var(--accent-1);">Core Runtime</h3>
962
+ <p>Node.js gateway with persistent session state, scheduling, and HTTP endpoints for status, chat, and commands.</p>
963
+ </div>
964
+ <div class="feature-card">
965
+ <h3 style="color: var(--accent-1);">Safety Model</h3>
966
+ <p>Trust-model acceptance is required during onboarding, and execution uses strong runtime guardrails by default.</p>
967
+ </div>
968
+ <div class="feature-card">
969
+ <h3 style="color: var(--accent-1);">Prompt Orchestration</h3>
970
+ <p>Structured hook pipeline: <code>bootstrap</code>, <code>memory</code>, and <code>safety</code>, with runtime toggles.</p>
971
+ </div>
972
+ <div class="feature-card">
973
+ <h3 style="color: var(--accent-1);">Configuration</h3>
974
+ <p>Typed <code>config.json</code> with defaults, validation, and hot reload. Secrets remain in <code>.env</code>.</p>
975
+ </div>
976
+ <div class="feature-card">
977
+ <h3 style="color: var(--accent-1);">Memory Continuity</h3>
978
+ <p>Persistent workspace memory plus long-session compaction keeps conversations responsive without losing important context.</p>
979
+ </div>
980
+ <div class="feature-card">
981
+ <h3 style="color: var(--accent-1);">Interfaces &amp; Integrations</h3>
982
+ <p>Shared assistant behavior across Discord, web, and terminal, powered by HybridAI bots and model selection.</p>
983
+ </div>
984
+ </div>
985
+ </section>
986
+
987
+ <div class="glow-divider"></div>
988
+
989
+ <!-- TOOLS -->
990
+ <section id="tools">
991
+ <div class="section-center">
992
+ <div class="section-label">Toolbox</div>
993
+ <h2 class="section-title">11 built-in capabilities</h2>
994
+ <p class="section-desc">From reading content to taking action, HybridClaw can complete real workflows end-to-end.</p>
995
+ </div>
996
+ <div class="tools-grid">
997
+ <div class="tool-pill">
998
+ <div class="tool-pill-icon">&#x1f4c4;</div>
999
+ <div class="tool-pill-name">read</div>
1000
+ <div class="tool-pill-desc">Read file contents</div>
1001
+ </div>
1002
+ <div class="tool-pill">
1003
+ <div class="tool-pill-icon">&#x270f;&#xfe0f;</div>
1004
+ <div class="tool-pill-name">write</div>
1005
+ <div class="tool-pill-desc">Create or overwrite files</div>
1006
+ </div>
1007
+ <div class="tool-pill">
1008
+ <div class="tool-pill-icon">&#x1f527;</div>
1009
+ <div class="tool-pill-name">edit</div>
1010
+ <div class="tool-pill-desc">Surgical string replace</div>
1011
+ </div>
1012
+ <div class="tool-pill">
1013
+ <div class="tool-pill-icon">&#x1f5d1;&#xfe0f;</div>
1014
+ <div class="tool-pill-name">delete</div>
1015
+ <div class="tool-pill-desc">Remove files safely</div>
1016
+ </div>
1017
+ <div class="tool-pill">
1018
+ <div class="tool-pill-icon">&#x1f50d;</div>
1019
+ <div class="tool-pill-name">glob</div>
1020
+ <div class="tool-pill-desc">Pattern-match file paths</div>
1021
+ </div>
1022
+ <div class="tool-pill">
1023
+ <div class="tool-pill-icon">&#x1f50e;</div>
1024
+ <div class="tool-pill-name">grep</div>
1025
+ <div class="tool-pill-desc">Regex search file contents</div>
1026
+ </div>
1027
+ <div class="tool-pill">
1028
+ <div class="tool-pill-icon">&#x1f4bb;</div>
1029
+ <div class="tool-pill-name">bash</div>
1030
+ <div class="tool-pill-desc">Shell commands (guarded)</div>
1031
+ </div>
1032
+ <div class="tool-pill">
1033
+ <div class="tool-pill-icon">&#x1f9e0;</div>
1034
+ <div class="tool-pill-name">memory</div>
1035
+ <div class="tool-pill-desc">Durable workspace memory</div>
1036
+ </div>
1037
+ <div class="tool-pill">
1038
+ <div class="tool-pill-icon">&#x1f50d;</div>
1039
+ <div class="tool-pill-name">session_search</div>
1040
+ <div class="tool-pill-desc">Search past sessions</div>
1041
+ </div>
1042
+ <div class="tool-pill">
1043
+ <div class="tool-pill-icon">&#x1f310;</div>
1044
+ <div class="tool-pill-name">web_fetch</div>
1045
+ <div class="tool-pill-desc">Fetch &amp; extract URLs</div>
1046
+ </div>
1047
+ <div class="tool-pill">
1048
+ <div class="tool-pill-icon">&#x1f551;</div>
1049
+ <div class="tool-pill-name">cron</div>
1050
+ <div class="tool-pill-desc">Schedule recurring tasks</div>
1051
+ </div>
1052
+ </div>
1053
+ </section>
1054
+
1055
+ <div class="glow-divider"></div>
1056
+
1057
+ <!-- WORKSPACE -->
1058
+ <section>
1059
+ <div class="section-center">
1060
+ <div class="section-label">Personality</div>
1061
+ <h2 class="section-title">A workspace that shapes your agent</h2>
1062
+ <p class="section-desc">Bootstrap files give your agent identity, memory, and purpose. Each bot gets its own persistent workspace.</p>
1063
+ </div>
1064
+ <div class="comparison">
1065
+ <table>
1066
+ <thead>
1067
+ <tr><th>File</th><th>Purpose</th></tr>
1068
+ </thead>
1069
+ <tbody>
1070
+ <tr><td>SOUL.md</td><td>Personality and behavior</td></tr>
1071
+ <tr><td>IDENTITY.md</td><td>Name, avatar, style</td></tr>
1072
+ <tr><td>USER.md</td><td>Info about the user</td></tr>
1073
+ <tr><td>MEMORY.md</td><td>Persistent memory across sessions</td></tr>
1074
+ <tr><td>TOOLS.md</td><td>Tool usage notes and tips</td></tr>
1075
+ <tr><td>HEARTBEAT.md</td><td>Tasks to check during heartbeat</td></tr>
1076
+ <tr><td>BOOT.md</td><td>Startup instructions</td></tr>
1077
+ <tr><td>AGENTS.md</td><td>Conventions and guidelines</td></tr>
1078
+ </tbody>
1079
+ </table>
1080
+ </div>
1081
+ </section>
1082
+
1083
+ <div class="glow-divider"></div>
1084
+
1085
+ <!-- QUICKSTART -->
1086
+ <section id="quickstart">
1087
+ <div class="section-center">
1088
+ <div class="section-label">Get Started</div>
1089
+ <h2 class="section-title">Up and running in minutes</h2>
1090
+ <p class="section-desc">Clone, configure, build, and launch.</p>
1091
+ </div>
1092
+ <div class="quickstart-box">
1093
+ <pre><span class="comment"># Clone and install</span>
1094
+ <span class="cmd">git clone</span> https://github.com/HybridAIOne/hybridclaw.git
1095
+ <span class="cmd">cd</span> hybridclaw
1096
+ <span class="cmd">npm install</span>
1097
+ <span class="cmd">cd</span> container && <span class="cmd">npm install</span> && <span class="cmd">cd</span> ..
1098
+ <span class="cmd">npm link</span>
1099
+
1100
+ <span class="comment"># Run onboarding (accept SECURITY.md trust model, create config.json, set API key)</span>
1101
+ <span class="cmd">hybridclaw</span> <span class="flag">onboarding</span>
1102
+
1103
+ <span class="comment"># Start the gateway (core runtime)</span>
1104
+ <span class="cmd">hybridclaw</span> <span class="flag">gateway</span>
1105
+
1106
+ <span class="comment"># Terminal client (optional, in another terminal)</span>
1107
+ <span class="cmd">hybridclaw</span> <span class="flag">tui</span>
1108
+
1109
+ <span class="comment"># Open the technical docs section for architecture details</span></pre>
1110
+ </div>
1111
+ </section>
1112
+
1113
+ <div class="glow-divider"></div>
1114
+
1115
+ <!-- COMMANDS -->
1116
+ <section>
1117
+ <div class="section-center">
1118
+ <div class="section-label">Commands</div>
1119
+ <h2 class="section-title">Full command reference</h2>
1120
+ <p class="section-desc">Manage bots, models, sessions, schedules, and diagnostics &mdash; all from Discord or the TUI.</p>
1121
+ </div>
1122
+ <div class="features-grid">
1123
+ <div class="feature-card">
1124
+ <h3 style="color: var(--accent-1);">Bot Management</h3>
1125
+ <p><code>bot list</code> &middot; <code>bot set</code> &middot; <code>bot info</code><br>List available HybridAI bots, assign one to a channel, or view the current config.</p>
1126
+ </div>
1127
+ <div class="feature-card">
1128
+ <h3 style="color: var(--accent-1);">Model Control</h3>
1129
+ <p><code>model list</code> &middot; <code>model set</code> &middot; <code>model info</code><br>Switch models per channel. Toggle RAG on or off with <code>rag on/off</code>.</p>
1130
+ </div>
1131
+ <div class="feature-card">
1132
+ <h3 style="color: var(--accent-1);">Scheduling</h3>
1133
+ <p><code>schedule add</code> &middot; <code>schedule list</code> &middot; <code>schedule remove</code> &middot; <code>schedule toggle</code><br>Cron, one-shot, or interval tasks.</p>
1134
+ </div>
1135
+ <div class="feature-card">
1136
+ <h3 style="color: var(--accent-1);">Session &amp; Diagnostics</h3>
1137
+ <p><code>clear</code> &middot; <code>status</code> &middot; <code>sessions</code> &middot; <code>audit</code><br>Clear history, view uptime, list sessions, check audit logs.</p>
1138
+ </div>
1139
+ </div>
1140
+ </section>
1141
+
1142
+ <div class="glow-divider"></div>
1143
+
1144
+ <!-- FAQ -->
1145
+ <section id="faq">
1146
+ <div class="section-center">
1147
+ <div class="section-label">FAQ</div>
1148
+ <h2 class="section-title">Common questions</h2>
1149
+ </div>
1150
+ <div class="faq-list">
1151
+ <div class="faq-item">
1152
+ <div class="faq-q">Why does onboarding ask me to accept SECURITY.md?</div>
1153
+ <div class="faq-a">HybridClaw enforces explicit trust-model acceptance before runtime starts. Acceptance is recorded in <code>config.json</code> with policy version and timestamp so operators can prove security acknowledgement.</div>
1154
+ </div>
1155
+ <div class="faq-item">
1156
+ <div class="faq-q">Do I still configure everything through .env?</div>
1157
+ <div class="faq-a">No. Runtime behavior now lives in typed <code>config.json</code> (with defaults, validation, and hot reload). Keep <code>.env</code> for secrets like API tokens and credentials.</div>
1158
+ </div>
1159
+ <div class="faq-item">
1160
+ <div class="faq-q">Is it safe to let the agent run shell commands?</div>
1161
+ <div class="faq-a">Yes. All tools execute inside ephemeral Docker containers with read-only filesystems, memory caps, and a deny-list of 28+ dangerous command patterns. The host machine is never exposed.</div>
1162
+ </div>
1163
+ <div class="faq-item">
1164
+ <div class="faq-q">Can I use it without Discord?</div>
1165
+ <div class="faq-a">Absolutely. Run <code>hybridclaw tui</code> for the terminal UI. The same assistant behavior and context model is shared across supported interfaces.</div>
1166
+ </div>
1167
+ <div class="faq-item">
1168
+ <div class="faq-q">What is the heartbeat system?</div>
1169
+ <div class="faq-a">A configurable periodic poll (default every 30 minutes) where the agent wakes up, checks its HEARTBEAT.md file for tasks, and proactively reaches out if something needs attention. Silent acknowledgments are discarded to avoid noise.</div>
1170
+ </div>
1171
+ <div class="faq-item">
1172
+ <div class="faq-q">Can different Discord channels use different bots?</div>
1173
+ <div class="faq-a">Yes. Each channel can be independently configured with its own HybridAI chatbot, model, and RAG setting using the <code>bot set</code> and <code>model set</code> commands.</div>
1174
+ </div>
1175
+ <div class="faq-item">
1176
+ <div class="faq-q">How does scheduling work?</div>
1177
+ <div class="faq-a">Three modes: cron expressions for recurring tasks, ISO-8601 timestamps for one-shot execution, and simple intervals (minimum 10 seconds). All tasks persist in SQLite and one-shot tasks auto-delete after running.</div>
1178
+ </div>
1179
+ <div class="faq-item">
1180
+ <div class="faq-q">What is HybridAI?</div>
1181
+ <div class="faq-a">HybridAI is the bot platform that powers HybridClaw. It provides managed chatbots with document knowledge bases, retrieval-augmented generation (RAG), and multi-model support through an OpenAI-compatible API. You create and configure bots on the HybridAI platform, then connect them to HybridClaw.</div>
1182
+ </div>
1183
+ <div class="faq-item">
1184
+ <div class="faq-q">What AI models does it support?</div>
1185
+ <div class="faq-a">HybridClaw works with any model available through the HybridAI API. You can list available models with <code>model list</code> and switch per channel at any time.</div>
1186
+ </div>
1187
+ <div class="faq-item">
1188
+ <div class="faq-q">Does the agent remember things between conversations?</div>
1189
+ <div class="faq-a">Yes. The agent writes daily memory files (<code>memory/YYYY-MM-DD.md</code>) and curates long-term insights into <code>MEMORY.md</code>. Before session compaction, a dedicated flush turn ensures durable notes are persisted. These files plus <code>SOUL.md</code> are injected into every request, giving the agent continuous, growing context.</div>
1190
+ </div>
1191
+ <div class="faq-item">
1192
+ <div class="faq-q">Can I use skills from CLAUDE.md or OpenClaw?</div>
1193
+ <div class="faq-a">Yes. HybridClaw uses the same SKILL.md format with YAML frontmatter, so skills written for CLAUDE.md or OpenClaw work out of the box. Drop them into <code>skills/</code> or your agent workspace and they're available immediately.</div>
1194
+ </div>
1195
+ </div>
1196
+ </section>
1197
+
1198
+ <!-- FOOTER -->
1199
+ <footer>
1200
+ <div class="footer-inner">
1201
+ <div class="footer-links">
1202
+ <a href="https://github.com/HybridAIOne/hybridclaw">GitHub</a>
1203
+ <a href="#features">Features</a>
1204
+ <a href="#architecture">Architecture</a>
1205
+ <a href="#quickstart">Get Started</a>
1206
+ <a href="#faq">FAQ</a>
1207
+ </div>
1208
+ <div class="footer-copy">Built with <a href="https://hybridai.one/" style="color: var(--accent-1);">HybridAI</a> &middot; MIT License</div>
1209
+ </div>
1210
+ </footer>
1211
+
1212
+ </body>
1213
+ </html>