Envd
🏕️ Reproducible development environment for humans and agents
Last verified:
What is Envd?
envd is a command-line tool that helps you create container-based development environments specifically for AI/ML applications. It allows data scientists and AI/ML engineering teams to define their development environment using simple Python code instead of complex Dockerfiles, Bash scripts, or Makefiles. The tool builds isolated, reproducible environments that work consistently across local machines, public cloud VMs, and Kubernetes clusters.
Key features include multi-level caching (PyPI cache, APT cache) for faster builds, first-class support for Jupyter Notebook and VSCode remote extensions, seamless Docker integration for sharing and versioning environments via Docker Hub or OCI registries, CUDA/cuDNN support for GPU-accelerated ML work, conda and pip package management, remote building capabilities, and the ability to reuse team knowledge through the include() function for importing build functions from Git repositories. The tool requires only Docker (20.10.0+) as a dependency and uses Buildkitd for building.
envd is designed for data scientists, AI/ML engineers, and teams developing machine learning models who struggle with complex environment setup involving Python, CUDA, Docker, SSH, and multiple dependencies. It's particularly valuable for teams working on multiple projects concurrently who need to manage different environments, reproduce results, and collaborate without spending time configuring environments on colleagues' machines.
Envd pricing
Pricing model: Freemium
envd is completely free and open source under the Apache 2.0 license. There are no paid plans or tiers. The tool can be installed via pip (pip install --upgrade envd), Homebrew (brew install envd) on MacOS, pipx, or by downloading the binary directly. All features including caching, Jupyter/VSCode support, CUDA support, remote building, and Kubernetes integration are available without cost.
Envd pros
- Write environment config in Python instead of Dockerfile/Bash/Makefile
- Multi-level caching mechanism accelerates build process significantly
- PyPI cache shared across builds saves time on package downloads
- APT cache reduces redundant package downloads
- Simple CLI with single command 'envd up' to start environment
- Isolated and clean build environments
- Reproducible builds across laptop, cloud VMs, and containers
- First-class support for Jupyter Notebook integration
- First-class support for VSCode remote extension
- Compatible with OCI image specification for broad compatibility
- Works locally and on Kubernetes clusters with same experience
- Remote build support for resource-limited machines
- CUDA and cuDNN installation support for GPU workloads
- Conda and pip package management built-in
- Team knowledge reuse via include() function for Git repositories
- Custom base image support in v1 syntax
- Multiple language support (Python, R, Julia) in v1
- TensorBoard configuration support
- GPU support for training jobs
- Apache 2.0 open source license
Envd cons
- Requires Docker (20.10.0 or above) as mandatory dependency
- Learning curve for envd-specific Python DSL syntax
- v0 and v1 syntax differences may cause migration confusion
- Primarily focused on AI/ML use cases, less general-purpose
- Buildkitd required for building (implicit dependency)
- Less mature than traditional Dockerfile approach
- Smaller community compared to established tools (2.1k GitHub stars)
- Documentation primarily in English (Chinese version limited)
- Some features marked as experimental in v0 (serving, custom base)
- Requires bootstrap step after installation
- GPU support requires proper CUDA driver setup on host
- Remote build requires additional configuration
- v1 syntax is default only for envd>=1.0 causing version confusion
- Limited package pre-built images compared to Docker Hub
- Not ideal for non-ML development workflows
Frequently asked questions about Envd
What is envd?
envd (pronounced ɪnˈvdɪ) is a command-line tool that helps you create container-based development environments for AI/ML. It allows you to declare your environment dependencies in a simple Python file (build.envd) and start your environment with a single command 'envd up'. Unlike traditional Dockerfiles, envd uses Python as its configuration language and provides built-in support for ML-specific needs like CUDA, Jupyter, and VSCode.
Why should I use envd instead of Docker?
envd simplifies environment setup by letting you write Python instead of complex Dockerfiles, Bash scripts, or Makefiles. It provides multi-level caching (PyPI, APT) that significantly speeds up builds compared to Dockerfile. envd environments are reproducible across local and cloud platforms, offer first-class Jupyter/VSCode support out-of-the-box, and require no knowledge of Docker internals. You declare dependencies in build.envd and run 'envd up' to get your environment ready instantly.
How do I install envd?
envd can be installed multiple ways: via pip with 'pip install --upgrade envd', via Homebrew on MacOS with 'brew install envd', via pipx, or by downloading the binary directly using 'curl -sSfL https://envd.tensorchord.ai/install.sh | sudo bash'. After installation, you must run 'envd bootstrap' to initialize the environment. The only requirement is Docker version 20.10.0 or above.
How do I create my first envd environment?
Clone the envd-quick-start repository with 'git clone https://github.com/tensorchord/envd-quick-start.git', then run 'cd envd-quick-start && envd up'. This will parse your build.envd file, download/cache dependencies, build the environment image, and start your container. You can edit build.envd to add packages, configure Jupyter, or customize your shell. Use 'envd envs ls' to see running environments and their endpoints.
Does envd support Jupyter Notebook?
Yes, envd provides first-class support for Jupyter Notebook. Add 'config.jupyter()' to your build.envd file to enable it. After running 'envd up --detach', use 'envd envs ls' to get the Jupyter endpoint URL (e.g., http://localhost:42779). You can then access your notebook in a browser with the environment fully configured with all your dependencies.
How does envd caching work?
envd uses a multi-level cache mechanism to accelerate builds. PyPI packages are cached across builds, so if a package was downloaded before, it won't be downloaded again. Similarly, APT packages are cached. This significantly speeds up iterative development when updating environments by trial and error. The cache is managed automatically by Buildkitd, requiring no manual configuration.
Can I use envd on Kubernetes?
Yes, envd is cloud-native and works seamlessly on Kubernetes clusters. Use 'envd context use cluster' to switch to cluster context, then run 'envd up' with the same experience as locally. envd-server is available as a backend service that talks to Kubernetes and manages environments for users. You can also configure remote Buildkitd instances on Kubernetes for building.
What is the difference between envd v0 and v1 syntax?
Starting from envd v1.0, v1 syntax is the default for build.envd files. v1 adds support for serving, custom base images, installing multiple languages (Python, R, Julia), and uses moby builder by default. v0 is the default for envd<1.0 and has limited serving support marked as experimental. Both v0 and v1 support dev mode and CUDA. Users should check the upgrade documentation when migrating.