@hybridaione/hybridclaw 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/AGENTS.md +1 -0
  2. package/CHANGELOG.md +43 -1
  3. package/README.md +16 -8
  4. package/config.example.json +8 -0
  5. package/console/dist/assets/index-CWsi6Xzk.js +15 -0
  6. package/console/dist/assets/index-TCGsK-3Q.css +1 -0
  7. package/console/dist/index.html +2 -2
  8. package/container/dist/browser-tools.js.map +1 -1
  9. package/container/dist/index.js.map +1 -1
  10. package/container/dist/mcp/client-manager.js +6 -37
  11. package/container/dist/mcp/client-manager.js.map +1 -1
  12. package/container/dist/providers/local-openai-compat.js +6 -0
  13. package/container/dist/providers/local-openai-compat.js.map +1 -1
  14. package/container/dist/providers/router.js +3 -0
  15. package/container/dist/providers/router.js.map +1 -1
  16. package/container/dist/providers/shared.js +1 -0
  17. package/container/dist/providers/shared.js.map +1 -1
  18. package/container/dist/tools.js +42 -0
  19. package/container/dist/tools.js.map +1 -1
  20. package/container/dist/types.js.map +1 -1
  21. package/container/package-lock.json +2 -2
  22. package/container/package.json +1 -1
  23. package/container/shared/mcp-tool-namespaces.d.ts +5 -0
  24. package/container/shared/mcp-tool-namespaces.js +47 -0
  25. package/container/shared/model-names.js +1 -0
  26. package/container/shared/provider-context.js +1 -0
  27. package/container/src/browser-tools.ts +2 -0
  28. package/container/src/index.ts +2 -0
  29. package/container/src/mcp/client-manager.ts +9 -49
  30. package/container/src/providers/local-openai-compat.ts +5 -0
  31. package/container/src/providers/router.ts +3 -0
  32. package/container/src/providers/shared.ts +2 -0
  33. package/container/src/tools.ts +45 -0
  34. package/container/src/types.ts +2 -0
  35. package/dist/agent/agent.d.ts.map +1 -1
  36. package/dist/agent/agent.js +3 -1
  37. package/dist/agent/agent.js.map +1 -1
  38. package/dist/agent/conversation.d.ts.map +1 -1
  39. package/dist/agent/conversation.js +3 -1
  40. package/dist/agent/conversation.js.map +1 -1
  41. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  42. package/dist/agent/prompt-hooks.js +44 -4
  43. package/dist/agent/prompt-hooks.js.map +1 -1
  44. package/dist/agent/tool-policy.d.ts +5 -0
  45. package/dist/agent/tool-policy.d.ts.map +1 -0
  46. package/dist/agent/tool-policy.js +11 -0
  47. package/dist/agent/tool-policy.js.map +1 -0
  48. package/dist/agent/tool-summary.d.ts +1 -0
  49. package/dist/agent/tool-summary.d.ts.map +1 -1
  50. package/dist/agent/tool-summary.js +3 -0
  51. package/dist/agent/tool-summary.js.map +1 -1
  52. package/dist/channels/discord/tool-actions.d.ts +3 -0
  53. package/dist/channels/discord/tool-actions.d.ts.map +1 -1
  54. package/dist/channels/discord/tool-actions.js.map +1 -1
  55. package/dist/channels/email/delivery.d.ts +3 -0
  56. package/dist/channels/email/delivery.d.ts.map +1 -1
  57. package/dist/channels/email/delivery.js +11 -3
  58. package/dist/channels/email/delivery.js.map +1 -1
  59. package/dist/channels/email/runtime.d.ts +10 -2
  60. package/dist/channels/email/runtime.d.ts.map +1 -1
  61. package/dist/channels/email/runtime.js +11 -5
  62. package/dist/channels/email/runtime.js.map +1 -1
  63. package/dist/channels/message/tool-actions.d.ts.map +1 -1
  64. package/dist/channels/message/tool-actions.js +34 -1
  65. package/dist/channels/message/tool-actions.js.map +1 -1
  66. package/dist/cli/auth-command.d.ts.map +1 -1
  67. package/dist/cli/auth-command.js +229 -41
  68. package/dist/cli/auth-command.js.map +1 -1
  69. package/dist/cli/help.d.ts +2 -0
  70. package/dist/cli/help.d.ts.map +1 -1
  71. package/dist/cli/help.js +45 -4
  72. package/dist/cli/help.js.map +1 -1
  73. package/dist/cli/tool-command.d.ts +2 -0
  74. package/dist/cli/tool-command.d.ts.map +1 -0
  75. package/dist/cli/tool-command.js +39 -0
  76. package/dist/cli/tool-command.js.map +1 -0
  77. package/dist/cli.d.ts.map +1 -1
  78. package/dist/cli.js +8 -0
  79. package/dist/cli.js.map +1 -1
  80. package/dist/command-registry.d.ts.map +1 -1
  81. package/dist/command-registry.js +1 -0
  82. package/dist/command-registry.js.map +1 -1
  83. package/dist/config/config.d.ts +3 -0
  84. package/dist/config/config.d.ts.map +1 -1
  85. package/dist/config/config.js +14 -0
  86. package/dist/config/config.js.map +1 -1
  87. package/dist/config/runtime-config.d.ts +27 -1
  88. package/dist/config/runtime-config.d.ts.map +1 -1
  89. package/dist/config/runtime-config.js +70 -5
  90. package/dist/config/runtime-config.js.map +1 -1
  91. package/dist/doctor/checks/config.d.ts.map +1 -1
  92. package/dist/doctor/checks/config.js +117 -3
  93. package/dist/doctor/checks/config.js.map +1 -1
  94. package/dist/doctor/checks/providers.d.ts.map +1 -1
  95. package/dist/doctor/checks/providers.js +20 -5
  96. package/dist/doctor/checks/providers.js.map +1 -1
  97. package/dist/doctor/checks/skills.d.ts.map +1 -1
  98. package/dist/doctor/checks/skills.js +58 -4
  99. package/dist/doctor/checks/skills.js.map +1 -1
  100. package/dist/doctor/provider-probes.d.ts +1 -0
  101. package/dist/doctor/provider-probes.d.ts.map +1 -1
  102. package/dist/doctor/provider-probes.js +33 -1
  103. package/dist/doctor/provider-probes.js.map +1 -1
  104. package/dist/doctor/utils.d.ts +3 -0
  105. package/dist/doctor/utils.d.ts.map +1 -1
  106. package/dist/doctor/utils.js +9 -0
  107. package/dist/doctor/utils.js.map +1 -1
  108. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  109. package/dist/gateway/gateway-http-server.js +73 -2
  110. package/dist/gateway/gateway-http-server.js.map +1 -1
  111. package/dist/gateway/gateway-service.d.ts +9 -3
  112. package/dist/gateway/gateway-service.d.ts.map +1 -1
  113. package/dist/gateway/gateway-service.js +147 -17
  114. package/dist/gateway/gateway-service.js.map +1 -1
  115. package/dist/gateway/gateway-session-status.d.ts +1 -0
  116. package/dist/gateway/gateway-session-status.d.ts.map +1 -1
  117. package/dist/gateway/gateway-session-status.js +12 -1
  118. package/dist/gateway/gateway-session-status.js.map +1 -1
  119. package/dist/gateway/gateway-types.d.ts +20 -0
  120. package/dist/gateway/gateway-types.d.ts.map +1 -1
  121. package/dist/gateway/gateway-types.js.map +1 -1
  122. package/dist/gateway/gateway.js +3 -2
  123. package/dist/gateway/gateway.js.map +1 -1
  124. package/dist/infra/container-setup.d.ts +1 -1
  125. package/dist/infra/container-setup.d.ts.map +1 -1
  126. package/dist/infra/container-setup.js +49 -13
  127. package/dist/infra/container-setup.js.map +1 -1
  128. package/dist/memory/db.d.ts +8 -0
  129. package/dist/memory/db.d.ts.map +1 -1
  130. package/dist/memory/db.js +25 -0
  131. package/dist/memory/db.js.map +1 -1
  132. package/dist/memory/memory-consolidation.d.ts +6 -2
  133. package/dist/memory/memory-consolidation.d.ts.map +1 -1
  134. package/dist/memory/memory-consolidation.js +300 -8
  135. package/dist/memory/memory-consolidation.js.map +1 -1
  136. package/dist/memory/memory-service.d.ts +3 -2
  137. package/dist/memory/memory-service.d.ts.map +1 -1
  138. package/dist/memory/memory-service.js +5 -2
  139. package/dist/memory/memory-service.js.map +1 -1
  140. package/dist/onboarding.d.ts +1 -1
  141. package/dist/onboarding.d.ts.map +1 -1
  142. package/dist/onboarding.js +75 -4
  143. package/dist/onboarding.js.map +1 -1
  144. package/dist/providers/auxiliary.d.ts +1 -1
  145. package/dist/providers/auxiliary.d.ts.map +1 -1
  146. package/dist/providers/auxiliary.js +7 -0
  147. package/dist/providers/auxiliary.js.map +1 -1
  148. package/dist/providers/factory.d.ts.map +1 -1
  149. package/dist/providers/factory.js +3 -1
  150. package/dist/providers/factory.js.map +1 -1
  151. package/dist/providers/huggingface-discovery.d.ts +14 -0
  152. package/dist/providers/huggingface-discovery.d.ts.map +1 -0
  153. package/dist/providers/huggingface-discovery.js +133 -0
  154. package/dist/providers/huggingface-discovery.js.map +1 -0
  155. package/dist/providers/huggingface-utils.d.ts +5 -0
  156. package/dist/providers/huggingface-utils.d.ts.map +1 -0
  157. package/dist/providers/huggingface-utils.js +11 -0
  158. package/dist/providers/huggingface-utils.js.map +1 -0
  159. package/dist/providers/huggingface.d.ts +4 -0
  160. package/dist/providers/huggingface.d.ts.map +1 -0
  161. package/dist/providers/huggingface.js +32 -0
  162. package/dist/providers/huggingface.js.map +1 -0
  163. package/dist/providers/model-catalog.d.ts +4 -1
  164. package/dist/providers/model-catalog.d.ts.map +1 -1
  165. package/dist/providers/model-catalog.js +11 -3
  166. package/dist/providers/model-catalog.js.map +1 -1
  167. package/dist/providers/openrouter-utils.d.ts.map +1 -1
  168. package/dist/providers/openrouter-utils.js +3 -8
  169. package/dist/providers/openrouter-utils.js.map +1 -1
  170. package/dist/providers/openrouter.d.ts.map +1 -1
  171. package/dist/providers/openrouter.js +2 -1
  172. package/dist/providers/openrouter.js.map +1 -1
  173. package/dist/providers/provider-api-key-utils.d.ts +4 -0
  174. package/dist/providers/provider-api-key-utils.d.ts.map +1 -0
  175. package/dist/providers/provider-api-key-utils.js +37 -0
  176. package/dist/providers/provider-api-key-utils.js.map +1 -0
  177. package/dist/providers/recommended-models.d.ts +2 -0
  178. package/dist/providers/recommended-models.d.ts.map +1 -0
  179. package/dist/providers/recommended-models.js +62 -0
  180. package/dist/providers/recommended-models.js.map +1 -0
  181. package/dist/providers/task-routing.d.ts.map +1 -1
  182. package/dist/providers/task-routing.js +9 -0
  183. package/dist/providers/task-routing.js.map +1 -1
  184. package/dist/providers/types.d.ts +2 -2
  185. package/dist/providers/types.d.ts.map +1 -1
  186. package/dist/scheduler/scheduler.d.ts +1 -0
  187. package/dist/scheduler/scheduler.d.ts.map +1 -1
  188. package/dist/scheduler/scheduler.js +45 -0
  189. package/dist/scheduler/scheduler.js.map +1 -1
  190. package/dist/security/runtime-secrets.d.ts +1 -1
  191. package/dist/security/runtime-secrets.d.ts.map +1 -1
  192. package/dist/security/runtime-secrets.js +16 -3
  193. package/dist/security/runtime-secrets.js.map +1 -1
  194. package/dist/skills/skills.d.ts.map +1 -1
  195. package/dist/skills/skills.js +207 -56
  196. package/dist/skills/skills.js.map +1 -1
  197. package/dist/tui-banner.d.ts.map +1 -1
  198. package/dist/tui-banner.js +2 -0
  199. package/dist/tui-banner.js.map +1 -1
  200. package/dist/tui.d.ts.map +1 -1
  201. package/dist/tui.js +28 -8
  202. package/dist/tui.js.map +1 -1
  203. package/dist/types/models.d.ts +1 -1
  204. package/dist/types/models.d.ts.map +1 -1
  205. package/dist/types/models.js.map +1 -1
  206. package/docs/chat.html +178 -47
  207. package/docs/development/README.md +14 -15
  208. package/docs/development/getting-started/authentication.md +12 -2
  209. package/docs/development/internals/releasing.md +5 -0
  210. package/docs/development/internals/runtime.md +6 -3
  211. package/docs/development/reference/commands.md +4 -1
  212. package/docs/development/reference/diagnostics.md +4 -0
  213. package/docs/development/reference/faq.md +5 -2
  214. package/docs/development/reference/model-selection.md +3 -0
  215. package/docs/index.html +18 -18
  216. package/package.json +1 -1
  217. package/console/dist/assets/index-CK5IADUX.js +0 -13
  218. package/console/dist/assets/index-DUG2rueK.css +0 -1
