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.
// 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.