PraisonAI

io.github.MervinPraisonPublished by GitHub account MervinPraisonv2.3.42Updated Oct 24, 2026

AI Agents Framework with Self Reflection and MCP support

Overview

AI-generated overview

PraisonAI is a Python agent framework, packaged as a local MCP server, that lets an assistant build and run autonomous multi-agent workflows with tools, memory,

What you can do
Build and run single or multi-agent workflows from Python, JavaScript or YAML, with planning, self-reflection and handoffs between agents. Attach tools, including other MCP servers over stdio, HTTP, WebSocket or SSE, plus custom Python tools. Add memory, knowledge and RAG retrieval, with optional persistence to databases such as PostgreSQL, SQLite or Redis. Run managed sandboxes for tool or code execution on Docker, e2b, Modal and similar runtimes. Expose chat dashboards and messaging channels such as Telegram, Discord and Slack.
When to use it
Worth adding when you want an assistant to orchestrate multi-step agent teams, connect several MCP servers behind one framework, or run autonomous research, coding and workflow tasks with explicit iteration and budget limits.
Requirements
Runs as a local process on the desktop; install the praisonai Python package (or praisonaiagents for the core SDK). An LLM provider API key is needed, for example OPENAI_API_KEY, and the dashboard also uses TAVILY_API_KEY. Network access is required for hosted model providers; sandbox options such as Docker need the corresponding runtime.
Before you install
Agents can execute code and shell commands and write files, and sandbox options move tool execution to third-party runtimes. The README's install script pipes a remote script into a shell. Agents act autonomously with tools and messaging channels, so use approval gates and guardrails. API keys such as OPENAI_API_KEY and TAVILY_API_KEY are required and should be kept out of shared configs.

Installation

In SourceWeft

  1. Open PraisonAI in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[PraisonAI Logo]

[Total Downloads] [Latest Stable Version] [License]

PraisonAI 🦞 — Hire a 24/7 AI Workforce. Stop writing boilerplate and start shipping autonomous, self-improving agents that research, plan, and execute tasks across your apps. From one agent to an entire organization, deployed in 5 lines of code.

bash
curl -fsSL https://praison.ai/install.sh | bash

[PraisonAI Dashboard]

 ██████╗ ██████╗  █████╗ ██╗███████╗ ██████╗ ███╗   ██╗     █████╗ ██╗ ██╔══██╗██╔══██╗██╔══██╗██║██╔════╝██╔═══██╗████╗  ██║    ██╔══██╗██║ ██████╔╝██████╔╝███████║██║███████╗██║   ██║██╔██╗ ██║    ███████║██║ ██╔═══╝ ██╔══██╗██╔══██║██║╚════██║██║   ██║██║╚██╗██║    ██╔══██║██║ ██║     ██║  ██║██║  ██║██║███████║╚██████╔╝██║ ╚████║    ██║  ██║██║ ╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═══╝    ╚═╝  ╚═╝╚═╝
 pip install praisonai

🎯 Use Cases

AI agents solving real-world problems across industries:

Use CaseDescription
🔍 Research & AnalysisConduct deep research, gather information, and generate insights from multiple sources automatically
💻 Code GenerationWrite, debug, and refactor code with AI agents that understand your codebase and requirements
✍️ Content CreationGenerate blog posts, documentation, marketing copy, and technical writing with multi-agent teams
📊 Data PipelinesExtract, transform, and analyze data from APIs, databases, and web sources automatically
🤖 Customer SupportDeploy 24/7 support bots on Telegram, Discord, Slack with memory and knowledge-backed responses
⚙️ Workflow AutomationAutomate multi-step business processes with agents that hand off tasks, verify results, and self-correct

🚀 Meet your first Agent (Under 1 Minute)

  1. Install the lightweight core SDK:
bash
pip install praisonaiagentsexport OPENAI_API_KEY="your-api-key"
  1. Run your first autonomous agent:
python
from praisonaiagents import Agent
# Give your agent a goal, and watch it work.agent = Agent(instructions="You are a senior data analyst.")agent.start("Analyze the top 3 tech trends of 2026 and format as a markdown table.")

