@hybridaione/hybridclaw 0.9.8 → 0.11.0

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 (302) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/README.md +159 -94
  3. package/config.example.json +4 -0
  4. package/console/dist/assets/index-DYNzA7tN.js +16 -0
  5. package/console/dist/assets/index-VlYB7ecI.css +1 -0
  6. package/console/dist/assets/{terminal-CTA4H1Ek.js → terminal-BhH2ER7g.js} +2 -2
  7. package/console/dist/index.html +6 -2
  8. package/console/package.json +3 -0
  9. package/container/dist/approval-policy.js +108 -37
  10. package/container/dist/approval-policy.js.map +1 -1
  11. package/container/dist/browser-tools.js +19 -4
  12. package/container/dist/browser-tools.js.map +1 -1
  13. package/container/dist/index.js +2 -0
  14. package/container/dist/index.js.map +1 -1
  15. package/container/dist/providers/local-openai-compat.js +6 -2
  16. package/container/dist/providers/local-openai-compat.js.map +1 -1
  17. package/container/dist/providers/provider-ids.js +29 -0
  18. package/container/dist/providers/provider-ids.js.map +1 -0
  19. package/container/dist/providers/router.js +4 -15
  20. package/container/dist/providers/router.js.map +1 -1
  21. package/container/dist/providers/shared.js +3 -12
  22. package/container/dist/providers/shared.js.map +1 -1
  23. package/container/dist/tools.js +123 -0
  24. package/container/dist/tools.js.map +1 -1
  25. package/container/dist/types.js.map +1 -1
  26. package/container/package-lock.json +2 -2
  27. package/container/package.json +1 -1
  28. package/container/shared/model-names.js +1 -0
  29. package/container/src/approval-policy.ts +137 -44
  30. package/container/src/browser-tools.ts +20 -4
  31. package/container/src/index.ts +4 -0
  32. package/container/src/providers/local-openai-compat.ts +9 -2
  33. package/container/src/providers/provider-ids.ts +43 -0
  34. package/container/src/providers/router.ts +4 -21
  35. package/container/src/providers/shared.ts +4 -24
  36. package/container/src/tools.ts +147 -0
  37. package/container/src/types.ts +5 -0
  38. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  39. package/dist/agent/prompt-hooks.js +2 -0
  40. package/dist/agent/prompt-hooks.js.map +1 -1
  41. package/dist/agent/tool-summary.js +1 -1
  42. package/dist/agent/tool-summary.js.map +1 -1
  43. package/dist/agents/agent-registry.d.ts.map +1 -1
  44. package/dist/agents/agent-registry.js +1 -0
  45. package/dist/agents/agent-registry.js.map +1 -1
  46. package/dist/agents/claw-archive.d.ts.map +1 -1
  47. package/dist/agents/claw-archive.js +9 -3
  48. package/dist/agents/claw-archive.js.map +1 -1
  49. package/dist/approval-commands.d.ts +6 -0
  50. package/dist/approval-commands.d.ts.map +1 -0
  51. package/dist/approval-commands.js +18 -0
  52. package/dist/approval-commands.js.map +1 -0
  53. package/dist/audit/audit-events.d.ts.map +1 -1
  54. package/dist/audit/audit-events.js +2 -0
  55. package/dist/audit/audit-events.js.map +1 -1
  56. package/dist/auth/hybridai-auth.d.ts.map +1 -1
  57. package/dist/auth/hybridai-auth.js +14 -7
  58. package/dist/auth/hybridai-auth.js.map +1 -1
  59. package/dist/channels/discord/approval-buttons.d.ts.map +1 -1
  60. package/dist/channels/discord/approval-buttons.js +4 -1
  61. package/dist/channels/discord/approval-buttons.js.map +1 -1
  62. package/dist/cli/agent-migration-command.d.ts +4 -0
  63. package/dist/cli/agent-migration-command.d.ts.map +1 -0
  64. package/dist/cli/agent-migration-command.js +415 -0
  65. package/dist/cli/agent-migration-command.js.map +1 -0
  66. package/dist/cli/auth-command.d.ts.map +1 -1
  67. package/dist/cli/auth-command.js +55 -55
  68. package/dist/cli/auth-command.js.map +1 -1
  69. package/dist/cli/channels-command.d.ts.map +1 -1
  70. package/dist/cli/channels-command.js +20 -4
  71. package/dist/cli/channels-command.js.map +1 -1
  72. package/dist/cli/help.d.ts +3 -0
  73. package/dist/cli/help.d.ts.map +1 -1
  74. package/dist/cli/help.js +97 -16
  75. package/dist/cli/help.js.map +1 -1
  76. package/dist/cli.d.ts.map +1 -1
  77. package/dist/cli.js +51 -9
  78. package/dist/cli.js.map +1 -1
  79. package/dist/command-registry.d.ts.map +1 -1
  80. package/dist/command-registry.js +87 -0
  81. package/dist/command-registry.js.map +1 -1
  82. package/dist/config/config.d.ts +2 -0
  83. package/dist/config/config.d.ts.map +1 -1
  84. package/dist/config/config.js +41 -16
  85. package/dist/config/config.js.map +1 -1
  86. package/dist/config/runtime-config-revisions.d.ts.map +1 -1
  87. package/dist/config/runtime-config-revisions.js +54 -50
  88. package/dist/config/runtime-config-revisions.js.map +1 -1
  89. package/dist/config/runtime-config.d.ts +22 -1
  90. package/dist/config/runtime-config.d.ts.map +1 -1
  91. package/dist/config/runtime-config.js +220 -27
  92. package/dist/config/runtime-config.js.map +1 -1
  93. package/dist/doctor/checks/credentials.d.ts.map +1 -1
  94. package/dist/doctor/checks/credentials.js +15 -3
  95. package/dist/doctor/checks/credentials.js.map +1 -1
  96. package/dist/doctor/checks/local-backends.d.ts.map +1 -1
  97. package/dist/doctor/checks/local-backends.js +5 -1
  98. package/dist/doctor/checks/local-backends.js.map +1 -1
  99. package/dist/gateway/admin-terminal-protocol.d.ts +3 -0
  100. package/dist/gateway/admin-terminal-protocol.d.ts.map +1 -1
  101. package/dist/gateway/admin-terminal.d.ts +2 -0
  102. package/dist/gateway/admin-terminal.d.ts.map +1 -1
  103. package/dist/gateway/admin-terminal.js +20 -0
  104. package/dist/gateway/admin-terminal.js.map +1 -1
  105. package/dist/gateway/approval-confirmation.d.ts.map +1 -1
  106. package/dist/gateway/approval-confirmation.js +6 -0
  107. package/dist/gateway/approval-confirmation.js.map +1 -1
  108. package/dist/gateway/chat-approval.d.ts.map +1 -1
  109. package/dist/gateway/chat-approval.js +7 -0
  110. package/dist/gateway/chat-approval.js.map +1 -1
  111. package/dist/gateway/fullauto-runtime.d.ts +76 -0
  112. package/dist/gateway/fullauto-runtime.d.ts.map +1 -0
  113. package/dist/gateway/fullauto-runtime.js +204 -0
  114. package/dist/gateway/fullauto-runtime.js.map +1 -0
  115. package/dist/gateway/fullauto-workspace.d.ts +15 -0
  116. package/dist/gateway/fullauto-workspace.d.ts.map +1 -0
  117. package/dist/gateway/fullauto-workspace.js +111 -0
  118. package/dist/gateway/fullauto-workspace.js.map +1 -0
  119. package/dist/gateway/fullauto.d.ts +2 -76
  120. package/dist/gateway/fullauto.d.ts.map +1 -1
  121. package/dist/gateway/fullauto.js +8 -205
  122. package/dist/gateway/fullauto.js.map +1 -1
  123. package/dist/gateway/gateway-agent-cards.js +1 -1
  124. package/dist/gateway/gateway-agent-cards.js.map +1 -1
  125. package/dist/gateway/gateway-chat-service.d.ts +3 -0
  126. package/dist/gateway/gateway-chat-service.d.ts.map +1 -0
  127. package/dist/gateway/gateway-chat-service.js +1015 -0
  128. package/dist/gateway/gateway-chat-service.js.map +1 -0
  129. package/dist/gateway/gateway-http-server.d.ts +5 -1
  130. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  131. package/dist/gateway/gateway-http-server.js +463 -7
  132. package/dist/gateway/gateway-http-server.js.map +1 -1
  133. package/dist/gateway/gateway-plugin-runtime.d.ts +11 -0
  134. package/dist/gateway/gateway-plugin-runtime.d.ts.map +1 -0
  135. package/dist/gateway/gateway-plugin-runtime.js +21 -0
  136. package/dist/gateway/gateway-plugin-runtime.js.map +1 -0
  137. package/dist/gateway/gateway-plugin-service.d.ts +2 -13
  138. package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
  139. package/dist/gateway/gateway-plugin-service.js +4 -20
  140. package/dist/gateway/gateway-plugin-service.js.map +1 -1
  141. package/dist/gateway/gateway-scheduled-task-service.d.ts +20 -0
  142. package/dist/gateway/gateway-scheduled-task-service.d.ts.map +1 -0
  143. package/dist/gateway/gateway-scheduled-task-service.js +415 -0
  144. package/dist/gateway/gateway-scheduled-task-service.js.map +1 -0
  145. package/dist/gateway/gateway-service.d.ts +119 -21
  146. package/dist/gateway/gateway-service.d.ts.map +1 -1
  147. package/dist/gateway/gateway-service.js +613 -1478
  148. package/dist/gateway/gateway-service.js.map +1 -1
  149. package/dist/gateway/gateway-types.d.ts +5 -4
  150. package/dist/gateway/gateway-types.d.ts.map +1 -1
  151. package/dist/gateway/gateway-types.js.map +1 -1
  152. package/dist/gateway/gateway.js +90 -19
  153. package/dist/gateway/gateway.js.map +1 -1
  154. package/dist/gateway/openai-compatible-request.d.ts +27 -0
  155. package/dist/gateway/openai-compatible-request.d.ts.map +1 -0
  156. package/dist/gateway/openai-compatible-request.js +414 -0
  157. package/dist/gateway/openai-compatible-request.js.map +1 -0
  158. package/dist/gateway/openai-compatible-response.d.ts +57 -0
  159. package/dist/gateway/openai-compatible-response.d.ts.map +1 -0
  160. package/dist/gateway/openai-compatible-response.js +141 -0
  161. package/dist/gateway/openai-compatible-response.js.map +1 -0
  162. package/dist/gateway/openai-compatible.d.ts +4 -0
  163. package/dist/gateway/openai-compatible.d.ts.map +1 -0
  164. package/dist/gateway/openai-compatible.js +193 -0
  165. package/dist/gateway/openai-compatible.js.map +1 -0
  166. package/dist/gateway/text-channel-commands.d.ts.map +1 -1
  167. package/dist/gateway/text-channel-commands.js +23 -8
  168. package/dist/gateway/text-channel-commands.js.map +1 -1
  169. package/dist/infra/container-runner.d.ts.map +1 -1
  170. package/dist/infra/container-runner.js +1 -0
  171. package/dist/infra/container-runner.js.map +1 -1
  172. package/dist/infra/container-setup.d.ts.map +1 -1
  173. package/dist/infra/container-setup.js +14 -5
  174. package/dist/infra/container-setup.js.map +1 -1
  175. package/dist/infra/host-runner.d.ts.map +1 -1
  176. package/dist/infra/host-runner.js +19 -0
  177. package/dist/infra/host-runner.js.map +1 -1
  178. package/dist/media/audio-transcription-backends.d.ts.map +1 -1
  179. package/dist/media/audio-transcription-backends.js +17 -5
  180. package/dist/media/audio-transcription-backends.js.map +1 -1
  181. package/dist/media/pdf-context.js +1 -1
  182. package/dist/media/pdf-context.js.map +1 -1
  183. package/dist/memory/db.d.ts.map +1 -1
  184. package/dist/memory/db.js +14 -3
  185. package/dist/memory/db.js.map +1 -1
  186. package/dist/migration/agent-home-migration.d.ts +35 -0
  187. package/dist/migration/agent-home-migration.d.ts.map +1 -0
  188. package/dist/migration/agent-home-migration.js +1585 -0
  189. package/dist/migration/agent-home-migration.js.map +1 -0
  190. package/dist/model-selection.d.ts +7 -0
  191. package/dist/model-selection.d.ts.map +1 -1
  192. package/dist/model-selection.js +10 -0
  193. package/dist/model-selection.js.map +1 -1
  194. package/dist/onboarding.d.ts +1 -0
  195. package/dist/onboarding.d.ts.map +1 -1
  196. package/dist/onboarding.js +186 -34
  197. package/dist/onboarding.js.map +1 -1
  198. package/dist/providers/auxiliary.d.ts +2 -1
  199. package/dist/providers/auxiliary.d.ts.map +1 -1
  200. package/dist/providers/auxiliary.js +1 -0
  201. package/dist/providers/auxiliary.js.map +1 -1
  202. package/dist/providers/factory.d.ts.map +1 -1
  203. package/dist/providers/factory.js +3 -2
  204. package/dist/providers/factory.js.map +1 -1
  205. package/dist/providers/local-discovery.d.ts.map +1 -1
  206. package/dist/providers/local-discovery.js +13 -3
  207. package/dist/providers/local-discovery.js.map +1 -1
  208. package/dist/providers/local-health.d.ts +1 -1
  209. package/dist/providers/local-health.d.ts.map +1 -1
  210. package/dist/providers/local-health.js +8 -2
  211. package/dist/providers/local-health.js.map +1 -1
  212. package/dist/providers/local-openai-compat.d.ts +1 -0
  213. package/dist/providers/local-openai-compat.d.ts.map +1 -1
  214. package/dist/providers/local-openai-compat.js +5 -1
  215. package/dist/providers/local-openai-compat.js.map +1 -1
  216. package/dist/providers/local-types.d.ts +3 -1
  217. package/dist/providers/local-types.d.ts.map +1 -1
  218. package/dist/providers/model-catalog.d.ts +2 -1
  219. package/dist/providers/model-catalog.d.ts.map +1 -1
  220. package/dist/providers/model-catalog.js +5 -9
  221. package/dist/providers/model-catalog.js.map +1 -1
  222. package/dist/providers/provider-ids.d.ts +13 -0
  223. package/dist/providers/provider-ids.d.ts.map +1 -0
  224. package/dist/providers/provider-ids.js +40 -0
  225. package/dist/providers/provider-ids.js.map +1 -0
  226. package/dist/providers/task-routing.d.ts +2 -1
  227. package/dist/providers/task-routing.d.ts.map +1 -1
  228. package/dist/providers/task-routing.js +5 -9
  229. package/dist/providers/task-routing.js.map +1 -1
  230. package/dist/providers/types.d.ts +2 -2
  231. package/dist/providers/types.d.ts.map +1 -1
  232. package/dist/security/runtime-secrets-bootstrap.d.ts +2 -0
  233. package/dist/security/runtime-secrets-bootstrap.d.ts.map +1 -0
  234. package/dist/security/runtime-secrets-bootstrap.js +6 -0
  235. package/dist/security/runtime-secrets-bootstrap.js.map +1 -0
  236. package/dist/security/runtime-secrets-migration.d.ts +13 -0
  237. package/dist/security/runtime-secrets-migration.d.ts.map +1 -0
  238. package/dist/security/runtime-secrets-migration.js +45 -0
  239. package/dist/security/runtime-secrets-migration.js.map +1 -0
  240. package/dist/security/runtime-secrets.d.ts +12 -1
  241. package/dist/security/runtime-secrets.d.ts.map +1 -1
  242. package/dist/security/runtime-secrets.js +513 -55
  243. package/dist/security/runtime-secrets.js.map +1 -1
  244. package/dist/security/secret-refs.d.ts +27 -0
  245. package/dist/security/secret-refs.d.ts.map +1 -0
  246. package/dist/security/secret-refs.js +85 -0
  247. package/dist/security/secret-refs.js.map +1 -0
  248. package/dist/skills/skills-import-hubs.d.ts.map +1 -1
  249. package/dist/skills/skills-import-hubs.js +71 -7
  250. package/dist/skills/skills-import-hubs.js.map +1 -1
  251. package/dist/tui-approval.d.ts +1 -0
  252. package/dist/tui-approval.d.ts.map +1 -1
  253. package/dist/tui-approval.js +2 -1
  254. package/dist/tui-approval.js.map +1 -1
  255. package/dist/tui-banner.d.ts.map +1 -1
  256. package/dist/tui-banner.js +3 -0
  257. package/dist/tui-banner.js.map +1 -1
  258. package/dist/tui-slash-command.d.ts.map +1 -1
  259. package/dist/tui-slash-command.js +7 -3
  260. package/dist/tui-slash-command.js.map +1 -1
  261. package/dist/tui-slash-menu.d.ts.map +1 -1
  262. package/dist/tui-slash-menu.js +26 -4
  263. package/dist/tui-slash-menu.js.map +1 -1
  264. package/dist/tui.d.ts.map +1 -1
  265. package/dist/tui.js +56 -32
  266. package/dist/tui.js.map +1 -1
  267. package/dist/types/execution.d.ts +3 -1
  268. package/dist/types/execution.d.ts.map +1 -1
  269. package/dist/types/models.d.ts +2 -1
  270. package/dist/types/models.d.ts.map +1 -1
  271. package/dist/types/models.js.map +1 -1
  272. package/dist/update.d.ts.map +1 -1
  273. package/dist/update.js +2 -0
  274. package/dist/update.js.map +1 -1
  275. package/dist/utils/approval-text.d.ts +2 -0
  276. package/dist/utils/approval-text.d.ts.map +1 -0
  277. package/dist/utils/approval-text.js +13 -0
  278. package/dist/utils/approval-text.js.map +1 -0
  279. package/docs/404.html +1 -1
  280. package/docs/agents.html +4 -0
  281. package/docs/chat.html +871 -37
  282. package/docs/development/README.md +12 -14
  283. package/docs/development/agents.md +1 -1
  284. package/docs/development/getting-started/README.md +2 -1
  285. package/docs/development/getting-started/authentication.md +27 -3
  286. package/docs/development/getting-started/channels.md +401 -0
  287. package/docs/development/getting-started/installation.md +2 -2
  288. package/docs/development/getting-started/quickstart.md +10 -2
  289. package/docs/development/guides/local-providers.md +7 -1
  290. package/docs/development/internals/runtime.md +15 -3
  291. package/docs/development/reference/commands.md +32 -3
  292. package/docs/development/reference/configuration.md +15 -2
  293. package/docs/development/reference/faq.md +24 -2
  294. package/docs/docs/index.html +1 -1
  295. package/docs/imessage.md +8 -8
  296. package/docs/index.html +46 -23
  297. package/docs/msteams.md +1 -1
  298. package/docs/static/docs.js +12 -2
  299. package/package.json +10 -2
  300. package/console/dist/assets/index-BriItkGy.css +0 -1
  301. package/console/dist/assets/index-CW6-V7lC.js +0 -16
  302. package/docs/development/getting-started/msteams.md +0 -30
