I'm a photographer. I built a DSL for multi-agent workflows A photographer has built AgentFlow, a declarative DSL that lets users define multi-agent AI workflows in simple `.aflow` files and compile them into MCP tools for Claude Code without writing any integration code. The system supports assigning different AI models to different agents, running iterative loops with structured output, and includes a CLI with validation, execution, and MCP configuration commands. This allows non-programmers to create complex, multi-model AI pipelines that are git-friendly and reviewable by anyone. A declarative language for multi-agent AI workflows — compile to MCP tools, no code required. Write complex multi-agent workflows in clean, readable .aflow files. Each workflow becomes a tool in Claude Code via MCP — zero integration code. Assign different AI models to different agents, run iterative loops, and let agents collaborate with structured output. workflow code quality description: "Iterative code review with writer, tester, and critic" version: "1.0.0" agents: agent writer → model: "local-fast" agent tester → model: "openrouter-smart" agent critic → model: "claude-sonnet" loop quality gate phases: write, test, review repeat while: review.verdict == "needs work" max iterations: 5 done when: review.confidence = 0.85 | Traditional LangGraph, CrewAI | AgentFlow DSL | | |---|---|---| Define workflows | Python code ~40 lines boilerplate | .aflow file ~20 lines | Multi-model | Manual provider switching | Per-agent model aliases | MCP integration | Write MCP server code | Automatic — each workflow = MCP tool | Git-friendly | Code + config scattered | Single .aflow file | Reviewable | Need Python knowledge | Readable by anyone | npm install -g @anhonestboy/agentflow agentflow init Interactive wizard: choose providers Claude, OpenRouter, Ollama , configure model aliases, save API keys. Create my-workflow.aflow : workflow blog post description: "Generate and refine a blog post" version: "1.0.0" agents: agent researcher mode: patient must produce: - outline - key points agent writer mode: focused must produce: - draft - word count: int agent editor mode: adversarial must produce: - verdict - suggestions - confidence: float phases: phase research agent: researcher input: trigger.topic output: outline, key points phase write agent: writer input: research.outline, research.key points output: draft, word count phase edit agent: editor input: write.draft output: verdict, suggestions, confidence loop revision cycle phases: write, edit repeat while: edit.verdict == "needs work" max iterations: 3 on each iteration: send to: writer payload: edit.suggestions done when: edit.confidence = 0.8 and edit.verdict == "approved" agentflow check my-workflow.aflow Validate agentflow run my-workflow.aflow --input 'topic="AI in photography"' agentflow mcp-config Copy the JSON output to your Claude Code MCP settings. Your workflow is now a tool — call it directly from Claude Code. | Provider | Status | Notes | |---|---|---| Claude Anthropic | ✅ | Native SDK, multi-round tool use | OpenRouter | ✅ | 315+ models, automatic provider routing | Ollama | ✅ | Local execution, no API key needed | Configure model aliases for cost optimization — use cheap models for drafting, frontier models for review: { "models": { "local-fast": { "provider": "ollama", "model": "qwen3:8b" }, "openrouter-smart": { "provider": "openrouter", "model": "google/gemini-2.5-flash" }, "claude-sonnet": { "provider": "claude", "model": "claude-sonnet-4-5" } } } agentflow init Interactive setup wizard agentflow check