Substructure vs. CrewAI for AI agents

Checked August 7, 2026

CrewAI is the most approachable multi-agent framework in Python. You give each agent a role, a goal, and a backstory, hand out tasks, and a crew works through them sequentially or under a manager agent. It is MIT-licensed, it has a huge community, and the paid platform, CrewAI AMP, adds a no-code studio and managed deployments. For "a team of agents produces a deliverable," the ergonomics are genuinely nice.

Substructure is a different shape. It is an engine that runs agents your whole team talks to. You describe an agent in one file, and the engine runs it in Slack, authorizes its MCP servers, keeps its history, and streams its output. The file is a default agent, and your webhook can override every single step of its loop when you want control.

The short answer

Pick CrewAI when your problem looks like a pipeline: research this, draft that, review it, ship the result, with agents playing roles. Pick Substructure when your problem looks like a teammate: something people mention in a channel all day, that holds context in threads, uses your systems through MCP, and asks a person before doing anything scary. Those are different products, and it is worth being honest that they only partly overlap. What they share is the question of effort, and there Substructure's answer is unusual: the default agent runs in minutes with no code at all, and full customization of the loop is one webhook away, because your agent logic is just a function the engine calls.

What you write

A CrewAI agent is Python. Roles, tasks, and processes are classes and decorators in your app, and the newer Flows layer gives you event-driven control on top. Python 3.10 to 3.13, in your process, deployed and scaled by you, or deployed on AMP.

A Substructure agent is a file:

substructure.toml
[agent.oncall]
llm = "openrouter"
model = "moonshotai/kimi-k3"
system = "You are the on-call assistant."
mcp = [{ id = "sentry", tools = { read_only = true } }]

[slack]
mentions = "oncall"

Run subs apply and it answers in Slack threads. Then, when you want your own logic, add a worker URL. The engine sends every decision in the loop to that endpoint as JSON, and you can accept the step, rewrite the prompt, swap the model, or run the tool inside your own system. Every single step is overridable, in any language that serves HTTP, and that is more loop control than most agent SDKs expose. Notice what your code is in this model: a stateless function. State arrives with each request, the decision goes back, the engine persists the rest. There is no process to keep alive and no state store to manage, which is most of what makes agent code hard. Sub-agents are a config line too, so the crew-of-specialists pattern is available when you want it.

Durability is table stakes. Compare the defaults.

Neither product should win on "it doesn't lose work," but the defaults differ. CrewAI's durability is opt-in: Flows persist state with a @persist decorator, and the newer checkpointing feature is off by default, snapshots on task boundaries, and resumes when your code asks it to. In Substructure, saving every step before it runs and resuming after a crash is just how the engine executes. There is no flag to remember, because it is not a feature. It is the execution model.

Human in the loop, Slack, and clients

CrewAI's open-source human input is a blocking console prompt; webhook-based approval belongs to the paid platform. Slack, likewise, is a platform trigger: a slash command kicks off a deployed crew. Conversational Slack agents are not the product's shape. For browser UIs there is an AG-UI adapter package you assemble around your own FastAPI endpoint.

In Substructure, human approval is an engine feature that works in Slack, Slack is the native surface with threads as sessions, and AG-UI is the native event stream. These are the parts you would otherwise build, and they are the point of the product.

Source and pricing

Both cores are open source, MIT on their side, and Substructure's self-hosted engine is the full product: one Rust binary, SQLite, no license key. On the hosted side, CrewAI's pricing is a free tier of 50 executions a month and then a custom-quoted Enterprise plan, with nothing in between. Substructure is one flat price you can read on the page, you bring your own LLM key, and there are no per-execution charges.

Where CrewAI is the right call

The role, goal, and backstory vocabulary is the easiest on-ramp to multi-agent thinking anywhere, and hierarchical crews give you manager-delegation for free. Crew Studio turns a prompt into a working crew without code, the templates and courses are extensive, and the community is one of the largest in the space. For batch-style multi-agent pipelines, especially in a Python shop, CrewAI is a fine choice.

But if what you want is an agent your team uses all day, in Slack, with the loop yours to override when it matters, that is Substructure. The quick start takes about five minutes.