Desktop App

Download and run PraisonAI as a native app on Mac, Windows, or Linux — no Python setup

Download the app, run it, and the Python engine sets itself up on first launch. That’s it.

Diagram

First Launch

⬇️ Download

🖱️ Open past the OS warning

⚙️ App provisions Python

✅ Ready to use

Download

Grab the latest build from the Releases page, then pick the file for your platform:

PlatformDownload
macOS, Apple silicon (M1–M4)PraisonAI-<version>-macos-apple-silicon.dmg
macOS, IntelPraisonAI-<version>-macos-intel.dmg
Windows 10/11, 64-bitPraisonAI-<version>-windows-x64-setup.exe
Linux, 64-bit (Debian/Ubuntu 22.04+)PraisonAI-<version>-linux-x64.deb

Which download do I need?

Follow the branch for your machine.

Diagram

macOS

Windows 10/11

Debian/Ubuntu 22.04+

Chip: Apple M1/M2/M3/M4

Processor: Intel …

Your machine?

OS?

About This Mac says…

windows-x64-setup.exe

linux-x64.deb

macos-apple-silicon.dmg

macos-intel.dmg

Open it

The builds are unsigned, so each OS shows a warning the first time. Here’s the one-time click for yours.

macOS

Not sure which Mac you have? Open the Apple menu → About This Mac. “Chip” means Apple silicon; “Processor” means Intel.

  1. Move it to Applications

    Drag PraisonAI to Applications.

  2. Open it once

    Right-click it → Open → Open. That once is enough; afterwards it launches normally.

If macOS still refuses, clear the quarantine attribute your browser added when it downloaded the file:

sh
xattr -dr com.apple.quarantine /Applications/PraisonAI.app

Windows

  1. Run the installer

    Double-click PraisonAI-<version>-windows-x64-setup.exe.

  2. Get past SmartScreen

    Click More info, then Run anyway.

It installs for the current user only, into %LOCALAPPDATA%, so it never asks for an administrator password.

Linux

  1. Install with apt
    sh
    sudo apt install ./PraisonAI-<version>-linux-x64.deb

Use apt rather than dpkg -i so the WebKitGTK dependencies are resolved rather than just reported.

What happens the first time you open it

The app needs a Python environment to run its engine and offers to build one: it fetches uv, installs a pinned CPython, creates a virtual environment, and installs praisonaiagents into it. Nothing is installed system-wide, and nothing is written inside the app itself — everything lives in one folder.

Diagram
Data folderPraisonAIUserData folderPraisonAIUserLaunchFetch uvInstall pinned CPythonCreate venvpip install praisonaiagentsReady (≈500 MB, once)
PlatformData folder
macOS~/Library/Application Support/PraisonAI
Windows%APPDATA%\PraisonAI
Linux~/.local/share/PraisonAI (or $XDG_DATA_HOME/PraisonAI)

The folder appears as soon as you open the app; the ≈500 MB environment lands inside it once you click Get started.

On later launches the app also checks the venv against the shipped requirement and re-runs the install once if it drifted (the system tray reads Engine: updating… while it runs). This is why a fix in praisonaiagents reaches you on the next launch instead of requiring you to delete the venv by hand.

To remove the app completely, uninstall it and delete that folder.

Video generation

The Video tab has a model picker. MiniMax video-01 (Replicate) is a preset, not the only option — SDK-capable providers (OpenAI Sora 2, Google Veo 3.1) become selectable once their key is set. Add the relevant key to the .env file inside the data folder above:

KeyUnlocks
REPLICATE_API_TOKENMiniMax video-01
OPENAI_API_KEYSora 2
GEMINI_API_KEY / GOOGLE_API_KEYVeo 3.1

Models without a configured key appear disabled in the dropdown. See Video generation for the full walkthrough.

Which models work in the desktop app

The desktop app runs any plain OpenAI-compatible model id (a bare name, no provider/ prefix); to reach a different endpoint, keep the bare id and set a Base URL override in Settings.

Diagram

No, bare id

Yes, provider/model

🧩 Model id

Has a slash?

✅ Accepted

❌ Rejected at save

🌐 Optional Base URL → any endpoint

✅ Works❌ Rejected
gpt-4oollama/llama3.2
gpt-4o-minianthropic/claude-3-sonnet
gpt-5gemini/gemini-2.0-flash
llama3.2 (with a Base URL pointing at your Ollama server)any provider/model id

What the rejection message means

Saving a slashed id in Settings → Model returns this:

The model id “…” needs the LiteLLM provider path, which this build does not include. Use a plain OpenAI-compatible model id without a provider prefix (for example gpt-4o-mini); to reach another endpoint, keep the bare id and set a Base URL override.

This build ships a lean Python engine without the LiteLLM provider extra. Slashed provider ids need that extra. The remedy is a bare id plus an optional Base URL — not a re-install, and not pip install in your own Python, since the app manages its own environment.

Reach Ollama or another local endpoint

  1. Enter the bare model name

    In Settings → Model, type llama3.2 — not ollama/llama3.2.

  2. Set the Base URL

    In the Base URL field, enter http://localhost:11434/v1 (Ollama’s OpenAI-compatible endpoint).

  3. Save

    The picker accepts it, and turns route to your local server.

To reach Anthropic, Gemini, or others, use the same pattern: a bare model id plus a Base URL for any provider that exposes an OpenAI-compatible endpoint (or a proxy such as LiteLLM Proxy). See OpenAI-compatible endpoints and LiteLLM Proxy.

If it will not start

The window shows the reason and the engine log. Two common ones:

No usable Python

The setup screen offers to build the environment. If it fails, the step that failed is named along with what it printed.

Engine did not report ready in time

The first import of the ML stack is slow on a cold machine. Give it a minute; if it persists, the Engine log in the sidebar has the traceback.

Signing status

Related