{"id":28797754,"url":"https://github.com/stacksjs/launchpad","last_synced_at":"2025-10-07T02:32:08.539Z","repository":{"id":293933031,"uuid":"985539965","full_name":"stacksjs/launchpad","owner":"stacksjs","description":"Similar to Homebrew, just faster.","archived":false,"fork":false,"pushed_at":"2025-06-17T15:14:54.000Z","size":1301,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-17T16:30:42.626Z","etag":null,"topics":["cli","dependency-manager","dev","homebrew","library","pantry","pkgm","pkgx","typescript"],"latest_commit_sha":null,"homepage":"https://stacks-launchpad.netlify.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stacksjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["stacksjs","chrisbbreuer"],"open_collective":"stacksjs"}},"created_at":"2025-05-18T01:38:27.000Z","updated_at":"2025-06-16T23:27:37.000Z","dependencies_parsed_at":"2025-06-01T21:36:29.125Z","dependency_job_id":"ca622d56-d94e-470b-84fb-425d2e3dc767","html_url":"https://github.com/stacksjs/launchpad","commit_stats":null,"previous_names":["stacksjs/launchpad"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/stacksjs/launchpad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacksjs%2Flaunchpad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacksjs%2Flaunchpad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacksjs%2Flaunchpad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacksjs%2Flaunchpad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stacksjs","download_url":"https://codeload.github.com/stacksjs/launchpad/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacksjs%2Flaunchpad/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260491142,"owners_count":23017181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","dependency-manager","dev","homebrew","library","pantry","pkgm","pkgx","typescript"],"created_at":"2025-06-18T05:00:55.950Z","updated_at":"2025-10-07T02:32:08.532Z","avatar_url":"https://github.com/stacksjs.png","language":"TypeScript","funding_links":["https://github.com/sponsors/stacksjs","https://github.com/sponsors/chrisbbreuer","https://opencollective.com/stacksjs"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\".github/art/cover.jpg\" alt=\"Social Card of this repo\"\u003e\u003c/p\u003e\n\n[![npm version][npm-version-src]][npm-version-href]\n[![GitHub Actions][github-actions-src]][github-actions-href]\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n\u003c!-- [![npm downloads][npm-downloads-src]][npm-downloads-href] --\u003e\n\u003c!-- [![Codecov][codecov-src]][codecov-href] --\u003e\n\n# launchpad\n\n\u003e 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._\n\n## What is Launchpad?\n\nLaunchpad 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.\n\n**System Management:**\n\n- Install and manage development tools system-wide\n- Automatic PATH configuration and shell integration\n- Cross-platform compatibility _(macOS, Linux, Windows)_\n- Smart permission handling and installation paths\n\n**Project Management:**\n\n- Automatic project environment detection and activation\n- Isolated dependency environments per project\n- Version-specific tool installation\n- Seamless switching between project contexts\n\nAt its core, Launchpad leverages pkgx's powerful package ecosystem, the Pantry, while adding intelligent management, environment isolation, and developer-friendly workflows.\n\nLearn more in the docs: [Why Launchpad](https://stacks-launchpad.netlify.app/why), [Quick Start](https://stacks-launchpad.netlify.app/quickstart).\n\n## Features\n\nLaunchpad transforms how you manage dependencies across your entire development workflow:\n\n### System-Wide Dependency Management\n\n- 📦 **Global Tool Installation** — Install development tools and runtimes system-wide with automatic PATH management\n- 🔧 **Smart Installation Paths** — Automatically chooses `/usr/local` for system-wide access or `~/.local` for user-specific installs (pkgm compatible)\n- 🔌 **Shell Integration** — Seamless integration with your shell for immediate tool availability\n- 🪟 **Cross-Platform Support** — Consistent experience across macOS, Linux, and Windows\n\n### Service Management\n\n- ⚡ **30+ Pre-configured Services** — PostgreSQL, Redis, Kafka, Prometheus, Grafana, Vault, and more\n- 🚀 **One-Command Service Control** — Start, stop, restart services with automatic configuration\n- 🏥 **Health Monitoring** — Built-in health checks with automatic status detection\n- 🔧 **Auto-Configuration** — Default configuration files generated for each service\n- 🔐 **Configurable Database Credentials** — Customize database usernames, passwords, and authentication methods\n- 🖥️ **Cross-Platform Service Management** — Uses launchd on macOS, systemd on Linux\n\n### Project-Aware Environment Management\n\n- 🌍 **Automatic Environment Isolation** — Project-specific environments that activate when you enter a project directory\n- 🎯 **Dependency Detection** — Automatically reads `deps.yaml`, `dependencies.yaml`, `package.json`, `pyproject.toml`, and other project files\n- 🔄 **Context Switching** — Seamlessly switch between different project environments\n- 📋 **Version Management** — Install and manage specific versions of tools per project\n- 🗂️ **Environment Management** — List, inspect, clean, and remove project environments with readable identifiers\n\n### Developer Experience\n\n- ⚡ **Fast Operations** — Leverage pkgx for efficient package management\n- 🗑️ **Clean Removal** — Remove packages or completely uninstall with proper cleanup\n- 🔄 **Auto-Updates** — Configure automatic updates for your dependency management tools\n- 🎛️ **Flexible Configuration** — Customize behavior through config files or command-line options\n\n## Why Launchpad?\n\nModern development requires managing dependencies at multiple levels - from system tools to project-specific requirements. Traditional approaches fall short:\n\n**Traditional Package Managers (Homebrew, apt, etc.):**\n\n- ❌ **Global conflicts** — Different projects need different versions\n- ❌ **Slow operations** — Installing or updating can take minutes\n- ❌ **Manual environment management** — Switching between project contexts is manual\n- ❌ **PATH pollution** — All tools are globally available, causing conflicts\n\n**Manual Dependency Management:**\n\n- ❌ **Inconsistent setups** — Different team members have different environments\n- ❌ **Complex PATH management** — Manual shell configuration is error-prone\n- ❌ **Version drift** — Hard to maintain consistent tool versions\n- ❌ **Platform differences** — Different setup procedures for each OS\n\n**Launchpad's Solution:**\n\n- ✅ **Unified Management** — Single tool for both system and project dependencies\n- ✅ **Automatic Isolation** — Project environments activate automatically\n- ✅ **Fast Operations** — Efficient package management with intelligent caching\n- ✅ **Consistent Experience** — Same commands and behavior across all platforms\n- ✅ **Smart Defaults** — Sensible installation paths and configuration out of the box\n\n[Read more about why we created Launchpad](https://github.com/stacksjs/launchpad/tree/main/docs/why.md)\n\n## Development\n\n### Scripts\n\nLaunchpad includes several utility scripts for development and maintenance:\n\n#### Dynamic PHP Version Management\n\n```bash\n# Get latest PHP versions from ts-pkgx registry\nbun scripts/get-php-versions.ts\n\n# Check if there are new PHP versions available\nbun scripts/check-php-updates.ts\n\n# These scripts:\n# - Fetch latest PHP versions dynamically\n# - Generates configuration descriptions\n# - Check if rebuilds are needed\n# - Output JSON for GitHub Actions\n# - Create markdown tables for documentation\n```\n\n## Installation\n\nGet started with Launchpad through your preferred package manager:\n\n```bash\n# Install with Bun (recommended)\nbun add -g @stacksjs/launchpad\n\n# Or with npm\nnpm install -g @stacksjs/launchpad\n\n# Or with yarn\nyarn global add @stacksjs/launchpad\n\n# Or with pnpm\npnpm add -g @stacksjs/launchpad\n```\n\nSee [Installation Guide](https://stacks-launchpad.netlify.app/install) for more options.\n\n## Quick Start\n\nLaunchpad is designed to handle both system setup and project management seamlessly! 🎯\n\n### System Setup (First Time)\n\nBootstrap your development environment with everything you need:\n\n```bash\n# Complete system setup - installs to /usr/local by default\n./launchpad bootstrap\n\n# Or for a custom installation path\n./launchpad bootstrap --path ~/.local --verbose\n\n# Skip specific components if needed\n./launchpad bootstrap --skip-bun --skip-shell-integration\n```\n\nThe bootstrap command sets up your entire development foundation:\n\n- ✅ Install Bun (JavaScript runtime)\n- ✅ Configure your PATH automatically\n- ✅ Set up shell integration for project auto-activation\n- ✅ Provide clear next steps\n\n### System-Wide Tool Management\n\nInstall and manage development tools across your entire system:\n\n```bash\n# Install essential development tools system-wide\nlaunchpad install node python go rust\n\n# Install specific versions\nlaunchpad install node@22 python@3.12\n\n# Install to /usr/local (default system-wide location)\nlaunchpad install typescript --system\n\n# Or specify any custom path\nlaunchpad install docker --path /opt/tools\n\n# Use shorthand for quick installs\nlaunchpad i node@22 typescript@5.7\n```\n\n**Smart Installation Behavior:**\n\n- **Default**: Installs to `/usr/local` if writable, otherwise `~/.local`\n- **System-wide**: Use `--system` for explicit system installation (same as default)\n- **Custom paths**: Use `--path \u003cdirectory\u003e` for any location\n- **Automatic PATH**: Tools are immediately available in new shells\n\n### Project Environment Management\n\nLaunchpad automatically manages project-specific dependencies:\n\n```bash\n# Create a project with dependencies\necho \"dependencies:\n  - node@22\n  - typescript@5.7\n  - bun@1.2\" \u003e dependencies.yaml\n\n# Environment activates automatically when you enter the directory\ncd my-project\n# → ✅ Environment activated for /path/to/my-project\n\n# Tools are available in project context\nnode --version  # Uses project-specific Node.js\ntsc --version   # Uses project-specific TypeScript\n\n# Leave project - environment deactivates automatically\ncd ..\n# → 🔄 Environment deactivated\n```\n\nLearn more: [Environment Management](https://stacks-launchpad.netlify.app/features/environment-management), [Package Management](https://stacks-launchpad.netlify.app/features/package-management), [Configuration](https://stacks-launchpad.netlify.app/config), [FAQ](https://stacks-launchpad.netlify.app/faq).\n\n**Supported Project Files:**\n\n- `deps.yaml` / `deps.yml`\n- `dependencies.yaml` / `dependencies.yml`\n- `launchpad.yaml` / `launchpad.yml`\n- `pkgx.yaml` / `pkgx.yml`\n- `package.json` (Node.js projects)\n- `pyproject.toml` (Python projects)\n- `Cargo.toml` (Rust projects)\n- And more...\n\n### Environment Management\n\nManage your project environments with human-readable identifiers:\n\n```bash\n# List all development environments\nlaunchpad env:list\n\n# Inspect a specific environment\nlaunchpad env:inspect my-project_1a2b3c4d-d89abc12\n\n# Clean up old or failed environments\nlaunchpad env:clean --dry-run\n\n# Remove a specific environment\nlaunchpad env:remove old-project_5e6f7g8h --force\n```\n\n**Environment Hash Format:** `{project-name}_{8-char-hex}-d{8-char-dep-hash}`\n\n- `final-project_7db6cf06-d89abc12` - Project path hash plus dependency fingerprint\n- `working-test_208a31ec-d1029a7b` - Human-readable with version-aware suffix\n- `my-app_1a2b3c4d-deadbeef` - Collision-resistant, version-switching on cd\n\n### Package Management\n\nRemove packages and manage your installation:\n\n```bash\n# Remove specific system tools\nlaunchpad remove node python\n\n# Remove project-specific versions (using uninstall command)\nlaunchpad uninstall node@22\n\n# See what would be removed\nlaunchpad uninstall python --dry-run\n\n# Complete system cleanup\nlaunchpad clean --force\n```\n\n### Service Management\n\nManage development services with ease:\n\n```bash\n# Start essential development services\nlaunchpad service start postgres redis\n\n# Start multiple services at once\nlaunchpad service start postgres redis nginx prometheus\n\n# Check service status\nlaunchpad service status postgres\nlaunchpad service list\n\n# Stop services when done\nlaunchpad service stop postgres redis\n\n# Enable auto-start for essential services\nlaunchpad service enable postgres redis\n```\n\n**Available Services (31+):**\n\n- **Databases**: PostgreSQL, MySQL, MongoDB, Redis, InfluxDB, CockroachDB, Neo4j, ClickHouse\n- **Web Servers**: Nginx, Caddy\n- **Message Queues**: Kafka, RabbitMQ, Apache Pulsar, NATS\n- **Monitoring**: Prometheus, Grafana, Jaeger\n- **Infrastructure**: Vault, Consul, etcd, MinIO, SonarQube, Temporal\n- **Development \u0026 CI/CD**: Jenkins, LocalStack, Verdaccio\n- **API \u0026 Backend**: Hasura, Keycloak\n- **Caching**: Memcached, Elasticsearch\n\n#### Configure services in deps.yaml\n\nAdd services to your dependency file to auto-start when the project environment activates:\n\n```yaml\n# deps.yaml\ndependencies:\n  - node@22\n  - postgresql@15\n\nservices:\n  enabled: true\n  autoStart:\n    - postgres\n    - redis\n```\n\n#### Database Configuration\n\nCustomize database credentials for all database services:\n\n```bash\n# Configure database credentials globally\nexport LAUNCHPAD_DB_USERNAME=\"myuser\"\nexport LAUNCHPAD_DB_PASSWORD=\"mypassword\"\nexport LAUNCHPAD_DB_AUTH_METHOD=\"md5\"  # PostgreSQL: trust|md5|scram-sha-256\n\n# Start databases with custom credentials\nlaunchpad service start postgres mysql\n# Creates project-specific databases with your configured credentials\n```\n\n**Default Credentials** (secure for development):\n\n- Username: `root`\n- Password: `password`\n- Auth Method: `trust` (PostgreSQL)\n\n**Configuration Options:**\n\n- Environment variables: `LAUNCHPAD_DB_USERNAME`, `LAUNCHPAD_DB_PASSWORD`, `LAUNCHPAD_DB_AUTH_METHOD`\n- Config file: `launchpad.config.ts` → `services.database`\n- Per-project databases automatically created with your credentials\n\n### Advanced Operations\n\n```bash\n# Create executable shims\nlaunchpad shim node@22 typescript@5.7\n\n# List all installed packages\nlaunchpad list\n\n# Update packages\nlaunchpad update node python --latest\n\n# Cache management\nlaunchpad cache:stats     # Show cache statistics\nlaunchpad cache:clean     # Clean old cached packages\nlaunchpad cache:clear     # Clear all cache\n\n# Install additional tools\nlaunchpad bootstrap  # Bootstrap essential tools\nlaunchpad bun     # Install Bun runtime\n```\n\n## Configuration\n\nCustomize Launchpad's behavior for your system and projects:\n\n```ts\nimport type { LaunchpadConfig } from '@stacksjs/launchpad'\n\nconst config: LaunchpadConfig = {\n  // System-wide installation preferences\n  installationPath: '/usr/local', // Default system location\n  sudoPassword: '', // Password for sudo operations, can be loaded from `SUDO_PASSWORD` environment variable\n\n  // Development environment settings\n  devAware: true, // Enable dev-aware installations\n  symlinkVersions: true, // Create version-specific symlinks\n  forceReinstall: false, // Force reinstall if already installed\n\n  // Operation settings\n  verbose: true, // Detailed logging\n  maxRetries: 3, // Retry failed operations\n  timeout: 60000, // Operation timeout in milliseconds\n\n  // PATH and shell integration\n  shimPath: '~/.local/bin', // Custom shim location\n  autoAddToPath: true, // Automatic PATH management\n\n  // Shell message configuration\n  showShellMessages: true,\n  shellActivationMessage: '✅ Environment activated for {path}',\n  shellDeactivationMessage: 'Environment deactivated',\n\n  // Service management configuration\n  services: {\n    enabled: true, // Enable service management\n    dataDir: '~/.local/share/launchpad/services', // Services data directory\n    logDir: '~/.local/share/launchpad/logs', // Services log directory\n    autoRestart: true, // Auto-restart failed services\n    startupTimeout: 30, // Service startup timeout\n    shutdownTimeout: 10, // Service shutdown timeout\n  },\n\n  // Registry and installation method\n  useRegistry: true, // Use package registry\n  installMethod: 'curl', // Installation method\n  installPath: '/usr/local', // Installation path (same as installationPath)\n}\n\nexport default config\n```\n\nSee [Configuration Guide](https://github.com/stacksjs/launchpad/tree/main/docs/config.md) for all options.\n\n## GitHub Action\n\nIntegrate Launchpad into your CI/CD workflows:\n\n```yaml\n- name: Setup Development Environment\n  uses: stacksjs/launchpad-installer@v1\n  with:\n    packages: node@22 typescript@5.7 bun@1.2.14\n```\n\nSee [GitHub Action Documentation](https://github.com/stacksjs/launchpad/tree/main/packages/action/README.md) for details.\n\n## Advanced Usage\n\nExplore advanced dependency management topics:\n\n- [Service Management](https://stacks-launchpad.netlify.app/features/service-management)\n- [Project Environment Configuration](https://stacks-launchpad.netlify.app/features/package-management)\n- [Custom Shims and Tool Management](https://stacks-launchpad.netlify.app/advanced/custom-shims)\n- [Cross-platform Compatibility](https://stacks-launchpad.netlify.app/advanced/cross-platform)\n- [Performance Optimization](https://stacks-launchpad.netlify.app/advanced/performance)\n- [API Reference](https://stacks-launchpad.netlify.app/api/reference)\n\n## Comparing to Alternatives\n\n### vs Traditional Package Managers (Homebrew, apt, yum)\n\n- **🎯 Project Awareness**: Automatic project environment management vs manual setup\n- **⚡ Speed**: Faster installations with intelligent caching\n- **🔒 Isolation**: Project-specific versions vs global conflicts\n- **🌍 Cross-Platform**: Consistent experience across all operating systems\n- **⚙️ Service Management**: Built-in service management vs manual configuration\n\n### vs Language-Specific Managers (nvm, pyenv, rbenv)\n\n- **🔄 Unified Interface**: Single tool for all languages vs multiple managers\n- **🤖 Automatic Switching**: Context-aware environment activation\n- **📦 Broader Scope**: Manages system tools beyond just language runtimes\n- **🛠️ Integrated Workflow**: Seamless integration between system and project dependencies\n\n### vs Container-Based Solutions (Docker, devcontainers)\n\n- **🚀 Lightweight**: Native performance without virtualization overhead\n- **💻 System Integration**: Tools available in your native shell and IDE\n- **🔧 Flexible**: Mix system-wide and project-specific tools as needed\n- **⚡ Instant**: No container startup time or resource overhead\n- **🎛️ Service Management**: Native service management without containers\n\n## Changelog\n\nPlease see our [releases](https://github.com/stacksjs/launchpad/releases) page for information on changes.\n\n## Contributing\n\nPlease see [CONTRIBUTING](https://github.com/stacksjs/contributing) for details.\n\n## Community\n\nFor help or discussion:\n\n- [Discussions on GitHub](https://github.com/stacksjs/launchpad/discussions)\n- [Join the Stacks Discord Server](https://discord.gg/stacksjs)\n\n## Postcardware\n\n\"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.\n\nOur address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎\n\n## Credits\n\n- [Max Howell](https://github.com/mxcl) - for creating [pkgx](https://github.com/pkgxdev/pkgx) and [Homebrew](https://github.com/Homebrew/brew)\n- [pkgm](https://github.com/pkgxdev/pkgm) \u0026 [dev](https://github.com/pkgxdev/dev) - thanks for the inspiration\n- [Chris Breuer](https://github.com/chrisbbreuer)\n- [All Contributors](https://github.com/stacksjs/launchpad/graphs/contributors)\n\n## Sponsors\n\nWe 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.\n\n- [JetBrains](https://www.jetbrains.com/)\n- [The Solana Foundation](https://solana.com/)\n\n## License\n\nThe MIT License (MIT). Please see [LICENSE](LICENSE.md) for more information.\n\nMade with 💙\n\n\u003c!-- Badges --\u003e\n[npm-version-src]: https://img.shields.io/npm/v/@stacksjs/launchpad?style=flat-square\n[npm-version-href]: https://npmjs.com/package/@stacksjs/launchpad\n[github-actions-src]: https://img.shields.io/github/actions/workflow/status/stacksjs/launchpad/ci.yml?style=flat-square\u0026branch=main\n[github-actions-href]: https://github.com/stacksjs/launchpad/actions?query=workflow%3Aci\n\n\u003c!-- [codecov-src]: https://img.shields.io/codecov/c/gh/stacksjs/launchpad/main?style=flat-square\n[codecov-href]: https://codecov.io/gh/stacksjs/launchpad --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacksjs%2Flaunchpad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstacksjs%2Flaunchpad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacksjs%2Flaunchpad/lists"}