Sharp tasks.
Fast builds.
A type-safe, Gradle-inspired task runner. Define tasks once, let Nadle schedule, parallelize, and cache them.
- ESM
- Node 22+
- Zero-config
- Worker threads
How Nadle compares
Everything evaluators look for, without leaving TypeScript.
| Feature | nadle | npm scripts | Turborepo | Nx |
|---|---|---|---|---|
| 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.
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.
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});
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.
$ nadle build ● lint running ● compile running ○ test waiting → compile ○ bundle waiting → compile ✓ lint done 1.2s ✓ compile done 3.4s ● test running ● bundle running
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.
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.