Skip to main content
The coordinator ships as a Docker image. Unlike the SDK packages, the image needs a Varianz API key — download the archive from pkgs.varianz.io and docker load it (details). Everything below assumes the image is already loaded.

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.3), unlike the package-manager versions (0.2.3).

Flags and environment

Flags and environment variables override the config file.
On the published image the container port is fixed at 50051. The entrypoint is ["coordinator-server", "--port", "50051"], so:
  • COORDINATOR_PORT is silently ignored — the flag wins, the container starts, and the log still says listening on http://[::]:50051. No error anywhere.
  • Passing --port 50251 on the docker run line appends a second flag and the container exits with error: the argument '--port <PORT>' cannot be used multiple times. The TLS example below passes --port, so it needs the same treatment.
  • --port 0 for parallel CI jobs is therefore not available on this image.
Remap on the host instead — -p 50251:50051 — and point clients at the host port. To run several in parallel, give each its own host port or its own container network.

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

  • Give each job its own host port (-p <free>:50051) or its own container network to avoid collisions. --port 0 is not usable on the published image — see the warning above.
  • 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.