{"id":35361459,"url":"https://github.com/contriboss/ore-light","last_synced_at":"2026-02-17T10:45:40.579Z","repository":{"id":321266810,"uuid":"1080797830","full_name":"contriboss/ore-light","owner":"contriboss","description":"Lean, Bundler-compatible gem manager written in Go","archived":false,"fork":false,"pushed_at":"2026-01-17T11:19:46.000Z","size":8098,"stargazers_count":51,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-17T11:47:09.725Z","etag":null,"topics":["bubbletea","build-tools","bundler","cli","dependency-management","dependency-resolver","developer-tools","gem-management","gemfile","go","golang","lockfile","package-manager","pubgrub","ruby","ruby-ecosystem","ruby-tools","rubygems","terminal","tui"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contriboss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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}},"created_at":"2025-10-21T22:08:29.000Z","updated_at":"2026-01-17T08:34:49.000Z","dependencies_parsed_at":"2025-10-28T19:27:10.495Z","dependency_job_id":null,"html_url":"https://github.com/contriboss/ore-light","commit_stats":null,"previous_names":["contriboss/ore-light"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/contriboss/ore-light","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contriboss%2Fore-light","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contriboss%2Fore-light/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contriboss%2Fore-light/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contriboss%2Fore-light/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contriboss","download_url":"https://codeload.github.com/contriboss/ore-light/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contriboss%2Fore-light/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"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":["bubbletea","build-tools","bundler","cli","dependency-management","dependency-resolver","developer-tools","gem-management","gemfile","go","golang","lockfile","package-manager","pubgrub","ruby","ruby-ecosystem","ruby-tools","rubygems","terminal","tui"],"created_at":"2026-01-02T00:24:48.237Z","updated_at":"2026-02-17T10:45:40.565Z","avatar_url":"https://github.com/contriboss.png","language":"Go","readme":"# ⚡️ Ore Light\n\n\u003e _The lean, adoption-friendly core of the Ore ecosystem._\n\nOre Light is the streamlined distribution of Ore – focused on fast gem installation, Bundler compatibility, and a welcoming feature set for new teams. It keeps Bundler in the loop while accelerating the painful parts with modern Go tooling.\n\n## Why Ore Light?\n\n- **Complete Bundler parity**: 21 commands covering all essential Bundler workflows\n- **Multi-source support**: Install gems from rubygems.org, gem.coop, private servers, git repos, and local paths\n- **Bundler-aware, not Bundler-bound**: Understands the Bundler ecosystem via the lockfile, and performs downloads, caching and even installs; only invoking `bundle install` if the lockfile is missing\n- **Fast by default**: Go's concurrency gives parallel downloads, connection pooling, and intelligent caching with zero Ruby requirement when a lockfile is present\n- **Native extension support**: Automatically builds C/C++/Rust extensions supporting gems like nokogiri, pg, sqlite3\n- **Security auditing**: Scan for vulnerabilities using bundler-audit's database (no Ruby required if a lockfile is present)\n- **Dependency visualization**: Beautiful colored tree view of gem dependencies\n- **Platform filtering**: Only downloads gems for your current platform (arm64-darwin, x86_64-linux, etc.)\n- **Proper binstubs**: Generates Ruby wrapper scripts (not symlinks) that work without `bundle exec`\n- **Group filtering**: Install production gems only with `--without development,test`\n- **Modular foundation**: Built on extracted libraries (`gemfile-go`, `rubygems-client-go`) with PubGrub dependency resolution\n\n## ⚠️ Platform Support\n\n**Unix systems only**: Ore Light supports macOS and Linux. **Windows is not supported** and will produce an error if you attempt to run ore on Windows.\n\nIf you're upgrading from a previous version that had Windows code paths, note that all Windows-specific functionality has been removed.\n\n## Quick Start\n\n```bash\n# Install Ore Light (no Ruby required for download)\n# Installs to ~/.local/bin by default (no sudo needed)\ncurl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash\n\n# For system-wide installation to /usr/local/bin\ncurl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash -s -- --system\n\n# Install gems (automatically uses vendor/bundle/ruby/\u003cversion\u003e)\nore install\n\n# Run Ruby code with ore-managed environment\nore exec -- ruby -Iconfig -e \"puts 'hello'\"\n```\n\n### Typical Workflow\n\n1. Use `ore fetch` or `ore install` to fetch gems in parallel.\n2. Ore Light respects Bundler configuration:\n   - If `.bundle/config` has a path configured (via `ore config --local path vendor/bundle`), gems install there\n   - Otherwise, gems install to your system gem directory (same as regular `bundle install`)\n3. Run `ore exec` (or use `bundle exec`) to execute commands with the correct gem paths.\n4. For CI/CD isolation, configure a local vendor path: `ore config --local path vendor/bundle`\n\n## Commands\n\nOre Light provides complete Bundler command parity with 21 commands:\n\n**Project Setup:**\n- `ore init` - Generate a new Gemfile\n\n**Dependency Management:**\n- `ore add` - Add gems to Gemfile (e.g., `ore add rails --version \"~\u003e 8.0\"`)\n- `ore remove` - Remove gems from Gemfile\n- `ore update` - Update gems to their latest versions within constraints\n- `ore lock` - Regenerate Gemfile.lock using the PubGrub resolver\n\n**Information \u0026 Inspection:**\n- `ore info` - Show detailed gem information (versions, dependencies)\n- `ore list` - List all gems in the current bundle\n- `ore outdated` - Show gems with newer versions available\n- `ore show` - Show the source location of a gem\n- `ore open` - Open a gem's source code in your editor\n- `ore platform` - Display platform compatibility information\n- `ore tree` - Display colorful dependency tree visualization\n\n**Validation:**\n- `ore check` - Verify all gems are installed\n- `ore audit` - Scan for security vulnerabilities (bundler-audit compatible)\n- `ore audit update` - Update vulnerability database\n- `ore audit licenses` - Scan installed gems for license information\n\n**Installation \u0026 Cleanup:**\n- `ore fetch` - Prefetch gems (no Ruby required) and warm the cache\n- `ore install` - Download and install gems with automatic native extension building\n- `ore clean` - Remove unused gems from vendor directory\n- `ore pristine` - Restore gems to pristine condition using `gem pristine` (requires Ruby)\n\n**Execution:**\n- `ore exec` - Run commands via `bundle exec` with ore-managed environment\n\n**Configuration:**\n- `ore config` - Get and set Bundler configuration options (works without Ruby/Bundler installed)\n\n**Utilities:**\n- `ore self-update` - Update ore to the latest version from GitHub releases\n- `ore cache` - Inspect or prune the gem cache\n- `ore stats` - Show Ruby environment statistics\n- `ore why` - Show dependency chains for a gem\n- `ore search` - Search for gems on RubyGems.org\n- `ore gems` - List all installed gems in the system (with optional `--filter`)\n- `ore browse` - Interactive TUI to browse, search, and manage installed gems\n- `ore version` - Show version information\n\n### Ruby Engine Compatibility\n\nOre Light automatically detects your Ruby engine and filters gems accordingly:\n\n- **MRI/CRuby** - Full support for C extensions\n- **JRuby** - Automatically skips C extension gems, allows JRuby-specific gems (jdbc-*, jar-dependencies)\n- **TruffleRuby** - Full C extension support via LLVM\n\nThe engine is detected via `RUBY_ENGINE` environment variable or by running `ruby -e 'puts RUBY_ENGINE'`.\n\n**Example:**\n```bash\n# JRuby automatically skips json, pg, nokogiri (C extensions)\n# but allows jdbc-postgres, activerecord-jdbc-adapter\nmise use jruby@10.0\nore install\n```\n\n### Native Extension Support\n\nOre Light automatically detects and builds native extensions when installing gems. It supports:\n\n- **extconf.rb** - Traditional Ruby C extensions\n- **CMakeLists.txt** - CMake-based extensions\n- **Cargo.toml** - Rust-based extensions (via Magnus, Rutie, etc.)\n- **configure** - Autotools-based extensions\n- **Rakefile** - Rake-based compilation\n\n**Requirements for building extensions:**\n- Ruby installed and available in PATH\n- C compiler (gcc, clang) for C/C++ extensions\n- Rust toolchain for Rust extensions (if applicable)\n\n**Skipping extensions:**\n```bash\n# Via flag\nore install --skip-extensions\n\n# Via environment variable (Bundler compatible)\nexport BUNDLE_FORCE_RUBY_PLATFORM=1\nore install\n```\n\nIf Ruby is not available, Ore Light will automatically skip extension building with a warning.\n\n### Dependency Visualization\n\nView your gem dependencies as a colorful hierarchical tree:\n\n```bash\nore tree\n```\n\nFeatures:\n- Unicode box-drawing characters for clear hierarchy\n- Color-coded gem names, versions, and platforms\n- Shows groups (default, test, development)\n- Platform indicators (e.g., `[arm64-darwin]`)\n- Circular dependency detection\n- Works with any TTY, falls back to plain text in pipes\n\n### Self-Update\n\nKeep ore up-to-date with built-in self-update functionality:\n\n```bash\n# Check for new versions\nore self-update --check\n\n# Update to latest version (interactive)\nore self-update\n\n# Update without confirmation\nore self-update --yes\n```\n\nFeatures:\n- Automatic platform detection (Unix systems: macOS/Linux, amd64/arm64)\n- SHA256 verification of downloads\n- Atomic binary replacement with rollback support\n- Interactive confirmation prompt\n- Shows current → new version comparison\n- Works without Ruby or any external tools\n\n**Note:** Windows is not supported. ore-light only supports Unix-based systems (macOS and Linux).\n\n**Example:**\n```\n$ ore self-update\nChecking target-arch... ore-v0.6.0-darwin-arm64.tar.gz\nChecking current version... v0.5.1\nChecking latest released version... v0.6.0\nNew release found! v0.5.1 --\u003e v0.6.0\n\nore release status:\n  * Current exe: \"/usr/local/bin/ore\"\n  * New exe release: \"ore-v0.6.0-darwin-arm64.tar.gz\"\n  * New exe download url: \"https://github.com/contriboss/ore-light/releases/download/v0.6.0/ore_darwin_arm64.tar.gz\"\n\nThe new release will be downloaded/extracted and the existing binary will be replaced.\nDo you want to continue? [Y/n]\n```\n\n**Note:** Self-update requires ore to be installed from GitHub releases. Dev builds will show an error message.\n\n### Security Auditing\n\nScan your gems for known security vulnerabilities using the same database as bundler-audit:\n\n```bash\n# Update the vulnerability database\nore audit update\n\n# Scan Gemfile.lock for vulnerabilities\nore audit\n```\n\nFeatures:\n- Compatible with bundler-audit's ruby-advisory-db\n- No Ruby required for scanning\n- Colorful output with severity levels (Critical/High/Medium/Low)\n- Shows CVE numbers, affected versions, and solutions\n- Database stored at `$XDG_DATA_HOME/ruby-advisory-db` (default: `~/.local/share/ruby-advisory-db`)\n\n**Note:** This is a Go implementation extracted from ore_reference, providing the same workflow as bundler-audit without requiring Ruby.\n\n### License Auditing\n\nScan your installed gems to see their license information, grouped by license type:\n\n```bash\n# Scan installed gems for licenses\nore audit licenses\n```\n\nFeatures:\n- Reads license info from installed gemspecs using Ruby\n- Groups gems by license type\n- Color-coded output:\n  - Green: Permissive licenses (MIT, Apache, BSD, ISC, Ruby, etc.)\n  - Yellow with ⚠️: Copyleft licenses (GPL, AGPL, LGPL)\n  - Red with ❌: Unknown or missing licenses\n- Shows total gem count\n- Helps identify licensing compliance issues\n\n**Note:** Requires Ruby to read gemspec files. Run `ore install` first to ensure gems are installed.\n\n### System Gem Browsing\n\nTwo commands for exploring all gems installed on your system (not just those in Gemfile.lock):\n\n#### `ore gems` - List All Installed Gems\n\nSimple command-line listing of all gems in your Ruby installation:\n\n```bash\n# List all installed gems\nore gems\n\n# Filter by name\nore gems --filter rack\n```\n\nFeatures:\n- Shows all system gems with versions\n- Groups multiple versions of the same gem\n- Color-coded output\n- Total count summary\n\n#### `ore browse` - Interactive TUI\n\nFull-featured terminal UI for browsing and managing gems:\n\n```bash\nore browse\n```\n\nFeatures:\n- **Interactive list** with vim-style navigation (j/k to move)\n- **Search/filter** - Press `/` to filter gems as you type\n- **Quick actions:**\n  - `o` - Open gem source in your editor\n  - `i` - Show gem info (future: full gem details)\n  - `w` - Show why gem is installed (future: dependency chain)\n  - `q` or `Esc` - Quit\n- **Real-time filtering** with instant results\n- **Status bar** showing selected gem and keyboard shortcuts\n- **Split view** ready for details panel (future enhancement)\n\nBuilt with [Bubble Tea](https://github.com/charmbracelet/bubbletea) for a smooth TUI experience.\n\n### Gem Source Fallback\n\nOre Light supports configuring multiple gem sources with automatic fallback when a primary source fails:\n\n**Features:**\n- Configure multiple gem sources with optional fallback URLs\n- Automatic retry with fallback source on network errors, 5xx responses, or rate limiting (429)\n- Support for authenticated sources (private gems, Sidekiq Pro, etc.)\n- Pre-flight health checks to verify source availability before downloads\n- Each source can have at most ONE fallback (no chaining)\n\n**Configuration Example** (in `~/.config/ore/config.toml` or `.ore.toml`):\n```toml\n# Primary internal mirror, fallback to rubygems.org\n[[gem_sources]]\nurl = \"http://internal-mirror.company.com\"\nfallback = \"https://rubygems.org\"\n\n# Private gems with authentication\n[[gem_sources]]\nurl = \"https://token:@gems.contribsys.com\"  # Sidekiq Pro\nfallback = \"http://local-cache.dev\"\n\n# Additional source without fallback\n[[gem_sources]]\nurl = \"https://gem.coop\"\n```\n\n**Authentication:**\n- Token auth: `https://token:@gems.example.com`\n- Basic auth: `https://username:password@gems.example.com`\n\nWhen you run `ore install` or `ore fetch`, Ore Light will:\n1. Perform health checks on all configured sources\n2. Try downloading from the primary source\n3. If a retryable error occurs and a fallback is configured, automatically switch to the fallback\n4. Report which sources were used for successful downloads\n\n### Configuration\n\n#### Installation Path Priority\n\nOre Light determines where to install gems using this priority order:\n\n1. **Bundler environment variable**: `BUNDLE_PATH`\n2. **Ore config file**: `vendor_dir` in `.ore.toml` or `~/.config/ore/config.toml`\n3. **Bundler config**: `BUNDLE_PATH` from `.bundle/config`\n4. **System default**: Output of `gem environment gemdir`\n\n**Configuration Examples:**\n\n```bash\n# Set install path without needing Ruby/Bundler installed\nore config --local path vendor/bundle\nore install\n\n# Or use Bundler if you have it\nbundle config set --local path vendor/bundle\nore install\n\n# List current configuration\nore config --list\n\n# Show effective config (resolved from env + config files)\nore config --show\n\n# Show effective config with sources\nore config --explain\n\n# Override with environment variable (Bundler compatible)\nBUNDLE_PATH=/tmp/gems ore install\n```\n\n#### Configuration Files\n\nOre loads optional TOML configuration files:\n\n- User config: `$XDG_CONFIG_HOME/ore/config.toml` (default: `~/.config/ore/config.toml`)\n- Project config: `./.ore.toml`\n\n**XDG Base Directory Support:**\n\nOre follows the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html):\n\n- **Config**: `$XDG_CONFIG_HOME/ore/` (default: `~/.config/ore/`)\n- **Cache**: `$XDG_CACHE_HOME/ore/` (default: `~/.cache/ore/`)\n- **Data**: `$XDG_DATA_HOME/ruby-advisory-db/` (default: `~/.local/share/ruby-advisory-db/`)\n\nSupported keys:\n\n```toml\nvendor_dir = \"/custom/path\"\ncache_dir = \"/path/to/cache\"\ngemfile = \"Gemfile.custom\"\n\n# Configure gem sources with optional fallbacks\n[[gem_sources]]\nurl = \"http://internal-mirror.company.com\"\nfallback = \"https://rubygems.org\"\n\n[[gem_sources]]\nurl = \"https://token:@gems.contribsys.com\"  # Private gems (e.g., Sidekiq Pro)\nfallback = \"http://local-cache.dev\"\n\n[[gem_sources]]\nurl = \"https://gem.coop\"  # Standalone source without fallback\n```\n\n#### Environment Variables\n\n**XDG Base Directory Variables:**\n- `XDG_CONFIG_HOME` - Base directory for configuration files (default: `~/.config`)\n- `XDG_CACHE_HOME` - Base directory for cache files (default: `~/.cache`)\n- `XDG_DATA_HOME` - Base directory for data files (default: `~/.local/share`)\n\n**Bundler-compatible Variables:**\n- `BUNDLE_GEMFILE` - Override Gemfile path\n- `BUNDLE_PATH` - Override gem installation directory\n- `BUNDLE_CACHE_PATH` - Override cache directory\n- `BUNDLE_JOBS` - Number of parallel download workers\n- `BUNDLE_FORCE_RUBY_PLATFORM` - Set to `1`, `true`, or `yes` to skip native extension compilation\n- `BUNDLE_MIRROR` - Global gem mirror URL\n- `BUNDLE_VERBOSE` - Enable verbose output\n- `BUNDLE_APP_CONFIG` - Override config file path\n- `BUNDLER_AUDIT_DB` - Override advisory database path\n\n## Relationship to `ore_reference`\n\nThe legacy repository now lives as `ore_reference`. It contains the full experimental feature surface, alternative providers, and advanced orchestration layers. Ore Light copies only the essentials needed for adoption, so the README, CLI surface, and docs will stay focused on the first run experience.\n\n## Docker\n\nRun ore-light in a container without installing Go or Rust:\n\n```bash\n# Basic usage (installs gems using Gemfile.lock)\ndocker run --rm -v $(pwd):/workspace ghcr.io/contriboss/ore-light:latest install\n\n# With persistent cache\ndocker run --rm \\\n  -v $(pwd):/workspace \\\n  -v ore-cache:/cache \\\n  -e BUNDLE_CACHE_PATH=/cache \\\n  ghcr.io/contriboss/ore-light:latest install\n\n# Skip native extensions (no Ruby in image)\ndocker run --rm -v $(pwd):/workspace \\\n  ghcr.io/contriboss/ore-light:latest install --skip-extensions\n\n# Check version\ndocker run --rm ghcr.io/contriboss/ore-light:latest version\n```\n\n**Local Development:**\n\n```bash\n# Build image locally\ndocker build -t ore-light:local .\n\n# Test it\ndocker run --rm -v $(pwd):/workspace ore-light:local version\n\n# Use docker-compose\ndocker-compose run --rm ore install\n```\n\n**Multi-architecture Build (for manual publishing):**\n\n```bash\n# Requires Docker Buildx\ndocker buildx build --platform linux/amd64,linux/arm64 \\\n  -t ghcr.io/contriboss/ore-light:latest --push .\n```\n\n**Note:** The Docker image uses distroless base (~2MB) and doesn't include Ruby. For gems with native extensions, either use `--skip-extensions` flag or mount Ruby from the host system.\n\n## GitHub Actions\n\nUse ore in your CI/CD workflows with automatic caching for faster builds:\n\n### Quick Start\n\n```yaml\nsteps:\n  # Step 1: Install ore (before Ruby setup)\n  - uses: contriboss/ore-light/setup-ore@v1\n    with:\n      version: 'latest'  # or specific version like '0.1.0'\n\n  # Step 2: Setup Ruby WITHOUT bundler caching\n  - uses: ruby/setup-ruby@v1\n    with:\n      ruby-version: '3.4'\n      bundler-cache: false  # Important: Let ore handle gems\n\n  # Step 3: Install gems with ore (includes caching)\n  - uses: contriboss/ore-light/ore-install@v1\n```\n\n### Actions Available\n\n**`setup-ore`** - Installs and caches the ore binary\n- Inputs: `version` (default: `latest`)\n- Outputs: `version`, `cache-hit`\n- Supports: Unix systems only - Linux (amd64, arm64), macOS (amd64, arm64)\n\n**`ore-install`** - Installs gems with intelligent caching\n- Inputs: `working-directory`, `cache-key-prefix`, `skip-extensions`\n- Outputs: `cache-hit`, `gems-installed`, `elapsed-time`\n- Caches based on: `Gemfile.lock` hash + Ruby version + platform\n\n### Full Example\n\n```yaml\nname: CI\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        ruby: ['3.2', '3.3', '3.4']\n\n    steps:\n      - uses: actions/checkout@v5\n\n      - uses: contriboss/ore-light/setup-ore@v1\n\n      - uses: ruby/setup-ruby@v1\n        with:\n          ruby-version: ${{ matrix.ruby }}\n          bundler-cache: false  # Critical!\n\n      - uses: contriboss/ore-light/ore-install@v1\n        id: ore\n\n      - name: Show stats\n        run: |\n          echo \"Cache hit: ${{ steps.ore.outputs.cache-hit }}\"\n          echo \"Gems installed: ${{ steps.ore.outputs.gems-installed }}\"\n          echo \"Time: ${{ steps.ore.outputs.elapsed-time }}\"\n\n      - name: Run tests\n        run: ore exec rake test\n```\n\n### Demo Workflow\n\nSee [.github/workflows/ore-demo.yml](.github/workflows/ore-demo.yml) for a complete working example you can trigger manually.\n\n**Key Benefits:**\n- ⚡ **Fast**: Parallel gem downloads + intelligent caching\n- 🔄 **Compatible**: Works with existing Gemfile/Gemfile.lock\n- 🚀 **Simple**: Drop-in replacement for `ruby/setup-ruby` bundler caching\n- 🌍 **Unix systems**: Linux and macOS support (Windows not supported)\n- 📦 **No Ruby required**: ore binary is pure Go\n\n## Development\n\n```bash\nmise install\nmage build\nmage test\n\n# Install to ~/.local/bin (default if HOME is set)\nmage install\n\n# Or install to custom location\nORE_INSTALL_PREFIX=/usr/local/bin mage install\n\n./bin/ore --help\n```\n\n**Installation behavior:**\n- Defaults to `~/.local/bin` if `HOME` is set\n- Falls back to `/usr/local/bin` if `HOME` is not set\n- Override with `ORE_INSTALL_PREFIX` environment variable\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontriboss%2Fore-light","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontriboss%2Fore-light","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontriboss%2Fore-light/lists"}