@hybridaione/hybridclaw 0.9.2 → 0.9.4

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 (251) hide show
  1. package/AGENTS.md +10 -1
  2. package/CHANGELOG.md +81 -1
  3. package/README.md +26 -9
  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/agents/agent-registry.d.ts.map +1 -1
  53. package/dist/agents/agent-registry.js +29 -2
  54. package/dist/agents/agent-registry.js.map +1 -1
  55. package/dist/agents/agent-types.d.ts +4 -0
  56. package/dist/agents/agent-types.d.ts.map +1 -1
  57. package/dist/agents/agent-types.js +6 -0
  58. package/dist/agents/agent-types.js.map +1 -1
  59. package/dist/agents/claw-archive.d.ts.map +1 -1
  60. package/dist/agents/claw-archive.js +20 -1
  61. package/dist/agents/claw-archive.js.map +1 -1
  62. package/dist/agents/claw-manifest.d.ts +5 -0
  63. package/dist/agents/claw-manifest.d.ts.map +1 -1
  64. package/dist/agents/claw-manifest.js +21 -0
  65. package/dist/agents/claw-manifest.js.map +1 -1
  66. package/dist/channels/discord/tool-actions.d.ts +3 -0
  67. package/dist/channels/discord/tool-actions.d.ts.map +1 -1
  68. package/dist/channels/discord/tool-actions.js.map +1 -1
  69. package/dist/channels/email/delivery.d.ts +3 -0
  70. package/dist/channels/email/delivery.d.ts.map +1 -1
  71. package/dist/channels/email/delivery.js +11 -3
  72. package/dist/channels/email/delivery.js.map +1 -1
  73. package/dist/channels/email/runtime.d.ts +10 -2
  74. package/dist/channels/email/runtime.d.ts.map +1 -1
  75. package/dist/channels/email/runtime.js +11 -5
  76. package/dist/channels/email/runtime.js.map +1 -1
  77. package/dist/channels/message/tool-actions.d.ts.map +1 -1
  78. package/dist/channels/message/tool-actions.js +34 -1
  79. package/dist/channels/message/tool-actions.js.map +1 -1
  80. package/dist/cli/agent-command.d.ts.map +1 -1
  81. package/dist/cli/agent-command.js +200 -22
  82. package/dist/cli/agent-command.js.map +1 -1
  83. package/dist/cli/auth-command.d.ts.map +1 -1
  84. package/dist/cli/auth-command.js +229 -41
  85. package/dist/cli/auth-command.js.map +1 -1
  86. package/dist/cli/help.d.ts +2 -0
  87. package/dist/cli/help.d.ts.map +1 -1
  88. package/dist/cli/help.js +51 -5
  89. package/dist/cli/help.js.map +1 -1
  90. package/dist/cli/tool-command.d.ts +2 -0
  91. package/dist/cli/tool-command.d.ts.map +1 -0
  92. package/dist/cli/tool-command.js +39 -0
  93. package/dist/cli/tool-command.js.map +1 -0
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +8 -0
  96. package/dist/cli.js.map +1 -1
  97. package/dist/command-registry.d.ts.map +1 -1
  98. package/dist/command-registry.js +1 -0
  99. package/dist/command-registry.js.map +1 -1
  100. package/dist/config/config.d.ts +3 -0
  101. package/dist/config/config.d.ts.map +1 -1
  102. package/dist/config/config.js +14 -0
  103. package/dist/config/config.js.map +1 -1
  104. package/dist/config/runtime-config.d.ts +28 -1
  105. package/dist/config/runtime-config.d.ts.map +1 -1
  106. package/dist/config/runtime-config.js +91 -6
  107. package/dist/config/runtime-config.js.map +1 -1
  108. package/dist/doctor/checks/config.d.ts.map +1 -1
  109. package/dist/doctor/checks/config.js +117 -3
  110. package/dist/doctor/checks/config.js.map +1 -1
  111. package/dist/doctor/checks/providers.d.ts.map +1 -1
  112. package/dist/doctor/checks/providers.js +20 -5
  113. package/dist/doctor/checks/providers.js.map +1 -1
  114. package/dist/doctor/checks/skills.d.ts.map +1 -1
  115. package/dist/doctor/checks/skills.js +58 -4
  116. package/dist/doctor/checks/skills.js.map +1 -1
  117. package/dist/doctor/provider-probes.d.ts +1 -0
  118. package/dist/doctor/provider-probes.d.ts.map +1 -1
  119. package/dist/doctor/provider-probes.js +33 -1
  120. package/dist/doctor/provider-probes.js.map +1 -1
  121. package/dist/doctor/utils.d.ts +3 -0
  122. package/dist/doctor/utils.d.ts.map +1 -1
  123. package/dist/doctor/utils.js +9 -0
  124. package/dist/doctor/utils.js.map +1 -1
  125. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  126. package/dist/gateway/gateway-http-server.js +199 -60
  127. package/dist/gateway/gateway-http-server.js.map +1 -1
  128. package/dist/gateway/gateway-service.d.ts +26 -3
  129. package/dist/gateway/gateway-service.d.ts.map +1 -1
  130. package/dist/gateway/gateway-service.js +638 -24
  131. package/dist/gateway/gateway-service.js.map +1 -1
  132. package/dist/gateway/gateway-session-status.d.ts +1 -0
  133. package/dist/gateway/gateway-session-status.d.ts.map +1 -1
  134. package/dist/gateway/gateway-session-status.js +12 -1
  135. package/dist/gateway/gateway-session-status.js.map +1 -1
  136. package/dist/gateway/gateway-types.d.ts +31 -0
  137. package/dist/gateway/gateway-types.d.ts.map +1 -1
  138. package/dist/gateway/gateway-types.js.map +1 -1
  139. package/dist/gateway/gateway-utils.d.ts +3 -0
  140. package/dist/gateway/gateway-utils.d.ts.map +1 -1
  141. package/dist/gateway/gateway-utils.js +28 -0
  142. package/dist/gateway/gateway-utils.js.map +1 -1
  143. package/dist/gateway/gateway.js +3 -2
  144. package/dist/gateway/gateway.js.map +1 -1
  145. package/dist/infra/container-setup.d.ts +1 -1
  146. package/dist/infra/container-setup.d.ts.map +1 -1
  147. package/dist/infra/container-setup.js +49 -13
  148. package/dist/infra/container-setup.js.map +1 -1
  149. package/dist/memory/db.d.ts +9 -1
  150. package/dist/memory/db.d.ts.map +1 -1
  151. package/dist/memory/db.js +69 -11
  152. package/dist/memory/db.js.map +1 -1
  153. package/dist/memory/memory-consolidation.d.ts +6 -2
  154. package/dist/memory/memory-consolidation.d.ts.map +1 -1
  155. package/dist/memory/memory-consolidation.js +300 -8
  156. package/dist/memory/memory-consolidation.js.map +1 -1
  157. package/dist/memory/memory-service.d.ts +3 -2
  158. package/dist/memory/memory-service.d.ts.map +1 -1
  159. package/dist/memory/memory-service.js +5 -2
  160. package/dist/memory/memory-service.js.map +1 -1
  161. package/dist/onboarding.d.ts +1 -1
  162. package/dist/onboarding.d.ts.map +1 -1
  163. package/dist/onboarding.js +75 -4
  164. package/dist/onboarding.js.map +1 -1
  165. package/dist/providers/auxiliary.d.ts +1 -1
  166. package/dist/providers/auxiliary.d.ts.map +1 -1
  167. package/dist/providers/auxiliary.js +7 -0
  168. package/dist/providers/auxiliary.js.map +1 -1
  169. package/dist/providers/factory.d.ts.map +1 -1
  170. package/dist/providers/factory.js +3 -1
  171. package/dist/providers/factory.js.map +1 -1
  172. package/dist/providers/huggingface-discovery.d.ts +14 -0
  173. package/dist/providers/huggingface-discovery.d.ts.map +1 -0
  174. package/dist/providers/huggingface-discovery.js +133 -0
  175. package/dist/providers/huggingface-discovery.js.map +1 -0
  176. package/dist/providers/huggingface-utils.d.ts +5 -0
  177. package/dist/providers/huggingface-utils.d.ts.map +1 -0
  178. package/dist/providers/huggingface-utils.js +11 -0
  179. package/dist/providers/huggingface-utils.js.map +1 -0
  180. package/dist/providers/huggingface.d.ts +4 -0
  181. package/dist/providers/huggingface.d.ts.map +1 -0
  182. package/dist/providers/huggingface.js +32 -0
  183. package/dist/providers/huggingface.js.map +1 -0
  184. package/dist/providers/hybridai-bots.d.ts +3 -0
  185. package/dist/providers/hybridai-bots.d.ts.map +1 -1
  186. package/dist/providers/hybridai-bots.js +58 -8
  187. package/dist/providers/hybridai-bots.js.map +1 -1
  188. package/dist/providers/model-catalog.d.ts +4 -1
  189. package/dist/providers/model-catalog.d.ts.map +1 -1
  190. package/dist/providers/model-catalog.js +11 -3
  191. package/dist/providers/model-catalog.js.map +1 -1
  192. package/dist/providers/openrouter-utils.d.ts.map +1 -1
  193. package/dist/providers/openrouter-utils.js +3 -8
  194. package/dist/providers/openrouter-utils.js.map +1 -1
  195. package/dist/providers/openrouter.d.ts.map +1 -1
  196. package/dist/providers/openrouter.js +2 -1
  197. package/dist/providers/openrouter.js.map +1 -1
  198. package/dist/providers/provider-api-key-utils.d.ts +4 -0
  199. package/dist/providers/provider-api-key-utils.d.ts.map +1 -0
  200. package/dist/providers/provider-api-key-utils.js +37 -0
  201. package/dist/providers/provider-api-key-utils.js.map +1 -0
  202. package/dist/providers/recommended-models.d.ts +2 -0
  203. package/dist/providers/recommended-models.d.ts.map +1 -0
  204. package/dist/providers/recommended-models.js +62 -0
  205. package/dist/providers/recommended-models.js.map +1 -0
  206. package/dist/providers/task-routing.d.ts.map +1 -1
  207. package/dist/providers/task-routing.js +9 -0
  208. package/dist/providers/task-routing.js.map +1 -1
  209. package/dist/providers/types.d.ts +2 -2
  210. package/dist/providers/types.d.ts.map +1 -1
  211. package/dist/scheduler/scheduler.d.ts +1 -0
  212. package/dist/scheduler/scheduler.d.ts.map +1 -1
  213. package/dist/scheduler/scheduler.js +45 -0
  214. package/dist/scheduler/scheduler.js.map +1 -1
  215. package/dist/security/runtime-secrets.d.ts +1 -1
  216. package/dist/security/runtime-secrets.d.ts.map +1 -1
  217. package/dist/security/runtime-secrets.js +16 -3
  218. package/dist/security/runtime-secrets.js.map +1 -1
  219. package/dist/skills/skills.d.ts.map +1 -1
  220. package/dist/skills/skills.js +207 -56
  221. package/dist/skills/skills.js.map +1 -1
  222. package/dist/tui-banner.d.ts.map +1 -1
  223. package/dist/tui-banner.js +2 -0
  224. package/dist/tui-banner.js.map +1 -1
  225. package/dist/tui.d.ts.map +1 -1
  226. package/dist/tui.js +28 -8
  227. package/dist/tui.js.map +1 -1
  228. package/dist/types/models.d.ts +1 -1
  229. package/dist/types/models.d.ts.map +1 -1
  230. package/dist/types/models.js.map +1 -1
  231. package/dist/workspace.d.ts +1 -0
  232. package/dist/workspace.d.ts.map +1 -1
  233. package/dist/workspace.js +89 -3
  234. package/dist/workspace.js.map +1 -1
  235. package/docs/chat.html +536 -62
  236. package/docs/development/README.md +14 -15
  237. package/docs/development/extensibility/agent-packages.md +60 -20
  238. package/docs/development/getting-started/authentication.md +12 -2
  239. package/docs/development/internals/releasing.md +5 -0
  240. package/docs/development/internals/runtime.md +6 -3
  241. package/docs/development/reference/commands.md +4 -1
  242. package/docs/development/reference/diagnostics.md +4 -0
  243. package/docs/development/reference/faq.md +5 -2
  244. package/docs/development/reference/model-selection.md +3 -0
  245. package/docs/index.html +19 -18
  246. package/package.json +1 -1
  247. package/templates/AGENTS.md +7 -1
  248. package/templates/BOOTSTRAP.md +38 -33
  249. package/templates/OPENING.md +4 -0
  250. package/console/dist/assets/index-CK5IADUX.js +0 -13
  251. 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.
