vx - Universal Development Tool Manager
π The ultimate development tool manager - One tool to rule them all
β οΈ Early Development Stage
This project is currently in early experimental development stage. Features and APIs may change significantly between versions. Use with caution in production environments.
- π¬ Experimental: Core features are being actively developed and tested
- π§ Breaking Changes: APIs and configurations may change without notice
- π Feedback Welcome: Please report issues and share your experience
- π― MVP Focus: Currently supports UV, Node.js, Go, and Rust tools
- π Release Automation: Now with automated release management via release-plz
β Recently Implemented
- NPX Support: Full support for Node.js package runner with environment isolation
- UVX Support: Complete Python application runner integration via UV
- Environment Isolation: All tools run in vx-managed environments (no system PATH dependency)
- Auto-Installation: Automatic tool download and installation on first use
- MCP Integration: Ready for use as proxy in MCP server configurations
- Improved CI/CD: Enhanced release automation with release-please integration
Current Limitations
- Package Manager Integration: Additional package managers (pnpm, yarn, bun) in development
- Configuration: Advanced project-specific configurations being enhanced
- Plugin System: External plugin support planned for future releases
vx is a powerful, fast, and extensible development tool manager that provides a unified interface for managing, installing, and executing development tools across different languages and ecosystems. Think of it as a combination of nvm, rustup, pyenv, and package managers, all in one lightning-fast tool.
β¨ Features
π― Core Features
- π Universal Interface: Execute any supported tool through a single, consistent interface
- π¦ Multi-Version Management: Install, manage, and switch between multiple versions of tools
- β‘ Zero Configuration: Works out of the box with intelligent defaults
- π Auto-Installation: Automatically download and install missing tools
- π― Project-Specific: Support for project-level tool configurations
- π Plugin Architecture: Modular design with extensible plugin system
π¨ Enhanced CLI Experience
- π Progress Bars: Visual feedback for downloads and installations
- π Colorful Output: Better visual distinction with colored messages
- β³ Spinner Animations: Smooth loading indicators for operations
- π€ Interactive Confirmations: User-friendly prompts and dialogs
- π‘ Smart Error Messages: Helpful suggestions and clear error reporting
- π§ Environment Isolation:
--use-system-pathflag for better control
π οΈ Advanced Features
- π Package Management: Chocolatey-like layered package management
- π Smart Discovery: Automatic tool detection and version resolution
- βοΈ Configuration Management: Global and project-level configuration support
- π Dependency Tracking: Track and manage tool dependencies
- π§Ή Cleanup Tools: Orphaned package cleanup and maintenance
- π Rich CLI: Comprehensive command-line interface with helpful output
π Quick Start
Installation
Quick Install (Recommended)
Linux/macOS:
|
Windows (PowerShell):
powershell -c "irm https://raw.githubusercontent.com/loonghao/vx/main/install.ps1 | iex"
Advanced Installation Options
Install specific version:
# Linux/macOS
VX_VERSION="0.1.0" |
# Windows
$env:VX_VERSION="0.1.0";
Install to custom directory:
# Linux/macOS
VX_INSTALL_DIR="/bin" |
# Windows
$env:VX_INSTALL_DIR="C:\tools\vx";
Package Managers
Chocolatey (Windows):
choco install vx
Scoop (Windows):
scoop bucket add loonghao https://github.com/loonghao/scoop-vx.git
scoop install vx
WinGet (Windows):
winget install loonghao.vx
Homebrew (macOS):
Arch Linux (AUR):
# Using yay
# Using paru
Cargo (from source):
Manual Installation
Download the latest release from GitHub Releases and extract to your PATH.
Build from Source
# Build and install using the installer (recommended)
# Linux/macOS
BUILD_FROM_SOURCE=true
# Windows
# Or build manually
# copy target\release\vx.exe %USERPROFILE%\.local\bin\ # Windows
Basic Usage
# Execute tools through vx - they'll be auto-installed if missing!
# Package runners with environment isolation
# Use system PATH instead of vx-managed tools
# List supported tools and plugins
# Install specific versions
# Switch between versions
# Project configuration
π Supported Tools
π§ Built-in Plugins
| Tool | Commands | Category | Auto-Install | Description |
|---|---|---|---|---|
| UV | vx uv pip, vx uv venv, vx uv run, vx uv add |
Python | β | Extremely fast Python package installer |
| UVX | vx uvx <package>, vx uvx ruff, vx uvx black |
Python | β | Python application runner (via UV) |
| Node.js | vx node, vx npm, vx npx |
JavaScript | β | JavaScript runtime and package manager |
| NPX | vx npx <package>, vx npx create-react-app |
JavaScript | β | Node.js package runner |
| Go | vx go build, vx go run, vx go test |
Go | β | Go programming language toolchain |
| Rust | vx cargo build, vx cargo run, vx cargo test |
Rust | β | Rust programming language and Cargo |
π― Plugin Categories
- Languages: Go, Rust, Node.js, Python (via UV)
- Package Managers: npm, Cargo, UV (pip-compatible)
- Package Runners: npx, uvx (with environment isolation)
- Build Tools: Go build, Cargo, etc.
- Runtimes: Node.js
π MCP Integration
vx is designed to work seamlessly as a proxy for package runners in MCP (Model Context Protocol) server configurations, providing environment isolation and automatic tool management.
Before (Direct Tool Usage)
After (vx Proxy)
Benefits
- Environment Isolation: No conflicts with system-installed tools
- Automatic Installation: Tools are downloaded and managed automatically
- Version Control: Consistent tool versions across environments
- Cross-Platform: Works identically on Windows, macOS, and Linux
βοΈ Configuration
Global Configuration
~/.config/vx/config.toml:
[]
= true # Auto-install missing tools
= true # Check for updates
= "24h" # Update check frequency
[]
= "0.5.26"
= "official"
[]
= "20.11.0"
= "official"
[]
= "1.21.6"
Project Configuration
.vx.toml:
[]
= "0.5.26"
= "20.11.0"
= "1.21.6"
[]
= true
Plugin Configuration
# List all plugins
# Get plugin info
# Enable/disable plugins
# Search plugins
π― Real-World Examples
Python Development with UV
# Create a new Python project
# Add dependencies
# Run the application
# Run tests
# Use uvx for Python applications (with environment isolation)
# All tools run in vx-managed environments
Node.js Development
# Install and use Node.js
# Use npx for one-time tools (with environment isolation)
# All tools run in vx-managed environments
Go Development
# Initialize Go module
# Build and run
# Test
Rust Development
# Create new Rust project
# Add dependencies
# Build and run
Multi-Language Project
# Frontend (Node.js) + Backend (Go) + Scripts (Python)
# Run different parts
π Package Management
Multi-Version Support
# Install multiple versions
# List installed versions
# Switch between versions
# Remove specific versions
# Cleanup orphaned packages
Package Statistics
# View package statistics
# Output:
# π Package Statistics:
# π¦ Total packages: 3
# π’ Total versions: 5
# πΎ Total size: 2.1 GB
# π Last updated: 2025-01-30 10:30:00 UTC
π οΈ Development
Prerequisites
- Rust 1.70+
- Cargo
Building
Testing
Plugin Development
See MODULAR_ARCHITECTURE.md for detailed plugin development guide.
π Roadmap
Current Status (v0.1.1)
- β Core plugin architecture
- β 6 built-in tools (UV, UVX, Node.js, NPX, Go, Rust)
- β Environment isolation system
- β Auto-installation system
- β Multi-version package management
- β MCP integration support
- β Package runner support (npx, uvx)
- β Project configuration support
Upcoming Features
- More package managers (pnpm, yarn, bun)
- System package managers (Homebrew, Chocolatey)
- Specialized tools (Rez for VFX, Spack for HPC)
- External plugin support (.dll, .so, scripts)
- Plugin marketplace
- GUI interface
- CI/CD integrations
- Team configuration sync
π€ Contributing
We welcome contributions! Here's how you can help:
- Report Issues: Found a bug? Open an issue
- Feature Requests: Have an idea? Start a discussion
- Plugin Development: Create plugins for new tools
- Documentation: Improve docs and examples
- Code Contributions: Submit pull requests
π Release Process
This project uses Release Please for automated releases:
- Follow Conventional Commits specification
- Automatic versioning: Version bumps based on commit types
- Automatic changelog: Generated from commit history
- Automatic releases: GitHub releases created when Release PR is merged
# New feature (bumps minor version)
# Bug fix (bumps patch version)
# Breaking change (bumps major version)
See Release Guide for detailed guidelines.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Inspired by tools like
asdf,mise,proto, andchocolatey - Built with β€οΈ using Rust and modern development practices
- Special thanks to the Rust community and all contributors
π Support
- π Documentation: Full documentation
- π¬ Discussions: GitHub Discussions
- π Issues: Bug Reports
- π§ Contact: hal.long@outlook.com
Made with β€οΈ for developers, by developers