A terminal-based log processing and data visualization tool that displays real-time histograms of tabular data.
- Processes tabular data from stdin in real-time
- Creates histograms of numeric values
- Supports faceting (grouping) by columns
- Interactive navigation between facets
- Pinning feature to filter data by specific facet values
- Displays statistics (mean, standard deviation, count)
- Colorized visualization with dynamic scaling
- Smooth scrolling and window resizing
Example: real-time log analysis of fly.io logs.
flyctl logs --json \
| jq '.message |= fromjson' -r \
| jq 'select(.message.payload.duration_ms != null) | [.message.payload.duration_ms, .message.payload.url, .region, .instance] | @tsv' -r \
| histo
View histograms of across values within a facet.
Pinning a value within a facet applies it as a filter to the stream. For example, pinning the endpoint allows us to view request duration statistics for just that endpoint.
a/d
: Change facet column←→↑↓
: Navigate between facetsEnter
: Pin/unpin a facet (filters data to only show entries matching that facet)0
: Show all facetsj/k
: Scroll contentq/Ctrl+C
: Quit
Histo expects tab-separated values (TSV) where:
- First column contains the numeric values to plot
- Subsequent columns define facets
Example:
10.5 red seattle
15.2 red san jose
8.7 blue seattle
12.1 blue san jose
go build
- Bubble Tea - Terminal UI framework
- Lip Gloss - Style definitions for terminal applications
MIT - see LICENSE file for details.