AgentFlow — From Agent Code to Production API in Minutes

Published: (May 3, 2026 at 01:09 PM EDT)
8 min read
Source: Dev.to

Source: Dev.to

Why AgentFlow?

Most agent frameworks stop at the prototype. You get a cute demo, then spend weeks bolting on auth, rate limiting, persistence, and a frontend. AgentFlow is built for what comes after the demo.

One framework. From the first pip install to production Docker deploy.

ResourceURL
Core Python Library
API & CLI
Documentation
PyPI — Core
PyPI — CLI

The Full Stack

agentflow            →  Core Python orchestration engine
agentflow-cli        →  FastAPI server + CLI tooling
agentflow-client     →  TypeScript/React SDK (@10xscale/agentflow-client)
agentflow-playground →  Hosted UI for testing agents

Use any layer alone or combine them for a complete AI product stack — from LLM call to browser UI — without stitching four different libraries together.

Get Running in 60 Seconds

pip install 10xscale-agentflow-cli

agentflow init   # scaffold a new project
agentflow api    # start the dev server
agentflow play   # open the playground UI

That’s it. Your agent is running, streamed, and explorable in under a minute.

What You Get

Graph‑Based Agent Orchestration

AgentFlow uses a StateGraph — directed nodes, conditional edges, and full control over execution flow. No black boxes. No magic routing you can’t debug.

from agentflow.graph import Agent, StateGraph, ToolNode
from agentflow.state import AgentState, Message
from agentflow.utils.constants import END

def get_weather(location: str) -> str:
    """Get weather for a location."""
    return f"The weather in {location} is sunny, 72°F"

graph = StateGraph()
graph.add_node(
    "MAIN",
    Agent(
        model="gemini/gemini-2.5-flash",
        system_prompt=[{"role": "system", "content": "You are a helpful assistant."}],
        tool_node_name="TOOL",
    ),
)
graph.add_node("TOOL", ToolNode([get_weather]))

def route(state: AgentState) -> str:
    if state.context and state.context[-1].tools_calls:
        return "TOOL"
    return END

graph.add_conditional_edges("MAIN", route, {"TOOL": "TOOL", END: END})
graph.add_edge("TOOL", "MAIN")
graph.set_entry_point("MAIN")

app = graph.compile()
result = app.invoke(
    {"messages": [Message.text_message("Weather in NYC?")]},
    config={"thread_id": "1"},
)

Stateful. Tool‑calling. Under 30 lines.

LLM‑Agnostic

Pass the model string; AgentFlow routes it.

ProviderPackage
OpenAI (GPT‑4o, o1, etc.)pip install openai
Google Gemini + Vertex AIpip install google-genai
Anthropic Claudepip install anthropic (coming soon)

No provider‑specific abstractions to learn. Swap models without touching your agent logic.

Parallel Tool Execution — Automatic

When an LLM calls multiple tools at once, AgentFlow runs them concurrently. No config required.

Other frameworks:  1.0s + 1.5s + 0.8s = 3.3s
AgentFlow:         max(1.0s, 1.5s, 0.8s) = 1.5s  ⚡ 2.2x faster

Production Memory — Three Layers

Working Memory    →  Current execution state (AgentState)
Session Memory    →  Redis (hot) + PostgreSQL (durable) checkpointer
Knowledge Memory  →  Qdrant vector store + Mem0 semantic recall

Redis keeps hot conversation state fast. PostgreSQL keeps it durable and horizontally scalable. Both run together — you don’t have to pick one.

Streaming

stream_gen = app.astream(
    inp,
    config=config,
    response_granularity=ResponseGranularity.LOW,
)
async for chunk in stream_gen:
    print(chunk.model_dump())

Three granularity levels: token‑by‑token (ChatGPT‑style), message‑by‑message, or node‑by‑node graph traces. Your frontend decides what to show.

Auth and Security — Built In, Not Bolted On

Most frameworks leave auth as an exercise for the reader. AgentFlow ships it.

{ "auth": "jwt" }
{ "auth": null }
{ "auth": { "method": "custom", "path": "auth.my_backend:MyAuth" } }

One line in agentflow.json. Switch from dev to production auth without touching your graph code.

Security features included:

  • JWT authentication with configurable secrets
  • Custom auth backends for OAuth2, API keys, and sessions
  • Role‑Based Access Control (RBAC)
  • Sliding‑window rate limiting (memory or Redis backends)
  • Configurable request‑size limits (DoS protection, default 10 MB)
  • Auto‑redaction of tokens and secrets from logs
  • Startup validation — warns about insecure CORS and debug mode before you accidentally deploy them

Lifecycle Callbacks

Hook into every layer of execution — before and after each LLM call, tool call, or MCP invocation. Hook into the graph itself for start, end, checkpoint, interrupt, resume, and error events. Use them for logging, tracing, custom metrics, or dynamic graph modifications.

Quick Start Recap

