{"id":"84841c7c-1724-4804-9220-4487c5c5549e","entityType":"agent","slug":"crewai-tharunsridhar-agent-framework-showdown","name":"agent-framework-showdown","canonicalUrl":"https://www.xpersona.co/agent/crewai-tharunsridhar-agent-framework-showdown","canonicalPath":"/agent/crewai-tharunsridhar-agent-framework-showdown","generatedAt":"2026-10-09T22:08:06.212Z","source":"GITHUB_REPOS","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":null},"description":"The same researcher-writer agent task implemented three different ways ->CrewAI (Process.sequential crew), ->AutoGen (RoundRobinGroupChat), ->and BeeAI (ReActAgent) run side by side to compare orchestration styles across today's leading multi-agent frameworks. Framework Showdown The same two-agent idea — a **researcher** finds facts, a **writer** turns them into a pitch — built three different ways, plus a fourth agent style that doesn't fit that mold at all: | File | Framework | Orchestration style | |---|---|---| | crewai_runner.py | CrewAI | Process.sequential crew: two Tasks, the second declares context=[research_task] | | autogen_lab.py | AutoGen | RoundRobinGroupChat","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.","installCommand":null,"sourceUrl":"https://github.com/tharunsridhar/agent-framework-showdown","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/tharunsridhar/agent-framework-showdown","kind":"source"}],"safetyScore":66,"overallRank":29.6,"popularityScore":0,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"The same researcher-writer agent task implemented three different ways ->CrewAI (Process.sequential crew), ->AutoGen (RoundRobinGroupChat), ->and BeeAI (ReActAg"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"crewai","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"multi-agent","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"}},"adoption":{"evidence":{"source":"no-adoption-signals","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":"No source adoption metrics were available."},"stars":0,"forks":0,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":null},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:48:04.883Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T12:48:04.890Z","lastCrawledAt":"2026-10-09T12:48:04.883Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-16T12:48:04.883Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":null,"setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"GITHUB_REPOS","generatedAt":"2026-10-09T22:08:06.211Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-tharunsridhar-agent-framework-showdown/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"high","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":null},"readme":"# Framework Showdown\n\nThe same two-agent idea — a **researcher** finds facts, a **writer** turns them into a pitch —\nbuilt three different ways, plus a fourth agent style that doesn't fit that mold at all:\n\n| File | Framework | Orchestration style |\n|---|---|---|\n| `crewai_runner.py` | CrewAI | `Process.sequential` crew: two `Task`s, the second declares `context=[research_task]` |\n| `autogen_lab.py` | AutoGen | `RoundRobinGroupChat`: two agents take turns seeing the full conversation, until `TERMINATE` |\n| `beeai_runner.py` | BeeAI | `ReActAgent`: one agent, one tool, decides for itself whether the question needs it |\n\n(LangGraph, the fourth framework in this course folder, already has its own project —\nsee `Projects/7-Task-Manager-Agent`.)\n\n## Why three Python interpreters\n\nCrewAI pins `pydantic<2.13`; BeeAI needs `pydantic-core>=2.46.5` (which pulls in\n`pydantic>=2.13`) — they can't share a venv. Neither installs cleanly on this machine's\ndefault/global Python 3.14 either (CrewAI's `tiktoken`/`regex` chain wants a Rust compiler\nto build from source there; BeeAI *imports* fine on 3.14 but hits a\n`TypeAdapter ... is not fully defined` pydantic error the moment it actually builds a\n`ChatModel`). AutoGen has none of these issues and runs fine on 3.14.\n\nSo `app.py` (FastAPI, on the default interpreter) calls AutoGen directly in-process, and\nshells out to two separate Python 3.11 venvs as subprocesses for CrewAI and BeeAI:\n\n```\napp.py (Python 3.14, FastAPI)\n ├─ autogen_lab.py        -> in-process, same interpreter\n ├─ subprocess: C:\\v8\\crewai\\Scripts\\python.exe crewai_runner.py '{\"topic\": \"...\"}'\n └─ subprocess: C:\\v8\\beeai\\Scripts\\python.exe  beeai_runner.py  '{\"question\": \"...\"}'\n```\n\nEach runner script prints exactly one line of JSON to stdout and nothing else (both are\ncalled with `verbose=False`); `app.py` parses that line as the response. If your venvs live\nsomewhere else, point `CREWAI_VENV_PYTHON` / `BEEAI_VENV_PYTHON` env vars at their\n`python.exe` instead of editing the code.\n\n## Setting up the two venvs\n\n```bash\npy -3.11 -m venv C:\\v8\\crewai\nC:\\v8\\crewai\\Scripts\\pip install crewai litellm python-dotenv\n\npy -3.11 -m venv C:\\v8\\beeai\nC:\\v8\\beeai\\Scripts\\pip install beeai-framework python-dotenv\n```\n\nUse a short venv path (not a deeply nested temp directory) — `pip install crewai[litellm]`\nhits a Windows `OSError` on very long asset paths inside litellm's guardrails folder unless\nlong-path support is enabled.\n\n## Run it\n\nNeeds the two venvs above, plus a `.env` file in this folder with `GROQ_API_KEY`\nset (copy `.env.example` and fill it in — both subprocesses inherit it from\n`app.py`'s environment):\n\n```bash\npip install -r requirements.txt\npython -m uvicorn app:app --reload --port 8008\n```\n\nThen open http://localhost:8008. Interactive API docs (Swagger UI) are at `/docs`.\n\n## Test it\n\n```bash\npip install -r requirements.txt\npython -m pytest test_showdown.py -v\n```\n\nThe tests check request validation and that the venv wiring is in place — they don't call\nGroq, so they need no API key. Trying the three agents live in the browser is the only way\nto see the actual model output.\n","readmeExcerpt":"Framework Showdown The same two-agent idea — a **researcher** finds facts, a **writer** turns them into a pitch — built three different ways, plus a fourth agent style that doesn't fit that mold at all: | File | Framework | Orchestration style | |---|---|---| | crewai_runner.py | CrewAI | Process.sequential crew: two Tasks, the second declares context=[research_task] | | autogen_lab.py | AutoGen | RoundRobinGroupChat","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"app.py (Python 3.14, FastAPI)\n ├─ autogen_lab.py        -> in-process, same interpreter\n ├─ subprocess: C:\\v8\\crewai\\Scripts\\python.exe crewai_runner.py '{\"topic\": \"...\"}'\n └─ subprocess: C:\\v8\\beeai\\Scripts\\python.exe  beeai_runner.py  '{\"question\": \"...\"}'"},{"language":"bash","snippet":"py -3.11 -m venv C:\\v8\\crewai\nC:\\v8\\crewai\\Scripts\\pip install crewai litellm python-dotenv\n\npy -3.11 -m venv C:\\v8\\beeai\nC:\\v8\\beeai\\Scripts\\pip install beeai-framework python-dotenv"},{"language":"bash","snippet":"pip install -r requirements.txt\npython -m uvicorn app:app --reload --port 8008"},{"language":"bash","snippet":"pip install -r requirements.txt\npython -m pytest test_showdown.py -v"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB REPOS","editorialOverview":"The same researcher-writer agent task implemented three different ways ->CrewAI (Process.sequential crew), ->AutoGen (RoundRobinGroupChat), ->and BeeAI (ReActAgent) run side by side to compare orchestration styles across today's leading multi-agent frameworks. Framework Showdown The same two-agent idea — a **researcher** finds facts, a **writer** turns them into a pitch — built three different ways, plus a fourth agent style that doesn't fit that mold at all: | File | Framework | Orchestration style | |---|---|---| | crewai_runner.py | CrewAI | Process.sequential crew: two Tasks, the second declares context=[research_task] | | autogen_lab.py | AutoGen | RoundRobinGroupChat","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":401,"uniquenessScore":64,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:48:04.890Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:08:06.212Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_repos","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}