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.
Download
Grab the latest build from the Releases page, then pick the file for your platform:
| Platform | Download |
|---|---|
| macOS, Apple silicon (M1–M4) | PraisonAI-<version>-macos-apple-silicon.dmg |
| macOS, Intel | PraisonAI-<version>-macos-intel.dmg |
| Windows 10/11, 64-bit | PraisonAI-<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.
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.
- Move it to Applications
Drag PraisonAI to Applications.
- 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:
xattr -dr com.apple.quarantine /Applications/PraisonAI.appWindows
- Run the installer
Double-click
PraisonAI-<version>-windows-x64-setup.exe. - 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
- 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.
| Platform | Data 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:
| Key | Unlocks |
|---|---|
REPLICATE_API_TOKEN | MiniMax video-01 |
OPENAI_API_KEY | Sora 2 |
GEMINI_API_KEY / GOOGLE_API_KEY | Veo 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.
| ✅ Works | ❌ Rejected |
|---|---|
gpt-4o | ollama/llama3.2 |
gpt-4o-mini | anthropic/claude-3-sonnet |
gpt-5 | gemini/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
- Enter the bare model name
In Settings → Model, type
llama3.2— notollama/llama3.2. - Set the Base URL
In the Base URL field, enter
http://localhost:11434/v1(Ollama’s OpenAI-compatible endpoint). - 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.