Introducing SQEEL: A Fast, Vim-Native SQL Client in Rust
published:
Every SQL client I tried eventually annoyed me. DBeaver hauls a JVM. TablePlus is closed-source. The Electron crowd burns 500MB of RAM to show a grid. I wanted something that starts instantly, lives in the terminal, and respects my muscle memory. So I built one.
Meet SQEEL.
What is SQEEL? ⚡
SQEEL is a fast, vim-native SQL client written in Rust. No Electron. No JVM. It ships two binaries from one workspace:
sqeel: a terminal UI built on ratatuisqeel-gui: a native GUI built on iced
Same core, same keybindings, same config. Pick the one your mood wants today.
Features
- Native Rust: instant startup, single binary
- Vim bindings first class, not an afterthought
- Mouse support in every pane (even in the TUI)
- MySQL, PostgreSQL, SQLite via
sqlx - tree-sitter SQL syntax highlighting, dialect-aware
- LSP integration with
sqlsfor completions and inline diagnostic underlines - Schema browser: click or
hjklto expand/collapse - Editor tabs with lazy loading and 5-minute RAM eviction
- Auto-save SQL buffers, result history, query history
- tmux-aware pane navigation:
Ctrl+HJKLcrosses tmux panes cleanly - Vim status bar and command mode (
:q,:w, all the muscle memory)
Layout
┌──────────┬─────────────────────────────┐
│ │ [tab1] [tab2] │
│ Schema │ Editor │
│ (15%) │ (85%) │
│ │ │
│ ├─────────────────────────────┤
│ │ Results │
│ │ (shows on query) │
└──────────┴─────────────────────────────┘
Results hide when empty so the editor fills the right pane. Run a query and the
results pane expands to 50%. Dismiss with q and you're back to full-size
editing. No wasted pixels.
Connections as Files
Every connection is one TOML file in ~/.config/sqeel/conns/. Filename becomes
the display name.
# ~/.config/sqeel/conns/prod.toml
url = "postgres://user:pass@host/db"# ~/.config/sqeel/conns/local.toml
url = "mysql://localhost/mydb"
Drop a file in, it shows up in the connection switcher (<leader>c). Version
control it, symlink it, rsync it between machines. No proprietary blob.
The Vim Bit
If you already live in vim, you already know how to drive SQEEL. i to insert,
Esc to normal, v for visual, : for command mode, / to search. Leader key
(default Space) opens the fun stuff:
| Key | Action |
|---|---|
<leader>c | Connection switcher |
<leader>n | New scratch tab |
<leader>r | Rename current tab |
<leader>d | Delete tab (confirm) |
<leader><leader> | Fuzzy file picker |
Running a query is Ctrl+Enter for the statement under the cursor, or
Ctrl+Shift+Enter to run every statement in the buffer.
LSP-Powered Autocomplete
Point editor.lsp_binary at sqls and
you get schema-aware completions, hover docs, and inline diagnostic underlines,
using the same machinery your editor already uses, wired into the SQL editor
pane. No bespoke completion engine to maintain, no magic.
Two UIs, One Core
The workspace splits cleanly:
sqeel-core/ # state, DB, query runner, schema, config
sqeel-tui/ # ratatui terminal provider
sqeel-gui/ # iced native GUI provider
sqeel/ # binaries: sqeel + sqeel-gui
All the logic (connections, schema, query execution, history, eviction) lives in
sqeel-core. The TUI and GUI are thin providers that render the same state. Fix
a bug in the core, both UIs benefit. Want a web provider next? Drop in another
crate.
Why Rust?
Same reasons as always: performance, single-binary distribution, and sqlx.
SQEEL opens instantly, connects to a real production database without a JVM
warming up, and fits in a cargo install one-liner. No runtime to manage, no
package manager to fight.
How to Get It 📦
cargo install --git https://github.com/sqeel-sql/sqeel --bin sqeel
cargo install --git https://github.com/sqeel-sql/sqeel --bin sqeel-gui
Or clone and build:
git clone https://github.com/sqeel-sql/sqeel
cd sqeel
cargo build --release
Binaries land in target/release/sqeel and target/release/sqeel-gui.
Final Thoughts
SQEEL started the way most of my tools do: I was annoyed at something, and a weekend later there was a prototype. It's now my daily driver for every database I touch. If you live in vim, write a lot of SQL, and resent every Electron SQL client you've ever opened, give it a spin. Issues and PRs welcome at github.com/sqeel-sql/sqeel. 🍻