Documentation Index
Fetch the complete documentation index at: https://docs.envless.cloud/llms.txt
Use this file to discover all available pages before exploring further.
On-disk cache
After the first successful load, the decrypted bundle is written to:0600.
On subsequent boots the loader reads this file first (~0ms), then revalidates against the API in the background. If the server has a newer version, the cache is updated for the next boot.
Cache lifecycle
| Event | Behavior |
|---|---|
| First boot | Fetch from API, decrypt, write cache. Blocking. |
| Subsequent boots | Read cache (instant). Revalidate in background. |
| Cache miss in CI | Fetch from API. No cache write (ephemeral runner). |
| Passphrase rotated | Cache fails to decrypt, falls back to fresh fetch. |
load({ revalidate: true }) | Skips cache, refetches. |
| Variable changed in dashboard | Picked up on next boot, or via dev-mode watcher. |
Dev mode
Framework adapters (@goenvless/envless/next, @goenvless/envless/vite) open a long-lived connection to the Envless API in development. When a variable changes in the dashboard:
- The server pushes the diff.
- The loader updates
process.envand theenvproxy in place. - The framework’s HMR kicks in for any module that imported a changed key.
Production
In production the cache is read once at boot and never revalidated automatically. Rotate a variable, restart the process, done. If you need live updates without restart, callload({ revalidate: true }) from a SIGHUP handler or a webhook.
Cold-start cost
| Scenario | Time |
|---|---|
| Cache hit (Node) | ~1ms |
| Cache hit (Bun) | <1ms |
| Cache miss, fetch + decrypt | 50–150ms |
| Edge (build-time inlined) | 0ms — values are literals |
Clearing the cache
~/.envless/cache/. Next boot rebuilds it.