I was building an agent that monitors deployment pipelines. Simple idea — kick off a build, check back in 15 minutes, report the result. The "check back in 15 minutes" part turned out to be the hardest thing I'd done all month.
LLMs don't have a concept of time. They can't sleep. They can't set alarms. When a model finishes generating a response, it's done — it doesn't sit in memory waiting for the next thing. There's no setTimeout() in an LLM's world. The model literally stops existing between calls.
So I did what most people do: I wrote a polling loop. The agent checked the deploy status every minute. That's 1,440 API calls per day. Most of them returned "still building." I was burning through my token budget and rate limits just to ask "are we there yet?" over and over — like a kid on a road trip, except each question cost money.
I tried a cron job next. Run a script every 5 minutes that checks if the agent has pending work. But now I was maintaining cron infrastructure for something that was supposed to be autonomous. An "AI agent" that depends on a 1979 Unix utility to know when to wake up. The irony was not lost on me.
What I actually needed was dead simple: tell something "call me back at 3:45pm," and forget about it until then.
That's exactly what I ended up building into Pingfyr. A webhook scheduled for the future:
curl -X POST https://pingfyr.com/api/remind \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel": "webhook", "recipients": ["https://your-agent.com/wake-up"], "title": "Resume pipeline check", "body": "Build #4821 — check deployment status", "fire_at": "2026-03-25T15:45:00Z" }'
One call to schedule, one webhook delivery when the time comes. Two API calls total, instead of 1,440.
The agent doesn't poll. It doesn't stay alive. It just says "wake me up at 3:45" and shuts down. When Pingfyr POSTs to the webhook, the agent spins back up with all the context it needs in the payload.
Webhooks aren't the only option, though. Pingfyr delivers to seven channels — email, Slack, Discord, Telegram, webhooks, OpenClaw, and Google Calendar. If your agent lives in a Slack workspace, wake it up with a Slack message. If it runs on OpenClaw, there's a native channel for that.
The thing that really clicked for me was MCP. Pingfyr has a Model Context Protocol server, which means any MCP-compatible agent can discover it as a tool. The agent calls create_reminder, specifies a future time and a callback URL, and it's done. No custom integration, no webhook URL management — the agent schedules its own wake-up the same way it'd call any other tool.
I keep coming back to the same thought: we gave LLMs tool use, memory, RAG, code execution — basically everything. But we forgot about time. An agent can reason, plan, even reflect on its mistakes. It just can't wait for anything. And that's a weird gap when you think about how many real-world tasks require "do X, then come back and do Y later."
Polling burns API budgets. Cron jobs add infrastructure you have to maintain. Orchestration platforms like Temporal are powerful but heavy — deploying a whole execution engine for a single scheduled callback feels like overkill.
Sometimes the simplest answer is just: schedule a callback. One API call. One future delivery.
Try Pingfyr free — no credit card required.
New channels, API features, and developer guides — straight to your inbox. No spam.