The work loop is deliberately small: ask for the current step, get its playbook and output spec, submit the output, get the next step. Because workflows and task state live in a database rather than in the conversation, a context reset costs you nothing, and a playbook you sharpen after a bad run applies to every task afterwards.
A workflow engine that keeps your processes in a local SQLite file. Each workflow is an ordered set of steps, each step carries a playbook and an output spec, and the agent pulls one step at a time.
- Tasks created against a workflow, listed by status or by workflow, and resumed from wherever the last session stopped
- A single work-loop entry point that returns the current step's playbook, its input data and the output spec that defines when it is done
- Step completion that stores the output and returns the next step's playbook, so the agent can carry straight on — and renames the task once there is enough context for a meaningful name
- Progress notes saved mid-step as a bookmark, cleared automatically when the step completes
- Two-pass authoring: one prompt turns a plain-language description into a step skeleton, a second writes each step's playbook, and both are persisted together
- Playbooks editable in place, so a workflow you tune once applies to every task that follows
- A monitoring web UI at http://127.0.0.1:8000 showing running and completed tasks with their output history
No account and no key — everything lives in a SQLite file on your machine. Run it with uvx progi from the PyPI package progi over stdio; the published version is 0.3.2. The bundled mode starts the MCP server and the monitoring UI together; uvx progi --no-web or PROGI_NO_WEB=1 runs the server alone, and the docs run the UI alone under the name progi-web, which PyPI does not have. PROGI_DB_PATH moves the database file — use an absolute path — while PROGI_WEB_HOST and PROGI_WEB_PORT move the UI off 127.0.0.1:8000.
One command — uvx progi
