Two ways in
Run zipline tui from anywhere. Or just run zipline with no
subcommand: when stdin is an interactive terminal it opens the cockpit directly, the
way k9s does. When stdin is not a terminal, for example a script piping
input in, it prints help instead, so nothing changes for automation.
Everything the control plane knows
Switch with 1 through 6, or cycle with tab.
Click the tabs below to see each one.
Throughput, lag, backlog and uptime across the whole runtime, with the pipelines that need attention pulled to the front.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ──────────━━━━━━━━━━──────────────────────────────────────────────────────────────────────────────────────────────────── THROUGHPUT │LAG p95 │WAL BACKLOG │UPTIME │HOST 1.3K r/s │218ms │408 MiB │1h2m │cpu 12% ▇▇▇▇▇▇▇█ -5% │▐░░░░░░░░░░▌ 4% │▐██████▌ recl 3.0G │4 of 7 ok │mem — ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── THROUGHPUT · 2m peak 1.5K LAG p95 · 2m SLO 5.00s 1488│ ⡠⠔⠒⠉⠉⠉⠑⠒⢤⡀ 273│ ⣀⠔⠒⠉⠉⠉⠉⠒⠤⣀ │⠒⠉ ⠈⠑⠢⣀ ⢀⣀⠤⠤⠤⠤⣄⡀ │⠒⠉ ⠉⠒⢄⡀ ⢀⣀⠤⠤⠤⠤⢄⣀ 1257│ ⠈⠒⠤⣀ ⢀⣀⠤⠖⠉⠁ ⠈⠉⠒⢄⡀ ⣠⠔⠉ 219│ ⠘⠢⢄⡀ ⢀⣀⠤⠖⠉⠁ ⠉⠑⠦⣀ ⢀⡠⠔⠉ │ ⠉⠑⠒⠒⠒⠉⠁ ⠈⠑⠒⠤⣀⣀⣀⣠⠤⠒⠊ │ ⠈⠉⠑⠒⠒⠒⠉⠁ ⠉⠒⠢⠤⣀⣀⣀⡠⠤⠒⠊ 1025└────────────────────────────────────────────────────── 165└──────────────────────────────────────────────────────── '23 11/14 11/14 '23 11/14 11/14 LATENCY MIX p50 █░░░░░░░ 83ms p95 ███░░░░░ 218ms ◀ tail ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── NEEDS ATTENTION 4 of 7 │OPEN INCIDENTS 7 · critical ›✕ legacy-mssql FAILED│critical orders-mssql·to-kafka: route error b failed [p] │warning payments-pg·to-pg: source paused 20m ▲ inventory-mssql DEGRADED│critical inventory-mssql·to-pg: route error b degraded [p] │critical legacy-mssql·to-kafka: source discon ‖ payments-pg PAUSED│warning legacy-mssql·to-file: retry budget lo paused [r] │warning shipments-pg: no events in over an ho ● audit-pg RUNNING│warning orders-mssql·to-pg: retry budget low sink lag Δ40 [p] │ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌│ ● orders-mssql 1.2K/s 240ms ▅▆▅▇▆▇▆█│ MSSQL → Kafka, Postgres, File │ ● catalog-pg 610/s 150ms ▅▅▅▆▆▆▇█│ Postgres → Postgres, Kafka, File │ · shipments-pg 0/s 0ms █▇▄▁▁▁▁▁│ Postgres → File │ │ │ │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ↑/↓ select · enter detail · p/r pause/resume · / filter
Every pipeline with its rate, latency, age and status. Filter by health, then pause or resume without leaving the row.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ─────────────────────━━━━━━━━━━━──────────────────────────────────────────────────────────────────────────────────────── PIPELINES 7 2.7K r/s live ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── THROUGHPUT 2.7K r/s · ATTENTION 2 (1 degr · 1 off) · ROUTES 11 active · p50 83ms ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── all 7 healthy 3 degraded 1 offline 1 paused 1 / search ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── PIPELINE RATE·LAT AGE STATUS › ✕ legacy-mssql idle 25m ago ✕ OFFLINE [p] [w] [→] legacy-mssql · mssql-src · MSSQL → Kafka, File 2 routes · 0 active ▲ inventory-mssql 540/s 1.40s 15s ago ▲ DEGRADED [p] [w] [→] inventory-mssql · mssql-src · MSSQL → Postgres, Kafka 2 routes · 2 active ‖ payments-pg idle 8s ago ‖ PAUSED [r] [w] [→] payments-pg · pg-src · Postgres → Postgres, Kafka 2 routes · 2 active ● orders-mssql 1.2K/s 240ms 1s ago ● HEALTHY [p] [w] [→] orders-mssql · mssql-src · MSSQL → Kafka, Postgres, File 3 routes · 2 active ● catalog-pg 610/s 150ms 0s ago ● HEALTHY [p] [w] [→] catalog-pg · pg-src · Postgres → Postgres, Kafka, File 3 routes · 3 active ● audit-pg 320/s 90ms 0s ago ● HEALTHY [p] [w] [→] audit-pg · pg-src · Postgres → Kafka, Postgres 2 routes · 2 active · shipments-pg idle 6m ago · IDLE [p] [w] [→] shipments-pg · pg-src · Postgres → File 1 routes · 0 active ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ↑/↓ select · enter open · p/r pause · w swap · / search
Sources on the left, sinks on the right, and the live route between them. Expand a sink to see which pipelines feed it.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ─────────────────────────────────━━━━━━━━━━───────────────────────────────────────────────────────────────────────────── SYSTEM TOPOLOGY 7 pipelines · 15 routes · live ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── SOURCES HUB / WAL SINKS ● orders-mssql 1.2K/s ────╮ ╭───────►▾ ✕ File 210/s · 60ms ‖ payments-pg idle ────┤ │ └ ‖ from orders-mssql idle ● audit-pg 320/s ────┤ │ └ ‖ from shipments-pg idle ▲ inventory-mssql 540/s ────┤─►▣ wal 2.7K/s ──├ └ ✕ from legacy-mssql idle · shipments-pg idle ────┤ backlog 408 MiB │ └ ● from catalog-pg 210/s · 60ms ✕ legacy-mssql idle ────┤ ├───────►▾ ✕ Kafka 3.2K/s · 420ms ● catalog-pg 610/s ────╯ │ └ ● from orders-mssql 1.2K/s · 210ms │ └ ▲ from payments-pg 860/s · 420ms │ └ ● from audit-pg 320/s · 90ms │ └ ● from inventory-mssql 160/s · 200ms │ └ ✕ from legacy-mssql idle │ └ ● from catalog-pg 610/s · 95ms ╰───────►▾ ▲ Postgres 2.4K/s · 1.45s └ ● from orders-mssql 640/s · 380ms └ ● from payments-pg 910/s · 210ms └ ● from audit-pg 150/s · 120ms └ ▲ from inventory-mssql 380/s · 1.45s └ ● from catalog-pg 300/s · 160ms ↑/↓ pick pipeline · enter open · e expand/collapse sinks ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ↑/↓ pick pipeline · enter open · e expand/collapse sinks
Connected runtimes, what each one is bound to, and how long since it was last seen. Failed instances rise to the top, then idle, then live.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ────────────────────────────────────────────━━━━━━━━━━━───────────────────────────────────────────────────────────────── INSTANCES 12 7/12 connected ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ◌ file-sink lost 45s ago inst-file-sink · sink · bound → to-file ◌ legacy-mssql lost 25m ago inst-legacy · source · bound → legacy-mssql ◌ payments-pg lost 1m ago inst-pay · source · bound → payments-pg ◌ shipments-pg lost — inst-shipments · source · bound → shipments-pg ◌ spare-mssql-src lost — inst-spare-mssql · source · unbound ● audit-pg seen 1s ago inst-audit · source · bound → audit-pg ● catalog-pg seen 0s ago inst-catalog · source · bound → catalog-pg ● inventory-mssql seen 20s ago inst-inventory · source · bound → inventory-mssql ● kafka-sink seen 2s ago inst-kafka-sink · sink · bound → to-kafka ● orders-mssql seen 0s ago inst-orders · source · bound → orders-mssql ● postgres-sink seen 3s ago inst-pg-sink · sink · bound → to-pg ● spare-pg-sink seen 10s ago inst-spare-pg · sink · unbound ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ↑/↓ select · enter detail · q/esc back
Open, acknowledged and resolved incidents by severity, each tied to the pipeline and route that raised it.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ────────────────────────────────────────────────────────━━━━━━━━━━━───────────────────────────────────────────────────── INCIDENTS 7 open ●3 ▲4 SEV · pipeline·route · detail ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ● CRITICAL orders-mssql·to-kafka open · 1m ago route error budget exceeded first seen 10m ago ▲ WARNING payments-pg·to-pg acked · 20m ago source paused first seen 30m ago · INFO audit-pg·to-pg resolved · 1h ago schema reprimed first seen 2h ago ● CRITICAL inventory-mssql·to-pg open · 40s ago route error budget exceeded first seen 22m ago ● CRITICAL legacy-mssql·to-kafka open · 25m ago source disconnected first seen 25m ago ▲ WARNING legacy-mssql·to-file acked · 22m ago retry budget low first seen 40m ago · INFO catalog-pg·to-pg resolved · 2h ago checkpoint advanced first seen 3h ago ▲ WARNING shipments-pg open · 55m ago no events in over an hour first seen 55m ago ▲ WARNING orders-mssql·to-pg open · 35m ago retry budget low first seen 45m ago · INFO inventory-mssql·to-kafka resolved · 1h ago checkpoint advanced first seen 1h ago ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ↑/↓ select · a ack · x resolve · i toggle resolved · q/esc back
A live tail across every pipeline. Filter by level, follow the stream, or freeze it while you read.
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ────────────────────────────────────────────────────────────────────━━━━━━────────────────────────────────────────────── LOGS 20 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 22:11:22.000 INFO orders-mssql/to-kafk route reader attached 22:11:30.000 INFO catalog-pg/to-pg route reader attached 22:11:37.000 WARN inventory-mssql/to-p retry budget low 22:11:44.000 INFO audit-pg/to-kafka checkpoint advanced 22:11:51.000 ERROR legacy-mssql/to-kafk source disconnected 22:11:58.000 INFO payments-pg/to-pg checkpoint advanced 22:12:05.000 WARN orders-mssql/to-pg retry budget low 22:12:12.000 WARN shipments-pg no events in over an hour 22:12:19.000 ERROR inventory-mssql/to-p route error budget exceeded 22:12:26.000 INFO catalog-pg/to-kafka checkpoint advanced 22:12:33.000 WARN legacy-mssql/to-file retry budget low 22:12:40.000 INFO audit-pg/to-pg checkpoint advanced 22:12:47.000 INFO orders-mssql/to-kafk checkpoint advanced 22:12:54.000 ERROR payments-pg/to-kafka route error budget exceeded 22:13:01.000 INFO catalog-pg/to-file checkpoint advanced 22:13:08.000 ERROR orders-mssql/to-kafk route error budget exceeded 22:13:11.000 INFO inventory-mssql/to-k checkpoint advanced 22:13:14.000 WARN shipments-pg no events in over an hour 22:13:17.000 INFO payments-pg/to-pg checkpoint advanced 22:13:20.000 INFO orders-mssql/to-pg checkpoint advanced -- entries dropped -- ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · l level:info · f follow · G live · / pipeline · ↑/↓ scroll
Rendered from the real cockpit against demo data, not a mockup.
Keyboard first, mouse if you want it
Nothing here is a chord and nothing needs a modifier. Every key is one press.
- 1 to 6 Jump straight to a screen
- tab Cycle through the six screens
- ↑↓ Move the selection within a screen
- enter Open the selected pipeline or instance
- p Pause the selected pipeline
- r Resume it again
- / Filter the current screen, on overview, pipelines and logs
- : Command palette: fuzzy jump, or filter followed by a query
- ? Help, listing global keys and the screen's own
- q or esc Back out a level, then confirm before quitting
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ──────────━━━━━━━━━━──────────────────────────────────────────────────────────────────────────────────────────────────── THROUGHPUT │LAG p95 │WAL BACKLOG │UPTIME │HOST 1.3K r/s │218ms │408 MiB │1h2m │cpu 12% ▇▇▇▇▇▇▇█ -5% │▐░░░░░░░░░░▌ 4% │▐██████▌ recl 3.0G │4 of 7 ok │mem — ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── THROUGHPUT · 2m peak 1.5K LAG p95 · 2m SLO 5.00s 1488│ ⡠⠔⠒⠉⠉⠉⠑⠒⢤⡀ 273│ ⣀⠔⠒⠉⠉⠉⠉⠒⠤⣀ │⠒⠉ ⠈⠑⠢⣀ ⢀⣀⠤⠤⠤⠤⣄⡀ │⠒⠉ ⠉⠒⢄⡀ ⢀⣀⠤⠤⠤⠤⢄⣀ 1257│ ⠈⠒⠤⣀ ⢀⣀⠤⠖⠉⠁ ⠈⠉⠒⢄⡀ ⣠⠔⠉ 219│ ⠘⠢⢄⡀ ⢀⣀⠤⠖⠉⠁ ⠉⠑⠦⣀ ⢀⡠⠔⠉ │ ⠉⠑⠒⠒⠒⠉⠁ ⠈⠑⠒⠤⣀⣀⣀⣠⠤⠒⠊ │ ⠈⠉⠑⠒⠒⠒⠉⠁ ⠉⠒⠢⠤⣀⣀⣀⡠⠤⠒⠊ 1025└────────────────────────────────────────────────────── 165└──────────────────────────────────────────────────────── '23 11/14 11/14 '23 11/14 11/14 LATENCY MIX p50 █░░░░░░░ 83ms p95 ███░░░░░ 218ms ◀ tail ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── NEEDS ATTENTION 4 of 7 │OPEN INCIDENTS 7 · critical ›✕ legacy-mssql FAILED│critical orders-mssql·to-kafka: route error b failed [p] │warning payments-pg·to-pg: source paused 20m ▲ inventory-mssql DEGRADED│critical inventory-mssql·to-pg: route error b degraded [p] │critical legacy-mssql·to-kafka: source discon ‖ payments-pg PAUSED│warning legacy-mssql·to-file: retry budget lo paused [r] │warning shipments-pg: no events in over an ho ● audit-pg RUNNING│warning orders-mssql·to-pg: retry budget low sink lag Δ40 [p] │ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌│ ● orders-mssql 1.2K/s 240ms ▅▆▅▇▆▇▆█│ MSSQL → Kafka, Postgres, File │ ● catalog-pg 610/s 150ms ▅▅▅▆▆▆▇█│ Postgres → Postgres, Kafka, File │ · shipments-pg 0/s 0ms █▇▄▁▁▁▁▁│ Postgres → File │ │ │ │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── :top
zipline │ 1 overview 2 pipelines 3 topology 4 instances 5 incidents 6 logs ● 2.7K r/s p95 218ms ✕3▲4 inst 7/12 ──────────━━━━━━━━━━──────────────────────────────────────────────────────────────────────────────────────────────────── help global 1-6 views · tab cycle · q/esc back/quit · ? help this screen ↑/↓ select · enter detail · p/r pause/resume · / filter ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-6 views · tab cycle · q/esc back/quit · ? help · ?/esc close
It tells you, instead of freezing
It opens even when it cannot connect
A bad or expired certificate does not print an error and exit. The cockpit opens,
shows exactly what failed, and tells you to run zipline auth enroll.
Reconnecting is visible
If the stream drops, the header shows how stale the numbers are. A dashboard that has quietly stopped updating looks identical to a healthy one, so it never does that.
Colour is optional
Set NO_COLOR and every state is still readable: health is carried by
glyphs as well as colour, so nothing is lost on a monochrome terminal.
It needs 72 by 20
Below that it says so plainly rather than rendering a broken layout. It uses the alternate screen buffer, so your scrollback is untouched when you quit.
ziplined run --tui
That flag belongs to the runtime daemon, not the operator CLI. It shows one process
monitoring itself and sends its logs to zipline-ziplined.log. The cockpit
described here connects to the control plane and covers every pipeline and every
instance at once.