A terminal tool that replays Git commits as animated typing sessions with syntax highlighting and file tree transitions.
gurgeous/tennis
A small Rust CLI that prints CSV, TSV, JSON and SQLite data as stylish, auto-laid-out tables in your terminal.
- Stars
- 824
- Forks
- 23
- Open issues
- 0
- Last commit
- 24 days ago
What is it?
tennis is a command-line tool for viewing tabular data in the terminal. It reads CSV, TSV, JSON, JSONL and SQLite input, detects the delimiter and format automatically, and prints the result as a styled table. Rows are truncated to fit the window, and colors and themes adapt to whether your terminal background is light or dark.
Beyond display, it offers sorting, filtering, column selection, head and tail, and a --peek mode that summarizes file shape, sample rows and fill rates. Numeric columns are formatted and aligned, and color scales can highlight values. Layout options such as -b, -bb and -bbb enlarge specific columns.
The project is MIT-licensed and distributed through Homebrew for macOS, Linux tarballs, and builds from source with Cargo.
Key features
- 01Auto-layout to fit the terminal width, truncating long rows
- 02Reads CSV, TSV, JSON, JSONL and SQLite with automatic format detection
- 03Auto light/dark theme and NO_COLOR support
- 04Sorting, filtering, column selection, head and tail
- 05--peek summarizes shape, samples and column stats
- 06Numeric formatting, zebra stripes, borders and color scales
Use cases
- Quickly inspecting a CSV export without opening a spreadsheet
- Previewing JSON or SQLite data directly in a shell session
- Getting a fast overview of an unfamiliar data file with --peek
- Sorting or filtering a file in the terminal before piping results onward
Quick start
- 1
Install with Homebrew on macOS
brew install gurgeous/tap/tennis - 2
Or build from source (run this in the repo)
cargo build - 3
Print a CSV file as a table
Things to know
- Sqlite support depends on the external sqlite3 CLI being installed.
- Building from source requires the Rust toolchain and mise setup.
Topics
FAQ
- What is tennis?
- A small Rust CLI that prints CSV, TSV, JSON and SQLite data as stylish, auto-laid-out tables in your terminal. tennis is a command-line tool for viewing tabular data in the terminal. It reads CSV, TSV, JSON, JSONL and SQLite input, detects the delimiter and format automatically, and prints the result as a styled table. Rows are truncated to fit the window, and colors and themes adapt to whether your terminal background is light or dark.
- Is tennis free to use? What license does it have?
- tennis is open source under the MIT license. Check the license terms before using it in commercial products.
- Is tennis still maintained?
- Actively maintained. The last commit to tennis was on Sep 26, 2026.
- What can I use tennis for?
- Quickly inspecting a CSV export without opening a spreadsheet Previewing JSON or SQLite data directly in a shell session Getting a fast overview of an unfamiliar data file with --peek Sorting or filtering a file in the terminal before piping results onward
- How do I install tennis?
- Install with Homebrew on macOS: brew install gurgeous/tap/tennis Or build from source (run this in the repo): cargo build Print a CSV file as a table
- Where can I get tennis?
- The source code and installation instructions are on GitHub: https://github.com/gurgeous/tennis
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A terminal user interface for Git, inspired by Magit, for staging, committing, branching, rebasing and more from the keyboard.
A terminal UI that renders a git commit graph as images, similar to git log --graph --all, for browsing repository history.
A terminal UI for rsync that manages reusable transfer profiles, previews changes as a dry-run diff, and shows live progress, including over SSH.
Interactive terminal tool to find processes by name, path, arguments, or port and kill them, like pkill with live fuzzy search.
A terminal weather app written in Rust that shows real-time conditions as ASCII animations like rain, snow and thunderstorms.