VibeAI Docs
Connect

Webhooks

Why AIOS gateways poll instead of exposing a webhook endpoint.

Web UI → Webhooks (/api/webhooks) reports how each configured messaging platform actually receives messages. Today that answer is the same for every platform: long polling, not a webhook.

What the page shows

Webhooks page showing polling mode

One card per platform with a token present in ~/.aios/.env (TELEGRAM_BOT_TOKEN, DISCORD_BOT_TOKEN):

  • Mode — always polling.
  • Webhook URL — always none (polling). There is no webhook_configured: true case yet; the field exists in the response but the backend never sets it.

If no platform token is configured at all, the page says so instead of showing empty cards: “No channel tokens configured in ~/.aios/.env — the gateway has no active platforms.”

Note

This reflects the production gateway (aios gateway run), which reads its credentials from ~/.aios/.env — the same file Channels edits. There is nothing to configure on this page itself; it’s a status view, not a settings form.

Why polling, not webhooks

Long polling means the gateway holds an open request to the platform’s API and gets messages pushed down that connection — no inbound port, no public HTTPS endpoint, no certificate to manage for the messaging platform to call back into. That’s also why nothing here needs the same DNS/Tailscale care that Remote Access does: the gateway only ever makes outbound calls to Telegram/Discord’s own APIs.