Encryption at rest
Secret values are encrypted with AES-256-GCM before they’re stored - they’re never written in plaintext. The encryption key comes from theOPENLIT_VAULT_ENCRYPTION_KEY environment variable. If that’s not set, OpenLIT falls back to NEXTAUTH_SECRET.
Who can see a secret
Access to a secret depends on how it’s being accessed:- From the Vault page itself, secrets are per-user: only the person who created a secret can view, edit, or delete it there.
- Via API key (SDK or REST calls, see Retrieve Secrets), access isn’t scoped to a single creator - any valid API key for your OpenLIT instance can retrieve secrets by Key or Tag.
CORS for browser-based retrieval
CORS only matters if your application calls the secret-retrieval endpoint directly from browser JavaScript, from a different origin than your OpenLIT instance. It does not apply to server-to-server SDK or REST calls, since CORS is a browser-only mechanism enforced through theOrigin header - which server-to-server requests don’t send.
If you do need browser-based cross-origin retrieval:
-
Add your application’s origin to
OPENLIT_ALLOWED_CORS_ORIGINS. Comma-separate multiple origins: -
Two other environment variables are also checked and merged into the same allow-list, so an origin listed in any of the three is allowed:
OPENLIT_ALLOWED_ORIGINSandNEXTAUTH_URL. - Calls made from the exact same origin as your OpenLIT instance are always allowed automatically, regardless of the allow-list.
- Do not use wildcard origins for secret retrieval.
Server-to-server calls made from the SDK or a backend REST client are not subject to CORS at all - you don’t need to add anything to the allow-list for those.