package/AGENTS.md CHANGED
@@ -219,6 +219,7 @@ npm run tui # tsx src/cli.ts tui
219
219
  ### Git Discipline
220
220
 
221
221
  - Treat existing uncommitted changes as user work unless you created them.
222
+ - Run `npm run format` before creating commits that will be pushed to GitHub.
222
223
  - Conventional Commits preferred: `feat:`, `fix:`, `test:`, `refactor:`,
223
224
  `chore:`, `docs:`.
224
225
  - Group related changes; avoid bundling unrelated refactors.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,48 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [Coming up]
4
+
5
+ ## [0.9.3](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.3)
6
+
7
+ ### Added
8
+
9
+ - **Hugging Face provider support**: Added `hybridclaw auth login|status|logout`
10
+ support for Hugging Face Inference providers, provider probing in `doctor`,
11
+ model-catalog discovery, and recommended-model handling for
12
+ `huggingface/...` model ids.
13
+ - **Admin jobs board and scheduler follow-ups**: Added a dedicated `Jobs`
14
+ page in the embedded admin console with richer scheduler metadata, kanban
15
+ views, and job movement/edit flows for proactive agent work.
16
+ - **Built-in tool toggles**: Added `hybridclaw tool list|enable|disable` so
17
+ operators can trim unused built-in prompt surfaces directly from runtime
18
+ config when `doctor` flags them.
19
+
20
+ ### Changed
21
+
22
+ - **Container bootstrap and publish verification**: Installed packages now
23
+ prefer published runtime images while source checkouts build locally, and
24
+ the publish workflow verifies pushed GHCR tags before the job completes.
25
+ - **Skill metadata parsing cleanup**: Consolidated frontmatter traversal and
26
+ metadata grouping in the skill loader so HybridClaw prefers native
27
+ HybridClaw metadata while still handling OpenClaw-compatible skill manifests
28
+ more predictably.
29
+
30
+ ### Fixed
31
+
32
+ - **Scheduled delivery and backlog retry reliability**: Tightened scheduler
33
+ follow-up handling, admin/API job state updates, backlog retries, and
34
+ channel/email delivery flows so queued jobs recover more predictably after
35
+ failures.
36
+ - **Router-provider credential normalization**: Shared API-key lookup and base
37
+ URL normalization across OpenRouter and Hugging Face so auth setup, runtime
38
+ credential resolution, and provider diagnostics behave more consistently.
39
+ - **Skill install/sync path stability**: Stabilized installed and synced skill
40
+ paths, prevented path collisions during sync, and deduplicated install specs
41
+ independent of key order so repeated skill installs are safer and more
42
+ consistent.
43
+ - **Malformed `requires` handling for skills**: HybridClaw now warns when a
44
+ skill declares malformed `requires` metadata instead of silently accepting
45
+ broken dependency declarations.
4
46
 
