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.
curl -fsSL https://praison.ai/install.sh | bash
โโโโโโโ โโโโโโโ โโโโโโ โโโโโโโโโโโ โโโโโโโ โโโโ โโโ โโโโโโ โโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโ โโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโ โโโ โโโโโโโโโโโ
โโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโ
โโโ โโโ โโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโ โโโ โโโโโโ
โโโ โโโ โโโโโโ โโโโโโโโโโโโโโ โโโโโโโ โโโ โโโโโ โโโ โโโโโโ
pip install praisonai
AI agents solving real-world problems across industries:
| Use Case | Description |
|---|---|
| ๐ Research & Analysis | Conduct deep research, gather information, and generate insights from multiple sources automatically |
| ๐ป Code Generation | Write, debug, and refactor code with AI agents that understand your codebase and requirements |
| โ๏ธ Content Creation | Generate blog posts, documentation, marketing copy, and technical writing with multi-agent teams |
| ๐ Data Pipelines | Extract, transform, and analyze data from APIs, databases, and web sources automatically |
| ๐ค Customer Support | Deploy 24/7 support bots on Telegram, Discord, Slack with memory and knowledge-backed responses |
| โ๏ธ Workflow Automation | Automate multi-step business processes with agents that hand off tasks, verify results, and self-correct |
pip install praisonaiagents
export OPENAI_API_KEY="your-api-key"
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.")
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? โ โ โ โ โ โ
โ โ โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ โ โ
โ โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Layer | The question it answers | PraisonAI |
|---|---|---|
| 1 ยท Prompt | Did I say it clearly? | instructions=, role/goal/backstory, output=, templates= |
| 2 ยท Context | Is the right thing in the window? | memory=, knowledge=, context=, handoff ContextPolicy |
| 3 ยท Harness | Can it act, and be checked? | tools=, MCP(), guardrails=, approval=, hooks=, sandbox= |
| 4 ยท Loop | When do we stop? | execution=ExecutionConfig(...), reflection=, autonomy=, doom-loop detection |
| 5 ยท Graph | Who runs when, and who checks whom? | AgentFlow, route(), parallel(), loop(), repeat() |
| โฌก Managed | Where does it actually run? | tools_run_on="docker" โ one shared sandbox for the tools, or run_on="anthropic" for the whole agent |
Role, instructions, examples, output format.
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")
Write, select, compress, isolate โ the four context operations, one parameter each.
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
Agent = Model + Harness. Tool dispatch, plus the guides that steer before acting and the sensors that observe after.
from praisonaiagents import Agent, MCP, tool
@tool
def 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")
Hard iteration caps, budget ceilings, no-progress detection and completion checks โ every brake is explicit.
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
Topology as a versionable artifact: prompt chaining, routing, parallelisation, orchestrator-worker.
from praisonaiagents import AgentFlow
from 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
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
| ๆฅๆ | ๆฆๅ | ๆๅ | ๅจๆๆฐๅข | ๆป STAR |
|---|