Skip to content

Introduction

envctl is a Nushell-native configuration compiler and execution engine for environment and secrets management. It provides a declarative way to manage your application's environment configuration, secrets, and PKI certificate chains.

Key Features

  • .env Generation: Generate .env files from declarative templates.
  • Secret Management: Generate secrets and deliver them to multiple backends (local files, Infisical, etc.).
  • PKI Management: Manage certificate chains (Root CA → Intermediate → Leaf) as part of your secrets pipeline.
  • Schema Validation: Every configuration and runtime context is validated against TOML-based schemas.
  • Drift Detection: Detect and report differences between your declarative config and the actual state on disk or in backends.
  • Nushell Native: Leverages the power of Nushell for type-safe and performant execution.

The Two-Phase Model

envctl operates on a strict two-phase execution model to ensure safety and predictability:

1. Compile Phase (Pure)

The compiler parses your .envctl.toml configuration, validates it against schemas, and builds an immutable Abstract Syntax Tree (AST). This phase is purely deterministic and has no side effects.

  • Parse: Read .envctl.toml and tokenize expressions.
  • Validate: Check configuration against schemas and link tokens.
  • Plan: Create an execution plan based on the requested profile.

2. Execute Phase (Side Effects)

The executor takes the validated plan and applies the necessary changes to the system.

  • Apply: Renders templates, calls backends to write secrets, and generates certificates.
  • Log: Updates the lock file and records the action in the state log.

Profiles

envctl uses "profiles" to control which parts of the configuration are executed:

ProfileDescription
envfileOnly generate and manage the .env file.
secretsOnly generate and manage secrets (including certificates).
allExecute both envfile and secrets phases.