@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.
- package/CHANGELOG.md +102 -0
- package/README.md +159 -94
- package/config.example.json +4 -0
- package/console/dist/assets/index-DYNzA7tN.js +16 -0
- package/console/dist/assets/index-VlYB7ecI.css +1 -0
- package/console/dist/assets/{terminal-CTA4H1Ek.js → terminal-BhH2ER7g.js} +2 -2
- package/console/dist/index.html +6 -2
- package/console/package.json +3 -0
- package/container/dist/approval-policy.js +108 -37
- package/container/dist/approval-policy.js.map +1 -1
- package/container/dist/browser-tools.js +19 -4
- package/container/dist/browser-tools.js.map +1 -1
- package/container/dist/index.js +2 -0
- package/container/dist/index.js.map +1 -1
- package/container/dist/providers/local-openai-compat.js +6 -2
- package/container/dist/providers/local-openai-compat.js.map +1 -1
- package/container/dist/providers/provider-ids.js +29 -0
- package/container/dist/providers/provider-ids.js.map +1 -0
- package/container/dist/providers/router.js +4 -15
- package/container/dist/providers/router.js.map +1 -1
- package/container/dist/providers/shared.js +3 -12
- package/container/dist/providers/shared.js.map +1 -1
- package/container/dist/tools.js +123 -0
- package/container/dist/tools.js.map +1 -1
- package/container/dist/types.js.map +1 -1
- package/container/package-lock.json +2 -2
- package/container/package.json +1 -1
- package/container/shared/model-names.js +1 -0
- package/container/src/approval-policy.ts +137 -44
- package/container/src/browser-tools.ts +20 -4
- package/container/src/index.ts +4 -0
- package/container/src/providers/local-openai-compat.ts +9 -2
- package/container/src/providers/provider-ids.ts +43 -0
- package/container/src/providers/router.ts +4 -21
- package/container/src/providers/shared.ts +4 -24
- package/container/src/tools.ts +147 -0
- package/container/src/types.ts +5 -0
- package/dist/agent/prompt-hooks.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.js +2 -0
- package/dist/agent/prompt-hooks.js.map +1 -1
- package/dist/agent/tool-summary.js +1 -1
- package/dist/agent/tool-summary.js.map +1 -1
- package/dist/agents/agent-registry.d.ts.map +1 -1
- package/dist/agents/agent-registry.js +1 -0
- package/dist/agents/agent-registry.js.map +1 -1
- package/dist/agents/claw-archive.d.ts.map +1 -1
- package/dist/agents/claw-archive.js +9 -3
- package/dist/agents/claw-archive.js.map +1 -1
- package/dist/approval-commands.d.ts +6 -0
- package/dist/approval-commands.d.ts.map +1 -0
- package/dist/approval-commands.js +18 -0
- package/dist/approval-commands.js.map +1 -0
- package/dist/audit/audit-events.d.ts.map +1 -1
- package/dist/audit/audit-events.js +2 -0
- package/dist/audit/audit-events.js.map +1 -1
- package/dist/auth/hybridai-auth.d.ts.map +1 -1
- package/dist/auth/hybridai-auth.js +14 -7
- package/dist/auth/hybridai-auth.js.map +1 -1
- package/dist/channels/discord/approval-buttons.d.ts.map +1 -1
- package/dist/channels/discord/approval-buttons.js +4 -1
- package/dist/channels/discord/approval-buttons.js.map +1 -1
- package/dist/cli/agent-migration-command.d.ts +4 -0
- package/dist/cli/agent-migration-command.d.ts.map +1 -0
- package/dist/cli/agent-migration-command.js +415 -0
- package/dist/cli/agent-migration-command.js.map +1 -0
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +55 -55
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/channels-command.d.ts.map +1 -1
- package/dist/cli/channels-command.js +20 -4
- package/dist/cli/channels-command.js.map +1 -1
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +97 -16
- package/dist/cli/help.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +51 -9
- package/dist/cli.js.map +1 -1
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +87 -0
- package/dist/command-registry.js.map +1 -1
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +41 -16
- package/dist/config/config.js.map +1 -1
- package/dist/config/runtime-config-revisions.d.ts.map +1 -1
- package/dist/config/runtime-config-revisions.js +54 -50
- package/dist/config/runtime-config-revisions.js.map +1 -1
- package/dist/config/runtime-config.d.ts +22 -1
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +220 -27
- package/dist/config/runtime-config.js.map +1 -1
- package/dist/doctor/checks/credentials.d.ts.map +1 -1
- package/dist/doctor/checks/credentials.js +15 -3
- package/dist/doctor/checks/credentials.js.map +1 -1
- package/dist/doctor/checks/local-backends.d.ts.map +1 -1
- package/dist/doctor/checks/local-backends.js +5 -1
- package/dist/doctor/checks/local-backends.js.map +1 -1
- package/dist/gateway/admin-terminal-protocol.d.ts +3 -0
- package/dist/gateway/admin-terminal-protocol.d.ts.map +1 -1
- package/dist/gateway/admin-terminal.d.ts +2 -0
- package/dist/gateway/admin-terminal.d.ts.map +1 -1
- package/dist/gateway/admin-terminal.js +20 -0
- package/dist/gateway/admin-terminal.js.map +1 -1
- package/dist/gateway/approval-confirmation.d.ts.map +1 -1
- package/dist/gateway/approval-confirmation.js +6 -0
- package/dist/gateway/approval-confirmation.js.map +1 -1
- package/dist/gateway/chat-approval.d.ts.map +1 -1
- package/dist/gateway/chat-approval.js +7 -0
- package/dist/gateway/chat-approval.js.map +1 -1
- package/dist/gateway/fullauto-runtime.d.ts +76 -0
- package/dist/gateway/fullauto-runtime.d.ts.map +1 -0
- package/dist/gateway/fullauto-runtime.js +204 -0
- package/dist/gateway/fullauto-runtime.js.map +1 -0
- package/dist/gateway/fullauto-workspace.d.ts +15 -0
- package/dist/gateway/fullauto-workspace.d.ts.map +1 -0
- package/dist/gateway/fullauto-workspace.js +111 -0
- package/dist/gateway/fullauto-workspace.js.map +1 -0
- package/dist/gateway/fullauto.d.ts +2 -76
- package/dist/gateway/fullauto.d.ts.map +1 -1
- package/dist/gateway/fullauto.js +8 -205
- package/dist/gateway/fullauto.js.map +1 -1
- package/dist/gateway/gateway-agent-cards.js +1 -1
- package/dist/gateway/gateway-agent-cards.js.map +1 -1
- package/dist/gateway/gateway-chat-service.d.ts +3 -0
- package/dist/gateway/gateway-chat-service.d.ts.map +1 -0
- package/dist/gateway/gateway-chat-service.js +1015 -0
- package/dist/gateway/gateway-chat-service.js.map +1 -0
- package/dist/gateway/gateway-http-server.d.ts +5 -1
- package/dist/gateway/gateway-http-server.d.ts.map +1 -1
- package/dist/gateway/gateway-http-server.js +463 -7
- package/dist/gateway/gateway-http-server.js.map +1 -1
- package/dist/gateway/gateway-plugin-runtime.d.ts +11 -0
- package/dist/gateway/gateway-plugin-runtime.d.ts.map +1 -0
- package/dist/gateway/gateway-plugin-runtime.js +21 -0
- package/dist/gateway/gateway-plugin-runtime.js.map +1 -0
- package/dist/gateway/gateway-plugin-service.d.ts +2 -13
- package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
- package/dist/gateway/gateway-plugin-service.js +4 -20
- package/dist/gateway/gateway-plugin-service.js.map +1 -1
- package/dist/gateway/gateway-scheduled-task-service.d.ts +20 -0
- package/dist/gateway/gateway-scheduled-task-service.d.ts.map +1 -0
- package/dist/gateway/gateway-scheduled-task-service.js +415 -0
- package/dist/gateway/gateway-scheduled-task-service.js.map +1 -0
- package/dist/gateway/gateway-service.d.ts +119 -21
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +613 -1478
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-types.d.ts +5 -4
- package/dist/gateway/gateway-types.d.ts.map +1 -1
- package/dist/gateway/gateway-types.js.map +1 -1
- package/dist/gateway/gateway.js +90 -19
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/openai-compatible-request.d.ts +27 -0
- package/dist/gateway/openai-compatible-request.d.ts.map +1 -0
- package/dist/gateway/openai-compatible-request.js +414 -0
- package/dist/gateway/openai-compatible-request.js.map +1 -0
- package/dist/gateway/openai-compatible-response.d.ts +57 -0
- package/dist/gateway/openai-compatible-response.d.ts.map +1 -0
- package/dist/gateway/openai-compatible-response.js +141 -0
- package/dist/gateway/openai-compatible-response.js.map +1 -0
- package/dist/gateway/openai-compatible.d.ts +4 -0
- package/dist/gateway/openai-compatible.d.ts.map +1 -0
- package/dist/gateway/openai-compatible.js +193 -0
- package/dist/gateway/openai-compatible.js.map +1 -0
- package/dist/gateway/text-channel-commands.d.ts.map +1 -1
- package/dist/gateway/text-channel-commands.js +23 -8
- package/dist/gateway/text-channel-commands.js.map +1 -1
- package/dist/infra/container-runner.d.ts.map +1 -1
- package/dist/infra/container-runner.js +1 -0
- package/dist/infra/container-runner.js.map +1 -1
- package/dist/infra/container-setup.d.ts.map +1 -1
- package/dist/infra/container-setup.js +14 -5
- package/dist/infra/container-setup.js.map +1 -1
- package/dist/infra/host-runner.d.ts.map +1 -1
- package/dist/infra/host-runner.js +19 -0
- package/dist/infra/host-runner.js.map +1 -1
- package/dist/media/audio-transcription-backends.d.ts.map +1 -1
- package/dist/media/audio-transcription-backends.js +17 -5
- package/dist/media/audio-transcription-backends.js.map +1 -1
- package/dist/media/pdf-context.js +1 -1
- package/dist/media/pdf-context.js.map +1 -1
- package/dist/memory/db.d.ts.map +1 -1
- package/dist/memory/db.js +14 -3
- package/dist/memory/db.js.map +1 -1
- package/dist/migration/agent-home-migration.d.ts +35 -0
- package/dist/migration/agent-home-migration.d.ts.map +1 -0
- package/dist/migration/agent-home-migration.js +1585 -0
- package/dist/migration/agent-home-migration.js.map +1 -0
- package/dist/model-selection.d.ts +7 -0
- package/dist/model-selection.d.ts.map +1 -1
- package/dist/model-selection.js +10 -0
- package/dist/model-selection.js.map +1 -1
- package/dist/onboarding.d.ts +1 -0
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +186 -34
- package/dist/onboarding.js.map +1 -1
- package/dist/providers/auxiliary.d.ts +2 -1
- package/dist/providers/auxiliary.d.ts.map +1 -1
- package/dist/providers/auxiliary.js +1 -0
- package/dist/providers/auxiliary.js.map +1 -1
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +3 -2
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/local-discovery.d.ts.map +1 -1
- package/dist/providers/local-discovery.js +13 -3
- package/dist/providers/local-discovery.js.map +1 -1
- package/dist/providers/local-health.d.ts +1 -1
- package/dist/providers/local-health.d.ts.map +1 -1
- package/dist/providers/local-health.js +8 -2
- package/dist/providers/local-health.js.map +1 -1
- package/dist/providers/local-openai-compat.d.ts +1 -0
- package/dist/providers/local-openai-compat.d.ts.map +1 -1
- package/dist/providers/local-openai-compat.js +5 -1
- package/dist/providers/local-openai-compat.js.map +1 -1
- package/dist/providers/local-types.d.ts +3 -1
- package/dist/providers/local-types.d.ts.map +1 -1
- package/dist/providers/model-catalog.d.ts +2 -1
- package/dist/providers/model-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog.js +5 -9
- package/dist/providers/model-catalog.js.map +1 -1
- package/dist/providers/provider-ids.d.ts +13 -0
- package/dist/providers/provider-ids.d.ts.map +1 -0
- package/dist/providers/provider-ids.js +40 -0
- package/dist/providers/provider-ids.js.map +1 -0
- package/dist/providers/task-routing.d.ts +2 -1
- package/dist/providers/task-routing.d.ts.map +1 -1
- package/dist/providers/task-routing.js +5 -9
- package/dist/providers/task-routing.js.map +1 -1
- package/dist/providers/types.d.ts +2 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/security/runtime-secrets-bootstrap.d.ts +2 -0
- package/dist/security/runtime-secrets-bootstrap.d.ts.map +1 -0
- package/dist/security/runtime-secrets-bootstrap.js +6 -0
- package/dist/security/runtime-secrets-bootstrap.js.map +1 -0
- package/dist/security/runtime-secrets-migration.d.ts +13 -0
- package/dist/security/runtime-secrets-migration.d.ts.map +1 -0
- package/dist/security/runtime-secrets-migration.js +45 -0
- package/dist/security/runtime-secrets-migration.js.map +1 -0
- package/dist/security/runtime-secrets.d.ts +12 -1
- package/dist/security/runtime-secrets.d.ts.map +1 -1
- package/dist/security/runtime-secrets.js +513 -55
- package/dist/security/runtime-secrets.js.map +1 -1
- package/dist/security/secret-refs.d.ts +27 -0
- package/dist/security/secret-refs.d.ts.map +1 -0
- package/dist/security/secret-refs.js +85 -0
- package/dist/security/secret-refs.js.map +1 -0
- package/dist/skills/skills-import-hubs.d.ts.map +1 -1
- package/dist/skills/skills-import-hubs.js +71 -7
- package/dist/skills/skills-import-hubs.js.map +1 -1
- package/dist/tui-approval.d.ts +1 -0
- package/dist/tui-approval.d.ts.map +1 -1
- package/dist/tui-approval.js +2 -1
- package/dist/tui-approval.js.map +1 -1
- package/dist/tui-banner.d.ts.map +1 -1
- package/dist/tui-banner.js +3 -0
- package/dist/tui-banner.js.map +1 -1
- package/dist/tui-slash-command.d.ts.map +1 -1
- package/dist/tui-slash-command.js +7 -3
- package/dist/tui-slash-command.js.map +1 -1
- package/dist/tui-slash-menu.d.ts.map +1 -1
- package/dist/tui-slash-menu.js +26 -4
- package/dist/tui-slash-menu.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +56 -32
- package/dist/tui.js.map +1 -1
- package/dist/types/execution.d.ts +3 -1
- package/dist/types/execution.d.ts.map +1 -1
- package/dist/types/models.d.ts +2 -1
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/models.js.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +2 -0
- package/dist/update.js.map +1 -1
- package/dist/utils/approval-text.d.ts +2 -0
- package/dist/utils/approval-text.d.ts.map +1 -0
- package/dist/utils/approval-text.js +13 -0
- package/dist/utils/approval-text.js.map +1 -0
- package/docs/404.html +1 -1
- package/docs/agents.html +4 -0
- package/docs/chat.html +871 -37
- package/docs/development/README.md +12 -14
- package/docs/development/agents.md +1 -1
- package/docs/development/getting-started/README.md +2 -1
- package/docs/development/getting-started/authentication.md +27 -3
- package/docs/development/getting-started/channels.md +401 -0
- package/docs/development/getting-started/installation.md +2 -2
- package/docs/development/getting-started/quickstart.md +10 -2
- package/docs/development/guides/local-providers.md +7 -1
- package/docs/development/internals/runtime.md +15 -3
- package/docs/development/reference/commands.md +32 -3
- package/docs/development/reference/configuration.md +15 -2
- package/docs/development/reference/faq.md +24 -2
- package/docs/docs/index.html +1 -1
- package/docs/imessage.md +8 -8
- package/docs/index.html +46 -23
- package/docs/msteams.md +1 -1
- package/docs/static/docs.js +12 -2
- package/package.json +10 -2
- package/console/dist/assets/index-BriItkGy.css +0 -1
- package/console/dist/assets/index-CW6-V7lC.js +0 -16
- 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
|
[](https://hybridai.one)
|
|
10
10
|
[](https://discord.gg/jsVW4vJw27)
|
|
11
11
|
|
|
12
|
-
<img width="540" height="511" alt="
|
|
12
|
+
<img width="540" height="511" alt="HybridClaw - One AI brain across every channel" src="docs/hero.png" />
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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
|
-
-
|
|
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
|
-
##
|
|
187
|
+
## Secrets And Authenticated API Calls
|
|
182
188
|
|
|
183
|
-
|
|
189
|
+
HybridClaw can keep API keys out of model-visible prompts and tool arguments.
|
|
184
190
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
196
|
+
After that, the model can just ask for the API call in natural language:
|
|
192
197
|
|
|
193
|
-
|
|
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
|
-
-
|
|
196
|
-
|
|
197
|
-
-
|
|
198
|
-
|
|
199
|
-
-
|
|
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>
|
|
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
|
package/config.example.json
CHANGED