5
47
  ## [0.9.2](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.2)
6
48
 
package/README.md CHANGED
@@ -104,7 +104,7 @@ hybridclaw tui
104
104
 
105
105
  # Embedded admin console
106
106
  # open http://127.0.0.1:9090/admin
107
- # Includes Dashboard, Gateway, Sessions, Bindings, Models, Scheduler, MCP, Audit, Skills, Plugins, Tools, and Config
107
+ # Includes Dashboard, Gateway, Sessions, Jobs, Bindings, Models, Scheduler, MCP, Audit, Skills, Plugins, Tools, and Config
108
108
  # If WEB_API_TOKEN is unset, localhost access opens without a login prompt
109
109
  # If WEB_API_TOKEN is set, /chat, /agents, and /admin all prompt for the same token
110
110
  ```
@@ -118,16 +118,19 @@ hybridclaw auth login hybridai --browser
118
118
  hybridclaw auth login hybridai --base-url http://localhost:5000
119
119
  hybridclaw auth login codex --import
120
120
  hybridclaw auth login openrouter anthropic/claude-sonnet-4 --api-key sk-or-...
121
+ hybridclaw auth login huggingface meta-llama/Llama-3.1-8B-Instruct --api-key hf_...
121
122
  hybridclaw auth login local ollama llama3.2
122
123
  hybridclaw auth login msteams --app-id 00000000-0000-0000-0000-000000000000 --tenant-id 11111111-1111-1111-1111-111111111111 --app-password secret
123
124
  hybridclaw auth status hybridai
124
125
  hybridclaw auth status codex
125
126
  hybridclaw auth status openrouter
127
+ hybridclaw auth status huggingface
126
128
  hybridclaw auth status local
127
129
  hybridclaw auth status msteams
128
130
  hybridclaw auth logout hybridai
129
131
  hybridclaw auth logout codex
130
132
  hybridclaw auth logout openrouter
133
+ hybridclaw auth logout huggingface
131
134
  hybridclaw auth logout local
132
135
  hybridclaw auth logout msteams
133
136
  hybridclaw auth whatsapp reset
@@ -145,14 +148,15 @@ hybridclaw local configure ollama llama3.2
145
148
  - `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.
