Skip to main content
This page collects five complete profile configurations for common use cases, so you can start from a working example rather than build a profile template from scratch. Each example is a full POST /v1beta2/sandbox/profile-templates request body. Paste it into curl -d after you set $TOKEN, then adjust the fields you need. For field-by-field background, see Understanding profiles and the Profile reference.
CoreWeave sandboxes are in public preview. For access, contact your CoreWeave account team, CoreWeave Support, or email support@coreweave.com.

GPU data-science workbench

A long-lived per-user sandbox with an H100, PyTorch preloaded, generous memory, and internet egress to pull datasets and packages.
Profile template

CPU agent with allowlisted egress

A multi-tenant agent profile where each agent lands in its own user namespace, can reach only GitHub and the public npm or PyPI CDNs, and is Kata-isolated.
Profile template

Ephemeral CI runner

Short-lived, minimal resources, no persistent state, and restricted to a single CI namespace. No GPUs. gVisor is sufficient.
Profile template

Untrusted code execution

Defense-in-depth: Kata VM isolation, per-profile namespace, and zero egress.
Profile template

Long-running worker with internal service exposure

A background worker that other org sandboxes can reach on a ClusterIP service, with internet egress for outbound API calls.
Profile template

Attach templates to a runner

After you create the preceding profile templates, attach them to a runner so sandboxes can use them. A runner can bind multiple templates at once. The following runner hosts all five preceding profiles, with the CI template as the default:
Multi-profile runner
Sandboxes launched on this runner pick a profile by profileName (or get the ci-test-runner default).

Use binding overrides for per-runner tweaks

When you need the same template to behave differently on different runners, use binding overrides instead of a duplicate template. For example, you can attach the same agent-allowlist template to two runners, but tune the allowlist per region with overridesJson:
Binding override: different allowlist per region
Note the double-escaped JSON. networkConfigJson is itself a string field, and overridesJson is a string-encoded ProfileSpec that contains it. Apply overrides at higher-level fields (nodeSelector, runtimeClass, and resourceDefaults) where they don’t require nested escaping.

See also

Last modified on May 29, 2026