Skip to main content

PraisonAI 🦞

Python Tests PyPI version

AI Dashboard & Multi-Agent Platform — deploy agents with one Python file

PraisonAIUI gives you a full-featured AI dashboard with multi-agent chat, memory, skills, sessions, and 19 admin pages — all from a single app.py. It also supports YAML-driven chat bots and static documentation sites.

Quick Start

1. Install

pip install aiui

2. Create app.py

import praisonaiui as aiui

aiui.set_style("dashboard")

@aiui.reply
async def on_reply(message):
    return f"You said: {message.content}"

3. Run

aiui run app.py

Open http://localhost:8000 — your AI dashboard is live.

YAML Chat Mode

No Python needed — define your agent in YAML:

# chat.yaml
name: My Assistant
instructions: You are a helpful assistant.
model: gpt-4o-mini
welcome: "Hi! How can I help?"
starters:
  - label: "What can you do?"
    message: "Tell me about your capabilities"
profiles:
  - name: Expert
    description: Expert mode
    icon: 🎓
tools:
  - web_search
  - calculate
features: true
datastore: json
aiui run chat.yaml

Documentation Mode

Generate a static documentation site from Markdown:

aiui init
aiui build
aiui serve

UI Styles

Six distinct UI styles, selectable via --style or aiui.set_style():

Style Flag Description Best For
Dashboard --style dashboard Multi-page admin panel with sidebar Agent management, admin dashboards
Chat --style chat Fullscreen/sidebar/floating chat Conversational AI, customer support
Agents --style agents Tabbed multi-agent playground Agent experimentation
Playground --style playground Input/output side-by-side panels Prompt testing, comparison
Docs --style docs Three-column documentation layout Documentation sites, knowledge bases
Custom --style custom User-defined layout Full control
aiui run app.py --style dashboard
aiui run app.py --style chat
aiui run chat.yaml --style agents

Python SDK API

Write app.py using import praisonaiui as aiui:

Configuration

Function Purpose Example
aiui.set_style(style) Set UI style aiui.set_style("dashboard")
aiui.set_pages(ids) Whitelist sidebar pages aiui.set_pages(["chat", "agents", "memory"])
aiui.set_branding(title, logo) Configure branding aiui.set_branding("MyApp", "🚀")
aiui.set_datastore(store) Set persistence backend aiui.set_datastore(aiui.JSONFileDataStore())
aiui.set_provider(provider) Set AI provider aiui.set_provider(aiui.get_provider())
aiui.register_agent(config) Register an agent aiui.register_agent({"agent_id": "bot", ...})
aiui.remove_page(id) Remove a page aiui.remove_page("debug")

Callback Decorators

Decorator Purpose
@aiui.reply Handle chat messages
@aiui.welcome Welcome message on connect
@aiui.goodbye Cleanup on disconnect
@aiui.starters Suggest conversation starters
@aiui.profiles Define chat profiles
@aiui.page(slug, ...) Register a custom dashboard page
@aiui.on(event) Listen for server events
@aiui.login Handle authentication
@aiui.settings User settings handler
@aiui.resume Resume interrupted sessions

Message Functions

Function Purpose
await aiui.say(text) Send a message
await aiui.stream(text) Stream a response
await aiui.stream_token(token) Stream token-by-token
await aiui.ask(question) Ask user a question
await aiui.image(url) Send an image
await aiui.audio(url) Send audio
await aiui.action_buttons(buttons) Show action buttons

UI Components

Function Purpose
aiui.layout(children) Page layout container
aiui.card(title, content) Card component
aiui.chart(data, type) Chart (bar, line, pie)
aiui.table(headers, rows) Data table
aiui.columns(cols) Multi-column layout
aiui.text(content) Text block

Full app.py Example

"""Dashboard with three agents and a custom page."""
import os
import praisonaiui as aiui

# ── Style & pages ─────────────────────────────────────────────
aiui.set_style("dashboard")
aiui.set_pages([
    "chat", "agents", "memory", "knowledge",
    "skills", "sessions", "usage", "config", "logs",
])

# ── Branding ──────────────────────────────────────────────────
aiui.set_branding(title="PraisonAI", logo="🦞")

# ── Agents ────────────────────────────────────────────────────
aiui.register_agent({
    "agent_id": "researcher",
    "name": "Researcher",
    "description": "Finds and summarizes information",
    "instructions": "You are a research assistant.",
    "model": os.getenv("PRAISONAI_MODEL", "gpt-4o-mini"),
    "icon": "🔬",
})

