# SDKInitOptions.license

Part of [Initialization](https://kernstra.com/docs/web-sdk/config/init) in the Kernstra Web SDK 1.0.0 configuration reference.

- Type: `string`
- Page: https://kernstra.com/docs/web-sdk/config/init/license

Your license token. A valid license — development or production — is **required**: `Kernstra.init()` verifies it before anything else happens; without one it shows a "License required" popup, rejects with `LICENSE_REQUIRED`, and never downloads the engine.

Pass the token to `init`, typically from your build's own variable, or set it where the SDK looks when none is passed: a `globalThis.KERNSTRA_LICENSE` string, a `<meta name="kernstra-license" content="…">` tag, or, in Node, `process.env.KERNSTRA_LICENSE`. The SDK ships prebuilt, so a bundler cannot substitute an environment variable into it; read the variable in your code. An empty or missing value means "no license given"; only `Kernstra.setLicense('')` signs out and forgets the cached token.

**Development tokens** watermark every rendered, printed and exported page with the Kernstra mark, so development output can never ship as production; they may name `*` and run on any host, or be bound to your local and staging origins. **Production tokens** are bound to your origins and render clean output.

**Secure context.** The SDK runs only where the browser provides the Web Crypto API — over HTTPS or on `localhost`. On a plain-HTTP origin it refuses to start (`LICENSE_REQUIRED`, reason `insecure-context`). This holds for offline (air-gapped) licenses too: an intranet deployment needs HTTPS, a self-signed certificate is enough. There is deliberately no fallback for plain HTTP. See [Licensing](https://kernstra.com/docs/web-sdk/guides/licensing) for origins, status checks, outages and what a stopped license means.

```ts
await Kernstra.init({ license: import.meta.env.KERNSTRA_LICENSE });
```

Web page: https://kernstra.com/docs/web-sdk/config/init/license
