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? The guide walks through scaffolding a workspace and declaring your first targets. Already writing rules? Jump straight to the User API reference for target constructors and configuration, or the JS code reference for the full exported implementation surface.