Package Exports
- @stacksjs/launchpad
- @stacksjs/launchpad/bin/cli.js
- @stacksjs/launchpad/binary-downloader.d.ts
- @stacksjs/launchpad/bun.d.ts
- @stacksjs/launchpad/cache.d.ts
- @stacksjs/launchpad/chunk-2q79gpta.js
- @stacksjs/launchpad/chunk-6qxbw28k.js
- @stacksjs/launchpad/chunk-7ne7xtmq.js
- @stacksjs/launchpad/chunk-83b6axd0.js
- @stacksjs/launchpad/chunk-8pxdwzvm.js
- @stacksjs/launchpad/chunk-94hvyere.js
- @stacksjs/launchpad/chunk-aeraz9wk.js
- @stacksjs/launchpad/chunk-b9hx8gsj.js
- @stacksjs/launchpad/chunk-f8dcmgkp.js
- @stacksjs/launchpad/chunk-fhet42vs.js
- @stacksjs/launchpad/chunk-kd525svk.js
- @stacksjs/launchpad/chunk-njxv4pay.js
- @stacksjs/launchpad/chunk-sj98d84b.js
- @stacksjs/launchpad/chunk-sjvnrpb6.js
- @stacksjs/launchpad/chunk-vcjmz9d7.js
- @stacksjs/launchpad/chunk-w67rbjbs.js
- @stacksjs/launchpad/chunk-wkk6vc0r.js
- @stacksjs/launchpad/chunk-wnwbsmkf.js
- @stacksjs/launchpad/chunk-x48ph7z5.js
- @stacksjs/launchpad/chunk-xbhy1cqk.js
- @stacksjs/launchpad/chunk-xcf3khvr.js
- @stacksjs/launchpad/config.d.ts
- @stacksjs/launchpad/dependency-resolution.d.ts
- @stacksjs/launchpad/dev-setup.d.ts
- @stacksjs/launchpad/dev/dump.d.ts
- @stacksjs/launchpad/dev/index.d.ts
- @stacksjs/launchpad/dev/integrate.d.ts
- @stacksjs/launchpad/dev/shellcode.d.ts
- @stacksjs/launchpad/dev/sniff.d.ts
- @stacksjs/launchpad/doctor.d.ts
- @stacksjs/launchpad/env.d.ts
- @stacksjs/launchpad/index.d.ts
- @stacksjs/launchpad/info.d.ts
- @stacksjs/launchpad/install-core.d.ts
- @stacksjs/launchpad/install-helpers.d.ts
- @stacksjs/launchpad/install-main.d.ts
- @stacksjs/launchpad/install.d.ts
- @stacksjs/launchpad/list.d.ts
- @stacksjs/launchpad/logging.d.ts
- @stacksjs/launchpad/package-resolution.d.ts
- @stacksjs/launchpad/package.d.ts
- @stacksjs/launchpad/path.d.ts
- @stacksjs/launchpad/php/auto-detector.d.ts
- @stacksjs/launchpad/php/index.d.ts
- @stacksjs/launchpad/php/php-shim.d.ts
- @stacksjs/launchpad/php/php-strategy.d.ts
- @stacksjs/launchpad/progress.d.ts
- @stacksjs/launchpad/search.d.ts
- @stacksjs/launchpad/services/database.d.ts
- @stacksjs/launchpad/services/definitions.d.ts
- @stacksjs/launchpad/services/index.d.ts
- @stacksjs/launchpad/services/manager.d.ts
- @stacksjs/launchpad/services/platform.d.ts
- @stacksjs/launchpad/services/stacks.d.ts
- @stacksjs/launchpad/shim.d.ts
- @stacksjs/launchpad/special-installers.d.ts
- @stacksjs/launchpad/src/index.js
- @stacksjs/launchpad/symlink.d.ts
- @stacksjs/launchpad/tags.d.ts
- @stacksjs/launchpad/types.d.ts
- @stacksjs/launchpad/uninstall.d.ts
- @stacksjs/launchpad/utils.d.ts
Readme
launchpad
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.
What is Launchpad?
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.
Features
Launchpad transforms how you manage dependencies across your entire development workflow:
System-Wide Dependency Management
- 📦 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 (pkgm compatible) - 🔌 Shell Integration — Seamless integration with your shell for immediate tool availability
- 🪟 Cross-Platform Support — Consistent experience across macOS, Linux, and Windows
Project-Aware Environment Management
- 🌍 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
Developer Experience
- ⚡ 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
Why Launchpad?
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
Installation
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.
Quick Start
Launchpad is designed to handle both system setup and project management seamlessly! 🎯
System Setup (First Time)
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 Bun (JavaScript runtime)
- ✅ Configure your PATH automatically
- ✅ Set up shell integration for project auto-activation
- ✅ Provide clear next steps
System-Wide Tool Management
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 python@3.12
# 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 typescript@5.7
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
Project Environment Management
Launchpad automatically manages project-specific dependencies:
# Create a project with dependencies
echo "dependencies:
- node@22
- typescript@5.7
- bun@1.2" > 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...
Environment Management
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
Package Management
Remove 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
Service Management
Manage long-running services like databases and web servers with ease:
# Start a service
launchpad start postgres
launchpad start redis
launchpad start nginx
# Stop a service
launchpad stop postgres
# Restart a service
launchpad restart redis
# Enable auto-start on boot
launchpad enable postgres
launchpad enable redis
# Disable auto-start
launchpad disable nginx
# Check service status
launchpad status postgres
launchpad status # Show all services
# List all services
launchpad services
Supported Services:
- PostgreSQL (
postgres
) - MySQL (
mysql
) - Redis (
redis
) - Nginx (
nginx
) - MongoDB (
mongodb
) - Memcached (
memcached
) - RabbitMQ (
rabbitmq
) - Elasticsearch (
elasticsearch
) - Caddy (
caddy
)
Service Features:
- Auto-initialization: Services are automatically initialized with proper data directories and configuration
- Cross-platform: Works on both macOS (launchd) and Linux (systemd)
- Health checks: Built-in health monitoring for each service
- Auto-restart: Services automatically restart if they crash (when enabled)
- Proper logging: All service logs are centralized in
~/.local/share/launchpad/logs/
Advanced Operations
# Create executable shims
launchpad shim node@22 typescript@5.7
# 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
Configuration
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
// 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',
// 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.
GitHub Action
Integrate Launchpad into your CI/CD workflows:
- name: Setup Development Environment
uses: stacksjs/launchpad-installer@v1
with:
packages: node@22 typescript@5.7 bun@1.2.14
See GitHub Action Documentation for details.
Advanced Usage
Explore advanced dependency management topics:
- Project Environment Configuration
- Custom Shims and Tool Management
- Cross-platform Compatibility
- Performance Optimization
- API Reference
Comparing to Alternatives
vs Traditional Package Managers (Homebrew, apt, yum)
- 🎯 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
vs Language-Specific Managers (nvm, pyenv, rbenv)
- 🔄 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
vs Container-Based Solutions (Docker, devcontainers)
- 🚀 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
Changelog
Please see our releases page for information on changes.
Contributing
Please see CONTRIBUTING for details.
Community
For help or discussion:
Postcardware
"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 🌎
Credits
- Max Howell - for creating pkgx and Homebrew
- pkgm & dev - thanks for the inspiration
- Chris Breuer
- All Contributors
Sponsors
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.
License
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