The workflow lock-in problem
Multi-agent AI is moving fast. Frameworks like LangGraph, CrewAI, AutoGen, and Swarm each give you powerful primitives for orchestrating agents — and each one is excellent at what it does. But they all speak a different language. A LangGraph StateGraph is not a CrewAI Crew. A CrewAI crew is not an AutoGen GroupChat. If you build and tune a multi-agent workflow on one framework, you are locked in.
This isn't a criticism of any framework. It's the natural state of a young ecosystem. We've been here before: before Docker, every deployment environment was a snowflake. Before OpenAPI, every REST API needed its own client SDK. Before MCP, every tool integration was a one-off build. In each case, the solution wasn't to pick one framework and mandate it — it was to agree on a portable standard that sits above all of them.
That is what AWP is.
What the industry already has
Two important standards have already emerged for the agentic layer:
Model Context Protocol
Standardizes how agents access tools, resources, and prompts. An MCP server exposes capabilities; any MCP client can consume them.
Agent2Agent Protocol
Standardizes how live agents communicate with each other — capability discovery, task delegation, and status reporting between running agents.
Both are genuinely useful and worth adopting. But neither addresses the question of workflow portability: how do you define a multi-agent workflow once, share it, version it, evaluate it, and run it on any framework? That slot is empty.
Introducing AWP
The Agentic Workflow Protocol (AWP) is an open standard for describing, sharing, and executing multi-agent workflows. An AWP workflow is defined in a .awf file — a YAML document specifying agents, their roles and tool access, the execution topology, shared state, and evaluation criteria. Runtime adapters translate .awf files into LangGraph, CrewAI, AutoGen, or any other target. The "P" matters: AWP defines not just a file schema but a contract that runtimes implement to be AWP-compatible.
The core idea
Define the workflow in AWP. Run it anywhere. Optimize it with AutoAW. The optimized result is still a valid .awf file — portable, shareable, and deployable without any AutoAW dependency.
Here is a minimal AWP workflow for a retail customer-support agent:
name: retail-customer-support
version: "0.1.0"
description: Handles tier-1 customer support for a retail store
agents:
- id: classifier
role: "Identify the customer and classify their request type"
meta_type: profiler
tools: [get_customer, get_order, find_order_by_id]
temperature: 0.0
- id: resolver
role: "Execute the requested action and confirm resolution"
meta_type: agent
tools: [cancel_order, exchange_item, modify_order, return_delivered_item]
temperature: 0.3
edges:
- classifier -> resolver
topology: fixed_pipeline
state:
customer_id: string
order_id: string
resolved: boolean
eval:
type: tau_bench
benchmark: retail
weights:
quality: 0.7
cost: 0.2
latency: 0.1That is the entire workflow definition. Two agents, one edge, a state schema, and evaluation criteria. A runtime adapter reads this file and produces the framework-specific boilerplate — you never write it by hand.
Key design decisions
Protocol, not just format
We deliberately chose "Protocol" over "Format." A format describes a file shape; a protocol defines a contract between parties. AWP defines a contract that runtime adapters must implement: how to parse .awf files, map AWP concepts to framework primitives, report fitness metrics, and interact with the registry. Frameworks become AWP-compatible by implementing this contract — the same way tools become MCP-compatible by implementing MCP.
Evaluation is a first-class citizen
Most workflow tools treat evaluation as an afterthought — something you wire up separately in a test harness. AWP embeds evaluation criteria directly in the workflow file. This makes the file self-describing: you know not just how the workflow runs, but what it is trying to achieve and how to measure it. It also enables automated optimization (more on this below).
Agent meta-types, not generic nodes
Generic node definitions carry no semantic information. AWP borrows the meta_type concept from AutoAW's gene format: each agent declares its functional role — profiler, agent, critic, synthesizer, or router. This lets runtimes apply sensible defaults (temperature ranges, tool scopes) and lets optimizers understand what a node is before mutating it.
Delegation patterns as a first-class primitive
Multi-agent coordination patterns — fan-out/fan-in, sequential pipeline, parallel best-of selection — recur across almost every real-world workflow. AWP names them explicitly in the delegation block rather than leaving them implicit in edge topology. This makes the intent clear to both humans reading the file and adapters generating runtime code.
MCP-native tool references
Tool identifiers in AWP are MCP tool names. An AWP workflow that declares tools: [get_customer, cancel_order] references tools exposed by MCP servers listed in the mcp_servers block. AWP sits on top of MCP — MCP handles tool access, AWP handles workflow structure.
Runtime adapters
An AWP runtime adapter reads a .awf file and generates executable code (or a runtime configuration) for a specific framework. The adapter is responsible for the mapping — AWP never prescribes how a framework should implement orchestration, only what the workflow intends.
agents → nodes, edges → graph edges, delegation → StateGraph reducers and conditional routing.
agents → Agents, topology → process type (sequential / hierarchical), delegation → Crew config.
agents → AssistantAgent / UserProxyAgent, edges → GroupChat speaker-selection order.
We are building these adapters in the open and actively looking for contributors familiar with each framework. The adapter interface is minimal — a single function that takes an AWP document and returns framework-specific output.
AutoAW as the AWP optimizer
This is where our work at AutoAW connects to AWP. AutoAW applies Genetic Programming to evolve multi-agent workflows — and internally, every gene in the evolutionary population is a valid AWP document stored as a .awf file.
The relationship between AWP and AutoAW is simple:
- Import. Load any
.awffile as the seed gene for a new experiment. AutoAW uses it as the starting point for evolution. - Optimize. AutoAW runs hundreds of mutations and evaluations across generations — adjusting prompts, delegation patterns, tool assignments, temperatures — guided by the eval criteria embedded in the
.awffile. - Export. The best-performing gene is returned as a validated
.awffile. No AutoAW dependency at runtime — deploy it on LangGraph, CrewAI, or any other AWP-compatible runtime.
AWP is the protocol. AutoAW is one optimizer. We expect others to emerge — and that's a good thing. A standard protocol creates a competitive ecosystem of tooling, just as OpenAPI created a competitive ecosystem of API clients, mocks, and validators.
The AWP registry
Portable protocols become truly powerful when paired with a discovery layer. The AWP registry (coming soon at awf.sh) will be a public index of community-contributed .awf files, searchable by domain, benchmark, and fitness score.
Every entry in the registry will include the full workflow spec, the benchmark it was optimized against, and its measured fitness metrics — quality, cost, and latency. Sharing an AWP workflow means sharing not just the topology but the evidence of how well it performs.
What's next
AWP spec v0.1
Formal JSON Schema and YAML spec for .awf files, published under Apache 2.0.
awf CLI
Validate, compile, run, and push workflows from the command line.
LangGraph adapter
Reference implementation: .awf → LangGraph StateGraph.
CrewAI adapter
.awf → CrewAI Crew with process mapping.
AutoGen adapter
.awf → AutoGen GroupChat with speaker selection.
AWP registry (awf.sh)
Public index of community workflows, rated by benchmark performance.
Get involved
AWP is an open proposal. We are publishing the spec and building the first adapters, but we want this to be a community standard — not an AutoAW product. That means:
- If you use LangGraph, CrewAI, or AutoGen and want to help design the adapter interface, reach out.
- If you have opinions on the spec design — types that are missing, fields that are wrong — open a discussion.
- If you have an existing multi-agent workflow you'd like to describe in AWP, try it and tell us where the protocol falls short.
Start a conversation
Feedback, contributions, and early adapter work welcome.