stout
Architecture

How stout works

stout keeps Homebrew's package ecosystem and throws out the parts that made it slow. Under the hood it's a single Rust binary coordinating four subsystems — each one replacing a network- or interpreter-bound step in Homebrew with a local, parallel, or memory-mapped equivalent.

Layer 1

CLI & resolver

Rust command surface mirroring Homebrew. Dependency resolution runs against the local index — no network.

Layer 2

SQLite + FTS5 index

~3 MB Zstd-compressed database of formulae and casks. Full-text search returns in under 50ms, fully offline.

Layer 3

Tokio download engine

Async runtime fetches bottles in parallel, with resumable transfers and checksum verification.

Layer 4

Cellar & receipts

Writes the same Cellar layout and INSTALL_RECEIPT.json Homebrew does, so both tools stay interoperable.

stout install <pkg>
Resolve deps
local SQLite index
Fetch bottles
parallel, verified
Link into Cellar
Homebrew-compatible

Why the design is faster

Homebrew's latency comes from three places: booting a Ruby interpreter on every command, storing package metadata in a git repository you clone and pull, and downloading bottles one at a time. stout addresses each directly.

1. Compiled, not interpreted

stout is a native Rust binary. There is no interpreter to warm up, so a command like stout --version returns in about 5 ms where brew --version needs roughly 500 ms.

2. A database instead of a git repo

Package metadata lives in a pre-computed, Zstd-compressed SQLite database of roughly 3 MB with an FTS5 full-text index. Search and dependency resolution query this local database — stout search returns results in under 50 ms and works with no network at all. Index updates are verified with Ed25519 signatures.

3. Parallel, verified downloads

A Tokio async runtime fetches every required bottle in parallel, saturating the connection instead of stalling on per-request latency. Transfers are resumable and each artifact's checksum is verified before it is linked.

4. Homebrew-compatible on disk

stout writes the same Cellar directory structure and a compatible INSTALL_RECEIPT.json, so stout and Homebrew can coexist on the same machine and manage the same packages. That is what makes the switch zero-migration.

Read more in Why Homebrew is slow, SQLite as a package index, and Tokio async for package downloads, or see the full feature list and how stout compares to other package managers.

Need Rust performance engineering or AI agent expertise?

Neul Labs — the team behind stout — consults on Rust development, performance optimization, CLI tool design, and AI agent infrastructure. We build fast, reliable systems that ship.