OpenAgentFlow: Decoupling Multi-Agent Workflows

Leo91 Intermediate 10h ago 188 views 1 likes 2 min read

Writing custom state schemas and initializing every single node function in LangGraph is a tedious exercise in boilerplate. When building a simple three-agent triage system, you often spend more time fighting with TypedDict and graph checkpointers than actually refining the agent logic.

The current AI landscape is split: you either have visual tools like n8n that hit a ceiling with complex conditional looping, or code-first frameworks that bury your workflow logic under hundreds of lines of setup code. There is a desperate need for a neutral, portable way to describe a workflow that remains separate from the execution environment.

This is why I built OpenAgentFlow (.oaf). Think of it as the OpenAPI specification, but for multi-agent communication and state machines. Instead of hard-coding the flow into a specific Python framework, you define the state and the agent interactions in a human-readable .oaf file.

The productivity gain is massive. A production-ready Customer Support Triage workflow that would typically require 250+ lines of Python can be condensed into about 40 lines of specification.

workflow "Support Ticket Triage" {

 config {
 max_iterations: 3
 timeout_seconds: 45
 }

 state {
 ticket_text: string
 user_tier: string
 category: string
 urgency: string
 suggested_reply: string
 }

 agent Classifier {
 instructions: """
 Analyze the incoming support ticket.
 Categorize into: 'Billing', 'Technical Bug', or 'Feature Request'.
 Assess urgency level: 'Low', 'Medium', or 'Critical'.
 """
 model: "gemini-2.0-flash"
 temperature: 0.1
 inputs: [ticket_text, user_tier]
 outputs: [category, urgency]
 }

 agent Responder {
 instructions: """
 Draft a helpful response based on category and urgency.
 If urgency is 'Critical', note that high-priority alert has been dispatched.
 """
 model: "gemini-2.0-flash"
 temperature: 0.6
 inputs: [ticket_text, user_tier, category, urgency]
 outputs: [suggested_reply]
 }

 flow {
 start -> Classifier 
 Classifier -> Responder 
 Responder -> end
 }
}

By focusing on a specification-first approach, this creates a much cleaner AI workflow. You define the state, the agents, and the flow transitions, and the engine handles the heavy lifting. It removes the friction of dependency management and framework-specific plumbing, letting you focus on prompt engineering and agent orchestration.

LangChainAIAI ProgrammingAI Codingpython

All Replies (3)

A
Alex17 Advanced 10h ago
Found that using a shared config object helps avoid passing state manually between agents.
0 Reply
D
DrewCoder Novice 10h ago
Does this handle dynamic routing well, or do you still have to define those paths manually?
0 Reply
M
Morgan42 Novice 10h ago
Spent way too many hours fighting LangGraph's boilerplate last month. This looks like a solid fix.
0 Reply

Write a Reply

Markdown supported