Giant
The cache and the graph of a big build system, in a tool you can read.
A small build engine: content-addressed caching, a cross-language dependency graph, parallel builds - driven over a tiny JSON protocol. Tasks, the interactive UI, and config generation ship as separate porcelain binaries you put on PATH.
$ curl -fsSL giant.build/install.sh | sh

$ giant build
✓ BUILD //proto:gen 340ms
✓ CACHE //src/auth:auth 2ms
↓ REMOTE //src/core:core 120ms
✓ BUILD //cmd/server:server 1.24s
OK 2 built · 1 cached · 1 remote in 1.27sLanguage-agnostic
The engine knows nothing about Go, Rust, or Docker. Targets are just
inputs → command → outputs in plain giant.yaml files.
Content-addressed cache
SHA-256 keys over inputs, environment, and dependency hashes. Local cache by default; bring your own bazel-remote, sccache, or S3 backend for shared builds.
A core you control
One static binary that builds, caches, and speaks NDJSON. No JVM, no daemon, no plugins in your process. Everything else - tasks, the TUI, generation - is a porcelain on your PATH. Uninstall one and the feature is gone.

Built to serve, programmed to care.
Giant is a quiet build tool. It doesn’t run a daemon. It doesn’t
take over your terminal. It doesn’t ship a TUI you didn’t ask for.
You run giant build and it finishes. You run it again
and the cache holds.
The whole engine is small enough to read in an afternoon -
no plugin DLLs, no embedded scripting, no language-specific
special cases. Every behaviour comes from one of two places:
your giant.yaml or a porcelain binary on your PATH.
Affected detection
Builds only what changed since main, via git diff or an explicit file list.
Early cutoff
Upstream rebuild with byte-identical outputs leaves downstream cache-warm.
Watch mode
Continuous rebuilds with a debouncer that honors your selection patterns.
Path labels + exclusion
giant build ‘//src/…’ ’!//src/legacy/…’ - same language across build, test, watch, affected.
Tags
Mark targets with release, flaky, anything. Filter via —tag / —no-tag.
An engine you can talk to
Builds run over NDJSON. A TUI, an IDE, or a web app drives Giant without linking its code.
LRU cache eviction
Cache stays under a configured size limit. No giant gc needed; it just works.
How Giant compares · Apache-2.0 · github.com/giantdotbuild/giant