Give any command, or an AI agent, a cadence. Then watch, pause, and chain every loop from one keyboard-driven terminal dashboard, on macOS, Linux, and Windows.
npm install -g loop-task
The board: your control center. Create, monitor live logs, pause, and stop every loop.
Intervals are written the way you say them: 30s, 5m, 1h, 1d. No cron expressions, no decoder ring.
A background daemon keeps loops running after you close the terminal. State survives reboots as plain JSON.
Tasks react to exit codes and chain into pipelines, on success or on failure, without glue scripts.
Every loop is live on the board: watch logs, CheckIcon status, pause, stop, and chain, all from the keyboard.
$ what is loop engineering?
A loop is a recurring goal: you define a purpose, give it an interval, and let it iterate. It scales from a 10-second health CheckIcon to an AI agent chewing through a backlog, and you supervise every one of them from the same board.
Further reading
Health CheckIcon$ loop-task new 10s -- curl -sf https://api.example.com/healthTest runner$ loop-task new 5m -- npm testAgent loop$ loop-task new 30m -- opencode run "fix lint warnings, 5 max"Data sync$ loop-task new 1h --project etl -- ./scripts/sync.shDeploy poll$ loop-task new 15s -- curl -sf https://app.example.com/deploy-status$ loop-task --features
Loops run in a background process that survives terminal exits. Start it once, close your laptop, come back tomorrow: your loops are still running.
Tasks can chain to other tasks on success or failure. Build pipelines that react to exit codes without wrapping everything in shell scripts.
Organize loops into projects with colored labels. Switch context on the board with a single keypress.
Write 30s, 5m, 1h, 1d, 1w. No cron expressions, no mental math. Intervals are just that: how long between runs.
Every loop is queryable and controllable over HTTP. Build dashboards, wire up webhooks, or just curl the status endpoint.
AI agents can create and manage loops through the CLI or API. Give an agent a cadence and let it iterate on a backlog, review PRs, or chase down flaky tests, all without babysitting.
$ diff cron loop-task
0 4 * * 2-5 means “4 AM, Tuesday through Friday.” Obviously.
| loop-task | cron | launchd / Task Scheduler | |
|---|---|---|---|
| Human-readable intervals | 30s, 5m, 1h | */5 * * * * | XML / plist |
| Cross-platform | macOS, Linux, Windows | Unix only | one per OS |
| Interactive board (TUI) | |||
| Live control dashboard | watch, pause, stop | ||
| Task chaining on exit codes | limited | ||
| Run history & live logs | CheckIcon your mail | event viewer | |
| HTTP API | |||
| Setup | one npm install | edit crontab | GUI or config files |
Health CheckIcon$ loop-task new 10s -- curl -sf https://api.example.com/healthTest runner$ loop-task new 5m -- npm testAgent loop$ loop-task new 30m -- opencode run "fix lint warnings, 5 max"Data sync$ loop-task new 1h --project etl -- ./scripts/sync.shDeploy poll$ loop-task new 15s -- curl -sf https://app.example.com/deploy-statusForeground run$ loop-task run --now 5m -- npm run buildloop-task | Open the interactive board |
loop-task start | Start the daemon, restore persisted loops |
loop-task new <interval> -- <cmd> | Create a background loop |
loop-task run <interval> -- <cmd> | Run a loop in the foreground |
loop-task stop <id> | Stop a loop and kill its child process |
loop-task status [--json] | Show status of all loops |
loop-task api | Show HTTP API endpoints |
loop-task project list | List all projects |
Full reference at CLI Reference
Install it, create your first loop, and let it run.
npm install -g loop-task