Type object
File match turbo.json
Schema URL https://catalog.lintel.tools/schemas/schemastore/turborepo/latest.json
Source https://turborepo.org/schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Configuration schema for turbo.json.

An object representing the task dependency graph of your project. turbo interprets these conventions to schedule, execute, and cache the outputs of tasks in your project.

Documentation: https://turborepo.dev/docs/reference/configuration

Properties

$schema String | null

JSON Schema URL for validation.

boundaries BoundariesConfig | null

Configuration for turbo boundaries.

Allows users to restrict a package's dependencies and dependents.

cacheDir String | null

Specify the filesystem cache directory.

Documentation: https://turborepo.dev/docs/reference/configuration#cachedir

cacheMaxAge String | null

Maximum age of local cache entries before automatic eviction.

Accepts a human-readable duration string (e.g. "7d", "24h", "2w"). Set to "0" to disable eviction (the default). Entries older than this value are removed at the start of each run.

cacheMaxSize String | null

Maximum total size of the local filesystem cache.

Accepts a human-readable size string (e.g. "10GB", "500MB"). When exceeded, the oldest entries are evicted until the cache is under the limit. Set to "0" to disable (the default).

concurrency String | null

Set/limit the maximum concurrency for task execution.

Must be an integer greater than or equal to 1 or a percentage value like 50%. Use 1 to force serial execution (one task at a time). Use 100% to use all available logical processors.

Documentation: https://turborepo.dev/docs/reference/configuration#concurrency

daemon Boolean | null

Deprecated: The daemon is no longer used for turbo run and this option will be removed in version 3.0.

Documentation: https://turborepo.dev/docs/reference/configuration#daemon

dangerouslyDisablePackageManagerCheck Boolean | null

Disable check for packageManager in root package.json.

This is highly discouraged as it leaves turbo dependent on system configuration to infer the correct package manager. Some turbo features are disabled if this is set to true.

envMode EnvMode | null

Turborepo's Environment Modes allow you to control which environment variables are available to a task at runtime.

Documentation: https://turborepo.dev/docs/reference/configuration#envmode

extends Array_of_String | null

This key is only available in Workspace Configs and cannot be used in your root turbo.json.

Tells turbo to extend your root turbo.json and overrides with the keys provided in your Workspace Configs. Currently, only the ["//"] value is allowed.

futureFlags FutureFlags | null

Opt into breaking changes prior to major releases, experimental features, and beta features.

global GlobalConfig | null

Global configuration block.

When futureFlags.globalConfiguration is enabled, global settings like inputs, env, ui, etc. are placed here instead of at the top level.

globalDependencies array | null

A list of globs to include in the set of implicit global hash dependencies.

The contents of these files will be included in the global hashing algorithm and affect the hashes of all tasks.

This is useful for busting the cache based on: - .env files (not in Git) - Any root level file that impacts package tasks that are not represented in the traditional dependency graph (e.g. a root tsconfig.json, jest.config.ts, .eslintrc, etc.)

Documentation: https://turborepo.dev/docs/reference/configuration#globaldependencies

globalEnv array | null

A list of environment variables for implicit global hash dependencies.

The variables included in this list will affect all task hashes.

Documentation: https://turborepo.dev/docs/reference/configuration#globalenv

globalPassThroughEnv array | null

An allowlist of environment variables that should be made to all tasks, but should not contribute to the task's cache key, e.g. AWS_SECRET_KEY.

Documentation: https://turborepo.dev/docs/reference/configuration#globalpassthroughenv

noUpdateNotifier Boolean | null

When set to true, disables the update notification that appears when a new version of turbo is available.

Documentation: https://turborepo.dev/docs/reference/configuration#noupdatenotifier

remoteCache RemoteCache | null

Configuration options when interfacing with the remote cache.

Documentation: https://turborepo.dev/docs/core-concepts/remote-caching

tags Array_of_String | null

