vercel/turborepo · warning

`turbo` uses Graphviz to generate an image of your graph, bu

Error message

`turbo` uses Graphviz to generate an image of your graph, but Graphviz isn't installed on this machine.\n\nNote: --graph output to .png, .jpg, .pdf, and .json is deprecated and will be removed in version 3.0. Use .svg, .html, .mermaid, or .dot instead.\n\nIn the meantime, you can use this string output with an online Dot graph viewer.

What it means

`turbo run --graph <file>` in an image format (.png/.jpg/.pdf) shells out to Graphviz `dot`. emit_graphviz_warning (crates/turborepo-lib/src/run/mod.rs:1624-1636) fires when `dot` is not installed: it explains the missing dependency, notes that image outputs are deprecated and removed in v3 (use .svg/.html/.mermaid/.dot instead), and suggests pasting the emitted dot output into an online viewer.

Source

Thrown at crates/turborepo-lib/src/run/mod.rs:1632

        &self,
        show_progress: bool,
    ) -> std::pin::Pin<
        Box<
            dyn std::future::Future<
                    Output = Result<
                        turborepo_boundaries::BoundariesResult,
                        turborepo_boundaries::Error,
                    >,
                > + Send
                + '_,
        >,
    > {
        Box::pin(std::future::ready(self.check_boundaries(show_progress)))
    }
}

fn emit_graphviz_warning() -> Result<(), io::Error> {
    turborepo_log::warn(
        turborepo_log::Source::turbo(turborepo_log::Subsystem::Run),
        "`turbo` uses Graphviz to generate an image of your graph, but Graphviz isn't installed \
         on this machine.\n\nNote: --graph output to .png, .jpg, .pdf, and .json is deprecated \
         and will be removed in version 3.0. Use .svg, .html, .mermaid, or .dot instead.\n\nIn \
         the meantime, you can use this string output with an online Dot graph viewer.",
    )
    .emit();
    Ok(())
}

#[cfg(test)]
mod tests {
    use std::{future::pending, time::Duration};

    use turborepo_signals::ShutdownReason;

    use super::{
        remote_cache_status_message, CacheShutdownOutcome, ForceShutdownReason, RemoteCacheStatus,

View on GitHub (pinned to f9245100cf)

Solutions

  1. Install Graphviz (apt-get install graphviz / brew install graphviz / choco install graphviz) so `dot` is on PATH.
  2. Prefer future-proof outputs that don't depend on local tooling: switch to `--graph out.svg`, out.html, out.mermaid, or keep out.dot.
  3. If you cannot install locally, capture the emitted dot text and render it with an online Graphviz viewer.
  4. Update any docs/scripts still producing .png/.jpg/.pdf before turbo 3.0 removes them.

Example fix

# before: image output needs local graphviz
turbo run build --graph=graph.png   # -> Graphviz isn't installed on this machine

# after: no external dependency, v3-safe
turbo run build --graph=graph.svg   # or .html / .mermaid / .dot
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
if ! command -v dot >/dev/null; then
  echo "graphviz 'dot' not installed — use --graph=graph.svg/.dot instead" >&2
  exit 1
fi
turbo run build --graph=graph.png

Prevention

When it happens

Trigger: Requesting --graph out.png (or .jpg/.pdf) on a machine without graphviz in PATH. The command still emits the graphviz dot string/preview rather than failing. Note the deprecation: even with graphviz installed, these formats go away in turbo 3.0.

Common situations: Local machines and slim CI containers without the graphviz package; docs screenshots pipelines; users upgrading toward turbo 3.x needing to migrate graph exports to a supported format.

Related errors


AI-assisted analysis of vercel/turborepo@f9245100cf (2026-08-17). Data as JSON: /api/errors/ff85a1057a01e6e7. Report an issue: GitHub.