spoolctl

A local job queue built for operators that die.

A job whose worker is SIGKILLed mid-run is reclaimed and retried by another worker — and never reclaimed while the process that owns it is still alive. Mutual exclusion is absolute; recovery is eventual.

Jobs are plain shell commands. There is no daemon and no broker: workers are symmetric peers that coordinate entirely through one SQLite file, so there is no coordinator whose death breaks the queue. Retries with backoff, a durable dead-letter state, per-job timeouts with process-group kill, and captured output you can read back later — from a different process than the one that submitted the job. Python standard library only; nothing to install into a sandbox but one file.

Built for the operators that can't watch a terminal: coding agents, unattended pipelines, CI-adjacent automation. evalctl delegates execution to spoolctl for crash-safe async runs; model routing there can delegate to inferctl.

Queue work with spoolctl add -- python fetch.py, then start peers with spoolctl work.

Pre-release. Source: github.com/Ozhiaki/spoolctl. Install instructions coming soon.