Help us shape the future of Go! Take the 2026 Go Developer Survey

dtvem.cli

module
v0.6.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: MIT

README ΒΆ

dtvem logo

dtvem - Developer Tools Virtual Environment Manager

A cross-platform virtual environment manager for multiple developer tools, written in Go, with first-class support for Windows, MacOS, and Linux - right out of the box.

Platform Go Version License Conventional Commits

Release

Documentation Β· Installation Β· Quick Start Β· Commands

πŸ€” Why dtvem?

Managing multiple versions of Python, Node.js, Ruby, and other runtimes across different projects is painful. Existing tools like nvm, pyenv, and rbenv work great on Unix systems but have limited or no Windows support. dtvem solves this by providing a single, unified tool that works seamlessly across all platforms.

Key Features

βœ… Cross-Platform: Windows, Linux, and macOS with identical behavior

βœ… Multiple Runtimes: Python, Node.js, Ruby (Go, Rust, Java coming soon)

βœ… Shim-Based: Automatic version switching without shell integration

βœ… Migration Tool: Import existing installations from nvm, pyenv, etc.

βœ… Per-Directory Versions: .dtvem/runtimes.json for project-specific versions

βœ… No Shell Hooks: Works in cmd.exe, PowerShell, bash, zsh, fish, etc.

See Compare for how dtvem compares to nvm, pyenv, asdf, and mise.

πŸ“¦ Installation

macOS / Linux:

curl -fsSL dtvem.io/install.sh | bash

Windows (PowerShell):

irm dtvem.io/install.ps1 | iex

See Getting Started for manual installation, building from source, and PATH configuration.

πŸš€ Quick Start

# Install a runtime version
dtvem install python 3.11.0
dtvem install node 20.0.0

# Set global default
dtvem global python 3.11.0

# Set project-local version
dtvem local node 18.16.0

# See what's active
dtvem current

# Migrate from nvm/pyenv
dtvem migrate node
dtvem migrate python

See Getting Started for more examples.

πŸ“š Documentation

Topic Description
Getting Started Install and get up and running
Commands Complete command reference
Configuration Config files and environment variables
Concepts How dtvem works (shims, version resolution)
Migration Import from nvm, pyenv, fnm, etc.
Compare vs nvm, pyenv, asdf, mise
Runtimes Supported runtimes and roadmap

🀝 Contributing

Contributions are welcome! See CONTRIBUTING.md for:

  • Setting up your development environment
  • Task runner commands for building and testing
  • Commit conventions and PR guidelines
  • CI/CD workflows and release process
  • Adding new runtime providers
Quick Setup
git clone https://github.com/CodingWithCalvin/dtvem.cli.git
cd dtvem.cli
./rnr check      # Run format, lint, and tests

Looking for something to work on? Check out good first issues.

πŸ‘₯ Contributors

CalvinAllen AlanBarber BradKnowles

πŸ“„ License

MIT License - See LICENSE file for details

Directories ΒΆ

Path Synopsis
src
cmd
Package cmd implements the CLI commands for dtvem
Package cmd implements the CLI commands for dtvem
cmd/shim command
Package main implements the shim executable that intercepts runtime commands
Package main implements the shim executable that intercepts runtime commands
internal/config
Package config manages dtvem configuration including paths and version resolution
Package config manages dtvem configuration including paths and version resolution
internal/constants
Package constants defines common constants used across dtvem
Package constants defines common constants used across dtvem
internal/doctor
Package doctor diagnoses dtvem configuration issues and, when asked, applies fixes for the subset of findings that can be safely remediated in-place.
Package doctor diagnoses dtvem configuration issues and, when asked, applies fixes for the subset of findings that can be safely remediated in-place.
internal/download
Package download provides utilities for downloading and extracting runtime archives
Package download provides utilities for downloading and extracting runtime archives
internal/lifecycle
Package lifecycle provides types for runtime version lifecycle status.
Package lifecycle provides types for runtime version lifecycle status.
internal/manifest
Package manifest provides types and utilities for managing runtime version manifests.
Package manifest provides types and utilities for managing runtime version manifests.
internal/migration
Package migration provides a plugin-style architecture for migrating from other version managers (nvm, pyenv, rbenv, etc.) to dtvem.
Package migration provides a plugin-style architecture for migrating from other version managers (nvm, pyenv, rbenv, etc.) to dtvem.
internal/path
Package path provides utilities for PATH environment variable manipulation
Package path provides utilities for PATH environment variable manipulation
internal/runtime
Package runtime defines the provider interface and registry for runtime managers
Package runtime defines the provider interface and registry for runtime managers
internal/shim
Package shim manages shim executables that intercept runtime commands
Package shim manages shim executables that intercept runtime commands
internal/tui
Package tui provides styled console output using lipgloss for rich terminal UI.
Package tui provides styled console output using lipgloss for rich terminal UI.
internal/ui
Package ui provides colored console output utilities for user interfaces
Package ui provides colored console output utilities for user interfaces
internal/version
Package version provides utilities for resolving partial version specifications to full semantic versions from a list of available versions.
Package version provides utilities for resolving partial version specifications to full semantic versions from a list of available versions.
migrations/node/fnm
Package fnm provides a migration provider for Fast Node Manager (fnm).
Package fnm provides a migration provider for Fast Node Manager (fnm).
migrations/node/nvm
Package nvm provides a migration provider for Node Version Manager (nvm).
Package nvm provides a migration provider for Node Version Manager (nvm).
migrations/node/system
Package system provides a migration provider for system-installed Node.js.
Package system provides a migration provider for system-installed Node.js.
migrations/python/pyenv
Package pyenv provides a migration provider for pyenv.
Package pyenv provides a migration provider for pyenv.
migrations/python/system
Package system provides a migration provider for system-installed Python.
Package system provides a migration provider for system-installed Python.
migrations/ruby/chruby
Package chruby provides a migration provider for chruby.
Package chruby provides a migration provider for chruby.
migrations/ruby/rbenv
Package rbenv provides a migration provider for rbenv.
Package rbenv provides a migration provider for rbenv.
migrations/ruby/rvm
Package rvm provides a migration provider for Ruby Version Manager (rvm).
Package rvm provides a migration provider for Ruby Version Manager (rvm).
migrations/ruby/system
Package system provides a migration provider for system-installed Ruby.
Package system provides a migration provider for system-installed Ruby.
migrations/ruby/uru
Package uru provides a migration provider for uru (multi-platform Ruby version manager).
Package uru provides a migration provider for uru (multi-platform Ruby version manager).
runtimes/node
Lifecycle computation is only used by the dtvem CLI (e.g., `list-all`) and embeds ~50KB of schedule.json.
Lifecycle computation is only used by the dtvem CLI (e.g., `list-all`) and embeds ~50KB of schedule.json.
runtimes/python
Package python implements the Python runtime provider for dtvem.
Package python implements the Python runtime provider for dtvem.
runtimes/ruby
Package ruby implements the Ruby runtime provider for dtvem.
Package ruby implements the Ruby runtime provider for dtvem.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL