Skip to main content
Type-safe task runner for Node.js

Sharp tasks.
Fast builds.

A type-safe, Gradle-inspired task runner. Define tasks once, let Nadle schedule, parallelize, and cache them.

Nadle builds itself
  • ESM
  • Node 22+
  • Zero-config
  • Worker threads

How Nadle compares

Everything evaluators look for, without leaving TypeScript.

Featurenadlenpm scriptsTurborepoNx
Type-safe config
DAG scheduling
Built-in caching
Parallel execution
Monorepo-native

Built for developer experience

Three pillars that set Nadle apart from every other task runner.

Type Safety

Catch errors before they happen

Define custom task types with generics. Full IntelliSense for task options, configuration errors caught at compile time. TypeScript is the foundation, not an afterthought.

deploy.ts
import { tasks, defineTask } from "nadle";
interface DeployOptions {
target: "staging" | "production";
dryRun: boolean;
}
const DeployTask = defineTask<DeployOptions>({
run: async ({ options, context }) => {
context.logger.info(`Deploying to ${options.target}`);
}
});
tasks.register("deploy", DeployTask, {
target: "staging",
dryRun: true
});
Parallelism

Maximum throughput, zero wasted time

Nadle builds a dependency graph and runs independent tasks in parallel across worker threads. Watch your pipeline light up as dependencies resolve.

Terminal
$ nadle build

  ● lint        running
  ● compile     running
  ○ test        waiting → compile
  ○ bundle      waiting → compile

  ✓ lint        done  1.2s
  ✓ compile     done  3.4s
  ● test        running
  ● bundle      running
Caching

Only rebuild what changed

Declare inputs and outputs for any task. Nadle fingerprints them and skips work when nothing changed. Fast incremental builds out of the box.

nadle.config.ts
tasks.register("compile", ExecTask, {
command: "tsc",
args: ["--build"]
}).config({
inputs: [Inputs.files("src/**/*.ts", "tsconfig.json")],
outputs: [Outputs.dirs("lib")]
});
// Unchanged inputs? Task is skipped automatically.

Everything you need

Batteries included, no bloat. Every feature earns its place.

Smart CLI

Abbreviation matching, autocorrection, dry run, and summary mode. Run tasks with minimal typing.

Real-time progress

Interactive footer shows scheduled, running, and completed tasks live as they execute.

Monorepo-native

First-class workspace support. Run tasks across packages with full dependency awareness.

Built-in tasks

ExecTask, PnpmTask, CopyTask, DeleteTask. Common operations ready out of the box.

Modern architecture

Pure ESM, Node.js 22+, worker-thread isolation. Zero legacy compromises.

Agent-ready

Ships llms.txt and llms-full.txt so AI agents can discover and reason about your tasks.

Ready to get started?

Install Nadle and run your first task in under two minutes.

Get Started