Skip to main content
The praisonai CLI reads .praison.json from your project — and finds it automatically even when you run the CLI from a deep subdirectory.
The user runs the agent from any subdirectory; hierarchical config supplies merged settings.

Precedence

Quick Start

1

Drop .praison.json in your project root

2

Use an agent from anywhere inside the repo

The CLI discovers .praison.json automatically — no extra setup needed, even if you’re nested deep inside repo/src/deep/pkg/.
3

Verify what got merged


How Walk-up Works

  • Starts at project_dir (defaults to os.getcwd()).
  • At every level, checks .praison.json then praison.json (in that precedence order).
  • Stops at a directory containing .git — config never leaks across project boundaries.
  • When no .git is ever found, caps the walk at 10 ancestor levels to avoid accidentally picking up unrelated configs.
  • Nearest config wins — the first hit is returned.

Choose Your Mode

Default walk-up (recommended):
Disable walk-up (cwd only):
Explicit starting directory:

Walk-up Boundaries

The walk stops when it hits either:
  • A directory containing .git (inclusive — the git-root itself is still checked for configs).
  • 10 ancestor levels without finding any .git marker.

Configuration File Precedence


Configuration Schema

Top-level keys supported in .praison.json: Example .praison.json:

Common Patterns

Monorepo with per-package overrides: Place a root .praison.json with your default model, then add a packages/frontend/.praison.json for package-specific overrides:
Running praisonai run "..." from inside packages/frontend/ picks up the nearest config automatically. Pin model and permissions for the whole repo: A single .praison.json at the repo root applies to every subdirectory:
Test fixture isolation:

Constructor Parameters

Most users never need to import HierarchicalConfig directly — the CLI picks up .praison.json automatically. Use the import only when you need programmatic access or test isolation.

Best Practices

Every teammate gets the same model and permissions automatically — no manual setup, no environment drift.
.praison.json (hidden) is for project-default state checked in to version control. Reserve praison.json (visible) for local human-editable overrides you want to keep out of git.
Provider api_key values in .praison.json get committed to git. Store credentials in environment variables or a secrets manager instead.
Pass walk_up=False (or set an explicit project_dir to an isolated tmp_path) so tests do not inherit ancestor .praison.json files and become order-dependent or environment-sensitive.
Running the CLI from a subdir of an unrelated parent repo will not pull in that parent’s config. The .git marker is the safety boundary.

YAML CLI Configuration

.praisonai/config.yaml — a separate YAML-based config system, not affected by walk-up discovery.

Advanced Features

Other advanced CLI features including safe shell, file history, and output modes.

praisonai config subcommand

Reference for the praisonai config command (YAML system).

Context Files

Walk-up discovery for AGENTS.md / CLAUDE.md — the same boundary pattern applied to context files.