146
149
  - `hybridclaw auth login codex` auto-selects browser PKCE on local GUI machines and device code on headless or remote shells.
147
150
  - `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.
151
+ - `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.
148
152
  - `hybridclaw auth login local` configures Ollama, LM Studio, or vLLM in `~/.hybridclaw/config.json`.
149
153
  - `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.
150
154
  - `hybridclaw auth logout local` disables configured local backends and clears any saved vLLM API key.
151
155
  - `hybridclaw auth logout msteams` clears the stored Teams app password and disables the Teams integration in config.
152
156
  - `hybridclaw auth whatsapp reset` clears linked WhatsApp Web auth without starting a new pairing session.
153
- - HybridAI, OpenRouter, Discord, email, and Teams secrets are stored in `~/.hybridclaw/credentials.json`. Codex OAuth credentials are stored separately in `~/.hybridclaw/codex-auth.json`.
157
+ - HybridAI, OpenRouter, Hugging Face, Discord, email, and Teams secrets are stored in `~/.hybridclaw/credentials.json`. Codex OAuth credentials are stored separately in `~/.hybridclaw/codex-auth.json`.
154
158
  - 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`.
155
- - Use `hybridclaw help`, `hybridclaw help auth`, `hybridclaw help openrouter`, or `hybridclaw help local` for CLI-specific reference output.
159
+ - Use `hybridclaw help`, `hybridclaw help auth`, `hybridclaw help openrouter`, `hybridclaw help huggingface`, or `hybridclaw help local` for CLI-specific reference output.
156
160
 
