About Nox
What Nox does,
for programmers.
This page assumes you have used a terminal, compiler, or build system before. The ideas are the same; just formatted for programmers.
What Nox is
Nox is a command-line program written in Rust. It combines a declarative build system with an optional task runner: nox.build describes artifacts and their dependencies, while noxfile describes repeatable commands around the project.
What a build system does
A build system turns source code into usable artifacts: executables, static libraries, shared libraries, JARs, and language-specific outputs. It tracks the source files, flags, generated objects, and target dependencies required to produce each artifact.
Why dependency order matters
A target can require another target before it can link or run. Nox validates that graph, rejects missing names and cycles, then builds dependencies before the targets that consume them. This prevents a target from trying to use an artifact that does not exist yet.
What incremental builds are
After setup, Nox records build state and lets language backends determine which generated objects are stale. On a normal build, unchanged sources and their valid outputs are reused instead of being compiled again.
What a task runner does
A task runner gives a project named, repeatable shell commands. In a noxfile, tasks may run commands, depend on other tasks, call Nox commands with @nox, and interpolate selected project values. Tasks do not declare the compilation graph.
What setup, build, and run mean
nox setup parses and validates nox.build, detects native tools, and writes a build state. nox build uses that state to compile and link targets. nox run first builds the selected runnable target, then starts its resulting artifact and forwards arguments after --.
What Nox does not do
Nox does not replace a source-code editor, a package registry, or every language's native package manager. Its Rust Rider invokes rustc directly, for example; Cargo dependency resolution remains Cargo's job. Its task runner is intentionally separate from the build graph.
Move from concepts to a project.
Read the workflow guide for an end-to-end project loop, or move into nox.build when you are ready to declare targets and dependencies.