Istio service mesh tooling

Your routes,
made visible.

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.

macOS (Apple Silicon) Linux x64 / arm64 Works offline Live cluster mode

Four commands

Everything you need to understand
your Istio routing

render

Routing diagrams

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.

trace

Request tracing

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.

lint

Config validation

Catch unbound VirtualServices, missing Services, port mismatches, shadowed unreachable rules, and weight inconsistencies before they reach production. CI-friendly --strict mode.

watch

Live development

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

Load. Resolve. Render.

Three clean phases — from raw YAML to a complete, interactive picture of your service mesh.

Load

Point istio-viz at YAML files, a directory, a Kustomize overlay, or your live cluster. Multi-document files and recursive directories are supported.

# files, directories, or cluster istio-viz render ./overlays/prod # or point at a live cluster istio-viz render --cluster --context staging

Resolve

Gateways, VirtualServices, Services, and DestinationRule subsets are joined into a complete routing model using the same first-match-wins logic as Envoy.

# joined and evaluated in order Gateway listeners → Hosts Hosts → RouteRules → Destinations

Render

Choose your output. The interactive HTML is self-contained — share it as a file. The paths format diffs cleanly in code review.

# interactive HTML -o routes.html # static image -o routes.svg # diff-friendly text -f paths

Catch problems early

Your routing config,
validated before deploy.

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.

E001 VirtualService binds to an unknown Gateway
E002 Destination references a missing Service
E003 Service port not declared on destination
W002 Route rule shadowed — can never be reached
W003 Destination weights do not sum to 100

See it in action

A real report, right here.

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

Up in thirty seconds.

No cluster access required — works entirely offline against your local manifests, or reads live state straight from your cluster via kubectl.

# Install (macOS · Linux x64 · Linux arm64)
$ curl -fsSL https://istio-viz.wckd14.xyz/install.sh | bash
 
# Install a specific version
$ curl -fsSL https://istio-viz.wckd14.xyz/install.sh | bash -s -- v0.1.0
 
# Render an interactive routing diagram
$ istio-viz render ./manifests/ -o routes.html
 
# Export diff-friendly host → match → service paths for code review
$ istio-viz render ./manifests/ --format paths -o network-paths.txt
 
# Trace a specific request through your rules
$ istio-viz trace ./manifests/ --host api.example.com --path /checkout --method POST
 
# Validate configs in CI
$ istio-viz lint ./manifests/ --strict
 
# Watch for changes during development
$ istio-viz watch ./overlays/dev --port 4400
 
# Or read live state straight from the cluster
$ istio-viz render --cluster --context prod -o routes.html

Windows: download from GitHub Releases  ·  Source on GitHub