package/CHANGELOG.md CHANGED
@@ -2,6 +2,108 @@
2
2
 
3
3
  ## [Coming up]
4
4
 
5
+ ## [0.11.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.11.0)
6
+
7
+ ### Added
8
+
9
+ - **OpenAI-compatible gateway API**: Added loopback-scoped `/v1/models` and
10
+ `/v1/chat/completions` endpoints so local tools can talk to HybridClaw
11
+ through an OpenAI-compatible surface with streaming responses and usage
12
+ reporting.
13
+ - **Workspace approval allowlist controls**: Added a workspace-scoped approval
14
+ allowlist plus `/approve always` handling so operators can persist trusted
15
+ approvals more deliberately across chat, TUI, and gateway flows.
16
+ - **Dark-mode console and richer web controls**: Added console dark mode, a
17
+ reusable dropdown component, extracted icon set, and slash-command
18
+ suggestions in the web chat UI for faster local operator workflows.
19
+ - **Channel setup how-to documentation**: Added step-by-step channel setup
20
+ guides for Discord, email, WhatsApp, iMessage, and Microsoft Teams in the
21
+ maintainer docs.
22
+ - **Release publishing automation**: Added npm publish-on-release automation
23
+ and switched trusted publishing over to npm OIDC for release workflows.
24
+
25
+ ### Changed
26
+
27
+ - **Gateway lifecycle behavior**: Improved gateway start, restart, and
28
+ container replacement flow so runtime refreshes are cleaner, container swap
29
+ logging is less noisy, and packaged installs prefer public runtime image
30
+ pulls.
31
+ - **Approval and web chat UX**: Tightened approval wording, aliases, and
32
+ replay handling while improving mobile chat layout, approval interactions,
33
+ ordered-list rendering, and keyboard accessibility in the web surfaces.
34
+ - **ClawHub and operator docs surfaces**: Added `CLAWHUB_API_BASE_URL`
35
+ overrides for skill imports, refreshed docs and setup guidance, and aligned
36
+ console dark-theme styling with the public documentation shell.
37
+
38
+ ### Fixed
39
+
40
+ - **Gateway startup and update guidance**: Fixed startup diagnostics, provider
41
+ auth/model guidance, and post-update restart reminders so operators get more
42
+ accurate local recovery steps.
43
+ - **Browser and host runtime cleanup**: Fixed browser daemon shutdown handling
44
+ and host-browser runtime availability so cleanup failures are treated as
45
+ best-effort instead of breaking the session.
46
+ - **Runtime config and health edge cases**: Fixed config revision
47
+ synchronization, gateway health payload regressions, favicon fallbacks, and
48
+ skill import retries under HTTP 429/503 responses.
49
+
50
+ ## [0.10.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.10.0)
51
+
52
+ ### Added
53
+
54
+ - **OpenClaw and Hermes Agent migration commands**: Added
55
+ `hybridclaw migrate openclaw` and `hybridclaw migrate hermes` to import
56
+ compatible workspace files, agent/home config, model settings, and optional
57
+ secrets into a target HybridClaw agent with `--dry-run`, `--overwrite`,
58
+ `--agent`, and per-run migration reports under `~/.hybridclaw/migration/`.
59
+ - **Encrypted runtime secret store**: Runtime credentials in
60
+ `~/.hybridclaw/credentials.json` now use per-secret AES-256-GCM encryption
61
+ with owner-only permissions, separate master-key sourcing via
62
+ `HYBRIDCLAW_MASTER_KEY`, `/run/secrets/hybridclaw_master_key`, or a local
63
+ owner-only `credentials.master.key`, and automatic migration from legacy
64
+ plaintext secret files.
65
+ - **SecretRefs and named secrets**: Selected runtime config fields can now
66
+ resolve secret-bearing values from `env` or encrypted `store` references,
67
+ local TUI and web sessions expose `/secret list|set|unset|show|route ...`,
68
+ and generic named secrets can be stored without adding new top-level env
69
+ variables.
70
+ - **Secret-backed HTTP requests**: Added the `http_request` tool plus
71
+ gateway-side auth injection for direct API calls. Requests can use
72
+ `bearerSecretName`, `secretHeaders`, strict `<secret:NAME>` placeholders, or
73
+ URL-based auth rules so models can call authenticated APIs without seeing the
74
+ plaintext credential.
75
+ - **`llama.cpp` local backend**: Added `llamacpp` as a first-class local
76
+ provider across `auth login local`, provider discovery, reachability checks,
77
+ model selection surfaces, doctor output, and container/runtime routing.
78
+
79
+ ### Changed
80
+
81
+ - **Local-provider onboarding flow**: `hybridclaw auth login local` now accepts
82
+ an optional model id so operators can enable LM Studio, llama.cpp, Ollama,
83
+ or vLLM first and choose a model later, and interactive onboarding can skip
84
+ remote-provider auth entirely when the planned setup is local-only.
85
+ - **Secret access model**: Runtime secret reads now prefer explicit environment
86
+ overrides and otherwise resolve secrets from the encrypted store on demand
87
+ instead of broadly mirroring decrypted values into ambient `process.env` at
88
+ startup.
89
+ - **Secret persistence boundaries**: Reserved non-secret runtime config names
90
+ such as `CONTAINER_IMAGE`, `CONTAINER_MEMORY`, `DISCORD_PREFIX`, `DB_PATH`,
91
+ and related operational settings are now excluded from encrypted secret
92
+ migration and rejected by the local `/secret` command surface.
93
+ - **Security documentation and comparison copy**: Updated the README, public
94
+ docs, comparison tables, and runtime/internal docs to reflect encrypted
95
+ secret storage, master-key separation, SecretRef-backed API auth injection,
96
+ trust-first onboarding, and current runtime security principles.
97
+
98
+ ### Fixed
99
+
100
+ - **Startup onboarding loops**: Gateway and TUI startup no longer keep
101
+ re-triggering onboarding once trust acceptance, local-provider setup, or
102
+ existing credentials already satisfy the runtime prerequisites.
103
+ - **TUI model guidance for local backends**: Model-selection prompts now give
104
+ clearer next steps when a local backend is enabled without a selected model,
105
+ reducing dead-end startup guidance around local-only setups.
106
+
5
107
  ## [0.9.8](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.8)
