CrewAI made multi-agent setups feel approachable. You write a crew, a few agents, and the tasks that bind them. The structure is good but it stays trapped inside Python and the wiring still costs lines. Digitorn keeps the multi-agent shape and turns it into nested YAML.
CrewAI works best for one-off scripts. The minute you need scheduled runs, webhooks, real credentials, or a UI, you write the surrounding plumbing yourself. Digitorn gives you the same coordinator-and-specialists model with channels, cron, the Hub registry, credential vault, and a streaming UI already wired in.
Every CrewAI primitive maps to a Digitorn equivalent. Where the mapping is not 1-to-1, the notes call out what changed.
Real apps in both stacks. The Digitorn version is what you would commit to a repo, no scaffolding hidden offscreen.
1from crewai import Agent, Task, Crew, Process2from langchain_anthropic import ChatAnthropic34llm = ChatAnthropic(model="claude-haiku-4-5", api_key=API_KEY)56researcher = Agent(7 role="Researcher", goal="Find facts about the topic",8 backstory="...", llm=llm, tools=[search_tool],9)10writer = Agent(11 role="Writer", goal="Compose a clear summary",12 backstory="...", llm=llm,13)1415task1 = Task(description="Research {topic}", agent=researcher)16task2 = Task(description="Write summary based on research", agent=writer)1718crew = Crew(agents=[researcher, writer], tasks=[task1, task2],19 process=Process.sequential)2021crew.kickoff(inputs={"topic": "agentic frameworks"})1modules:2 web: {}34agents:5 - id: lead6 role: coordinator7 modules: [{agent_spawn: [Agent]}]8 brain: { model: claude-sonnet-4-6, credential: anthropic_main }9 system_prompt: |10 You coordinate research. Call Agent(specialist='researcher', ...) first,11 wait for it, then call Agent(specialist='writer', ...) with the findings.1213 - id: researcher14 modules: [{web: [search, fetch]}]15 brain: { model: claude-haiku-4-5, credential: anthropic_main }16 system_prompt: "Find sources and return facts with citations."1718 - id: writer19 modules: []20 brain: { model: claude-haiku-4-5, credential: anthropic_main }21 system_prompt: "Compose a clear summary from the research output."The crew, agent, and task triple collapses into a list of agents. The lead's prompt explains the dispatch order, no Process enum needed. Switching to parallel research is a single sentence change.
Subtle differences that look the same on paper and break on first run. Read these before you start porting.
A Digitorn specialist is just an agent block whose modules are exposed only when the coordinator calls Agent. There is no separate Crew object to instantiate.
Where CrewAI uses Process.sequential or Process.hierarchical, you simply describe the dispatch logic in the coordinator's system prompt. The runtime does not enforce a process, the prompt does.
Agent calls return immediately with an agent_id unless you add wait=true. CrewAI is sequential by default, Digitorn is concurrent by default, plan accordingly.
# 1. install runtime
curl -sSL https://digitorn.ai/install | sh
# 2. copy the YAML above into a file
mkdir -p ~/.digitorn/apps/from-crewai
# paste the YAML into app.yaml
# 3. deploy and chat
digitorn deploy from-crewai
digitorn dev chat from-crewaiEngineering notes from the Digitorn team. No marketing, no launch announcements, no "10 prompts that will change your life". Just the things we write that we'd want to read.