PraisonAI: a five-layer agent stack with a managed runtime bolted on
PraisonAI 🦞 — Hire a 24/7 AI Workforce. Stop writing boilerplate and start shipping autonomous self-improving agents that research, plan, code, and execute tasks. Deployed in 5 lines of code with built-in memory, RAG, and support for 100+ LLMs.
At a glance
- What is it?
- PraisonAI packages prompt, context, tools, loop control and multi-agent orchestration into one Python SDK, then adds a managed deployment layer on top. The layering is the interesting part, and also the part that decides whether you want it.
- Who is it for?
- Adopt PraisonAI if you want a single Python dependency that already covers tool calling, memory, guardrails and multi-agent flow control, and you are willing to read the docs at docs.praison.ai to learn the ExecutionConfig and ContextPolicy surface. Do not adopt it if you need a stable API across minor versions, since the release cadence shown in the repository is roughly one version every three to four days.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- MervinPraison/PraisonAI9,336 ★ · +292
| Repository | 2026-09-10 | 2026-11-13 |
|---|---|---|
| MervinPraison/PraisonAI | 9k | 9.3k |
292 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The problem PraisonAI is aimed at
Building an agent that does more than answer one question means assembling several separate concerns: a prompt, a way to get the right text into the context window, tools the model can call, a stopping rule, and some structure for when more than one agent is involved. The README states the pitch directly: the project claims that most frameworks hand you one or two layers and leave the rest as homework. PraisonAI's answer is to ship all five layers in one Python package, plus a managed layer that decides where the agent runs. The intended audience is a Python developer who already knows which LLM they want to call and does not want to write the orchestration scaffolding around it.
The five-layer stack and what each layer actually controls
The README's diagram nests five layers, each wrapping the one inside it, with the stated purpose that when an agent misbehaves the layer tells you where to look. Layer 1, prompt, is covered by the instructions parameter plus role, goal, backstory, output and templates. Layer 2, context, is memory, knowledge, context, and a ContextPolicy for handoffs. Layer 3, harness, is tools, MCP(), guardrails, approval, hooks and sandbox. Layer 4, loop, is execution=ExecutionConfig(...), reflection, autonomy, and doom-loop detection. Layer 5, graph, is AgentFlow with route(), parallel(), loop() and repeat(). Outside the five sits the managed agents layer, which the README labels as the question of where the agent actually runs. The design claim is diagnostic: if the agent said the wrong thing, look at layer 1; if it had the wrong information, look at layer 2; if it acted when it should not have, look at layer 3. That is a reasonable mental model, and it is more useful than a flat feature list. Whether the boundaries hold in practice is something you would have to test.
Getting an agent running: the two install paths
There are two entry points and they are not the same package. The quick start uses the lightweight core SDK: pip install praisonaiagents, then export OPENAI_API_KEY, then a Python file that imports Agent from praisonaiagents, constructs Agent(instructions="You are a senior data analyst.") and calls agent.start() with a task string. The full install is pip install praisonai, and the README also gives a shell installer, curl -fsSL https://praison.ai/install.sh | bash. The distinction matters: praisonaiagents is the SDK you import, while praisonai is the larger distribution. If you only need the Agent class, the smaller dependency is the one the quick start points at. Note that piping a remote install script into bash is a choice you should make deliberately.
The configuration surface, and where the documentation runs out
The layer table is effectively the config reference: instructions, role, goal, backstory, output, templates, memory, knowledge, context, ContextPolicy, tools, MCP(), guardrails, approval, hooks, sandbox, ExecutionConfig, reflection, autonomy, AgentFlow, route(), parallel(), loop(), repeat(). That is a wide surface for a framework that markets itself on five lines of code, and the two are in tension. The quick start shows the five-line case; the layer table shows what you touch when the five-line case is not enough. Anyone adopting this should read docs.praison.ai for the current signatures rather than guessing from the table, because a config object named in a diagram is not the same as a documented one.
Release cadence as a maintenance cost
The three most recent releases are v4.7.23 on 2026-11-03, v4.7.22 on 2026-10-30, and v4.7.21 on 2026-10-27. That is three patch releases in about a week, and the last push to main is dated 2026-11-02. A cadence like that cuts both ways. Fixes land quickly, which is good if you hit a bug. But if you pin to a minor version and the API surface includes objects like ExecutionConfig and ContextPolicy, you are signing up to re-read the docs on a short cycle. For a personal project or an internal tool, that is tolerable. For something you deploy and forget about for six months, the version pin in your requirements file is doing more work than the framework's own stability guarantees. The licence is MIT, which is permissive and imposes no copyleft obligation on your own code, and third-party model provider terms are separate from the repository licence.
Where the framework is the wrong tool
The five-layer stack assumes you want an agent loop with tools, memory and stopping conditions. If your task is a single deterministic transformation, such as extracting fields from a document into a fixed schema, an agent framework adds a control loop you do not need and a prompt you now have to debug. The README's own use case table leans toward open-ended work: research and analysis, code generation, content creation, data pipelines, customer support, workflow automation. Those are tasks where the model decides the next step. The other boundary is the managed layer. The README poses it as the question of where the agent runs and its layer table answers it with tools_run_on="docker", one shared sandbox for the tools, or run_on="anthropic" for the whole agent. If you need to run entirely inside your own infrastructure, the local SDK path is the one the quick start demonstrates, and you should confirm the managed layer is optional before assuming it is.
How this differs from LangGraph
LangGraph, from the LangChain project, models an agent as an explicit graph of nodes and edges that you construct, with state passed between nodes and checkpoints for resuming. PraisonAI's layer 5 covers similar ground through AgentFlow with route(), parallel(), loop() and repeat(), but the README presents it as the outermost of five nested layers rather than the primary abstraction. The difference in approach is where the structure lives. In a graph-first framework, the graph is the program and the prompt is a node payload. In PraisonAI as described, the agent is the program and the graph is one of several controls you can add. That makes PraisonAI quicker to start with, since the quick start never mentions AgentFlow, and it makes the graph-first approach more explicit when you need to reason about exactly which node ran and why. If your main difficulty is debugging control flow across many agents, the explicit graph is the more direct tool. If your main difficulty is getting a working agent at all, PraisonAI's default path gets you there with one import.
Self-improving agents, and what the README does not define
The repository description promises autonomous, self-improving agents. The layer table maps that to layer 4: reflection, autonomy, and doom-loop detection under ExecutionConfig. Reflection and autonomy are named. Doom-loop detection is the most concrete item in that layer, and it addresses a real failure mode: an agent that calls the same tool with the same arguments until the budget runs out. That is a useful guard to have built in. But the gap between a reflection step and a system that improves itself across runs is large. Treat the description as marketing copy and the layer table as the actual feature list. What you can verify is that the hooks, guardrails, approval and sandbox keys exist in the harness layer, which is where you would enforce limits regardless of what the loop does.
Editorial conclusion
Adopt PraisonAI if you want a single Python dependency that already covers tool calling, memory, guardrails and multi-agent flow control, and you are willing to read the docs at docs.praison.ai to learn the ExecutionConfig and ContextPolicy surface. Do not adopt it if you need a stable API across minor versions, since the release cadence shown in the repository is roughly one version every three to four days. Before committing, verify the current signature of ExecutionConfig and ContextPolicy against the version you install, confirm which of the five layers you actually need, and check whether the managed agents layer is required for your deployment target or whether the local SDK alone is enough.
Frequently asked questions
What is PraisonAI?
PraisonAI is a Python framework for building agents, organised as five layers (prompt, context, harness, loop, graph) plus a managed layer that decides where the agent runs. It is MIT licensed, is installed with pip install praisonai or a shell script, and claims support for 100+ LLMs with built-in memory and retrieval.
Which API keys does PraisonAI need?
The .env.example file marks OPENAI_API_KEY as required and lists six alternative providers: ANTHROPIC_API_KEY, GOOGLE_API_KEY, GROQ_API_KEY, COHERE_API_KEY, AZURE_OPENAI_API_KEY with AZURE_OPENAI_ENDPOINT, and EVOLINK_API_KEY. TAVILY_API_KEY is marked as required for the Claw web-search tool.
How does PraisonAI stop an agent from looping forever?
The loop layer takes execution=ExecutionConfig(...), reflection= and autonomy=, and the README names hard iteration caps, budget ceilings, no-progress detection and doom-loop detection as the brakes. Above it, the graph layer adds route(), parallel(), loop() and repeat() through AgentFlow.
Can PraisonAI agents run shell commands?
Not by default in the Claw dashboard. .env.example ships PRAISONAI_ALLOW_LOCAL_TOOLS=0 with a comment that setting it to 1 enables local shell tools and is a security risk. Where tools do execute, tools_run_on="docker" puts them in one shared sandbox, and run_on="anthropic" moves the whole agent off your machine.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/mervinpraison-praisonai)Star history chart for your README
[](https://hysenlabs.com/projects/mervinpraison-praisonai)Was this useful?