runpod: global volumes and a region allow-list (v0.3.0)
Weights in one place, pods wherever a card is free.
`global_volume_id` attaches a RunPod GLOBAL volume (beta since Sept 2026):
region-independent storage, so unlike `network_volume_id` it does NOT pin the
pod's data centre — which is the only reason to use one. Resolved by its own
function precisely so the two cannot be confused: the region lookup stays under
the network-volume branch, and a test holds them apart.
`data_centers` is the other half. A single `data_center` pins one region and a
blank one lets RunPod pick any region on earth, so there was no way to say
"anywhere in the EU" — which is what data that may not leave the EU requires.
The list is tried in order, and each (card, region) pair becomes its own
candidate so the capacity fallback that already walks GPU options walks regions
too, with no new control flow. The pod handle records the region it actually
got, not the pool's first choice.
Two honest limits, both documented in the code and the guide. A global volume
must be created in the RunPod CONSOLE: POST /v2/network-volumes allows only
STANDARD|HIGH_PERFORMANCE and demands a dataCenter. And attaching is
console-documented only — no field exists in the Pod API reference, and the v1
REST validator accepts unknown body keys silently, so a wrong name cannot be
caught by probing; it yields a pod with no volume that re-downloads its
weights. We send globalNetworkVolumeId, overridable by
CODERAI_RUNPOD_GLOBAL_VOLUME_FIELD, and it must be verified on a real pod.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>
Showing
Please
register
or
sign in
to comment