← All posts

Running coding agents overnight without babysitting

Everyone who has tried to run an agent overnight knows the hidden cost. You kick off a long task at eleven. Then, instead of going to bed, you check on it every twenty minutes. If it stalls at 11:40, the next seven hours are wasted. If it goes wrong at two in the morning, you wake up to a mess you now have to understand before you can undo it.

That isn't running agents overnight. That's staying up with them.

The goal isn't an agent that never fails. It's a setup where a failure is contained, visible and cheap, so going to sleep is a reasonable decision rather than a gamble. Here is how that looks in Frontier, piece by piece.

1. Give every job its own checkout. Each workspace gets its own git worktree on its own `df-code/<workspace>` branch the moment it's activated. An overnight job that goes badly wrong has made a mess on one branch that nobody else was using. The worst case is deleting a branch, not rescuing your main checkout at 8am.

2. Decide how the work starts, and keep one-off and recurring separate. For "start this at 1am", schedule a thread: it fires exactly once, at the time you set, using that thread's own conversation. For work that should keep moving all night, assign an Agent to the workspace. The Conductor re-runs it on its own interval, and its trigger decides what it reacts to. `unread` answers new messages in a thread. `scheduled` goes looking for its own work, like the next unchecked item on a roadmap. That's the shape behind working through a whole list while you're away.

3. Don't let the builder mark its own homework. The agent that just wrote the code is the one most convinced it's finished. Put a reviewer in a workspace of its own, and have the builder hand work to it as a new thread with a self-contained summary. Feedback comes back as a message in the builder's thread, and the loop goes round again without you. If you run Claude Code and Codex, the reviewer can use the other CLI for a genuinely independent read. The Engineer / Reviewer tutorial sets this up as a Strategy you can reuse.

4. Put a ceiling on every run. Every Agent has a per-run time limit, fifteen minutes unless you change it, and a hung run is killed when it runs out rather than sitting there until morning. Both that limit and how often the Agent checks in can be set per workspace, so the big build gets longer and the quick watcher gets less. A second run is never stacked on top of one already in progress, so a slow run doesn't become two slow runs. And there's a single master switch in Settings → Automation: flip it off and the background agents stop.

5. Give shared things a lock, and give loops a memory. If two agents both need something only one can use at a time, a browser tab being the classic case, they take turns through a lock that expires on its own. An agent that crashes while holding it can't leave it stuck all night. For loops that need to remember what they've already done, each workspace has a small store for saved state, so the 3am run doesn't redo the work from 2am because it lost track of it.

6. Let it reach you only when you're the blocker. An Agent can raise a desktop notification and, if you've pointed Frontier at a Remote Control push endpoint, a push to your phone as well. The rule to put in its instructions is the one in the Help article: notify only when you are the thing it's blocked on. An agent that pings you every time it finishes teaches you to ignore it, and then you miss the one that matters. When it does reach you, Remote Access opens the same install on your phone, at home or away from it, so you can answer the question and let it carry on.

7. Make the morning a readout, not an investigation. The Status Report panel lists new messages across every workspace, so you start with what changed rather than opening each project to find out. Each thread shows its diffs inline. Each workspace's History tab shows everything that changed on its branch overnight. The Audit Trail records every run an Agent made: what it was told, what it did, how long it took, and whether it errored or timed out. That includes the runs that decided nothing needed doing. If you'd like the summary written for you, a scheduled briefing agent can post one before you're up.

Two honest limits. Frontier runs on your own computer, so if the machine sleeps, so do your agents. Frontier doesn't keep it awake for you, so set it not to sleep while it's plugged in on the nights you want work done. And your coding CLI's own usage limits still apply at 3am. A long night can use up a week's allowance, which is its own problem, covered in splitting work across Claude and Codex.

If something does look stuck when you check, start with the System Status readout in Settings. It tells you whether the background loops are running at all. Then work through the stuck-agent checklist. Most "it did nothing" mornings turn out to be the automation switch left off, or a thread already marked resolved.

None of this is about working more hours. It's about the work not having to wait for yours.

Q: Can Frontier run coding agents while I'm asleep? A: Yes, as long as the machine stays on and awake. Assign an Agent to a workspace and the Conductor re-runs it on its own interval, or schedule a thread to fire once at a set time.

Q: What stops an overnight agent from running forever or getting stuck? A: Every Agent run has a time limit (fifteen minutes by default, adjustable per workspace), after which it's killed. A new run is never stacked on one still in progress, and the master automation switch in Settings stops background agents altogether.

Q: How do I find out what an agent did overnight? A: Check the Status Report panel's new messages, each thread's inline diffs, the workspace's History tab, and the Audit Trail in Settings, which records every run with its prompt, duration, and whether it errored or timed out.

Q: Will Frontier wake me up for every finished task? A: Only if you tell it to. Notifications come from an Agent's own instructions. The recommended rule is to notify only when the Agent is blocked on you.

The easiest night to start with is one where someone else has already done the wiring. Pick a setup from Examples that fits your repo, install it in a click, and download Frontier to let it run tonight.