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 Settings -> Project -> Budget. The page has two tabs: General, for the project-wide and per-user limits below, and Advanced, for member and group budgets.

Set a budget

  1. Navigate to Settings -> Project Settings & Budget.
  2. Pick a provider (Anthropic, OpenAI, Azure OpenAI, Google, Mistral, AWS Bedrock, OpenRouter, Ollama, or any OpenAI-compatible endpoint). 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.

Providers without built-in prices

nao ships token prices for the models of the major providers. For providers it cannot price on its own - OpenAI-compatible endpoints, Ollama, Azure deployments, or a custom model id - the Budgets page shows No token prices known for this provider until you declare the costs yourself:
  • In Models, open the model’s custom model dialog and fill in its Token cost fields (USD per million tokens), or
  • In nao_config.yaml, add a costs block to the model under llm.providers[].models. See Model costs.
As soon as one model of the provider has a price, the provider becomes eligible for a budget and its spend is computed from your prices.

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.

Member and group budgets

The project and per-user limits above cap spend per provider. Member and group budgets instead cap how much any single member can spend over a period, regardless of provider, and let you set that cap per user group. They live on the Advanced tab of the Budget page.
Member and group budgets require an Enterprise license with the user-budget feature. Admins see the Advanced tab without the license, but the editor is locked behind an upgrade prompt. The project-wide budget on the General tab is not gated.
Set a budget per user group:
  • The All Users group sets the default budget for every member.
  • Any other group replaces that default for its members.
  • A member’s personal budget always wins over their group budgets, and a member in several groups gets the most generous one.
A limit is a whole-dollar amount; 0 means no limit (unlimited). Pick a reset period of week, month (default), or year — periods reset in UTC. Each member’s effective cap resolves as: personal budget > the most permissive budget among their groups > the project default. A group budget can also be edited directly from the user group editor. Non-admins don’t see the Advanced tab. Instead, a read-only Your budget card shows their own cap and current-period spend.

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.
A model with no token cost set counts as $0 toward every limit, so its usage is invisible to budgets. When any configured model is unpriced, the Budget page shows a warning at the top listing each one, with a link to set its cost under Settings -> Project -> Agent, Models tab. Set a cost there to have its usage counted. See Model costs.

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.