Skip to main content
Two kinds of chart blocks exist:
  • Typed fences (plot, bars, numberline, plane, timeline) draw an exact picture you can step through and annotate. They follow the shared rules for steps, meta strings, playback, and validation.
  • Dashboard blocks (kiwi-chart, kiwi-progress) draw a standard chart from rows of data. kiwi-chart can pull its rows from a DQL query, so the chart stays current as pages change.

plot

An x-y plot: complexity curves, latency against load, convergence, the predicate curve of a binary search. A series takes points, or an expr formula in x whose free names come from bind, which can change per step to sweep a parameter. A bare plot fence renders when its body has series. Also spelled kiwi-plot, widget:plot, chart-xy.

bars

Columns in value space: histograms, latency distributions, sorting passes. guides draws horizontal reference lines such as an SLO, and overlays draws value-space rectangles such as trapped water or a chosen rectangle. A bare bars fence renders when its body has values. Also spelled kiwi-bars, widget:bars, histogram, barchart.

numberline

A single value axis: inequalities, intervals, thresholds, binary-search buckets. Closed endpoints are filled and open ones hollow. predicate shades wherever a formula in x is true. A bare numberline fence renders when its body has min or max or xRange. Also spelled kiwi-numberline, widget:numberline, number-line, kiwi-number-line.

plane

A coordinate plane in data units: geometry, sweep lines, convex hulls, vectors, tile maps. It draws what you give it, so the algorithm lives in the steps. Segment and polygon ends can name a point id. A bare plane fence renders when its body has points or segments or polygons or circles or vectors or regions. Also spelled kiwi-plane, widget:plane, geometry.

timeline

Spans on a shared axis with named lanes and causal arrows: scheduling, lock handoffs, happens-before, incident timelines. A span with state: blocked or state: waiting draws hatched, so waiting reads differently from working. A bare timeline fence renders when its body has intervals. Also spelled kiwi-timeline, widget:timeline, gantt, schedule.

kiwi-chart

Bar, line, area, pie, radar, and scatter charts from inline rows, rendered with Recharts.
Without series, every numeric column in the first row becomes a series. Without xKey, bar, line, and area charts draw no category axis, so name it. To chart live data, give a query: instead of data:. The first non-numeric result column becomes the x axis and every numeric column becomes a series. Inline data still renders if the query fails.
The body can also be JSON with the same keys.

kiwi-progress

Progress bars or radial gauges, one per item.

Widgets overview

Fence names, steps, playback, and validation.

DQL

The query language behind kiwi-chart queries.

Data and queries

kiwi-query, kiwi-data, and kiwi-kanban.

Diagrams

graph, sequence, steps, Mermaid, and D2.
Last modified on October 19, 2026