[{"data":1,"prerenderedAt":717},["ShallowReactive",2],{"tool-crewai-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":26,"cover":54,"og":55,"expertise":56,"locales":57,"lang":58,"title":61,"description":62,"coverAlt":63,"url":64,"pricing":65,"kind":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":87,"blocks":112,"others":485},"crewai","2026-06-08",10,"agents",[9,10,11,12,13],"Multi-agent","Agent orchestration","Python","Flows","Token cost",[4,15,16,17,18,19,20,21],"crewai vs langgraph","crewai framework review","multi-agent framework python","crewai flows","crewai memory","crewai pricing","agent framework comparison",[23],{"name":24,"url":25},"CrewAI","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCrewAI",[27,30,33,36,39,42,45,48,51],{"title":28,"url":29},"CrewAI documentation: introduction","https:\u002F\u002Fdocs.crewai.com\u002Fen\u002Fintroduction",{"title":31,"url":32},"CrewAI on PyPI: crewai 1.15.23","https:\u002F\u002Fpypi.org\u002Fproject\u002Fcrewai\u002F",{"title":34,"url":35},"CrewAI docs: Flows","https:\u002F\u002Fdocs.crewai.com\u002Fen\u002Fconcepts\u002Fflows",{"title":37,"url":38},"CrewAI docs: Memory","https:\u002F\u002Fdocs.crewai.com\u002Fen\u002Fconcepts\u002Fmemory",{"title":40,"url":41},"CrewAI docs: tracing","https:\u002F\u002Fdocs.crewai.com\u002Fen\u002Fobservability\u002Ftracing",{"title":43,"url":44},"CrewAI pricing","https:\u002F\u002Fwww.crewai.com\u002Fpricing",{"title":46,"url":47},"GitHub: crewAIInc\u002FcrewAI","https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI",{"title":49,"url":50},"LangGraph overview","https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Flanggraph\u002Foverview",{"title":52,"url":53},"AutoGen AgentChat user guide","https:\u002F\u002Fmicrosoft.github.io\u002Fautogen\u002Fstable\u002Fuser-guide\u002Fagentchat-user-guide\u002Findex.html","\u002Fimages\u002Fblog\u002Fcrewai\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcrewai\u002Fog.jpg","ai-engineer",[58,59,60],"en","de","hu","CrewAI review: crews, flows and the token bill","CrewAI is the MIT-licensed Python framework for multi-agent systems: crews for autonomous collaboration, flows for controlled state. What a run costs in tokens, and where the design hurts.","Diagram of a CrewAI flow driving a crew of agents that call the language model, memory and tools.","https:\u002F\u002Fwww.crewai.com","MIT · enterprise paid","Agent framework","CrewAI: crews, flows and the cost per task · Balázs Csorba",[69,70,71,72,73],"CrewAI 1.15.23 is MIT-licensed Python for 3.10 to 3.13, with no execution cap of its own and extras for tools, LiteLLM, mem0, Qdrant and Bedrock.","Crews delegate through model calls, so the cost of a run is set by topology: role prompts, a hierarchical manager, three guardrail retries and memory analysis all add calls.","Memory keeps records as LanceDB vectors and calls a model on save and on deep recall, on top of the embedding call.","Built-in tracing goes to CrewAI's own backend and asks for an account plus a first-run consent prompt; Langfuse, Phoenix, Braintrust and MLflow work over OpenTelemetry instead.","The framework is at its best when the flow holds the logic and one or two agents do the open-ended part.",[75,78,81,84],{"q":76,"a":77},"Is CrewAI free for production use?","Yes. The framework is MIT-licensed with no run quota; the cost is the model calls your agents make plus the infrastructure you run them on. The commercial product, CrewAI AMP, has a free Basic plan with 50 workflow executions a month and an Enterprise tier priced by quote.",{"q":79,"a":80},"Does CrewAI depend on LangChain?","No. The package has no LangChain dependency and is positioned as a standalone framework. Model access is handled through provider SDKs, with LiteLLM available as the crewai[litellm] extra.",{"q":82,"a":83},"How do crews and flows differ?","A flow owns state and execution order through @start, @listen and @router methods; a crew is a set of agents and tasks that runs inside a flow step. The vendor's own recommendation is to start with a flow and delegate to a crew when a step needs autonomy.",{"q":85,"a":86},"Is CrewAI's memory safe for sensitive data?","Not out of the box. Record content is sent to the configured LLM for scope, category and importance analysis, and the default embedder is OpenAI text-embedding-3-large. The documentation recommends a local LLM and a local embedder such as Ollama when content is sensitive.",[88,91,94,97,100,103,106,109],{"id":89,"title":90},"what-it-is","What CrewAI is",{"id":92,"title":93},"how-it-works","How a run works",{"id":95,"title":96},"getting-started","Getting started",{"id":98,"title":99},"memory-and-knowledge","Memory and knowledge",{"id":101,"title":102},"running-it-in-production","Running it in production",{"id":104,"title":105},"where-it-shingles","Where it shingle",{"id":107,"title":108},"verdict","Verdict",{"id":110,"title":111},"sources","Sources",[113,117,120,123,126,142,143,174,183,186,187,227,229,239,254,255,266,276,279,301,302,305,309,312,354,357,360,363,366,396,397,400,437,440,441,444,457,462,463],{"type":114,"content":115},"paragraph",[116],"CrewAI is an MIT-licensed Python framework for multi-agent systems, and in this category it is the one that is immediately usable: an agent gets a role, a goal and a backstory, a task gets an expected output, and a crew runs the two together in a few lines of code. The verdict is that the framework is well made, unusually well documented and quietly expensive. Every structural feature it adds on top of a plain prompt is implemented as an extra model call, and a production bill is made of exactly those calls.",{"type":114,"content":118},[119],"It occupies the same layer as LangGraph, AutoGen and Pydantic AI and competes on ergonomics rather than on control. The vendor splits the offer in two: the library on PyPI, which is free and unmetered, and CrewAI AMP, a hosted control plane with a visual editor, tracing and governance that is sold by quote. Everything below is about the library, because that is the part you install.",{"type":121,"level":122,"id":89,"text":90},"heading",2,{"type":114,"content":124},[125],"The library first appeared on PyPI in December 2023 and is developed in the open by CrewAI Inc. Version 1.15.23 was published on 28 September 2026, requires Python 3.10 to 3.13, and the repository carries 59,413 stars and 8,655 forks. It installs as a single wheel of about 1.2 MB, with optional extras for tools, LiteLLM, mem0, Qdrant, Bedrock, Anthropic and A2A support, so the base install stays small.",{"type":127,"ordered":128,"items":129},"list",false,[130,132,134,136,138,140],[131],"Licence MIT, no run quota, and no runtime dependency on LangChain or any other agent framework.",[133],"Two layers: flows, which own state and execution order, and crews, groups of agents that execute tasks.",[135],"An agent is a prompt with attributes: role, goal and backstory, plus an optional tool list, an LLM and a memory scope.",[137],"Processes are sequential or hierarchical. The hierarchical one needs a manager LLM and delegates work as model calls.",[139],"Results can be text, JSON or a Pydantic model, which is the clean way to hand output back to application code.",[141],"MCP servers attach to agents through crewai-tools over stdio, SSE or streamable HTTP.",{"type":121,"level":122,"id":92,"text":93},{"type":114,"content":144},[145,146,150,151,154,155,158,159,162,163,166,167,170,171,173],"A flow is a class of methods wired by decorators. ",{"tag":147,"children":148},"code",[149],"@start()"," marks the entry points, ",{"tag":147,"children":152},[153],"@listen()"," binds a method to another method's result, ",{"tag":147,"children":156},[157],"@router()"," sends execution down one of several branches, and ",{"tag":147,"children":160},[161],"and_"," and ",{"tag":147,"children":164},[165],"or_"," combine conditions. The state object is a Pydantic model, so the shape of the data moving between steps is declared rather than inferred, and ",{"tag":147,"children":168},[169],"flow.plot()"," renders the graph. When several ",{"tag":147,"children":172},[149]," methods are satisfied at once, they run in parallel.",{"type":175,"attrs":176,"inner":180,"caption":181},"diagram",{"viewBox":177,"role":178,"aria-labelledby":179},"0 0 720 296","img","d1-crew-t d1-crew-d","\u003Ctitle id=\"d1-crew-t\">Where the model calls go\u003C\u002Ftitle>\u003Cdesc id=\"d1-crew-d\">Four boxes in a row: a flow that owns state and order, a crew that owns tasks and process, an agent built from role, goal and backstory, and the language model behind the provider API. An arrow returns the crew output into the flow state. A second row holds memory, which saves and recalls, and tools such as MCP servers, APIs and code.\u003C\u002Fdesc>\u003Ctext x=\"20\" y=\"26\" class=\"d-title\">Where the model calls go\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"26\" text-anchor=\"end\" class=\"d-label\">each box is a prompt the framework assembles\u003C\u002Ftext>\u003Crect x=\"20\" y=\"52\" width=\"155\" height=\"64\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"97.5\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">Flow\u003C\u002Ftext>\u003Ctext x=\"97.5\" y=\"101\" text-anchor=\"middle\" class=\"d-small\">state and order\u003C\u002Ftext>\u003Cpath d=\"M175 84 H213\" class=\"d-line\" \u002F>\u003Cpath d=\"M222 84 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"222\" y=\"52\" width=\"155\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"299.5\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">Crew\u003C\u002Ftext>\u003Ctext x=\"299.5\" y=\"101\" text-anchor=\"middle\" class=\"d-small\">tasks and process\u003C\u002Ftext>\u003Cpath d=\"M377 84 H415\" class=\"d-line\" \u002F>\u003Cpath d=\"M424 84 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"424\" y=\"52\" width=\"155\" height=\"64\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"501.5\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">Agent\u003C\u002Ftext>\u003Ctext x=\"501.5\" y=\"101\" text-anchor=\"middle\" class=\"d-small\">role, goal, story\u003C\u002Ftext>\u003Cpath d=\"M579 84 H617\" class=\"d-line-accent\" \u002F>\u003Cpath d=\"M626 84 l-9 -5 v10 z\" class=\"d-head-accent\" \u002F>\u003Crect x=\"626\" y=\"52\" width=\"74\" height=\"64\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"663\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">LLM\u003C\u002Ftext>\u003Ctext x=\"663\" y=\"101\" text-anchor=\"middle\" class=\"d-small\">API\u003C\u002Ftext>\u003Cpath d=\"M299.5 116 V138 H97.5 V120\" class=\"d-line d-dash\" \u002F>\u003Cpath d=\"M97.5 111 l-5 9 h10 z\" class=\"d-head\" \u002F>\u003Ctext x=\"360\" y=\"132\" class=\"d-label\">CrewOutput flows back into state\u003C\u002Ftext>\u003Cpath d=\"M663 116 V158 H299.5 V182\" class=\"d-line-accent\" \u002F>\u003Cpath d=\"M299.5 182 l-5 9 h10 z\" class=\"d-head-accent\" \u002F>\u003Crect x=\"222\" y=\"190\" width=\"155\" height=\"58\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"299.5\" y=\"215\" text-anchor=\"middle\" class=\"d-text\">Memory\u003C\u002Ftext>\u003Ctext x=\"299.5\" y=\"236\" text-anchor=\"middle\" class=\"d-small\">save and recall\u003C\u002Ftext>\u003Cpath d=\"M501.5 116 V182\" class=\"d-line-accent\" \u002F>\u003Cpath d=\"M501.5 182 l-5 9 h10 z\" class=\"d-head-accent\" \u002F>\u003Crect x=\"424\" y=\"190\" width=\"155\" height=\"58\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"501.5\" y=\"215\" text-anchor=\"middle\" class=\"d-text\">Tools\u003C\u002Ftext>\u003Ctext x=\"501.5\" y=\"236\" text-anchor=\"middle\" class=\"d-small\">MCP, APIs, code\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"278\" class=\"d-small\">Every hop is a model call: agent step, delegation, guardrail retry, memory analysis.\u003C\u002Ftext>",[182],"The pipeline is cheap and the framework is not: each box is one more prompt the model has to read, and the boxes below the line are pure overhead a plain script would not have.",{"type":114,"content":184},[185],"Inside a flow step, a crew assembles the prompt: each agent's role, goal and backstory is prepended to every task, the task description is interpolated, and the output of one task becomes context for the next. An agent runs for up to 20 iterations by default, retries twice on error and summarises messages to stay inside the context window. That is the mechanism to watch. With the defaults on, a four-task crew is four long prompts before anything is delegated, and a crew with memory adds an embedding call per recall plus a model call to analyse and consolidate what it stores.",{"type":121,"level":122,"id":95,"text":96},{"type":114,"content":188},[189,190,193,194,196,197,200,201,162,204,207,208,211,212,215,216,219,220,222,223,226],"The CLI is the quick way in. ",{"tag":147,"children":191},[192],"uv tool install crewai"," puts a ",{"tag":147,"children":195},[4]," binary on the path, ",{"tag":147,"children":198},[199],"crewai create crew \u003Cname>"," scaffolds a JSON-first project with ",{"tag":147,"children":202},[203],"agents\u002F*.jsonc",{"tag":147,"children":205},[206],"crew.jsonc",", and ",{"tag":147,"children":209},[210],"crewai create flow \u003Cname>"," scaffolds a flow project. ",{"tag":147,"children":213},[214],"crewai install"," resolves dependencies through uv, ",{"tag":147,"children":217},[218],"crewai run"," executes the entry point, and ",{"tag":147,"children":221},[19]," opens a terminal browser for the store. The flag ",{"tag":147,"children":224},[225],"--classic"," restores the older Python class plus YAML layout.",{"type":147,"code":228},"from crewai import Agent, Crew, Process, Task\nfrom crewai.flow import Flow, listen, start\nfrom pydantic import BaseModel\n\n\nclass ReportState(BaseModel):\n    topic: str = \"agent memory\"\n    brief: str = \"\"\n\n\nclass ReportFlow(Flow[ReportState]):\n    @start()\n    def pick_topic(self):\n        self.state.topic = \"agent memory\"\n\n    @listen(pick_topic)\n    def research(self):\n        analyst = Agent(\n            role=\"Research analyst\",\n            goal=f\"Collect verifiable facts about {self.state.topic}\",\n            backstory=\"You read primary sources and quote them.\",\n            llm=\"openai\u002Fgpt-4o-mini\",\n        )\n        task = Task(\n            description=\"Write a brief on {topic}.\",\n            expected_output=\"Five bullets, each with a source URL.\",\n            agent=analyst,\n        )\n        crew = Crew(agents=[analyst], tasks=[task], process=Process.sequential)\n        self.state.brief = crew.kickoff(inputs={\"topic\": self.state.topic}).raw\n\nReportFlow().kickoff()",{"type":114,"content":230},[231,232,162,235,238],"That runs at most two model calls on a normal path: one for the agent's reasoning and tool loop, one for the final answer. Add a second agent, a manager or memory and the count moves quickly, which is why ",{"tag":147,"children":233},[234],"crew.usage_metrics",{"tag":147,"children":236},[237],"flow.usage_metrics"," are the first two things to put behind a dashboard.",{"type":240,"variant":241,"title":242,"body":243},"callout","note","Telemetry is on by default",[244],[245,246,249,250,253],"Anonymous usage telemetry ships unless ",{"tag":147,"children":247},[248],"CREWAI_DISABLE_TELEMETRY"," is set: package and Python version, operating system, number of agents and tasks, process type, whether memory and delegation are enabled, the model, agent roles and tool names. Prompts, backstories and model responses stay out of it. The opposite switch is ",{"tag":147,"children":251},[252],"share_crew=True"," on a crew, which opts into task descriptions, backstories, context and output.",{"type":121,"level":122,"id":98,"text":99},{"type":114,"content":256},[257,258,261,262,265],"Memory has been reworked into a single ",{"tag":147,"children":259},[260],"Memory"," class. Records are vectors in LanceDB under ",{"tag":147,"children":263},[264],".crewai\u002Fmemory",", ranked by a composite of semantic similarity, recency with a 30-day half-life and an importance score that the model assigns when saving. Recall has two depths: shallow is a plain vector search at roughly 200 ms with no model call, deep analyses the query first and runs only when the query is longer than 200 characters. When memory is enabled, a crew extracts facts from every task output and recalls context before every task.",{"type":127,"ordered":128,"items":267},[268,270,272,274],[269],"Storage is LanceDB by default and local, and the backend is a protocol, so another vector store can be plugged in.",[271],"The default embedder is OpenAI text-embedding-3-large at 3,072 dimensions and the default analysis model is gpt-4o-mini. Both are configurable.",[273],"Knowledge sources are a separate mechanism: they land in ChromaDB collections with a default relevance cut-off of 0.35 and three documents per query.",[275],"Saves run on a background thread and recall waits for them, so nothing is lost at the end of a run, but the analysis still costs tokens.",{"type":114,"content":277},[278],"Memory is also the part to read before signing off on a data protection review. The documentation states plainly that record content is sent to the configured LLM for scope, category and importance analysis, so anything sensitive needs a local model on both sides, for the LLM and for the embedder.",{"type":240,"variant":280,"title":281,"body":282},"warn","Check the embedding dimensions",[283],[284,285,288,289,292,293,296,297,300],"The default memory embedder is ",{"tag":147,"children":286},[287],"text-embedding-3-large"," at 3,072 dimensions. A store written earlier with ",{"tag":147,"children":290},[291],"text-embedding-3-small"," or ",{"tag":147,"children":294},[295],"text-embedding-ada-002"," at 1,536 dimensions fails on read. The documented remedies are ",{"tag":147,"children":298},[299],"crewai reset-memories -m",", deleting the storage directory, or configuring the older model explicitly until the store is migrated.",{"type":121,"level":122,"id":101,"text":102},{"type":114,"content":303},[304],"The library moves quickly. Stable releases landed on 9, 16 and 28 September 2026 and dev pre-releases are published daily, so pinning is not optional for anything long-lived. The repository has 570 open issues, and the same distribution now carries both the open-source runtime and the client for the hosted platform, which is why a changelog entry can hold a SQLite connection fix next to a platform feature.",{"type":121,"level":306,"id":307,"text":308},3,"observability","Observability",{"type":114,"content":310},[311],"Built-in tracing deserves a second look. It is off by default and configured separately from telemetry, but the destination is CrewAI's own backend: it needs a free AMP account, an authenticated CLI, and on the first run the process asks whether the execution trace may be shared. Traces contain prompts, inputs and outputs, and the local buffer keeps up to 1,000 spans before the oldest are dropped. For self-hosted work the OpenTelemetry integrations are the better default, and the documentation ships first-class paths for Langfuse, Arize Phoenix, Braintrust, Datadog, MLflow, Opik, Patronus, Portkey, Weave and Galileo.",{"type":127,"ordered":128,"items":313},[314,320,329,341],[315,316,319],"Set ",{"tag":147,"children":317},[318],"CREWAI_DISABLE_TELEMETRY=1"," unless you have a reason to send anonymous usage data to the vendor.",[321,322,162,325,328],"First-run tracing asks for consent in the terminal and discards the buffer if nobody answers; ",{"tag":147,"children":323},[324],"crewai traces enable",{"tag":147,"children":326},[327],"crewai traces disable"," change that later.",[330,333,334,162,337,340],{"tag":147,"children":331},[332],"kickoff_async()"," only wraps the synchronous run in a thread. ",{"tag":147,"children":335},[336],"akickoff()",{"tag":147,"children":338},[339],"akickoff_for_each()"," are the native async paths and the ones to use under load.",[342,345,346,349,350,353],{"tag":147,"children":343},[344],"@persist"," writes flow state to a local SQLite database by default. ",{"tag":147,"children":347},[348],"restore_from_state_id"," forks a run from a stored snapshot, while ",{"tag":147,"children":351},[352],"kickoff(inputs={\"id\": ...})"," resumes the original.",{"type":121,"level":306,"id":355,"text":356},"guardrails","Guardrails",{"type":114,"content":358},[359],"Task guardrails come in two forms. A Python callable receives the task output and returns a verdict, while a plain string is turned into an LLM guardrail that judges the output with the agent's own model. Retries default to three, so a guardrail that never passes can triple the cost of a task before anything is escalated. Guardrails validate output; they are not a boundary around tool use, and a prompt injection in a tool result passes straight through them.",{"type":121,"level":306,"id":361,"text":362},"licence-and-cost","Licence and cost",{"type":114,"content":364},[365],"The licence is the easy part. CrewAI is MIT with no run quota, and the only cost the framework itself adds is the model traffic its own features generate. The paid product is CrewAI AMP: a free Basic plan with 50 workflow executions a month, and an Enterprise tier quoted case by case.",{"type":367,"head":368,"rows":375},"table",[369,371,373],[370],"What you run",[372],"Price",[374],"What is included",[376,383,389],[377,379,381],[378],"CrewAI OSS",[380],"Free",[382],"No execution cap. You pay for model calls, tools and your own infrastructure.",[384,386,387],[385],"CrewAI AMP Basic",[380],[388],"50 workflow executions a month, visual editor, GitHub sync, tracing and OpenTelemetry.",[390,392,394],[391],"CrewAI AMP Enterprise",[393],"Custom quote",[395],"SSO, RBAC, workload identity, PII redaction, own VPC or on-prem, 45-day onboarding.",{"type":121,"level":122,"id":104,"text":105},{"type":114,"content":398},[399],"The weaknesses are structural and worth stating before any comparison. Every layer of the abstraction is a prompt: role, goal and backstory are prepended to each task, so the context grows with the crew, and the framework's own defaults, twenty iterations, three guardrail retries and memory analysis on save and on recall, are billed separately. Delegation and the hierarchical manager are the worst offenders, because each hop is another model call whose only job is to decide who works next. Python is the only runtime, in a category where the surrounding application is often TypeScript. And outside the paid platform, debugging rests on log output, which is weaker than a graph runtime that can replay a failed node.",{"type":367,"head":401,"rows":410},[402,404,406,408],[403],"Framework",[405],"How work is wired",[407],"Cost per task",[409],"Debugging story",[411,419,428],[412,413,415,417],[24],[414],"Roles and tasks; a flow owns state and order",[416],"Highest: delegation, memory analysis and guardrail retries add model calls",[418],"AMP traces need an account; OpenTelemetry hooks for Langfuse, Phoenix, Braintrust, MLflow",[420,422,424,426],[421],"LangGraph",[423],"Explicit graph, typed state, checkpoints",[425],"Lowest: routing is plain Python",[427],"LangSmith traces, checkpoint replay from any node",[429,431,433,435],[430],"AutoGen",[432],"Conversational teams with patterns and termination conditions",[434],"High and open-ended unless turn limits are set",[436],"AgentChat logging; GraphFlow adds a directed graph",{"type":114,"content":438},[439],"LangGraph is the better tool for a fixed production pipeline with loops and checkpoints, and it wins on cost because routing is plain Python. AutoGen is the better tool for open-ended conversation. CrewAI wins on the part that matters when the system has to be handed to someone who is not an engineer: the vocabulary is a job description, and the JSONC or YAML configuration is readable. The vendor's own documentation includes a LangGraph-to-CrewAI migration guide and comparison notebooks, which is worth knowing before a contract is signed.",{"type":121,"level":122,"id":107,"text":108},{"type":114,"content":442},[443],"CrewAI is a good default for teams that want agent-shaped code without hand-wiring a graph, and a poor default wherever the token bill is the binding constraint. The framework is competent, its documentation is better than its competitors', and the flow layer earns its place on its own. The cost is that autonomy is expressed as model calls, and the framework is happy to make them on your behalf.",{"type":127,"ordered":445,"items":446},true,[447,449,451,453,455],[448],"Adopt it when the pipeline is mostly linear and the expensive part is one or two open-ended steps. Keep the crew small and let the flow hold the logic.",[450],"Adopt it when non-engineers have to read or edit the configuration, because a role, a goal and a YAML file are easier to review than a node graph.",[452],"Do not adopt it for a fixed, high-volume pipeline where every hop is a plain function call. The coordination overhead buys flexibility such a pipeline never uses.",[454],"Do not adopt it if you need checkpoint replay and per-node cost attribution on day one, without either paying for the platform or wiring OpenTelemetry yourself.",[456],"Measure before keeping it: put usage_metrics behind a dashboard in the first week and compare the crew against the same steps written as a plain flow.",{"type":240,"variant":280,"title":458,"body":459},"The cost of being helped",[460],[461],"A hierarchical crew with memory and LLM guardrails can spend more tokens deciding and remembering than on the work itself. That is the design, not a defect. Budget for it, or switch the features off.",{"type":121,"level":122,"id":110,"text":111},{"type":127,"ordered":445,"items":464},[465],[466,469,471,473,475,477,479,481,483],{"tag":467,"href":29,"children":468},"a",[28],{"tag":467,"href":32,"children":470},[31],{"tag":467,"href":35,"children":472},[34],{"tag":467,"href":38,"children":474},[37],{"tag":467,"href":41,"children":476},[40],{"tag":467,"href":44,"children":478},[43],{"tag":467,"href":47,"children":480},[46],{"tag":467,"href":50,"children":482},[49],{"tag":467,"href":53,"children":484},[52],[486,551,600,663],{"slug":487,"published":488,"minutes":489,"category":7,"tags":490,"keywords":495,"about":502,"sources":506,"cover":543,"og":544,"expertise":56,"locales":545,"lang":58,"title":546,"description":547,"coverAlt":548,"url":509,"pricing":549,"kind":550},"mcp-reference-servers","2026-09-25",9,[491,492,493,494],"MCP","Reference servers","Tool protocol","Server SDKs",[496,497,498,499,500,501],"mcp reference servers","modelcontextprotocol servers github","write an mcp server","mcp server examples","mcp server sdk","mcp server security",[503],{"name":504,"url":505},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",[507,510,513,516,519,522,525,528,531,534,537,540],{"title":508,"url":509},"MCP reference servers repository","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers",{"title":511,"url":512},"Repository README and server list","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\u002Fblob\u002Fmain\u002FREADME.md",{"title":514,"url":515},"Security policy","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\u002Fblob\u002Fmain\u002FSECURITY.md",{"title":517,"url":518},"Release process and trusted publishing","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\u002Fblob\u002Fmain\u002FRELEASING.md",{"title":520,"url":521},"Filesystem server README","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\u002Fblob\u002Fmain\u002Fsrc\u002Ffilesystem\u002FREADME.md",{"title":523,"url":524},"Everything server feature list","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers\u002Fblob\u002Fmain\u002Fsrc\u002Feverything\u002Fdocs\u002Ffeatures.md",{"title":526,"url":527},"MCP Registry","https:\u002F\u002Fregistry.modelcontextprotocol.io\u002F",{"title":529,"url":530},"Archived reference servers","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers-archived",{"title":532,"url":533},"Model Context Protocol documentation","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"title":535,"url":536},"TypeScript MCP SDK","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Ftypescript-sdk",{"title":538,"url":539},"Python MCP SDK","https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk",{"title":541,"url":542},"FastMCP on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Ffastmcp\u002F","\u002Fimages\u002Fblog\u002Fmcp-reference-servers\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmcp-reference-servers\u002Fog.jpg",[58,59,60],"MCP reference servers: what they demonstrate and what they omit","A review of modelcontextprotocol\u002Fservers: seven reference servers, what each one teaches, the SDK versions behind them and why none of them should reach production.","Seven reference servers fanning out from a single MCP client over stdio","MIT","Protocol tooling",{"slug":552,"published":553,"minutes":6,"category":7,"tags":554,"keywords":560,"about":568,"sources":575,"cover":592,"og":593,"expertise":56,"locales":594,"lang":58,"title":595,"description":596,"coverAlt":597,"url":598,"pricing":599,"kind":555},"aider","2026-09-23",[555,556,557,558,559],"Coding agent","Terminal","Git workflow","BYO key","Open source",[552,561,562,563,564,565,566,567],"aider vs claude code","aider polyglot benchmark","ai pair programming terminal","aider leaderboard","open source coding agent","aider architect mode","aider install",[569,572],{"name":570,"url":571},"Aider","https:\u002F\u002Faider.chat\u002F",{"name":573,"url":574},"Aider on GitHub","https:\u002F\u002Fgithub.com\u002FAider-AI\u002Faider",[576,578,581,584,587,589],{"title":577,"url":571},"Aider website",{"title":579,"url":580},"Aider LLM leaderboards","https:\u002F\u002Faider.chat\u002Fdocs\u002Fleaderboards\u002F",{"title":582,"url":583},"Aider linting and testing","https:\u002F\u002Faider.chat\u002Fdocs\u002Fusage\u002Flint-test.html",{"title":585,"url":586},"Aider token limits","https:\u002F\u002Faider.chat\u002Fdocs\u002Ftroubleshooting\u002Ftoken-limits.html",{"title":588,"url":574},"Aider repository on GitHub",{"title":590,"url":591},"aider-chat on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Faider-chat\u002F","\u002Fimages\u002Fblog\u002Faider\u002Fcover.webp","\u002Fimages\u002Fblog\u002Faider\u002Fog.jpg",[58,59,60],"Aider review: git-first pair programming in the terminal","A review of Aider 0.86.2, an Apache-2.0 terminal pair programmer whose benchmark ranks models honestly and whose release cadence has stopped.","Cover art for the Aider review: a terminal session turning a single request into a row of git commits","https:\u002F\u002Faider.chat","Free · BYO API key",{"slug":601,"published":602,"minutes":6,"category":7,"tags":603,"keywords":606,"about":615,"sources":625,"cover":656,"og":657,"expertise":56,"locales":658,"lang":58,"title":659,"description":660,"coverAlt":661,"url":628,"pricing":662,"kind":66},"openai-agents-sdk","2026-09-11",[604,605,356,491,11],"Agent runtime","Tracing",[607,608,609,610,611,612,613,614],"openai agents sdk","openai agents sdk vs langgraph","python agent framework comparison","openai agents sdk guardrails","agent run tracing tool calls","openai agents sdk human in the loop","openai-agents pypi","agents sdk vs responses api",[616,619,622],{"name":617,"url":618},"Model context protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_context_protocol",{"name":620,"url":621},"Software framework","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_framework",{"name":623,"url":624},"Agentic AI","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAgentic_AI",[626,629,632,635,638,641,644,647,650,653],{"title":627,"url":628},"OpenAI Agents SDK documentation: Intro, and Agents SDK or Responses API","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002F",{"title":630,"url":631},"OpenAI Agents SDK documentation: Running agents","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002Frunning_agents\u002F",{"title":633,"url":634},"OpenAI Agents SDK documentation: Guardrails","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002Fguardrails\u002F",{"title":636,"url":637},"OpenAI Agents SDK documentation: Human-in-the-loop","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002Fhuman_in_the_loop\u002F",{"title":639,"url":640},"OpenAI Agents SDK documentation: Tracing","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002Ftracing\u002F",{"title":642,"url":643},"OpenAI Agents SDK documentation: Configuration","https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-python\u002Fconfig\u002F",{"title":645,"url":646},"openai-agents 0.23.1 on PyPI, release history and licence","https:\u002F\u002Fpypi.org\u002Fproject\u002Fopenai-agents\u002F",{"title":648,"url":649},"OpenAI: The next evolution of the Agents SDK (15 April 2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fthe-next-evolution-of-the-agents-sdk\u002F",{"title":651,"url":652},"OpenAI API documentation: Agents, comparison of the three runtimes","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fagents",{"title":654,"url":655},"Arize: AI agent frameworks compared (1 October 2026)","https:\u002F\u002Farize.com\u002Fai-agents\u002Fagent-frameworks\u002F","\u002Fimages\u002Fblog\u002Fopenai-agents-sdk\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenai-agents-sdk\u002Fog.jpg",[58,59,60],"OpenAI Agents SDK: a small agent runtime with sharp edges","A review of the OpenAI Agents SDK: the runner loop, tracing, guardrails and approvals, plus what the release churn and the Responses-only features cost.","Diagram of the Agents SDK runner loop: input, agent, model call, final output, guardrails, and tool calls feeding back into the input","MIT · API pay per token",{"slug":664,"published":665,"minutes":489,"category":7,"tags":666,"keywords":671,"about":678,"sources":688,"cover":709,"og":710,"expertise":56,"locales":711,"lang":58,"title":712,"description":713,"coverAlt":714,"url":715,"pricing":716,"kind":555},"openhands","2026-09-09",[555,667,668,669,670],"Sandboxed execution","Automations","Self-hosted","MIT licence",[664,672,673,674,675,676,565,677],"openhands self-host","open hands coding agent","openhands vs claude code","agent canvas","openhands docker sandbox","openhands cloud pricing",[679,682,685],{"name":680,"url":681},"OpenHands","https:\u002F\u002Fwww.openhands.dev",{"name":683,"url":684},"OpenHands on GitHub","https:\u002F\u002Fgithub.com\u002FOpenHands\u002FOpenHands",{"name":686,"url":687},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",[689,691,694,697,700,703,706],{"title":690,"url":684},"OpenHands README",{"title":692,"url":693},"OpenHands licence (MIT)","https:\u002F\u002Fgithub.com\u002FOpenHands\u002FOpenHands\u002Fblob\u002Fmain\u002FLICENSE",{"title":695,"url":696},"Agent Canvas 1.25.0 release notes","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Fagent-canvas\u002Frelease-notes\u002Fv1.25.0.md",{"title":698,"url":699},"OpenHands sandbox overview","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Fsandboxes\u002Foverview.md",{"title":701,"url":702},"OpenHands quick start","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Finstallation",{"title":704,"url":705},"OpenHands pricing","https:\u002F\u002Fwww.openhands.dev\u002Fpricing",{"title":707,"url":708},"Introducing the OpenHands Index","https:\u002F\u002Fwww.openhands.dev\u002Fblog\u002Fintroducing-the-openhands-index","\u002Fimages\u002Fblog\u002Fopenhands\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenhands\u002Fog.jpg",[58,59,60],"OpenHands: the open-source coding agent you operate","OpenHands 1.25.0 is an MIT-licensed coding agent platform with a web canvas, a CLI, sandboxed execution and scheduled automations. A review of where it is strong and where it gets heavy.","Cover artwork for the OpenHands review showing a loop from task to agent to sandboxed run and back","https:\u002F\u002Fgithub.com\u002FAll-Hands-AI\u002FOpenHands","Free · self-host",1791383549013]