Inspect Capacity
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
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:
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, orfailed.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, so2090000is $2.09 an hour.terminating_reason: why a reservation ended. A reservation you released yourself showsmachine_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 interminating_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.
Bring Your Own Hardware
Runbeam pool join on the machine you want to add. It creates the pool if it doesn’t exist yet:
--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
Usebeam 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.