Used to tag a package for boundaries rules.

Boundaries rules can restrict which packages a tag group can import or be imported by.

tasks Record<string, object>

An object representing the task dependency graph of your project.

turbo interprets these conventions to schedule, execute, and cache the outputs of tasks in your project.

Documentation: https://turborepo.dev/docs/reference/configuration#tasks

ui UI | null

Enable use of the UI for turbo.

Documentation: https://turborepo.dev/docs/reference/configuration#ui

Definitions

Array_of_String String[]
Boolean boolean
BoundariesConfig object

Configuration for turbo boundaries.

Allows users to restrict a package's dependencies and dependents.

dependencies Permissions | null

Rules for a package's dependencies.

Restricts which packages this package can import.

dependents Permissions | null

Rules for a package's dependents.

Restricts which packages can import this package.

implicitDependencies Array_of_String | null

Declares any implicit dependencies, i.e. any dependency not declared in a package.json.

These can include dependencies automatically injected by a framework or a testing library.

tags Map_of_TagRules | null

The boundaries rules for tags.

Restricts which packages can import a tag and which packages a tag can import.

EnvMode string | string

Turborepo's Environment Modes allow you to control which environment variables are available to a task at runtime.

  • strict: Filter environment variables to only those that are specified in the env and globalEnv keys in turbo.json. - loose: Allow all environment variables for the process to be available.

Documentation: https://turborepo.dev/docs/reference/configuration#envmode

FutureFlags object

Opt into breaking changes prior to major releases, experimental features, and beta features.

affectedUsingTaskInputs boolean

Use task-level inputs globs to determine which tasks are affected by changed files when running with --affected. When enabled, only tasks whose declared inputs match the changed files are selected, rather than selecting all tasks in changed packages.

Default: false
errorsOnlyShowHash boolean

When using outputLogs: "errors-only", show task hashes when tasks complete successfully. This provides visibility into which tasks are running without showing full output logs.

Default: false
experimentalObservability boolean

Enable experimental OpenTelemetry exporter support.

When enabled, Turborepo will honor the experimentalObservability configuration block (if present) to send run summaries to an observability backend.

Default: false
filterUsingTasks boolean

Resolve --filter at the task level instead of the package level. Git-range filters (e.g. --filter=[main]) will match against task inputs globs, and the ... dependency/dependent syntax will traverse the task graph in addition to the package graph.

Default: false
globalConfiguration boolean

Move global configuration keys (like globalDependencies, ui, envMode, etc.) under a top-level global key for clarity.

When enabled, keys are renamed: globalDependencies becomes global.inputs, globalEnv becomes global.env, and globalPassThroughEnv becomes global.passThroughEnv.

Default: false
longerSignatureKey boolean

Enforce a minimum length of 32 bytes for TURBO_REMOTE_CACHE_SIGNATURE_KEY when remoteCache.signature is enabled. Short keys weaken the HMAC-SHA256 signature, making brute-force tag collision feasible.

Default: false
pruneIncludesGlobalFiles boolean

Include files matching globalDependencies globs in the turbo prune output. Without this flag, globalDependencies entries are preserved in the pruned turbo.json but the actual files are not copied.

Default: false
watchUsingTaskInputs boolean

Use task-level inputs globs to determine which tasks to re-run when files change in turbo watch. When enabled, only tasks whose declared inputs match the changed files are re-executed, rather than re-running all tasks in changed packages.

Default: false
GlobalConfig object

Global configuration that applies to all tasks in the monorepo.

When futureFlags.globalConfiguration is enabled, these fields live under the top-level "global" key instead of being scattered across the root of turbo.json.

When adding a new field, also update: 1. The corresponding top-level field on RawTurboJson 2. resolve_global_config() on RawTurboJson 3. validate_no_top_level_global_keys() in this file 4. WithMetadata impl in parser.rs 5. GlobalConfig in config-v2.ts and generate_global_config_interface() in schema-gen

