Tools for managing and injecting configuration secrets into local development environments and application workflows.
direnv is a shell environment manager and directory-based environment loader that automatically loads and unloads environment variables when switching between directories. It functions as a shell hook automation tool, injecting logic into the shell configuration to trigger environment updates based on the current project context. The project acts as a development environment isolator by localizing shell configurations, which prevents dependency conflicts and removes project-specific exports from global profile files. It includes specialized integration for Nix, allowing the loading of environment variables from Nix shell or flake specifications directly into the session. Its broader capabilities cover language runtime management, including the automatic switching of versions and the use of predefined layout templates. It also provides security controls such as configuration file authorization and directory hierarchy trust to manage the execution of untrusted code. Additional utility surface includes remote script fetching with integrity verification and integration with various package managers.
This tool manages environment variables by automatically loading and unloading them based on your current directory, providing a seamless way to handle project-specific configurations in your shell.
Mise is a development environment orchestrator that manages software runtimes, environment variables, and task execution. It functions as a version manager and task runner, providing a unified interface to synchronize project-specific configurations and dependencies across different machines. By automating the installation and switching of tools, it ensures that development environments remain consistent and reproducible. The project distinguishes itself through a hierarchical configuration system that automatically discovers settings by traversing the directory tree. It uses shim-based command interception to dynamically inject the correct tool versions and environment variables into the shell session as you navigate between projects. This approach allows for seamless transitions between different runtime versions and project contexts without manual intervention. Beyond core version management, the system provides comprehensive environment control, including support for secret redaction, template expansion, and the loading of external configuration files. It enables project-scoped task automation, allowing developers to define and execute custom commands within isolated environments that are pre-configured with the necessary dependencies. The platform is extensible through a plugin model that supports custom installation logic and dynamic environment generation.
Mise is a comprehensive development orchestrator that natively manages, syncs, and injects environment variables into your shell, providing a robust solution for project-specific configuration even though its primary focus extends to runtime and task management.
godotenv is a Go library designed to load, parse, and serialize environment configuration files. It provides tools to extract configuration data from files into maps and inject those key-value pairs directly into the system environment of a Go application process. The project includes a configuration file serializer for exporting environment variable maps back into formatted files and a parser for extracting data without modifying the system environment. It supports injecting variables from strings or files into the process environment using priority-based overloading and overwriting. The library covers general environment variable management and application configuration, including utilities for secret management workflows and local development setup. It also provides capabilities for shell command wrapping to execute external processes with a merged set of environment variables.
This is a Go library for loading environment variables into application processes rather than a standalone CLI tool for managing and syncing environment configurations across different projects.