pip install 10xscale-agentflow-cli
agentflow init
agentflow api
agentflow play

You now have a production‑ready, auth‑protected, streaming‑enabled, multi‑agent AI stack ready to ship.

AgentFlow Overview

AgentFlow lets you build production‑grade LLM agents with a graph‑based DSL, automatic persistence, parallel tool execution, and a full‑stack CLI. No boilerplate, no custom state management.

The CLI

agentflow init                 # Scaffold project + config
agentflow api                  # Dev server with auto‑reload
agentflow play                 # Open playground against local backend
agentflow build --docker-compose  # Generate Dockerfile + compose

Auto‑generated FastAPI Endpoints

EndpointMethodDescription
/invokePOSTSynchronous agent call
/streamPOSTStreaming agent call
/threadsGETList conversation threads
/threads/{id}GETFetch thread history
/threads/{id}DELETEDelete thread

Your agent graph becomes a production API—no FastAPI boilerplate required.

Dependency Injection with InjectQ

from agentflow.utils import tool

@tool(tags=["weather"])
async def get_weather(
    location: str,
    user_id: str = Inject(UserService)
) -> str:
    """Get weather for a location."""
    return f"Weather for user {user_id} in {location}: sunny"
  • Clean, testable tools.
  • Per‑request context without global state.

Human‑in‑the‑Loop

  • Pause execution mid‑graph.
  • Inject a human decision.
  • Resume with full state intact—no re‑running prior steps.

Use cases: approval workflows, moderation gates, interactive debugging.

Event Publishing

PublisherUse Case
Redis Pub/SubLightweight in‑process distribution
KafkaHigh‑volume event streaming
RabbitMQReliable queuing, distributed systems
ConsoleLocal debugging
CustomAny backend you want

React/TypeScript Client SDK

@10xscale/agentflow-client provides React hooks (useAgent, useStream, useThreads), token‑level streaming for ChatGPT‑style UIs, and client‑side tool execution. The frontend talks to your AgentFlow API without custom integration code.

Feature Comparison

FeatureAgentFlowLangGraphCrewAIAutoGen
ArchitectureGraphGraphRole‑BasedConversational
Full Stack (Backend + Frontend SDK)
Parallel Tool Execution✅ Auto⚠️ Config
Persistence✅ Redis + Postgres⚠️ Postgres/SQLite⚠️ Local⚠️ Local
Dependency Injection✅ Native
CLI + Docker Deployment✅ One command
Auth Built‑In✅ JWT + Custom
Rate Limiting✅ Memory + Redis
Lifecycle Callbacks✅ Full⚠️ Manual⚠️ Manual
MCP Support✅ Native⚠️ Partial
Event Publishing✅ Kafka/Redis/AMQP
Open Source (MIT)

Installation

# Core library
pip install 10xscale-agentflow

# Full CLI + API server
pip install 10xscale-agentflow-cli

Optional extras

pip install 10xscale-agentflow[pg_checkpoint]   # PostgreSQL + Redis persistence
pip install 10xscale-agentflow[mcp]             # Model Context Protocol
pip install 10xscale-agentflow[google-genai]    # Google GenAI adapter
pip install 10xscale-agentflow[kafka]           # Kafka event publishing
pip install 10xscale-agentflow[redis]           # Redis publisher + rate limiting

Current Version

PackageVersion
10xscale-agentflow (core)v0.7.4
10xscale-agentflow-cliv0.3.2

Added in v0.7.x: multimodal support (images, audio, video), extended reasoning / chain‑of‑thought, 3‑layer memory, callback and lifecycle hooks, agent skills, Vertex AI support, structured Pydantic outputs.

Roadmap

  • ✅ Graph engine with nodes, edges, and conditional routing
  • ✅ Redis + PostgreSQL state checkpointing
  • ✅ Tool integration — local Python, MCP, optional adapters
  • ✅ Parallel tool execution
  • ✅ Lifecycle callbacks and graph hooks
  • ✅ Streaming + event publishing
  • ✅ Human‑in‑the‑loop
  • ✅ Multimodal agents
  • 🚧 Remote node execution for distributed processing
  • 🚧 OpenTelemetry tracing
  • 🚧 More persistence backends (DynamoDB, etc.)
  • 🚧 Visual graph editor

Privacy & Licensing

  • MIT License – free for commercial use.
  • No data collection – conversations stay on your infrastructure.
  • No per‑call billing – you only pay for your LLM API and infra.
  • Deploy anywhere – Docker, Kubernetes, AWS ECS, Cloud Run, Azure, Heroku.
ResourceURL
Core Library
API & CLI
Documentation
PyPI Core
PyPI CLI
Issues & Requests
Discussions

Built by 10xScale and the community. MIT licensed.

0 views
Back to Blog

Related posts

Read more »

What’s Your Fear Score as a Developer?

Fear costs us everything. I once heard the quote, “You miss 100% of the shots you don’t take,” and it resonated throughout my career. Looking back, I missed man...