Turborepo is a production-grade monorepo build system and task orchestrator, shipping primarily as the `turbo` Rust CLI. Its core function is to discover workspace packages (npm, pnpm, yarn, bun, and experimentally Cargo/Go/uv), parse package-manager lockfiles natively, construct a task graph from turbo.json configuration (including task inheritance, dependsOn relationships, and tag-based boundaries), hash task inputs (file contents, env vars, lockfile state, SCM state), and execute tasks in parallel while restoring/saving outputs from a local cache or the Vercel remote cache. The CLI surface includes run, watch, query (GraphQL), ls, prune, login/link/logout, generate, codemod, daemon, devtools, and info commands, plus an interactive TUI, a background daemon with file-watching, an LSP, and a microfrontends dev proxy.
Turbowatch is a file change detector and task orchestrator for Node.js that provides a more capable alternative to tools like Nodemon. It watches specified directories for file changes and executes user-defined tasks in response, featuring debouncing to batch rapid changes, retry logic for failed tasks, interruptible tasks to cancel ongoing operations, and graceful shutdown handling. The architecture uses a pluggable backend system for file watching (supporting native FSWatcher on macOS, falling back to Chokidar elsewhere), with an event processing pipeline that deduplicates and distributes changes to relevant subscribers. Key entry points include the CLI (bin/turbowatch.ts) and programmatic API (src/watch.ts). The system relies on dependencies like chokidar, zx for process spawning, micromatch for pattern matching, and roarr for structured logging.