https://github.com/zseta/progi
Progi is an MCP-native workflow engine for your AI harness
https://github.com/zseta/progi
claude copilot mcp mcp-server progi progi-mcp workflow workflow-engine
Last synced: about 2 months ago
JSON representation
Progi is an MCP-native workflow engine for your AI harness
- Host: GitHub
- URL: https://github.com/zseta/progi
- Owner: zseta
- License: mit
- Created: 2026-06-15T12:20:33.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-15T14:28:40.000Z (about 2 months ago)
- Last Synced: 2026-06-15T15:17:02.848Z (about 2 months ago)
- Topics: claude, copilot, mcp, mcp-server, progi, progi-mcp, workflow, workflow-engine
- Language: Python
- Homepage: https://progi.dev
- Size: 1.05 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# 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.
[](LICENSE)
[](https://pypi.org/project/progi/)
[](https://modelcontextprotocol.io)
---
## Get started
Add Progi to your MCP client config (GH Copilot / Cursor / Claude Code / etc):
```json
{
"mcpServers": {
"progi": {
"command": "uvx",
"args": ["progi"]
}
}
}
```
Progi Monitoring starts automatically at `http://127.0.0.1:8000`.
If you want to start Monitoring on a different port:
```json
{
"mcpServers": {
"progi": {
"command": "uvx",
"args": ["progi"],
"env": {
"PROGI_WEB_PORT": "8080"
}
}
}
}
```
---
## How it works
**1. Describe your workflow**
*"Hey Progi, help me create workflow for creating integrations, reviewing code, and publishing PRs."*
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, start a new task, we need to review a new docs PR in the repo."*
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 in Progi Monitoring 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 |
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`