● 0.4.19 MIT Rust

Fast, vim-native SQL client.

No Electron. No JVM. No bullshit.

Native Rust. Instant startup. Terminal-native. MySQL, Postgres, SQLite, DuckDB.

sqeel — shop
Explorer — (6)
> analytics
> billing
v shop
   v users
     id: bigint(20)
     email: varchar
     name: varchar
     status: varchar
     created_at: timestamp
   > orders
   > products
   > sessions
> mysql
> information_schema
scratch_001.sql
select * from shop.users
Results (188 rows)
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
NORMAL shop :: scratch_001.sql

why

Everything a keyboard-driven DB jockey wants.

01 — CORE

Native Rust

Instant startup. No JVM, no Node, no runtime tax. Small binary, small RSS.

02 — INPUT

First-class vim

Normal/insert/visual/command modes. Search, leader chords, query history via Ctrl+P/Ctrl+N.

03 — TUI

Terminal UI

sqeel — ratatui terminal client. Instant startup, no Electron, no JVM.

04 — DB

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').

05 — SECRETS

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.

06 — LSP

sqls integration

Completions and diagnostics from any SQL LSP. Errors jump editor to line:col.

07 — SYNTAX

tree-sitter highlighting

Dialect-aware. Fast, accurate, no regex soup.

08 — TABS

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.

09 — EX

: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.

10 — PANES

tmux-aware nav

Ctrl+HJKL across schema / editor / results. Mouse works everywhere too.

11 — SCHEMA

Schema browser

Expand DB → tables → columns with types inline. Click or keyboard, fuzzy search across objects.

12 — CLI

$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.

sqeel — macOS (Homebrew)
$ brew install kryptic-sh/tap/sqeel
$ sqeel
sqeel — Arch Linux (AUR)
$ yay -S sqeel-bin
$ paru -S sqeel-bin
sqeel — Alpine Linux
# download .apk from https://github.com/kryptic-sh/sqeel/releases/latest
$ apk add --allow-untrusted sqeel-*.apk
sqeel — from source
# 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