PraisonAI Desktop

Native chat app that runs PraisonAI agents locally on macOS, Windows, and Linux

Next

PraisonAI Desktop is a native app that runs your PraisonAI agents locally with streaming chat, tool calls, approvals, MCP servers, per-conversation memory, and fine-tuning β€” no browser required. Sampling and reasoning effort are settable from Settings β†’ Models, so you can tune how the model responds without touching code. It ships as macOS DMGs (Apple silicon + Intel), a Windows NSIS installer, and a Linux .deb.

python
from praisonaiagents import Agent

agent = Agent(
    name="Assistant",
    instructions="You are a helpful assistant.",
)
# Talk to this agent from the PraisonAI Desktop app β€”
# it picks up your local venv automatically.
agent.start("Summarize this file")
Diagram

πŸ‘€ You

πŸ–₯️ Desktop App

🧠 Local Python Engine
127.0.0.1

πŸ€– PraisonAI Agent

πŸ”§ Tools & MCP

The app is a Tauri (Rust) shell that supervises a small Python engine on loopback. Chat text streams straight from that engine into the webview over 127.0.0.1 β€” nothing leaves your machine unless the model itself does.

Prefer a terminal? The Desktop engine ships with praisonai-desktop β€” see Headless CLI.

Quick Start

  1. Install a venv with praisonaiagents

    The app looks for a local virtual environment inside the checkout. Create one and install the SDK:

    bash
    cd src/praisonai-agents
    python3 -m venv .venv
    .venv/bin/pip install praisonaiagents
  2. Build the app from source

    The bundle targets are defined in src-tauri/tauri.conf.json (productName: "PraisonAI", identifier ai.praison.desktop): app, dmg, nsis, and deb. macOS builds require 10.15+.

    bash
    cd src/praisonai-desktop
    cargo tauri build
  3. Launch and watch the startup pill

    On first launch a status pill reports the engine’s state:

    PillMeaning
    starting engineThe shell is spawning Python
    Engine: updating…The venv drifted from the shipped requirement β€” the app is re-running the install step before starting the engine (see Troubleshooting β†’ Library fixes never reached an existing install (pre-4670))
    engine :PORTThe engine is listening and healthy
    engine failedStartup failed β€” the tail of the log is shown

How It Works

The Rust shell picks a Python interpreter, proves it owns its own site-packages, spawns the engine, then confirms the announced port with a /health probe before handing it to the webview.

Diagram
🌐 Webview🧠 Python EngineπŸ–₯️ Tauri Shell🌐 Webview🧠 Python EngineπŸ–₯️ Tauri Shellspawn server.py (unbuffered)PRAISONAI_PORT=51234GET /health (confirm){ok:true, version:2}engine :51234POST /chat (SSE stream)

Where the app looks for the venv, in order (src-tauri/src/main.rs):

OrderPath (relative to checkout)
1src/praisonai-agents/.venv
2src/praisonai-agents/venv
3venv

The first interpreter whose venv owns its own site-packages wins. A system Python or a mismatched venv is refused rather than guessed at.


System Requirements

Each release ships one file per platform β€” there is no universal build.

PlatformFile
macOS, Apple silicon...-macos-apple-silicon.dmg
macOS, Intel...-macos-intel.dmg
Windows 10/11, 64-bit...-windows-x64-setup.exe
Linux, 64-bit (Debian/Ubuntu)...-linux-x64.deb

On Debian/Ubuntu the .deb declares its own dependencies, so apt resolves them:

DependencyProvides
libwebkit2gtk-4.1-0The WebView
libgtk-3-0The window toolkit
`libayatana-appindicator3-1 \libappindicator3-1`The tray icon
curlFetching uv for first-run setup

The package is built on Ubuntu 22.04, so it runs on Ubuntu 22.04+, Debian 12, and anything newer. On an older distribution, build from source.


When To Use It

Diagram

Point, click, chat

Shareable browser UI

Automate / script

How do you want
to run agents?

πŸ–₯️ Desktop App

🌐 Web UI

🐍 Python Script

ChooseWhen
Desktop AppYou want a local, native chat window with approvals and per-conversation history
Web UIYou need a shareable browser experience
Python scriptYou are automating agents or embedding them in code

Best Practices

Keep the venv beside the checkout

The shell resolves the interpreter from fixed paths inside the checkout. Put your .venv at src/praisonai-agents/.venv so the app finds it without configuration.

Install praisonaiagents into that venv

A missing dependency surfaces as engine failed: missing dependency. Install praisonaiagents into the same venv the app resolves.

Read the pill, not the exit code

Every failure attaches the tail of the engine’s own output. Read the pill and the log viewer instead of guessing from a bare exit code.


Related