Skip to main content
Before you run your first Agent(...), run praisonai doctor --live to make sure your keys and dependencies are in order. The praisonai doctor command provides comprehensive health checks and diagnostics for your PraisonAI installation, configuration, and environment.

Quick Start

Full Setup Report

Running praisonai doctor with no subcommand runs the full multi-category setup report — the recommended first-run and troubleshooting path.
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.Requires text output — combine with --json in CI so machines get the structured report and humans get the guidance interactively.
All existing subcommands (env, mcp, runtime, etc.) are unchanged, and the --json full-report schema (version, results, summary) is unchanged. Existing CI scripts will not break.

Subcommands

Global Flags

Exit Codes

Root Command

CI Mode

Full Setup Report

Running praisonai doctor without a subcommand runs a comprehensive report combining environment, config, tools, and provider checks for first-run and operator troubleshooting.
When warnings or failures are found, a “Next steps:” footer lists numbered remediations:
The “Next steps:” footer is only shown when there are warnings or failures, and is suppressed by --quiet.

doctor fix Auto-Remediation

praisonai doctor fix runs safe auto-remediation for common setup issues.
--execute modifies files on disk. A .bak backup is created alongside the original unless --no-backup is passed. Always review the dry-run output first.
Phase-1 scope: migrate deprecated cli_backend YAML configuration to the new models.default.runtime format.

Examples

Environment Checks

Optional Dependencies (deep mode)

--deep enables the optional_deps check, which probes eight optional packages on daemon threads and reports each as available, missing, broken, or slow. A broken package (installed but failing to import) surfaces as WARN with a remediation message; missing and slow packages do not fail the check.
See Optional Dependencies Check for the four-bucket table, per-package timeout formula, and CI gating examples.

Configuration Validation

Database Checks

MCP Server Checks

Skills Diagnostics

Performance Analysis

Self-Test

Runtime Preflight

Validate multi-agent team YAML for runtime compatibility before AgentTeam.start(). No LLM calls or API keys required. See Runtime Preflight for the capability matrix and check IDs.

Runtime Migration

Detect and migrate legacy cli_backend fields to the new models.default.runtime format. See Runtime Config Migration for full details.

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; --execute applies changes.
  • A .bak backup is created on --execute unless --no-backup.
  • --file/-f targets a specific YAML; otherwise searches cwd.
  • --quiet/-q suppresses non-essential output.
praisonai doctor fix and praisonai doctor runtime --fix share the same underlying migration logic (_run_fix_mode) but expose different flag shapes and backup formats:
  • doctor fix--dry-run/--execute toggle · .bak backup file
  • doctor runtime --fix--fix + --execute · <stem>.backup.<YYYYMMDD_HHMMSS>.yaml backup
Prefer doctor fix for new usage; runtime --fix remains supported.
See also: Runtime Config Migration — describes the cli_backendruntime mapping that fix currently automates.

Docker Checks

LLM Provider Checks

Memory Store Checks

Metadata Store Checks

CI Integration

Filtering Checks

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.
Use --json for machine-readable output that does not depend on terminal encoding.

JSON Output Format

Optional Dependencies

praisonai doctor probes optional packages in parallel on daemon threads, one per package, with a per-package timeout. Packages probed:
  • chromadb — Knowledge/RAG features
  • crawl4ai — Web crawling
  • duckduckgo_search — Web search
  • praisonaiagents — Core agents
  • litellm — LLM providers
  • openai — OpenAI provider
  • anthropic — Anthropic provider
  • mem0 — Memory features
Each package falls into one of four outcome buckets: When any package is broken, the check reports WARN with the remediation message:
Reinstall the broken optional package(s): {names}
Daemon threads (rather than a ThreadPoolExecutor) are used deliberately: a pool’s worker threads are joined by its internal atexit handler at interpreter shutdown even after shutdown(wait=False), so a truly hanging import would still stall CLI exit. Daemon threads are abandoned on exit, so a hanging import can never block the process from terminating.

Check Categories

