An MCP-native workflow engine that teaches your agent how you like to get things done.
Project description
Progi - MCP-native Workflow Engine
Progi teaches your agent how you like to get things done. So you can do your best work without re-explaining your process or losing context between sessions.
Get started
Add Progi to your MCP client config (VS Code / Cursor / Zed / Claude Code / etc):
{
"mcpServers": {
"progi": {
"command": "uvx",
"args": ["progi"]
}
}
}
Or with the Claude Code CLI:
claude mcp add progi -- uvx progi
Requires uv. That's it — your AI now has tools to create workflows, follow playbooks step by step, and keep a kanban board current. The web UI (Progi Monitoring) starts automatically at http://127.0.0.1:8000.
How it works
1. Describe your workflow
Describe your process in plain language. You can be detailed or just provide a rough idea. Progi stores it as a structured workflow with per-step playbooks.
2. Run tasks, stay in the loop
"Hey Progi, continue working on xy task." Your agent loads the workflow, works through each step using your playbooks, and loops you in at critical checkpoints to review output.
3. Monitor progress
Progi Monitoring gives you a live view of every running and completed task — status, progress, and the full output history across all your workflows.
4. Optimize as you go
Tweak playbooks between runs. Because workflows live in a database and survive context resets, every future task picks up your changes automatically — your process gets sharper with each iteration.
MCP Tools
Work loop
| Tool | Description |
|---|---|
create_task |
Create a new task under a given workflow (status todo); returns a preview of its first step |
list_tasks |
List tasks, optionally filtered by status and/or workflow |
start_or_continue_task |
Main work-loop entry point — starts or resumes a task and returns the current step's playbook, input data, and output spec |
update_progress_notes |
Overwrite a task's progress notes (mid-step save point) |
submit_output |
Mark the current step complete, store its output, and advance to the next step (or mark done) |
Workflow authoring
| Tool | Description |
|---|---|
get_process_skeleton_prompt |
Return the Pass 1 system prompt for turning a plain-language description into a structured workflow skeleton |
get_playbook_authoring_prompt |
Return the Pass 2 system prompt for authoring a step's playbook (injects workflow context) |
save_workflow |
Persist a new workflow, its steps, and playbooks |
list_workflows |
Return all workflows with their ordered steps |
update_playbook |
Replace the playbook content for a step |
Authoring is two passes: Pass 1 turns a plain-language description into a structured skeleton; Pass 2 authors each step's playbook. save_workflow persists both.
Configuration
| Variable | Default | Purpose |
|---|---|---|
PROGI_DB_PATH |
OS data dir (platformdirs) |
SQLite file location |
PROGI_WEB_HOST |
127.0.0.1 |
Web UI bind host |
PROGI_WEB_PORT |
8000 |
Web UI port |
PROGI_NO_WEB |
0 |
Set to 1 to disable the web UI |
Run modes: uvx progi (MCP + web UI), uvx progi --no-web (MCP only), uvx progi-web (web UI only).
Use an absolute path for
PROGI_DB_PATH
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file progi-0.1.1.tar.gz.
File metadata
- Download URL: progi-0.1.1.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70556fe3ace54d55782a67b43d13cdae354934206868a7a9aeee777511d0078e
|
|
| MD5 |
069731a59aebd14956b8584b854534c9
|
|
| BLAKE2b-256 |
60ecfb664566493afc437264a0a0684d1bd729d3badec0cae05b1abc02d9b439
|
Provenance
The following attestation bundles were made for progi-0.1.1.tar.gz:
Publisher:
publish.yml on zseta/progi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
progi-0.1.1.tar.gz -
Subject digest:
70556fe3ace54d55782a67b43d13cdae354934206868a7a9aeee777511d0078e - Sigstore transparency entry: 1825007181
- Sigstore integration time:
-
Permalink:
zseta/progi@b3fa7a63a08cc6e8c9bf8e3f0908f02f82caa761 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/zseta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b3fa7a63a08cc6e8c9bf8e3f0908f02f82caa761 -
Trigger Event:
push
-
Statement type:
File details
Details for the file progi-0.1.1-py3-none-any.whl.
File metadata
- Download URL: progi-0.1.1-py3-none-any.whl
- Upload date:
- Size: 986.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46e985752b6548a717fc0b75fc4ee0e909b77ae30506c9fd671ec3fbfc13be9b
|
|
| MD5 |
47da387d121dafee36221a232e6f8363
|
|
| BLAKE2b-256 |
636f6cd5207e301eefbdc67ddacb984f6414320d0aed4185455ab716552e97ce
|
Provenance
The following attestation bundles were made for progi-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on zseta/progi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
progi-0.1.1-py3-none-any.whl -
Subject digest:
46e985752b6548a717fc0b75fc4ee0e909b77ae30506c9fd671ec3fbfc13be9b - Sigstore transparency entry: 1825007196
- Sigstore integration time:
-
Permalink:
zseta/progi@b3fa7a63a08cc6e8c9bf8e3f0908f02f82caa761 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/zseta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b3fa7a63a08cc6e8c9bf8e3f0908f02f82caa761 -
Trigger Event:
push
-
Statement type: