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
Thepraisonai deploy group and the standalone praisonai-deploy console script share the same commands.
run / validate / plan / status / destroy
These commands read thedeploy: 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.doctor
Check that required host CLIs are present. See Doctor.docker / aws / azure / gcp
Provider shortcuts take the agent file as a positional argument.- docker
- aws
- gcp
- azure
Standalone Script
Installingpraisonai-deploy adds a praisonai-deploy console script that mirrors the praisonai deploy group.
Troubleshooting
UnicodeEncodeError on Windows (older builds)
UnicodeEncodeError on Windows (older builds)
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.ModuleNotFoundError: No module named 'flask' on Windows
ModuleNotFoundError: No module named 'flask' on Windows
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
Use --json for scripting
Use --json for scripting
--json on status returns machine-readable output you can pipe into other tools.Confirm destroys in CI
Confirm destroys in CI
Pass
--yes to destroy only in automation. Interactive runs should confirm before tearing down.Related
Doctor
Preflight readiness checks
Config Reference
Every deploy field and default
Custom Providers
Register your own cloud target