aiui.register_agent({
    "agent_id": "coder",
    "name": "Coder",
    "description": "Writes clean, well-commented code",
    "instructions": "You are a coding assistant.",
    "model": os.getenv("PRAISONAI_MODEL", "gpt-4o-mini"),
    "icon": "💻",
})

# ── Custom page ───────────────────────────────────────────────
@aiui.page("explorer", title="Explorer", icon="🔬", group="Control", order=55)
async def explorer_page():
    return aiui.layout([aiui.text("Custom page content here.")])
aiui run app.py

Dashboard Pages

All built-in pages available for set_pages():

ID Icon Group Description
chat 💬 Agent AI agent chat
channels 📡 Agent Messaging platform connections
agents 🤖 Agent Configured AI agents
skills Agent Agent skills & plugins
memory 🧠 Agent Agent memory & knowledge
knowledge 📚 Agent Knowledge base & RAG
guardrails 🛡️ Agent Input/output safety guardrails
overview 📊 Control System health and statistics
sessions 📋 Control Conversation history
usage 📈 Control Token usage & metrics
cron Agent Scheduled jobs
jobs 📋 Control Async agent jobs
approvals Control Execution approval queue
nodes 🖥️ Control Execution nodes & presence
eval 📊 Control Agent evaluation & accuracy
api 🔌 Control OpenAI-compatible API endpoints
config ⚙️ Settings Server configuration
auth 🔐 Settings Authentication settings
logs 📜 Settings Server logs and events
debug 🐛 Settings Debug information
telemetry 📈 Settings Telemetry data
traces 🔍 Settings Distributed traces
security 🔒 Settings Security settings
inspector 🔍 Control API endpoint debugger (footer)

CLI Commands

Core Commands

aiui init [--template docs|minimal|marketing] [--frontend]  # Create project
aiui validate [--config FILE] [--strict]                     # Validate config
aiui build [--config FILE] [--output DIR] [--minify]         # Build static site
aiui serve [--port 8000] [--reload] [--style STYLE]          # Serve site
aiui run app.py [--port 8000] [--reload] [--style STYLE]     # Run AI server
aiui run chat.yaml [--port 8000] [--style chat]              # Run YAML chat
aiui dev -e examples [--port 9000]                           # Dev dashboard
aiui doctor [--json]                                         # Diagnostics
aiui test chat|memory|sessions|endpoints|all                 # Run tests

Management Commands

# Sessions
aiui sessions list|create|get|delete|messages

# Memory
aiui memory list|add|search|clear|status|context

# Skills
aiui skills list|status|discover

# Agents & Provider
aiui provider status|health|agents

# Config
aiui config get|set|list|history

# Schedules
aiui schedule list|add|remove|status

# Approvals
aiui approval list|pending|resolve

# Workflows
aiui workflows list|run|status|runs

# Hooks
aiui hooks list|trigger|log

# Eval
aiui eval status|list|scores|judges|run

# Traces
aiui traces status|list|spans|get

# Pages
aiui pages list|ids

# Features
aiui features list|status

# Health
aiui health [--detailed]

YAML Configuration

Site Config (config.yaml in ~/.praisonaiui/)

site:
  title: "PraisonAI"
  logo: "🦞"
  theme:
    preset: "zinc"       # 22 Tailwind color presets
    radius: "md"         # none, sm, md, lg, xl
    darkMode: true

pages:
  disabled:
    - debug
    - telemetry

Static Site Config (aiui.template.yaml)

schemaVersion: 1

site:
  title: "My Docs"
  theme:
    preset: "blue"
    darkMode: true

content:
  docs:
    dir: "./docs"

templates:
  docs:
    layout: "ThreeColumnLayout"

Theme Presets

22 Tailwind color presets with automatic dark/light mode:

zinc slate stone gray neutral red orange amber yellow lime green emerald teal cyan sky blue indigo violet purple fuchsia pink rose

Environment Variables

Variable Purpose Default
OPENAI_API_KEY OpenAI API key
PRAISONAI_MODEL Default model gpt-4o-mini
AIUI_DATA_DIR Data directory ~/.praisonaiui
AIUI_CONFIG Config file path aiui.template.yaml
AIUI_OUTPUT Build output dir aiui

Architecture

Dashboard Mode:                        Docs Mode:
app.py  →  aiui run  →  Server         aiui.template.yaml  →  aiui build  →  aiui/
               ↓                                                                ├── index.html
         http://localhost:8000                                                  ├── docs/*.md
         ├── /api/chat/ws (WebSocket)                                           ├── ui-config.json
         ├── /api/pages                                                         └── assets/
         ├── /api/agents
         ├── /sessions
         └── /ui-config.json

