# Capacity

## Introduction

A **Capacity budget** is a named shared concurrency limit plus member
allocations. Pools keep their own origins and credentials. Attach an existing
pool to draw from the budget; detach leaves the pool's origins unchanged.

Use Capacity when interactive, batch, and partner pools must not over-admit the
same upstream together. Per-pool concurrency limits alone can drift. A budget
keeps one shared concurrency limit and the reservations in one place.

Capacity is available on Team and Business (and during trial). Starter does not
include Capacity budgets.

## Create a budget

1. Open **Capacity** in the dashboard.
2. Create a budget. Set the **shared concurrency limit** to the hard concurrency
   the upstream can take across every attached pool.
3. Attach existing pools. Each pool gets a reserved share of the shared
   concurrency limit. The sum of reserved shares cannot exceed that limit.

Create the pool first (with its origins and credentials), then attach it. There
is no create-from-budget or Adopt flow.

## Fixed vs Auto

Each budget has a **balancing** strategy:

| Strategy  | Behavior                                                                                                                      |
| --------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Fixed** | Each pool keeps the concurrency you allocate. No borrowing between pools. Default for new and existing budgets.               |
| **Auto**  | Each pool keeps a pinned reserve. Unreserved float moves toward load under the shared concurrency limit. Business plan. |

See [Balancing](/docs/capacity/balancing) for floors, float, borrow, and
tunables.

## Live view

The budget show page lists shared concurrency limit, sum reserved, float free,
and sum active. Under Auto, the member table also shows borrowed and lending
slots so you can see float follow load without leaving the dashboard. Lending
normally stays at zero. It can show a short nonzero value while older temporary
loans finish draining.

## Relationship to pool Concurrency

While a pool is attached to a budget:

- Origins and credentials stay on the pool (Settings).
- Editing **Max concurrency** on the pool Concurrency tab updates that pool's
  reserved share on the budget (and the reverse).
- Under Auto, Concurrency shows the floor, optional climb max, and borrowed
  slots. Adaptive concurrency (if enabled) remains an inner cap under the
  pool's entitlement. It never raises a pool above what the budget allows.

Detach leaves pool origins unchanged. Concurrency stays at the last allocation.

## Limitations

- Fixed sets each pool's concurrency allocation in the dashboard. Auto enforces
  the shared concurrency limit across members.
- Auto does not replace [within-pool concurrency](/docs/pools/concurrency)
  settings (queue, RPM, adaptive). Those still apply inside each pool.
- When reserved pins fill the shared concurrency limit, Auto has no float to
  lend. Raise the shared limit or lower reservations to create float.
- Capacity sets a shared in-flight concurrency limit across member pools. It does
  not route or transform requests. Two budgets may both admit against the same
  host; hostnames are not an exclusivity key.

## Next steps

- [Balancing](/docs/capacity/balancing)
- [Concurrency](/docs/pools/concurrency)
- [Share one origin across several pools](/docs/knowledge-base/capacity-auto)
- [Billing](/docs/billing)
