Fast, vim-native SQL client.
No Electron. No JVM. No bullshit.
Native Rust. Instant startup. Terminal-native. MySQL, Postgres, SQLite, DuckDB.
> analytics > billing v shop v users id: bigint(20) email: varchar name: varchar status: varchar created_at: timestamp > orders > products > sessions > mysql > information_schema
select * from shop.users
select * from shop.users id is_active first_name last_name email status 101 true Ada Lovelace ada@sample.com active 102 true Grace Hopper grace@sample.com active 103 false Alan Turing alan@sample.com pending 104 true Linus Torvalds linus@sample.com active 105 false Margaret Hamilton mh@sample.com inactive
why
Everything a keyboard-driven DB jockey wants.
Native Rust
Instant startup. No JVM, no Node, no runtime tax. Small binary, small RSS.
First-class vim
Normal/insert/visual/command modes. Search, leader chords, query history via Ctrl+P/Ctrl+N.
Terminal UI
sqeel — ratatui terminal client. Instant startup, no
Electron, no JVM.
MySQL · Postgres · SQLite · DuckDB
Powered by sqlx + duckdb-rs. Per-file TOML connections, live
switcher. Query CSV / Parquet directly via DuckDB (SELECT * FROM 'data.csv').
OS keyring credentials
Passwords land in Secret Service / Keychain / Credential Manager —
never plaintext on disk. :migrate-secrets walks
existing connections and moves inline passwords into the keyring.
sqls integration
Completions and diagnostics from any SQL LSP. Errors jump editor
to line:col.
tree-sitter highlighting
Dialect-aware. Fast, accurate, no regex soup.
Editor tabs + history picker
Lazy load, 5-minute RAM eviction. Auto-save SQL buffers. <leader>h opens a fuzzy picker over query history; selection lands in a fresh scratch tab.
:export · :describe · :refresh
:export csv|json [path] writes the active result tab
to disk. :describe <table> dumps dialect-aware
column schema. :refresh /
<leader>R busts the schema cache without
reconnecting.
tmux-aware nav
Ctrl+HJKL across schema / editor / results. Mouse works everywhere too.
Schema browser
Expand DB → tables → columns with types inline. Click or keyboard, fuzzy search across objects.
$DATABASE_URL prompt
Bare sqeel with $DATABASE_URL set
prompts y/N (password masked) before opening the TUI. Skip the
picker when your shell already knows where to go.
install
Prebuilt binaries on every tagged release.
macOS via Homebrew tap, Arch via AUR, Alpine via .apk, or grab a
prebuilt binary. Linux (x86_64, aarch64), macOS (Apple Silicon,
Intel), Windows (x86_64). Arch users: AUR sqeel-bin.
SHA-256 sidecars on every artifact.
$ brew install kryptic-sh/tap/sqeel $ sqeel
$ yay -S sqeel-bin $ paru -S sqeel-bin
# download .apk from https://github.com/kryptic-sh/sqeel/releases/latest $ apk add --allow-untrusted sqeel-*.apk
# crates.io $ cargo install sqeel # or build from the repo $ git clone https://github.com/kryptic-sh/sqeel $ cd sqeel $ cargo build --release # binary in target/release/sqeel