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,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Run Nodmix in a rootless Podman container"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a containerized gateway with Podman instead of Docker
|
|
5
|
+
title: "Podman"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Run the Nodmix Gateway in a rootless Podman container, managed by your current non-root user.
|
|
9
|
+
|
|
10
|
+
The intended model is:
|
|
11
|
+
|
|
12
|
+
- Podman runs the gateway container.
|
|
13
|
+
- Your host `nodmix` CLI is the control plane.
|
|
14
|
+
- Persistent state lives on the host under `~/.nodmix` by default.
|
|
15
|
+
- Day-to-day management uses `nodmix --container <name> ...` instead of `sudo -u nodmix`, `podman exec`, or a separate service user.
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- **Podman** in rootless mode
|
|
20
|
+
- **Nodmix CLI** installed on the host
|
|
21
|
+
- **Optional:** `systemd --user` if you want Quadlet-managed auto-start
|
|
22
|
+
- **Optional:** `sudo` only if you want `loginctl enable-linger "$(whoami)"` for boot persistence on a headless host
|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
<Steps>
|
|
27
|
+
<Step title="One-time setup">
|
|
28
|
+
From the repo root, run `./scripts/podman/setup.sh`.
|
|
29
|
+
</Step>
|
|
30
|
+
|
|
31
|
+
<Step title="Start the Gateway container">
|
|
32
|
+
Start the container with `./scripts/run-nodmix-podman.sh launch`.
|
|
33
|
+
</Step>
|
|
34
|
+
|
|
35
|
+
<Step title="Run onboarding inside the container">
|
|
36
|
+
Run `./scripts/run-nodmix-podman.sh launch setup`, then open `http://127.0.0.1:18789/`.
|
|
37
|
+
</Step>
|
|
38
|
+
|
|
39
|
+
<Step title="Manage the running container from the host CLI">
|
|
40
|
+
Set `NODMIX_CONTAINER=nodmix`, then use normal `nodmix` commands from the host.
|
|
41
|
+
</Step>
|
|
42
|
+
</Steps>
|
|
43
|
+
|
|
44
|
+
Setup details:
|
|
45
|
+
|
|
46
|
+
- `./scripts/podman/setup.sh` builds `nodmix:local` in your rootless Podman store by default, or uses `NODMIX_IMAGE` / `NODMIX_PODMAN_IMAGE` if you set one.
|
|
47
|
+
- It creates `~/.nodmix/nodmix.json` with `gateway.mode: "local"` if missing.
|
|
48
|
+
- It creates `~/.nodmix/.env` with `NODMIX_GATEWAY_TOKEN` if missing.
|
|
49
|
+
- For manual launches, the helper reads only a small allowlist of Podman-related keys from `~/.nodmix/.env` and passes explicit runtime env vars to the container; it does not hand the full env file to Podman.
|
|
50
|
+
|
|
51
|
+
Quadlet-managed setup:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
./scripts/podman/setup.sh --quadlet
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Quadlet is a Linux-only option because it depends on systemd user services.
|
|
58
|
+
|
|
59
|
+
You can also set `NODMIX_PODMAN_QUADLET=1`.
|
|
60
|
+
|
|
61
|
+
Optional build/setup env vars:
|
|
62
|
+
|
|
63
|
+
- `NODMIX_IMAGE` or `NODMIX_PODMAN_IMAGE` -- use an existing/pulled image instead of building `nodmix:local`
|
|
64
|
+
- `NODMIX_IMAGE_APT_PACKAGES` -- install extra apt packages during image build (also accepts legacy `NODMIX_DOCKER_APT_PACKAGES`)
|
|
65
|
+
- `NODMIX_IMAGE_PIP_PACKAGES` -- install extra Python packages during image build; pin versions and use only package indexes you trust
|
|
66
|
+
- `NODMIX_EXTENSIONS` -- pre-install plugin dependencies at build time
|
|
67
|
+
- `NODMIX_INSTALL_BROWSER` -- pre-install Chromium and Xvfb for browser automation (set to `1` to enable)
|
|
68
|
+
|
|
69
|
+
Container start:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
./scripts/run-nodmix-podman.sh launch
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The script starts the container as your current uid/gid with `--userns=keep-id` and bind-mounts your Nodmix state into the container.
|
|
76
|
+
|
|
77
|
+
Onboarding:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
./scripts/run-nodmix-podman.sh launch setup
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Then open `http://127.0.0.1:18789/` and use the token from `~/.nodmix/.env`.
|
|
84
|
+
|
|
85
|
+
Host CLI default:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
export NODMIX_CONTAINER=nodmix
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Then commands such as these will run inside that container automatically:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
nodmix dashboard --no-open
|
|
95
|
+
nodmix gateway status --deep # includes extra service scan
|
|
96
|
+
nodmix doctor
|
|
97
|
+
nodmix channels login
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
On macOS, Podman machine may make the browser appear non-local to the gateway.
|
|
101
|
+
If the Control UI reports device-auth errors after launch, use the Tailscale guidance in
|
|
102
|
+
[Podman and Tailscale](#podman--tailscale).
|
|
103
|
+
|
|
104
|
+
<a id="podman--tailscale"></a>
|
|
105
|
+
|
|
106
|
+
## Podman and Tailscale
|
|
107
|
+
|
|
108
|
+
For HTTPS or remote browser access, follow the main Tailscale docs.
|
|
109
|
+
|
|
110
|
+
Podman-specific note:
|
|
111
|
+
|
|
112
|
+
- Keep the Podman publish host at `127.0.0.1`.
|
|
113
|
+
- Prefer host-managed `tailscale serve` over `nodmix gateway --tailscale serve`.
|
|
114
|
+
- On macOS, if local browser device-auth context is unreliable, use Tailscale access instead of ad hoc local tunnel workarounds.
|
|
115
|
+
|
|
116
|
+
See:
|
|
117
|
+
|
|
118
|
+
- [Tailscale](/gateway/tailscale)
|
|
119
|
+
- [Control UI](/web/control-ui)
|
|
120
|
+
|
|
121
|
+
## Systemd (Quadlet, optional)
|
|
122
|
+
|
|
123
|
+
If you ran `./scripts/podman/setup.sh --quadlet`, setup installs a Quadlet file at:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
~/.config/containers/systemd/nodmix.container
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Useful commands:
|
|
130
|
+
|
|
131
|
+
- **Start:** `systemctl --user start nodmix.service`
|
|
132
|
+
- **Stop:** `systemctl --user stop nodmix.service`
|
|
133
|
+
- **Status:** `systemctl --user status nodmix.service`
|
|
134
|
+
- **Logs:** `journalctl --user -u nodmix.service -f`
|
|
135
|
+
|
|
136
|
+
After editing the Quadlet file:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
systemctl --user daemon-reload
|
|
140
|
+
systemctl --user restart nodmix.service
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
For boot persistence on SSH/headless hosts, enable lingering for your current user:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
sudo loginctl enable-linger "$(whoami)"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Config, env, and storage
|
|
150
|
+
|
|
151
|
+
- **Config dir:** `~/.nodmix`
|
|
152
|
+
- **Workspace dir:** `~/.nodmix/workspace`
|
|
153
|
+
- **Token file:** `~/.nodmix/.env`
|
|
154
|
+
- **Launch helper:** `./scripts/run-nodmix-podman.sh`
|
|
155
|
+
|
|
156
|
+
The launch script and Quadlet bind-mount host state into the container:
|
|
157
|
+
|
|
158
|
+
- `NODMIX_CONFIG_DIR` -> `/home/node/.nodmix`
|
|
159
|
+
- `NODMIX_WORKSPACE_DIR` -> `/home/node/.nodmix/workspace`
|
|
160
|
+
|
|
161
|
+
By default those are host directories, not anonymous container state, so
|
|
162
|
+
`nodmix.json`, per-agent `auth-profiles.json`, channel/provider state,
|
|
163
|
+
sessions, and workspace survive container replacement.
|
|
164
|
+
The Podman setup also seeds `gateway.controlUi.allowedOrigins` for `127.0.0.1` and `localhost` on the published gateway port so the local dashboard works with the container's non-loopback bind.
|
|
165
|
+
|
|
166
|
+
Useful env vars for the manual launcher:
|
|
167
|
+
|
|
168
|
+
- `NODMIX_PODMAN_CONTAINER` -- container name (`nodmix` by default)
|
|
169
|
+
- `NODMIX_PODMAN_IMAGE` / `NODMIX_IMAGE` -- image to run
|
|
170
|
+
- `NODMIX_PODMAN_GATEWAY_HOST_PORT` -- host port mapped to container `18789`
|
|
171
|
+
- `NODMIX_PODMAN_BRIDGE_HOST_PORT` -- host port mapped to container `18790`
|
|
172
|
+
- `NODMIX_PODMAN_PUBLISH_HOST` -- host interface for published ports; default is `127.0.0.1`
|
|
173
|
+
- `NODMIX_GATEWAY_BIND` -- gateway bind mode inside the container; default is `lan`
|
|
174
|
+
- `NODMIX_PODMAN_USERNS` -- `keep-id` (default), `auto`, or `host`
|
|
175
|
+
|
|
176
|
+
The manual launcher reads `~/.nodmix/.env` before finalizing container/image defaults, so you can persist these there.
|
|
177
|
+
|
|
178
|
+
If you use a non-default `NODMIX_CONFIG_DIR` or `NODMIX_WORKSPACE_DIR`, set the same variables for both `./scripts/podman/setup.sh` and later `./scripts/run-nodmix-podman.sh launch` commands. The repo-local launcher does not persist custom path overrides across shells.
|
|
179
|
+
|
|
180
|
+
Quadlet note:
|
|
181
|
+
|
|
182
|
+
- The generated Quadlet service intentionally keeps a fixed, hardened default shape: `127.0.0.1` published ports, `--bind lan` inside the container, and `keep-id` user namespace.
|
|
183
|
+
- It pins `NODMIX_NO_RESPAWN=1`, `Restart=on-failure`, and `TimeoutStartSec=300`.
|
|
184
|
+
- It publishes both `127.0.0.1:18789:18789` (gateway) and `127.0.0.1:18790:18790` (bridge).
|
|
185
|
+
- It reads `~/.nodmix/.env` as a runtime `EnvironmentFile` for values such as `NODMIX_GATEWAY_TOKEN`, but it does not consume the manual launcher's Podman-specific override allowlist.
|
|
186
|
+
- If you need custom publish ports, publish host, or other container-run flags, use the manual launcher or edit `~/.config/containers/systemd/nodmix.container` directly, then reload and restart the service.
|
|
187
|
+
|
|
188
|
+
## Useful commands
|
|
189
|
+
|
|
190
|
+
- **Container logs:** `podman logs -f nodmix`
|
|
191
|
+
- **Stop container:** `podman stop nodmix`
|
|
192
|
+
- **Remove container:** `podman rm -f nodmix`
|
|
193
|
+
- **Open dashboard URL from host CLI:** `nodmix dashboard --no-open`
|
|
194
|
+
- **Health/status via host CLI:** `nodmix gateway status --deep` (RPC probe + extra
|
|
195
|
+
service scan)
|
|
196
|
+
|
|
197
|
+
## Troubleshooting
|
|
198
|
+
|
|
199
|
+
- **Permission denied (EACCES) on config or workspace:** The container runs with `--userns=keep-id` and `--user <your uid>:<your gid>` by default. Ensure the host config/workspace paths are owned by your current user.
|
|
200
|
+
- **Gateway start blocked (missing `gateway.mode=local`):** Ensure `~/.nodmix/nodmix.json` exists and sets `gateway.mode="local"`. `scripts/podman/setup.sh` creates this if missing.
|
|
201
|
+
- **Container CLI commands hit the wrong target:** Use `nodmix --container <name> ...` explicitly, or export `NODMIX_CONTAINER=<name>` in your shell.
|
|
202
|
+
- **`nodmix update` fails with `--container`:** Expected. Rebuild/pull the image, then restart the container or the Quadlet service.
|
|
203
|
+
- **Quadlet service does not start:** Run `systemctl --user daemon-reload`, then `systemctl --user start nodmix.service`. On headless systems you may also need `sudo loginctl enable-linger "$(whoami)"`.
|
|
204
|
+
- **SELinux blocks bind mounts:** Leave the default mount behavior alone; the launcher auto-adds `:Z` on Linux when SELinux is enforcing or permissive.
|
|
205
|
+
|
|
206
|
+
## Related
|
|
207
|
+
|
|
208
|
+
- [Docker](/install/docker)
|
|
209
|
+
- [Gateway background process](/gateway/background-process)
|
|
210
|
+
- [Gateway troubleshooting](/gateway/troubleshooting)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deploy Nodmix on Railway with one-click template"
|
|
3
|
+
read_when:
|
|
4
|
+
- Deploying Nodmix to Railway
|
|
5
|
+
- You want a one-click cloud deploy with browser-based Control UI
|
|
6
|
+
title: "Railway"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Railway
|
|
10
|
+
|
|
11
|
+
Deploy Nodmix on Railway with a one-click template and access it through the web Control UI.
|
|
12
|
+
This is the easiest "no terminal on the server" path: Railway runs the Gateway for you.
|
|
13
|
+
|
|
14
|
+
## Quick checklist (new users)
|
|
15
|
+
|
|
16
|
+
1. Click **Deploy on Railway** (below).
|
|
17
|
+
2. Add a **Volume** mounted at `/data`.
|
|
18
|
+
3. Set the required **Variables** (at least `NODMIX_GATEWAY_PORT` and `NODMIX_GATEWAY_TOKEN`).
|
|
19
|
+
4. Enable **HTTP Proxy** on port `8080`.
|
|
20
|
+
5. Open `https://<your-railway-domain>/nodmix` and connect using the configured shared secret. This template uses `NODMIX_GATEWAY_TOKEN` by default; if you replace it with password auth, use that password instead.
|
|
21
|
+
|
|
22
|
+
## One-click deploy
|
|
23
|
+
|
|
24
|
+
<a href="https://railway.com/deploy/clawdbot-railway-template" target="_blank" rel="noreferrer">
|
|
25
|
+
Deploy on Railway
|
|
26
|
+
</a>
|
|
27
|
+
|
|
28
|
+
After deploy, find your public URL in **Railway → your service → Settings → Domains**.
|
|
29
|
+
|
|
30
|
+
Railway will either:
|
|
31
|
+
|
|
32
|
+
- give you a generated domain (often `https://<something>.up.railway.app`), or
|
|
33
|
+
- use your custom domain if you attached one.
|
|
34
|
+
|
|
35
|
+
Then open:
|
|
36
|
+
|
|
37
|
+
- `https://<your-railway-domain>/nodmix` — Control UI
|
|
38
|
+
|
|
39
|
+
## What you get
|
|
40
|
+
|
|
41
|
+
- Hosted Nodmix Gateway + Control UI
|
|
42
|
+
- Persistent storage via Railway Volume (`/data`) so `nodmix.json`,
|
|
43
|
+
per-agent `auth-profiles.json`, channel/provider state, sessions, and
|
|
44
|
+
workspace survive redeploys
|
|
45
|
+
|
|
46
|
+
## Required Railway settings
|
|
47
|
+
|
|
48
|
+
### Public Networking
|
|
49
|
+
|
|
50
|
+
Enable **HTTP Proxy** for the service.
|
|
51
|
+
|
|
52
|
+
- Port: `8080`
|
|
53
|
+
|
|
54
|
+
### Volume (required)
|
|
55
|
+
|
|
56
|
+
Attach a volume mounted at:
|
|
57
|
+
|
|
58
|
+
- `/data`
|
|
59
|
+
|
|
60
|
+
### Variables
|
|
61
|
+
|
|
62
|
+
Set these variables on the service:
|
|
63
|
+
|
|
64
|
+
- `NODMIX_GATEWAY_PORT=8080` (required — must match the port in Public Networking)
|
|
65
|
+
- `NODMIX_GATEWAY_TOKEN` (required; treat as an admin secret)
|
|
66
|
+
- `NODMIX_STATE_DIR=/data/.nodmix` (recommended)
|
|
67
|
+
- `NODMIX_WORKSPACE_DIR=/data/workspace` (recommended)
|
|
68
|
+
|
|
69
|
+
## Connect a channel
|
|
70
|
+
|
|
71
|
+
Use the Control UI at `/nodmix` or run `nodmix onboard` via Railway's shell for channel setup instructions:
|
|
72
|
+
|
|
73
|
+
- [Telegram](/channels/telegram) (fastest — just a bot token)
|
|
74
|
+
- [Discord](/channels/discord)
|
|
75
|
+
- [All channels](/channels)
|
|
76
|
+
|
|
77
|
+
## Backups & migration
|
|
78
|
+
|
|
79
|
+
Export your state, config, auth profiles, and workspace:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
nodmix backup create
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This creates a portable backup archive with Nodmix state plus any configured
|
|
86
|
+
workspace. See [Backup](/cli/backup) for details.
|
|
87
|
+
|
|
88
|
+
## Next steps
|
|
89
|
+
|
|
90
|
+
- Set up messaging channels: [Channels](/channels)
|
|
91
|
+
- Configure the Gateway: [Gateway configuration](/gateway/configuration)
|
|
92
|
+
- Keep Nodmix up to date: [Updating](/install/updating)
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Host Nodmix on a Raspberry Pi for always-on self-hosting"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up Nodmix on a Raspberry Pi
|
|
5
|
+
- Running Nodmix on ARM devices
|
|
6
|
+
- Building a cheap always-on personal AI
|
|
7
|
+
title: "Raspberry Pi"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Run a persistent, always-on Nodmix Gateway on a Raspberry Pi. Since the Pi is just the gateway (models run in the cloud via API), even a modest Pi handles the workload well — typical hardware cost is **$35–80 one-time**, no monthly fees.
|
|
11
|
+
|
|
12
|
+
## Hardware compatibility
|
|
13
|
+
|
|
14
|
+
| Pi model | RAM | Works? | Notes |
|
|
15
|
+
| ----------- | ------ | ------ | ----------------------------------- |
|
|
16
|
+
| Pi 5 | 4/8 GB | Best | Fastest, recommended. |
|
|
17
|
+
| Pi 4 | 4 GB | Good | Sweet spot for most users. |
|
|
18
|
+
| Pi 4 | 2 GB | OK | Add swap. |
|
|
19
|
+
| Pi 4 | 1 GB | Tight | Possible with swap, minimal config. |
|
|
20
|
+
| Pi 3B+ | 1 GB | Slow | Works but sluggish. |
|
|
21
|
+
| Pi Zero 2 W | 512 MB | No | Not recommended. |
|
|
22
|
+
|
|
23
|
+
**Minimum:** 1 GB RAM, 1 core, 500 MB free disk, 64-bit OS.
|
|
24
|
+
**Recommended:** 2 GB+ RAM, 16 GB+ SD card (or USB SSD), Ethernet.
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
- Raspberry Pi 4 or 5 with 2 GB+ RAM (4 GB recommended)
|
|
29
|
+
- MicroSD card (16 GB+) or USB SSD (better performance)
|
|
30
|
+
- Official Pi power supply
|
|
31
|
+
- Network connection (Ethernet or WiFi)
|
|
32
|
+
- 64-bit Raspberry Pi OS (required -- do not use 32-bit)
|
|
33
|
+
- About 30 minutes
|
|
34
|
+
|
|
35
|
+
## Setup
|
|
36
|
+
|
|
37
|
+
<Steps>
|
|
38
|
+
<Step title="Flash the OS">
|
|
39
|
+
Use **Raspberry Pi OS Lite (64-bit)** -- no desktop needed for a headless server.
|
|
40
|
+
|
|
41
|
+
1. Download [Raspberry Pi Imager](https://www.raspberrypi.com/software/).
|
|
42
|
+
2. Choose OS: **Raspberry Pi OS Lite (64-bit)**.
|
|
43
|
+
3. In the settings dialog, pre-configure:
|
|
44
|
+
- Hostname: `gateway-host`
|
|
45
|
+
- Enable SSH
|
|
46
|
+
- Set username and password
|
|
47
|
+
- Configure WiFi (if not using Ethernet)
|
|
48
|
+
4. Flash to your SD card or USB drive, insert it, and boot the Pi.
|
|
49
|
+
|
|
50
|
+
</Step>
|
|
51
|
+
|
|
52
|
+
<Step title="Connect via SSH">
|
|
53
|
+
```bash
|
|
54
|
+
ssh user@gateway-host
|
|
55
|
+
```
|
|
56
|
+
</Step>
|
|
57
|
+
|
|
58
|
+
<Step title="Update the system">
|
|
59
|
+
```bash
|
|
60
|
+
sudo apt update && sudo apt upgrade -y
|
|
61
|
+
sudo apt install -y git curl build-essential
|
|
62
|
+
|
|
63
|
+
# Set timezone (important for cron and reminders)
|
|
64
|
+
sudo timedatectl set-timezone America/Chicago
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
</Step>
|
|
68
|
+
|
|
69
|
+
<Step title="Install Node.js 24">
|
|
70
|
+
```bash
|
|
71
|
+
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
|
|
72
|
+
sudo apt install -y nodejs
|
|
73
|
+
node --version
|
|
74
|
+
```
|
|
75
|
+
</Step>
|
|
76
|
+
|
|
77
|
+
<Step title="Add swap (important for 2 GB or less)">
|
|
78
|
+
```bash
|
|
79
|
+
sudo fallocate -l 2G /swapfile
|
|
80
|
+
sudo chmod 600 /swapfile
|
|
81
|
+
sudo mkswap /swapfile
|
|
82
|
+
sudo swapon /swapfile
|
|
83
|
+
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
|
84
|
+
|
|
85
|
+
# Reduce swappiness for low-RAM devices
|
|
86
|
+
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
|
|
87
|
+
sudo sysctl -p
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
</Step>
|
|
91
|
+
|
|
92
|
+
<Step title="Install Nodmix">
|
|
93
|
+
```bash
|
|
94
|
+
curl -fsSL https://nodmix.ai/install.sh | bash
|
|
95
|
+
```
|
|
96
|
+
</Step>
|
|
97
|
+
|
|
98
|
+
<Step title="Run onboarding">
|
|
99
|
+
```bash
|
|
100
|
+
nodmix onboard --install-daemon
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Follow the wizard. API keys are recommended over OAuth for headless devices. Telegram is the easiest channel to start with.
|
|
104
|
+
|
|
105
|
+
</Step>
|
|
106
|
+
|
|
107
|
+
<Step title="Verify">
|
|
108
|
+
```bash
|
|
109
|
+
nodmix status
|
|
110
|
+
systemctl --user status nodmix-gateway.service
|
|
111
|
+
journalctl --user -u nodmix-gateway.service -f
|
|
112
|
+
```
|
|
113
|
+
</Step>
|
|
114
|
+
|
|
115
|
+
<Step title="Access the Control UI">
|
|
116
|
+
On your computer, get a dashboard URL from the Pi:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
ssh user@gateway-host 'nodmix dashboard --no-open'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Then create an SSH tunnel in another terminal:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
ssh -N -L 18789:127.0.0.1:18789 user@gateway-host
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Open the printed URL in your local browser. For always-on remote access, see [Tailscale integration](/gateway/tailscale).
|
|
129
|
+
|
|
130
|
+
</Step>
|
|
131
|
+
</Steps>
|
|
132
|
+
|
|
133
|
+
## Performance tips
|
|
134
|
+
|
|
135
|
+
**Use a USB SSD** -- SD cards are slow and wear out. A USB SSD dramatically improves performance. See the [Pi USB boot guide](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot).
|
|
136
|
+
|
|
137
|
+
**Enable module compile cache** -- Speeds up repeated CLI invocations on lower-power Pi hosts:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
grep -q 'NODE_COMPILE_CACHE=/var/tmp/nodmix-compile-cache' ~/.bashrc || cat >> ~/.bashrc <<'EOF' # pragma: allowlist secret
|
|
141
|
+
export NODE_COMPILE_CACHE=/var/tmp/nodmix-compile-cache
|
|
142
|
+
mkdir -p /var/tmp/nodmix-compile-cache
|
|
143
|
+
export NODMIX_NO_RESPAWN=1
|
|
144
|
+
EOF
|
|
145
|
+
source ~/.bashrc
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`NODMIX_NO_RESPAWN=1` keeps routine Gateway restarts in-process, which avoids extra process handoffs and keeps PID tracking simple on small hosts.
|
|
149
|
+
|
|
150
|
+
**Reduce memory usage** -- For headless setups, free GPU memory and disable unused services:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
echo 'gpu_mem=16' | sudo tee -a /boot/config.txt
|
|
154
|
+
sudo systemctl disable bluetooth
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**systemd drop-in for stable restarts** -- If this Pi is mostly running Nodmix, add a service drop-in:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
systemctl --user edit nodmix-gateway.service
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```ini
|
|
164
|
+
[Service]
|
|
165
|
+
Environment=NODMIX_NO_RESPAWN=1
|
|
166
|
+
Environment=NODE_COMPILE_CACHE=/var/tmp/nodmix-compile-cache
|
|
167
|
+
Restart=always
|
|
168
|
+
RestartSec=2
|
|
169
|
+
TimeoutStartSec=90
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Then `systemctl --user daemon-reload && systemctl --user restart nodmix-gateway.service`. On a headless Pi, also enable lingering once so the user service survives logout: `sudo loginctl enable-linger "$(whoami)"`.
|
|
173
|
+
|
|
174
|
+
## Recommended model setup
|
|
175
|
+
|
|
176
|
+
Since the Pi only runs the gateway, use cloud-hosted API models:
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"agents": {
|
|
181
|
+
"defaults": {
|
|
182
|
+
"model": {
|
|
183
|
+
"primary": "anthropic/claude-sonnet-4-6",
|
|
184
|
+
"fallbacks": ["openai/gpt-5.4-mini"]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Do not run local LLMs on a Pi — even small models are too slow to be useful. Let Claude or GPT do the model work.
|
|
192
|
+
|
|
193
|
+
## ARM binary notes
|
|
194
|
+
|
|
195
|
+
Most Nodmix features work on ARM64 without changes (Node.js, Telegram, WhatsApp/Baileys, Chromium). The binaries that occasionally lack ARM builds are typically optional Go/Rust CLI tools shipped by skills. Verify a missing binary's release page for `linux-arm64` / `aarch64` artifacts before falling back to building from source.
|
|
196
|
+
|
|
197
|
+
## Persistence and backups
|
|
198
|
+
|
|
199
|
+
Nodmix state lives under:
|
|
200
|
+
|
|
201
|
+
- `~/.nodmix/` — `nodmix.json`, per-agent `auth-profiles.json`, channel/provider state, sessions.
|
|
202
|
+
- `~/.nodmix/workspace/` — agent workspace (SOUL.md, memory, artifacts).
|
|
203
|
+
|
|
204
|
+
These survive reboots. Take a portable snapshot with:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
nodmix backup create
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
If you keep these on an SSD, both performance and longevity improve over the SD card.
|
|
211
|
+
|
|
212
|
+
## Troubleshooting
|
|
213
|
+
|
|
214
|
+
**Out of memory** -- Verify swap is active with `free -h`. Disable unused services (`sudo systemctl disable cups bluetooth avahi-daemon`). Use API-based models only.
|
|
215
|
+
|
|
216
|
+
**Slow performance** -- Use a USB SSD instead of an SD card. Check for CPU throttling with `vcgencmd get_throttled` (should return `0x0`).
|
|
217
|
+
|
|
218
|
+
**Service will not start** -- Check logs with `journalctl --user -u nodmix-gateway.service --no-pager -n 100` and run `nodmix doctor --non-interactive`. If this is a headless Pi, also verify lingering is enabled: `sudo loginctl enable-linger "$(whoami)"`.
|
|
219
|
+
|
|
220
|
+
**ARM binary issues** -- If a skill fails with "exec format error", check whether the binary has an ARM64 build. Verify architecture with `uname -m` (should show `aarch64`).
|
|
221
|
+
|
|
222
|
+
**WiFi drops** -- Disable WiFi power management: `sudo iwconfig wlan0 power off`.
|
|
223
|
+
|
|
224
|
+
## Next steps
|
|
225
|
+
|
|
226
|
+
- [Channels](/channels) -- connect Telegram, WhatsApp, Discord, and more
|
|
227
|
+
- [Gateway configuration](/gateway/configuration) -- all config options
|
|
228
|
+
- [Updating](/install/updating) -- keep Nodmix up to date
|
|
229
|
+
|
|
230
|
+
## Related
|
|
231
|
+
|
|
232
|
+
- [Install overview](/install)
|
|
233
|
+
- [Linux server](/vps)
|
|
234
|
+
- [Platforms](/platforms)
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deploy Nodmix on Render with Infrastructure-as-Code"
|
|
3
|
+
read_when:
|
|
4
|
+
- Deploying Nodmix to Render
|
|
5
|
+
- You want a declarative cloud deploy with Render Blueprints
|
|
6
|
+
title: "Render"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Render
|
|
10
|
+
|
|
11
|
+
Deploy Nodmix on Render using Infrastructure as Code. The included `render.yaml` Blueprint defines your entire stack declaratively, service, disk, environment variables, so you can deploy with a single click and version your infrastructure alongside your code.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- A [Render account](https://render.com) (free tier available)
|
|
16
|
+
- An API key from your preferred [model provider](/providers)
|
|
17
|
+
|
|
18
|
+
## Deploy with a Render Blueprint
|
|
19
|
+
|
|
20
|
+
[Deploy to Render](https://render.com/deploy?repo=https://github.com/nodmix/nodmix)
|
|
21
|
+
|
|
22
|
+
Clicking this link will:
|
|
23
|
+
|
|
24
|
+
1. Create a new Render service from the `render.yaml` Blueprint at the root of this repo.
|
|
25
|
+
2. Build the Docker image and deploy
|
|
26
|
+
|
|
27
|
+
Once deployed, your service URL follows the pattern `https://<service-name>.onrender.com`.
|
|
28
|
+
|
|
29
|
+
## Understanding the Blueprint
|
|
30
|
+
|
|
31
|
+
Render Blueprints are YAML files that define your infrastructure. The `render.yaml` in this
|
|
32
|
+
repository configures everything needed to run Nodmix:
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
services:
|
|
36
|
+
- type: web
|
|
37
|
+
name: nodmix
|
|
38
|
+
runtime: docker
|
|
39
|
+
plan: starter
|
|
40
|
+
healthCheckPath: /health
|
|
41
|
+
envVars:
|
|
42
|
+
- key: NODMIX_GATEWAY_PORT
|
|
43
|
+
value: "8080"
|
|
44
|
+
- key: NODMIX_STATE_DIR
|
|
45
|
+
value: /data/.nodmix
|
|
46
|
+
- key: NODMIX_WORKSPACE_DIR
|
|
47
|
+
value: /data/workspace
|
|
48
|
+
- key: NODMIX_GATEWAY_TOKEN
|
|
49
|
+
generateValue: true # auto-generates a secure token
|
|
50
|
+
disk:
|
|
51
|
+
name: nodmix-data
|
|
52
|
+
mountPath: /data
|
|
53
|
+
sizeGB: 1
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Key Blueprint features used:
|
|
57
|
+
|
|
58
|
+
| Feature | Purpose |
|
|
59
|
+
| --------------------- | ---------------------------------------------------------- |
|
|
60
|
+
| `runtime: docker` | Builds from the repo's Dockerfile |
|
|
61
|
+
| `healthCheckPath` | Render monitors `/health` and restarts unhealthy instances |
|
|
62
|
+
| `generateValue: true` | Auto-generates a cryptographically secure value |
|
|
63
|
+
| `disk` | Persistent storage that survives redeploys |
|
|
64
|
+
|
|
65
|
+
## Choosing a plan
|
|
66
|
+
|
|
67
|
+
| Plan | Spin-down | Disk | Best for |
|
|
68
|
+
| --------- | ----------------- | ------------- | ----------------------------- |
|
|
69
|
+
| Free | After 15 min idle | Not available | Testing, demos |
|
|
70
|
+
| Starter | Never | 1GB+ | Personal use, small teams |
|
|
71
|
+
| Standard+ | Never | 1GB+ | Production, multiple channels |
|
|
72
|
+
|
|
73
|
+
The Blueprint defaults to `starter`. To use free tier, change `plan: free` in
|
|
74
|
+
your fork's `render.yaml` (but note: no persistent disk means Nodmix state
|
|
75
|
+
resets on each deploy).
|
|
76
|
+
|
|
77
|
+
## After deployment
|
|
78
|
+
|
|
79
|
+
### Access the Control UI
|
|
80
|
+
|
|
81
|
+
The web dashboard is available at `https://<your-service>.onrender.com/`.
|
|
82
|
+
|
|
83
|
+
Connect using the configured shared secret. This deploy template auto-generates
|
|
84
|
+
`NODMIX_GATEWAY_TOKEN` (find it in **Dashboard → your service →
|
|
85
|
+
Environment**); if you replace it with password auth, use that password
|
|
86
|
+
instead.
|
|
87
|
+
|
|
88
|
+
## Render Dashboard features
|
|
89
|
+
|
|
90
|
+
### Logs
|
|
91
|
+
|
|
92
|
+
View real-time logs in **Dashboard → your service → Logs**. Filter by:
|
|
93
|
+
|
|
94
|
+
- Build logs (Docker image creation)
|
|
95
|
+
- Deploy logs (service startup)
|
|
96
|
+
- Runtime logs (application output)
|
|
97
|
+
|
|
98
|
+
### Shell access
|
|
99
|
+
|
|
100
|
+
For debugging, open a shell session via **Dashboard → your service → Shell**. The persistent disk is mounted at `/data`.
|
|
101
|
+
|
|
102
|
+
### Environment variables
|
|
103
|
+
|
|
104
|
+
Modify variables in **Dashboard → your service → Environment**. Changes trigger an automatic redeploy.
|
|
105
|
+
|
|
106
|
+
### Auto-deploy
|
|
107
|
+
|
|
108
|
+
If you use the original Nodmix repository, Render will not auto-deploy your Nodmix. To update it, run a manual Blueprint sync from the dashboard.
|
|
109
|
+
|
|
110
|
+
## Custom domain
|
|
111
|
+
|
|
112
|
+
1. Go to **Dashboard → your service → Settings → Custom Domains**
|
|
113
|
+
2. Add your domain
|
|
114
|
+
3. Configure DNS as instructed (CNAME to `*.onrender.com`)
|
|
115
|
+
4. Render provisions a TLS certificate automatically
|
|
116
|
+
|
|
117
|
+
## Scaling
|
|
118
|
+
|
|
119
|
+
Render supports horizontal and vertical scaling:
|
|
120
|
+
|
|
121
|
+
- **Vertical**: Change the plan to get more CPU/RAM
|
|
122
|
+
- **Horizontal**: Increase instance count (Standard plan and above)
|
|
123
|
+
|
|
124
|
+
For Nodmix, vertical scaling is usually sufficient. Horizontal scaling requires sticky sessions or external state management.
|
|
125
|
+
|
|
126
|
+
## Backups and migration
|
|
127
|
+
|
|
128
|
+
Export your state, config, auth profiles, and workspace at any time using the
|
|
129
|
+
shell access in the Render Dashboard:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
nodmix backup create
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
This creates a portable backup archive with Nodmix state plus any configured
|
|
136
|
+
workspace. See [Backup](/cli/backup) for details.
|
|
137
|
+
|
|
138
|
+
## Troubleshooting
|
|
139
|
+
|
|
140
|
+
### Service will not start
|
|
141
|
+
|
|
142
|
+
Check the deploy logs in the Render Dashboard. Common issues:
|
|
143
|
+
|
|
144
|
+
- Missing `NODMIX_GATEWAY_TOKEN` — verify it is set in **Dashboard → Environment**
|
|
145
|
+
- Port mismatch — ensure `NODMIX_GATEWAY_PORT=8080` is set so the gateway binds to the port Render expects
|
|
146
|
+
|
|
147
|
+
### Slow cold starts (free tier)
|
|
148
|
+
|
|
149
|
+
Free tier services spin down after 15 minutes of inactivity. The first request after spin-down takes a few seconds while the container starts. Upgrade to Starter plan for always-on.
|
|
150
|
+
|
|
151
|
+
### Data loss after redeploy
|
|
152
|
+
|
|
153
|
+
This happens on free tier (no persistent disk). Upgrade to a paid plan, or
|
|
154
|
+
regularly export a full backup via `nodmix backup create` in the Render shell.
|
|
155
|
+
|
|
156
|
+
### Health check failures
|
|
157
|
+
|
|
158
|
+
Render expects a 200 response from `/health` within 30 seconds. If builds succeed but deploys fail, the service may be taking too long to start. Check:
|
|
159
|
+
|
|
160
|
+
- Build logs for errors
|
|
161
|
+
- Whether the container runs locally with `docker build && docker run`
|
|
162
|
+
|
|
163
|
+
## Next steps
|
|
164
|
+
|
|
165
|
+
- Set up messaging channels: [Channels](/channels)
|
|
166
|
+
- Configure the Gateway: [Gateway configuration](/gateway/configuration)
|
|
167
|
+
- Keep Nodmix up to date: [Updating](/install/updating)
|