Skip to main content
praisonai deploy runs, inspects, and tears down a deployment from the terminal.
Platform support. praisonai-deploy and praisonai deploy work on Linux, macOS, and Windows out of the box — the CLI forces UTF-8 on stdout/stderr at entry so the Rich emoji banners (🏥 🔍 📋 🚀 ❌) never crash on default Windows consoles (cp1252). No PowerShell/Terminal encoding tweaks required. Background API deploys also launch the child process with sys.executable, so the API server always starts under the same interpreter as the parent venv. Fixed in PraisonAI PR #3611 and PR #3608.

Quick Start

1

Validate the config

2

Run the deployment

3

Check status


Commands

The praisonai deploy group and the standalone praisonai-deploy console script share the same commands.

run / validate / plan / status / destroy

These commands read the deploy: section of an agents.yaml file.

How deploy run --type api starts the server

The generated Flask server subprocess uses the same Python interpreter as the CLI itself (sys.executable) and inherits the parent process environment, so it always resolves the same praisonaiagents/flask install and picks up secrets like OPENAI_API_KEY without extra wiring.
On Windows and multi-Python setups, a bare python on PATH may resolve to a different interpreter than the one running the CLI — that used to break the server with ModuleNotFoundError: No module named 'flask'. The interpreter is now pinned so the server always runs where the packages actually are.

How deploy destroy --type api stops the server

praisonai deploy destroy finds the process bound to the API port and terminates it using OS-native tooling — no extra dependency to install.
If the discovery binary is missing (rare — e.g. a stripped container image), the command reports No API server running on port <port> instead of raising. If some of the discovered PIDs can’t be killed (permission error, gone process), destroy exits with success=False and lists the survivors in error=.

init

Generate a starter config for any type.
Provider names are case-insensitive, and a plugin name works the same way once its package is installed:
See Custom cloud providers to add your own target.

doctor

Check that required host CLIs are present. See Doctor.

docker / aws / azure / gcp

Provider shortcuts take the agent file as a positional argument.

Standalone Script

Installing praisonai-deploy adds a praisonai-deploy console script that mirrors the praisonai deploy group.

Troubleshooting

Older praisonai-deploy builds crashed with UnicodeEncodeError on default Windows consoles because the Rich banner prefixes use emoji that cp1252 cannot encode. Every command (doctor, validate, plan, run, api, docker, status, destroy) was affected. Upgrade to the version that includes PraisonAI PR #3611 — the CLI now reconfigures stdio to UTF-8 with errors="replace" at entry, so no workaround is required.
A background API deploy could fail with ModuleNotFoundError: No module named 'flask' when a bare python resolved to a different interpreter than the parent venv. Upgrade to the version that includes PraisonAI PR #3608 — the CLI now launches the child process with sys.executable, so the API server starts under the same interpreter as the parent.

Best Practices

--json on status returns machine-readable output you can pipe into other tools.
Pass --yes to destroy only in automation. Interactive runs should confirm before tearing down.

Doctor

Preflight readiness checks

Config Reference

Every deploy field and default

Custom Providers

Register your own cloud target