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

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 nowebhook_configured: truecase 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.”
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.