AgentRunner
ActiveA macOS app that runs AI agents on a schedule — process lifecycle, live output, captured artifacts, and a history of every run.
An agent you have to remember to run is a script. An agent that runs on its own schedule, keeps its output, and tells you when it fails is infrastructure. AgentRunner is the difference between the two.
It is a macOS desktop app — Electron, React, SQLite, node-cron — where you define an agent as three things: a command to execute, a prompt, and a cron schedule. It handles everything after that.
What running an agent actually requires
Scheduling is the easy part. What makes it a real application is everything around the schedule — the same problems any long-running process has, and nobody wants to solve them twice:
- Process lifecycle — start, monitor, capture exit codes, survive the agent misbehaving
- Live output streaming — watch stdout and stderr in real time rather than reading a log afterwards
- Artifact capture — detect files created or modified in the working directory during a run and copy them into a per-run folder, so the output of a run is preserved rather than overwritten by the next one
- Run history — every past run with its status, duration, exit code, logs and artifacts
- Notifications — it lives in the menu bar and tells macOS when a run finishes or fails
Artifact capture is the piece I would point at. An agent that writes files is only useful if you can tell which files it wrote and when, and diffing the working directory around each run turns a pile of output into an auditable record.
Prompts are source code
Prompts get a split-pane markdown editor and version history with restore, which follows from taking seriously that the prompt is the program. If changing a prompt changes behaviour — and it does — then it needs the same treatment as any other source file: editable, reviewable, and revertible when a change makes things worse.
Markdown artifacts render inline with syntax-highlighted code blocks, because most of what these agents produce is meant to be read.
Deliberately inspectable
agents.json and config.json are hand-editable, human-readable files. There is also agentrunner-cli, so agents can be managed, triggered and inspected from a terminal — which matters when the machine running them is one you reach over SSH.
A desktop app that can only be driven by its own UI is a dead end for this kind of tool. The GUI should be the convenient path, not the only one.