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:
- Telegram AI agent
- Discord AI agent
- Slack AI agent
- WhatsApp AI agent
- Email AI agent
- Mattermost AI agent
Minimal working example
Use the guided channel setup:
- Get the platform token, login state, webhook, or mailbox credentials.
- Open Settings → Channels in the WebUI.
- Choose the platform and open its setup panel.
- Complete the credential or QR flow and install optional support if prompted.
- Restart when the WebUI requests it.
- Send a private test message.
- 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 statusdoes 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 --verboseand compare platform credentials, event permissions, and allow lists. - If group replies are unexpected, review that channel's group policy.