157
161
  ## Setting Up MS Teams
158
162
 
@@ -166,7 +170,7 @@ See [docs/msteams.md](./docs/msteams.md) for the full setup flow, including:
166
170
 
167
171
  ## Model Selection
168
172
 
169
- Codex models use the `openai-codex/` prefix. OpenRouter models use the `openrouter/` prefix. The default shipped Codex model is `openai-codex/gpt-5-codex`.
173
+ Codex models use the `openai-codex/` prefix. OpenRouter models use the `openrouter/` prefix. Hugging Face router models use the `huggingface/` prefix. The default shipped Codex model is `openai-codex/gpt-5-codex`.
170
174
 
171
175
  Examples:
172
176
 
@@ -176,18 +180,22 @@ Examples:
176
180
  /model default openai-codex/gpt-5-codex
177
181
  /model list openrouter
178
182
  /model set openrouter/anthropic/claude-sonnet-4
183
+ /model list huggingface
184
+ /model set huggingface/meta-llama/Llama-3.1-8B-Instruct
179
185
  /model clear
180
186
  /agent model openrouter/anthropic/claude-sonnet-4
181
187
  /model info
182
188
  /model default openrouter/anthropic/claude-sonnet-4
183
189
  ```
184
190
 
185
- - `hybridai.defaultModel` in `~/.hybridclaw/config.json` can point at a HybridAI model, an `openai-codex/...` model, an `openrouter/...` model, or a local backend model such as `ollama/...`.
191
+ - `hybridai.defaultModel` in `~/.hybridclaw/config.json` can point at a HybridAI model, an `openai-codex/...` model, an `openrouter/...` model, a `huggingface/...` model, or a local backend model such as `ollama/...`.
186
192
  - `codex.models` in runtime config controls the allowed Codex model list shown in selectors and status output.
187
193
  - `openrouter.models` in runtime config controls the allowed OpenRouter model list shown in selectors and status output.
194
+ - `huggingface.models` in runtime config controls the allowed Hugging Face model list shown in selectors and status output.
188
195
  - HybridAI model lists are refreshed from the configured HybridAI base URL (`/models`, then `/v1/models` as a compatibility fallback), and discovered `context_length` values feed status and model-info output when the API exposes them.
189
196
  - When the selected model starts with `openai-codex/`, HybridClaw resolves OAuth credentials through the Codex provider instead of `HYBRIDAI_API_KEY`.
190
197
  - When the selected model starts with `openrouter/`, HybridClaw resolves credentials through `OPENROUTER_API_KEY`.
198
+ - When the selected model starts with `huggingface/`, HybridClaw resolves credentials through `HF_TOKEN`.
191
199
  - `/model set <name>` is a session-only override.
192
200
  - `/model clear` removes the session override and falls back to the current agent model or the global default.
193
201
  - `/agent model <name>` sets the persistent model for the current session agent.
@@ -208,8 +216,8 @@ Runtime model:
208
216
  - `hybridclaw gateway` and `hybridclaw tui` validate the container image at startup.
209
217
  - `container.sandboxMode` defaults to `container`, but if HybridClaw is already running inside a container and the setting is not explicitly pinned, the gateway auto-switches to `host` to avoid Docker-in-Docker.
210
218
  - Use `hybridclaw gateway start --sandbox=host` or `hybridclaw gateway restart --sandbox=host` to force host execution for a given launch.
211
- - On first run, HybridClaw automatically prepares that image (pulls a prebuilt image first, then falls back to local build if needed).
212
- - If container setup fails, run `npm run build:container` in the project root and retry.
219
+ - On first run from an installed package, HybridClaw pulls a published container image automatically. In a source checkout, it builds the local container image instead.
220
+ - If Docker is unavailable, install Docker or switch to `container.sandboxMode=host`.
213
221
 
214
222
  ## Configuration
215
223
 
@@ -232,7 +240,7 @@ HybridClaw creates `~/.hybridclaw/config.json` on first run and hot-reloads most
232
240
  - `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`).
233
241
  - `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.
