gem install pack-rb

Ruby package work, tightened.

An extremely fast Ruby package and project manager, written in Rust.
Gem workflows, project tasks, and Rails commands, without the usual startup drag.

bundle
368.24 ms
pack
32.20 ms

The Problem

Routine package work still pays too much overhead.

CLI startup, dependency inspection, project tasking, and Rails app operations still feel like separate surfaces even when they belong to the same job.

Slow path to first feedback

The first thing many gem commands do is pay interpreter startup and process overhead before useful work begins.

Fragmented workflow

`gem`, Bundler, project tasks, and Rails commands belong to the same job, but they still feel like separate tools.

CI and Docker churn

Repeated install work and wrapper scripts keep slowing down container builds and automation flows.

Poor observability

When lockfiles get heavy or dependency state drifts, the default toolchain rarely explains the problem quickly.

Where Pack compresses the workflow

install + list + search gem-facing commands with fast registry reads and reliable RubyGems execution
update + exec + why project dependency operations through one Rust front door
server + console + db Rails app commands kept near dependency and task workflows

The Solution

Keep the verbs. Tighten the path.

Pack keeps the commands Ruby developers already expect, then moves the hot path into Rust so dependency work, diagnostics, and Rails helpers stay close together.

# Familiar gem-shaped work
$ pack install
$ pack list rails
$ pack search sidekiq

# Project dependency flows
$ pack add rack-cors
$ pack update rails
$ pack why rack

# Rails-shaped operations
$ pack doctor
$ pack exec rubocop
$ pack db migrate

Native gem verbs

Install, list, search, inspect, and clean up through a fast native path.

Parser hot path

Gemfile and lockfile parsing run in microseconds in the local Criterion benches.

Project tasking

Packfile gives teams one place for repeatable dev, test, and maintenance commands.

Rails helpers

Server, console, test, db, assets, and Docker helpers live next to dependency work.

Features

Everything needed for the current Pack surface.

Fast parse path

Criterion benches cover Gemfile parsing, lockfile parsing, dependency-path lookup, and why traversal.

Native gem verbs

`pack install `, `pack list`, `pack search`, `pack info`, `pack env`, `pack cleanup`, and `pack outdated` map cleanly to Ruby developers’ expectations.

Binary `pack.lock`

MessagePack-backed lockfile data for fast reads alongside the traditional Gemfile.lock flow.

Rails-first shortcuts

Shortcuts like pack server, pack console, pack test, pack db, pack assets, and pack docker.

Project tasks

Packfile support gives teams a single runner for dev, test, deploy, and maintenance commands.

Plugin system

Local plugins can be shell scripts or executables with manifests, giving teams an extension path without rebuilding the core CLI.

Diagnostic mode

pack doctor inspects Gemfile presence, Ruby environment, cache paths, installed gems, and Rails-specific issues.

Migration-friendly verbs

Pack is a faster front door for common gem and project dependency flows, not a foreign model.

Upgrade paths

pack update can target project dependencies or globally installed gems, and pack upgrade refreshes the Pack wrapper install.

Who It Is For

Where Ruby dependency work actually piles up.

Ruby developers

+

Install, inspect, update, and execute dependencies without bouncing between unrelated commands or waiting on heavy startup each time.

Rails teams

+

Keep package operations, project tasking, diagnostics, and Rails helpers close together so day-to-day app work feels like one CLI instead of a shell convention.

Platform and CI flows

+

Reuse the same commands in automation for dependency checks, container setup, and repeatable project tasks without adding more wrapper scripts.

Performance

Measured command timings and parser timings.

Operation Comparison
pack --version 32.20 ms vs 368.24 ms for bundle --version
pack list 16.95 ms vs 496.37 ms for gem list
Gemfile parse (100 deps) 8.67–8.86 µs
Lockfile parse (50 gems) 48.45–50.08 µs
Lockfile parse (200 gems) 91.60–117.35 µs

Local command timings are compared against bundle and gem. Parser timings come directly from Criterion benches in this repository.

Ready to try Pack in a real Ruby app?

Start with the install flow, run it against a Rails project, and compare the commands directly against the workflow your team already has.