A Telegram bot in one evening — on a free stack
A bot that never sleeps, answers through an LLM and costs nothing. Every part of the stack comes from the catalog, no card needed.
Step 1. Hosting that doesn't sleep
- Fly.io — a small VM on the free plan, instant replies;
- Render — a free web service; sleeps and wakes in ~30s — fine for polling;
- a webhook alternative: Koyeb.
Step 2. A brain without a card
OpenRouter: models with the :free suffix behind one key,
~20 requests per minute. Need faster — Groq.
Step 3. Scheduling
If the bot must do things on a schedule (digests, reminders) — cron-job.org pings your webhook on a cron. The free allowance fits almost everything.
Step 4. Notifications for yourself
ntfy.sh — a push to your phone from a single curl: logs, alerts, "the bot is alive".
The scheme
Telegram → fly.io (python-aiogram) → OpenRouter → reply
cron-job.org → webhook → morning digest → ntfy.sh → you
Launch checklist
- token from @BotFather, secrets in environment variables, never in code;
- state in PocketBase or SQLite on a volume;
- a health-check endpoint + Uptime Kuma on your own server;
- the ready stack with checkboxes — in the Telegram bot collection.
Snapshot 05.11.2026 · platform limits change — check the cards