{"id":43400686,"url":"https://github.com/home-lang/pantry","last_synced_at":"2026-04-26T20:03:42.039Z","repository":{"id":293933031,"uuid":"985539965","full_name":"home-lang/pantry","owner":"home-lang","description":"An extremely performant \u0026 universal dependency manager that just works.","archived":false,"fork":false,"pushed_at":"2026-04-24T17:45:44.000Z","size":55923,"stargazers_count":9,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-24T18:28:48.859Z","etag":null,"topics":["github","homebrew","npm","package-manager","pantry","zig"],"latest_commit_sha":null,"homepage":"https://pantry.dev","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/home-lang.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["stacksjs","chrisbbreuer"],"open_collective":"stacksjs"}},"created_at":"2025-05-18T01:38:27.000Z","updated_at":"2026-04-24T17:46:56.000Z","dependencies_parsed_at":"2025-06-01T21:36:29.125Z","dependency_job_id":"ca622d56-d94e-470b-84fb-425d2e3dc767","html_url":"https://github.com/home-lang/pantry","commit_stats":null,"previous_names":["stacksjs/launchpad","home-lang/pantry"],"tags_count":120,"template":false,"template_full_name":null,"purl":"pkg:github/home-lang/pantry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-lang%2Fpantry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-lang%2Fpantry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-lang%2Fpantry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-lang%2Fpantry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/home-lang","download_url":"https://codeload.github.com/home-lang/pantry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/home-lang%2Fpantry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32310813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["github","homebrew","npm","package-manager","pantry","zig"],"created_at":"2026-02-02T15:16:42.933Z","updated_at":"2026-04-26T20:03:42.019Z","avatar_url":"https://github.com/home-lang.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# pantry\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 pantry?\n\npantry 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, pantry 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, pantry 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 pantry](https://stacks-pantry.netlify.app/why), [Quick Start](https://stacks-pantry.netlify.app/quickstart).\n\n## Features\n\npantry 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 pantry?\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**pantry'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 pantry](https://github.com/stacksjs/pantry/tree/main/docs/why.md)\n\n## Development\n\n### Scripts\n\npantry 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 pantry through your preferred package manager:\n\n```bash\n# Install with Bun (recommended)\nbun add -g ts-pantry\n\n# Or with npm\nnpm install -g ts-pantry\n\n# Or with yarn\nyarn global add ts-pantry\n\n# Or with pnpm\npnpm add -g ts-pantry\n```\n\nSee [Installation Guide](https://stacks-pantry.netlify.app/install) for more options.\n\n## Quick Start\n\npantry 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./pantry bootstrap\n\n# Or for a custom installation path\n./pantry bootstrap --path ~/.local --verbose\n\n# Skip specific components if needed\n./pantry 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\npantry install node python go rust\n\n# Install specific versions\npantry install node@22 python@3.12\n\n# Install to /usr/local (default system-wide location)\npantry install typescript --system\n\n# Or specify any custom path\npantry install docker --path /opt/tools\n\n# Use shorthand for quick installs\npantry 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\npantry 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-pantry.netlify.app/features/environment-management), [Package Management](https://stacks-pantry.netlify.app/features/package-management), [Configuration](https://stacks-pantry.netlify.app/config), [FAQ](https://stacks-pantry.netlify.app/faq).\n\n**Supported Project Files:**\n\n- `deps.yaml` / `deps.yml`\n- `dependencies.yaml` / `dependencies.yml`\n- `pantry.yaml` / `pantry.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\npantry env:list\n\n# Inspect a specific environment\npantry env:inspect my-project_1a2b3c4d-d89abc12\n\n# Clean up old or failed environments\npantry env:clean --dry-run\n\n# Remove a specific environment\npantry 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\npantry remove node python\n\n# Remove project-specific versions (using uninstall command)\npantry uninstall node@22\n\n# See what would be removed\npantry uninstall python --dry-run\n\n# Complete system cleanup\npantry clean --force\n```\n\n### Service Management\n\nManage development services with ease:\n\n```bash\n# Start essential development services\npantry service start postgres redis\n\n# Start multiple services at once\npantry service start postgres redis nginx prometheus\n\n# Check service status\npantry service status postgres\npantry service list\n\n# Stop services when done\npantry service stop postgres redis\n\n# Enable auto-start for essential services\npantry 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 pantry_DB_USERNAME=\"myuser\"\nexport pantry_DB_PASSWORD=\"mypassword\"\nexport pantry_DB_AUTH_METHOD=\"md5\"  # PostgreSQL: trust|md5|scram-sha-256\n\n# Start databases with custom credentials\npantry 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: `pantry_DB_USERNAME`, `pantry_DB_PASSWORD`, `pantry_DB_AUTH_METHOD`\n- Config file: `pantry.config.ts` → `services.database`\n- Per-project databases automatically created with your credentials\n\n### Advanced Operations\n\n```bash\n# Create executable shims\npantry shim node@22 typescript@5.7\n\n# List all installed packages\npantry list\n\n# Update packages\npantry update node python --latest\n\n# Cache management\npantry cache:stats     # Show cache statistics\npantry cache:clean     # Clean old cached packages\npantry cache:clear     # Clear all cache\n\n# Install additional tools\npantry bootstrap  # Bootstrap essential tools\npantry bun     # Install Bun runtime\n```\n\n## Configuration\n\nCustomize pantry's behavior for your system and projects:\n\n```ts\nimport type { pantryConfig } from 'ts-pantry'\n\nconst config: pantryConfig = {\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/pantry/services', // Services data directory\n    logDir: '~/.local/share/pantry/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/pantry/tree/main/docs/config.md) for all options.\n\n## GitHub Action\n\nIntegrate pantry into your CI/CD workflows:\n\n```yaml\n- name: Setup Development Environment\n  uses: stacksjs/pantry-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/pantry/tree/main/packages/action/README.md) for details.\n\n## Advanced Usage\n\nExplore advanced dependency management topics:\n\n- [Service Management](https://stacks-pantry.netlify.app/features/service-management)\n- [Project Environment Configuration](https://stacks-pantry.netlify.app/features/package-management)\n- [Custom Shims and Tool Management](https://stacks-pantry.netlify.app/advanced/custom-shims)\n- [Cross-platform Compatibility](https://stacks-pantry.netlify.app/advanced/cross-platform)\n- [Performance Optimization](https://stacks-pantry.netlify.app/advanced/performance)\n- [API Reference](https://stacks-pantry.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/pantry/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/pantry/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/pantry/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/ts-pantry?style=flat-square\n[npm-version-href]: https://npmjs.com/package/ts-pantry\n[github-actions-src]: https://img.shields.io/github/actions/workflow/status/stacksjs/pantry/ci.yml?style=flat-square\u0026branch=main\n[github-actions-href]: https://github.com/stacksjs/pantry/actions?query=workflow%3Aci\n\n\u003c!-- [codecov-src]: https://img.shields.io/codecov/c/gh/stacksjs/pantry/main?style=flat-square\n[codecov-href]: https://codecov.io/gh/stacksjs/pantry --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhome-lang%2Fpantry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhome-lang%2Fpantry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhome-lang%2Fpantry/lists"}