Skip to main content
One .praisonai/config.yaml wires your project’s full agent runtime — model, MCP servers, permissions — for every praisonai run in the directory. Values can reference ${VAR}, {env:NAME:-default}, or {file:./relative/path} — see Value Interpolation — and praisonai config provenance shows which layer/file supplied each key.
The user keeps settings in .praisonai/config.yaml; every praisonai run in the project loads that single source.

Quick Start

1

Drop a config file

Create .praisonai/config.yaml in your project root:
2

Run anywhere in the project

Model, MCP server, and permission rules are picked up automatically — no flags needed.
3

Verify resolution

Shows which layers contributed (defaults, global, project, env, CLI).

How It Works

The resolver deep-merges five layers (highest wins): CLI flags always win. Config fills the gaps.

Configuration Schema

mcp.servers.<name>

praisonai run wires every enabled server under mcp.servers.* — multiple local (stdio) servers and remote (url: / type: remote) servers are all aggregated and exposed to the agent. Servers with enabled: false are skipped silently. If --mcp "<command>" is also given on the command line, its tools are added on top of the config servers, not in place of them.

permissions

Two equivalent forms: Structured (rule list):
Flat mapping:

Precedence

  • --mcp, if present, merges with config-declared servers — CLI ad-hoc tools are added alongside every enabled config server.
  • --allow / --deny / --permissions are merged on top of config rules — CLI wins per-pattern.
  • --permission-default sets the fallback action, overriding permissions.default from config.

Common Patterns

Pin a model + a single MCP server

CI-safe defaults

All tool calls are denied unless explicitly allowed — safe for unattended CI runs.

Mix with CLI flags

Config gives the base; flags override per-run:

Declare-but-not-wire a server


Best Practices

Checked-in config ensures every teammate and CI runner uses the same model, MCP servers, and permission defaults automatically.
mcp.servers.<x>.env is fine for non-secret config values (paths, flags). For API tokens, use shell environment variables — they are read by the server process at runtime without being stored in YAML.
When behaviour is unexpected, praisonai config show --sources prints exactly which layer won for each key.
The rules: list is evaluated in order; priority fields are respected. The flat mapping form is convenient for simple deny lists but gives no ordering guarantees.

CLI Configuration

Full cascade reference for the praisonai CLI config layers

Declarative Permissions

All surfaces for pre-declaring allow/deny rules

MCP Transports

Remote MCP server configuration

Config CLI Reference

praisonai config subcommand reference