Original Reddit post

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: aenvvenv-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