Skip to main content
When a praisonai CLI run goes over its budget, you get a clean error message and exit-code 1 — no Python traceback.
The user runs praisonai from the terminal; when the agent exceeds its budget cap, the CLI exits with a clean message instead of a traceback.

Quick Start

1

Set a Budget in Your Agent

2

Run via CLI

If the run goes over $1.00, the CLI prints (in red):
…and exits with code 1.

How It Works

The praisonai CLI wraps every agent.start(...) / agent.chat(...) call in a budget handler. When the agent raises BudgetExceededError, the CLI:
  1. Prints a single-line, red, rich-formatted message including the actionable hint.
  2. Exits with code 1 so shell scripts and CI can detect the failure.
  • The same handler covers async (agent.astart()) and streaming paths — bots and gateway deployments route through here and respect max_budget identically.
This works across every CLI display mode: silent (-qq), quiet (-q), verbose (-v), debug (-vv), --output jsonl, --output json, --output flow, --output editor, and default.

Using the Exit Code in CI / Scripts

Exit code reference:

Why isn’t there a max_budget= shortcut on Agent?

By design. Per AGENTS.md §5.3 (Parameter Consolidation), execution-related knobs live on ExecutionConfig, not as new top-level Agent.__init__ parameters. This keeps the Agent constructor small and discoverable. The CLI’s error message points users to the one correct place to set a budget:

Catching the error in your own code

If you embed praisonaiagents directly (not via the CLI), you can catch the same exception:

Best Practices

Without max_budget, a runaway agent can rack up costs unbounded. Pick a cap based on a few un-budgeted dev runs.
The graceful exit means CI detects the failure cleanly — no need to grep tracebacks.
There isn’t one. Use execution=ExecutionConfig(max_budget=...) — that’s the only supported pattern.

Budget Management

Full SDK API for budgets, cost tracking, and on_budget_exceeded actions

Execution Configuration

All execution settings including retries, timeouts, and rate limits