Skip to main content
The coordinator ships as a Docker image. Unlike the SDK packages on pkgs.varianz.io, the image is pulled from Google Artifact Registry and does need credentials — your team’s access is set up during onboarding (details).

Local development (in-memory, plaintext)

  • Listens on gRPC port 50051 (dual-stack). It logs LocalCoordinator listening on http://[::]:50051 (dual-stack) when ready.
  • State is in-memory — sessions, stages, and registrations reset on restart. That’s usually what you want for dev and CI.
  • COORDINATOR_INSECURE_PLAINTEXT=true (or the --insecure-plaintext flag) lets the server accept plaintext connections. The server is TLS-required by default and refuses to start without either TLS material or this flag.
Clients connecting to a plaintext coordinator need VARIANZ_INSECURE_ALLOW_PLAINTEXT=true in their environment — both sides must agree. Docker tags are v-prefixed (v0.2.1), unlike the package-manager versions (0.2.1).

Flags and environment

Flags and environment variables override the config file.

TLS for shared environments

For anything beyond a laptop — a shared dev cluster, CI infrastructure others connect to — run the coordinator with TLS:
Clients then need no plaintext override; if the CA isn’t in the platform trust store, point them at it with VARIANZ_TLS_CA (client TLS settings).

CI tips

  • Bind --port 0 and parse the logged port to avoid collisions between parallel jobs, or give each job its own container network.
  • Start the coordinator before the services under test: services register their VPoints at startup (fail-open with a ~5s timeout, so a late coordinator means lazily-degraded VPoints rather than crashes — but tests will then see zero subscribers).
  • Tests that only exercise behavior inside a single process don’t need a coordinator at all — see local stages.