Troubleshooting
Start here:
openloop doctor # prerequisites, providers, daemon healthopenloop service statusopenloop logs --lines 100openloop events --since 1hThe daemon won’t start
Section titled “The daemon won’t start”Symptom: service start warns the daemon may not have started, or status shows nothing.
- Check the log tail:
openloop logs. - A stale PID file (crashed daemon) is detected and cleared automatically, but a PID pointing at a foreign process is refused. Remove
~/.openloop/run/daemon.pidmanually if you know it’s wrong. - The daemon self-pauses after 5 consecutive tick errors;
openloop resumerestarts scheduling once the cause is fixed (seelogs). - Run it in the foreground to watch behavior directly:
openloop service run.
Commands missing after install
Section titled “Commands missing after install”Newer commands (doctor, setup, digest, issue, dashboard, mcp, approval) don’t exist. Two usual causes:
-
An outdated npm global: upgrade with
npm install -g openloop@latest. -
A stale source install: a linked clone runs the last build; after pulling new commits, rebuild and re-link:
Terminal window cd /path/to/openloop && npm install && npm run build
openloop --version tells you which build is on PATH.
The TUI doesn’t start
Section titled “The TUI doesn’t start”The interactive TUI needs Bun. From plain Node the CLI tries to relaunch itself under Bun; without Bun installed it prints a message and exits. Either install Bun, or use openloop watch (a no-Bun live dashboard) and the regular CLI.
The daemon runs but nothing happens
Section titled “The daemon runs but nothing happens”openloop task list -p <alias> --status ready, onlyreadytasks are scheduled. Proposals need planning first (ortask update --status ready).- Check budget:
openloop status, a hit ceiling pauses the daemon (budget-blockedevents confirm). - Check backpressure: ≥3 pending promotions skip the project until reviewed.
- Awaiting approval: tasks in
awaiting-approvalnever run untiltask approve. run-once -p <alias> --dry-runshows exactly what the scheduler would pick and why.
Agent run fails or does nothing
Section titled “Agent run fails or does nothing”- Provider missing:
openloop config list-providers; the chosen agent binary must be onPATH. - Timeout: runs are killed at
runtime.runTimeoutSeconds(default 30 min). Long tasks need either a higher limit or smaller scope. - Prompt inspection:
run-once --dry-runprints the exact prompt;--verboseprints it during a real run.
Auto-merge never happens
Section titled “Auto-merge never happens”By design, auto-merge requires all of: low-risk task, policy allowing it, validations configured and passing, no blocking review findings, no hook veto. Check in order:
config project-show <alias>→validationblock non-empty?promotion show -p <alias> --task <task>→ decision + reason.- Policy:
risk.requirePolicyForAutoMergeneeds a real policy; scope drift downgrades.
Promotion apply fails
Section titled “Promotion apply fails”- Auto-merge/pr modes need
git; PR creation needs an authenticatedgh(or a customruntime.prCommand). - Dirty working tree: with worktrees disabled, OpenLoop tolerates a dirty tree but conflicts still fail the apply, commit or stash first.
Reset a stuck project
Section titled “Reset a stuck project”openloop task recover -p <alias> # in_progress → readyopenloop pause # hold the loopopenloop service restart.openloop/backup/<timestamp>/ keeps pre---force state if initialization went sideways.
Still stuck?
Section titled “Still stuck?”Open an issue with the output of openloop doctor, openloop status, and a log excerpt (openloop logs --lines 200): github.com/jaltez/openloop/issues.