imp

A hermetic, content-addressed build system.

// BUILD.js
import { odinPackage } from "//rules/odin";

export const hello = odinPackage({
    srcs: ["*.odin"],
    toolchain: "dev-2026-03",
});
$ imp build //:hello
toolchain dev-2026-03 (cached)
odin build //:hello
build succeeded bin/hello

Hermetic by default

No ambient PATH, no "works on my machine". Toolchains are downloaded, pinned, and sandboxed.

Content-addressed caching

Every build step is cached by the content it actually depends on — not timestamps, not guesswork.

Plain JavaScript

Build graphs are declared in BUILD.js, evaluated inside an embedded runtime — no separate config language to learn.

New to imp? Start with Installing Imp, then follow Getting started to scaffold a workspace and declare your first target. For advanced workflows, see toolchains and caches, CI, and troubleshooting. Rule authors can jump to the User API reference or the JS code reference.