Type-safe environment configuration for Gleam. Cross-platform, zero runtime dependencies.
Why the name?
envywas taken on Hex, soenvieit is. French for desire. You shouldn't be jealous of other languages' config loaders, just desire a better one. 🥐
gleam add envieimport envie
pub fn main() {
let port = envie.get_int("PORT", 3000)
let debug = envie.get_bool("DEBUG", False)
}- read/write env vars with no ceremony
- type-safe getters with defaults (
get_int,get_bool, ...) - strict
require_*validators (port, url, range, allow-list, ...) - composable decoders for custom rules
.envfile loading with overrides and multi-file priority- structured
schemafor full app configuration inspecttraces for debugging which values were usedtestinghelpers that restore env after each test- works on Erlang, Node.js, Bun, Deno; safe no-op in browsers
- Quick start: install, core API, type-safe getters
- Validated access:
require_*, custom decoders, errors .envfiles: single file, multiple environments- Schema: structured config and
inspecttraces - Testing utilities:
with_env,isolated - API reference: full function table, platforms, requirements
Gleam 1.14+, OTP 27+ on BEAM. Only gleam_stdlib.
Made with Gleam 💜
