PraisonAI

Framework · Last verified 2026-09-30

TL;DR

PraisonAI is an MIT-licensed agent framework maintained by Mervin Praison, with a Python core SDK (praisonaiagents), a CLI and a JavaScript SDK. It runs agent teams sequentially or under a manager, supports handoffs, MCP, A2A and AG-UI, and can call Claude Code or Codex. It suits developers who want many features in one package.

Key facts

PraisonAI key facts. Data as of 2026-09-30.
Type Framework
Languages / SDKs Python, TypeScript
License MIT
Pricing model Open source, free
Orchestration pattern Crew / roles
GitHub stars 9,111 (as of 2026-09-30)
GitHub forks 1,459
Last push 2026-09-30
Latest release v4.7.11
Repository MervinPraison/PraisonAI
Website praison.ai
Documentation praison.ai
Last verified 2026-09-30

Key features

  • AgentTeam runs agents on Task objects either sequentially (each task gets the previous output) or hierarchically, where a manager LLM assigns tasks and collects reports. (source)
  • AgentFlow describes workflows as steps with route(), parallel() and repeat(); the same graph can be written in YAML. (source)
  • Handoffs pass a conversation to a specialist agent, with filters such as keeping only the last N messages or removing tools. (source)
  • MCP() attaches MCP server tools over stdio, Streamable HTTP, WebSocket or SSE. (source)
  • Agents can be published as A2A servers (agent card plus JSON-RPC) and can call remote A2A agents with A2AClient. (source)
  • The AGUI class exposes an agent or team as an AG-UI streaming endpoint for CopilotKit and other AG-UI frontends. (source)
  • Claude Code, Gemini CLI, Codex CLI and Cursor CLI can be wrapped as agent tools or selected from the praisonai CLI with --external-agent. (source)
  • Risky tool calls can wait for human approval routed to Slack, Discord, Telegram, a webhook or a local dashboard. (source)

Architecture and orchestration pattern

Pattern: Crew / roles

The core unit is an Agent (instructions or role/goal, an LLM, tools). For teams, AgentTeam takes agents plus Task objects: with process="sequential" (the default) tasks run in order and each receives the previous output; with process="hierarchical" a manager_llm decides which agent handles which task and gathers the results, retrying manager parse failures up to three times.

AgentFlow is a separate class for explicit workflows: a list of steps where route() branches on a classifier result, parallel() fans out and joins, and repeat() loops an agent until a condition holds. Agents can also hand a conversation to another agent through handoffs=[...], optionally filtering what history the receiver sees.

State and memory are configured per agent: memory={...} with a user_id keeps memory across runs, a db(...) entry persists messages, runs and traces to databases such as PostgreSQL or SQLite, and context="summarize" compacts the window before it overflows. Loop limits (max_iter, budget caps) and doom-loop detection bound each run, and tools_run_on= can move shell, file and code tools into a sandbox such as Docker or E2B.

Human in the loop

Setting approval=True on an agent makes it pause before risky tools run; the approval docs show routing these requests to Slack, Discord, Telegram, a webhook or a local dashboard, and the CLI exposes the same choice with --approval slack and similar flags. Plan approval for planning=True is a separate mechanism, and a SQLite-backed durable approval store keeps pending bot approvals across restarts. In autonomous runs, completion_reason can come back as needs_help, handing control back to the caller.

Harnesses it can drive

Protocols

MCP, A2A and AG-UI support for PraisonAI. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
Client: MCP() loads tools from MCP servers over stdio, Streamable HTTP, WebSocket and SSE in the Python SDK; the docs index also has an MCP Server CLI page.
A2A Yes evidence
checked 2026-09-30
Server and client: agents are published as A2A servers with an agent card over JSON-RPC 2.0, and A2AClient calls remote A2A agents.
AG-UI Yes evidence
checked 2026-09-30
Server: the AGUI class mounts a FastAPI router that streams an agent or team over the AG-UI protocol for CopilotKit-style frontends. PraisonAI is not in the AG-UI README integration list; this is the project's own docs.

