nodmix 2026.5.25
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 +11573 -0
- package/LICENSE +21 -0
- package/README.md +486 -0
- package/docs/.i18n/README.md +81 -0
- package/docs/.i18n/ar-navigation.json +18 -0
- package/docs/.i18n/de-navigation.json +18 -0
- package/docs/.i18n/es-navigation.json +18 -0
- package/docs/.i18n/fr-navigation.json +18 -0
- package/docs/.i18n/glossary.ar.json +78 -0
- package/docs/.i18n/glossary.de.json +78 -0
- package/docs/.i18n/glossary.es.json +78 -0
- package/docs/.i18n/glossary.fa.json +78 -0
- package/docs/.i18n/glossary.fr.json +78 -0
- package/docs/.i18n/glossary.id.json +78 -0
- package/docs/.i18n/glossary.it.json +78 -0
- package/docs/.i18n/glossary.ja-JP.json +98 -0
- package/docs/.i18n/glossary.ko.json +78 -0
- package/docs/.i18n/glossary.nl.json +78 -0
- package/docs/.i18n/glossary.pl.json +78 -0
- package/docs/.i18n/glossary.pt-BR.json +78 -0
- package/docs/.i18n/glossary.th.json +78 -0
- package/docs/.i18n/glossary.tr.json +78 -0
- package/docs/.i18n/glossary.uk.json +78 -0
- package/docs/.i18n/glossary.vi.json +78 -0
- package/docs/.i18n/glossary.zh-CN.json +1002 -0
- package/docs/.i18n/glossary.zh-TW.json +78 -0
- package/docs/.i18n/id-navigation.json +18 -0
- package/docs/.i18n/it-navigation.json +18 -0
- package/docs/.i18n/ja-navigation.json +18 -0
- package/docs/.i18n/ko-navigation.json +18 -0
- package/docs/.i18n/pl-navigation.json +18 -0
- package/docs/.i18n/pt-BR-navigation.json +18 -0
- package/docs/.i18n/tr-navigation.json +18 -0
- package/docs/.i18n/translation-workflow.md +111 -0
- package/docs/.i18n/zh-Hans-navigation.json +542 -0
- package/docs/AGENTS.md +36 -0
- package/docs/announcements/bluebubbles-imessage.md +79 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.svg +418 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/openclaw-logo-text.svg +418 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/pr/quick-settings-browser-tools.png +0 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith-light.svg +14 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex-light.svg +16 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/github-light.svg +3 -0
- package/docs/assets/sponsors/github.svg +3 -0
- package/docs/assets/sponsors/nvidia-dark.svg +9 -0
- package/docs/assets/sponsors/nvidia.svg +9 -0
- package/docs/assets/sponsors/openai-light.svg +3 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel-light.svg +5 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +124 -0
- package/docs/automation/auth-monitoring.md +11 -0
- package/docs/automation/clawflow.md +12 -0
- package/docs/automation/cron-jobs.md +500 -0
- package/docs/automation/cron-vs-heartbeat.md +11 -0
- package/docs/automation/gmail-pubsub.md +11 -0
- package/docs/automation/hooks.md +365 -0
- package/docs/automation/index.md +135 -0
- package/docs/automation/poll.md +12 -0
- package/docs/automation/standing-orders.md +250 -0
- package/docs/automation/taskflow.md +155 -0
- package/docs/automation/tasks.md +374 -0
- package/docs/automation/troubleshooting.md +12 -0
- package/docs/automation/webhook.md +12 -0
- package/docs/brave-search.md +11 -0
- package/docs/channels/access-groups.md +201 -0
- package/docs/channels/ambient-room-events.md +214 -0
- package/docs/channels/bot-loop-protection.md +131 -0
- package/docs/channels/broadcast-groups.md +472 -0
- package/docs/channels/channel-routing.md +162 -0
- package/docs/channels/clickclack.md +138 -0
- package/docs/channels/discord.md +1762 -0
- package/docs/channels/feishu.md +502 -0
- package/docs/channels/googlechat.md +284 -0
- package/docs/channels/group-messages.md +95 -0
- package/docs/channels/groups.md +519 -0
- package/docs/channels/imessage-from-bluebubbles.md +259 -0
- package/docs/channels/imessage.md +813 -0
- package/docs/channels/index.md +64 -0
- package/docs/channels/irc.md +253 -0
- package/docs/channels/line.md +243 -0
- package/docs/channels/location.md +71 -0
- package/docs/channels/matrix-migration.md +370 -0
- package/docs/channels/matrix-presentation.md +77 -0
- package/docs/channels/matrix-push-rules.md +150 -0
- package/docs/channels/matrix.md +921 -0
- package/docs/channels/mattermost.md +542 -0
- package/docs/channels/msteams.md +1042 -0
- package/docs/channels/nextcloud-talk.md +176 -0
- package/docs/channels/nostr.md +253 -0
- package/docs/channels/pairing.md +214 -0
- package/docs/channels/qqbot.md +309 -0
- package/docs/channels/signal.md +400 -0
- package/docs/channels/slack.md +1564 -0
- package/docs/channels/synology-chat.md +187 -0
- package/docs/channels/telegram.md +1107 -0
- package/docs/channels/tlon.md +296 -0
- package/docs/channels/troubleshooting.md +161 -0
- package/docs/channels/twitch.md +431 -0
- package/docs/channels/wechat.md +171 -0
- package/docs/channels/whatsapp.md +739 -0
- package/docs/channels/yuanbao.md +416 -0
- package/docs/channels/zalo.md +253 -0
- package/docs/channels/zalouser.md +199 -0
- package/docs/ci.md +612 -0
- package/docs/clawhub/publishing.md +96 -0
- package/docs/cli/acp.md +370 -0
- package/docs/cli/agent.md +103 -0
- package/docs/cli/agents.md +232 -0
- package/docs/cli/approvals.md +190 -0
- package/docs/cli/backup.md +97 -0
- package/docs/cli/browser.md +307 -0
- package/docs/cli/channels.md +154 -0
- package/docs/cli/clawbot.md +25 -0
- package/docs/cli/commitments.md +90 -0
- package/docs/cli/completion.md +39 -0
- package/docs/cli/config.md +504 -0
- package/docs/cli/configure.md +77 -0
- package/docs/cli/crestodian.md +332 -0
- package/docs/cli/cron.md +281 -0
- package/docs/cli/daemon.md +67 -0
- package/docs/cli/dashboard.md +33 -0
- package/docs/cli/devices.md +204 -0
- package/docs/cli/directory.md +68 -0
- package/docs/cli/dns.md +53 -0
- package/docs/cli/docs.md +73 -0
- package/docs/cli/doctor.md +237 -0
- package/docs/cli/flows.md +52 -0
- package/docs/cli/gateway.md +567 -0
- package/docs/cli/health.md +43 -0
- package/docs/cli/hooks.md +345 -0
- package/docs/cli/index.md +396 -0
- package/docs/cli/infer.md +364 -0
- package/docs/cli/logs.md +65 -0
- package/docs/cli/mcp.md +529 -0
- package/docs/cli/memory.md +183 -0
- package/docs/cli/message.md +317 -0
- package/docs/cli/migrate.md +290 -0
- package/docs/cli/models.md +224 -0
- package/docs/cli/node.md +177 -0
- package/docs/cli/nodes.md +76 -0
- package/docs/cli/onboard.md +245 -0
- package/docs/cli/pairing.md +77 -0
- package/docs/cli/path.md +502 -0
- package/docs/cli/plugins.md +454 -0
- package/docs/cli/policy.md +418 -0
- package/docs/cli/proxy.md +89 -0
- package/docs/cli/qr.md +56 -0
- package/docs/cli/reset.md +39 -0
- package/docs/cli/sandbox.md +208 -0
- package/docs/cli/secrets.md +202 -0
- package/docs/cli/security.md +124 -0
- package/docs/cli/sessions.md +164 -0
- package/docs/cli/setup.md +59 -0
- package/docs/cli/skills.md +102 -0
- package/docs/cli/status.md +45 -0
- package/docs/cli/system.md +89 -0
- package/docs/cli/tasks.md +111 -0
- package/docs/cli/tui.md +89 -0
- package/docs/cli/uninstall.md +44 -0
- package/docs/cli/update.md +242 -0
- package/docs/cli/voicecall.md +204 -0
- package/docs/cli/webhooks.md +117 -0
- package/docs/cli/wiki.md +256 -0
- package/docs/concepts/active-memory.md +856 -0
- package/docs/concepts/agent-loop.md +185 -0
- package/docs/concepts/agent-runtimes.md +243 -0
- package/docs/concepts/agent-workspace.md +230 -0
- package/docs/concepts/agent.md +136 -0
- package/docs/concepts/architecture.md +154 -0
- package/docs/concepts/channel-docking.md +145 -0
- package/docs/concepts/commitments.md +150 -0
- package/docs/concepts/compaction.md +203 -0
- package/docs/concepts/context-engine.md +306 -0
- package/docs/concepts/context.md +199 -0
- package/docs/concepts/delegate-architecture.md +319 -0
- package/docs/concepts/dreaming.md +261 -0
- package/docs/concepts/experimental-features.md +108 -0
- package/docs/concepts/features.md +91 -0
- package/docs/concepts/mantis-slack-desktop-runbook.md +202 -0
- package/docs/concepts/mantis.md +740 -0
- package/docs/concepts/markdown-formatting.md +139 -0
- package/docs/concepts/memory-builtin.md +146 -0
- package/docs/concepts/memory-honcho.md +144 -0
- package/docs/concepts/memory-qmd.md +271 -0
- package/docs/concepts/memory-search.md +166 -0
- package/docs/concepts/memory.md +258 -0
- package/docs/concepts/message-lifecycle-refactor.md +1128 -0
- package/docs/concepts/messages.md +214 -0
- package/docs/concepts/model-failover.md +385 -0
- package/docs/concepts/model-providers.md +715 -0
- package/docs/concepts/models.md +370 -0
- package/docs/concepts/multi-agent.md +619 -0
- package/docs/concepts/oauth.md +198 -0
- package/docs/concepts/openclaw-sdk.md +323 -0
- package/docs/concepts/parallel-specialist-lanes.md +127 -0
- package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
- package/docs/concepts/presence.md +117 -0
- package/docs/concepts/progress-drafts.md +362 -0
- package/docs/concepts/qa-e2e-automation.md +820 -0
- package/docs/concepts/qa-matrix.md +139 -0
- package/docs/concepts/queue-steering.md +90 -0
- package/docs/concepts/queue.md +122 -0
- package/docs/concepts/retry.md +86 -0
- package/docs/concepts/session-pruning.md +104 -0
- package/docs/concepts/session-tool.md +190 -0
- package/docs/concepts/session.md +164 -0
- package/docs/concepts/soul.md +116 -0
- package/docs/concepts/streaming.md +251 -0
- package/docs/concepts/system-prompt.md +310 -0
- package/docs/concepts/timezone.md +47 -0
- package/docs/concepts/typebox.md +309 -0
- package/docs/concepts/typing-indicators.md +88 -0
- package/docs/concepts/usage-tracking.md +66 -0
- package/docs/date-time.md +126 -0
- package/docs/debug/node-issue.md +90 -0
- package/docs/diagnostics/flags.md +138 -0
- package/docs/docs.json +1832 -0
- package/docs/gateway/authentication.md +239 -0
- package/docs/gateway/background-process.md +147 -0
- package/docs/gateway/bonjour.md +303 -0
- package/docs/gateway/bridge-protocol.md +94 -0
- package/docs/gateway/cli-backends.md +420 -0
- package/docs/gateway/config-agents.md +1514 -0
- package/docs/gateway/config-channels.md +945 -0
- package/docs/gateway/config-tools.md +769 -0
- package/docs/gateway/configuration-examples.md +705 -0
- package/docs/gateway/configuration-reference.md +1393 -0
- package/docs/gateway/configuration.md +737 -0
- package/docs/gateway/diagnostics.md +213 -0
- package/docs/gateway/discovery.md +154 -0
- package/docs/gateway/doctor.md +574 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +73 -0
- package/docs/gateway/heartbeat.md +493 -0
- package/docs/gateway/index.md +383 -0
- package/docs/gateway/local-model-services.md +205 -0
- package/docs/gateway/local-models.md +355 -0
- package/docs/gateway/logging.md +149 -0
- package/docs/gateway/multiple-gateways.md +178 -0
- package/docs/gateway/network-model.md +15 -0
- package/docs/gateway/openai-http-api.md +350 -0
- package/docs/gateway/openresponses-http-api.md +347 -0
- package/docs/gateway/openshell.md +316 -0
- package/docs/gateway/opentelemetry.md +404 -0
- package/docs/gateway/operator-scopes.md +111 -0
- package/docs/gateway/pairing.md +207 -0
- package/docs/gateway/prometheus.md +230 -0
- package/docs/gateway/protocol.md +803 -0
- package/docs/gateway/remote-gateway-readme.md +169 -0
- package/docs/gateway/remote.md +280 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +146 -0
- package/docs/gateway/sandboxing.md +545 -0
- package/docs/gateway/secrets-plan-contract.md +114 -0
- package/docs/gateway/secrets.md +609 -0
- package/docs/gateway/security/audit-checks.md +127 -0
- package/docs/gateway/security/index.md +1326 -0
- package/docs/gateway/security/secure-file-operations.md +76 -0
- package/docs/gateway/tailscale.md +156 -0
- package/docs/gateway/tools-invoke-http-api.md +169 -0
- package/docs/gateway/troubleshooting.md +772 -0
- package/docs/gateway/trusted-proxy-auth.md +451 -0
- package/docs/help/debugging.md +344 -0
- package/docs/help/environment.md +214 -0
- package/docs/help/faq-first-run.md +867 -0
- package/docs/help/faq-models.md +553 -0
- package/docs/help/faq.md +1975 -0
- package/docs/help/gpt55-codex-agentic-parity-maintainers.md +196 -0
- package/docs/help/gpt55-codex-agentic-parity.md +230 -0
- package/docs/help/index.md +39 -0
- package/docs/help/scripts.md +56 -0
- package/docs/help/testing-live.md +580 -0
- package/docs/help/testing-updates-plugins.md +291 -0
- package/docs/help/testing.md +928 -0
- package/docs/help/troubleshooting.md +424 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-get-group-id.png +0 -0
- package/docs/images/groups-flow.svg +52 -0
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +233 -0
- package/docs/install/azure.md +315 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/clawdock.md +112 -0
- package/docs/install/development-channels.md +135 -0
- package/docs/install/digitalocean.md +174 -0
- package/docs/install/docker-vm-runtime.md +154 -0
- package/docs/install/docker.md +562 -0
- package/docs/install/exe-dev.md +201 -0
- package/docs/install/fly.md +524 -0
- package/docs/install/gcp.md +418 -0
- package/docs/install/hetzner.md +285 -0
- package/docs/install/hostinger.md +98 -0
- package/docs/install/index.md +221 -0
- package/docs/install/installer.md +455 -0
- package/docs/install/kubernetes.md +196 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-claude.md +165 -0
- package/docs/install/migrating-hermes.md +177 -0
- package/docs/install/migrating.md +137 -0
- package/docs/install/nix.md +112 -0
- package/docs/install/node.md +142 -0
- package/docs/install/northflank.mdx +44 -0
- package/docs/install/oracle.md +218 -0
- package/docs/install/podman.md +210 -0
- package/docs/install/railway.mdx +92 -0
- package/docs/install/raspberry-pi.md +234 -0
- package/docs/install/render.mdx +167 -0
- package/docs/install/uninstall.md +131 -0
- package/docs/install/updating.md +280 -0
- package/docs/logging.md +318 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +72 -0
- package/docs/nodes/audio.md +215 -0
- package/docs/nodes/camera.md +166 -0
- package/docs/nodes/images.md +77 -0
- package/docs/nodes/index.md +439 -0
- package/docs/nodes/location-command.md +102 -0
- package/docs/nodes/media-understanding.md +469 -0
- package/docs/nodes/talk.md +154 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +93 -0
- package/docs/perplexity.md +11 -0
- package/docs/pi-dev.md +82 -0
- package/docs/pi.md +573 -0
- package/docs/plan/codex-context-engine-harness.md +624 -0
- package/docs/plan/ui-channels.md +284 -0
- package/docs/platforms/android.md +285 -0
- package/docs/platforms/digitalocean.md +12 -0
- package/docs/platforms/index.md +60 -0
- package/docs/platforms/ios.md +283 -0
- package/docs/platforms/linux.md +141 -0
- package/docs/platforms/mac/bundled-gateway.md +79 -0
- package/docs/platforms/mac/canvas.md +128 -0
- package/docs/platforms/mac/child-process.md +72 -0
- package/docs/platforms/mac/dev-setup.md +112 -0
- package/docs/platforms/mac/health.md +39 -0
- package/docs/platforms/mac/icon.md +36 -0
- package/docs/platforms/mac/logging.md +62 -0
- package/docs/platforms/mac/menu-bar.md +93 -0
- package/docs/platforms/mac/peekaboo.md +92 -0
- package/docs/platforms/mac/permissions.md +53 -0
- package/docs/platforms/mac/remote.md +123 -0
- package/docs/platforms/mac/signing.md +52 -0
- package/docs/platforms/mac/skills.md +43 -0
- package/docs/platforms/mac/voice-overlay.md +66 -0
- package/docs/platforms/mac/voicewake.md +73 -0
- package/docs/platforms/mac/webchat.md +54 -0
- package/docs/platforms/mac/xpc.md +66 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +12 -0
- package/docs/platforms/raspberry-pi.md +13 -0
- package/docs/platforms/windows.md +286 -0
- package/docs/plugins/adding-capabilities.md +133 -0
- package/docs/plugins/admin-http-rpc.md +216 -0
- package/docs/plugins/agent-tools.md +13 -0
- package/docs/plugins/architecture-internals.md +1195 -0
- package/docs/plugins/architecture.md +481 -0
- package/docs/plugins/building-extensions.md +13 -0
- package/docs/plugins/building-plugins.md +330 -0
- package/docs/plugins/bundles.md +310 -0
- package/docs/plugins/cli-backend-plugins.md +310 -0
- package/docs/plugins/codex-computer-use.md +293 -0
- package/docs/plugins/codex-harness-reference.md +409 -0
- package/docs/plugins/codex-harness-runtime.md +247 -0
- package/docs/plugins/codex-harness.md +746 -0
- package/docs/plugins/codex-native-plugins.md +276 -0
- package/docs/plugins/community.md +77 -0
- package/docs/plugins/compatibility.md +164 -0
- package/docs/plugins/dependency-resolution.md +143 -0
- package/docs/plugins/google-meet.md +1737 -0
- package/docs/plugins/hooks.md +459 -0
- package/docs/plugins/install-overrides.md +80 -0
- package/docs/plugins/manage-plugins.md +210 -0
- package/docs/plugins/manifest.md +1359 -0
- package/docs/plugins/memory-lancedb.md +385 -0
- package/docs/plugins/memory-wiki.md +529 -0
- package/docs/plugins/message-presentation.md +473 -0
- package/docs/plugins/oc-path.md +166 -0
- package/docs/plugins/plugin-inventory.md +182 -0
- package/docs/plugins/reference/acpx.md +23 -0
- package/docs/plugins/reference/admin-http-rpc.md +23 -0
- package/docs/plugins/reference/alibaba.md +23 -0
- package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
- package/docs/plugins/reference/amazon-bedrock.md +23 -0
- package/docs/plugins/reference/anthropic-vertex.md +19 -0
- package/docs/plugins/reference/anthropic.md +23 -0
- package/docs/plugins/reference/arcee.md +23 -0
- package/docs/plugins/reference/azure-speech.md +23 -0
- package/docs/plugins/reference/bonjour.md +19 -0
- package/docs/plugins/reference/brave.md +23 -0
- package/docs/plugins/reference/browser.md +23 -0
- package/docs/plugins/reference/byteplus.md +19 -0
- package/docs/plugins/reference/canvas.md +19 -0
- package/docs/plugins/reference/cerebras.md +23 -0
- package/docs/plugins/reference/chutes.md +23 -0
- package/docs/plugins/reference/clickclack.md +23 -0
- package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
- package/docs/plugins/reference/codex.md +23 -0
- package/docs/plugins/reference/comfy.md +23 -0
- package/docs/plugins/reference/copilot-proxy.md +19 -0
- package/docs/plugins/reference/deepgram.md +23 -0
- package/docs/plugins/reference/deepinfra.md +23 -0
- package/docs/plugins/reference/deepseek.md +23 -0
- package/docs/plugins/reference/diagnostics-otel.md +19 -0
- package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
- package/docs/plugins/reference/diffs.md +19 -0
- package/docs/plugins/reference/discord.md +23 -0
- package/docs/plugins/reference/document-extract.md +23 -0
- package/docs/plugins/reference/duckduckgo.md +23 -0
- package/docs/plugins/reference/elevenlabs.md +23 -0
- package/docs/plugins/reference/exa.md +23 -0
- package/docs/plugins/reference/fal.md +23 -0
- package/docs/plugins/reference/feishu.md +23 -0
- package/docs/plugins/reference/file-transfer.md +19 -0
- package/docs/plugins/reference/firecrawl.md +23 -0
- package/docs/plugins/reference/fireworks.md +23 -0
- package/docs/plugins/reference/github-copilot.md +23 -0
- package/docs/plugins/reference/google-meet.md +23 -0
- package/docs/plugins/reference/google.md +23 -0
- package/docs/plugins/reference/googlechat.md +23 -0
- package/docs/plugins/reference/gradium.md +23 -0
- package/docs/plugins/reference/groq.md +23 -0
- package/docs/plugins/reference/huggingface.md +23 -0
- package/docs/plugins/reference/imessage.md +23 -0
- package/docs/plugins/reference/inworld.md +23 -0
- package/docs/plugins/reference/irc.md +23 -0
- package/docs/plugins/reference/kilocode.md +23 -0
- package/docs/plugins/reference/kimi.md +23 -0
- package/docs/plugins/reference/line.md +23 -0
- package/docs/plugins/reference/litellm.md +23 -0
- package/docs/plugins/reference/llm-task.md +19 -0
- package/docs/plugins/reference/lmstudio.md +23 -0
- package/docs/plugins/reference/lobster.md +19 -0
- package/docs/plugins/reference/matrix.md +23 -0
- package/docs/plugins/reference/mattermost.md +23 -0
- package/docs/plugins/reference/memory-core.md +19 -0
- package/docs/plugins/reference/memory-lancedb.md +23 -0
- package/docs/plugins/reference/memory-wiki.md +23 -0
- package/docs/plugins/reference/microsoft-foundry.md +19 -0
- package/docs/plugins/reference/microsoft.md +19 -0
- package/docs/plugins/reference/migrate-claude.md +19 -0
- package/docs/plugins/reference/migrate-hermes.md +19 -0
- package/docs/plugins/reference/minimax.md +23 -0
- package/docs/plugins/reference/mistral.md +23 -0
- package/docs/plugins/reference/moonshot.md +23 -0
- package/docs/plugins/reference/msteams.md +23 -0
- package/docs/plugins/reference/nextcloud-talk.md +23 -0
- package/docs/plugins/reference/nostr.md +23 -0
- package/docs/plugins/reference/nvidia.md +23 -0
- package/docs/plugins/reference/oc-path.md +23 -0
- package/docs/plugins/reference/ollama.md +23 -0
- package/docs/plugins/reference/open-prose.md +19 -0
- package/docs/plugins/reference/openai.md +23 -0
- package/docs/plugins/reference/opencode-go.md +23 -0
- package/docs/plugins/reference/opencode.md +23 -0
- package/docs/plugins/reference/openrouter.md +23 -0
- package/docs/plugins/reference/openshell.md +19 -0
- package/docs/plugins/reference/perplexity.md +23 -0
- package/docs/plugins/reference/policy.md +23 -0
- package/docs/plugins/reference/qa-channel.md +23 -0
- package/docs/plugins/reference/qa-lab.md +19 -0
- package/docs/plugins/reference/qa-matrix.md +19 -0
- package/docs/plugins/reference/qianfan.md +23 -0
- package/docs/plugins/reference/qqbot.md +23 -0
- package/docs/plugins/reference/qwen.md +23 -0
- package/docs/plugins/reference/runway.md +23 -0
- package/docs/plugins/reference/searxng.md +19 -0
- package/docs/plugins/reference/senseaudio.md +23 -0
- package/docs/plugins/reference/sglang.md +23 -0
- package/docs/plugins/reference/signal.md +23 -0
- package/docs/plugins/reference/skill-workshop.md +23 -0
- package/docs/plugins/reference/slack.md +23 -0
- package/docs/plugins/reference/stepfun.md +23 -0
- package/docs/plugins/reference/synology-chat.md +23 -0
- package/docs/plugins/reference/synthetic.md +23 -0
- package/docs/plugins/reference/tavily.md +23 -0
- package/docs/plugins/reference/telegram.md +23 -0
- package/docs/plugins/reference/tencent.md +23 -0
- package/docs/plugins/reference/tlon.md +23 -0
- package/docs/plugins/reference/together.md +23 -0
- package/docs/plugins/reference/tokenjuice.md +23 -0
- package/docs/plugins/reference/tts-local-cli.md +19 -0
- package/docs/plugins/reference/twitch.md +23 -0
- package/docs/plugins/reference/venice.md +23 -0
- package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
- package/docs/plugins/reference/vllm.md +23 -0
- package/docs/plugins/reference/voice-call.md +23 -0
- package/docs/plugins/reference/volcengine.md +23 -0
- package/docs/plugins/reference/voyage.md +19 -0
- package/docs/plugins/reference/vydra.md +23 -0
- package/docs/plugins/reference/web-readability.md +19 -0
- package/docs/plugins/reference/webhooks.md +23 -0
- package/docs/plugins/reference/whatsapp.md +23 -0
- package/docs/plugins/reference/xai.md +23 -0
- package/docs/plugins/reference/xiaomi.md +23 -0
- package/docs/plugins/reference/zai.md +23 -0
- package/docs/plugins/reference/zalo.md +23 -0
- package/docs/plugins/reference/zalouser.md +24 -0
- package/docs/plugins/reference.md +138 -0
- package/docs/plugins/sdk-agent-harness.md +339 -0
- package/docs/plugins/sdk-channel-ingress.md +137 -0
- package/docs/plugins/sdk-channel-message.md +458 -0
- package/docs/plugins/sdk-channel-plugins.md +762 -0
- package/docs/plugins/sdk-channel-turn.md +580 -0
- package/docs/plugins/sdk-entrypoints.md +333 -0
- package/docs/plugins/sdk-migration.md +949 -0
- package/docs/plugins/sdk-overview.md +501 -0
- package/docs/plugins/sdk-provider-plugins.md +807 -0
- package/docs/plugins/sdk-runtime.md +676 -0
- package/docs/plugins/sdk-setup.md +550 -0
- package/docs/plugins/sdk-subpaths.md +396 -0
- package/docs/plugins/sdk-testing.md +401 -0
- package/docs/plugins/skill-workshop.md +713 -0
- package/docs/plugins/tool-plugins.md +411 -0
- package/docs/plugins/voice-call.md +943 -0
- package/docs/plugins/webhooks.md +192 -0
- package/docs/plugins/zalouser.md +86 -0
- package/docs/prose.md +137 -0
- package/docs/providers/alibaba.md +158 -0
- package/docs/providers/anthropic.md +344 -0
- package/docs/providers/arcee.md +144 -0
- package/docs/providers/azure-speech.md +119 -0
- package/docs/providers/bedrock-mantle.md +211 -0
- package/docs/providers/bedrock.md +414 -0
- package/docs/providers/cerebras.md +130 -0
- package/docs/providers/chutes.md +153 -0
- package/docs/providers/claude-max-api-proxy.md +188 -0
- package/docs/providers/cloudflare-ai-gateway.md +119 -0
- package/docs/providers/comfy.md +362 -0
- package/docs/providers/deepgram.md +184 -0
- package/docs/providers/deepinfra.md +87 -0
- package/docs/providers/deepseek.md +146 -0
- package/docs/providers/ds4.md +309 -0
- package/docs/providers/elevenlabs.md +130 -0
- package/docs/providers/fal.md +204 -0
- package/docs/providers/fireworks.md +144 -0
- package/docs/providers/github-copilot.md +225 -0
- package/docs/providers/glm.md +137 -0
- package/docs/providers/google.md +472 -0
- package/docs/providers/gradium.md +123 -0
- package/docs/providers/groq.md +180 -0
- package/docs/providers/huggingface.md +235 -0
- package/docs/providers/index.md +102 -0
- package/docs/providers/inferrs.md +272 -0
- package/docs/providers/inworld.md +120 -0
- package/docs/providers/kilocode.md +135 -0
- package/docs/providers/litellm.md +234 -0
- package/docs/providers/lmstudio.md +224 -0
- package/docs/providers/minimax.md +505 -0
- package/docs/providers/mistral.md +235 -0
- package/docs/providers/models.md +65 -0
- package/docs/providers/moonshot.md +413 -0
- package/docs/providers/nvidia.md +140 -0
- package/docs/providers/ollama.md +1180 -0
- package/docs/providers/openai.md +1057 -0
- package/docs/providers/opencode-go.md +123 -0
- package/docs/providers/opencode.md +149 -0
- package/docs/providers/openrouter.md +349 -0
- package/docs/providers/perplexity-provider.md +123 -0
- package/docs/providers/qianfan.md +132 -0
- package/docs/providers/qwen.md +332 -0
- package/docs/providers/runway.md +103 -0
- package/docs/providers/senseaudio.md +68 -0
- package/docs/providers/sglang.md +161 -0
- package/docs/providers/stepfun.md +229 -0
- package/docs/providers/synthetic.md +154 -0
- package/docs/providers/tencent.md +130 -0
- package/docs/providers/together.md +141 -0
- package/docs/providers/venice.md +315 -0
- package/docs/providers/vercel-ai-gateway.md +128 -0
- package/docs/providers/vllm.md +383 -0
- package/docs/providers/volcengine.md +199 -0
- package/docs/providers/vydra.md +180 -0
- package/docs/providers/xai.md +560 -0
- package/docs/providers/xiaomi.md +188 -0
- package/docs/providers/zai.md +203 -0
- package/docs/refactor/access.md +9 -0
- package/docs/refactor/acp.md +298 -0
- package/docs/refactor/canvas.md +131 -0
- package/docs/refactor/ingress-core.md +341 -0
- package/docs/reference/AGENTS.default.md +129 -0
- package/docs/reference/RELEASING.md +767 -0
- package/docs/reference/api-usage-costs.md +202 -0
- package/docs/reference/application-modernization-plan.md +208 -0
- package/docs/reference/code-mode.md +757 -0
- package/docs/reference/credits.md +33 -0
- package/docs/reference/device-models.md +50 -0
- package/docs/reference/full-release-validation.md +202 -0
- package/docs/reference/memory-config.md +630 -0
- package/docs/reference/openclaw-sdk-api-design.md +390 -0
- package/docs/reference/prompt-caching.md +358 -0
- package/docs/reference/rich-output-protocol.md +79 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +159 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +663 -0
- package/docs/reference/session-management-compaction.md +461 -0
- package/docs/reference/templates/AGENTS.dev.md +89 -0
- package/docs/reference/templates/AGENTS.md +225 -0
- package/docs/reference/templates/BOOT.md +16 -0
- package/docs/reference/templates/BOOTSTRAP.md +66 -0
- package/docs/reference/templates/HEARTBEAT.md +16 -0
- package/docs/reference/templates/IDENTITY.dev.md +52 -0
- package/docs/reference/templates/IDENTITY.md +34 -0
- package/docs/reference/templates/SOUL.dev.md +82 -0
- package/docs/reference/templates/SOUL.md +49 -0
- package/docs/reference/templates/TOOLS.dev.md +29 -0
- package/docs/reference/templates/TOOLS.md +51 -0
- package/docs/reference/templates/USER.dev.md +23 -0
- package/docs/reference/templates/USER.md +28 -0
- package/docs/reference/test.md +239 -0
- package/docs/reference/token-use.md +233 -0
- package/docs/reference/transcript-hygiene.md +214 -0
- package/docs/reference/wizard.md +252 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +170 -0
- package/docs/security/incident-response.md +59 -0
- package/docs/security/network-proxy.md +268 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/start/bootstrapping.md +49 -0
- package/docs/start/docs-directory.md +69 -0
- package/docs/start/getting-started.md +152 -0
- package/docs/start/hubs.md +201 -0
- package/docs/start/lore.md +223 -0
- package/docs/start/onboarding-overview.md +72 -0
- package/docs/start/onboarding.md +95 -0
- package/docs/start/openclaw.md +244 -0
- package/docs/start/quickstart.md +25 -0
- package/docs/start/setup.md +178 -0
- package/docs/start/showcase.md +383 -0
- package/docs/start/wizard-cli-automation.md +232 -0
- package/docs/start/wizard-cli-reference.md +331 -0
- package/docs/start/wizard.md +141 -0
- package/docs/style.css +184 -0
- package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +316 -0
- package/docs/tools/acp-agents-setup.md +352 -0
- package/docs/tools/acp-agents.md +847 -0
- package/docs/tools/agent-send.md +112 -0
- package/docs/tools/apply-patch.md +64 -0
- package/docs/tools/brave-search.md +139 -0
- package/docs/tools/browser-control.md +391 -0
- package/docs/tools/browser-linux-troubleshooting.md +173 -0
- package/docs/tools/browser-login.md +77 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
- package/docs/tools/browser.md +769 -0
- package/docs/tools/btw.md +159 -0
- package/docs/tools/capability-cookbook.md +12 -0
- package/docs/tools/clawhub.md +5 -0
- package/docs/tools/code-execution.md +173 -0
- package/docs/tools/creating-skills.md +120 -0
- package/docs/tools/diffs.md +506 -0
- package/docs/tools/duckduckgo-search.md +109 -0
- package/docs/tools/elevated.md +128 -0
- package/docs/tools/exa-search.md +152 -0
- package/docs/tools/exec-approvals-advanced.md +360 -0
- package/docs/tools/exec-approvals.md +474 -0
- package/docs/tools/exec.md +282 -0
- package/docs/tools/firecrawl.md +155 -0
- package/docs/tools/gemini-search.md +114 -0
- package/docs/tools/grok-search.md +113 -0
- package/docs/tools/image-generation.md +433 -0
- package/docs/tools/index.md +178 -0
- package/docs/tools/kimi-search.md +105 -0
- package/docs/tools/llm-task.md +137 -0
- package/docs/tools/lobster.md +365 -0
- package/docs/tools/loop-detection.md +154 -0
- package/docs/tools/media-overview.md +157 -0
- package/docs/tools/minimax-search.md +102 -0
- package/docs/tools/multi-agent-sandbox-tools.md +409 -0
- package/docs/tools/music-generation.md +371 -0
- package/docs/tools/ollama-search.md +153 -0
- package/docs/tools/pdf.md +195 -0
- package/docs/tools/perplexity-search.md +220 -0
- package/docs/tools/plugin.md +327 -0
- package/docs/tools/reactions.md +100 -0
- package/docs/tools/searxng-search.md +141 -0
- package/docs/tools/skills-config.md +195 -0
- package/docs/tools/skills.md +535 -0
- package/docs/tools/slash-commands.md +488 -0
- package/docs/tools/steer.md +84 -0
- package/docs/tools/subagents.md +650 -0
- package/docs/tools/tavily.md +162 -0
- package/docs/tools/thinking.md +140 -0
- package/docs/tools/tokenjuice.md +81 -0
- package/docs/tools/tool-search.md +269 -0
- package/docs/tools/trajectory.md +229 -0
- package/docs/tools/tts.md +1004 -0
- package/docs/tools/video-generation.md +552 -0
- package/docs/tools/web-fetch.md +195 -0
- package/docs/tools/web.md +459 -0
- package/docs/tts.md +11 -0
- package/docs/vps.md +139 -0
- package/docs/web/control-ui.md +503 -0
- package/docs/web/dashboard.md +107 -0
- package/docs/web/index.md +133 -0
- package/docs/web/tui.md +246 -0
- package/docs/web/webchat.md +99 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/nodmix.mjs +487 -0
- package/package.json +1852 -0
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.36.1.patch +41 -0
- package/pnpm-workspace.yaml +63 -0
- package/scripts/crabbox-wrapper.mjs +353 -0
- package/scripts/lib/official-external-channel-catalog.json +559 -0
- package/scripts/lib/official-external-plugin-catalog.json +192 -0
- package/scripts/lib/official-external-provider-catalog.json +117 -0
- package/scripts/lib/package-dist-imports.mjs +171 -0
- package/scripts/npm-runner.mjs +91 -0
- package/scripts/postinstall-bundled-plugins.mjs +978 -0
- package/scripts/preinstall-package-manager-warning.mjs +64 -0
- package/scripts/windows-cmd-helpers.mjs +20 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +118 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +78 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +149 -0
- package/skills/diagram-maker/SKILL.md +53 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +136 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +47 -0
- package/skills/gh-issues/SKILL.md +213 -0
- package/skills/gifgrep/SKILL.md +85 -0
- package/skills/github/SKILL.md +84 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +105 -0
- package/skills/himalaya/SKILL.md +80 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +122 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/meme-maker/SKILL.md +42 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +319 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/node-connect/SKILL.md +142 -0
- package/skills/node-inspect-debugger/SKILL.md +85 -0
- package/skills/notion/SKILL.md +150 -0
- package/skills/obsidian/SKILL.md +119 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +71 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +126 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +73 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +151 -0
- package/skills/sherpa-onnx-tts/SKILL.md +109 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +78 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +139 -0
- package/skills/skill-creator/scripts/quick_validate.py +169 -0
- package/skills/skill-creator/scripts/test_package_skill.py +161 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spike/SKILL.md +51 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/taskflow/SKILL.md +149 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +119 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +91 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +108 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +64 -0
- package/skills/xurl/SKILL.md +120 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Markdown formatting pipeline for outbound channels"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are changing markdown formatting or chunking for outbound channels
|
|
5
|
+
- You are adding a new channel formatter or style mapping
|
|
6
|
+
- You are debugging formatting regressions across channels
|
|
7
|
+
title: "Markdown formatting"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix formats outbound Markdown by converting it into a shared intermediate
|
|
11
|
+
representation (IR) before rendering channel-specific output. The IR keeps the
|
|
12
|
+
source text intact while carrying style/link spans so chunking and rendering can
|
|
13
|
+
stay consistent across channels.
|
|
14
|
+
|
|
15
|
+
## Goals
|
|
16
|
+
|
|
17
|
+
- **Consistency:** one parse step, multiple renderers.
|
|
18
|
+
- **Safe chunking:** split text before rendering so inline formatting never
|
|
19
|
+
breaks across chunks.
|
|
20
|
+
- **Channel fit:** map the same IR to Slack mrkdwn, Telegram HTML, and Signal
|
|
21
|
+
style ranges without re-parsing Markdown.
|
|
22
|
+
|
|
23
|
+
## Pipeline
|
|
24
|
+
|
|
25
|
+
1. **Parse Markdown -> IR**
|
|
26
|
+
- IR is plain text plus style spans (bold/italic/strike/code/spoiler) and link spans.
|
|
27
|
+
- Offsets are UTF-16 code units so Signal style ranges align with its API.
|
|
28
|
+
- Tables are parsed only when a channel opts into table conversion.
|
|
29
|
+
2. **Chunk IR (format-first)**
|
|
30
|
+
- Chunking happens on the IR text before rendering.
|
|
31
|
+
- Inline formatting does not split across chunks; spans are sliced per chunk.
|
|
32
|
+
3. **Render per channel**
|
|
33
|
+
- **Slack:** mrkdwn tokens (bold/italic/strike/code), links as `<url|label>`.
|
|
34
|
+
- **Telegram:** HTML tags (`<b>`, `<i>`, `<s>`, `<code>`, `<pre><code>`, `<a href>`).
|
|
35
|
+
- **Signal:** plain text + `text-style` ranges; links become `label (url)` when label differs.
|
|
36
|
+
|
|
37
|
+
## IR example
|
|
38
|
+
|
|
39
|
+
Input Markdown:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
Hello **world** - see [docs](https://docs.nodmix.ai).
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
IR (schematic):
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"text": "Hello world - see docs.",
|
|
50
|
+
"styles": [{ "start": 6, "end": 11, "style": "bold" }],
|
|
51
|
+
"links": [{ "start": 19, "end": 23, "href": "https://docs.nodmix.ai" }]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Where it is used
|
|
56
|
+
|
|
57
|
+
- Slack, Telegram, and Signal outbound adapters render from the IR.
|
|
58
|
+
- Other channels (WhatsApp, iMessage, Microsoft Teams, Discord) still use plain text or
|
|
59
|
+
their own formatting rules, with Markdown table conversion applied before
|
|
60
|
+
chunking when enabled.
|
|
61
|
+
|
|
62
|
+
## Table handling
|
|
63
|
+
|
|
64
|
+
Markdown tables are not consistently supported across chat clients. Use
|
|
65
|
+
`markdown.tables` to control conversion per channel (and per account).
|
|
66
|
+
|
|
67
|
+
- `code`: render tables as code blocks (default for most channels).
|
|
68
|
+
- `bullets`: convert each row into bullet points (default for Matrix, Signal, and WhatsApp).
|
|
69
|
+
- `off`: disable table parsing and conversion; raw table text passes through.
|
|
70
|
+
|
|
71
|
+
Config keys:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
channels:
|
|
75
|
+
discord:
|
|
76
|
+
markdown:
|
|
77
|
+
tables: code
|
|
78
|
+
accounts:
|
|
79
|
+
work:
|
|
80
|
+
markdown:
|
|
81
|
+
tables: off
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Chunking rules
|
|
85
|
+
|
|
86
|
+
- Chunk limits come from channel adapters/config and are applied to the IR text.
|
|
87
|
+
- Code fences are preserved as a single block with a trailing newline so channels
|
|
88
|
+
render them correctly.
|
|
89
|
+
- List prefixes and blockquote prefixes are part of the IR text, so chunking
|
|
90
|
+
does not split mid-prefix.
|
|
91
|
+
- Inline styles (bold/italic/strike/inline-code/spoiler) are never split across
|
|
92
|
+
chunks; the renderer reopens styles inside each chunk.
|
|
93
|
+
|
|
94
|
+
If you need more on chunking behavior across channels, see
|
|
95
|
+
[Streaming + chunking](/concepts/streaming).
|
|
96
|
+
|
|
97
|
+
## Link policy
|
|
98
|
+
|
|
99
|
+
- **Slack:** `[label](url)` -> `<url|label>`; bare URLs remain bare. Autolink
|
|
100
|
+
is disabled during parse to avoid double-linking.
|
|
101
|
+
- **Telegram:** `[label](url)` -> `<a href="url">label</a>` (HTML parse mode).
|
|
102
|
+
- **Signal:** `[label](url)` -> `label (url)` unless label matches the URL.
|
|
103
|
+
|
|
104
|
+
## Spoilers
|
|
105
|
+
|
|
106
|
+
Spoiler markers (`||spoiler||`) are parsed only for Signal, where they map to
|
|
107
|
+
SPOILER style ranges. Other channels treat them as plain text.
|
|
108
|
+
|
|
109
|
+
## How to add or update a channel formatter
|
|
110
|
+
|
|
111
|
+
1. **Parse once:** use the shared `markdownToIR(...)` helper with channel-appropriate
|
|
112
|
+
options (autolink, heading style, blockquote prefix).
|
|
113
|
+
2. **Render:** implement a renderer with `renderMarkdownWithMarkers(...)` and a
|
|
114
|
+
style marker map (or Signal style ranges).
|
|
115
|
+
3. **Chunk:** call `chunkMarkdownIR(...)` before rendering; render each chunk.
|
|
116
|
+
4. **Wire adapter:** update the channel outbound adapter to use the new chunker
|
|
117
|
+
and renderer.
|
|
118
|
+
5. **Test:** add or update format tests and an outbound delivery test if the
|
|
119
|
+
channel uses chunking.
|
|
120
|
+
|
|
121
|
+
## Common gotchas
|
|
122
|
+
|
|
123
|
+
- Slack angle-bracket tokens (`<@U123>`, `<#C123>`, `<https://...>`) must be
|
|
124
|
+
preserved; escape raw HTML safely.
|
|
125
|
+
- Telegram HTML requires escaping text outside tags to avoid broken markup.
|
|
126
|
+
- Signal style ranges depend on UTF-16 offsets; do not use code point offsets.
|
|
127
|
+
- Preserve trailing newlines for fenced code blocks so closing markers land on
|
|
128
|
+
their own line.
|
|
129
|
+
|
|
130
|
+
## Related
|
|
131
|
+
|
|
132
|
+
<CardGroup cols={2}>
|
|
133
|
+
<Card title="Streaming and chunking" href="/concepts/streaming" icon="bars-staggered">
|
|
134
|
+
Outbound streaming behavior, chunk boundaries, and channel-specific delivery.
|
|
135
|
+
</Card>
|
|
136
|
+
<Card title="System prompt" href="/concepts/system-prompt" icon="message-lines">
|
|
137
|
+
What the model sees before the conversation, including injected workspace files.
|
|
138
|
+
</Card>
|
|
139
|
+
</CardGroup>
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "The default SQLite-based memory backend with keyword, vector, and hybrid search"
|
|
3
|
+
title: "Builtin memory engine"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to understand the default memory backend
|
|
6
|
+
- You want to configure embedding providers or hybrid search
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
The builtin engine is the default memory backend. It stores your memory index in
|
|
10
|
+
a per-agent SQLite database and needs no extra dependencies to get started.
|
|
11
|
+
|
|
12
|
+
## What it provides
|
|
13
|
+
|
|
14
|
+
- **Keyword search** via FTS5 full-text indexing (BM25 scoring).
|
|
15
|
+
- **Vector search** via embeddings from any supported provider.
|
|
16
|
+
- **Hybrid search** that combines both for best results.
|
|
17
|
+
- **CJK support** via trigram tokenization for Chinese, Japanese, and Korean.
|
|
18
|
+
- **sqlite-vec acceleration** for in-database vector queries (optional).
|
|
19
|
+
|
|
20
|
+
## Getting started
|
|
21
|
+
|
|
22
|
+
If you have an API key for OpenAI, Gemini, Voyage, Mistral, or DeepInfra, the builtin
|
|
23
|
+
engine auto-detects it and enables vector search. No config needed.
|
|
24
|
+
|
|
25
|
+
To set a provider explicitly:
|
|
26
|
+
|
|
27
|
+
```json5
|
|
28
|
+
{
|
|
29
|
+
agents: {
|
|
30
|
+
defaults: {
|
|
31
|
+
memorySearch: {
|
|
32
|
+
provider: "openai",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Without an embedding provider, only keyword search is available.
|
|
40
|
+
|
|
41
|
+
To force the built-in local embedding provider, install the optional
|
|
42
|
+
`node-llama-cpp` runtime package next to Nodmix, then point `local.modelPath`
|
|
43
|
+
at a GGUF file:
|
|
44
|
+
|
|
45
|
+
```json5
|
|
46
|
+
{
|
|
47
|
+
agents: {
|
|
48
|
+
defaults: {
|
|
49
|
+
memorySearch: {
|
|
50
|
+
provider: "local",
|
|
51
|
+
fallback: "none",
|
|
52
|
+
local: {
|
|
53
|
+
modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Supported embedding providers
|
|
62
|
+
|
|
63
|
+
| Provider | ID | Auto-detected | Notes |
|
|
64
|
+
| --------- | ----------- | ------------- | ----------------------------------- |
|
|
65
|
+
| OpenAI | `openai` | Yes | Default: `text-embedding-3-small` |
|
|
66
|
+
| Gemini | `gemini` | Yes | Supports multimodal (image + audio) |
|
|
67
|
+
| Voyage | `voyage` | Yes | |
|
|
68
|
+
| Mistral | `mistral` | Yes | |
|
|
69
|
+
| DeepInfra | `deepinfra` | Yes | Default: `BAAI/bge-m3` |
|
|
70
|
+
| Ollama | `ollama` | No | Local, set explicitly |
|
|
71
|
+
| Local | `local` | Yes (first) | Optional `node-llama-cpp` runtime |
|
|
72
|
+
|
|
73
|
+
Auto-detection picks the first provider whose API key can be resolved, in the
|
|
74
|
+
order shown. Set `memorySearch.provider` to override.
|
|
75
|
+
|
|
76
|
+
## How indexing works
|
|
77
|
+
|
|
78
|
+
Nodmix indexes `MEMORY.md` and `memory/*.md` into chunks (~400 tokens with
|
|
79
|
+
80-token overlap) and stores them in a per-agent SQLite database.
|
|
80
|
+
|
|
81
|
+
- **Index location:** `~/.nodmix/memory/<agentId>.sqlite`
|
|
82
|
+
- **Storage maintenance:** SQLite WAL sidecars are bounded with periodic and
|
|
83
|
+
shutdown checkpoints.
|
|
84
|
+
- **File watching:** changes to memory files trigger a debounced reindex (1.5s).
|
|
85
|
+
- **Auto-reindex:** when the embedding provider, model, or chunking config
|
|
86
|
+
changes, the entire index is rebuilt automatically.
|
|
87
|
+
- **Reindex on demand:** `nodmix memory index --force`
|
|
88
|
+
|
|
89
|
+
<Info>
|
|
90
|
+
You can also index Markdown files outside the workspace with
|
|
91
|
+
`memorySearch.extraPaths`. See the
|
|
92
|
+
[configuration reference](/reference/memory-config#additional-memory-paths).
|
|
93
|
+
</Info>
|
|
94
|
+
|
|
95
|
+
## When to use
|
|
96
|
+
|
|
97
|
+
The builtin engine is the right choice for most users:
|
|
98
|
+
|
|
99
|
+
- Works out of the box with no extra dependencies.
|
|
100
|
+
- Handles keyword and vector search well.
|
|
101
|
+
- Supports all embedding providers.
|
|
102
|
+
- Hybrid search combines the best of both retrieval approaches.
|
|
103
|
+
|
|
104
|
+
Consider switching to [QMD](/concepts/memory-qmd) if you need reranking, query
|
|
105
|
+
expansion, or want to index directories outside the workspace.
|
|
106
|
+
|
|
107
|
+
Consider [Honcho](/concepts/memory-honcho) if you want cross-session memory with
|
|
108
|
+
automatic user modeling.
|
|
109
|
+
|
|
110
|
+
## Troubleshooting
|
|
111
|
+
|
|
112
|
+
**Memory search disabled?** Check `nodmix memory status`. If no provider is
|
|
113
|
+
detected, set one explicitly or add an API key.
|
|
114
|
+
|
|
115
|
+
**Local provider not detected?** Confirm the local path exists and run:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
nodmix memory status --deep --agent main
|
|
119
|
+
nodmix memory index --force --agent main
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Both standalone CLI commands and the Gateway use the same `local` provider id.
|
|
123
|
+
If the provider is set to `auto`, local embeddings are considered first only
|
|
124
|
+
when `memorySearch.local.modelPath` points to an existing local file.
|
|
125
|
+
|
|
126
|
+
**Stale results?** Run `nodmix memory index --force` to rebuild. The watcher
|
|
127
|
+
may miss changes in rare edge cases.
|
|
128
|
+
|
|
129
|
+
**sqlite-vec not loading?** Nodmix falls back to in-process cosine similarity
|
|
130
|
+
automatically. `nodmix memory status --deep` reports the local vector store
|
|
131
|
+
separately from the embedding provider, so `Vector store: unavailable` points
|
|
132
|
+
at sqlite-vec loading while `Embeddings: unavailable` points at provider/auth
|
|
133
|
+
or model readiness. Check logs for the specific load error.
|
|
134
|
+
|
|
135
|
+
## Configuration
|
|
136
|
+
|
|
137
|
+
For embedding provider setup, hybrid search tuning (weights, MMR, temporal
|
|
138
|
+
decay), batch indexing, multimodal memory, sqlite-vec, extra paths, and all
|
|
139
|
+
other config knobs, see the
|
|
140
|
+
[Memory configuration reference](/reference/memory-config).
|
|
141
|
+
|
|
142
|
+
## Related
|
|
143
|
+
|
|
144
|
+
- [Memory overview](/concepts/memory)
|
|
145
|
+
- [Memory search](/concepts/memory-search)
|
|
146
|
+
- [Active memory](/concepts/active-memory)
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "AI-native cross-session memory via the Honcho plugin"
|
|
3
|
+
title: "Honcho memory"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want persistent memory that works across sessions and channels
|
|
6
|
+
- You want AI-powered recall and user modeling
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
[Honcho](https://honcho.dev) adds AI-native memory to Nodmix. It persists
|
|
10
|
+
conversations to a dedicated service and builds user and agent models over time,
|
|
11
|
+
giving your agent cross-session context that goes beyond workspace Markdown
|
|
12
|
+
files.
|
|
13
|
+
|
|
14
|
+
## What it provides
|
|
15
|
+
|
|
16
|
+
- **Cross-session memory** -- conversations are persisted after every turn, so
|
|
17
|
+
context carries across session resets, compaction, and channel switches.
|
|
18
|
+
- **User modeling** -- Honcho maintains a profile for each user (preferences,
|
|
19
|
+
facts, communication style) and for the agent (personality, learned
|
|
20
|
+
behaviors).
|
|
21
|
+
- **Semantic search** -- search over observations from past conversations, not
|
|
22
|
+
just the current session.
|
|
23
|
+
- **Multi-agent awareness** -- parent agents automatically track spawned
|
|
24
|
+
sub-agents, with parents added as observers in child sessions.
|
|
25
|
+
|
|
26
|
+
## Available tools
|
|
27
|
+
|
|
28
|
+
Honcho registers tools that the agent can use during conversation:
|
|
29
|
+
|
|
30
|
+
**Data retrieval (fast, no LLM call):**
|
|
31
|
+
|
|
32
|
+
| Tool | What it does |
|
|
33
|
+
| --------------------------- | ------------------------------------------------------ |
|
|
34
|
+
| `honcho_context` | Full user representation across sessions |
|
|
35
|
+
| `honcho_search_conclusions` | Semantic search over stored conclusions |
|
|
36
|
+
| `honcho_search_messages` | Find messages across sessions (filter by sender, date) |
|
|
37
|
+
| `honcho_session` | Current session history and summary |
|
|
38
|
+
|
|
39
|
+
**Q&A (LLM-powered):**
|
|
40
|
+
|
|
41
|
+
| Tool | What it does |
|
|
42
|
+
| ------------ | ------------------------------------------------------------------------- |
|
|
43
|
+
| `honcho_ask` | Ask about the user. `depth='quick'` for facts, `'thorough'` for synthesis |
|
|
44
|
+
|
|
45
|
+
## Getting started
|
|
46
|
+
|
|
47
|
+
Install the plugin and run setup:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
nodmix plugins install @honcho-ai/nodmix-honcho
|
|
51
|
+
nodmix honcho setup
|
|
52
|
+
nodmix gateway --force
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The setup command prompts for your API credentials, writes the config, and
|
|
56
|
+
optionally migrates existing workspace memory files.
|
|
57
|
+
|
|
58
|
+
<Info>
|
|
59
|
+
Honcho can run entirely locally (self-hosted) or via the managed API at
|
|
60
|
+
`api.honcho.dev`. No external dependencies are required for the self-hosted
|
|
61
|
+
option.
|
|
62
|
+
</Info>
|
|
63
|
+
|
|
64
|
+
## Configuration
|
|
65
|
+
|
|
66
|
+
Settings live under `plugins.entries["nodmix-honcho"].config`:
|
|
67
|
+
|
|
68
|
+
```json5
|
|
69
|
+
{
|
|
70
|
+
plugins: {
|
|
71
|
+
entries: {
|
|
72
|
+
"nodmix-honcho": {
|
|
73
|
+
config: {
|
|
74
|
+
apiKey: "your-api-key", // omit for self-hosted
|
|
75
|
+
workspaceId: "nodmix", // memory isolation
|
|
76
|
+
baseUrl: "https://api.honcho.dev",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
For self-hosted instances, point `baseUrl` to your local server (for example
|
|
85
|
+
`http://localhost:8000`) and omit the API key.
|
|
86
|
+
|
|
87
|
+
## Migrating existing memory
|
|
88
|
+
|
|
89
|
+
If you have existing workspace memory files (`USER.md`, `MEMORY.md`,
|
|
90
|
+
`IDENTITY.md`, `memory/`, `canvas/`), `nodmix honcho setup` detects and
|
|
91
|
+
offers to migrate them.
|
|
92
|
+
|
|
93
|
+
<Info>
|
|
94
|
+
Migration is non-destructive -- files are uploaded to Honcho. Originals are
|
|
95
|
+
never deleted or moved.
|
|
96
|
+
</Info>
|
|
97
|
+
|
|
98
|
+
## How it works
|
|
99
|
+
|
|
100
|
+
After every AI turn, the conversation is persisted to Honcho. Both user and
|
|
101
|
+
agent messages are observed, allowing Honcho to build and refine its models over
|
|
102
|
+
time.
|
|
103
|
+
|
|
104
|
+
During conversation, Honcho tools query the service in the `before_prompt_build`
|
|
105
|
+
phase, injecting relevant context before the model sees the prompt. This ensures
|
|
106
|
+
accurate turn boundaries and relevant recall.
|
|
107
|
+
|
|
108
|
+
## Honcho vs builtin memory
|
|
109
|
+
|
|
110
|
+
| | Builtin / QMD | Honcho |
|
|
111
|
+
| ----------------- | ---------------------------- | ----------------------------------- |
|
|
112
|
+
| **Storage** | Workspace Markdown files | Dedicated service (local or hosted) |
|
|
113
|
+
| **Cross-session** | Via memory files | Automatic, built-in |
|
|
114
|
+
| **User modeling** | Manual (write to MEMORY.md) | Automatic profiles |
|
|
115
|
+
| **Search** | Vector + keyword (hybrid) | Semantic over observations |
|
|
116
|
+
| **Multi-agent** | Not tracked | Parent/child awareness |
|
|
117
|
+
| **Dependencies** | None (builtin) or QMD binary | Plugin install |
|
|
118
|
+
|
|
119
|
+
Honcho and the builtin memory system can work together. When QMD is configured,
|
|
120
|
+
additional tools become available for searching local Markdown files alongside
|
|
121
|
+
Honcho's cross-session memory.
|
|
122
|
+
|
|
123
|
+
## CLI commands
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
nodmix honcho setup # Configure API key and migrate files
|
|
127
|
+
nodmix honcho status # Check connection status
|
|
128
|
+
nodmix honcho ask <question> # Query Honcho about the user
|
|
129
|
+
nodmix honcho search <query> [-k N] [-d D] # Semantic search over memory
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Further reading
|
|
133
|
+
|
|
134
|
+
- [Plugin source code](https://github.com/plastic-labs/nodmix-honcho)
|
|
135
|
+
- [Honcho documentation](https://docs.honcho.dev)
|
|
136
|
+
- [Honcho Nodmix integration guide](https://docs.honcho.dev/v3/guides/integrations/nodmix)
|
|
137
|
+
- [Memory](/concepts/memory) -- Nodmix memory overview
|
|
138
|
+
- [Context Engines](/concepts/context-engine) -- how plugin context engines work
|
|
139
|
+
|
|
140
|
+
## Related
|
|
141
|
+
|
|
142
|
+
- [Memory overview](/concepts/memory)
|
|
143
|
+
- [Builtin memory engine](/concepts/memory-builtin)
|
|
144
|
+
- [QMD memory engine](/concepts/memory-qmd)
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Local-first search sidecar with BM25, vectors, reranking, and query expansion"
|
|
3
|
+
title: "QMD memory engine"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to set up QMD as your memory backend
|
|
6
|
+
- You want advanced memory features like reranking or extra indexed paths
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
[QMD](https://github.com/tobi/qmd) is a local-first search sidecar that runs
|
|
10
|
+
alongside Nodmix. It combines BM25, vector search, and reranking in a single
|
|
11
|
+
binary, and can index content beyond your workspace memory files.
|
|
12
|
+
|
|
13
|
+
## What it adds over builtin
|
|
14
|
+
|
|
15
|
+
- **Reranking and query expansion** for better recall.
|
|
16
|
+
- **Index extra directories** -- project docs, team notes, anything on disk.
|
|
17
|
+
- **Index session transcripts** -- recall earlier conversations.
|
|
18
|
+
- **Fully local** -- runs with the optional node-llama-cpp runtime package and
|
|
19
|
+
auto-downloads GGUF models.
|
|
20
|
+
- **Automatic fallback** -- if QMD is unavailable, Nodmix falls back to the
|
|
21
|
+
builtin engine seamlessly.
|
|
22
|
+
|
|
23
|
+
## Getting started
|
|
24
|
+
|
|
25
|
+
### Prerequisites
|
|
26
|
+
|
|
27
|
+
- Install QMD: `npm install -g @tobilu/qmd` or `bun install -g @tobilu/qmd`
|
|
28
|
+
- SQLite build that allows extensions (`brew install sqlite` on macOS).
|
|
29
|
+
- QMD must be on the gateway's `PATH`.
|
|
30
|
+
- macOS and Linux work out of the box. Windows is best supported via WSL2.
|
|
31
|
+
|
|
32
|
+
### Enable
|
|
33
|
+
|
|
34
|
+
```json5
|
|
35
|
+
{
|
|
36
|
+
memory: {
|
|
37
|
+
backend: "qmd",
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Nodmix creates a self-contained QMD home under
|
|
43
|
+
`~/.nodmix/agents/<agentId>/qmd/` and manages the sidecar lifecycle
|
|
44
|
+
automatically -- collections, updates, and embedding runs are handled for you.
|
|
45
|
+
It prefers current QMD collection and MCP query shapes, but still falls back to
|
|
46
|
+
alternate collection pattern flags and older MCP tool names when needed.
|
|
47
|
+
Boot-time reconciliation also recreates stale managed collections back to their
|
|
48
|
+
canonical patterns when an older QMD collection with the same name is still
|
|
49
|
+
present.
|
|
50
|
+
|
|
51
|
+
## How the sidecar works
|
|
52
|
+
|
|
53
|
+
- Nodmix creates collections from your workspace memory files and any
|
|
54
|
+
configured `memory.qmd.paths`, then runs `qmd update` when the QMD manager is
|
|
55
|
+
opened and periodically afterward (default every 5 minutes). These refreshes
|
|
56
|
+
run through QMD subprocesses, not an in-process filesystem crawl. Semantic
|
|
57
|
+
modes also run `qmd embed`.
|
|
58
|
+
- The default workspace collection tracks `MEMORY.md` plus the `memory/`
|
|
59
|
+
tree. Lowercase `memory.md` is not indexed as a root memory file.
|
|
60
|
+
- QMD's own scanner ignores hidden paths and common dependency/build
|
|
61
|
+
directories such as `.git`, `.cache`, `node_modules`, `vendor`, `dist`, and
|
|
62
|
+
`build`. Gateway startup does not initialize QMD by default, so cold boot
|
|
63
|
+
avoids importing the memory runtime or creating the long-lived watcher before
|
|
64
|
+
memory is first used.
|
|
65
|
+
- If you want a gateway-start refresh anyway, set
|
|
66
|
+
`memory.qmd.update.startup` to `idle` or `immediate`. The opt-in startup
|
|
67
|
+
refresh uses a one-shot QMD subprocess path instead of creating the full
|
|
68
|
+
long-lived in-process watcher.
|
|
69
|
+
- Searches use the configured `searchMode` (default: `search`; also supports
|
|
70
|
+
`vsearch` and `query`). `search` is BM25-only, so Nodmix skips semantic
|
|
71
|
+
vector readiness probes and embedding maintenance in that mode. If a mode
|
|
72
|
+
fails, Nodmix retries with `qmd query`.
|
|
73
|
+
- With QMD releases that advertise multi-collection filters, Nodmix groups
|
|
74
|
+
same-source collections into one QMD search invocation. Older QMD releases
|
|
75
|
+
keep the compatible per-collection fallback.
|
|
76
|
+
- If QMD fails entirely, Nodmix falls back to the builtin SQLite engine.
|
|
77
|
+
Repeated chat-turn attempts back off briefly after an open failure so a
|
|
78
|
+
missing binary or broken sidecar dependency does not create a retry storm;
|
|
79
|
+
`nodmix memory status` and one-shot CLI probes still recheck QMD directly.
|
|
80
|
+
|
|
81
|
+
<Info>
|
|
82
|
+
The first search may be slow -- QMD auto-downloads GGUF models (~2 GB) for
|
|
83
|
+
reranking and query expansion on the first `qmd query` run.
|
|
84
|
+
</Info>
|
|
85
|
+
|
|
86
|
+
## Search performance and compatibility
|
|
87
|
+
|
|
88
|
+
Nodmix keeps the QMD search path compatible with both current and older QMD
|
|
89
|
+
installs.
|
|
90
|
+
|
|
91
|
+
On startup, Nodmix checks the installed QMD help text once per manager. If the
|
|
92
|
+
binary advertises support for multiple collection filters, Nodmix searches all
|
|
93
|
+
same-source collections with one command:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
qmd search "router notes" --json -n 10 -c memory-root-main -c memory-dir-main
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This avoids starting one QMD subprocess for every durable-memory collection.
|
|
100
|
+
Session transcript collections stay in their own source group, so mixed
|
|
101
|
+
`memory` + `sessions` searches still give the result diversifier input from both
|
|
102
|
+
sources.
|
|
103
|
+
|
|
104
|
+
Older QMD builds only accept one collection filter. When Nodmix detects one
|
|
105
|
+
of those builds, it keeps the compatibility path and searches each collection
|
|
106
|
+
separately before merging and deduplicating results.
|
|
107
|
+
|
|
108
|
+
To inspect the installed contract manually, run:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
qmd --help | grep -i collection
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Current QMD help says collection filters can target one or more collections.
|
|
115
|
+
Older help usually describes a single collection.
|
|
116
|
+
|
|
117
|
+
## Model overrides
|
|
118
|
+
|
|
119
|
+
QMD model environment variables pass through unchanged from the gateway
|
|
120
|
+
process, so you can tune QMD globally without adding new Nodmix config:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"
|
|
124
|
+
export QMD_RERANK_MODEL="/absolute/path/to/reranker.gguf"
|
|
125
|
+
export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
After changing the embedding model, rerun embeddings so the index matches the
|
|
129
|
+
new vector space.
|
|
130
|
+
|
|
131
|
+
## Indexing extra paths
|
|
132
|
+
|
|
133
|
+
Point QMD at additional directories to make them searchable:
|
|
134
|
+
|
|
135
|
+
```json5
|
|
136
|
+
{
|
|
137
|
+
memory: {
|
|
138
|
+
backend: "qmd",
|
|
139
|
+
qmd: {
|
|
140
|
+
paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Snippets from extra paths appear as `qmd/<collection>/<relative-path>` in
|
|
147
|
+
search results. `memory_get` understands this prefix and reads from the correct
|
|
148
|
+
collection root.
|
|
149
|
+
|
|
150
|
+
## Indexing session transcripts
|
|
151
|
+
|
|
152
|
+
Enable session indexing to recall earlier conversations:
|
|
153
|
+
|
|
154
|
+
```json5
|
|
155
|
+
{
|
|
156
|
+
memory: {
|
|
157
|
+
backend: "qmd",
|
|
158
|
+
qmd: {
|
|
159
|
+
sessions: { enabled: true },
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Transcripts are exported as sanitized User/Assistant turns into a dedicated QMD
|
|
166
|
+
collection under `~/.nodmix/agents/<id>/qmd/sessions/`.
|
|
167
|
+
|
|
168
|
+
## Search scope
|
|
169
|
+
|
|
170
|
+
By default, QMD search results are surfaced in direct and channel sessions
|
|
171
|
+
(not groups). Configure `memory.qmd.scope` to change this:
|
|
172
|
+
|
|
173
|
+
```json5
|
|
174
|
+
{
|
|
175
|
+
memory: {
|
|
176
|
+
qmd: {
|
|
177
|
+
scope: {
|
|
178
|
+
default: "deny",
|
|
179
|
+
rules: [{ action: "allow", match: { chatType: "direct" } }],
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
When scope denies a search, Nodmix logs a warning with the derived channel and
|
|
187
|
+
chat type so empty results are easier to debug.
|
|
188
|
+
|
|
189
|
+
## Citations
|
|
190
|
+
|
|
191
|
+
When `memory.citations` is `auto` or `on`, search snippets include a
|
|
192
|
+
`Source: <path#line>` footer. Set `memory.citations = "off"` to omit the footer
|
|
193
|
+
while still passing the path to the agent internally.
|
|
194
|
+
|
|
195
|
+
## When to use
|
|
196
|
+
|
|
197
|
+
Choose QMD when you need:
|
|
198
|
+
|
|
199
|
+
- Reranking for higher-quality results.
|
|
200
|
+
- To search project docs or notes outside the workspace.
|
|
201
|
+
- To recall past session conversations.
|
|
202
|
+
- Fully local search with no API keys.
|
|
203
|
+
|
|
204
|
+
For simpler setups, the [builtin engine](/concepts/memory-builtin) works well
|
|
205
|
+
with no extra dependencies.
|
|
206
|
+
|
|
207
|
+
## Troubleshooting
|
|
208
|
+
|
|
209
|
+
**QMD not found?** Ensure the binary is on the gateway's `PATH`. If Nodmix
|
|
210
|
+
runs as a service, create a symlink:
|
|
211
|
+
`sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd`.
|
|
212
|
+
|
|
213
|
+
If `qmd --version` works in your shell but Nodmix still reports
|
|
214
|
+
`spawn qmd ENOENT`, the gateway process likely has a different `PATH` than your
|
|
215
|
+
interactive shell. Pin the binary explicitly:
|
|
216
|
+
|
|
217
|
+
```json5
|
|
218
|
+
{
|
|
219
|
+
memory: {
|
|
220
|
+
backend: "qmd",
|
|
221
|
+
qmd: {
|
|
222
|
+
command: "/absolute/path/to/qmd",
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Use `command -v qmd` in the environment where QMD is installed, then recheck
|
|
229
|
+
with `nodmix memory status --deep`.
|
|
230
|
+
|
|
231
|
+
**First search very slow?** QMD downloads GGUF models on first use. Pre-warm
|
|
232
|
+
with `qmd query "test"` using the same XDG dirs Nodmix uses.
|
|
233
|
+
|
|
234
|
+
**Many QMD subprocesses during search?** Update QMD if possible. Nodmix uses
|
|
235
|
+
one process for same-source multi-collection searches only when the installed
|
|
236
|
+
QMD advertises support for multiple `-c` filters; otherwise it keeps the older
|
|
237
|
+
per-collection fallback for correctness.
|
|
238
|
+
|
|
239
|
+
**BM25-only QMD still trying to build llama.cpp?** Set
|
|
240
|
+
`memory.qmd.searchMode = "search"`. Nodmix treats that mode as lexical-only,
|
|
241
|
+
does not run QMD vector status probes or embedding maintenance, and leaves
|
|
242
|
+
semantic readiness checks to `vsearch` or `query` setups.
|
|
243
|
+
|
|
244
|
+
**Search times out?** Increase `memory.qmd.limits.timeoutMs` (default: 4000ms).
|
|
245
|
+
Set to `120000` for slower hardware.
|
|
246
|
+
|
|
247
|
+
**Empty results in group chats?** Check `memory.qmd.scope` -- the default only
|
|
248
|
+
allows direct and channel sessions.
|
|
249
|
+
|
|
250
|
+
**Root memory search suddenly got too broad?** Restart the gateway or wait for
|
|
251
|
+
the next startup reconciliation. Nodmix recreates stale managed collections
|
|
252
|
+
back to canonical `MEMORY.md` and `memory/` patterns when it detects a same-name
|
|
253
|
+
conflict.
|
|
254
|
+
|
|
255
|
+
**Workspace-visible temp repos causing `ENAMETOOLONG` or broken indexing?**
|
|
256
|
+
QMD traversal currently follows the underlying QMD scanner behavior rather than
|
|
257
|
+
Nodmix's builtin symlink rules. Keep temporary monorepo checkouts under
|
|
258
|
+
hidden directories like `.tmp/` or outside indexed QMD roots until QMD exposes
|
|
259
|
+
cycle-safe traversal or explicit exclusion controls.
|
|
260
|
+
|
|
261
|
+
## Configuration
|
|
262
|
+
|
|
263
|
+
For the full config surface (`memory.qmd.*`), search modes, update intervals,
|
|
264
|
+
scope rules, and all other knobs, see the
|
|
265
|
+
[Memory configuration reference](/reference/memory-config).
|
|
266
|
+
|
|
267
|
+
## Related
|
|
268
|
+
|
|
269
|
+
- [Memory overview](/concepts/memory)
|
|
270
|
+
- [Builtin memory engine](/concepts/memory-builtin)
|
|
271
|
+
- [Honcho memory](/concepts/memory-honcho)
|