Development

git clone https://github.com/MervinPraison/PraisonAIUI.git
cd PraisonAIUI
pip install -e .[dev]
pytest tests -v

License

MIT © Praison Limited

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiui-0.3.130.tar.gz (4.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiui-0.3.130-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file aiui-0.3.130.tar.gz.

File metadata

  • Download URL: aiui-0.3.130.tar.gz
  • Upload date:
  • Size: 4.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aiui-0.3.130.tar.gz
Algorithm Hash digest
SHA256 c0436368fff5637f3bd1a52f3bde5238637726cf30295e2314d69e6fb0079621
MD5 887b5c29c992a8e904da0da6fce7d098
BLAKE2b-256 ad195b0fb8ad5da2cd10cddda03223b0679ec97948536aa7711e666b3518759b

See more details on using hashes here.

File details

Details for the file aiui-0.3.130-py3-none-any.whl.

File metadata

  • Download URL: aiui-0.3.130-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aiui-0.3.130-py3-none-any.whl
Algorithm Hash digest
SHA256 943ce9fe0abf745d0620f9a724c43dc81351e6daeb3e9e4f3f5abc160bb19bfc
MD5 43b026aa545dda5d8ffa2e99aa8a979c
BLAKE2b-256 12b2e652701227715d2b7875c5b0097672616b726855825738e5d9547233671b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.142

2 files

0.3.141

2 files

0.3.140

2 files

0.3.139

2 files

0.3.138

2 files

0.3.137

2 files

0.3.136

2 files

0.3.135

2 files

0.3.134

2 files

0.3.133

2 files

0.3.132

2 files

0.3.131

2 files

This release

0.3.130 This release

2 files

0.3.129

2 files

0.3.128

2 files

0.3.127

2 files

0.3.126

2 files

0.3.125

2 files

0.3.124

2 files

0.3.123

2 files

0.3.122

2 files

0.3.121

2 files

0.3.120

2 files

0.3.119

2 files

0.3.118

2 files

0.3.117

2 files

0.3.116

2 files

0.3.115

2 files

0.3.111

2 files

0.3.110

2 files

0.3.107

2 files

0.3.106

2 files

0.3.105

2 files

0.3.104

2 files

0.3.103

2 files

0.3.102

2 files

0.3.101

2 files

0.3.100

2 files

0.3.99

2 files

0.3.98

2 files

0.3.97

2 files

0.3.96

2 files

0.3.95

2 files

0.3.94

2 files

0.3.93

2 files

0.3.92

2 files

0.3.91

2 files

0.3.90

2 files

0.3.89

2 files

0.3.88

2 files

0.3.87

2 files

0.3.86

2 files

0.3.85

2 files

0.3.84

2 files

0.3.83

2 files

0.3.82

2 files

0.3.81

2 files

0.3.80

2 files

0.3.79

2 files

0.3.78

2 files

0.3.77

2 files

0.3.76

2 files

0.3.75

2 files

0.3.74

2 files

0.3.73

2 files

0.3.72

2 files

0.3.71

2 files

0.3.70

2 files

0.3.69

2 files

0.3.68

2 files

0.3.67

2 files

0.3.66

2 files

0.3.65

2 files

0.3.64

2 files

0.3.63

2 files

0.3.62

2 files

0.3.61

2 files

0.3.60

2 files

0.3.59

2 files

0.3.58

2 files

0.3.57

2 files

0.3.56

2 files

0.3.55

2 files

0.3.54

2 files

0.3.53

2 files

0.3.52

2 files

0.3.51

2 files

0.3.50

2 files

0.3.48

2 files

0.3.47

2 files

0.3.46

2 files

0.3.45

2 files

0.3.44

2 files

0.3.43

2 files

0.3.41

2 files

0.3.40

2 files

0.3.39

2 files

0.3.38

2 files

0.3.37

2 files

0.3.36

2 files

0.3.35

2 files

0.3.34

2 files

0.3.33

2 files

0.3.32

2 files

0.3.31

2 files

0.3.30

2 files

0.3.29

2 files

0.3.28

2 files

0.3.27

2 files

0.3.26

2 files

0.3.25

2 files

0.3.24

2 files

0.3.23

2 files

0.3.22

2 files

0.3.21

2 files

0.3.20

2 files

0.3.19

2 files

0.3.18

2 files

0.3.17

2 files

0.3.16

2 files

0.3.15

2 files

0.3.14

2 files

0.3.13

2 files

0.3.12

2 files

0.3.11

2 files

0.3.10

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page