@@ -309,7 +310,15 @@ When the user says "bump release":
309
310
  5. Commit with `chore: release vX.Y.Z`.
310
311
  6. Create an annotated git tag `vX.Y.Z`.
311
312
  7. Push the commit and tag.
312
- 8. Create or publish a GitHub Release entry for the tag.
313
+ 8. Create or publish a GitHub Release entry for the tag using the same curated
314
+ format as `v0.9.2`:
315
+ - title: `HybridClaw vX.Y.Z`
316
+ - `Release Date:` line with the calendar date
317
+ - short blockquote summary paragraph
318
+ - `Highlights`, `Changed`, and `Fixed` sections with polished bullets
319
+ - `Contributors` section (`Core` and `All Contributors`)
320
+ - trailing `Full Changelog` compare link
321
+ - do not paste the raw `CHANGELOG.md` version heading/body verbatim
313
322
 
314
323
  ---
315
324
 
package/CHANGELOG.md CHANGED
@@ -1,6 +1,86 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [Coming up]
4
+
5
+ ## [0.9.4](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.4)
6
+
7
+ ### Added
8
+
9
+ - **Packaged agent GitHub install sources and activation**:
10
+ `hybridclaw agent install` now accepts
11
+ `official:<agent-dir>` and `github:owner/repo[/<ref>]/<agent-dir>` sources,
12
+ and `hybridclaw agent activate <agent-id>` can set the default agent for new
13
+ requests.
14
+ - **Agent presentation profiles with image assets**: Agent configs and `.claw`
15
+ manifests can now declare `displayName` and workspace-relative `imageAsset`
16
+ metadata so web chat can show the active agent name and profile image.
17
+ - **Startup opening automation for fresh sessions**: Gateway/web startup can
18
+ proactively run `BOOTSTRAP.md` for one-time onboarding and `OPENING.md` for a
19
+ fresh-session opening message before the user types the first turn.
20
+
21
+ ### Changed
22
+
23
+ - **Bootstrap templates and workspace completion detection**: Refreshed the
24
+ shipped onboarding template around a lighter first-hatch flow, added the
25
+ optional `OPENING.md` template, and tightened workspace completion checks so
26
+ onboarding stays active until there is real post-bootstrap evidence.
27
+ - **Web chat default-agent routing and history context**: New web sessions now
28
+ follow the configured default agent, preserve agent presentation across
29
+ history reloads, and keep bootstrap placeholder state visible while startup
30
+ autostart is still running.
31
+
32
+ ### Fixed
33
+
34
+ - **HybridAI chatbot fallback resolution**: Gateway chat, scheduler runs, and
35
+ bootstrap autostart can fall back to `HybridAI /api/v1/bot-management/me`
36
+ when a session needs a chatbot id but none was configured explicitly.
37
+ - **Packaged agent source validation**: Official/package GitHub installs now
38
+ require exact directory matches, reject `.claw` shorthand guesses, and keep
39
+ external install skipping explicit.
40
+ - **Web chat composer focus styling**: Restored an accessible focus ring while
41
+ removing the extra focus border regression in the built-in chat surface.
42
+
43
+ ## [0.9.3](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.3)
44
+
45
+ ### Added
46
+
47
+ - **Hugging Face provider support**: Added `hybridclaw auth login|status|logout`
48
+ support for Hugging Face Inference providers, provider probing in `doctor`,
49
+ model-catalog discovery, and recommended-model handling for
50
+ `huggingface/...` model ids.
51
+ - **Admin jobs board and scheduler follow-ups**: Added a dedicated `Jobs`
52
+ page in the embedded admin console with richer scheduler metadata, kanban
53
+ views, and job movement/edit flows for proactive agent work.
54
+ - **Built-in tool toggles**: Added `hybridclaw tool list|enable|disable` so
55
+ operators can trim unused built-in prompt surfaces directly from runtime
56
+ config when `doctor` flags them.
57
+
58
+ ### Changed
59
+
60
+ - **Container bootstrap and publish verification**: Installed packages now
61
+ prefer published runtime images while source checkouts build locally, and
62
+ the publish workflow verifies pushed GHCR tags before the job completes.
63
+ - **Skill metadata parsing cleanup**: Consolidated frontmatter traversal and
64
+ metadata grouping in the skill loader so HybridClaw prefers native
65
+ HybridClaw metadata while still handling OpenClaw-compatible skill manifests
66
+ more predictably.
67
+
68
+ ### Fixed
69
+
70
+ - **Scheduled delivery and backlog retry reliability**: Tightened scheduler
71
+ follow-up handling, admin/API job state updates, backlog retries, and
72
+ channel/email delivery flows so queued jobs recover more predictably after
73
+ failures.
74
+ - **Router-provider credential normalization**: Shared API-key lookup and base
75
+ URL normalization across OpenRouter and Hugging Face so auth setup, runtime
76
+ credential resolution, and provider diagnostics behave more consistently.
77
+ - **Skill install/sync path stability**: Stabilized installed and synced skill
78
+ paths, prevented path collisions during sync, and deduplicated install specs
79
+ independent of key order so repeated skill installs are safer and more
80
+ consistent.
81
+ - **Malformed `requires` handling for skills**: HybridClaw now warns when a
82
+ skill declares malformed `requires` metadata instead of silently accepting
83
+ broken dependency declarations.
4
84
 
