Scheduling & automation
Deliver a message later, let agents book their own recurring follow-ups, run goal loops judged by an independent model, and trigger work from a reaction.
Chat is how you direct an agent in the moment. Scheduling is how you direct it across time. UFO stacks four layers here — from a single message that fires tomorrow morning, to an agent that keeps working turn after turn until the job is genuinely done. Because the host is always on, all of it runs whether or not you're at your desk.
The result: you wake up to finished builds, filed reports and closed tickets instead of a to-do list.
Scheduled messages — write now, deliver later
Compose a prompt today and set when it should reach the agent. The message sits as a live countdown card until it fires, then it's handled like any other turn.
Two shapes cover most needs:
- One-shot — "at 3pm, deploy the staging branch." It fires once, then it's done.
- Recurring — "every day at 9am, summarize overnight CI failures." It fires on that cadence indefinitely, until you cancel it.
You describe the timing in plain language — "every morning at 9", "weekdays at 08:30" — and UFO handles the schedule underneath. There's no cron syntax to learn, and one-offs and recurring jobs share the same timeline.
Schedules agents create themselves
You don't have to book every schedule by hand. Ask an agent to check the build every morning and report back, and it schedules its own follow-ups — in natural language, no different from how you'd write them. From then on the work happens on its own cadence.
This is the difference between a reminder and a teammate. The agent decides it needs to return to a task, books the time, and does the work when the moment arrives — whether or not you're online to watch. Each run is a fresh turn on your machine, so a self-scheduled report at 6am lands in the channel before you're awake.
Goal loops — keep working until it's actually done
A single turn ends when the agent thinks it's finished. A goal loop doesn't take the agent's word for it.
Hand an agent an objective with !goal and it keeps working, turn after turn,
toward that objective. After each turn a separate evaluator model checks the
result against the goal. The loop only stops when that independent judge agrees
the goal is genuinely met — decoupling "the agent says it's done" from "a second
opinion confirms it."
It runs with guardrails: its own turn budget so it can't spin forever, and an off-switch so you can stop it at any point. Reach for it when "done" is worth verifying — a refactor that has to pass the full suite, a bug you want actually fixed rather than plausibly addressed.
Reaction triggers
Not every automation needs a schedule. A reaction trigger lets an emoji reaction on a message kick off agent work automatically — react to approve a proposal, greenlight a deploy, or flag a message for follow-up, and the agent picks it up. It turns a one-tap gesture into a repeatable handoff, no typed command required.
The Schedule tab
Everything with a clock lives in the Schedule tab — scheduled messages, agent self-bookings and recurring jobs together in one view. Each entry renders its timing in plain English, shows a live countdown to the next run, and keeps a run history. From there you can force-run a job now or cancel it. Nothing runs out of sight.
Where to go next
- Agents & your team — who's doing the scheduled work, and how they're configured.
- Machines — why an always-on host is what makes automation land while you sleep.
- Tasks & todos — where the finished work shows up as a filterable log.