loops.yaml

Where loops run

One idea.
Every runtime.

A loop is an interval and a thing to do. That works the same whether the “thing” is a shell command on a schedule or a prompt to a coding agent while you work. Everything here ships today — install from the public repository, nothing hosted, no account.

Stable

Shell scheduler

Install the CLI, add a loops.yaml, run it once or leave the watcher open. Any command with an exit code — and it keeps running after the agent closes.

bun add -g github:acoyfellow/loops-yaml
Shell quickstart ↗
Stable

Pi

Install the Pi package, reload the session, then describe the interval and the condition that ends the loop.

pi install git:github.com/acoyfellow/loops-yaml
/loop every 30s check MR !38955; stop when it merges
Stable

omp

Pi-family CLI, so the same extension loads directly. Install it as a plugin, then use /loop exactly as in Pi.

omp install github:acoyfellow/loops-yaml
/loop every 30s check MR !38955; stop when it merges
Stable

OpenCode

Point OpenCode at the plugin in opencode.json, restart, then describe the interval and the stop condition.

{ "plugin": ["/ABSOLUTE/PATH/TO/loops-yaml/extensions/opencode/index.ts"] }
every 30s check MR !38955; stop when it merges
OpenCode setup ↗

Any other agent?

Most agents can already loop themselves — the shell scheduler runs any command, and any agent with a shell can re-prompt on a timer. The native extensions above just make the loop session-aware: idle-only, with a real stop condition, instead of a blunt cron tick.

See how the two modes differ →