cacheDir String | null

Specify the filesystem cache directory.

cacheMaxAge String | null

Maximum age of local cache entries before automatic eviction.

Accepts a human-readable duration string (e.g. "7d", "24h", "2w"). Set to "0" to disable eviction (the default). Entries older than this value are removed at the start of each run.

cacheMaxSize String | null

Maximum total size of the local filesystem cache.

Accepts a human-readable size string (e.g. "10GB", "500MB"). When exceeded, the oldest entries are evicted until the cache is under the limit. Set to "0" to disable (the default).

concurrency String | null

Set/limit the maximum concurrency for task execution.

daemon Boolean | null

Deprecated: The daemon is no longer used for turbo run.

dangerouslyDisablePackageManagerCheck Boolean | null

Disable check for packageManager in root package.json.

env array | null

A list of environment variables for implicit global hash dependencies.

Unlike inputs (which become per-task inputs), these variables are included in the global hash and affect all task hashes uniformly.

envMode EnvMode | null

Turborepo's Environment Modes allow you to control which environment variables are available to a task at runtime.

inputs array | null

A list of globs for files that implicitly affect all tasks.

These files are prepended to every task's inputs during engine construction rather than being folded into the global hash. This allows individual tasks to exclude specific global files via negation globs.

noUpdateNotifier Boolean | null

When set to true, disables the update notification that appears when a new version of turbo is available.

passThroughEnv array | null

An allowlist of environment variables that should be made to all tasks, but should not contribute to the task's cache key.

remoteCache RemoteCache | null

Configuration options when interfacing with the remote cache.

ui UI | null

Enable use of the UI for turbo.

Map_of_TagRules Record<string, object>
OutputLogs string | string | string | string | string

Output mode for the task.

  • full: Displays all output - hash-only: Show only the hashes of the tasks - new-only: Only show output from cache misses - errors-only: Only show output from task failures - none: Hides all task output

Documentation: https://turborepo.dev/docs/reference/run#--output-logs-option

Permissions object

Permission rules for boundaries.

allow Array_of_String | null

Lists which tags are allowed.

Any tag not included will be banned. If omitted, all tags are permitted.

deny Array_of_String | null

Lists which tags are banned.

Pipeline object

Configuration for a pipeline task.

The name of a task that can be executed by turbo. If turbo finds a workspace package with a package.json scripts object with a matching key, it will apply the pipeline task configuration to that npm script during execution.

cache Boolean | null

Whether or not to cache the outputs of the task.

Setting cache to false is useful for long-running "watch" or development mode tasks.

Documentation: https://turborepo.dev/docs/reference/configuration#cache

dependsOn Array_of_String | null

The list of tasks that this task depends on.

Prefixing an item in dependsOn with a ^ prefix tells turbo that this task depends on the package's topological dependencies completing the task first. Items without a ^ prefix express the relationships between tasks within the same package.

Documentation: https://turborepo.dev/docs/reference/configuration#dependson

description String | null

A human-readable description of what this task does.

This field is for documentation purposes only and does not affect task execution or caching behavior.

env array | null

A list of environment variables that this task depends on.

Note: If you are migrating from a turbo version 1.5 or below, you may be used to prefixing your variables with a $. You no longer need to use the $ prefix.

Documentation: https://turborepo.dev/docs/reference/configuration#env

inputs array | null

The set of glob patterns to consider as inputs to this task.

Changes to files covered by these globs will cause a cache miss and the task will be rerun. If a file has been changed that is not included in the set of globs, it will not cause a cache miss. If omitted or empty, all files in the package are considered as inputs.

Documentation: https://turborepo.dev/docs/reference/configuration#inputs

interactive Boolean | null

Mark a task as interactive allowing it to receive input from stdin.

Interactive tasks must be marked with "cache": false as the input they receive from stdin can change the outcome of the task.

