loop engineering, from your terminal

Run async loops.
Control them all.

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
Recording of the loop-task terminal board creating and monitoring loops

The board: your control center. Create, monitor live logs, pause, and stop every loop.

Readable.

Intervals are written the way you say them: 30s, 5m, 1h, 1d. No cron expressions, no decoder ring.

Persistent.

A background daemon keeps loops running after you close the terminal. State survives reboots as plain JSON.

Chainable.

Tasks react to exit codes and chain into pipelines, on success or on failure, without glue scripts.

Controllable.

Every loop is live on the board: watch logs, CheckIcon status, pause, stop, and chain, all from the keyboard.

$ what is loop engineering?

Design work that runs on a cadence, not on your attention

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.

Health CheckIcon$ loop-task new 10s -- curl -sf https://api.example.com/health
Test runner$ loop-task new 5m -- npm test
Agent loop$ loop-task new 30m -- opencode run "fix lint warnings, 5 max"
Data sync$ loop-task new 1h --project etl -- ./scripts/sync.sh
Deploy poll$ loop-task new 15s -- curl -sf https://app.example.com/deploy-status

$ loop-task --features

Built for cadence-driven work

survives reboots

Background daemon

Loops run in a background process that survives terminal exits. Start it once, close your laptop, come back tomorrow: your loops are still running.

Task chaining

Tasks can chain to other tasks on success or failure. Build pipelines that react to exit codes without wrapping everything in shell scripts.

Projects

Organize loops into projects with colored labels. Switch context on the board with a single keypress.

replaces crontab -e

Human intervals

Write 30s, 5m, 1h, 1d, 1w. No cron expressions, no mental math. Intervals are just that: how long between runs.

HTTP API

Every loop is queryable and controllable over HTTP. Build dashboards, wire up webhooks, or just curl the status endpoint.

Agent-ready

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

You shouldn't need a decoder ring

0 4 * * 2-5 means “4 AM, Tuesday through Friday.” Obviously.

loop-taskcronlaunchd / Task Scheduler
Human-readable intervals30s, 5m, 1h*/5 * * * *XML / plist
Cross-platformmacOS, Linux, WindowsUnix onlyone per OS
Interactive board (TUI)
Live control dashboardwatch, pause, stop
Task chaining on exit codeslimited
Run history & live logsCheckIcon your mailevent viewer
HTTP API
Setupone npm installedit crontabGUI or config files

Practical loops for everyday work

~/work
Health CheckIcon$ loop-task new 10s -- curl -sf https://api.example.com/health
Test runner$ loop-task new 5m -- npm test
Agent loop$ loop-task new 30m -- opencode run "fix lint warnings, 5 max"
Data sync$ loop-task new 1h --project etl -- ./scripts/sync.sh
Deploy poll$ loop-task new 15s -- curl -sf https://app.example.com/deploy-status
Foreground run$ loop-task run --now 5m -- npm run build

The commands you'll use

loop-taskOpen the interactive board
loop-task startStart 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 apiShow HTTP API endpoints
loop-task project listList all projects

Full reference at CLI Reference

Start looping

Install it, create your first loop, and let it run.

$npm install -g loop-task