Istio service mesh tooling
Parse Gateway, VirtualService, and DestinationRule manifests — offline or live from your cluster — and render the full L7 routing topology as an interactive diagram. Trace requests, lint configs, watch for changes.
Four commands
Generate interactive HTML, SVG, PNG, Graphviz DOT, or a diff-friendly text tree from local manifests or a live cluster (--cluster) — all formats from the same routing model.
Simulate any request — host, path, method, headers — and see exactly which rule matches. Skip reasons shown for every non-matching rule, highlighted in the diagram.
Catch unbound VirtualServices, missing Services, port mismatches, shadowed unreachable rules, and weight inconsistencies before they reach production. CI-friendly --strict mode.
Local HTTP server that re-renders on every file change — or cluster poll with --cluster — and reloads the browser automatically via SSE. Filter selections and Kustomize overlays persist across reloads.
Under the hood
Three clean phases — from raw YAML to a complete, interactive picture of your service mesh.
Point istio-viz at YAML files, a directory, a Kustomize overlay, or your live cluster. Multi-document files and recursive directories are supported.
Gateways, VirtualServices, Services, and DestinationRule subsets are joined into a complete routing model using the same first-match-wins logic as Envoy.
Choose your output. The interactive HTML is self-contained — share it as a file. The paths format diffs cleanly in code review.
Catch problems early
istio-viz lint checks the things that kubectl apply won't — like a VirtualService that binds to a Gateway that doesn't exist, or a route rule that can never be reached because an earlier rule always matches first.
See it in action
This is genuine istio-viz output from a sample acme.com mesh — hover a route to highlight its path, click any node for the underlying YAML, and follow the traced POST /v2/orders canary request. Nothing is faked; it's the same self-contained HTML the CLI writes.
The interactive report is dense — best viewed on a larger screen. Open the full demo in a new tab to explore it.
Open live demo$ istio-viz trace ./manifests/ --host api.acme.com --path /v2/orders --method POST --header x-canary=true -o routes.html
Get started
No cluster access required — works entirely offline against your local manifests, or reads live state straight from your cluster via kubectl.
Windows: download from GitHub Releases · Source on GitHub