Skip to content
kackerxPublic

About

A tmux-style terminal database client with Vim keybindings for PostgreSQL, MySQL, Redis, and more.

Topics

Resources

Stars

99 stars

Watchers

0 watching

Forks

Repository files navigation

sqlmux

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.

Release CI License

sqlmux: a SQLite table with a WHERE, the JSON view, the command palette, quick SQL, split panes and a second session

Watch the 68-second tour (MP4): a SQLite table, the palette and quick SQL, split panes and sessions, Redis keys and the console.

Nine features: WHERE with completion and history, sort by many columns, completion and field hints, the same table in two panes, flash jump, JSON view, edit a cell and save as one transaction, select rows, which-key

Install

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 one

The quickstart goes from here to editing your first row.

Features

  • tmux inside. Sessions, windows, split panes and tabs, with SPC as the leader (SPC % splits, SPC c opens a window, SPC s lists 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-s saves 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 with gq. 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's COMMAND DOCS. See Redis.
  • Every key can be rebound, per pane type, plus vim-style maps (J = "5j"). vim = false gives 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 and configuration

  • Keys: every action and its default keys. sqlmux keys prints 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 toml writes a complete keymaps.toml to 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.

Build from source

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/sqlmux

Built with Bubble Tea v2. The design notes are in specs/ (in Chinese).

License

MIT

About

A tmux-style terminal database client with Vim keybindings for PostgreSQL, MySQL, Redis, and more.

Topics

Resources

Stars

99 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages