Skip to content

Vol. VIII · Production Systems · VIII.4

Choosing a Framework

Pick for the constraint you actually have. Durability, types, roles, code-act, TypeScript, Azure, Gemini, documents — each has a default. Do not pick for stars.

8 min read

Doctrine

  • If you need checkpoints and cycles: LangGraph (Python) or Mastra (TS).
  • If you need a typed Python contract: Pydantic AI.
  • If you need role-based task teams fast: CrewAI, then graduate to Flows.
  • If you need handoffs on OpenAI: Agents SDK. If Gemini/GCP: ADK. If Azure/.NET: Agent Framework.
  • If you need compositional tool use: smolagents in a sandbox.
  • If you need retrieval over a corpus: LlamaIndex. If you need prompt optimization: DSPy.
  • If you need a batteries harness: Deep Agents or DeerFlow.

A decision procedure

1. Write evals. 2. Implement the loop in raw SDK calls. 3. If you are still coherent after that, add the thinnest library that gives you the missing primitive (checkpoints, types, MCP, evals). 4. If you are building a coding agent, fork a harness, do not start from LangChain graphs unless you need their durability.

Stars in this encyclopedia are a floor for inclusion, not a ranking. n8n has more stars than LangGraph and solves a different problem. ECC-class viral harnesses were excluded for a reason.

Anti-patterns

  • Selecting the repo with the most stars this week.
  • Using two orchestration frameworks in one process.

Related