> ## Documentation Index
> Fetch the complete documentation index at: https://docs.varianz.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Support matrix

> Languages, test frameworks, and platforms supported by Varianz v0.2.1 — and what to do for languages without an SDK.

## Application SDKs (instrument services)

| Language                | Package / plugin                            | Import / symbol                                                      | Platforms                                                                                  |
| ----------------------- | ------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Python                  | `varianz`                                   | `from varianz import Varianz`; `@vz.vpoint()`                        | CPython 3.10–3.15, PyPy 3.11 · macOS (x86\_64, arm64), Linux glibc/musl (x86\_64, aarch64) |
| TypeScript / JavaScript | `@varianz/node`                             | `createVPoints`, `@vpoint`, `VarianzContext`                         | Node.js 22+ · macOS (arm64, x64), Linux glibc/musl (x64, arm64)                            |
| Go                      | module `go.varianz.io/sdk`                  | `import "go.varianz.io/sdk/varianz"`; `varianz.VPoint(vz, name, fn)` | `CGO_ENABLED=1`, glibc-based Linux images or macOS                                         |
| Java                    | Gradle plugin `io.varianz.sdk` (or Maven)   | `io.varianz.annotations.vpoint.VPoint`                               | JVM 17+ · glibc and musl (Alpine) images                                                   |
| Kotlin                  | Gradle plugin `io.varianz.sdk.kotlin` (KSP) | `io.varianz.annotations.vpoint.VPoint`                               | Same as Java                                                                               |

Windows is not supported in v0.2.1 for any SDK.

Varianz packages are published only under the exact coordinates above — if an import or package name differs from this table, it isn't Varianz.

## Test SDKs (drive tests)

| Framework                     | Package                         | Notes                                          |
| ----------------------------- | ------------------------------- | ---------------------------------------------- |
| pytest                        | `varianz-pytest`                | Auto-registers; `varianz` fixture              |
| Vitest                        | `@varianz/vitest`               | Fixture + custom matchers                      |
| Playwright                    | `@varianz/playwright`           | Browser-driving; auto session header on `page` |
| JUnit 5                       | `io.varianz:varianz-junit`      | `VarianzExtension` + `VarianzSession`          |
| Kotest                        | `io.varianz:varianz-kotest`     | Same lifecycle for Kotest specs                |
| Go `testing`                  | `go.varianz.io/sdk/varianztest` | In the SDK module                              |
| Anything with lifecycle hooks | `@varianz/test` (Node)          | Framework-agnostic helpers (`node:test`, etc.) |

Test-side and service-side are independent: any test framework drives services in any supported language. See [Test across services](/guides/test-across-services).

## Feature availability differences

| Capability                       | Python                                                     | TypeScript                                             | Go                                             | Java/Kotlin                                    |
| -------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------- | ---------------------------------------------- |
| `VARIANZ_ENABLED` runtime toggle | ✅                                                          | ✅                                                      | ✅                                              | ✅ (interception also needs the agent attached) |
| Build-time schema tool           | `varianz-scan`                                             | `@varianz/scanner`                                     | `varianz-gen`                                  | annotation/KSP processor (automatic)           |
| Schema resolution                | type annotations, with runtime introspection as a fallback | scanner-derived from TS types, decorators as overrides | eager reflection, or codegen via `varianz-gen` | compile-time, from method signatures           |
| Session carrier                  | `contextvars`                                              | `AsyncLocalStorage`                                    | `context.Context`                              | pull-based `@VarianzId` function               |

## Languages without an SDK

Services in other languages (C#, PHP, Elixir, …) can't host VPoints, but they participate in tests by **forwarding the `x-varianz-id` header** to downstream calls — see [Test across services](/guides/test-across-services#services-without-an-sdk).
