Skip to main content

Agentic Workflow (awf)

license: MIT Python 3.10+ tests

Multi-agent pipeline orchestrator for opencode. Plan → build → verify → commit — through typed MCP tools, not bash.

The problem it solves

AI coding agents are powerful but chaotic. They jump straight to code without planning, skip review, leave bugs. You watch helplessly as tokens burn.

awf adds structure: a supervisor agent plans the work, worker agents execute through a pipeline you design (any roles, any depth — from a single worker to a multi-stage chain), and you approve each result before it commits. All through natural language — "start working on the backlog", "verify and approve", "reject — the DOMParser fix is missing".

You stay in control. The agent stays on rails.

Quick Start

# 1. Install
pip install -e .
pip install -e ./agent_workflow_ui

# 2. Configure opencode — add to ~/.config/opencode/opencode.json:
# {
#   "mcp": {
#     "agent-workflow-ui": {
#       "type": "local",
#       "command": ["python3", "-m", "agent_workflow_ui"],
#       "enabled": true
#     }
#   }
# }

# 3. Run — just talk to opencode:
# "Initialize awf in my project"
# "Develop the MVP based on the backlog"

Requirements

Component Requirement
Python 3.10+
opencode any recent version with MCP support
OS Linux (tested), macOS (should work), Windows (untested)
Models Model-agnostic. Tested with Qwen vLLM. Should work with Claude, GPT, or any opencode-supported provider.
Git Required (commit gate, baselines, rollback)

Features

  • 🎯 State-Machine Orchestration (SMO) — awf guides the supervisor through phases: init → goal → form → normalize → brief → run → verify → done. Every tool returns a next_action hint — even weak models follow the full flow without getting lost.
  • 🔧 29 MCP tools — typed pipeline control: init, dispatch, start, approve, reject, rollback, dashboard, model validation. No bash, no manual file editing.
  • 📊 Live Dashboard — HTTP server with real-time polling. Chat-style agent handoffs, TODO content, TODO timeline, worker status, browser notifications. No page reloads.
  • 🧱 Custom pipelines — any roles, any depth. 1 stage or 10. You choose in the setup form.
  • Approve / Reject — symmetric verify tools. Approve commits and archives. Reject kills the pipeline and asks for fixes.
  • 🔍 Pre-dispatch check — before launching a pipeline, awf greps your codebase for keywords from the TODO. Warning if the task might already be done.
  • 🔄 Crash recovery — salvage path when workers don't signal, orphan TODO cleanup, state reconciliation on startup.
  • 📋 Increment planning — decomposition variants (vertical, horizontal, risk-first) presented as an HTML form for user choice.

Usage

Talk in natural language — the supervisor agent calls the right tools:

You say What happens
"Initialize awf in my project" Creates .agentic/, detects stack, asks for your goal
"Develop the MVP" Opens setup form → configures pipeline → plans first TODO
"Verify" Supervisor reads handoffs, checks git diff, approves or rejects
"Reject — the cache is missing" Pipeline killed, new TODO dispatched with fix instructions

See USAGE.md for full scenarios and tool reference.

SMO Flow

graph LR
    init --> goal --> form --> normalize --> brief --> run --> verify --> done
Phase You do Supervisor does
init Creates .agentic/, detects stack
goal Answer "what do you want?" Stores goal
form Fill setup form in browser Opens form, recommends roles
normalize Analyzes role overlaps
brief Studies project, dispatches TODO
run Monitor dashboard IDLE — waits for you
verify Say "verify" Reviews, approves/rejects
done "continue" or "stop" Waits for instruction

Architecture

graph TD
    A[opencode supervisor LLM] -->|MCP stdio - 29 tools| B[agent-workflow-ui plugin]
    B -->|Python import| C[awf orchestrator]
    C -->|subprocess| D[opencode run - worker agents]
    C -->|HTTP daemon| E[Dashboard - live /api/state]

Two packages:

  • awf — Python core. Pipeline engine, phase state machine, signals, commit gate, dashboard server.
  • agent_workflow_ui — MCP plugin. Thin async wrappers + next_action guidance + HTML forms.

Comparison

awf Aider Claude Code Devin
Planning before code ⚠️
Human approve/reject
Custom pipelines
MCP-native
Self-hosted / free
Any LLM provider

Dashboard

Live HTTP dashboard opens automatically when pipeline starts:

  • Two-panel layout — pipeline sidebar (stages, progress, worker) + content tabs
  • 💬 Agent Chat — handoffs as conversation messages with chain visualization
  • 📝 Задача — full TODO content in rendered markdown
  • 📊 События — meaningful events, newest first
  • TODO timeline[✅ TODO-0001] ─ [✅ TODO-0002] ─ [🔄 TODO-0003]
  • Browser notification when pipeline reaches verify

Real-world results

6 sessions on jira-epic-presenter (Qwen vLLM):

  • Full SMO flow end-to-end: init → goal → form → normalize → brief → run → verify
  • 4 TODOs per session, 1× approve (no loops), zero polling
  • Reject flow tested: supervisor found missing work, rejected, re-dispatched with fix
  • Pre-dispatch check caught already-implemented tasks

Roadmap

  • SMO escape-hatch'и — manual phase jumps, interruptions (from real session edge cases)
  • Coverage — critical paths (verify, plan_checkpoint, context)
  • PyPIpip install awf agent-workflow-ui (no git clone needed)
  • Dashboard v3 — stage timing bars, session summary, sound notifications
  • Standalone mode — awf without opencode (API-only)

Full backlog: BACKLOG.md

Documentation

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

awf-1.0.0.tar.gz (141.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awf-1.0.0-py3-none-any.whl (165.0 kB view details)

Uploaded Python 3

File details

Details for the file awf-1.0.0.tar.gz.

File metadata

  • Download URL: awf-1.0.0.tar.gz
  • Upload date:
  • Size: 141.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for awf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 44056a7aaea2c74c9bb55f283e317a426e80bda5e526f2e3f11a2d28b6692566
MD5 71e21c4cb63566e63176c6fee5131dec
BLAKE2b-256 aa1fbd6021b63736f1b8be495affafcf894f5feaa736423fd4d285845bb0ca41

See more details on using hashes here.

File details

Details for the file awf-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: awf-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 165.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for awf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 62ad9935031c6ed2eb063dac2a4c13f049ab12abed41d17ee887f545da18eb84
MD5 e1647734a6365c1099c9582250c917c6
BLAKE2b-256 7688a9a528bd1877b4a8ad0ec224178d7a90fc090db68684871c458de7436a04

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page