Skip to main content
Provider credentials live in a separate env file outside the checkout, so Compose can’t erase them with empty defaults. Compose defaults leave every provider empty; provisioning is unavailable until you configure one.
1

Write the provider env file

Restricted to the deployment account, e.g. /run/secrets/merv-provider.env:
Variables per provider: Sandbox providers. Don’t also declare these names with empty values under the control service’s environment: map — Compose gives that map precedence over env_file.
2

Start with the file

Add MERV_REQUIRE_SANDBOX_BACKEND=1 to refuse startup if the selected provider is unhealthy.
3

Verify

Creates or reuses a smoke project, checks the provider, and exercises heavy object storage (--skip-storage to skip). With local MinIO from the host: RP_DOCTOR_URL_REWRITE=http://minio:9000=http://127.0.0.1:9000.

Fleet notes

  • A fleet (MERV_EXECUTION_BACKENDS) puts every named provider behind one multiplexer; agents choose per request with sandbox.request(provider=…), and ids are stored as <provider>:<native_id>.
  • Terminate a provider’s sandboxes before removing it from the list — its ids become unroutable on purpose.
  • Provider credentials and the management key stay in the brain’s secret store; they are never sent to agent clients. Heavy-storage presigned URLs are used by agent clients (and the doctor), so storage must be reachable from those machines.
  • Per-project provider settings (enable, daily USD limit, verify) are still managed in the UI under Settings → Compute.