Documentation: https://turborepo.dev/docs/reference/configuration#interactive

interruptible Boolean | null

Label a persistent task as interruptible to allow it to be restarted by turbo watch.

turbo watch watches for changes to your packages and automatically restarts tasks that are affected. However, if a task is persistent, it will not be restarted by default. To enable restarting persistent tasks, set interruptible to true.

Documentation: https://turborepo.dev/docs/reference/configuration#interruptible

outputLogs OutputLogs | null

Output mode for the task.

Documentation: https://turborepo.dev/docs/reference/run#--output-logs-option

outputs array | null

The set of glob patterns indicating a task's cacheable filesystem outputs.

Turborepo captures task logs for all tasks. This enables us to cache tasks whose runs produce no artifacts other than logs (such as linters). Logs are always treated as a cacheable artifact and never need to be specified.

Documentation: https://turborepo.dev/docs/reference/configuration#outputs

passThroughEnv array | null

An allowlist of environment variables that should be made available in this task's environment, but should not contribute to the task's cache key, e.g. AWS_SECRET_KEY.

Documentation: https://turborepo.dev/docs/reference/configuration#passthroughenv

persistent Boolean | null

Indicates whether the task exits or not.

Setting persistent to true tells turbo that this is a long-running task and will ensure that other tasks cannot depend on it.

Documentation: https://turborepo.dev/docs/reference/configuration#persistent

with array | null

A list of tasks that will run alongside this task.

Tasks in this list will not be run until completion before this task starts execution.

Documentation: https://turborepo.dev/docs/reference/configuration#with

RemoteCache object

Configuration options that control how turbo interfaces with the remote cache.

Documentation: https://turborepo.dev/docs/core-concepts/remote-caching

apiUrl String | null

Set endpoint for API calls to the remote cache.

Documentation: https://turborepo.dev/docs/core-concepts/remote-caching#self-hosting

enabled Boolean | null

Indicates if the remote cache is enabled.

When false, Turborepo will disable all remote cache operations, even if the repo has a valid token. If true, remote caching is enabled, but still requires the user to login and link their repo to a remote cache.

Documentation: https://turborepo.dev/docs/core-concepts/remote-caching

loginUrl String | null

Set endpoint for requesting tokens during turbo login.

Documentation: https://turborepo.dev/docs/core-concepts/remote-caching#self-hosting

preflight Boolean | null

When enabled, any HTTP request will be preceded by an OPTIONS request to determine if the request is supported by the endpoint.

Documentation: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#preflighted_requests

signature Boolean | null

Indicates if signature verification is enabled for requests to the remote cache.

When true, Turborepo will sign every uploaded artifact using the value of the environment variable TURBO_REMOTE_CACHE_SIGNATURE_KEY. Turborepo will reject any downloaded artifacts that have an invalid signature or are missing a signature.

teamId String | null

The ID of the Remote Cache team.

Value will be passed as teamId in the querystring for all Remote Cache HTTP calls. Must start with team_ or it will not be used.

teamSlug String | null

The slug of the Remote Cache team.

Value will be passed as slug in the querystring for all Remote Cache HTTP calls.

timeout uint64 | null

Sets a timeout for remote cache operations.

Value is given in seconds and only whole values are accepted. If 0 is passed, then there is no timeout for any cache operations.

uploadTimeout uint64 | null

Sets a timeout for remote cache uploads.

Value is given in seconds and only whole values are accepted. If 0 is passed, then there is no timeout for any remote cache uploads.

String string
TagRules object

Boundary rules for a tag.

Restricts which packages a tag can import and which packages can import this tag.

dependencies Permissions | null

Rules for a tag's dependencies.

Restricts which packages a tag can import.

dependents Permissions | null

Rules for a tag's dependents.

Restricts which packages can import this tag.

UI string | string | string

Enable use of the UI for turbo.

Documentation: https://turborepo.dev/docs/reference/configuration#ui

uint64 integer