A Telegram bot that keeps your free-tier deployments awake — automatically.
Live Demo · Features · How it works · Tech Stack · FAQ
Free hosting tiers (Render, Supabase's own pausing, and similar platforms) spin down your app after a period of inactivity. The next real visitor then eats a slow cold start — or worse, arrives during a maintenance window and just sees an error.
AutomatorBot solves this from Telegram: add any URL, tell it how often to ping it, and it quietly keeps that service warm in the background — no server of your own to babysit, no cron job to remember to renew.
Everything is controlled with a handful of chat commands, and every user also gets a personal, key-protected web dashboard for a richer view of their monitors.
To prove the ping scheduler actually works — not just in theory — it's currently keeping a small test service alive on Render's free tier:
pulsecheck-jgvb.onrender.com (source)
That page reports its own uptime since last cold start. As long as
AutomatorBot is pinging it on schedule, the uptime counter keeps climbing and
never resets back to 0h 0m — open it a few times and watch it stay awake.
- Multi-URL monitoring — add as many URLs as you want, each with its own optional label
- Configurable ping interval — the whole bot runs on a single interval, tuned to safely beat common free-tier sleep timers
- Per-monitor controls — pause, resume, or delete any URL individually
from
/manage, with confirmation before anything destructive happens - Live status at a glance —
/statsshows request counts, next ping time, and the result of the last ping for every URL you track - Personal web dashboard —
/mykeyissues a private access key that logs you into a browser dashboard with a richer view: totals, per-monitor history, relative timestamps, and color-coded health - Bot-protected login — the dashboard login is shielded by Cloudflare Turnstile to keep it free of automated abuse
- 10 languages — English, Chinese, Hindi, Spanish, French, Arabic, Portuguese, Russian, German, and Japanese, auto-detected with a manual override
- Resilient by design — a failed or slow ping never crashes the scheduler; it's logged, retried on the next cycle, and reflected honestly in your stats instead of silently disappearing
At a high level, three pieces work together:
flowchart LR
U([You, on Telegram]) -- "/add https://your-app.example" --> B[AutomatorBot]
B -- stores the monitor --> DB[(Supabase / Postgres)]
C[Scheduler] -- "runs every minute,\nchecks what's due" --> DB
C -- "GET request" --> T([Your deployed app])
T -- HTTP response --> C
C -- "records result +\nnext ping time" --> DB
U -- "/mykey" --> B
B -- personal access key --> U
U -- logs in with the key --> W[Web Dashboard]
W -- reads status --> DB
- You register a URL by chatting with the bot — no dashboard signup, no API keys to generate yourself.
- A scheduler checks in every minute, and pings whichever of your URLs are actually due, based on your configured interval.
- Every result is recorded — success or failure — so
/statsand the web dashboard always reflect what really happened, not just what was supposed to happen.
See docs/ARCHITECTURE.md for a more detailed
breakdown of each component.
| Layer | Technology |
|---|---|
| Bot logic | Node.js, TypeScript, Telegraf |
| Scheduling | node-cron, interval-based per monitor |
| Database | Supabase (managed PostgreSQL) |
| Web dashboard | PHP, server-rendered, session-based auth |
| Bot-abuse protection | Cloudflare Turnstile |
| Hosting | Free-tier friendly (Render / JustRunMy.App) |
| Command | What it does |
|---|---|
/start |
Introduction and quick command reference |
/add |
Register a new URL to keep alive |
/manage |
View, pause, resume, or delete your monitored URLs |
/stats |
See request counts and per-URL status at a glance |
/mykey |
Get (or regenerate) your personal web dashboard access key |
/cancel |
Cancel whatever multi-step action is currently pending |
This repository is documentation-only. It exists to explain what AutomatorBot does, how the pieces fit together, and to link to a live, verifiable demo of it working — not to publish the implementation. The service-role database credentials, scheduler internals, and dashboard templates are kept private.
See SECURITY.md for how vulnerabilities can be reported
responsibly even without access to the source.
Answers to the "does it actually work / is it safe" questions live in
docs/FAQ.md.
See LICENSE — all rights reserved. This repository may be
viewed and shared as-is; the underlying software is proprietary.