Skip to main content
Supply the whole user-config layer from a single environment variable — no config.yaml is read or written to disk. Pairs with PRAISONAI_AUTH_CONTENT so one CI secret set provides auth and config for a stateless run.

Quick Start

1

Inline (YAML)

2

Inline (JSON)

3

Explicit path (PRAISONAI_CONFIG)

4

Auth + config in one env set (zero-disk CI)


Which one should I use?

Pick the source that matches where your config already lives.

Precedence

The env-config layer occupies the same slot as the discovered global/project files, so higher layers still win. Key rules:
  • PRAISONAI_CONFIG_CONTENT (inline) wins over PRAISONAI_CONFIG (path) — inline replaces the path layer entirely.
  • When either is set, no global/project config.yaml on disk is read for the user-config layer.
  • Per-key env vars (PRAISONAI_MODEL, OPENAI_API_BASE, …) and CLI flags still override the env blob.
  • Managed policy (permissions, model_allowlist) is still enforced on top.
A valid empty mapping ({}) is authoritative — it suppresses file discovery instead of falling back. Only invalid blobs (non-mapping / unparseable) warn and fall back to discovery.

Configuration Options


Provenance

See which layer supplied each key with the env-config: label.

Fallback & Warning Behaviour


Best Practices

It can contain provider URLs, tenant IDs, and deny rules. Inject only from a secrets manager; never commit it.
An auth blob plus a config blob together give a true zero-disk run — nothing touches ~/.praisonai.
Kubernetes ConfigMaps mounted as files pair naturally with the explicit path variable.
The env-config: label confirms the env layer won for each key.

CLI Configuration

The full layered precedence hierarchy.

Security Environment Variables

PRAISONAI_AUTH_CONTENT and other security env vars.

Managed Config Layer

Org-enforced policy on top of every layer.

XDG Base Directories

Where PraisonAI writes its persistent state.