5
85
  ## [0.9.2](https://github.com/HybridAIOne/hybridclaw/tree/v0.9.2)
6
86
 
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
 
@@ -223,6 +231,7 @@ HybridClaw creates `~/.hybridclaw/config.json` on first run and hot-reloads most
223
231
  - `mcpServers.*` declares Model Context Protocol servers that HybridClaw connects to per session and exposes as namespaced tools (`server__tool`).
224
232
  - `sessionReset.*` controls automatic daily and idle session expiry. The default policy resets both daily and after 24 hours idle at `04:00` in the gateway host's local timezone; set `sessionReset.defaultPolicy.mode` to `none` to disable automatic resets.
225
233
  - `sessionRouting.*` controls DM continuity scope. The default `per-channel-peer` mode keeps direct messages isolated by transport and peer identity; `per-linked-identity` plus `sessionRouting.identityLinks` can collapse verified aliases onto one shared main session.
234
+ - `agents.defaultAgentId` selects the default agent for new requests and fresh web sessions when the user does not pin an agent explicitly.
226
235
  - `skills.disabled` and `skills.channelDisabled.{discord,msteams,whatsapp,email}` control global and per-channel skill availability. Use `hybridclaw skill enable|disable <name> [--channel <kind>]` or the TUI `/skill config` checklist to manage them.
