Basic Commands
Full-Report Root Flags
Runningpraisonai doctor with no subcommand runs the full multi-category setup report.
When the report contains warnings or failures,
praisonai doctor prints a numbered “Next steps:” section listing the recommended remediation for each issue. Hidden when no issues exist, and suppressed under --quiet.Subcommand Reference
Environment Checks
Configuration Checks
Bot Config Checks
praisonai doctor validates bot.yaml and gateway.yaml via load_and_validate_gateway_yaml against the unified GatewayConfigSchema (BotYamlSchema is an alias). Common failures and fixes:
Single-bot (
platform + token), multi-channel (agents + channels), and BotOS (platforms:) YAML shapes all validate against the same schema. See Gateway Config Migration.Gateway Doctor Checks
Run individual gateway checks:Config version check
praisonai gateway doctor also inspects the config_version stamp in gateway.yaml. When the stamp is missing or stale, it reports drift and points at --fix:
--json output this sets config_version to "out-of-date". A stamp newer than this build supports — or a malformed one (true, "1", 1.0) — is refused, never migrated: config_version becomes "unsupported" and config_version_error carries the message. Doctor never downgrades a config a newer build wrote.
praisonai gateway doctor --fix migrates an out-of-date gateway.yaml forward: it applies the safe config migrations, stamps config_version, and rewrites the file atomically (tmpfile + fsync + os.replace), so an interrupted --fix cannot truncate the file. This is in addition to the existing weak-gateway.auth_token repair. --fix --dry-run previews with config: would … lines and writes nothing. See Gateway Config Migration › Doctor-driven migration.
Extending gateway doctor
Tool and channel packages can register their own checks via thepraisonai.health_checks entry point, and they run alongside the built-ins. See Extensible Gateway Doctor for the plugin author guide.
- Third-party checks appear next to the built-ins in
--list-checksand JSON output. --fixalso runs plugin repairs, with the same--dry-runpreview behaviour.- The loopback weak-token warning is routed to stderr, so
--jsonstdout stays a single parseable JSON document. --jsonoutput carries a top-levelhealthblock (checksRun/repaired/validated/results).- The exit code is
1whenever any residualerrorfinding remains — built-in or plugin.
Environment Deep Check — Optional Dependencies
See Optional Dependencies Check for the full four-bucket table, per-package timeout formula, and CI gating examples.
Packaging Checks
Diagnose Windows daemon and entry-point issues (python -m praisonai vs the praisonai console script):
Run
praisonai doctor packaging on Windows before registering PraisonAI as a scheduled task or NSSM service — misconfigured entry points are the most common cause of “daemon starts but immediately exits”.Tools Checks
Database Checks
MCP Checks
Observability Checks
Skills Checks
Auto-Remediation (doctor fix)
doctor fix runs safe auto-remediation for common setup issues. Phase-1 scope: migrate deprecated cli_backend YAML configuration.
Runtime Migration Checks
Detect and migrate legacycli_backend YAML fields to models.default.runtime. See Runtime Config Migration for the full guide.
Auto-Remediation (doctor fix)
praisonai doctor fix runs safe auto-remediation for common setup issues — dry-run by default, no changes without --execute.
Phase-1 scope: migrating deprecated cli_backend YAML configuration. This does not yet fix all possible issues.
- Dry-run by default;
--executeapplies changes. - A
.bakbackup is created on--executeunless--no-backup. --file/-ftargets a specific YAML; otherwise searches cwd.--quiet/-qsuppresses non-essential output.
cli_backend→runtime mapping that fix currently automates.
Runtime Preflight Checks
Validate team YAML for runtime compatibility, handoffs, and installed frameworks without LLM calls. See Runtime Preflight for the full guide.
Exit codes:
0 — no issues; 1 — issues detected or team file missing; 2 — internal error.
Docker Checks
LLM Provider Checks
Memory Store Checks
Metadata Store Checks
Memory Checks
Permissions Checks
Network Checks
Performance Checks
CI Mode
Self-Test
Global Flags
Status Symbols
The text formatter automatically picks symbols that match your terminal encoding.Detection runs once when the formatter starts. UTF-8 terminals always
use the Unicode symbols. Anything else (Windows default consoles,
legacy
cp1252/cp437, etc.) automatically falls back to ASCII so
praisonai doctor never crashes with UnicodeEncodeError.--json for machine-readable output that does not depend on terminal encoding.
Output Examples
Text Output
- UTF-8 terminals
- Windows cp1252
JSON Output
List Checks Output
CI/CD Integration
GitHub Actions
Exit Code Handling
Troubleshooting
Common Issues
Windows Unicode / encoding errors
As of v4.x,praisonai doctor auto-detects your terminal encoding and falls
back to ASCII status symbols ([OK] [!] [X] [-]) on non-UTF-8 consoles, so
the historical UnicodeEncodeError: 'charmap' codec crash on Windows
cmd.exe / PowerShell no longer happens. If you prefer Unicode output on
Windows, run one of:
--json.
