Universal Task Resolution
Learn how to set up, execute, and extend devrunner in your development workflows.
Introduction
devrunner (aliased as dr) is an ultra-fast, zero-configuration task runner written in Rust. It serves as an intelligent proxy that detects lockfiles and manifest structures inside directories and invokes the respective system command line automatically.
Instead of manually switching context between npm run dev, poetry run pytest, or cargo build, devrunner exposes a unified API:
dr dev
dr test
dr build
Installation
Install devrunner onto your local system as a single compiled binary without node_modules or interpreter dependencies.
Usage
Execute the proxy CLI using the short alias dr or devrunner:
dr <command> [args...]
Common Drivers
Standard task routing maps identically to detected targets:
dr test # Routes to test frameworks
dr build # Initiates production packaging
dr lint # Executes code static analysis
dr dev # Launches dev server configurations
Custom parameters
Inject custom flags down directly to the underlying manager utilizing the -- separator:
# Evaluates internally to: npm run test -- --coverage --watch
dr test -- --coverage --watch
Supported Tools
Detection priority resolves starting with monorepo locks, specialized tool configs, down to standard manifest locks.
pnpm-lock.yaml) take absolute precedence over config descriptors (like package.json).
| Ecosystem | Supported Engines (Priority Order) |
|---|---|
| Monorepos | nx → turbo → lerna |
| Node.js | bun → pnpm → yarn → npm |
| Python | uv → poetry → pipenv → pip |
| Rust | cargo |
| Go | task → go |
| Generic | just → make |
Configuration
Global behavior parameters are read from ~/.config/devrunner/config.toml, and local workspace overrides can be declared within a local devrunner.toml file.
# ~/.config/devrunner/config.toml
max_levels = 5
auto_update = true
ignore_tools = ["npm"]
[update]
enabled = true
check_interval_hours = 2
AI Integration
devrunner is highly optimized for AI Coding Assistants like Claude Code, Codex, and OpenCode. When executing commands within LLM sandboxes, replacing system-wide packages with dr saves context tokens by bypassing directory scans.
Configure Claude Code natively by putting the following in your system CLAUDE.md:
## devrunner
Use `dr <command>` as the universal task operator.
Do NOT invoke toolsets like npm or poetry directly.