SDK Architecture

Three-tier Python package model (C7.1), SDK structure, and design methodology

Three-Tier Package Model (C7.1)

Current release: v4.6.110 · praisonaiagents 1.6.110 · praisonai-code 0.0.8 · praisonai 4.6.110

Diagram

External

Tier 3 — praisonai (Wrapper)

Tier 2 — praisonai-code (Terminal CLI)

Tier 1 — praisonaiagents (Core SDK)

lazy bridge only

Protocols

Hooks and Events

Base Classes

Agent / Tools / Memory

run / chat / code

Typer CLI

Runtime / LLM / Tools

Gateway / Bots / Serve

framework_adapters

Integrations

praisonai-tools

TierPackageInstallOwns
1praisonaiagentspip install praisonaiagentsAgent, tools, memory, hooks, protocols
2praisonai-codepip install praisonai-codeTerminal CLI, runtime, LLM, tool resolution
3praisonaipip install praisonaiGateway, bots, framework adapters, train, serve

Publish order: praisonaiagents → praisonai-code → praisonai


CLI routing

Diagram

praisonai-code

praisonai

yes

no

User

Entry point

run / chat / code

Full CLI

Typer-first router

praisonai_code.cli.app

Legacy YAML / frameworks

Agentic hot path

Wrapper installed?

bot, gateway, pairing, …

Wrapper commands hidden

Commandpraisonai-code onlyFull praisonai
praisonai-code run "prompt"YesYes
praisonai gateway …NoYes
praisonai run --file agents.yaml --framework crewaiNoYes

Package Hierarchy (legacy view)

Diagram

praisonai-tools (External)

praisonaiagents (Core SDK)

praisonai (Wrapper)

User Code

Your Application

CLI Commands

Integrations

Heavy Implementations

Protocols

Hooks & Events

Base Classes

Decorators

Community Tools

Plugins


Core SDK Modules

agent/

Purpose: Agent class and execution

FileDescription
agent.pyMain Agent class (6549 LOC)
protocols.pyAgentProtocol, RunnableAgentProtocol
handoff.pyAgent-to-agent handoff
autonomy.pyAutonomous execution
tools/

Purpose: Tool SDK and registry

FileDescription
base.pyBaseTool class
decorator.py@tool decorator
registry.pyToolRegistry
protocols/tool_protocol.pyToolProtocol
memory/

Purpose: Memory persistence

FileDescription
protocols.pyMemoryProtocol, DeletableMemoryProtocol
memory.pyMemory implementation
file_memory.pyFile-based adapter
hooks/

Purpose: Hook system and middleware

FileDescription
events.pyHook event types
registry.pyHook registration
middleware.pyMiddleware chains
workflows/

Purpose: Multi-agent coordination

FileDescription
workflows.pyWorkflow engine
PatternsRoute, Parallel, Loop, Repeat
bus/

Purpose: Event bus for pub/sub

FileDescription
bus.pyEventBus class
event.pyEvent types

Data Flow

Diagram
MemoryToolLLMAgentUserMemoryToolLLMAgentUserstart(prompt)search contextrelevant memorieschat completionresponse + tool callsexecute toolresultstore interactionfinal response

Extension Points


Repository Map

Core SDK

praisonai-package/src/praisonai-agents/
├── praisonaiagents/
│   ├── agent/         # Agent execution
│   ├── agents/        # Multi-agent (Agents class)
│   ├── tools/         # Tool SDK
│   ├── memory/        # Memory adapters
│   ├── hooks/         # Hook system
│   ├── workflows/     # Workflow engine
│   ├── bus/           # Event bus
│   ├── policy/        # Policy engine
│   ├── knowledge/     # RAG/Knowledge
│   ├── context/       # Context management
│   ├── trace/         # Tracing
│   └── eval/          # Evaluation
├── tests/             # Test suite
└── AGENTS.md          # This guide

Terminal CLI (praisonai-code)

praisonai-package/src/praisonai-code/
├── praisonai_code/
│   ├── cli/             # Typer app, run/chat/code commands
│   ├── llm/             # Credentials, catalogue, config
│   ├── _wrapper_bridge.py  # Lazy wrapper access
│   └── tool_resolver.py
└── pyproject.toml       # No praisonai PyPI dependency

Wrapper (praisonai)

praisonai-package/src/praisonai/
├── praisonai/
│   ├── cli/commands/    # bot, gateway, pairing, …
│   ├── framework_adapters/  # CrewAI, AutoGen, PraisonAI
│   ├── bots/            # BotOS platform adapters
│   ├── gateway/         # WebSocket gateway
│   └── integrations/    # External integrations
└── pyproject.toml       # Depends on praisonai-code + praisonaiagents

Examples

praisonai-package/examples/
├── agent_tools/       # Tool examples
├── async_runs/        # Async patterns
├── background/        # Background tasks
├── checkpoints/       # State checkpoints
├── eval/              # Evaluation
├── guardrails/        # Safety examples
├── hooks/             # Hook examples
├── knowledge/         # RAG examples
├── memory/            # Memory examples
├── multi_agent/       # Multi-agent
├── observability/     # Monitoring
├── policy/            # Policy examples
├── streaming/         # Streaming
├── workflows/         # Workflow patterns
└── ... (65+ categories)

Documentation

PraisonAIDocs/docs/
├── agents/            # Agent guides
├── api/               # API reference
├── capabilities/      # Features
├── cli/               # CLI reference
├── concepts/          # Core concepts
├── features/          # Feature guides
├── guides/            # How-to guides
├── knowledge/         # Knowledge/RAG
├── memory/            # Memory guides
├── models/            # LLM configuration
├── observability/     # Monitoring
├── sdk/               # SDK reference
├── tools/             # Tool guides
└── tutorials/         # Tutorials

Design Methodology

  1. Three Tiers

    praisonaiagents (core) → praisonai-code (terminal CLI) → praisonai (wrapper). Code tier must not PyPI-depend on the wrapper.

  2. Protocol First

    Define abstract interfaces before implementations

    python
    class MemoryProtocol(Protocol):
        def store(self, text: str) -> str: ...
        def search(self, query: str) -> List: ...
  3. Lightweight Core

    Keep praisonaiagents minimal – protocols, hooks, base classes only

  4. Heavy in Wrapper

    Gateway, bots, framework adapters, and heavy integrations stay in praisonai

  5. Optional Dependencies

    Use pip install praisonaiagents[memory] for extras

  6. Lazy Loading

    Import heavy deps inside functions, not at module level


Key Files Reference

WhatLocation
Agent classpraisonaiagents/agent/agent.py
Tool decoratorpraisonaiagents/tools/decorator.py
BaseToolpraisonaiagents/tools/base.py
Memory protocolspraisonaiagents/memory/protocols.py
Hook eventspraisonaiagents/hooks/events.py
Event buspraisonaiagents/bus/bus.py
Workflow enginepraisonaiagents/workflows/workflows.py
Policy enginepraisonaiagents/policy/engine.py
Package exportspraisonaiagents/__init__.py
AGENTS guidepraisonai-agents/AGENTS.md