Package Tier Architecture

How praisonaiagents, praisonai-code, praisonai-bot, praisonai-train, praisonai-browser, praisonai-mcp, and praisonai layer on top of each other

PraisonAI ships as seven packages that stack — pick the smallest one that covers what you need.

Diagram

praisonaiagents\nCore SDK

praisonai-code\nTerminal CLI

praisonai-bot\nBots + Gateway

praisonai-train\nFine-tune + Agent training

praisonai-browser\nExtension bridge + Playwright

praisonai-mcp\nMCP server host

praisonai\nFull wrapper

Quick Start

  1. SDK only — embed agents in your Python app
    bash
    pip install praisonaiagents

    The core Agent, tools, memory, and hooks. No CLI, no gateway.

  2. Terminal CLI — run/chat/code, no gateway or bots
    bash
    pip install praisonai-code

    The agentic CLI (run, chat, code) and LLM runtime, without channel bots.

  3. Gateway + bots — channel runtime without the wrapper
    bash
    pip install "praisonai-bot[gateway,bot]"

    The WebSocket gateway, Telegram/Discord/Slack bots, and the scheduler tick.

  4. Training — fine-tune LLMs or train agents
    bash
    pip install "praisonai-train[llm]"

    LLM fine-tuning via Unsloth and iterative agent training, without the wrapper.

  5. Browser — automate Chrome and the web
    bash
    pip install "praisonai-browser[all]"

    The bridge server, CDP agent, and Playwright engine — usable on their own or inside the full praisonai install.

  6. MCP host — serve agents to Claude Desktop / Cursor
    bash
    pip install "praisonai-mcp[all]"

    The heavy MCP host — full capability registry, recipes, and HTTP-stream auth — usable on its own or inside the full praisonai install.

  7. Everything — the full wrapper
    bash
    pip install praisonai

    Transitively pulls praisonai-code, praisonai-bot, praisonai-train, praisonai-browser, praisonai-mcp, and praisonaiagents.


How to Choose

Diagram

Full CLI with gateway,
bots & integrations

Gateway + bots only

Fine-tune LLMs or
train agents

Automate Chrome /
a browser

MCP server for Claude
Desktop / Cursor

Run agents from the CLI,
no bots

Embed agents in
my own Python app

What do I want to do?

pip install praisonai

pip install praisonai-bot[gateway,bot]

pip install praisonai-train[llm]

pip install praisonai-browser[all]

pip install praisonai-mcp[all]

pip install praisonai-code

pip install praisonaiagents

Start at the top: install praisonai unless you know you want a lighter footprint. Each lower tier trims dependencies at the cost of features.


How Tiers Interact at Runtime

The bot tier reaches wrapper-only features through a lazy bridge, so it stays installable on its own.

Diagram
Lazy config bridgepraisonaiagentspraisonai-botUserLazy config bridgepraisonaiagentspraisonai-botUsermessage / scheduled tickAgent.start(request)agent responseresolve config (only if wrapper installed)config or standalone defaultreply

The bot tier never imports the wrapper directly — the bridge resolves config the same way whether you run bot-tier standalone or the full praisonai install.


Ownership Table

Each tier owns a clear slice and must not depend upward.

TierPackageOwnsMust not depend on
1praisonaiagentsAgent, tools, memory, hooks, protocolsany wrapper
2apraisonai-coderun/chat/code, Typer CLI, runtime, LLMpraisonai PyPI (lazy bridge only)
2bpraisonai-botBots, gateway, channel CLI, OS daemon, gateway scheduler tickpraisonai PyPI (lazy bridge for jobs/UI)
2cpraisonai-trainLLM fine-tuning (Unsloth), iterative agent training, train CLI grouppraisonai PyPI
2dpraisonai-browserExtension bridge, CDP agent, Playwright engine, browser CLIpraisonai PyPI
2epraisonai-mcpHeavy MCP host, adapters, recipe bridge, HTTP-stream authpraisonai PyPI (lazy _wrapper_bridge)
2fpraisonai-deployAPI/Docker/cloud deploy, deploy CLI group, Deploy API (C14, publish slot #8)praisonai PyPI (lazy _wrapper_bridge)
3praisonaiFramework adapters (CrewAI/AutoGen), serve, dashboard, async jobs API—

Publish order: praisonaiagents → praisonai-code + praisonai-bot + praisonai-train + praisonai-browser + praisonai-mcp → praisonai


Config Kernel

Shared configuration lives in praisonai_code/cli/configuration/. The praisonai-bot tier reaches it through a lazy internal bridge, so the bot package stays installable on its own without importing the wrapper. You never call this bridge directly — it resolves config the same way whether you run bot-tier standalone or the full wrapper.


Common Patterns

Embed agents in my app

Install the SDK and call Agent directly.

python
from praisonaiagents import Agent

agent = Agent(name="assistant", instructions="You are a helpful assistant.")
agent.start("Summarise the latest release notes.")

Deploy a bot with scheduled updates, no CrewAI

Install the bot tier and run a scheduled agent tick — no wrapper required.

python
import asyncio
from praisonaiagents import Agent
from praisonaiagents.scheduler import ScheduleRunner, FileScheduleStore
from praisonai_bot.scheduler import ScheduledAgentExecutor

agent = Agent(name="watcher", instructions="Summarise new alerts.")
runner = ScheduleRunner(FileScheduleStore("./schedules"))
executor = ScheduledAgentExecutor(runner=runner, agent_resolver=lambda _id: agent)

asyncio.run(executor.run_loop(interval=15.0))

Best Practices

Start with praisonai unless you know you want a lighter install

The full wrapper pulls every tier and is the recommended default. Drop to praisonai-code, praisonai-bot, praisonai-train, praisonai-browser, praisonai-mcp, or praisonaiagents only when you have a specific reason to trim dependencies.

Shims keep old imports working — you don't need to migrate immediately

After the C9 module moves, the old praisonai.scheduler.executor and praisonai.scheduler.condition_gate paths remain importable as backward-compatibility shims when the wrapper is installed. New code should import from praisonai_bot.scheduler.*, but existing code keeps running.

The scheduler tick works standalone from bot tier; RunPolicy needs the wrapper

ScheduledAgentExecutor ships in praisonai-bot, so scheduled ticks run without the wrapper. The RunPolicy safety gate stays in praisonai — install the wrapper if you need it for unattended runs.


Related