Skip to main content
Use a compute pool to reserve machines or run Beam on your own hardware. Workloads routed to a pool run on its machines instead of on-demand capacity.

Inspect Capacity

Offers show the available provider, region, resources, and cost.

Reserve a Pool

beam pool scale requires both --ttl and --max-spend. --ttl sets the initial lease, and --max-spend caps what Beam can commit, in USD, when it picks offers for this reservation. Filter offers with --provider, --region, or --min-reliability, or pick one with --offer-id. Wait for the machines to become available before deploying. To choose from the cheapest offers interactively, use beam machine reserve. Pass --yes to take the cheapest offer without prompting:
Reserved machines are billed by the hour until they’re released, even when apps are idle, and their leases renew past --ttl. See How Reserved Nodes Are Billed.

Route Workloads

The pool argument works the same way on endpoint, task_queue, asgi, realtime, and Pod. It also accepts a Pool object, but if that object sets reservation fields such as nodes and ttl, every deploy, serve, or run reserves more nodes. Reserve nodes from the CLI and pass the pool name instead. For a container deployment:
The pool must have a machine with enough CPU, memory, and GPUs for the workload.

How Reserved Nodes Are Billed

When you reserve nodes, you set a lease length (--ttl) and a spend cap (--max-spend). Reserved nodes are billed by the hour from the moment they’re reserved, whether or not anything is running on them. Shortly before a node’s lease runs out, Beam renews it for another hour, as long as your workspace has enough credit to cover the usage so far plus one more hour. A reserved node therefore keeps running, and billing, past its original TTL until you release it or Beam releases it for you. With beam machine reserve, --ttl indefinite starts with a 30-day lease. --max-spend limits what Beam can commit when it picks an offer for a new reservation. It isn’t a running budget: it doesn’t stop nodes that are already reserved, and it doesn’t stop their hourly renewals.

Checking a Reservation

beam pool list --format json shows each pool’s reservations, including when the current lease ends and why a reservation was terminated:
  • status: pending, active, terminating, deleted, or failed.
  • expires_at: when the current lease ends, unless it’s renewed first.
  • billing_renewal_at: the next hourly billing boundary.
  • hourly_cost_micros: the hourly price in millionths of a dollar, so 2090000 is $2.09 an hour.
  • terminating_reason: why a reservation ended. A reservation you released yourself shows machine_released.

Extending a Reservation

beam pool extend --ttl moves the lease end of every reserved node in a pool to that long from now. It only extends leases and never shortens them. --max-spend raises the pool’s spend cap:

When Beam Releases Nodes for You

Beam terminates reserved nodes on its own in these cases. The reason appears in terminating_reason:
  • credit_exhausted: your workspace ran out of credit. Beam acts before the balance reaches zero, as soon as your available credit can’t cover the usage accrued so far plus about one more minute of usage.
  • billing_unreachable: Beam couldn’t check your balance for 10 minutes. To avoid unpaid usage, it releases the nodes even if you have credit left.
  • expired: the lease ended without being renewed, for example because there wasn’t enough credit for another hour or the provider rejected the renewal.
To keep reserved nodes running, keep enough credit in your workspace to cover them. Add credit in Settings → Credits.

Bring Your Own Hardware

Run beam pool join on the machine you want to add. It creates the pool if it doesn’t exist yet:
To add a machine that doesn’t have the Beam CLI, generate an install command and run it on that machine:
The command includes a join token, so treat it like a secret. The token expires after 30 minutes unless you pass a different --ttl; this doesn’t limit how long the machine stays in the pool. You can also add hardware under Compute in the dashboard. Machines you attach yourself aren’t leased, so they don’t renew or expire. They stay in the pool until you remove them with beam machine delete <machine-id>. If a machine stops checking in, Beam stops scheduling work on it.

Release Capacity

Use beam pool delete <name> to delete a pool and release its reserved machines. To release reservations and keep the pool, run beam machine release with a machine ID, or with --pool <name> to release everything reserved under that pool. Stopping an app does not release its machines.