stacksjs/launchpad
Performant package management. Similar to Homebrew. Just faster.
A modern dependency manager for your system and your 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:
Project Management:
At its core, Launchpad leverages pkgx's powerful package ecosystem, the Pantry, while adding intelligent management, environment isolation, and developer-friendly workflows.
Learn more in the docs: Why Launchpad, Quick Start.
Launchpad transforms how you manage dependencies across your entire development workflow:
/usr/local
for system-wide access or ~/.local
for user-specific installs (pkgm compatible)deps.yaml
, dependencies.yaml
, package.json
, pyproject.toml
, and other project filesModern development requires managing dependencies at multiple levels - from system tools to project-specific requirements. Traditional approaches fall short:
Traditional Package Managers (Homebrew, apt, etc.):
Manual Dependency Management:
Launchpad's Solution:
Read more about why we created Launchpad
Launchpad includes several utility scripts for development and maintenance:
# Get latest PHP versions from ts-pkgx registry
bun scripts/get-php-versions.ts
# Check if there are new PHP versions available
bun scripts/check-php-updates.ts
# These scripts:
# - Fetch latest PHP versions dynamically
# - Generates configuration descriptions
# - Check if rebuilds are needed
# - Output JSON for GitHub Actions
# - Create markdown tables for documentation
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 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:
/usr/local
if writable, otherwise ~/.local
--system
for explicit system installation (same as default)--path <directory>
for any locationLaunchpad 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
Learn more: Environment Management, Package Management, Configuration, FAQ.
Supported Project Files:
deps.yaml
/ deps.yml
dependencies.yaml
/ dependencies.yml
launchpad.yaml
/ launchpad.yml
pkgx.yaml
/ pkgx.yml
package.json
(Node.js projects)pyproject.toml
(Python projects)Cargo.toml
(Rust projects)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-d89abc12
# 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}-d{8-char-dep-hash}
final-project_7db6cf06-d89abc12
- Project path hash plus dependency fingerprintworking-test_208a31ec-d1029a7b
- Human-readable with version-aware suffixmy-app_1a2b3c4d-deadbeef
- Collision-resistant, version-switching on cdRemove packages and manage your installation:
# Remove specific system tools
launchpad remove node python
# Remove project-specific versions (using uninstall command)
launchpad uninstall node@22
# See what would be removed
launchpad uninstall python --dry-run
# Complete system cleanup
launchpad clean --force
Manage development services with ease:
# Start essential development services
launchpad service start postgres redis
# Start multiple services at once
launchpad service start postgres redis nginx prometheus
# Check service status
launchpad service status postgres
launchpad service list
# Stop services when done
launchpad service stop postgres redis
# Enable auto-start for essential services
launchpad service enable postgres redis
Available Services (31+):
Add services to your dependency file to auto-start when the project environment activates:
# deps.yaml
dependencies:
- node@22
- postgresql@15
services:
enabled: true
autoStart:
- postgres
- redis
Customize database credentials for all database services:
# Configure database credentials globally
export LAUNCHPAD_DB_USERNAME="myuser"
export LAUNCHPAD_DB_PASSWORD="mypassword"
export LAUNCHPAD_DB_AUTH_METHOD="md5" # PostgreSQL: trust|md5|scram-sha-256
# Start databases with custom credentials
launchpad service start postgres mysql
# Creates project-specific databases with your configured credentials
Default Credentials (secure for development):
root
password
trust
(PostgreSQL)Configuration Options:
LAUNCHPAD_DB_USERNAME
, LAUNCHPAD_DB_PASSWORD
, LAUNCHPAD_DB_AUTH_METHOD
launchpad.config.ts
→ services.database
# Create executable shims
launchpad shim node@22 [email protected]
# List all installed packages
launchpad list
# Update packages
launchpad update node python --latest
# Cache management
launchpad cache:stats # Show cache statistics
launchpad cache:clean # Clean old cached packages
launchpad cache:clear # Clear all cache
# Install additional tools
launchpad bootstrap # Bootstrap essential 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
sudoPassword: '', // Password for sudo operations, can be loaded from `SUDO_PASSWORD` environment variable
// Development environment settings
devAware: true, // Enable dev-aware installations
symlinkVersions: true, // Create version-specific symlinks
forceReinstall: false, // Force reinstall if already installed
// Operation settings
verbose: true, // Detailed logging
maxRetries: 3, // Retry failed operations
timeout: 60000, // Operation timeout in milliseconds
// PATH and shell integration
shimPath: '~/.local/bin', // Custom shim location
autoAddToPath: true, // Automatic PATH management
// Shell message configuration
showShellMessages: true,
shellActivationMessage: '✅ Environment activated for {path}',
shellDeactivationMessage: 'Environment deactivated',
// Service management configuration
services: {
enabled: true, // Enable service management
dataDir: '~/.local/share/launchpad/services', // Services data directory
logDir: '~/.local/share/launchpad/logs', // Services log directory
autoRestart: true, // Auto-restart failed services
startupTimeout: 30, // Service startup timeout
shutdownTimeout: 10, // Service shutdown timeout
},
// Registry and installation method
useRegistry: true, // Use package registry
installMethod: 'curl', // Installation method
installPath: '/usr/local', // Installation path (same as installationPath)
}
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:
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 🌎
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 💙