Agent Framework

Run desktop chat turns through CrewAI, AutoGen, LangGraph and other adapters

Pick which framework runs a chat turn — PraisonAI is built in, and installing praisonai-frameworks adds CrewAI, AutoGen, LangGraph, Agno, Google ADK, OpenAI Agents SDK and Pydantic AI.

python
from praisonaiagents import Agent

agent = Agent(
    name="Assistant",
    instructions="You are a helpful assistant.",
)
# The desktop app is a thin shell around this agent. Selecting a non-default
# framework in Settings routes the same turn through that framework instead.
agent.start("Summarize this file")
Diagram

💬 Chat turn

🎚️ Framework
selector

🤖 PraisonAI

🤖 CrewAI

🤖 AutoGen

🤖 LangGraph

🤖 …

📩 Reply

The default framework = "praisonai" runs the built-in agent. Any other name routes the turn through that framework’s adapter, discovered by the praisonai-frameworks extras package.

Quick Start

  1. Keep the default

    Do nothing. framework defaults to "praisonai", so every turn runs the built-in agent with no extra install.

  2. Install the extras

    Add the framework you want as an extra of praisonai-frameworks:

    bash
    pip install "praisonai-frameworks[crewai]"

    The other extras are autogen, langgraph, agno, google-adk, openai-agents, and pydantic-ai.

  3. Set the setting

    Open Settings → Models → Agent framework, type the framework name (for example crewai), and restart the app. The field is marked Requires restart, so the engine picks it up on the next launch.


How It Works

Diagram

⚙️ framework setting

🧬 AgentsGenerator

📄 one-agent YAML

🤖 Framework adapter

📩 Whole reply

A non-default framework routes through praisonai.agents_generator.AgentsGenerator with a generated one-agent YAML — the chat turn is expressed as a single agent, single task config. Because that path returns the finished result rather than a token stream, streaming is not available for these frameworks: the reply arrives whole. The exact contract lives in run_with_framework and _framework_yaml in the engine’s server.py.


Availability & Install Hints

GET /frameworks reports this same list at runtime — available names what this install can run, and hints gives the install command for the rest.

FrameworkInstall hint
praisonai(built in — always available)
crewaipip install "praisonai-frameworks[crewai]"
autogenpip install "praisonai-frameworks[autogen]"
langgraphpip install "praisonai-frameworks[langgraph]"
agnopip install "praisonai-frameworks[agno]"
google-adkpip install "praisonai-frameworks[google-adk]"
openai-agentspip install "praisonai-frameworks[openai-agents]"
pydantic-aipip install "praisonai-frameworks[pydantic-ai]"

Refusal Behaviour


Best Practices

Install one framework at a time

The extras are heavy — each pulls its own dependency tree. Install only the framework you intend to use rather than every extra at once.

Restart after changing the framework

The framework field is requiresRestart: true. Relaunch the app after changing it so the engine loads the selected adapter.

Streaming behaviour changes for non-default frameworks

The reply arrives whole for any framework other than praisonai. The streaming toggle has no effect on those turns — expect the answer to appear at once rather than token by token.


Related