# direnv/direnv

unclutter your .profile

Repository: https://github.com/direnv/direnv
Canonical: https://ross.abutalabs.com/products/direnv
Homepage: http://direnv.net
Language: Go
License: MIT
License Family: permissive
Topics: direnv, environment, shell-extension, bash, zsh, tcsh, fish, shell, buildbot-numtide
Last push: 2026-03-31T18:52:06+00:00

## Health v2 (maintenance only)
Score: 64/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 75, release rhythm 28, longevity 100
- inputs: {"age_days": 5720, "days_push": 155, "days_rel": 409, "gap_med": 82, "n_releases_24m": 4}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 15401, forks 813 (observed 2026-08-28T04:11:09.788038+00:00)

## What it is
direnv is a shell extension that loads and unloads environment variables based on the current directory by evaluating an authorized .envrc (or .env) file. It is a single static Go binary that hooks into bash, zsh, fish, tcsh, and other shells to provide per-project environments without cluttering ~/.profile.

## Use cases
- load project-specific environment variables when entering a directory
- manage 12factor app configuration per project
- load deployment secrets into the shell automatically
- create isolated per-project development environments like rbenv or pyenv
- reuse .envrc files in GitHub Actions CI pipelines
- stop duplicating environment setup in ~/.profile

## When to choose
- you want directory-scoped environment variables that load and unload automatically
- you need per-project tool versions or secrets without editing your shell profile
- you want one language-agnostic tool shared across bash, zsh, fish, and other shells
- you want consistent env setup between local dev and CI

## When to avoid
- you are on a purely Windows workflow without a Unix-like shell
- you need container-level or system-wide environment management rather than per-directory shell env
- your team cannot tolerate an explicit allow-list security step for each .envrc

## Facets
- artifact type: cli-tool
- maturity: stable
- function: configuration-management, secrets-management, developer-tools, cli
- domain: developer-tools
- platform: windows, cli, cross-platform
- tags: environment-variables, shell-extension, envrc, dotenv, per-project-environments, shell-hook, command-line, automation, devops, linux, macos

## Member repositories
- direnv/direnv (main) score 64

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:11:09.788038+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:05:54.918124+00:00, confidence not recorded.
  - readme: https://github.com/direnv/direnv (fetched 2026-08-28T04:11:09.788038+00:00, sha f27f794e8611)
  - homepage: http://direnv.net (fetched 2026-08-29T08:04:07.218460+00:00, sha e782d6ca6548)
  - site_page: https://direnv.net/docs/installation.html (fetched 2026-08-29T08:04:07.227985+00:00, sha c500c015986e)
  - site_page: https://direnv.net/docs/hook.html (fetched 2026-08-29T08:04:07.229934+00:00, sha 25ad0a506a90)
  - site_page: https://direnv.net/docs/development.html (fetched 2026-08-29T08:04:07.231621+00:00, sha 4bbfa3bfc47f)
  - site_page: https://direnv.net/docs/ruby.html (fetched 2026-08-29T08:04:07.233621+00:00, sha 76544cc0360b)
  - site_page: https://direnv.net/docs/github-actions.html (fetched 2026-08-29T08:04:07.235628+00:00, sha 94eb568eb23d)
- Data as of 2026-08-30T08:39:29.467469+00:00.
