What is an IP pool?
An IP pool is a named set of proxy IP addresses that one or more targets draw from. Pools sit between providers (which declare the IPs) and targets (which define the routing rules and rate-limit policies).Why pools exist
Pools decouple IP supply from routing policy:- Shared IP set, independent state — multiple targets can reference the same pool definition. Each target maintains its own rotation queue and quarantine state independently, so a failure on one target does not affect the other.
- Flexible composition — a single pool can draw IPs from multiple providers, mixing regions or credential sets into one rotation.
- Runtime mutability — pools are first-class repository objects. You can add or remove IPs from a provider and the change propagates automatically through every pool that references it, and on to every target that references those pools.
Defining a pool
count controls how many IPs are taken from that provider’s list. Selection is deterministic (the first N IPs from the provider’s ipList) and graceful — if the provider has fewer IPs than count, all available IPs are used with no error.
Drawing from multiple providers
global-pool rotate across all 10.
Sharing a pool across targets
google-apis is still available for general.
Runtime pool management
Pools can be created, updated, and removed at runtime via the GraphQL API without restarting the server. When you add or remove an IP from a provider viaaddIpToProvider / removeIpFromProvider, the change cascades automatically:
- The provider’s
ipListis updated - All pools that reference that provider are recomputed
- All targets that reference those pools receive updated resolved IPs
- Live pool queues are updated — new IPs are pushed in; removed IPs drain naturally
Mutable vs immutable pools
Settingmutable: false on a pool prevents it from being updated or removed via the admin API. This is useful for production pools you want to protect from accidental mutation: