A terminal database client organized the way tmux is: sessions, windows, panes and tabs.
PostgreSQL, MySQL, SQLite and Redis. vim keys everywhere, the mouse too.
Watch the 68-second tour (MP4): a SQLite table, the palette and quick SQL, split panes and sessions, Redis keys and the console.
brew install kackerx/tap/sqlmux| Homebrew (macOS, Linux) | brew install kackerx/tap/sqlmux |
| npm (no Go needed) | npm install -g sqlmux, or npx sqlmux to try it |
| Go 1.26+ | go install github.com/kackerx/sqlmux/cmd/sqlmux@latest |
| Binaries | macOS and Linux, amd64 and arm64, on the Releases page, with checksums.txt |
The icons come from a Nerd Font. Without one they show up as boxes: put icons = "ascii" in ~/.config/sqlmux/config.toml.
Then open something:
sqlmux ./app.db # a SQLite file
sqlmux "postgres://me@localhost:5432/app?sslmode=disable" # or mysql://…
sqlmux # no connections yet: a form to add oneThe quickstart goes from here to editing your first row.
- tmux inside. Sessions, windows, split panes and tabs, with
SPCas the leader (SPC %splits,SPC copens a window,SPC slists sessions). Each session sees all your connections. The layout you quit from comes back next time, and you can save named layouts. - Edit tables in place. Change cells, add and delete rows, then
C-ssaves everything in one transaction. Enum, boolean and time columns get pickers; long text and JSON open in a value editor. - Table tabs. A WHERE input with completion, history and favorites; multi-column ORDER, LIMIT, paging, a column picker, transpose, filter by a cell's value, export to CSV or JSON.
- A vim editor for SQL, diff-tested against nvim: operators and text objects, VISUAL and block selection, registers, search,
:s, formatting withgq. Results go to a bottom pane, one tab per query, which you can pin. - Completion and signature hints. Tables, columns, keywords and functions as you type, with fuzzy matching; enum values where a value goes; a line above the cursor that says which column the value you are typing is for.
- Command palette (
C-p) for every command, table, tab, window and session, with a DDL preview. Quick SQL (;) runs a one-off statement from anywhere. - JSON view (
gj) of a table page or a result, read-only with vim movement and search. - Redis: a tree of databases, namespaces and keys read with
SCAN; each key (string, hash, list, set, zset, stream, RedisJSON) as an editable table; a console with completion and signatures from the server'sCOMMAND DOCS. See Redis. - Every key can be rebound, per pane type, plus vim-style maps (
J = "5j").vim = falsegives plain editors and arrow keys. - Passwords from the OS keychain, a command (
pass,op, …) or an environment variable; SSH tunnels through~/.ssh/config; read-only connections; manual transactions; themes; Nerd Font or ASCII icons; English or Chinese UI.
- Keys: every action and its default keys.
sqlmux keysprints the same list, and?in any pane shows the keys that work there. - Configuration:
config.toml,connections.toml,keymaps.toml, themes and layouts.sqlmux keys --format tomlwrites a completekeymaps.tomlto start from. - Changelog: what changed in each version, and how to migrate. sqlmux is 0.x, so a minor version can change keys or config.
With Go 1.26+ and just: just build puts the binary in bin/, and just --list shows the tests, lint and the sample databases (just db-up starts PostgreSQL and MySQL with sample data in Docker). Without just:
go build -o bin/sqlmux ./cmd/sqlmuxBuilt with Bubble Tea v2. The design notes are in specs/ (in Chinese).