A modern dependency manager for your system and projects. Effortlessly manage development tools, runtime environments, and project dependencies with automatic environment isolation. Think Homebrew meets project-aware dependency management.
Launchpad is a comprehensive dependency management solution that bridges the gap between system-wide package management and project-specific environments. Whether you're setting up a new development machine, managing system tools, or working on projects with specific dependency requirements, Launchpad provides a unified interface for all your dependency needs.
System Management:
- Install and manage development tools system-wide
- Automatic PATH configuration and shell integration
- Cross-platform compatibility (macOS, Linux, Windows)
- Smart permission handling and installation paths
Project Management:
- Automatic project environment detection and activation
- Isolated dependency environments per project
- Version-specific tool installation
- Seamless switching between project contexts
At its core, Launchpad leverages pkgx's powerful package ecosystem while adding intelligent management, environment isolation, and developer-friendly workflows.
Launchpad transforms how you manage dependencies across your entire development workflow:
- 📦 Global Tool Installation — Install development tools and runtimes system-wide with automatic PATH management
- 🔧 Smart Installation Paths — Automatically chooses
/usr/local
for system-wide access or~/.local
for user-specific installs - 🔌 Shell Integration — Seamless integration with your shell for immediate tool availability
- 🪟 Cross-Platform Support — Consistent experience across macOS, Linux, and Windows
- 🌍 Automatic Environment Isolation — Project-specific environments that activate when you enter a project directory
- 🎯 Dependency Detection — Automatically reads
dependencies.yaml
,package.json
, and other project files - 🔄 Context Switching — Seamlessly switch between different project environments
- 📋 Version Management — Install and manage specific versions of tools per project
- 🗂️ Environment Management — List, inspect, clean, and remove project environments with readable identifiers
- ⚡ Fast Operations — Leverage pkgx for efficient package management
- 🗑️ Clean Removal — Remove packages or completely uninstall with proper cleanup
- 🔄 Auto-Updates — Configure automatic updates for your dependency management tools
- 🎛️ Flexible Configuration — Customize behavior through config files or command-line options
Modern development requires managing dependencies at multiple levels - from system tools to project-specific requirements. Traditional approaches fall short:
Traditional Package Managers (Homebrew, apt, etc.):
- ❌ Global conflicts — Different projects need different versions
- ❌ Slow operations — Installing or updating can take minutes
- ❌ Manual environment management — Switching between project contexts is manual
- ❌ PATH pollution — All tools are globally available, causing conflicts
Manual Dependency Management:
- ❌ Inconsistent setups — Different team members have different environments
- ❌ Complex PATH management — Manual shell configuration is error-prone
- ❌ Version drift — Hard to maintain consistent tool versions
- ❌ Platform differences — Different setup procedures for each OS
Launchpad's Solution:
- ✅ Unified Management — Single tool for both system and project dependencies
- ✅ Automatic Isolation — Project environments activate automatically
- ✅ Fast Operations — Efficient package management with intelligent caching
- ✅ Consistent Experience — Same commands and behavior across all platforms
- ✅ Smart Defaults — Sensible installation paths and configuration out of the box
Read more about why we created Launchpad
Get started with Launchpad through your preferred package manager:
# Install with Bun (recommended)
bun add -g @stacksjs/launchpad
# Or with npm
npm install -g @stacksjs/launchpad
# Or with yarn
yarn global add @stacksjs/launchpad
# Or with pnpm
pnpm add -g @stacksjs/launchpad
See Installation Guide for more options.
Launchpad is designed to handle both system setup and project management seamlessly! 🎯
Bootstrap your development environment with everything you need:
# Complete system setup - installs to /usr/local by default
./launchpad bootstrap
# Or for a custom installation path
./launchpad bootstrap --path ~/.local --verbose
# Skip specific components if needed
./launchpad bootstrap --skip-bun --skip-shell-integration
The bootstrap command sets up your entire development foundation:
- ✅ Install pkgx (package manager)
- ✅ Install Bun (JavaScript runtime)
- ✅ Configure your PATH automatically
- ✅ Set up shell integration for project auto-activation
- ✅ Provide clear next steps
Install and manage development tools across your entire system:
# Install essential development tools system-wide
launchpad install node python go rust
# Install specific versions
launchpad install node@22 [email protected]
# Install to /usr/local (default system-wide location)
launchpad install typescript --system
# Or specify any custom path
launchpad install docker --path /opt/tools
# Use shorthand for quick installs
launchpad i node@22 [email protected]
Smart Installation Behavior:
- Default: Installs to
/usr/local
if writable, otherwise~/.local
- System-wide: Use
--system
for explicit system installation (same as default) - Custom paths: Use
--path <directory>
for any location - Automatic PATH: Tools are immediately available in new shells
Launchpad automatically manages project-specific dependencies:
# Create a project with dependencies
echo "dependencies:
- node@22
- [email protected]
- [email protected]" > dependencies.yaml
# Environment activates automatically when you enter the directory
cd my-project
# → ✅ Environment activated for /path/to/my-project
# Tools are available in project context
node --version # Uses project-specific Node.js
tsc --version # Uses project-specific TypeScript
# Leave project - environment deactivates automatically
cd ..
# → 🔄 Environment deactivated
Supported Project Files:
dependencies.yaml
/dependencies.yml
package.json
(Node.js projects)pyproject.toml
(Python projects)Cargo.toml
(Rust projects)- And more...
Manage your project environments with human-readable identifiers:
# List all development environments
launchpad env:list
# Inspect a specific environment
launchpad env:inspect my-project_1a2b3c4d
# Clean up old or failed environments
launchpad env:clean --dry-run
# Remove a specific environment
launchpad env:remove old-project_5e6f7g8h --force
Environment Hash Format: {project-name}_{8-char-hex}
final-project_7db6cf06
- Easy to identify and manageworking-test_208a31ec
- Human-readable project identificationmy-app_1a2b3c4d
- Collision-resistant unique identifiers
Remove packages and manage your installation:
# Remove specific system tools
launchpad remove node python
# Remove project-specific versions
launchpad rm node@22
# See what would be removed
launchpad remove python --dry-run
# Complete system cleanup
launchpad uninstall
# Create executable shims
launchpad shim node@22 [email protected]
# List all installed packages
launchpad list
# Configure auto-updates
launchpad autoupdate:enable
# Install additional tools
launchpad pkgx # Install pkgx itself
launchpad dev # Install dev environment tools
launchpad bun # Install Bun runtime
Customize Launchpad's behavior for your system and projects:
import type { LaunchpadConfig } from '@stacksjs/launchpad'
const config: LaunchpadConfig = {
// System-wide installation preferences
installationPath: '/usr/local', // Default system location
autoSudo: true, // Auto-elevate when needed
// Project environment settings
autoActivate: true, // Auto-activate project environments
symlinkVersions: true, // Create version-specific symlinks
// Development preferences
verbose: true, // Detailed logging
maxRetries: 3, // Retry failed operations
timeout: 60000, // Operation timeout
// PATH and shell integration
shimPath: '~/.local/bin', // Custom shim location
autoAddToPath: true, // Automatic PATH management
}
export default config
See Configuration Guide for all options.
Integrate Launchpad into your CI/CD workflows:
- name: Setup Development Environment
uses: stacksjs/launchpad-installer@v1
with:
packages: node@22 [email protected] [email protected]
See GitHub Action Documentation for details.
Explore advanced dependency management topics:
- Project Environment Configuration
- Custom Shims and Tool Management
- Cross-platform Compatibility
- Performance Optimization
- API Reference
- 🎯 Project Awareness: Automatic project environment management vs manual setup
- ⚡ Speed: Faster installations with intelligent caching
- 🔒 Isolation: Project-specific versions vs global conflicts
- 🌍 Cross-Platform: Consistent experience across all operating systems
- 🔄 Unified Interface: Single tool for all languages vs multiple managers
- 🤖 Automatic Switching: Context-aware environment activation
- 📦 Broader Scope: Manages system tools beyond just language runtimes
- 🛠️ Integrated Workflow: Seamless integration between system and project dependencies
- 🚀 Lightweight: Native performance without virtualization overhead
- 💻 System Integration: Tools available in your native shell and IDE
- 🔧 Flexible: Mix system-wide and project-specific tools as needed
- ⚡ Instant: No container startup time or resource overhead
Please see our releases page for information on changes.
Please see CONTRIBUTING for details.
For help or discussion:
"Software that is free, but hopes for a postcard." We love receiving postcards from around the world showing where Stacks is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎
- Max Howell - for creating pkgx and Homebrew
- pkgm & dev - thanks for the inspiration
- Chris Breuer
- All Contributors
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