Enable Channels During Onboarding

View as Markdown

Enable channels during onboarding when you are creating or recreating a sandbox.

Use the Interactive Picker

When the wizard reaches Messaging channels, it lists Telegram, Discord, Slack, WeChat, WhatsApp, and Microsoft Teams when the selected agent supports them. Press a channel number to toggle it on or off, then press Enter when done.

The Hermes picker also lists experimental Google Chat. Prepare the service-account JSON, Google Cloud project ID, complete Pub/Sub subscription name, and email sender allowlist before selecting it. Hermes pulls Chat events from Pub/Sub over REST and does not require a public webhook endpoint. Refer to Set Up Google Chat before selecting it.

If you select no channels, pressing Enter skips messaging setup. If the current host inputs do not include a token-based channel token, the wizard prompts for it and stages it for the current onboarding process.

If you enable WeChat, the wizard renders a QR code, polls Tencent’s iLink gateway, and captures the bot token after you scan the QR with WeChat on your phone. The login has an eight-minute deadline, refreshes the QR up to three times on expiry, and follows iLink’s IDC redirects automatically.

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

WhatsApp uses QR pairing instead of a host-side token, so the wizard does not prompt for one. It prints pairing instructions, and you complete the pairing inside the sandbox after rebuild. NemoClaw selects the matching network policy preset during policy setup so the channel can reach its provider API.

Prepare Scripted Inputs

Export the credentials and optional settings for the channels you want to enable:

$export TELEGRAM_BOT_TOKEN="<your-bot-token>"
$export TELEGRAM_REQUIRE_MENTION=1
$export DISCORD_BOT_TOKEN="<your-discord-bot-token>"
$export DISCORD_SERVER_ID="<your-discord-server-id>"
$export SLACK_BOT_TOKEN="<your-slack-bot-token>"
$export SLACK_APP_TOKEN="<your-slack-app-token>"
$export SLACK_ALLOWED_USERS="<your-slack-member-id>"
$export SLACK_ALLOWED_CHANNELS="<your-slack-channel-id>"
$export WHATSAPP_ALLOWED_IDS="<your-whatsapp-sender-id>"
$export MSTEAMS_APP_ID="<your-teams-app-id>"
$export MSTEAMS_APP_PASSWORD="<your-teams-client-secret>"
$export MSTEAMS_TENANT_ID="<your-teams-tenant-id>"
$export TEAMS_ALLOWED_USERS="<your-entra-object-id>"
$export MSTEAMS_PORT=3978

The placeholder values are quoted because angle brackets are shell metacharacters. The quotes keep the export from triggering a redirection or syntax error when you replace the placeholder with a real value.

This release does not support non-interactive WeChat configuration because the iLink QR handshake requires a human to scan the QR on a paired phone. Run nemohermes onboard interactively when you want to enable WeChat. For non-interactive WhatsApp selection, set WHATSAPP_ALLOWED_IDS to a nonempty comma-separated sender list.

Run Onboarding

$nemohermes onboard

Complete the wizard so the blueprint can create OpenShell providers where needed, such as <sandbox>-telegram-bridge, <sandbox>-teams-bridge, or <sandbox>-wechat-bridge. The wizard writes channel configuration into the image through NEMOCLAW_MESSAGING_CHANNELS_B64 and starts the sandbox.

Stop Configuring a Channel

Onboarding reads the host inputs on every run, so clearing a channel’s inputs and re-onboarding removes it. Unset the channel’s environment variables. Run onboarding again.

NemoClaw reports the removal and drops the channel’s network policy preset with it, so the sandbox does not keep the wider egress of a channel it no longer serves.

Expected output:

No host inputs configure discord; disabling the channel and its network egress.
[non-interactive] Applying policy presets: npm, pypi

Onboarding uses the current host inputs to determine whether a token-based channel remains configured. nemohermes credentials reset takes an OpenShell provider name and does not change those host inputs.

A QR-paired channel such as WhatsApp is exempt. The host holds no value that reports whether the pairing is still live, so an absent host input is not evidence that you removed the channel. Use channels remove for those.

Verify the Result

After the sandbox is running, send a message to the configured bot or app. If delivery fails, inspect sandbox logs and confirm that the matching network policy preset is active. Refer to Messaging bridge appears running but no messages arrive for remediation.