234
242
  - 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.
235
- - Keep runtime secrets in `~/.hybridclaw/credentials.json` (`HYBRIDAI_API_KEY`, `OPENROUTER_API_KEY`, `OPENAI_API_KEY`, `GROQ_API_KEY`, `DEEPGRAM_API_KEY`, `GEMINI_API_KEY`, `GOOGLE_API_KEY`, `DISCORD_TOKEN`, `EMAIL_PASSWORD`, `MSTEAMS_APP_PASSWORD`). Codex OAuth sessions are stored separately in `~/.hybridclaw/codex-auth.json`.
243
+ - 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`, `MSTEAMS_APP_PASSWORD`). Codex OAuth sessions are stored separately in `~/.hybridclaw/codex-auth.json`.
236
244
  - 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.
237
245
  - See [TRUST_MODEL.md](./TRUST_MODEL.md) for onboarding acceptance policy and [SECURITY.md](./SECURITY.md) for technical security guidelines.
238
246
  - 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).
@@ -16,6 +16,9 @@
16
16
  "email": []
17
17
  }
18
18
  },
19
+ "tools": {
20
+ "disabled": []
21
+ },
19
22
  "adaptiveSkills": {
20
23
  "enabled": false,
21
24
  "observationEnabled": true,
@@ -170,6 +173,11 @@
170
173
  "baseUrl": "https://openrouter.ai/api/v1",
171
174
  "models": ["openrouter/anthropic/claude-sonnet-4"]
172
175
  },
176
+ "huggingface": {
177
+ "enabled": false,
178
+ "baseUrl": "https://router.huggingface.co/v1",
179
+ "models": ["huggingface/meta-llama/Llama-3.1-8B-Instruct"]
180
+ },
173
181
  "local": {
174
182
  "backends": {
175
183
  "ollama": {