🧬 The Five-Layer Agent Stack

Most frameworks hand you one or two layers and leave the rest as homework. PraisonAI covers all five — plus the outer layer that decides where your agent actually runs.

Each layer wraps the one inside it. When an agent misbehaves, the layer tells you where to look.

┌─────────────────────────────────────────────────────────────────┐│ ⬡ MANAGED AGENTS — Where does it actually run?                  ││ ┌─────────────────────────────────────────────────────────────┐ ││ │ 5 · GRAPH — Who runs when, and who checks whom?             │ ││ │ ┌─────────────────────────────────────────────────────────┐ │ ││ │ │ 4 · LOOP — When do we stop?                             │ │ ││ │ │ ┌─────────────────────────────────────────────────────┐ │ │ ││ │ │ │ 3 · HARNESS — Can it act, and be checked?           │ │ │ ││ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ ││ │ │ │ │ 2 · CONTEXT — Is the right thing in the window? │ │ │ │ ││ │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ │ ││ │ │ │ │ │ 1 · PROMPT — Did I say it clearly?          │ │ │ │ │ ││ │ │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ ││ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ ││ │ │ └─────────────────────────────────────────────────────┘ │ │ ││ │ └─────────────────────────────────────────────────────────┘ │ ││ └─────────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘
LayerThe question it answersPraisonAI
1 · PromptDid I say it clearly?instructions=, role/goal/backstory, output=, templates=
2 · ContextIs the right thing in the window?memory=, knowledge=, context=, handoff ContextPolicy
3 · HarnessCan it act, and be checked?tools=, MCP(), guardrails=, approval=, hooks=, sandbox=
4 · LoopWhen do we stop?execution=ExecutionConfig(...), reflection=, autonomy=, doom-loop detection
5 · GraphWho runs when, and who checks whom?AgentFlow, route(), parallel(), loop(), repeat()
⬡ ManagedWhere does it actually run?tools_run_on="docker" — one shared sandbox for the tools, or run_on="anthropic" for the whole agent

Layer 1 · Prompt — Did I say it clearly?

Role, instructions, examples, output format.

