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

# SDK Overview

> Pick the right SDK for your stack. All SDKs share the same core contract.

## SDK matrix

| SDK                                    | Language                              | Use case               | Package                                      | Latest         |
| -------------------------------------- | ------------------------------------- | ---------------------- | -------------------------------------------- | -------------- |
| [Go](/sdks/go/index)                   | Go 1.25+                              | Backend services       | `gitlab.com/westyx/nexus/sdk/go`             | v0.11.0        |
| [Node.js](/sdks/nodejs/index)          | Node 22+                              | Backend / SSR          | `@westyx-nexus/sdk-nodejs`                   | v0.11.0        |
| [Python](/sdks/python/index)           | Python 3.11+                          | Backend services       | `westyx-nexus-sdk`                           | v0.11.0        |
| [.NET](/sdks/dotnet/index)             | .NET 8+                               | Backend services       | `WestyxNexus` (NuGet)                        | v0.11.0        |
| [Spring Boot](/sdks/spring-boot/index) | Java 17+, Spring Boot 3.5 / 4.0 / 4.1 | Spring Boot services   | `dev.westyx.nexus:nexus-spring-boot-starter` | v0.11.0        |
| [Kotlin](/sdks/kotlin/index)           | Kotlin/JVM 17+                        | Backend / JVM services | `dev.westyx.nexus:nexus-kotlin-sdk`          | v0.10.0        |
| [PHP](/sdks/php/index)                 | PHP 8.3+                              | Backend services       | `westyx/nexus` (Composer)                    | v0.10.0        |
| [Rust](/sdks/rust/index)               | Rust 1.75+                            | Backend services       | `westyx-nexus` (crates.io)                   | v0.10.1-beta.1 |
| [Angular](/sdks/angular/index)         | Angular 17+                           | Browser apps           | `@westyx-nexus/sdk-angular`                  | v0.10.0        |
| [React](/sdks/react/index)             | React 18+                             | Browser apps           | `@westyx-nexus/sdk-react`                    | v0.10.0        |
| [Vue](/sdks/vue/index)                 | Vue 3.3+                              | Browser apps           | `@westyx-nexus/sdk-vue`                      | v0.10.0        |

## Choosing an SDK

<CardGroup cols={2}>
  <Card title="Backend service" icon="server">
    Use Go, Node.js, Python, .NET, Spring Boot, Kotlin, PHP, or Rust. Backend services use secret keys (backend services only) and have access to **secrets, configs, and flags**. Workload Identity Federation (WIF) is supported on all backend SDKs.
  </Card>

  <Card title="Frontend / browser" icon="browser">
    Use Angular, React, or Vue. Browser SDKs use public keys (browser/frontend, safe to expose) and have access to **configs and flags only**. Secrets are never sent to the browser.
  </Card>
</CardGroup>

## Shared behaviour across all SDKs

All backend SDKs implement the same core contract:

* **TTL-based cache** - initial sync populates the cache; background refresh keeps it current without blocking callers
* **ETag / 304** - unchanged data resets the TTL without re-downloading the full payload
* **SSE live updates** - value changes propagate within milliseconds; falls back to TTL polling after 3 transport errors
* **402 handling** - when billing is blocked, background sync halts and the cached values are served until resolved
* **Quarantine handling** - 429 with quarantine body pauses sync until `expiresAt`; stream reconnects without counting as a transport failure
* **Service kind enforcement** - `GetSecret` is blocked with an error on `kind=frontend` services regardless of key type
* **Write API** *(v0.5.0)* - `SetSecret`, `DeleteSecret`, `DeleteSecretVersion` on all backend SDKs; public keys are rejected before the network call

## Versioning

The SDKs share a version line but do not all move together - a release goes out when that SDK has something to ship, so the numbers drift apart between rounds. The **Latest** column above is the current version of each; each SDK's own page carries its changelog.

Rust is still published as a beta (`v0.10.1-beta.1`); the stable release is deferred pending broader usage.

<Info>
  The PHP package (`westyx/nexus`) requires a Composer repository entry. See the [PHP SDK installation guide](/sdks/php/installation) for the full setup.
</Info>
