https://github.com/wnsdy95/aenv
aenv — venv for Claude Code Per-project isolation for Claude Code plugins, MCP servers, rules, sessions, and secrets. Claude Code stores almost everything in one global ~/.claude directory: plugins, MCP servers, sessions, credentials, rules, and project-specific settings. That works fine until you use Claude Code across multiple projects. A risky plugin tested in one sandbox can become globally available. Your work MCP allowlist can conflict with your side project. Team members cannot easily reproduce the same known-good Claude Code setup. aenv solves this by treating each Claude Code configuration as an isolated, declarative environment — like venv for Python or rustup for Rust, but for Claude Code. bash aenv new my-project # create an isolated environment aenv add plugin engineering@1.4.0 --source git+https://... aenv install # generate aenv.toml + aenv.lock git add aenv.toml aenv.lock # share with your team
What aenv isolates
Plugins
Each environment declares its own plugins.
On launch, the supervisor builds
enabledPlugins
from the environment manifest. Globally installed plugins that are not declared by the current env stay invisible.
If the plugin overlay cannot be generated,
aenv
fails closed.
MCP servers
Each environment runs with its own strict MCP configuration.
Secrets are resolved from the OS keyring, so sensitive values are not written in plaintext to
aenv.toml
or
settings.json
.
upcoming:
CLAUDE.md
and rules
Project rules and Claude instructions can be distributed through the manifest.
Sensitive rule files can be loaded from
age
-encrypted sources and decrypted with SSH keys.
Cross-platform reproducibility
aenv.lock
is content-hashed and platform-independent.
It normalizes filenames with NFC and excludes mode bits, so the same lockfile can reproduce the same environment across macOS, Linux, and Windows.
In-Claude switching
Use slash commands inside Claude Code:
/aenv:use /aenv:reload
The supervisor relaunches Claude Code with
–resume <session>
, so you can switch environments without manually rebuilding your setup.
Status
Pre-1.0. Licensed under MIT / Apache-2.0.
Install
cargo install --git https://github.com/wnsdy95/aenv --locked 더 짧은 Show HN 버전은 이렇게 가면 좋습니다. md Show HN: aenv — venv-style isolated environments for Claude Code I built `aenv`, a venv/rustup-style environment manager for Claude Code. Claude Code currently puts plugins, MCP servers, sessions, credentials, and rules into a single global `~/.claude` directory. That becomes messy once you use Claude Code across work projects, experiments, and shared team setups. `aenv` gives each project its own isolated, declarative Claude Code environment. bash aenv new my-project aenv add plugin engineering@1.4.0 --source git+https://… aenv install git add aenv.toml aenv.lock
It isolates:
Plugins: only plugins declared by the env are visible
MCP servers: strict per-env MCP config
Secrets: resolved from the OS keyring, not stored in plaintext
upcoming
:
CLAUDE.md/rules:
distributed through the manifest, with support for encrypted sources
Reproducibility: platform-independent content-hashed lockfile
It also supports
/aenv:use
and
/aenv:reload
slash commands inside Claude Code. The supervisor relaunches Claude Code with
–resume <session>
so you can switch environments without losing context.
Pre-1.0, MIT/Apache-2.0.
cargo install --git https://github.com/wnsdy95/aenv --locked
submitted by
/u/Extension_Zebra5840
Originally posted by u/Extension_Zebra5840 on r/ClaudeCode
