envil envil Docs

Resolver Adapters

Attach authoritative secret providers directly to server variables.

Configure provider-wide options once, then attach references to individual schemas with fromResolver:

import {
  configureResolver,
  createEnv,
  fromResolver,
  requiredString,
  server,
} from "@ayronforge/envil";
import { awsSecretsAdapter } from "@ayronforge/envil/aws";

const aws = configureResolver(awsSecretsAdapter, {
  region: "us-east-1",
});

export const appEnv = createEnv(
  server({
    DATABASE_PASSWORD: requiredString.pipe(
      fromResolver(aws, "production/database#password"),
    ),
    STRIPE_API_KEY: requiredString.pipe(
      fromResolver(aws, "production/stripe#api-key"),
    ),
  }),
);

Resolver-backed values:

  • are allowed only in server fragments;
  • are authoritative and never fall back to the runtime environment;
  • are automatically wrapped in Effect Redacted;
  • preserve schema optionality;
  • contribute their precise errors and Effect requirements to appEnv.server;
  • are grouped by configured resolver so adapters can batch requests.

The provider reference is never included in validation errors, resolver errors, CLI output, or type-only CLI metadata.