Skip to main content

How to Connect an AI Agent to Chat Apps with nanoinfra

nanoinfra can run as a self-hosted chatbot or AI agent in Telegram, Discord, Slack, Signal, Email, Mattermost, and other chat apps. The gateway receives chat messages, runs the agent, and sends replies back to the same channel.

What you will build​

  • a working local agent
  • one enabled chat channel
  • a running gateway
  • a pairing-based approval flow or a narrow static allowlist

When to use this​

Use chat apps when the agent should live where users already communicate: private DMs, team channels, group chats, email threads, or bot workspaces.

Install​

Quick Start ranks four install methods easiest first. This is the first of them. Use pip, Docker or a source checkout instead if you prefer, and come back here.

uv tool install nanoinfra
nanoinfra onboard --wizard
nanoinfra webui

Send Hello! in the WebUI before adding a channel. Then choose one platform guide for the bot/account prerequisites:

Minimal working example​

Use the guided channel setup:

  1. Get the platform token, login state, webhook, or mailbox credentials.
  2. Open Settings → Channels in the WebUI.
  3. Choose the platform and open its setup panel.
  4. Complete the credential or QR flow and install optional support if prompted.
  5. Restart when the WebUI requests it.
  6. Send a private test message.
  7. Approve the pairing request in the WebUI when a DM-capable channel asks for one.

If your installed release does not show Settings → Channels, use the full Channels reference to configure the channel manually.

Check status from the terminal when you need a lower-level confirmation:

nanoinfra channels status

The nanoinfra webui command already runs the gateway. For a chat-only or server deployment, start it directly:

nanoinfra gateway

Use the full Channels reference when you manage config.json directly or need platform-specific advanced settings.

Production notes​

  • Keep the gateway running as a service for always-on chat apps.
  • Use mention-only group policies before opening a bot to busy channels.
  • Use one channel at a time while debugging.
  • Prefer DMs for first tests. Pairing works only in DMs. Group chats add permissions and routing behavior.

Security notes​

  • Prefer pairing or explicit allowlists. Do not use allowFrom: ["*"] outside an intentional sandbox.
  • Rotate bot tokens if they are pasted into logs or shared files.
  • Review file, shell, and web tool access before inviting other users.

Troubleshooting​

  • If nanoinfra channels status does not show the channel, the config key or optional dependency is likely missing.
  • If the first DM returns a pairing code, approve the pending request in the WebUI or use /pairing approve <code> from an authorized chat.
  • If messages do not arrive, run nanoinfra gateway --verbose and compare platform credentials, event permissions, and allow lists.
  • If group replies are unexpected, review that channel's group policy.