227
236
  - `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.
228
237
  - `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.
@@ -232,7 +241,7 @@ HybridClaw creates `~/.hybridclaw/config.json` on first run and hot-reloads most
232
241
  - `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
242
  - `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
243
  - 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`.
244
+ - 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
245
  - 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
246
  - See [TRUST_MODEL.md](./TRUST_MODEL.md) for onboarding acceptance policy and [SECURITY.md](./SECURITY.md) for technical security guidelines.
238
247
  - 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).
@@ -304,6 +313,8 @@ hybridclaw agent list
304
313
  hybridclaw agent export main -o /tmp/main.claw
305
314
  hybridclaw agent inspect /tmp/main.claw
306
315
  hybridclaw agent install /tmp/main.claw --id demo-agent --yes
316
+ hybridclaw agent install official:charly-neumann-executive-briefing-chief-of-staff --yes
317
+ hybridclaw agent activate demo-agent
307
318
  ```
308
319
 
309
320
  - `agent export` exports the workspace plus optional bundled workspace skills
@@ -311,7 +322,13 @@ hybridclaw agent install /tmp/main.claw --id demo-agent --yes
311
322
  - `agent inspect` validates the manifest and prints archive metadata without
312
323
  extracting it.
313
324
  - `agent install` restores the agent, fills missing bootstrap files, and
314
- re-registers bundled content with the runtime.
325
+ re-registers bundled content with the runtime from a local `.claw` file or a
326
+ packaged GitHub source such as `official:<agent-dir>` or
327
+ `github:owner/repo[/<ref>]/<agent-dir>`.
328
+ - `.claw` manifests can include agent presentation metadata such as a
329
+ `displayName` and workspace-relative profile image asset for web chat.
330
+ - `agent activate <agent-id>` sets the default agent for new requests that do
331
+ not specify one explicitly.
315
332
  - Legacy aliases still work: `agent pack` maps to `export`, and `agent unpack`
316
333
  maps to `install`.
317
334
  - See [docs/development/extensibility/agent-packages.md](./docs/development/extensibility/agent-packages.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": {