Open source · Apache 2.0

Build once,
cache forever.

Build Docker containers once, share the cache, never rebuild the same layer twice. Up to 35,000x faster rebuilds.

View on GitHub
cargo install zuild
terminal

$ zuild -f Dockerfile . -t my-app

⚡ Zuild — Build once, cache forever.

  [1/8] ✓ cached FROM ubuntu:24.04

  [2/8] ✓ cached RUN apt-get install -y curl wget vim git...

  [3/8] ✓ cached RUN useradd -m -s /bin/bash developer

  [4/8] ✓ cached ENV LANG=C.UTF-8

  [5/8] ✓ cached ENV TERM=xterm-256color

  [6/8] ✓ cached WORKDIR /home/developer

  [7/8] ⚡ building COPY hello.txt /home/developer/hello.txt

  [8/8] ⚡ buildingCMD ["/bin/bash"]

  ✔ Built in 0.005s

  140 seconds of apt-get install skipped. One file changed.

🔗

Shared Cache

One developer builds, the whole team benefits. Layers are shared via a simple HTTP server. No more cold caches on CI.

35,000x Faster Rebuilds

Content-addressable blake3 hashing. Same instruction + same files = instant cache hit. Zero rebuilds.

🔒

Secure by Default

Sandboxed builds, path traversal protection, API key auth, rate limiting. Security isn't an afterthought.

How it works

Dockerfile instruction
        |
        v
┌─────────────────┐
│  blake3 hash    │──> hash = f(parent + instruction + files)
└────────┬────────┘
         |
         v
┌────────────────┐    ┌───────────────┐    ┌────────────────┐
│  Local cache   │───>│ Remote cache  │───>│  Build step    │
│  ~/.zuild/     │    │ team server   │    │  (via Docker)  │
└────────────────┘    └───────────────┘    └────────────────┘
     HIT = 0ms          HIT = ~50ms          MISS = build
                                              + cache result

Benchmarks

ScenarioCold BuildWarm BuildSpeedup
Ubuntu + 17 packages (end-to-end)135.5s0.314s431x
Ubuntu + 17 packages (cache engine)135.5s0.004s35,000x
Single file change0.005s

Real benchmarks on Apple Silicon, measured with time

Get started in seconds

Single binary. No daemon. No dependencies.

$ cargo install zuild

or clone from GitHub