Skip to main content
Admins can set a dollar limit on how much each configured LLM provider can spend over a fixed period, and how much any single user can spend against it. When a limit is reached, nao blocks further LLM calls across every channel (web chat, Slack, Microsoft Teams, Telegram, WhatsApp, Mattermost).
Budgets are admin-only. Open the admin panel and go to Settings -> Project -> Budgets.

Set a budget

  1. Navigate to Settings -> Project -> Budgets.
  2. Pick a provider (Anthropic, OpenAI, Azure OpenAI, Google, Mistral, AWS Bedrock, OpenRouter, Ollama). Providers declared in nao_config.yaml are listed here alongside the ones configured in the UI.
  3. Enter a project limit in dollars, a per-user limit, or both.
  4. Choose a reset period: day, week, or month.
  5. Save.
Each provider can have its own budget. Providers without a budget are unlimited.

Per-user limits

A project limit caps what the whole team can spend on a provider. A per-user limit caps what any one person can spend against that same provider, in the same period. The two are independent, and both are enforced:
  • A user who hits their own limit is blocked while everyone else keeps working.
  • When the project limit is reached, everyone is blocked regardless of individual headroom.
Use a per-user limit to stop one heavy user (or a runaway automation) from consuming the whole team’s budget before the period resets.
Per-user limits are gated by the user-budget feature on an Enterprise license. Without it, only the project limit applies. See Enterprise overview.

Setting budgets in nao_config.yaml

Budgets can also be declared next to the provider in your project config, so they are version-controlled with the rest of your context:
At least one of limit and per_user_limit is required. period defaults to month. These budgets show up on the Budgets page like any other.

How spend is tracked

For every LLM call, nao records the cost computed from the provider’s token pricing and attributes it to the provider’s current period. The Budgets page shows, per provider:
  • The configured limit and reset period
  • Current-period spend
  • Percentage of the limit used
Spend resets to zero at the start of the next period.

Alerts and cutoff

Warnings and cutoffs are evaluated against whichever limit is closest to being reached - the project one or the user’s own.
  • 80% to 100% used: a banner appears at the top of the chat, warning that the limit is close. It names which budget is running out (“your Anthropic budget” or “your personal Anthropic budget”) and when it resets.
  • 100% reached: nao blocks new LLM calls for that provider until the next reset. Someone who hits only their personal limit is blocked on their own; when the project limit is reached, everyone is.
  • On project cutoff: nao emails the organization admin(s) so they can raise the limit or wait for the reset.
The cutoff applies uniformly across channels: web chat, Slack, Microsoft Teams, Telegram, WhatsApp, and Mattermost all stop issuing calls to the blocked provider.

Unblocking

To resume traffic before the period resets, either:
  • Raise the limit (project or per-user) on the Budgets page, or
  • Switch the default model to another provider that still has budget available.
To reduce spend rather than cap it, tune the per-model thinking effort and max output tokens under Agent Settings.