Managing relational databases from the command line typically requires either relying on raw psql prompts—which lack visual table navigation and interactive scrolling—or opening heavyweight desktop GUI tools like pgAdmin or DBeaver. For server environments, SSH sessions, and developers who prefer keyboard-driven workflows, rainfrog offers a compelling middle ground. Written in Rust, rainfrog is a blazing-fast, lightweight terminal user interface (TUI) client for PostgreSQL that provides multi-panel schema exploration, instant query execution, table data inspection, and vim-like keybindings.
Core Architectural Features of rainfrog
Designed for responsiveness and minimal system footprint, rainfrog introduces key developer benefits:
- Vim-Centric Navigation: Traverse schemas, tables, query editors, and results grids effortlessly using standard
h,j,k, andldirectional keys. - Interactive Data Grid: Browse table rows with real-time horizontal and vertical scrolling, column auto-resizing, and sorting without truncating long text strings.
- Integrated SQL Editor: Write and execute custom queries directly inside an embedded syntax-highlighted editor with multi-query support.
- Zero Heavy Dependencies: Compiles to a single static binary with zero runtime dependencies on Electron or Java.
Installing rainfrog on Linux
You can install rainfrog via Cargo or by downloading pre-compiled release binaries:
Method 1: Install via Cargo (Recommended)
# Ensure Rust and Cargo are available
cargo --version || sudo apt install cargo
# Install rainfrog binary to ~/.cargo/bin
cargo install rainfrog
Method 2: Download Pre-Compiled Binary from GitHub
# Download latest Linux release
curl -s https://api.github.com/repos/achristmascarl/rainfrog/releases/latest \
| grep "browser_download_url.*linux-gnu.tar.gz" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
# Extract and install binary
tar -xvf rainfrog*.tar.gz
sudo mv rainfrog /usr/local/bin/
sudo chmod +x /usr/local/bin/rainfrog
Connecting to PostgreSQL Databases
Launch rainfrog by passing a standard PostgreSQL connection URI or using environment variables:
# Connect using standard connection string
rainfrog --url postgres://username:password@localhost:5432/database_name
# Connect to a remote database using SSL
rainfrog --url "postgres://db_user:[email protected]:5432/production?sslmode=require"
# Alternatively, set the DATABASE_URL environment variable
export DATABASE_URL="postgres://postgres:password@localhost:5432/my_db"
rainfrog
Navigating the TUI Interface and Essential Keybindings
The rainfrog interface is divided into three functional panes: the Schema Explorer (left), the Query Editor (top right), and the Results Grid (bottom right).
| Keybinding | Context / Scope | Operation Description |
|---|---|---|
Tab / Shift + Tab |
Global | Cycle forward and backward between panels (Explorer, Editor, Results). |
j / k |
Explorer / Grid | Move cursor up or down through tables and records. |
h / l |
Grid | Scroll horizontally across columns in large datasets. |
Enter |
Explorer | Select the highlighted table and load its initial rows into the Results Grid. |
Ctrl + r |
Editor | Execute the current SQL query or selected block. |
Esc |
Editor | Exit text insertion mode back to command navigation mode. |
q |
Global | Quit rainfrog and return cleanly to your shell prompt. |
Executing Ad-Hoc SQL Queries and Exporting Data
To perform custom database analysis within rainfrog:
- Press
Tabto navigate into the Query Editor pane. - Enter standard PostgreSQL queries:
SELECT id, email, created_at, account_status FROM users WHERE account_status = 'active' ORDER BY created_at DESC LIMIT 50; - Press
Ctrl + rto dispatch the query to the server. - The Results Grid updates immediately, displaying execution duration in milliseconds and the total record count.