6
108
 
7
109
  ### Added
package/README.md CHANGED
@@ -9,18 +9,88 @@
9
9
  [![Powered by HybridAI](https://img.shields.io/badge/powered%20by-HybridAI-blueviolet)](https://hybridai.one)
10
10
  [![Discord](https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/jsVW4vJw27)
11
11
 
12
- <img width="540" height="511" alt="image" src="docs/hero.png" />
12
+ <img width="540" height="511" alt="HybridClaw - One AI brain across every channel" src="docs/hero.png" />
13
13
 
14
- Personal AI assistant for Discord, Microsoft Teams, iMessage, WhatsApp, email,
15
- web, and terminal, powered by [HybridAI](https://hybridai.one).
14
+ **One AI brain across every channel.**
15
+ Discord Teams WhatsApp → iMessage → Email → Web → Terminal.
16
+ Same memory, same skills, same intelligence — fully local, encrypted, and GDPR-compliant powered by [HybridAI](https://hybridai.one).
17
+
18
+ > “Finally an assistant that actually follows you everywhere — without having to explain everything again every time.”
19
+
20
+ ## 🚀 Quick Start (2 minutes)
21
+
22
+ ```bash
23
+ # 1. Global installation
24
+ npm install -g @hybridaione/hybridclaw
25
+
26
+ # 2. Onboarding (sets up LLM, channels, secrets, everything)
27
+ hybridclaw onboarding
28
+
29
+ # 3. Start using it
30
+ hybridclaw gateway # Start the backend
31
+ hybridclaw tui # Terminal interface (optional)
32
+ ```
33
+
34
+ After that open:
35
+
36
+ Web Chat: http://127.0.0.1:9090/chat
37
+ Admin Console: http://127.0.0.1:9090/admin
38
+ Agent Dashboard: http://127.0.0.1:9090/agents
39
+
40
+ Requirement: Node.js 22 (Docker recommended for sandbox)
41
+
42
+ Release notes live in [CHANGELOG.md](./CHANGELOG.md), and the browsable
43
+ operator and maintainer manual lives under
44
+ [docs/development/README.md](./docs/development/README.md).
45
+
46
+ ## Coming from OpenClaw or Hermes?
47
+
48
+ ```bash
49
+ # Migration in under 2 minutes — preview first
50
+ hybridclaw migrate openclaw --preview
51
+ hybridclaw migrate openclaw # real migration
52
+ ```
53
+
54
+ All skills, memory, config and secrets are transferred. Zero data loss.
55
+
56
+ ## See it in Action
57
+
58
+ Once the gateway is running, open HybridClaw locally:
59
+
60
+ - Web Chat: `http://127.0.0.1:9090/chat`
61
+ - Admin Console: `http://127.0.0.1:9090/admin`
62
+ - Agent Dashboard: `http://127.0.0.1:9090/agents`
63
+
64
+ ## Why HybridClaw instead of OpenClaw, Hermes Agent, LangChain, or n8n?
65
+
66
+ | Feature | HybridClaw | OpenClaw | Hermes Agent | LangChain | n8n |
67
+ | --- | --- | --- | --- | --- | --- |
68
+ | **One brain across channels** | ✅ Native (Discord, Teams, WhatsApp, iMessage, Email, Web, Terminal) | ✅ 20+ channels | ✅ 7 channels | ❌ Framework only | ⚠️ Via workflows (not native) |
69
+ | **Shared memory & context** | ✅ Persistent across all channels | ✅ Memory-wiki + embeddings | ✅ Self-improving + Honcho model | ✅ (you build it) | ✅ RAG / vector DBs |
70
+ | **Local LLM support** | ✅ Deep integration (Ollama, LM Studio, llama.cpp, vLLM) | ✅ Multiple providers | ✅ Ollama native | ✅ Excellent | ✅ Ollama + others |
71
+ | **Encrypted secrets + SecretRefs** | ✅ Full encrypted store + gateway injection | Partial | Partial | ❌ Manual | Partial |
72
+ | **GDPR / Enterprise-ready** | ✅ Audit trails, sandbox, approvals, config versioning | Limited | Limited | ❌ No | ✅ Strong (workflows) |
73
+ | **Portable `.claw` agent packages** | ✅ Snapshot + backup + install | ❌ | ❌ | ❌ | ❌ |
74
+ | **1-command migration** | ✅ From OpenClaw & Hermes | — | — | — | — |
75
+ | **Multiple UIs** | ✅ TUI + Web Chat + Admin Console + Agent Dashboard | ✅ TUI + WebChat + Control UI | ✅ Full TUI only | ❌ None | ✅ Visual workflow builder |
76
+ | **Self-improving / adaptive skills** | ✅ Adaptive skill loop + health | ✅ ClawHub skills | ✅ Strongest learning loop | ✅ (you code it) | ✅ Via AI nodes |
77
+ | **No-code workflow building** | ✅ CLI + skills + kanban | ⚠️ Skills + ClawHub | ⚠️ Skills Hub | ❌ Code-first | ✅ Best-in-class no-code |
78
+ | **Setup & onboarding** | ✅ `npm install -g` + `onboarding` (2 min) | ✅ Onboard CLI | ✅ One-line curl install | ❌ Requires coding | ✅ Visual + templates |
16
79
 
17
80
  HybridClaw keeps one assistant brain across team chat, inbox, browser, and
18
81
  document workflows with shared memory, approvals, scheduling, and bundled
19
82
  skills for office docs, GitHub, Notion, Stripe, WordPress, Google Workspace,
20
83
  and Apple apps.
84
+ Runtime secrets live in an encrypted local store with separate master-key
85
+ sourcing, SecretRefs can keep config values out of plaintext JSON, and
86
+ gateway-side auth injection lets the agent call authenticated APIs without
87
+ seeing the raw credential.
21
88
  Portable `.claw` packages can snapshot an agent workspace plus bundled skills
22
89
  and plugins for transfer or backup, and persistent browser profiles let the
23
90
  agent reuse authenticated web sessions for later browser automation.
91
+ OpenClaw and Hermes Agent homes can also be imported into HybridClaw agent
92
+ workspaces with migration commands that preview compatible files, config, and
93
+ optional secrets before writing anything.
24
94
  Local plugins can extend the gateway with typed manifests, plugin tools,
25
95
  memory layers, prompt hooks, lifecycle hooks, and fixed plugin-owned inbound
26
96
  webhook routes, including the installable QMD-backed memory layer shipped in
@@ -38,24 +108,6 @@ config changes auditable and reversible.
38
108
  For turn-level debugging, gateway start/restart can also persist best-effort
39
109
  redacted prompts, responses, and tool payloads with `--log-requests`.
40
110
 
41
- ## Install from npm
42
-
43
- ```bash
44
- npm install -g @hybridaione/hybridclaw
45
- hybridclaw onboarding
46
- ```
47
-
48
- Prerequisites: Node.js 22. Docker is recommended when you want the default
49
- container sandbox. The published install bootstraps the packaged container
50
- runtime dependencies during `npm install -g`.
51
- The current release tag is
52
- [v0.9.8](https://github.com/HybridAIOne/hybridclaw/releases/tag/v0.9.8).
53
- This release adds concierge routing, tracked config revisions, plugin inbound
54
- webhooks, expanded agent install sources, and the bundled `sokosumi` skill.
55
- Release notes live in [CHANGELOG.md](./CHANGELOG.md), and the browsable
56
- operator and maintainer manual lives under
57
- [docs/development/README.md](./docs/development/README.md).
58
-
59
111
  ## HybridAI Advantage
60
112
 
61
113
  - Security-focused foundation
@@ -74,56 +126,6 @@ operator and maintainer manual lives under
74
126
  - **Container** (Docker, ephemeral) — HybridAI API client, sandboxed tool executor, and preinstalled browser automation runtime with cursor-aware snapshots for JS-heavy custom UI
75
127
  - Communication via file-based IPC (input.json / output.json)
76
128
 
77
- ## Quick start
78
-
79
- ```bash
80
- # Install dependencies
81
- npm install
82
-
83
- # Run onboarding (also auto-runs on first `gateway`/`tui` start if API key is missing)
84
- hybridclaw onboarding
85
-
86
- # Onboarding flow:
87
- # 1) explicitly accept TRUST_MODEL.md (required)
88
- # 2) choose whether to create a new account
89
- # 3) open /register in browser (optional) and confirm in terminal
90
- # 4) open /login?next=/admin_api_keys in browser and get an API key
91
- # 5) paste API key (or URL containing it) back into the CLI
92
- # 6) choose the default bot (saved to ~/.hybridclaw/config.json) and save secrets to ~/.hybridclaw/credentials.json
93
-
94
- # Start gateway backend (default)
95
- hybridclaw gateway
96
-
97
- # Or run gateway in foreground in this terminal
98
- hybridclaw gateway start --foreground
99
-
100
- # For stdio MCP servers that rely on host tools like `docker` or `npx`
101
- hybridclaw gateway start --foreground --sandbox=host
102
-
103
- # If msteams.enabled=true and MSTEAMS_APP_PASSWORD is configured, gateway auto-connects to Microsoft Teams.
104
- # If DISCORD_TOKEN is set, gateway auto-connects to Discord.
105
- # If imessage.enabled=true, gateway auto-connects to iMessage using the configured backend.
106
- # If email.enabled=true and EMAIL_PASSWORD is configured, gateway auto-connects to Email.
107
- # If linked WhatsApp auth exists, gateway auto-connects to WhatsApp.
108
-
109
- # Start terminal adapter (optional, in a second terminal)
110
- hybridclaw tui
111
-
112
- # Web chat UI (built into gateway)
113
- # open http://127.0.0.1:9090/chat
114
-
115
- # Agent and session dashboard
116
- # open http://127.0.0.1:9090/agents
117
-
118
- # Embedded admin console
119
- # open http://127.0.0.1:9090/admin
120
- # Browser terminal page
121
- # open http://127.0.0.1:9090/admin/terminal
122
- # Includes Dashboard, Terminal, Gateway, Sessions, Jobs, Bindings, Models, Scheduler, MCP, Audit, Skills, Plugins, Tools, and Config
123
- # If WEB_API_TOKEN is unset, localhost access opens without a login prompt
124
- # If WEB_API_TOKEN is set, /chat, /agents, and /admin all prompt for the same token
125
- ```
126
-
127
129
  ## Authentication
128
130
 
129
131
  HybridClaw uses a unified provider setup surface:
@@ -135,6 +137,7 @@ hybridclaw auth login codex --import
135
137
  hybridclaw auth login openrouter anthropic/claude-sonnet-4 --api-key sk-or-...
136
138
  hybridclaw auth login mistral mistral-large-latest --api-key mistral_...
137
139
  hybridclaw auth login huggingface meta-llama/Llama-3.1-8B-Instruct --api-key hf_...
140
+ hybridclaw auth login local lmstudio --base-url http://127.0.0.1:1234
138
141
  hybridclaw auth login local ollama llama3.2
139
142
  hybridclaw auth login msteams --app-id 00000000-0000-0000-0000-000000000000 --tenant-id 11111111-1111-1111-1111-111111111111 --app-password secret
140
143
  hybridclaw auth status hybridai
@@ -163,40 +166,78 @@ hybridclaw local configure ollama llama3.2
163
166
  ```
164
167
 
165
168
  - `hybridclaw auth login` without a provider runs the normal onboarding flow.
166
- - `hybridclaw auth login hybridai` auto-selects browser login on local GUI machines and a manual/headless API-key flow on SSH, CI, and container shells. `--import` copies the current `HYBRIDAI_API_KEY` from your shell into `~/.hybridclaw/credentials.json`, and `--base-url` updates `hybridai.baseUrl` before login.
169
+ - `hybridclaw auth login hybridai` auto-selects browser login on local GUI machines and a manual/headless API-key flow on SSH, CI, and container shells. `--import` copies the current `HYBRIDAI_API_KEY` from your shell into the encrypted `~/.hybridclaw/credentials.json` store, and `--base-url` updates `hybridai.baseUrl` before login.
167
170
  - `hybridclaw auth login codex` auto-selects browser PKCE on local GUI machines and device code on headless or remote shells.
168
171
  - `hybridclaw auth login openrouter` accepts `--api-key`, falls back to `OPENROUTER_API_KEY`, or prompts you to paste the key, then enables the provider and can set the global default model.
169
172
  - `hybridclaw auth login mistral` accepts `--api-key`, falls back to `MISTRAL_API_KEY`, or prompts you to paste the key, then enables the provider and can set the global default model.
170
173
  - `hybridclaw auth login huggingface` accepts `--api-key`, falls back to `HF_TOKEN`, or prompts you to paste the token, then enables the provider and can set the global default model.
171
- - `hybridclaw auth login local` configures Ollama, LM Studio, or vLLM in `~/.hybridclaw/config.json`.
172
- - `hybridclaw auth login msteams` enables Microsoft Teams, stores `MSTEAMS_APP_PASSWORD` in `~/.hybridclaw/credentials.json`, and can prompt for the app id, app password, and optional tenant id.
174
+ - `hybridclaw auth login local` configures Ollama, LM Studio, llama.cpp, or vLLM in `~/.hybridclaw/config.json`.
175
+ - The local backend model id is optional. If omitted, HybridClaw enables the backend and you can choose a model later with `/model list <backend>`.
176
+ - Interactive onboarding can skip remote-provider auth entirely when you plan to run on a local backend.
177
+ - `hybridclaw auth login msteams` enables Microsoft Teams, stores `MSTEAMS_APP_PASSWORD` in the encrypted `~/.hybridclaw/credentials.json` store, and can prompt for the app id, app password, and optional tenant id.
173
178
  - `hybridclaw auth status hybridai` reports the local auth source, masked API key, active config file, base URL, and default model without printing the credentials file path.
174
179
  - `hybridclaw auth logout local` disables configured local backends and clears any saved vLLM API key.
175
180
  - `hybridclaw auth logout msteams` clears the stored Teams app password and disables the Teams integration in config.
176
181
  - `hybridclaw auth whatsapp reset` clears linked WhatsApp Web auth without starting a new pairing session.
177
- - HybridAI, OpenRouter, Mistral, Hugging Face, Discord, email, Teams, and BlueBubbles iMessage secrets are stored in `~/.hybridclaw/credentials.json`. Codex OAuth credentials are stored separately in `~/.hybridclaw/codex-auth.json`.
182
+ - HybridAI, OpenRouter, Mistral, Hugging Face, Discord, email, Teams, and BlueBubbles iMessage secrets are stored encrypted in `~/.hybridclaw/credentials.json`. The encryption key is sourced from `HYBRIDCLAW_MASTER_KEY`, `/run/secrets/hybridclaw_master_key`, or the local owner-only `~/.hybridclaw/credentials.master.key`. Codex OAuth credentials are stored separately in `~/.hybridclaw/codex-auth.json`.
183
+ - Local TUI and web sessions can also manage encrypted named secrets with `/secret list`, `/secret set <name> <value>`, `/secret unset <name>`, `/secret show <name>`, and `/secret route add <url-prefix> <secret-name> [header] [prefix|none]`.
178
184
  - Only one running HybridClaw process should own `~/.hybridclaw/credentials/whatsapp` at a time. If WhatsApp Web shows duplicate Chrome/Ubuntu linked devices or reconnect/auth drift starts, stop the extra process, run `hybridclaw auth whatsapp reset`, then pair again with `hybridclaw channels whatsapp setup`.
179
185
  - Use `hybridclaw help`, `hybridclaw help auth`, `hybridclaw help openrouter`, `hybridclaw help mistral`, `hybridclaw help huggingface`, or `hybridclaw help local` for CLI-specific reference output.
180
186
 
181
- ## Setting Up MS Teams
187
+ ## Secrets And Authenticated API Calls
182
188
 
183
- See [docs/msteams.md](./docs/msteams.md) for the full setup flow, including:
189
+ HybridClaw can keep API keys out of model-visible prompts and tool arguments.
184
190
 
185
- - Azure app registration and bot credentials
186
- - Azure Bot webhook and Teams channel configuration
187
- - `hybridclaw auth login msteams`
188
- - local tunnel setup
189
- - DM and channel smoke tests
191
+ ```text
192
+ /secret set STAGING_HYBRIDAI_API_KEY demo_key_2024
193
+ /secret route add https://staging.hybridai.one/api/v1/ STAGING_HYBRIDAI_API_KEY X-API-Key none
194
+ ```
190
195
 
191
- ## Setting Up iMessage
196
+ After that, the model can just ask for the API call in natural language:
192
197
 
193
- See [docs/imessage.md](./docs/imessage.md) for the full setup flow, including:
198
+ ```text
199
+ POST to https://staging.hybridai.one/api/v1/virtual-bots/survey with JSON:
200
+ {
201
+ "question": "Climate change is the biggest threat to humanity.",
202
+ "sample_size": 10,
203
+ "survey": "eurobarometer",
204
+ "gender": "Man",
205
+ "min_age": 25,
206
+ "max_age": 65
207
+ }
208
+ ```
209
+
210
+ Or you can use an explicit placeholder:
211
+
212
+ ```text
213
+ POST to https://staging.hybridai.one/api/v1/virtual-bots/survey with header X-API-Key: <secret:STAGING_HYBRIDAI_API_KEY> and the same JSON body.
214
+ ```
215
+
216
+ - The model only sees the secret name or placeholder, never the real token.
217
+ - The gateway injects the real header at request time via `http_request`.
218
+ - Tool-call audit records redact injected secret values before persistence.
219
+ - Selected config fields such as `ops.webApiToken`, `ops.gatewayApiToken`,
220
+ `imessage.password`, and `local.backends.vllm.apiKey` can also use
221
+ SecretRefs like `{ "source": "store", "id": "IMESSAGE_PASSWORD" }` or
222
+ `${ENV_VAR}` instead of plaintext config values.
223
+
224
+ ## Setting Up Channels
225
+
226
+ See [docs/development/getting-started/channels.md](./docs/development/getting-started/channels.md)
227
+ for the setup commands and step-by-step flows for:
228
+
229
+ - Discord
230
+ - Email
231
+ - WhatsApp
232
+ - iMessage
233
+ - Microsoft Teams
194
234
 
195
- - local macOS mode with `imsg` and Messages `chat.db`
196
- - remote/cloud mode with BlueBubbles webhooks + REST sends
197
- - `imessage.*` config examples for both backends
198
- - `IMESSAGE_PASSWORD` secret handling for BlueBubbles
199
- - DM/group policy notes and smoke-test steps
235
+ For transport-specific deep dives:
236
+
237
+ - [docs/imessage.md](./docs/imessage.md) covers local macOS and BlueBubbles
238
+ remote setup in detail
239
+ - [docs/msteams.md](./docs/msteams.md) covers the Azure app, bot resource, and
240
+ webhook registration flow
200
241
 
201
242
  ## Model Selection
202
243
 
@@ -266,8 +307,8 @@ Runtime model:
266
307
  HybridClaw creates `~/.hybridclaw/config.json` on first run and hot-reloads most runtime settings.
267
308
 
268
309
  - Start from `config.example.json` (reference).
269
- - Runtime state lives under `~/.hybridclaw/` (`config.json`, `credentials.json`, `data/hybridclaw.db`, audit/session files). Set `HYBRIDCLAW_DATA_DIR` to an absolute path to relocate the full runtime home, including browser profiles and agent workspaces.
270
- - HybridClaw does not keep runtime state in the current working directory. If `./.env` exists, supported secrets are migrated once into `~/.hybridclaw/credentials.json`.
310
+ - Runtime state lives under `~/.hybridclaw/` (`config.json`, encrypted `credentials.json`, `credentials.master.key`, `data/hybridclaw.db`, audit/session files). Set `HYBRIDCLAW_DATA_DIR` to an absolute path to relocate the full runtime home, including browser profiles and agent workspaces.
311
+ - HybridClaw does not keep runtime state in the current working directory. If `./.env` exists, supported secrets are migrated once into the encrypted `~/.hybridclaw/credentials.json` store.
271
312
  - `container.*` controls execution isolation, including `sandboxMode`, `memory`, `memorySwap`, `cpus`, `network`, `binds`, and additional mounts.
272
313
  - `hybridclaw config` prints the active runtime config path and current config, `config check` validates only the config file itself, `config reload` performs an immediate in-process hot reload, and `config set <key> <value>` updates one existing dotted key path and re-validates the result.
273
314
  - Use `container.binds` for explicit host-to-container mounts in `host:container[:ro|rw]` format. Mounted paths appear inside the sandbox under `/workspace/extra/<container>`.
@@ -281,14 +322,15 @@ HybridClaw creates `~/.hybridclaw/config.json` on first run and hot-reloads most
281
322
  - `plugins.list[]` controls plugin overrides such as `enabled`, custom `path`, and top-level `config` values. Use `hybridclaw plugin config <plugin-id> [key] [value|--unset]` for focused edits without rewriting the full config file.
282
323
  - `observability.*` controls HybridAI observability ingest, including the target base URL, bot and agent ids, flush interval, and batch size for structured audit event forwarding.
283
324
  - `adaptiveSkills.*` controls observation, inspection, amendment staging, and rollback for the self-improving skill loop. See [docs/development/extensibility/adaptive-skills.md](./docs/development/extensibility/adaptive-skills.md) for the operator workflow.
284
- - `imessage.*` controls the dual-backend iMessage transport. Use `backend: "local"` on macOS with `imsg` + `chat.db`, or `backend: "bluebubbles"` for a remote Mac relay via BlueBubbles. Prefer storing the BlueBubbles password in `~/.hybridclaw/credentials.json` as `IMESSAGE_PASSWORD` instead of plaintext config.
325
+ - `imessage.*` controls the dual-backend iMessage transport. Use `backend: "local"` on macOS with `imsg` + `chat.db`, or `backend: "bluebubbles"` for a remote Mac relay via BlueBubbles. Prefer storing the BlueBubbles password in the encrypted `~/.hybridclaw/credentials.json` store as `IMESSAGE_PASSWORD` instead of plaintext config.
285
326
  - `email.pollIntervalMs` defaults to `30000` (30 seconds) and is clamped to a minimum of `1000`.
286
327
  - `ops.webApiToken` (or `WEB_API_TOKEN`) gates the built-in `/chat`, `/agents`, and `/admin` surfaces plus the admin API. When unset, localhost browser access stays open without a login prompt.
328
+ - `tools.httpRequest.authRules[]` configures gateway-side URL-based auth injection for `http_request`, for example mapping `https://staging.hybridai.one/api/v1/` to `X-API-Key` plus a stored secret ref.
287
329
  - `mcpServers.*.env` and `mcpServers.*.headers` are currently written to `~/.hybridclaw/config.json` as plain text. Use low-privilege tokens only, set `chmod 700 ~/.hybridclaw && chmod 600 ~/.hybridclaw/config.json`, and prefer `host` sandbox mode for stdio MCP servers that depend on host-installed tools.
288
330
  - `media.audio` controls shared inbound audio transcription. By default it auto-detects local CLIs first (`sherpa-onnx-offline`, `whisper-cli`, `whisper`), then `gemini`, then provider keys (`openai`, `groq`, `deepgram`, `google`).
289
331
  - `whisper-cli` auto-detect also needs a whisper.cpp model file. If the binary exists but HybridClaw still skips local transcription, set `WHISPER_CPP_MODEL` to a local `ggml-*.bin` model path.
290
332
  - If no transcript backend is available, the container tries native model audio input before tool-use fallback for supported local providers. Today that fallback is enabled for `vllm` sessions and uses the original current-turn audio attachment.
291
- - Keep runtime secrets in `~/.hybridclaw/credentials.json` (`HYBRIDAI_API_KEY`, `OPENROUTER_API_KEY`, `HF_TOKEN`, `OPENAI_API_KEY`, `GROQ_API_KEY`, `DEEPGRAM_API_KEY`, `GEMINI_API_KEY`, `GOOGLE_API_KEY`, `DISCORD_TOKEN`, `EMAIL_PASSWORD`, `IMESSAGE_PASSWORD`, `MSTEAMS_APP_PASSWORD`). Codex OAuth sessions are stored separately in `~/.hybridclaw/codex-auth.json`.
333
+ - Keep runtime secrets in the encrypted `~/.hybridclaw/credentials.json` store (`HYBRIDAI_API_KEY`, `OPENROUTER_API_KEY`, `HF_TOKEN`, `OPENAI_API_KEY`, `GROQ_API_KEY`, `DEEPGRAM_API_KEY`, `GEMINI_API_KEY`, `GOOGLE_API_KEY`, `DISCORD_TOKEN`, `EMAIL_PASSWORD`, `IMESSAGE_PASSWORD`, `MSTEAMS_APP_PASSWORD`). The master key should come from `HYBRIDCLAW_MASTER_KEY` or `/run/secrets/hybridclaw_master_key` on headless hosts; otherwise HybridClaw creates an owner-only `~/.hybridclaw/credentials.master.key`. Codex OAuth sessions are stored separately in `~/.hybridclaw/codex-auth.json`.
292
334
  - Trust-model acceptance is stored in `~/.hybridclaw/config.json` under `security.*` and is required before runtime starts. In headless environments, set `HYBRIDCLAW_ACCEPT_TRUST=true` to persist acceptance automatically before credential checks run.
293
335
  - See [TRUST_MODEL.md](./TRUST_MODEL.md) for onboarding acceptance policy and [SECURITY.md](./SECURITY.md) for technical security guidelines.
294
336
  - For contributor workflow, see [CONTRIBUTING.md](./CONTRIBUTING.md). For deeper runtime, skills, release, voice/TTS, and maintainer reference docs, see [docs/development/README.md](./docs/development/README.md).
@@ -383,6 +425,26 @@ hybridclaw agent activate demo-agent
383
425
  - See [docs/development/extensibility/agent-packages.md](./docs/development/extensibility/agent-packages.md)
384
426
  for the archive layout, manifest fields, and security rules.
385
427
 
428
+ ## Migrate From OpenClaw Or Hermes Agent
429
+
430
+ HybridClaw can import compatible state from an existing `~/.openclaw` or
431
+ `~/.hermes` home into a target HybridClaw agent workspace.
432
+
433
+ ```bash
434
+ hybridclaw migrate openclaw --dry-run
435
+ hybridclaw migrate hermes --dry-run
436
+ ```
437
+
438
+ Notes:
439
+
440
+ - Use `--agent <id>` to import into an agent other than `main`.
441
+ - Use `--overwrite` to replace existing HybridClaw files or config values when
442
+ the preview shows conflicts.
443
+ - Use `--migrate-secrets` to import compatible secret material into the
444
+ encrypted `~/.hybridclaw/credentials.json` store.
445
+ - Execute-mode runs write a report under `~/.hybridclaw/migration/openclaw/`
446
+ or `~/.hybridclaw/migration/hermes/`.
447
+
386
448
  ## Local Provider Quickstart (LM Studio Example)
387
449
 
388
450
  If LM Studio is running locally and serving `qwen/qwen3.5-9b` on
@@ -453,6 +515,8 @@ Other backends use the same flow:
453
515
 
454
516
  ```bash
455
517
  hybridclaw auth login local ollama llama3.2
518
+ hybridclaw auth login local llamacpp --base-url http://127.0.0.1:8081
519
+ hybridclaw auth login local llamacpp Meta-Llama-3-8B-Instruct --base-url http://127.0.0.1:8081
456
520
  hybridclaw auth login local vllm mistralai/Mistral-7B-Instruct-v0.3 --base-url http://127.0.0.1:8000 --api-key secret
457
521
  ```
458
522
 
@@ -586,6 +650,7 @@ CLI runtime commands:
586
650
  - `hybridclaw gateway agent [list|switch <id>|create <id> [--model <model>]|model [name]]` — Inspect or change the current session-to-agent binding and persistent agent model
587
651
  - `hybridclaw gateway compact` — Archive older session history into semantic memory while preserving a recent active context tail
588
652
  - `hybridclaw gateway reset [yes|no]` — Clear session history, reset per-session model/chatbot/RAG settings, and remove the current agent workspace (confirmation required)
653
+ - `hybridclaw migrate openclaw [options]`, `hybridclaw migrate hermes [options]` — Preview or import compatible OpenClaw or Hermes Agent home state into a HybridClaw agent workspace, with optional secret migration and per-run reports
589
654
  - `hybridclaw agent list` — Show registered agents in a script-friendly tab-separated format
590
655
  - `hybridclaw agent export [agent-id] [-o <path>]`, `inspect <file.claw>`, `install <file.claw|https://.../*.claw|official:<agent-dir>|github:owner/repo[/<ref>]/<agent-dir>> [--id <id>] [--force] [--skip-skill-scan] [--skip-externals] [--skip-import-errors] [--yes]`, `uninstall <agent-id> [--yes]` — Manage portable `.claw` agent archives (legacy `pack` / `unpack` aliases still work)
591
656
  - `hybridclaw tui` — Start terminal client connected to gateway
@@ -603,7 +668,7 @@ CLI runtime commands:
603
668
  - `hybridclaw channels whatsapp setup [--reset] [--allow-from <+E164>]...` — Prepare private-by-default WhatsApp config, enable the default `👀` ack reaction, optionally wipe stale auth, open a temporary pairing session, and print the QR code
604
669
  - `hybridclaw browser login [--url <url>]`, `status`, `reset` — Manage the persistent browser profile used for authenticated web automation
605
670
  - `hybridclaw local status` — Show current local backend config and default model
606
- - `hybridclaw local configure <backend> <model-id> [--base-url <url>] [--api-key <key>] [--no-default]` — Enable and configure a local backend
671
+ - `hybridclaw local configure <backend> [model-id] [--base-url <url>] [--api-key <key>] [--no-default]` — Enable and configure a local backend
607
672
  - `hybridclaw hybridai ...`, `hybridclaw codex ...`, and `hybridclaw local ...` — Legacy aliases for the older provider-specific command surface
608
673
  - `hybridclaw help` / `hybridclaw help auth` / `hybridclaw help openrouter` / `hybridclaw help mistral` — Print CLI reference for the unified provider commands
609
674
  - `hybridclaw doctor [--fix|--json|<component>]` — Diagnose runtime, gateway, config, credentials, database, providers, local backends, Docker, channels, skills, security, and disk state
@@ -211,6 +211,10 @@
211
211
  "enabled": false,
212
212
  "baseUrl": "http://127.0.0.1:1234/v1"
213
213
  },
214
+ "llamacpp": {
215
+ "enabled": false,
216
+ "baseUrl": "http://127.0.0.1:8081/v1"
217
+ },
214
218
  "vllm": {
215
219
  "enabled": false,
216
220
  "baseUrl": "http://127.0.0.1:8000/v1",