Your schema is portable. But each runtime loads environment variables differently. CtroEnv adapters bridge the gap — same validation logic, different data sources.
Node.js: process.env + .env Files
The @ctroenv/node adapter loads .env files and wraps process.env:
import { defineEnv, string, number } from "@ctroenv/core"
import { loadEnv } from "@ctroenv/node"






