# Data flow — vercel/turborepo

> Canonical page: https://codevetter.com/unpack/turborepo/data-flow

# Data flow — vercel/turborepo

Scanned commit 2540ee1d740bb96bf249459a7957ef4b380c9e43 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

CLI arguments and inferred repository state establish the execution boundary. Discovery and configuration become immutable repository and execution contexts, while file, dependency, and environment inputs feed task hashes. Task results flow through completion callbacks, output sinks, and caches; authentication has a separate user-level persistence path.
- run_main combines inferred RepoState and --cwd to select the repository root, canonicalizes it on Windows, and applies repository/package inference to command flags. — [crates/turborepo-cli/src/cli/mod.rs#L416-439](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-cli/src/cli/mod.rs#L416-L439)
- RepositoryContributor separates cheap scope inventory from authoritative package discovery; inventory must not supply tasks, relationships, resolution facts, or prune domains. — [crates/turborepo-repository/src/toolchain.rs#L535-572](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-repository/src/toolchain.rs#L535-L572)
- RunBuilder passes discovered package graphs, SCM, lazy plans, and AsyncCache into build_execution_context, then creates service and repository owners before returning Run. — [crates/turborepo-run/src/builder.rs#L2200-2255](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-run/src/builder.rs#L2200-L2255)
- TaskHashable combines global and dependency hashes, package directory, file and external-dependency hashes, outputs, arguments, environment settings, and command overrides into the cache key. — [crates/turborepo-task-hash/src/lib.rs#L643-674](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-task-hash/src/lib.rs#L643-L674)
- ToolchainCommandProvider resolves native task specifications or authoritative argv overrides, assigns cwd and serial groups, and clears inherited environment before applying the selected map. — [crates/turborepo-task-executor/src/command.rs#L254-323](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-task-executor/src/command.rs#L254-L323) [crates/turborepo-task-executor/src/command.rs#L21-24](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-task-executor/src/command.rs#L21-L24)
- Engine::execute sends task IDs through a visitor channel and waits on completion results; StopExecution controls cancellation or dependent-subgraph traversal. — [crates/turborepo-engine/src/execute.rs#L119-144](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-engine/src/execute.rs#L119-L144) [crates/turborepo-task-executor/src/visitor.rs#L27-46](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-task-executor/src/visitor.rs#L27-L46)
- TaskCache restores through AsyncCache using the repository root and task hash; saves expand output globs, isolate managed logs, reject paths outside the repository, and put relative paths with duration. — [crates/turborepo-run-cache/src/lib.rs#L639-674](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-run-cache/src/lib.rs#L639-L674) [crates/turborepo-run-cache/src/lib.rs#L780-821](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-run-cache/src/lib.rs#L780-L821) [crates/turborepo-run-cache/src/lib.rs#L842-850](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-run-cache/src/lib.rs#L842-L850)
- Login converts TokenSet expiry into an absolute timestamp and persists token/refresh metadata to user configuration; vca_ tokens go to Turbo auth storage while stale alternate storage is cleared. — [crates/turborepo-cli/src/commands/login/mod.rs#L145-182](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-cli/src/commands/login/mod.rs#L145-L182) [crates/turborepo-auth/src/lib.rs#L415-445](https://github.com/vercel/turborepo/blob/2540ee1d740bb96bf249459a7957ef4b380c9e43/crates/turborepo-auth/src/lib.rs#L415-L445)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
