sqlite-tui
A lightweight terminal UI for browsing and editing SQLite databases.
Built in Rust with a focus on small binary size and fast startup.

Features
- Browse tables and views with row counts
- Navigate with vim-style keybindings (
j/k/h/l)
- Edit cells inline with Enter
- Delete rows (single or multi-select with Space)
- Sort by any column (ascending/descending toggle)
- Paginated display for large tables
- 5 search plugins with Tab cycling:
| Plugin |
Syntax |
Example |
| Keyword |
free text |
alice engineer |
| FTS5 |
FTS5 query syntax |
search AND api |
| Regex |
regular expression |
^[A-Z].*son$ |
| Filter |
col:op:val |
age:>:25;name:LIKE:%john% |
| WHERE |
raw SQL WHERE clause |
age > 25 AND score > 90 |
Installation
From source
cargo install --path .
Build from repo
git clone https://github.com/megamanics/sqlite-tui.git
cd sqlite-tui
cargo build --release
# Binary at target/release/sqlite-tui (~2.6 MB)
VS Code extension
The repository also includes a minimal VS Code extension that launches the existing TUI in an integrated terminal.
Open this repository in VS Code and press F5 to launch an Extension Development Host. The extension adds:
SQLite TUI: Open Database
SQLite TUI: Open Database (Read Only)
SQLite TUI: Build Binary
By default the extension looks for sqlite-tui on PATH. If you are developing in this repo, it will also auto-detect target/release/sqlite-tui or target/debug/sqlite-tui when present. You can override this with the sqliteTui.binaryPath setting.
If the binary is missing, the extension can launch cargo build or cargo build --release for you based on the sqliteTui.buildProfile setting.
For Marketplace packaging and publishing, see PUBLISHING.md.
Project Scripts
Run the full repo checks in one go:
./scripts/check-all.sh
Run checks and produce the release Rust binary:
./scripts/build-all.sh
Create a publishable VSIX package:
./scripts/build.sh
Usage
# Open a database
sqlite-tui mydata.db
# Open in read-only mode
sqlite-tui --read-only mydata.db
Keybindings
Navigation
| Key |
Action |
↑/k ↓/j |
Move up/down rows |
←/h →/l |
Move left/right columns |
PgUp/PgDn |
Page up/down |
g / G |
First / last page |
J / K |
Next / previous table |
Tab |
Switch focus (sidebar ↔ data) |
b |
Toggle sidebar |
Actions
| Key |
Action |
Enter |
Edit selected cell |
Space |
Toggle row selection |
d |
Delete selected row(s) |
s |
Sort by current column |
/ |
Open search |
? |
Show help |
q / Ctrl+C |
Quit |
Search Mode
| Key |
Action |
Tab |
Cycle search plugin |
Enter |
Execute search |
Esc |
Clear search & close |
Search Plugins
Keyword Search
Searches across all columns using LIKE. Multiple words are AND-ed together.
FTS5 Full-Text Search
Uses SQLite FTS5 for full-text search. Only available for tables with FTS5 virtual tables. Supports FTS5 query syntax: AND, OR, NOT, "exact phrase".
Regex Search
Pattern matching using Rust's regex crate. Registered as a custom SQLite function.
Column Filter
Structured filtering with column:operator:value syntax. Multiple filters separated by ; are AND-ed. Operators: =, !=, >, <, >=, <=, LIKE, IS NULL, IS NOT NULL.
WHERE Builder
Direct SQL WHERE clause input with syntax validation.
Architecture
See the baseline architecture decision record: docs/adr/0001-tui-design.md
See the VS Code launcher integration decision record: docs/adr/0002-vscode-launcher-extension.md
src/
├── main.rs # CLI entry point
├── app.rs # Application state machine
├── event.rs # Terminal event handling
├── db/ # Database layer
│ ├── connection # SQLite connection (WAL mode)
│ ├── schema # Table/view introspection
│ ├── query # Paginated queries with sorting
│ └── mutation # Cell updates, row deletion
├── search/ # Plugin-based search system
│ ├── plugin # SearchPlugin trait
│ ├── keyword # LIKE-based keyword search
│ ├── fts5 # FTS5 full-text search
│ ├── regex_search # Regex via custom SQLite function
│ ├── column_filter# Structured column:op:value filters
│ └── where_builder# Raw WHERE clause with validation
└── ui/ # TUI widgets
├── layout # 3-panel layout management
├── table_list # Sidebar table/view browser
├── data_view # Main data grid with inline editing
├── search_bar # Search input with plugin selector
├── status_bar # Mode, table info, key hints
└── dialog # Confirmation & help overlays
Development
# Run tests (43 tests)
cargo test
# Build release binary
cargo build --release
# Run with a test database
sqlite3 test.db < tests/fixtures/create_test_db.sql
cargo run -- test.db
License
MIT