# Varianz ## Docs - [What is Varianz?](https://docs.varianz.io/index.md): Varianz makes integration testing as simple as unit testing: instrument functions once with VPoints, then control and observe them from your tests — against real running services. - [Quickstart](https://docs.varianz.io/quickstart.md): Run a local Varianz registry, instrument one function with a VPoint, and override it from a test — in Python, TypeScript, Go, Java, or Kotlin. - [Installation](https://docs.varianz.io/installation.md): Install the Varianz v0.2.1 SDK and test packages for Python, TypeScript, Go, Java, and Kotlin from pkgs.varianz.io. - [VPoints](https://docs.varianz.io/concepts/vpoints.md): A VPoint (variation point) is a named, interceptable seam around a function — registered once, safe in production, and controllable from tests. - [Stages](https://docs.varianz.io/concepts/stages.md): Stages are units of behavior attached to a VPoint — CEL expressions that override results, inject failures, or capture samples, running at pipeline anchors. - [Sessions](https://docs.varianz.io/concepts/sessions.md): Sessions scope stages to specific requests via the x-varianz-id header — tests get full control while production traffic flows through unchanged. - [The registry](https://docs.varianz.io/concepts/registry.md): The Varianz registry is the coordination service that holds VPoint schemas, routes stages to subscribed services, and streams samples back to tests. - [Instrument a service](https://docs.varianz.io/guides/instrument-a-service.md): Add VPoints to service classes, gRPC handlers, and existing functions in Python, TypeScript, Go, Java, and Kotlin. - [Propagate sessions](https://docs.varianz.io/guides/propagate-sessions.md): One-time setup per service: extract the x-varianz-id header, hold it in request context, and forward it to downstream calls — with or without OpenTelemetry. - [Override and observe behavior](https://docs.varianz.io/guides/override-and-observe.md): Use CEL stages in tests to replace results, inject failures conditionally, and capture samples of real behavior for assertions. - [Test across services](https://docs.varianz.io/guides/test-across-services.md): Drive multi-service flows from one test: override and probe downstream services in any language, trigger through the entry point, and assert end to end. - [Build integration](https://docs.varianz.io/guides/build-integration.md): Keep VPoint schemas static and in sync with your source: varianz-scan for Python and TypeScript, varianz-gen for Go, and the JVM annotation processor. - [AI-assisted test generation](https://docs.varianz.io/guides/ai-assisted-testing.md): Use the Varianz MCP server to let coding agents discover VPoints, inspect schemas, and generate validated CEL expressions and complete tests. - [Python SDK](https://docs.varianz.io/sdks/python.md): Instrument Python services with @vz.vpoint decorators: runtime setup, registration, schema resolution, sessions, and gRPC support. - [TypeScript SDK](https://docs.varianz.io/sdks/typescript.md): Instrument Node.js services in TypeScript or JavaScript with @vpoint decorators or createVPoints: registration, stages, sessions, and the registry connection. - [Go SDK](https://docs.varianz.io/sdks/go.md): Instrument Go services with varianz.VPoint and service registration: typed wrappers, field naming, sessions via context.Context, and varianz-gen codegen. - [Java SDK](https://docs.varianz.io/sdks/java.md): Instrument Java services with @VPoint annotations: the annotation processor, the varianz-agent, registry binding, Maven setup, and troubleshooting. - [Kotlin SDK](https://docs.varianz.io/sdks/kotlin.md): Instrument Kotlin services with @VPoint via the KSP-based io.varianz.sdk.kotlin plugin — setup gotchas, language limitations, and what it shares with Java. - [How tests work](https://docs.varianz.io/testing/overview.md): The Varianz test lifecycle: sessions, stage insertion, the sync barrier, triggering with x-varianz-id, and asserting on samples — plus the edge cases that matter. - [pytest](https://docs.varianz.io/testing/pytest.md): Test with the varianz-pytest plugin: the varianz fixture, stage insertion, sync, sample assertions, and HTTP/gRPC trigger patterns. - [Vitest](https://docs.varianz.io/testing/vitest.md): Test with @varianz/vitest: the varianz fixture, custom matchers, session-scoped stages, and concurrency caveats. - [Playwright](https://docs.varianz.io/testing/playwright.md): End-to-end browser tests with @varianz/playwright: the page carries the session header automatically while you override and observe backend VPoints. - [JUnit 5 and Kotest](https://docs.varianz.io/testing/junit.md): Test JVM services with the VarianzExtension: per-test sessions, stage insertion, sync, and sample assertions in JUnit 5 or Kotest. - [Go](https://docs.varianz.io/testing/go.md): Test with the varianztest package: sessions with automatic cleanup, CEL stages, and fluent sample assertions in standard go test. - [CEL reference](https://docs.varianz.io/reference/cel.md): The expression language for Varianz stages: args and ctx namespaces, invoke() and sample() builtins, supported syntax, optionals, and current limitations. - [Configuration](https://docs.varianz.io/reference/configuration.md): Environment variables and config files for the Varianz SDKs: enabling the SDK, registry endpoints, TLS, environment tags, and build-time switches. - [Naming and routing](https://docs.varianz.io/reference/naming-and-routing.md): How VPoint names canonicalize to org/pkg/scope/entity, how stage targets match by suffix, and how selector and environment filters scope delivery. - [Running the registry locally](https://docs.varianz.io/reference/local-registry.md): Run the Varianz registry server in Docker for local development and CI: image, ports, plaintext vs TLS, and Postgres-backed persistence. - [Support matrix](https://docs.varianz.io/reference/support-matrix.md): Languages, test frameworks, and platforms supported by Varianz v0.2.1 — and what to do for languages without an SDK. ## Optional - [varianz.io](https://varianz.io)