n8n, CrewAI or LangGraph: which one fits how you build?
All three help you build AI agents and automations, but they start from different places. n8n is a visual workflow tool you can also write code in. CrewAI is a Python framework built around teams of role-based agents and event-driven Flows. LangGraph is a low-level library where you wire up the steps of an agent as a graph. We didn't run head-to-head tests, so we won't pick a winner. Everything below comes from each project's own docs and repos, read on October 15, 2026.
Not affiliated with or endorsed by n8n GmbH, crewAI, Inc. or LangChain. Licenses and features change. Check each project's repo and docs before you build on it.
At a glance
| n8n | CrewAI | LangGraph | |
|---|---|---|---|
| How it describes itself | "Fair-code platform to build and deploy AI agents and workflows" | "an open-source Python framework ... for building production-ready multi-agent workflows" | "a low-level orchestration framework for building, managing, and deploying long-running, stateful agents" |
| How you build | Visual canvas, plus JavaScript, Python and npm packages | Python: Crews (role-based agents) and Flows (event-driven steps) | Code: nodes and edges in a graph (Python or JS) |
| Where it runs | Self-hosted or n8n's cloud | Your own Python environment | Your own Python or JS environment |
| License, as written | "Sustainable Use License"; ".ee" files need an "n8n Enterprise License" | MIT license text (GitHub lists it as MIT) | "MIT License" (Python), "The MIT License" (JS) |
n8n: if you like to see the flow
n8n's README calls it a "Fair-code platform to build and deploy AI agents and workflows" that lets you "Combine a visual canvas with custom code, run it self-hosted or in the cloud." When you need more than boxes and arrows, it says you can "Combine visual building with JavaScript, Python, and npm packages."
It may fit you if your agent is mostly glue between apps and you want to see each step on a canvas.
About the license: n8n is not MIT-licensed. Its LICENSE file says code is "available under the 'Sustainable Use License'", and that files with ".ee." in their name or ".ee" in their folder name "are NOT licensed under the Sustainable Use License". For those, "you must hold a valid n8n Enterprise License". The README calls this "fair-code" and "Source Available". Read the license before you build a product on it.
CrewAI: if you think in roles and teams
CrewAI's README calls it "an open-source Python framework with high-level abstractions and low-level APIs for building production-ready multi-agent workflows." It offers two building blocks: "autonomous agent collaboration through Crews and precise, event-driven control through Flows."
The docs say "Flows allow you to create structured, event-driven workflows", and that they "manage state, and control the flow of execution". A Flow step can be plain Python, so you can test the wiring without calling a model (see the example below).
It may fit you if you picture your problem as a few agents with jobs, like a researcher and a writer, working together.
About the license: CrewAI's LICENSE file is the MIT license text, starting "Copyright (c) 2025 crewAI, Inc." and "Permission is hereby granted, free of charge". GitHub lists it as MIT.
LangGraph: if you want control of every step
LangGraph's README calls it "a low-level orchestration framework for building, managing, and deploying long-running, stateful agents." It lists "Durable execution", where agents "persist through failures", and "Human-in-the-loop", so you can inspect and change "agent state at any point during execution."
It may fit you if you want to decide exactly which step runs next, pause for a person to approve, and resume later. It's a library, so expect to write more code yourself.
About the license: The Python repo's LICENSE says "MIT License" and the JS repo's says "The MIT License".
A tiny example you can run
Both examples below do the same thing: tidy some text, then flag it if it says "best". Neither calls an AI model, so you need no API key. We ran both on October 15, 2026 and their tests passed (LangGraph 1.2.15, CrewAI 1.15.28). We didn't build an n8n example.
LangGraph (pip install langgraph):
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
class State(TypedDict):
text: str
ok: bool
def draft(state: State) -> dict:
return {"text": state["text"].strip()}
def check(state: State) -> dict:
return {"ok": "best" not in state["text"].lower()}
builder = StateGraph(State)
builder.add_node("draft", draft)
builder.add_node("check", check)
builder.add_edge(START, "draft")
builder.add_edge("draft", "check")
builder.add_edge("check", END)
graph = builder.compile()
print(graph.invoke({"text": " which one fits how you build ", "ok": False}))
CrewAI Flow (pip install crewai):
from crewai.flow.flow import Flow, listen, start
class CheckFlow(Flow):
@start()
def draft(self):
self.state["text"] = " which one fits how you build ".strip()
return self.state["text"]
@listen(draft)
def check(self, text):
return "best" not in text.lower()
print(CheckFlow().kickoff())
Notice the difference in feel: in LangGraph you add nodes and edges yourself, and in a CrewAI Flow the @listen decorator says what runs after what.
How to choose
- You want a canvas and lots of ready-made app connections: look at n8n, and read its license first.
- You think of the job as agents with roles: look at CrewAI's Crews, with Flows for the fixed steps.
- You want to control state, retries and human approval step by step: look at LangGraph.
- Still unsure? Build the same small workflow in two of them, like the example above, and keep the one that reads more clearly to you.
A common mistake is to pick by popularity. Pick by how you like to build, and check the license against what you plan to ship.
Our FiveM script pack is coming soon.
Not affiliated with or endorsed by n8n GmbH, crewAI, Inc. or LangChain. Licenses and features change. Check each project's repo and docs before you build on it.