CrewAI is a Python library for orchestrating role-based multi-agent "crews." Linchpin is an HTTP-API agent runtime with per-session Docker sandboxes. Library vs platform; both can live in the same stack.
CrewAI is a Python library for multi-agent orchestration. You define agents with roles, goals, and backstories, give them tools, then compose them into a crew that runs through tasks sequentially or hierarchically. CrewAI is imported into your own Python service. Open source (MIT). There is also a hosted CrewAI offering for managed runs.
Linchpin is an open-source managed-agent runtime. Three services and Postgres on a single VM. Agents, environments, and sessions are first-class resources behind an HTTP API. Every session runs in its own Docker container with controlled networking. Output streams over SSE from an append-only event log. Language-agnostic; CrewAI runs in Python, but Linchpin's API is callable from any language. Apache-2.0.
Frame: CrewAI is code you import. Linchpin is infrastructure you deploy. They solve different problems.
| Dimension | Linchpin | CrewAI |
|---|---|---|
| What it is | Managed-agent runtime (platform) | Multi-agent orchestration library |
| License | Apache-2.0 | MIT |
| Language | HTTP API; runtime in Python | Python library |
| Deployment shape | docker compose up on a VM | Imported into your own Python app |
| Multi-agent | Run multiple sessions; orchestrate from your code | First-class crew abstraction with role / goal / backstory |
| Sandbox | Per-session Docker container + network policy | None by default; runs in your Python process |
| Event log | Append-only Postgres, cursor + SSE replay | Logs / traces depending on integration |
| Model providers | OpenRouter + Ollama | Broad (any langchain-compatible LLM) |
| Tools | Built-in 8 + MCP via stdio + HTTP endpoints | Library of built-in tools + custom Python functions |
| UX out of the box | Session console | None; you build it |
| Hosted SaaS option | No (self-host only) | Yes (CrewAI Enterprise) |
bash + file tools is the right primitive for agents that do, not just orchestrate text.A reasonable architecture: define crews in CrewAI inside a Python service, and call Linchpin's HTTP API when an individual agent needs a sandboxed environment (run a shell, edit files, do anything that should not run in your service process). Linchpin becomes the "sandboxed task" primitive your crew dispatches to.
Or skip CrewAI: Linchpin sessions are independent. Run several at once, post events between them at the application layer, and you have multi-agent without the abstraction overhead. The right choice depends on whether the crew metaphor maps onto your problem.
If you are thinking "agents that talk to each other," CrewAI is closer to the shape. If you are thinking "agents that do things, in containers, audited" — Linchpin is the right shape. They are complements more than competitors.