Best for

  • Coding workflows that hand work to Claude Code, Codex CLI, Gemini CLI or Cursor CLI from a PraisonAI agent.
  • Chat support bots on Telegram, Discord or Slack with approvals and memory, one of the README's listed use cases.
  • Running agents on local models through the ollama/ model prefix.
  • Teams that want matching Python and TypeScript SDKs from the same project.
  • Projects that need MCP, A2A and AG-UI endpoints without adding separate adapter libraries.

Not for

  • Teams that want a small, minimal library; the project spans several packages (SDK, CLI, bots, code, train, browser).
  • Code that must match README snippets exactly over time; APIs are renamed (Agents is now a deprecated alias of AgentTeam) and releases ship weekly.
  • JVM or .NET projects.

Quickstart

pip install praisonaiagents

Install not yet verified by this site. What this means

from praisonaiagents import Agent, AgentTeam, Task

# Uses OPENAI_API_KEY; pass llm="ollama/llama3.2" to an Agent for a local model.
researcher = Agent(name="Researcher", role="Researcher", goal="Collect key facts")
writer = Agent(name="Writer", role="Writer", goal="Write short, clear summaries")

research = Task(
    description="List three facts about the Rhine river.",
    expected_output="Three bullet points",
    agent=researcher,
)
summary = Task(
    description="Turn the facts into one short paragraph.",
    expected_output="One paragraph",
    agent=writer,
    context=[research],
)

team = AgentTeam(agents=[researcher, writer], tasks=[research, summary], process="sequential")
print(team.start())

Common pitfalls

  • praisonaiagents requires Python 3.10 or newer.
  • Package split: praisonaiagents is the SDK only, praisonai adds the CLI and extras, and praisonai-code is the CLI without gateway and bot integrations.
  • The default provider is OpenAI (OPENAI_API_KEY); local Ollama models need the ollama/ prefix in llm.
  • The README's multi-agent snippet imports Agents, which is now a deprecated alias of AgentTeam and emits a warning.
  • process="hierarchical" needs manager_llm.
  • External coding CLIs (Claude Code, Codex, Gemini CLI, Cursor CLI) must be installed and logged in separately; the Claude Code example uses skip_permissions=True, which skips that CLI's own permission prompts.

Official quickstart

Pros

  • Covers MCP, A2A and AG-UI in first-party code instead of separate community adapters. (source)
  • Human approval can be routed to chat platforms (Slack, Discord, Telegram) rather than only a terminal prompt. (source)
  • Several orchestration styles in one SDK: sequential and hierarchical teams plus routed, parallel and looping workflows. (source)
  • Documented persistence adapters for PostgreSQL, MySQL, SQLite, MongoDB, Redis and others. (source)
  • A TypeScript SDK and CLI are published on npm as praisonai alongside the Python packages. (source)

Cons

  • The README's multi-agent example still uses Agents, which the SDK now treats as a deprecated alias of AgentTeam. (source)
  • The TypeScript SDK accepts some options only for Python parity and does not act on them yet. (source)
  • An open issue reports that guardrails in the praisonai wrapper fail open on any error. (source)
  • An open issue reports that the core SDK's default chat history grows without bound. (source)
  • Very fast release cadence (eight tagged releases between 28 August and 29 September 2026), so pinning versions matters. (source)

Alternatives

FAQ

Does PraisonAI support MCP, A2A and AG-UI?

Yes, all three in its own docs: MCP() connects to MCP servers over stdio, HTTP, WebSocket or SSE; agents can be A2A servers and use A2AClient; and the AGUI class serves an agent over AG-UI for CopilotKit-style frontends.

Is PraisonAI free?

It is MIT licensed and no paid plan or pricing page was found on the project site. Model calls are billed by whichever provider you configure.

Which package should I install?

pip install praisonaiagents gives the Python SDK only; pip install praisonai adds the CLI and optional extras; npm install praisonai installs the TypeScript SDK.

Can PraisonAI drive Claude Code or Codex?

Yes. Integration classes wrap the Claude Code and Codex CLIs (plus Gemini CLI and Cursor CLI) as tools, and an Agent can use the claude CLI as its model backend. The CLIs must be installed separately.

How is a hierarchical AgentTeam different from a sequential one?

Sequential runs tasks in list order, passing each output forward. Hierarchical adds a manager LLM (manager_llm is required) that assigns tasks to agents and collects their reports.

Sources