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,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Messaging platforms Nodmix can connect to"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to choose a chat channel for Nodmix
|
|
5
|
+
- You need a quick overview of supported messaging platforms
|
|
6
|
+
title: "Chat channels"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Nodmix can talk to you on any chat app you already use. Each channel connects via the Gateway.
|
|
10
|
+
Text is supported everywhere; media and reactions vary by channel.
|
|
11
|
+
|
|
12
|
+
## Delivery notes
|
|
13
|
+
|
|
14
|
+
- Telegram replies that contain markdown image syntax, such as ``,
|
|
15
|
+
are converted into media replies on the final outbound path when possible.
|
|
16
|
+
- Slack multi-person DMs route as group chats, so group policy, mention
|
|
17
|
+
behavior, and group-session rules apply to MPIM conversations.
|
|
18
|
+
- WhatsApp setup is install-on-demand: onboarding can show the setup flow before
|
|
19
|
+
the plugin package is installed, and the Gateway loads the external
|
|
20
|
+
ClawHub/npm plugin only when the channel is actually active.
|
|
21
|
+
- Channels that accept bot-authored inbound messages can use shared
|
|
22
|
+
[bot loop protection](/channels/bot-loop-protection) to prevent bot pairs from
|
|
23
|
+
replying to each other indefinitely.
|
|
24
|
+
- Supported always-on rooms can use [ambient room events](/channels/ambient-room-events)
|
|
25
|
+
so unmentioned room chatter becomes quiet context unless the agent sends with
|
|
26
|
+
the `message` tool.
|
|
27
|
+
|
|
28
|
+
## Supported channels
|
|
29
|
+
|
|
30
|
+
- [Discord](/channels/discord) - Discord Bot API + Gateway; supports servers, channels, and DMs.
|
|
31
|
+
- [Feishu](/channels/feishu) - Feishu/Lark bot via WebSocket (bundled plugin).
|
|
32
|
+
- [Google Chat](/channels/googlechat) - Google Chat API app via HTTP webhook (downloadable plugin).
|
|
33
|
+
- [iMessage](/channels/imessage) - Native macOS integration via the `imsg` bridge on a signed-in Mac (or SSH wrapper when the Gateway runs elsewhere), including private API actions for replies, tapbacks, effects, attachments, and group management. Preferred for new Nodmix iMessage setups when host permissions and Messages access fit.
|
|
34
|
+
- [IRC](/channels/irc) - Classic IRC servers; channels + DMs with pairing/allowlist controls.
|
|
35
|
+
- [LINE](/channels/line) - LINE Messaging API bot (downloadable plugin).
|
|
36
|
+
- [Matrix](/channels/matrix) - Matrix protocol (downloadable plugin).
|
|
37
|
+
- [Mattermost](/channels/mattermost) - Bot API + WebSocket; channels, groups, DMs (downloadable plugin).
|
|
38
|
+
- [Microsoft Teams](/channels/msteams) - Bot Framework; enterprise support (bundled plugin).
|
|
39
|
+
- [Nextcloud Talk](/channels/nextcloud-talk) - Self-hosted chat via Nextcloud Talk (bundled plugin).
|
|
40
|
+
- [Nostr](/channels/nostr) - Decentralized DMs via NIP-04 (bundled plugin).
|
|
41
|
+
- [QQ Bot](/channels/qqbot) - QQ Bot API; private chat, group chat, and rich media (bundled plugin).
|
|
42
|
+
- [Signal](/channels/signal) - signal-cli; privacy-focused.
|
|
43
|
+
- [Slack](/channels/slack) - Bolt SDK; workspace apps.
|
|
44
|
+
- [Synology Chat](/channels/synology-chat) - Synology NAS Chat via outgoing+incoming webhooks (bundled plugin).
|
|
45
|
+
- [Telegram](/channels/telegram) - Bot API via grammY; supports groups.
|
|
46
|
+
- [Tlon](/channels/tlon) - Urbit-based messenger (bundled plugin).
|
|
47
|
+
- [Twitch](/channels/twitch) - Twitch chat via IRC connection (bundled plugin).
|
|
48
|
+
- [Voice Call](/plugins/voice-call) - Telephony via Plivo or Twilio (plugin, installed separately).
|
|
49
|
+
- [WebChat](/web/webchat) - Gateway WebChat UI over WebSocket.
|
|
50
|
+
- [WeChat](/channels/wechat) - Tencent iLink Bot plugin via QR login; private chats only (external plugin).
|
|
51
|
+
- [WhatsApp](/channels/whatsapp) - Most popular; uses Baileys and requires QR pairing.
|
|
52
|
+
- [Yuanbao](/channels/yuanbao) - Tencent Yuanbao bot (external plugin).
|
|
53
|
+
- [Zalo](/channels/zalo) - Zalo Bot API; Vietnam's popular messenger (bundled plugin).
|
|
54
|
+
- [Zalo Personal](/channels/zalouser) - Zalo personal account via QR login (bundled plugin).
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Channels can run simultaneously; configure multiple and Nodmix will route per chat.
|
|
59
|
+
- Fastest setup is usually **Telegram** (simple bot token). WhatsApp requires QR pairing and
|
|
60
|
+
stores more state on disk.
|
|
61
|
+
- Group behavior varies by channel; see [Groups](/channels/groups).
|
|
62
|
+
- DM pairing and allowlists are enforced for safety; see [Security](/gateway/security).
|
|
63
|
+
- Troubleshooting: [Channel troubleshooting](/channels/troubleshooting).
|
|
64
|
+
- Model providers are documented separately; see [Model Providers](/providers/models).
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "IRC plugin setup, access controls, and troubleshooting"
|
|
3
|
+
title: IRC
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to connect Nodmix to IRC channels or DMs
|
|
6
|
+
- You are configuring IRC allowlists, group policy, or mention gating
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Use IRC when you want Nodmix in classic channels (`#room`) and direct messages.
|
|
10
|
+
IRC ships as a bundled plugin, but it is configured in the main config under `channels.irc`.
|
|
11
|
+
|
|
12
|
+
## Quick start
|
|
13
|
+
|
|
14
|
+
1. Enable IRC config in `~/.nodmix/nodmix.json`.
|
|
15
|
+
2. Set at least:
|
|
16
|
+
|
|
17
|
+
```json5
|
|
18
|
+
{
|
|
19
|
+
channels: {
|
|
20
|
+
irc: {
|
|
21
|
+
enabled: true,
|
|
22
|
+
host: "irc.example.com",
|
|
23
|
+
port: 6697,
|
|
24
|
+
tls: true,
|
|
25
|
+
nick: "nodmix-bot",
|
|
26
|
+
channels: ["#nodmix"],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Prefer a private IRC server for bot coordination. If you intentionally use a public IRC network, common choices include Libera.Chat, OFTC, and Snoonet. Avoid predictable public channels for bot or swarm backchannel traffic.
|
|
33
|
+
|
|
34
|
+
3. Start/restart gateway:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
nodmix gateway run
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Security defaults
|
|
41
|
+
|
|
42
|
+
- IRC uses raw TCP/TLS sockets outside Nodmix operator-managed forward proxy routing. In deployments that require all egress through that forward proxy, set `channels.irc.enabled=false` unless direct IRC egress is explicitly approved.
|
|
43
|
+
- `channels.irc.dmPolicy` defaults to `"pairing"`.
|
|
44
|
+
- `channels.irc.groupPolicy` defaults to `"allowlist"`.
|
|
45
|
+
- With `groupPolicy="allowlist"`, set `channels.irc.groups` to define allowed channels.
|
|
46
|
+
- Use TLS (`channels.irc.tls=true`) unless you intentionally accept plaintext transport.
|
|
47
|
+
|
|
48
|
+
## Access control
|
|
49
|
+
|
|
50
|
+
There are two separate "gates" for IRC channels:
|
|
51
|
+
|
|
52
|
+
1. **Channel access** (`groupPolicy` + `groups`): whether the bot accepts messages from a channel at all.
|
|
53
|
+
2. **Sender access** (`groupAllowFrom` / per-channel `groups["#channel"].allowFrom`): who is allowed to trigger the bot inside that channel.
|
|
54
|
+
|
|
55
|
+
Config keys:
|
|
56
|
+
|
|
57
|
+
- DM allowlist (DM sender access): `channels.irc.allowFrom`
|
|
58
|
+
- Group sender allowlist (channel sender access): `channels.irc.groupAllowFrom`
|
|
59
|
+
- Per-channel controls (channel + sender + mention rules): `channels.irc.groups["#channel"]`
|
|
60
|
+
- `channels.irc.groupPolicy="open"` allows unconfigured channels (**still mention-gated by default**)
|
|
61
|
+
|
|
62
|
+
Allowlist entries should use stable sender identities (`nick!user@host`).
|
|
63
|
+
Bare nick matching is mutable and only enabled when `channels.irc.dangerouslyAllowNameMatching: true`.
|
|
64
|
+
|
|
65
|
+
### Common gotcha: `allowFrom` is for DMs, not channels
|
|
66
|
+
|
|
67
|
+
If you see logs like:
|
|
68
|
+
|
|
69
|
+
- `irc: drop group sender alice!ident@host (policy=allowlist)`
|
|
70
|
+
|
|
71
|
+
...it means the sender wasn't allowed for **group/channel** messages. Fix it by either:
|
|
72
|
+
|
|
73
|
+
- setting `channels.irc.groupAllowFrom` (global for all channels), or
|
|
74
|
+
- setting per-channel sender allowlists: `channels.irc.groups["#channel"].allowFrom`
|
|
75
|
+
|
|
76
|
+
Example (allow anyone in `#tuirc-dev` to talk to the bot):
|
|
77
|
+
|
|
78
|
+
```json5
|
|
79
|
+
{
|
|
80
|
+
channels: {
|
|
81
|
+
irc: {
|
|
82
|
+
groupPolicy: "allowlist",
|
|
83
|
+
groups: {
|
|
84
|
+
"#tuirc-dev": { allowFrom: ["*"] },
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Reply triggering (mentions)
|
|
92
|
+
|
|
93
|
+
Even if a channel is allowed (via `groupPolicy` + `groups`) and the sender is allowed, Nodmix defaults to **mention-gating** in group contexts.
|
|
94
|
+
|
|
95
|
+
That means you may see logs like `drop channel … (missing-mention)` unless the message includes a mention pattern that matches the bot.
|
|
96
|
+
|
|
97
|
+
To make the bot reply in an IRC channel **without needing a mention**, disable mention gating for that channel:
|
|
98
|
+
|
|
99
|
+
```json5
|
|
100
|
+
{
|
|
101
|
+
channels: {
|
|
102
|
+
irc: {
|
|
103
|
+
groupPolicy: "allowlist",
|
|
104
|
+
groups: {
|
|
105
|
+
"#tuirc-dev": {
|
|
106
|
+
requireMention: false,
|
|
107
|
+
allowFrom: ["*"],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Or to allow **all** IRC channels (no per-channel allowlist) and still reply without mentions:
|
|
116
|
+
|
|
117
|
+
```json5
|
|
118
|
+
{
|
|
119
|
+
channels: {
|
|
120
|
+
irc: {
|
|
121
|
+
groupPolicy: "open",
|
|
122
|
+
groups: {
|
|
123
|
+
"*": { requireMention: false, allowFrom: ["*"] },
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Security note (recommended for public channels)
|
|
131
|
+
|
|
132
|
+
If you allow `allowFrom: ["*"]` in a public channel, anyone can prompt the bot.
|
|
133
|
+
To reduce risk, restrict tools for that channel.
|
|
134
|
+
|
|
135
|
+
### Same tools for everyone in the channel
|
|
136
|
+
|
|
137
|
+
```json5
|
|
138
|
+
{
|
|
139
|
+
channels: {
|
|
140
|
+
irc: {
|
|
141
|
+
groups: {
|
|
142
|
+
"#tuirc-dev": {
|
|
143
|
+
allowFrom: ["*"],
|
|
144
|
+
tools: {
|
|
145
|
+
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Different tools per sender (owner gets more power)
|
|
155
|
+
|
|
156
|
+
Use `toolsBySender` to apply a stricter policy to `"*"` and a looser one to your nick:
|
|
157
|
+
|
|
158
|
+
```json5
|
|
159
|
+
{
|
|
160
|
+
channels: {
|
|
161
|
+
irc: {
|
|
162
|
+
groups: {
|
|
163
|
+
"#tuirc-dev": {
|
|
164
|
+
allowFrom: ["*"],
|
|
165
|
+
toolsBySender: {
|
|
166
|
+
"*": {
|
|
167
|
+
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
|
|
168
|
+
},
|
|
169
|
+
"id:eigen": {
|
|
170
|
+
deny: ["gateway", "nodes", "cron"],
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Notes:
|
|
181
|
+
|
|
182
|
+
- `toolsBySender` keys should use `id:` for IRC sender identity values:
|
|
183
|
+
`id:eigen` or `id:eigen!~eigen@174.127.248.171` for stronger matching.
|
|
184
|
+
- Legacy unprefixed keys are still accepted and matched as `id:` only.
|
|
185
|
+
- The first matching sender policy wins; `"*"` is the wildcard fallback.
|
|
186
|
+
|
|
187
|
+
For more on group access vs mention-gating (and how they interact), see: [/channels/groups](/channels/groups).
|
|
188
|
+
|
|
189
|
+
## NickServ
|
|
190
|
+
|
|
191
|
+
To identify with NickServ after connect:
|
|
192
|
+
|
|
193
|
+
```json5
|
|
194
|
+
{
|
|
195
|
+
channels: {
|
|
196
|
+
irc: {
|
|
197
|
+
nickserv: {
|
|
198
|
+
enabled: true,
|
|
199
|
+
service: "NickServ",
|
|
200
|
+
password: "your-nickserv-password",
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Optional one-time registration on connect:
|
|
208
|
+
|
|
209
|
+
```json5
|
|
210
|
+
{
|
|
211
|
+
channels: {
|
|
212
|
+
irc: {
|
|
213
|
+
nickserv: {
|
|
214
|
+
register: true,
|
|
215
|
+
registerEmail: "bot@example.com",
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Disable `register` after the nick is registered to avoid repeated REGISTER attempts.
|
|
223
|
+
|
|
224
|
+
## Environment variables
|
|
225
|
+
|
|
226
|
+
Default account supports:
|
|
227
|
+
|
|
228
|
+
- `IRC_HOST`
|
|
229
|
+
- `IRC_PORT`
|
|
230
|
+
- `IRC_TLS`
|
|
231
|
+
- `IRC_NICK`
|
|
232
|
+
- `IRC_USERNAME`
|
|
233
|
+
- `IRC_REALNAME`
|
|
234
|
+
- `IRC_PASSWORD`
|
|
235
|
+
- `IRC_CHANNELS` (comma-separated)
|
|
236
|
+
- `IRC_NICKSERV_PASSWORD`
|
|
237
|
+
- `IRC_NICKSERV_REGISTER_EMAIL`
|
|
238
|
+
|
|
239
|
+
`IRC_HOST` cannot be set from a workspace `.env`; see [Workspace `.env` files](/gateway/security).
|
|
240
|
+
|
|
241
|
+
## Troubleshooting
|
|
242
|
+
|
|
243
|
+
- If the bot connects but never replies in channels, verify `channels.irc.groups` **and** whether mention-gating is dropping messages (`missing-mention`). If you want it to reply without pings, set `requireMention:false` for the channel.
|
|
244
|
+
- If login fails, verify nick availability and server password.
|
|
245
|
+
- If TLS fails on a custom network, verify host/port and certificate setup.
|
|
246
|
+
|
|
247
|
+
## Related
|
|
248
|
+
|
|
249
|
+
- [Channels Overview](/channels) — all supported channels
|
|
250
|
+
- [Pairing](/channels/pairing) — DM authentication and pairing flow
|
|
251
|
+
- [Groups](/channels/groups) — group chat behavior and mention gating
|
|
252
|
+
- [Channel Routing](/channels/channel-routing) — session routing for messages
|
|
253
|
+
- [Security](/gateway/security) — access model and hardening
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "LINE Messaging API plugin setup, config, and usage"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to connect Nodmix to LINE
|
|
5
|
+
- You need LINE webhook + credential setup
|
|
6
|
+
- You want LINE-specific message options
|
|
7
|
+
title: LINE
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
LINE connects to Nodmix via the LINE Messaging API. The plugin runs as a webhook
|
|
11
|
+
receiver on the gateway and uses your channel access token + channel secret for
|
|
12
|
+
authentication.
|
|
13
|
+
|
|
14
|
+
Status: downloadable plugin. Direct messages, group chats, media, locations, Flex
|
|
15
|
+
messages, template messages, and quick replies are supported. Reactions and threads
|
|
16
|
+
are not supported.
|
|
17
|
+
|
|
18
|
+
## Install
|
|
19
|
+
|
|
20
|
+
Install LINE before configuring the channel:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
nodmix plugins install @nodmix/line
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Local checkout (when running from a git repo):
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
nodmix plugins install ./path/to/local/line-plugin
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Setup
|
|
33
|
+
|
|
34
|
+
1. Create a LINE Developers account and open the Console:
|
|
35
|
+
[https://developers.line.biz/console/](https://developers.line.biz/console/)
|
|
36
|
+
2. Create (or pick) a Provider and add a **Messaging API** channel.
|
|
37
|
+
3. Copy the **Channel access token** and **Channel secret** from the channel settings.
|
|
38
|
+
4. Enable **Use webhook** in the Messaging API settings.
|
|
39
|
+
5. Set the webhook URL to your gateway endpoint (HTTPS required):
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
https://gateway-host/line/webhook
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The gateway responds to LINE's webhook verification (GET) and acknowledges signed
|
|
46
|
+
inbound events (POST) immediately after signature and payload validation; agent
|
|
47
|
+
processing continues asynchronously.
|
|
48
|
+
If you need a custom path, set `channels.line.webhookPath` or
|
|
49
|
+
`channels.line.accounts.<id>.webhookPath` and update the URL accordingly.
|
|
50
|
+
|
|
51
|
+
Security note:
|
|
52
|
+
|
|
53
|
+
- LINE signature verification is body-dependent (HMAC over the raw body), so Nodmix applies strict pre-auth body limits and timeout before verification.
|
|
54
|
+
- Nodmix processes webhook events from the verified raw request bytes. Upstream middleware-transformed `req.body` values are ignored for signature-integrity safety.
|
|
55
|
+
|
|
56
|
+
## Configure
|
|
57
|
+
|
|
58
|
+
Minimal config:
|
|
59
|
+
|
|
60
|
+
```json5
|
|
61
|
+
{
|
|
62
|
+
channels: {
|
|
63
|
+
line: {
|
|
64
|
+
enabled: true,
|
|
65
|
+
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
|
|
66
|
+
channelSecret: "LINE_CHANNEL_SECRET",
|
|
67
|
+
dmPolicy: "pairing",
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Public DM config:
|
|
74
|
+
|
|
75
|
+
```json5
|
|
76
|
+
{
|
|
77
|
+
channels: {
|
|
78
|
+
line: {
|
|
79
|
+
enabled: true,
|
|
80
|
+
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
|
|
81
|
+
channelSecret: "LINE_CHANNEL_SECRET",
|
|
82
|
+
dmPolicy: "open",
|
|
83
|
+
allowFrom: ["*"],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Env vars (default account only):
|
|
90
|
+
|
|
91
|
+
- `LINE_CHANNEL_ACCESS_TOKEN`
|
|
92
|
+
- `LINE_CHANNEL_SECRET`
|
|
93
|
+
|
|
94
|
+
Token/secret files:
|
|
95
|
+
|
|
96
|
+
```json5
|
|
97
|
+
{
|
|
98
|
+
channels: {
|
|
99
|
+
line: {
|
|
100
|
+
tokenFile: "/path/to/line-token.txt",
|
|
101
|
+
secretFile: "/path/to/line-secret.txt",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`tokenFile` and `secretFile` must point to regular files. Symlinks are rejected.
|
|
108
|
+
|
|
109
|
+
Multiple accounts:
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
channels: {
|
|
114
|
+
line: {
|
|
115
|
+
accounts: {
|
|
116
|
+
marketing: {
|
|
117
|
+
channelAccessToken: "...",
|
|
118
|
+
channelSecret: "...",
|
|
119
|
+
webhookPath: "/line/marketing",
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Access control
|
|
128
|
+
|
|
129
|
+
Direct messages default to pairing. Unknown senders get a pairing code and their
|
|
130
|
+
messages are ignored until approved.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
nodmix pairing list line
|
|
134
|
+
nodmix pairing approve line <CODE>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Allowlists and policies:
|
|
138
|
+
|
|
139
|
+
- `channels.line.dmPolicy`: `pairing | allowlist | open | disabled`
|
|
140
|
+
- `channels.line.allowFrom`: allowlisted LINE user IDs for DMs; `dmPolicy: "open"` requires `["*"]`
|
|
141
|
+
- `channels.line.groupPolicy`: `allowlist | open | disabled`
|
|
142
|
+
- `channels.line.groupAllowFrom`: allowlisted LINE user IDs for groups
|
|
143
|
+
- Per-group overrides: `channels.line.groups.<groupId>.allowFrom`
|
|
144
|
+
- Static sender access groups can be referenced from `allowFrom`, `groupAllowFrom`, and per-group `allowFrom` with `accessGroup:<name>`.
|
|
145
|
+
- Runtime note: if `channels.line` is completely missing, runtime falls back to `groupPolicy="allowlist"` for group checks (even if `channels.defaults.groupPolicy` is set).
|
|
146
|
+
|
|
147
|
+
LINE IDs are case-sensitive. Valid IDs look like:
|
|
148
|
+
|
|
149
|
+
- User: `U` + 32 hex chars
|
|
150
|
+
- Group: `C` + 32 hex chars
|
|
151
|
+
- Room: `R` + 32 hex chars
|
|
152
|
+
|
|
153
|
+
## Message behavior
|
|
154
|
+
|
|
155
|
+
- Text is chunked at 5000 characters.
|
|
156
|
+
- Markdown formatting is stripped; code blocks and tables are converted into Flex
|
|
157
|
+
cards when possible.
|
|
158
|
+
- Streaming responses are buffered; LINE receives full chunks with a loading
|
|
159
|
+
animation while the agent works.
|
|
160
|
+
- Media downloads are capped by `channels.line.mediaMaxMb` (default 10).
|
|
161
|
+
- Inbound media is saved under `~/.nodmix/media/inbound/` before it is passed
|
|
162
|
+
to the agent, matching the shared media store used by other bundled channel
|
|
163
|
+
plugins.
|
|
164
|
+
|
|
165
|
+
## Channel data (rich messages)
|
|
166
|
+
|
|
167
|
+
Use `channelData.line` to send quick replies, locations, Flex cards, or template
|
|
168
|
+
messages.
|
|
169
|
+
|
|
170
|
+
```json5
|
|
171
|
+
{
|
|
172
|
+
text: "Here you go",
|
|
173
|
+
channelData: {
|
|
174
|
+
line: {
|
|
175
|
+
quickReplies: ["Status", "Help"],
|
|
176
|
+
location: {
|
|
177
|
+
title: "Office",
|
|
178
|
+
address: "123 Main St",
|
|
179
|
+
latitude: 35.681236,
|
|
180
|
+
longitude: 139.767125,
|
|
181
|
+
},
|
|
182
|
+
flexMessage: {
|
|
183
|
+
altText: "Status card",
|
|
184
|
+
contents: {
|
|
185
|
+
/* Flex payload */
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
templateMessage: {
|
|
189
|
+
type: "confirm",
|
|
190
|
+
text: "Proceed?",
|
|
191
|
+
confirmLabel: "Yes",
|
|
192
|
+
confirmData: "yes",
|
|
193
|
+
cancelLabel: "No",
|
|
194
|
+
cancelData: "no",
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
The LINE plugin also ships a `/card` command for Flex message presets:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
/card info "Welcome" "Thanks for joining!"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## ACP support
|
|
208
|
+
|
|
209
|
+
LINE supports ACP (Agent Communication Protocol) conversation bindings:
|
|
210
|
+
|
|
211
|
+
- `/acp spawn <agent> --bind here` binds the current LINE chat to an ACP session without creating a child thread.
|
|
212
|
+
- Configured ACP bindings and active conversation-bound ACP sessions work on LINE like other conversation channels.
|
|
213
|
+
|
|
214
|
+
See [ACP agents](/tools/acp-agents) for details.
|
|
215
|
+
|
|
216
|
+
## Outbound media
|
|
217
|
+
|
|
218
|
+
The LINE plugin supports sending images, videos, and audio files through the agent message tool. Media is sent via the LINE-specific delivery path with appropriate preview and tracking handling:
|
|
219
|
+
|
|
220
|
+
- **Images**: sent as LINE image messages with automatic preview generation.
|
|
221
|
+
- **Videos**: sent with explicit preview and content-type handling.
|
|
222
|
+
- **Audio**: sent as LINE audio messages.
|
|
223
|
+
|
|
224
|
+
Outbound media URLs must be public HTTPS URLs. Nodmix validates the target hostname before handing the URL to LINE and rejects loopback, link-local, and private-network targets.
|
|
225
|
+
|
|
226
|
+
Generic media sends fall back to the existing image-only route when a LINE-specific path is not available.
|
|
227
|
+
|
|
228
|
+
## Troubleshooting
|
|
229
|
+
|
|
230
|
+
- **Webhook verification fails:** ensure the webhook URL is HTTPS and the
|
|
231
|
+
`channelSecret` matches the LINE console.
|
|
232
|
+
- **No inbound events:** confirm the webhook path matches `channels.line.webhookPath`
|
|
233
|
+
and that the gateway is reachable from LINE.
|
|
234
|
+
- **Media download errors:** raise `channels.line.mediaMaxMb` if media exceeds the
|
|
235
|
+
default limit.
|
|
236
|
+
|
|
237
|
+
## Related
|
|
238
|
+
|
|
239
|
+
- [Channels Overview](/channels) — all supported channels
|
|
240
|
+
- [Pairing](/channels/pairing) — DM authentication and pairing flow
|
|
241
|
+
- [Groups](/channels/groups) — group chat behavior and mention gating
|
|
242
|
+
- [Channel Routing](/channels/channel-routing) — session routing for messages
|
|
243
|
+
- [Security](/gateway/security) — access model and hardening
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Inbound channel location parsing (Telegram/WhatsApp/Matrix) and context fields"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying channel location parsing
|
|
5
|
+
- Using location context fields in agent prompts or tools
|
|
6
|
+
title: "Channel location parsing"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Nodmix normalizes shared locations from chat channels into:
|
|
10
|
+
|
|
11
|
+
- terse coordinate text appended to the inbound body, and
|
|
12
|
+
- structured fields in the auto-reply context payload. Channel-provided labels, addresses, and captions/comments are rendered into the prompt by the shared untrusted metadata JSON block, not inline in the user body.
|
|
13
|
+
|
|
14
|
+
Currently supported:
|
|
15
|
+
|
|
16
|
+
- **Telegram** (location pins + venues + live locations)
|
|
17
|
+
- **WhatsApp** (locationMessage + liveLocationMessage)
|
|
18
|
+
- **Matrix** (`m.location` with `geo_uri`)
|
|
19
|
+
|
|
20
|
+
## Text formatting
|
|
21
|
+
|
|
22
|
+
Locations are rendered as friendly lines without brackets:
|
|
23
|
+
|
|
24
|
+
- Pin:
|
|
25
|
+
- `📍 48.858844, 2.294351 ±12m`
|
|
26
|
+
- Named place:
|
|
27
|
+
- `📍 48.858844, 2.294351 ±12m`
|
|
28
|
+
- Live share:
|
|
29
|
+
- `🛰 Live location: 48.858844, 2.294351 ±12m`
|
|
30
|
+
|
|
31
|
+
If the channel includes a label, address, or caption/comment, it is preserved in the context payload and appears in the prompt as fenced untrusted JSON:
|
|
32
|
+
|
|
33
|
+
````text
|
|
34
|
+
Location (untrusted metadata):
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"latitude": 48.858844,
|
|
38
|
+
"longitude": 2.294351,
|
|
39
|
+
"name": "Eiffel Tower",
|
|
40
|
+
"address": "Champ de Mars, Paris",
|
|
41
|
+
"caption": "Meet here"
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
````
|
|
45
|
+
|
|
46
|
+
## Context fields
|
|
47
|
+
|
|
48
|
+
When a location is present, these fields are added to `ctx`:
|
|
49
|
+
|
|
50
|
+
- `LocationLat` (number)
|
|
51
|
+
- `LocationLon` (number)
|
|
52
|
+
- `LocationAccuracy` (number, meters; optional)
|
|
53
|
+
- `LocationName` (string; optional)
|
|
54
|
+
- `LocationAddress` (string; optional)
|
|
55
|
+
- `LocationSource` (`pin | place | live`)
|
|
56
|
+
- `LocationIsLive` (boolean)
|
|
57
|
+
- `LocationCaption` (string; optional)
|
|
58
|
+
|
|
59
|
+
The prompt renderer treats `LocationName`, `LocationAddress`, and `LocationCaption` as untrusted metadata and serializes them through the same bounded JSON path used for other channel context.
|
|
60
|
+
|
|
61
|
+
## Channel notes
|
|
62
|
+
|
|
63
|
+
- **Telegram**: venues map to `LocationName/LocationAddress`; live locations use `live_period`.
|
|
64
|
+
- **WhatsApp**: `locationMessage.comment` and `liveLocationMessage.caption` populate `LocationCaption`.
|
|
65
|
+
- **Matrix**: `geo_uri` is parsed as a pin location; altitude is ignored and `LocationIsLive` is always false.
|
|
66
|
+
|
|
67
|
+
## Related
|
|
68
|
+
|
|
69
|
+
- [Location command (nodes)](/nodes/location-command)
|
|
70
|
+
- [Camera capture](/nodes/camera)
|
|
71
|
+
- [Media understanding](/nodes/media-understanding)
|