On a standalone pip install praisonai-code install (no praisonai wrapper), several check families skip with the reason “Install full wrapper: pip install praisonai” instead of failing — so praisonai-code doctor returns exit 0 when core checks pass (PR #2851, fixes #2838).Skipped IDs on standalone:
  • performance_praisonai_import (Performance)
  • acp_module (Tools / ACP)
  • praisonai_package_structure · console_script_execution (Packaging)
  • Existing family-level skips: runtime, bots, gateway, serve, acp, config_wrapper
The python_module_execution check does not skip — it retargets to python -m praisonai_code --version on standalone (and stays on python -m praisonai --version when the wrapper is installed).Install praisonai to run every check, or hide the skipped families with --skip runtime,bots,gateway,serve,acp,config_wrapper,performance_praisonai_import,acp_module,praisonai_package_structure,console_script_execution.

Environment (env)

  • Python version validation
  • Package installation checks
  • API key configuration
  • OS and architecture info
  • Virtual environment detection
  • Binary availability (git, docker, npx)
  • Optional dependencies deep probe (--deep) — runs concurrently with a per-package timeout; slow imports are reported as slow/skipped instead of blocking the full check.
praisonai doctor env --deep probes 8 optional packages in parallel with a per-package timeout (roughly timeout/4, minimum 1s, maximum 3s). Any package that stalls is reported as slow/skipped in the message and metadata.slow: true in JSON — the overall check still completes within the --timeout budget.

Configuration (config)

  • agents.yaml existence and syntax — the framework: field is validated against the adapter registry, so any installed adapter (built-in or third-party entry-point plugin) passes the check
  • workflow.yaml validation
  • .praison config directory
  • .env file detection

Tools (tools)

  • Tool registry access
  • Web search tools
  • File operation tools
  • Code execution tools
  • API key requirements

Database (db)

  • Driver availability (PostgreSQL, SQLite, Redis, MongoDB)
  • ChromaDB for RAG
  • Connection testing (deep mode)

MCP (mcp)

  • Configuration file validation
  • npx availability
  • Python MCP package
  • Server configuration validation
  • Server spawn testing (deep mode)

Observability (obs)

  • Langfuse configuration
  • LangSmith configuration
  • AgentOps configuration
  • PraisonAI telemetry

Skills (skills)

  • Skills directory discovery
  • SKILL.md validation
  • PraisonAI skills module
  • Capability requirements (active/degraded/unavailable counts, enforcement level)

Memory (memory)

  • Memory directories
  • JSON file integrity
  • Session storage
  • ChromaDB vector memory

Permissions (permissions)

  • ~/.praison directory
  • Project .praison directory
  • Temp directory
  • Current working directory
  • Config directory

Network (network)

  • DNS resolution (deep mode)
  • HTTPS connectivity (deep mode)
  • Proxy configuration
  • SSL/TLS settings
  • OpenAI base URL

Performance (performance)

  • Package import times
  • Slow import detection (deep mode)
  • Loaded module count
performance_praisonai_import skips with reason “Install full wrapper: pip install praisonai” when pip install praisonai-code is used without the praisonai wrapper (PR #2851).

Packaging (packaging)

  • praisonai_package_structure — validates the praisonai wrapper’s __main__.py entry point
  • console_script_execution — runs praisonai --version
  • python_module_execution — runs python -m {praisonai|praisonai_code} --version (retargets on standalone)
praisonai_package_structure and console_script_execution skip with reason “Install full wrapper: pip install praisonai” when pip install praisonai-code is used without the praisonai wrapper (PR #2851). python_module_execution does not skip — it retargets to python -m praisonai_code --version on standalone.

Self-Test (selftest)

  • Agent import
  • Agent instantiation
  • LLM configuration
  • Mock/live chat testing
  • Tools wiring

Runtime (runtime)

  • Team YAML runtime compatibility (--team)
  • Handoff and capability validation across agents
  • Mixed-runtime warnings
  • Legacy cli_backend migration (--fix, --execute) — also reachable via top-level praisonai doctor fix
  • Workflow YAML placeholder (--workflow — returns SKIP)
Skips with reason “Install full wrapper: pip install praisonai” when pip install praisonai-code is used without the praisonai wrapper.

Serve & Endpoints (serve)

  • Serve module availability
  • Endpoints module availability
  • Endpoints CLI handler
  • Server connectivity (deep mode)
  • Discovery endpoint (deep mode)
  • A2U module availability
  • Provider adapters availability
  • FastAPI availability
  • Uvicorn availability
Skips with reason “Install full wrapper: pip install praisonai” when pip install praisonai-code is used without the praisonai wrapper.

Bots (bots)

  • Bot token environment variables (bot_tokens)
  • Bot.yaml configuration file validation (bot_config) †
  • Bot security configuration checks (bot_security) †
  • Multi-channel token configuration validation (multi_channel_tokens) † — MEDIUM
  • Gateway config validation (gateway_config_validation) † — HIGH
  • Gateway security settings (gateway_security) † — HIGH
  • Gateway config migration (gateway_config_migration) † — MEDIUM
  • Gateway environment variables (gateway_env_substitution) — MEDIUM
Skips with reason "Install full wrapper: pip install praisonai" when pip install praisonai-code is used without the praisonai wrapper.
† Skips when the optional praisonai-bot package is missing. On CLI-only installs (pip install praisonai without the bot extra), these six checks report:
bot_tokens and gateway_env_substitution still run — they don’t need the bot schema. See Installation Extras for the full list of optional extras.

ACP

  • acp_module — ACP module import (praisonai.acp)
  • ACP server reachability
  • ACP protocol handshake validation
  • Agent Client Protocol configuration
Skips with reason “Install full wrapper: pip install praisonai” when pip install praisonai-code is used without the praisonai wrapper.

Multi-Channel Token Check Details

The multi_channel_tokens check validates your multi-channel bot setup: Category: BOTS
Severity: MEDIUM
PASS Conditions:
  • Each channel uses a unique environment variable
  • Each environment variable resolves to a unique token value
  • Follows PLATFORM_<ROLE>_BOT_TOKEN naming convention
WARN Conditions:
  • Environment variable doesn’t follow naming convention
  • Environment variable is unset but referenced in config
FAIL Conditions:
  • Two channels point to the same environment variable
  • Two environment variables resolve to the same token value
Skip Condition:
  • bot.yaml missing → check is skipped
Sample Remediation Messages:
  • “Each channel must have a unique bot token. Create separate bots in @BotFather and use unique environment variables.”
  • “Consider following the naming convention PLATFORM_ROLE_BOT_TOKEN for clarity.”

Gateway Config Validation (gateway_config_validation)

Severity: HIGH

Gateway Security (gateway_security)

Severity: HIGH

Gateway Config Migration (gateway_config_migration)

Severity: MEDIUM
See Gateway Config Migration for before/after examples.

Gateway Environment Variables (gateway_env_substitution)

Severity: MEDIUM