python
from praisonaiagents import Agent
agent = Agent(    role="Senior Data Analyst",    goal="Turn raw numbers into decisions",    output="verbose",              # markdown-formatted output)agent.start("Summarise Q3 revenue trends")

Layer 2 · Context — Is the right thing in the window?

Write, select, compress, isolate — the four context operations, one parameter each.

python
from praisonaiagents import Agent
agent = Agent(    instructions="You are a support engineer.",    memory={"user_id": "u-42"},    # write    — persists across runs (needs a user_id)    knowledge=["docs/"],           # select   — retrieves only what's relevant    context="summarize",           # compress — auto-compacts before the limit)

Isolate is handoffs=[specialist] — a sub-agent inherits the last few messages and the intersection of your tools, not your whole transcript. 📖 Handoffs

Layer 3 · Harness — Can it act, and be checked?

Agent = Model + Harness. Tool dispatch, plus the guides that steer before acting and the sensors that observe after.

python
from praisonaiagents import Agent, MCP, tool
@tooldef deploy(env: str) -> str:    """Deploy the current build to an environment."""    return f"Deployed to {env}"
agent = Agent(    name="ReleaseEngineer",    instructions="You are a release engineer.",    tools=[deploy, MCP("npx -y @modelcontextprotocol/server-filesystem /tmp")],    approval=True,                 # guide — human gate before risky tools run)agent.start("Deploy to staging, then list the files you can read")

Layer 4 · Loop — When do we stop?

Hard iteration caps, budget ceilings, no-progress detection and completion checks — every brake is explicit.

python
from praisonaiagents import Agent, ExecutionConfig
agent = Agent(    instructions="Fix the failing tests.",    execution=ExecutionConfig(max_iter=30, max_budget=0.50, on_budget_exceeded="stop"),    autonomy=True,                 # required to drive the loop with run_autonomous())result = agent.run_autonomous("Refactor the auth module", max_iterations=5)
print(result.completion_reason)# goal | no_tool_calls | max_iterations | timeout | doom_loop | needs_help | error# (with on_budget_exceeded="stop", hitting the cap raises BudgetExceededError,#  surfaced here as completion_reason="error")

Doom-loop detection is on by default. Repeated identical tool calls and A→B→A→B oscillation get caught — while a poller whose output keeps changing does not. 📖 Doom Loop Detection

Layer 5 · Graph — Who runs when, and who checks whom?

Topology as a versionable artifact: prompt chaining, routing, parallelisation, orchestrator-worker.

python
from praisonaiagents import AgentFlowfrom praisonaiagents.workflows import route, parallel, repeat
flow = AgentFlow(steps=[    classifier,    route({"bug": [bug_agent], "feature": [feature_agent], "default": [triage]}),    parallel([reviewer, tester]),                      # fan out, join automatically    repeat(editor, until=lambda ctx: "approved" in ctx.previous_result.lower(),           max_iterations=3),                          # evaluator–optimizer])flow.run("Ticket #123: login fails on Safari")

The same graph is expressible in YAML with no Python at all. 📖 AgentFlow

⬡ Outside the stack: Managed Agents — Where does it actually run?

The harness is commoditising; where the agent executes is the next multiplier. Rather than burning your laptop's CPU, hand an agent a short-lived cloud sandbox — repo, tools and tests run there.

bash
pip install praisonai

The simplest way in is tools_run_on= — one whole team or workflow shares one sandbox, so a file written by step 1 is there for step 2. Thinking stays on your machine:

python
from praisonaiagents import Agent, AgentFlow
writer = Agent(name="Writer", instructions="You write files.")reader = Agent(name="Reader", instructions="You read files.")
flow = AgentFlow(tools_run_on="docker", steps=[writer, reader])  # or e2b | modal | daytona | flyioflow.run("Write 'hello' to /workspace/note.txt, then read it back")

Same thing with no Python at all:

yaml
name: remote-demotools_run_on: docker      # every step shares one sandboxagents:  writer: {role: Writer, goal: Write files}  reader: {role: Reader, goal: Read files}steps:  - agent: writer    action: "Write 'hello' to /workspace/note.txt"  - agent: reader    action: "Read /workspace/note.txt"

For a single agent, two words cover it — and they answer different questions:

python
from praisonaiagents import Agent
# A. Only the TOOLS move. Thinking stays on your machine.agent = Agent(name="builder", instructions="You build things.",              tools_run_on="docker")   # docker | e2b | modal | daytona | flyio                                       # tenki | sandlock | ssh | novita | subprocess
# B. The WHOLE agent moves — model calls, loop and toolsagent = Agent(name="teacher", instructions="You teach.", run_on="anthropic")  # hostedagent = Agent(name="builder", instructions="You build.", run_on="docker")     # self-hostedagent.start("Write a Python script that prints the first 10 primes, then run it")

Ask any object where it runs, and it will tell you:

python
>>> Agent(name="builder", instructions="x", tools_run_on="docker")Agent(name='builder', thinks_on='this machine', tools_run_on='a Docker container')
>>> agent.where_does_it_run()Thinking (the AI model calls) happens on this machine.Tools run on a Docker container.Your own tools (check_db) still run on this machine -- only shell, file andcode tools move. They read and write this machine's files.

Naming a place that cannot do the job is a typo, not a preference, so it says so:

python
>>> Agent(name="x", instructions="i", run_on="e2b")TypeError: Agent(run_on='e2b') is not valid: run_on= places the whole agent-- model calls, loop and tools -- on a managed runtime, and 'e2b' runscommands but cannot host an agent loop.  To run only the tools there:  Agent(tools_run_on='e2b')

To run one block of code somewhere else, name the place on that call:

python
agent.execute_code_sync("print(6 * 7)", run_in="sandlock")   # kernel-enforced

See what is running and reclaim strays:

bash
praisonai managed ps          # list running sandboxespraisonai managed stop --all  # reclaim them

Sandboxes shut themselves down when idle (auto_shutdown, idle_timeout_s), and a post-setup snapshot is reused so the next run skips the image pull and dependency install. Commit a .praisonai/environment.yaml and the environment travels with the repo.

📖 20 runnable examples · manage sessions with praisonai managed sessions list <agent-id> or praisonai managed sessions resume <session-id> "<prompt>"

Stack framing adapted from The Five-Layer Agent Stack and Agent Harnesses vs Orbs.


🌌 The PraisonAI Ecosystem

Start simple with the core SDK, or expand to full visual builders and dashboards when you're ready.

  • Core SDK (praisonaiagents): For pure Python development. pip install praisonaiagents
  • 💻 PraisonAI CLI (praisonai): For terminal-based developers. pip install praisonai
  • 🦞 Claw Dashboard: Connect agents directly to Telegram, Slack, or Discord. pip install "praisonai[claw]"
  • 🔗 Flow Visual Builder: Drag-and-drop workflow creation. pip install "praisonai[flow]"
  • 🤖 PraisonAI UI: Clean chat interface. pip install "praisonai[ui]"

JavaScript SDK

bash
npm install praisonai

🧠 Supported Providers & Features

Powered by 100+ LLMs (OpenAI, Anthropic, Gemini & local models).

[OpenAI] [Anthropic] [Google Gemini] [DeepSeek] [Azure] [Ollama] [Groq] [Mistral] [Cerebras] [Cohere] [OpenRouter] [Perplexity] [Fireworks] [AWS Bedrock] [xAI Grok] [Vertex AI] [HuggingFace] [Together AI] [Databricks] [Replicate] [Cloudflare]

View all 24 providers with examples
ProviderExample
OpenAIExample
AnthropicExample
Google GeminiExample
OllamaExample
GroqExample
DeepSeekExample
xAI GrokExample
MistralExample
CohereExample
PerplexityExample
FireworksExample
Together AIExample
OpenRouterExample
HuggingFaceExample
Azure OpenAIExample
AWS BedrockExample
Google VertexExample
DatabricksExample
CloudflareExample
AI21Example
ReplicateExample
SageMakerExample
MoonshotExample
vLLMExample


🌟 Why PraisonAI?

FeatureHow
🔌MCP Protocol — stdio, HTTP, WebSocket, SSEtools=MCP("npx ...")
🧠Planning Mode — plan → execute → reasonplanning=True
🔍Deep Research — multi-step autonomous researchDocs
🤖External Agents — orchestrate Claude Code, Gemini CLI, CodexDocs
🔄Agent Handoffs — seamless conversation passinghandoffs=[other_agent]
🛡️Guardrails — input/output validationDocs
Web Search + Fetch — native browsingweb=True
🪞Self Reflection — agent reviews its own outputDocs
🔀Workflow Patterns — route, parallel, loop, repeatDocs
🧠Memory (zero deps) — works out of the boxmemory=True
View all 25 features
FeatureHow
💡Prompt Caching — reduce latency + costcaching=True
💾Sessions + Auto-Save — persistent state across restartsauto_save="my-project"
💭Thinking Budgets — control reasoning depthagent.thinking_budget = 1024
📚RAG + Quality-Based RAG — auto quality scoring retrievalDocs
📊Model Router — auto-routes to cheapest capable modelDocs
🧊Shadow Git Checkpoints — auto-rollback on failureDocs
📡A2A Protocol — agent-to-agent interopDocs
📏Context Compaction — never hit token limitsDocs
📡Telemetry — OpenTelemetry traces, spans, metricsDocs
📜Policy Engine — declarative agent behavior controlDocs
🔄Background Tasks — fire-and-forget agentsDocs
🔁Doom Loop Detection — auto-recovery from stuck agentsDocs
🕸️Graph Memory — Neo4j-style relationship trackingDocs
🏖️Sandbox Execution — isolated code executionDocs
🖥️Bot Gateway — multi-agent routing across channelsDocs

📘 Using Python Code

Unsure whether a result is a bug or model randomness? Check the SDK Behavior Matrix for stream, memory prefetch, structured output, teams and AG-UI.

1. Single Agent

python
from praisonaiagents import Agentagent = Agent(instructions="You are a helpful AI assistant")agent.start("Write a movie script about a robot in Mars")

2. Multi Agents

python
from praisonaiagents import Agent, Agents
research_agent = Agent(instructions="Research about AI")summarise_agent = Agent(instructions="Summarise research agent's findings")agents = Agents(agents=[research_agent, summarise_agent])agents.start()

3. MCP (Model Context Protocol)

python
from praisonaiagents import Agent, MCP
# stdio - Local NPX/Python serversagent = Agent(tools=MCP("npx @modelcontextprotocol/server-memory"))
# Streamable HTTP - Production serversagent = Agent(tools=MCP("https://api.example.com/mcp"))
# WebSocket - Real-time bidirectionalagent = Agent(tools=MCP("wss://api.example.com/mcp", auth_token="token"))
# With environment variablesagent = Agent(    tools=MCP(        command="npx",        args=["-y", "@modelcontextprotocol/server-brave-search"],        env={"BRAVE_API_KEY": "your-key"}    ))

📖 Full MCP docs — stdio, HTTP, WebSocket, SSE transports

4. Custom Tools

python
from praisonaiagents import Agent, tool
@tooldef search(query: str) -> str:    """Search the web for information."""    return f"Results for: {query}"
@tooldef calculate(expression: str) -> float:    """Safely evaluate a numeric arithmetic expression."""    import ast    import operator        # Define allowed operations    _OPS = {        ast.Add: operator.add,        ast.Sub: operator.sub,        ast.Mult: operator.mul,        ast.Div: operator.truediv,        ast.Pow: operator.pow,        ast.USub: operator.neg,        ast.UAdd: operator.pos,    }        def _safe_eval(node):        if isinstance(node, ast.Constant) and isinstance(node.value, (int, float)):            return node.value        elif isinstance(node, ast.BinOp) and type(node.op) in _OPS:            return _OPS[type(node.op)](_safe_eval(node.left), _safe_eval(node.right))        elif isinstance(node, ast.UnaryOp) and type(node.op) in _OPS:            return _OPS[type(node.op)](_safe_eval(node.operand))        else:            raise ValueError("Unsupported expression")        try:        return _safe_eval(ast.parse(expression, mode="eval").body)    except (ValueError, SyntaxError, TypeError, ZeroDivisionError, OverflowError):        raise ValueError("Invalid arithmetic expression")
agent = Agent(    instructions="You are a helpful assistant",    tools=[search, calculate])agent.start("Search for AI news and calculate 15*4")

⚠️ Security Note: Never use eval(), exec(), or subprocess in tool functions that process LLM-generated or user-supplied input. Always validate and sanitize inputs to prevent code injection attacks. 📖 Full tools docs — BaseTool, tool packages, 100+ built-in tools

5. Persistence (Databases)

python
from praisonaiagents import Agent, db
agent = Agent(    name="Assistant",    memory={        "db": db(database_url="postgresql://localhost/mydb"),        "session_id": "my-session",    },)agent.chat("Hello!")  # Auto-persists messages, runs, traces

📖 Full persistence docs — PostgreSQL, MySQL, SQLite, MongoDB, Redis, and 20+ more

6. PraisonAI Claw 🦞 (Dashboard UI)

Connect your AI agents to Telegram, Discord, Slack, WhatsApp and more — all from a single command.

bash
pip install "praisonai[claw]"praisonai claw
Required Environment Variables

Copy .env.example to .env and configure the following variables:

VariableRequiredDescription
OPENAI_API_KEYYesOpenAI API key for all LLM calls
TAVILY_API_KEYYes (Claw)Tavily key for the built-in web-search tool. Get one free at https://app.tavily.com

Open http://localhost:8082 — the dashboard comes with 13 built-in pages: Chat, Agents, Memory, Knowledge, Channels, Guardrails, Cron, and more. Add messaging channels directly from the UI.

📖 Full Claw docs — platform tokens, CLI options, Docker, and YAML agent mode

7. Langflow Integration 🔗 (Visual Flow Builder)

Build multi-agent workflows visually with drag-and-drop components in Langflow.

bash
pip install "praisonai[flow]"praisonai flow

Open http://localhost:7861 — use the Agent and Agent Team components to create sequential or parallel workflows. Connect Chat Input → Agent Team → Chat Output for instant multi-agent pipelines.

📖 Full Flow docs — visual agent building, component reference, and deployment

8. PraisonAI UI 🤖 (Clean Chat)

Lightweight chat interface for your AI agents.

bash
pip install "praisonai[ui]"praisonai ui

📄 Using YAML (No Code)

Example 1: Two Agents Working Together

Create agents.yaml:

yaml
framework: praisonaitopic: "Write a blog post about AI"
agents:  researcher:    role: Research Analyst    goal: Research AI trends and gather information    instructions: "Find accurate information about AI trends"      writer:    role: Content Writer    goal: Write engaging blog posts    instructions: "Write clear, engaging content based on research"

Run with:

bash
praisonai agents.yaml

The agents automatically work together sequentially

Example 2: Agent with Custom Tool

Create two files in the same folder:

agents.yaml:

yaml
framework: praisonaitopic: "Calculate the sum of 25 and 15"
agents:  calculator_agent:    role: Calculator    goal: Perform calculations    instructions: "Use the add_numbers tool to help with calculations"    tools:      - add_numbers

tools.py:

python
def add_numbers(a: float, b: float) -> float:    """    Add two numbers together.        Args:        a: First number        b: Second number        Returns:        The sum of a and b    """    return a + b

Run with:

bash
praisonai agents.yaml

💡 Tips:

  • Use the function name (e.g., add_numbers) in the tools list, not the file name
  • Tools in tools.py are automatically discovered
  • The function's docstring helps the AI understand how to use it

🎯 CLI Quick Reference

CategoryCommands
Executionpraisonai, --auto, --interactive, --chat
Researchresearch, --query-rewrite, --deep-research
Planning--planning, --planning-tools, --planning-reasoning
Workflowsworkflow run, workflow list, workflow auto
Memorymemory show, memory add, memory search, memory clear
Knowledgeknowledge add, knowledge query, knowledge list
Sessionssession list, session resume, session delete
Toolstools list, tools info, tools search
MCPmcp list, mcp create, mcp enable
Developmentcommit, docs, checkpoint, hooks
Schedulingschedule start, schedule list, schedule stop

📖 Full CLI reference


✨ Key Features

🤖 Core Agents
FeatureCodeDocs
Single AgentExample📖
Multi AgentsExample📖
Auto AgentsExample📖
Self Reflection AI AgentsExample📖
Reasoning AI AgentsExample📖
Multi Modal AI AgentsExample📖
🔄 Workflows
FeatureCodeDocs
Simple WorkflowExample📖
Workflow with AgentsExample📖
Agentic Routing (route())Example📖
Parallel Execution (parallel())Example📖
Loop over List/CSV (loop())Example📖
Evaluator-Optimizer (repeat())Example📖
Conditional StepsExample📖
Workflow BranchingExample📖
Workflow Early StopExample📖
Workflow CheckpointsExample📖
💻 Code & Development
FeatureCodeDocs
Code Interpreter AgentsExample📖
AI Code Editing ToolsExample📖
External Agents (All)Example📖
Claude Code CLIExample📖
Gemini CLIExample📖
Codex CLIExample📖
Cursor CLIExample📖
🧠 Memory & Knowledge
FeatureCodeDocs
Memory (Short & Long Term)Example📖
File-Based MemoryExample📖
Claude Memory ToolExample📖
Add Custom KnowledgeExample📖
RAG AgentsExample📖
Chat with PDF AgentsExample📖
Data Readers (PDF, DOCX, etc.)CLI📖
Vector Store SelectionCLI📖
Retrieval StrategiesCLI📖
RerankersCLI📖
Index Types (Vector/Keyword/Hybrid)CLI📖
Query Engines (Sub-Question, etc.)CLI📖
🔬 Research & Intelligence
FeatureCodeDocs
Deep Research AgentsExample📖
Query Rewriter AgentExample📖
Native Web SearchExample📖
Built-in Search ToolsExample📖
Unified Web SearchExample📖
Web Fetch (Anthropic)Example📖
📋 Planning & Execution
FeatureCodeDocs
Planning ModeExample📖
Planning ToolsExample📖
Planning ReasoningExample📖
Prompt ChainingExample📖
Evaluator OptimiserExample📖
Orchestrator WorkersExample📖
👥 Specialized Agents
FeatureCodeDocs
Data Analyst AgentExample📖
Finance AgentExample📖
Shopping AgentExample📖
Recommendation AgentExample📖
Wikipedia AgentExample📖
Programming AgentExample📖
Math AgentsExample📖
Markdown AgentExample📖
Prompt Expander AgentExample📖
🎨 Media & Multimodal
FeatureCodeDocs
Image Generation AgentExample📖
Image to Text AgentExample📖
Video AgentExample📖
Camera IntegrationExample📖
🔌 Protocols & Integration
FeatureCodeDocs
MCP TransportsExample📖
WebSocket MCPExample📖
MCP SecurityExample📖
MCP ResumabilityExample📖
MCP Config ManagementDocs📖
LangChain Integrated AgentsExample📖
🛡️ Safety & Control
FeatureCodeDocs
GuardrailsExample📖
Human ApprovalExample📖
Rules & InstructionsDocs📖
⚙️ Advanced Features
FeatureCodeDocs
Async & Parallel ProcessingExample📖
ParallelisationExample📖
Repetitive AgentsExample📖
Agent HandoffsExample📖
Stateful AgentsExample📖
Autonomous WorkflowExample📖
Structured Output AgentsExample📖
Model RouterExample📖
Prompt CachingExample📖
Fast ContextExample📖
🛠️ Tools & Configuration
FeatureCodeDocs
100+ Custom ToolsExample📖
YAML ConfigurationExample📖
100+ LLM SupportExample📖
Callback AgentsExample📖
HooksExample📖
Middleware SystemExample📖
Configurable ModelExample📖
Rate LimiterExample📖
Injected Tool StateExample📖
Shadow Git CheckpointsExample📖
Background TasksExample📖
Policy EngineExample📖
Thinking BudgetsExample📖
Output StylesExample📖
Context CompactionExample📖
📊 Monitoring & Management
FeatureCodeDocs
Sessions ManagementExample📖
Auto-Save SessionsDocs📖
History in ContextDocs📖
TelemetryExample📖
Langfuse TracingDocs📖
Project Docs (.praison/docs/)Docs📖
AI Commit MessagesDocs📖
@Mentions in PromptsDocs📖
🖥️ CLI Features
FeatureCodeDocs
Slash CommandsExample📖
Autonomy ModesExample📖
Cost TrackingExample📖
Repository MapExample📖
Interactive TUIExample📖
Git IntegrationExample📖
Sandbox ExecutionExample📖
CLI CompareExample📖
Profile/BenchmarkDocs📖
Auto ModeDocs📖
InitDocs📖
File InputDocs📖
Final AgentDocs📖
Max TokensDocs📖
🧪 Evaluation
FeatureCodeDocs
Accuracy EvaluationExample📖
Performance EvaluationExample📖
Reliability EvaluationExample📖
Criteria EvaluationExample📖
🎯 Agent Skills
FeatureCodeDocs
Skills ManagementExample📖
Custom SkillsExample📖
⏰ 24/7 Scheduling
FeatureCodeDocs
Agent SchedulerExample📖

💻 Using JavaScript Code

bash
npm install praisonaiexport OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
javascript
const { Agent } = require('praisonai');const agent = new Agent({ instructions: 'You are a helpful AI assistant' });agent.start('Write a movie script about a robot in Mars');

⚡ Performance

PraisonAI keeps framework overhead microsecond-class: creating an Agent (one tool, no LLM call) averaged 46 μs in our 2026-10-15 run, so per-agent setup is negligible next to model latency in multi-agent workloads.

Performance MetricPraisonAIMeasured
Avg Agent instantiation (1 tool, 1000 iterations)46 μs2026-10-15 · praisonaiagents 1.7.12

Methodology, comparisons and how to reproduce: benchmarks/BENCHMARK_RESULTS.md · docs



⭐ Star History

[Star History Chart]


[PraisonAI AgentFlow]

[PraisonAI command execution]

* export TAVILY_API_KEY=xxxxx

🔍 Langfuse Tracing

bash
pip install "praisonai[langfuse]"praisonai langfuse

[PraisonAI Langfuse Tracing]


🎓 Video Tutorials

Learn PraisonAI through our comprehensive video series:

View all 22 video tutorials
TopicVideo
AI Agents with Self Reflection[Self Reflection]
Reasoning Data Generating Agent[Reasoning Data]
AI Agents with Reasoning[Reasoning]
Multimodal AI Agents[Multimodal]
AI Agents Workflow[Workflow]
Async AI Agents[Async]
Mini AI Agents[Mini]
AI Agents with Memory[Memory]
Repetitive Agents[Repetitive]
Introduction[Introduction]
Tools Overview[Tools Overview]
Custom Tools[Custom Tools]
Firecrawl Integration[Firecrawl]
User Interface[UI]
Crawl4AI Integration[Crawl4AI]
Chat Interface[Chat]
Code Interface[Code]
Mem0 Integration[Mem0]
Training[Training]
Realtime Voice Interface[Realtime]
Call Interface[Call]
Reasoning Extract Agents[Reasoning Extract]

👥 Contributing

We welcome contributions! Fork the repo, create a branch, and submit a PR → Contributing Guide.


❓ FAQ & Troubleshooting

ModuleNotFoundError: No module named 'praisonaiagents'

Install the package:

bash
pip install praisonaiagents
API key not found / Authentication error

Ensure your API key is set:

bash
export OPENAI_API_KEY=your_key_here

For other providers, see Models docs.

How do I use a local model (Ollama)?
bash
# Start Ollama and pull a modelollama serveollama pull llama3.2
python
from praisonaiagents import Agent
agent = Agent(instructions="You are a helpful assistant", llm="ollama/llama3.2")agent.start("Why is the sky blue?")

The ollama/ prefix is what selects Ollama's handling — tool-call repair, tool-result formatting and the streaming rules small local models need. Or set it by environment instead:

bash
export OPENAI_MODEL_NAME=ollama/llama3.2

Setting only OPENAI_BASE_URL is not enough: with no model named, the OpenAI default (gpt-4o-mini) is sent to Ollama, which answers 404 model 'gpt-4o-mini' not found. Always name the model.

Point at a non-default host with base_url= or OLLAMA_HOST:

python
agent = Agent(instructions="...", llm="ollama/llama3.2", base_url="http://192.168.1.10:11434")

The same shape works for other local runtimes — lm_studio/, vllm/ and hosted_vllm/ with their server's base_url.

See Models docs for more details.

How do I persist conversations to a database?

Use the db parameter:

python
from praisonaiagents import Agent, db
agent = Agent(    name="Assistant",    memory={        "db": db(database_url="postgresql://localhost/mydb"),        "session_id": "my-session",    },)

See Persistence docs for supported databases.

How do I enable agent memory?
python
from praisonaiagents import Agent
agent = Agent(    name="Assistant",    # Enables file-based memory (no extra deps!)    memory={"user_id": "user123"},)

See Memory docs for more options.

How do I run multiple agents together?
python
from praisonaiagents import Agent, Agents
agent1 = Agent(instructions="Research topics")agent2 = Agent(instructions="Summarize findings")agents = Agents(agents=[agent1, agent2])agents.start()

See Agents docs for more examples.

How do I use MCP tools?
python
from praisonaiagents import Agent, MCP
agent = Agent(    tools=MCP("npx @modelcontextprotocol/server-memory"))

See MCP docs for all transport options.

Getting Help


Made with ❤️ by the PraisonAI Team

📚 Documentation • GitHub • ▶️ YouTube • 𝕏 X • 💼 LinkedIn

Source: README.md at commit e7076d0

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v2.3.42LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts