tav is a terminal UI for exploring, filtering, querying, and summarizing JSON Lines (JSONL) time-series data.
Use it to inspect event streams, browse application logs, explore metrics, traces, data exports, debug event streams, and other newline-delimited JSON data directly from your terminal, without opening a Jupyter notebook, writing a script, or importing the file into Databricks or Snowflake.
JSON Lines is great for logs, events, and streaming data, but large .jsonl files are hard to inspect with plain text tools.
tav gives you a fast, focused terminal interface for:
- viewing JSONL records as structured data
- working with timestamped / time-series events
- filtering and querying nested fields
- stats view for quick summaries
- reading files or piping data from stdin
If tav saves you from writing another one-off inspection script, consider starring the repo.
Not on PyPI yet.
uv tool install tav --from git+https://github.com/jsynowiec/tavOr run from source:
git clone https://github.com/jsynowiec/tav
cd tav
uv run tavtav [INPUT] [OPTIONS]Open a JSONL file:
tav events.jsonlRead JSONL from stdin:
cat events.jsonl | tav -Use a custom timestamp field:
tav events.jsonl --time-field timestampUse a nested timestamp field:
tav events.jsonl --time-field $.event.created_atStart in the stats view:
tav events.jsonl --statstav expects JSON Lines (JSONL) format, which is a newline-delimited JSON:
{"timestamp":"2026-01-01T12:00:00Z","service":"api","duration_ms":42,"status":200}
{"timestamp":"2026-01-01T12:00:01Z","service":"worker","duration_ms":87,"status":200}
{"timestamp":"2026-01-01T12:00:02Z","service":"api","duration_ms":133,"status":500}By default, tav looks for a timestamp field. You can point it to another field with --time-field.
Arguments:
INPUT Path to input JSONL file. Omit or use '-' for stdin.
Options:
-h, --help Show help and exit
--time-field FIELD Dot-path to the timestamp field, e.g. timestamp or $.timestamp
--stats Start in the stats view
--version Show version and exittav is built with Python, Textual, and JMESPath.
MIT