Add Channels After Onboarding

View as Markdown

Run channel commands from the host, not from inside the sandbox.

Select and Add a Channel

List the supported channel names:

$nemoclaw my-assistant channels list

channels add can replace a mismatched provider when complete credentials are available. Replacement is allowed only when the provider is unattached or attached only to the selected sandbox. An attachment to another sandbox stops the operation. The --force flag does not override this provider attachment authority.

Add the channel you want:

$nemoclaw my-assistant channels add telegram
$nemoclaw my-assistant channels add discord
$nemoclaw my-assistant channels add slack
$nemoclaw my-assistant channels add wechat
$nemoclaw my-assistant channels add whatsapp
$nemoclaw my-assistant channels add teams

Add experimental Google Chat through its interactive enrollment flow:

$nemoclaw my-assistant channels add googlechat

Refer to Set Up Google Chat before running the command.

channels add accepts mixed-case input such as Telegram, then stores and prints the canonical lowercase name. It collects the channel inputs, validates or registers the OpenShell bridge provider profile, records the channel, and asks whether to rebuild immediately. Before provider reuse, NemoClaw validates the complete checked-in profile contract, including endpoints, binaries, credential keys, and refresh settings when applicable. For an existing refresh provider with matching metadata, NemoClaw preserves its working credential until OpenShell mints the replacement. A later refresh failure can still leave changed gateway refresh material; follow the recovery guidance below.

Telegram, Discord, Slack, and Microsoft Teams prompt for credentials and configuration. WeChat runs an interactive host-side QR scan. WhatsApp collects no token because pairing happens inside the rebuilt sandbox.

Google Chat prompts both agents for a service-account JSON key and sender access settings.

OpenClaw pauses while you configure the Google Chat public webhook endpoint. It cannot be added non-interactively.

Apply Policy and Rebuild

channels add requires the matching built-in network policy preset YAML. A missing or malformed preset aborts before token prompts, registry writes, or the rebuild prompt, so the sandbox never advertises a channel without matching policy. With the preset present, the command applies it before rebuild.

OpenShell provider inspection uncertainty stops the operation before provider mutation. On a fresh add, NemoClaw may already have applied the credential-free policy preset and attempts to remove it before exiting. If that policy cleanup fails, rebuild the sandbox first, then run the nemoclaw <name> policy remove <channel> command printed by the CLI.

When final policy application fails after provider registration during a fresh add, NemoClaw attempts to roll back the bridge providers, preset, and staged environment credentials. The registry has not been updated at that point. It exits without prompting for a rebuild. If a gateway-side cleanup step fails, rollback continues and prints Rollback could not fully clean <surfaces> so you can clean up manually.

When the same failure happens while re-adding an enabled channel, NemoClaw restores the prior messagingChannels entry, staged environment credentials when available, and registry credential hashes. An existing provider can be changed during re-add. NemoClaw attempts to restore stored provider credentials, but it cannot restore prior gateway refresh material that was available only during the earlier setup command. NemoClaw flags gateway-providers as residual. Inspect the channel’s gateway providers, restore the preset YAML, and correct the gateway failure. When the gateway is reachable, run the nemoclaw <name> channels remove <channel> command printed by the CLI, then rerun nemoclaw <name> channels add <channel>.

Choose the rebuild so the running sandbox image picks up the new channel. For Telegram, Discord, and Slack, channels add checks the rebuilt runtime for the selected bridge and reports startup, credential, or missing-plugin warnings before returning. If you defer the rebuild, apply the change later:

$nemoclaw my-assistant rebuild

For an affected v0.0.119 N1x sandbox whose registry records both endpointUrl and endpointSource as null without durable preview acceptance, repeat the one-time recovery choice described in Set Up vLLM:

$NEMOCLAW_PROVIDER=install-vllm \
> nemoclaw my-assistant rebuild

Add a Channel Non-Interactively

Set required environment variables before running channels add. A run without a terminal on stdin is non-interactive even when NEMOCLAW_NON_INTERACTIVE=1 is unset. An SSH command without -t, a service unit, and a CI job all run without a terminal. Missing credentials fail fast, and the command queues the change for a manual rebuild:

$NEMOCLAW_NON_INTERACTIVE=1 TELEGRAM_BOT_TOKEN="<your-bot-token>" \
> nemoclaw my-assistant channels add telegram
$nemoclaw my-assistant rebuild

Optional mention-mode settings that declare defaults are still written when unset. Telegram mention mode defaults to 1. Discord mention mode defaults to 1 when DISCORD_SERVER_ID is set.

For Discord server access, include the server settings:

$DISCORD_BOT_TOKEN="<your-discord-bot-token>" \
> DISCORD_SERVER_ID="<your-discord-server-id>" \
> DISCORD_REQUIRE_MENTION=1 \
> nemoclaw my-assistant channels add discord

For Microsoft Teams, create the Teams app and public endpoint first:

$MSTEAMS_APP_ID="<your-teams-app-id>" \
> MSTEAMS_APP_PASSWORD="<your-teams-client-secret>" \
> MSTEAMS_TENANT_ID="<your-teams-tenant-id>" \
> TEAMS_ALLOWED_USERS="<your-entra-object-id>" \
> MSTEAMS_PORT=3978 \
> nemoclaw my-assistant channels add teams

After rebuild starts the Teams webhook forward, route the public HTTPS endpoint to http://127.0.0.1:3978/api/messages or the selected MSTEAMS_PORT.

Add WeChat

channels add wechat renders a QR code, polls Tencent’s iLink gateway, and captures the bot token plus accountId, baseUrl, and userId after you scan the QR. The login has an eight-minute deadline and refreshes the QR up to three times on expiry.

Keep the terminal in the foreground until you see ✓ WeChat login confirmed.

The command requires an interactive terminal. NEMOCLAW_NON_INTERACTIVE=1, or a run without a terminal on stdin, fails fast because the QR handshake needs a paired phone.

$nemoclaw my-assistant channels add wechat

If WECHAT_BOT_TOKEN is already cached for this sandbox, the command reuses it and skips the QR scan so the upstream plugin’s iLink session remains valid. Use channels remove wechat first if you intend to acquire a fresh account.

Verify Delivery

Send a message to the configured bot or app after the rebuild. For Telegram, a Bot API sendMessage proves outbound delivery only. To test inbound agent replies, send a message from the Telegram client as an allowed user and inspect the gateway log for the inbound turn and outbound reply.

For a repeatable installed-runtime outbound check, run the live messaging-provider test with NEMOCLAW_RUN_LIVE_E2E=1 and NVIDIA_INFERENCE_API_KEY set.

$NEMOCLAW_RUN_LIVE_E2E=1 npx vitest run --project e2e-live test/e2e/live/messaging-providers.test.ts --silent=false --reporter=default

The lane imports the installed OpenClaw Telegram runtime-api.js, calls sendMessageTelegram through the OpenShell credential rewrite path against a host-side fake Telegram API, and verifies that the captured send has no unresolved placeholder. Set TELEGRAM_BOT_TOKEN_REAL and TELEGRAM_CHAT_ID_E2E only when you also want the optional real outbound send.

The lane does not automate an interactive inbound reply.