{"id":49303842,"url":"https://github.com/kryptic-sh/sqeel","last_synced_at":"2026-05-06T00:06:42.724Z","repository":{"id":352880599,"uuid":"1217045323","full_name":"kryptic-sh/sqeel","owner":"kryptic-sh","description":"Fast, vim-native SQL client. No Electron. No JVM. No bullshit.","archived":false,"fork":false,"pushed_at":"2026-05-03T09:18:25.000Z","size":2181,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T09:23:39.731Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://sqeel.kryptic.sh/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kryptic-sh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-21T13:44:41.000Z","updated_at":"2026-05-03T09:18:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kryptic-sh/sqeel","commit_stats":null,"previous_names":["sqeel-sql/sqeel","kryptic-sh/sqeel"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/kryptic-sh/sqeel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryptic-sh%2Fsqeel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryptic-sh%2Fsqeel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryptic-sh%2Fsqeel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryptic-sh%2Fsqeel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kryptic-sh","download_url":"https://codeload.github.com/kryptic-sh/sqeel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryptic-sh%2Fsqeel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32672688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-26T08:18:45.580Z","updated_at":"2026-05-06T00:06:42.707Z","avatar_url":"https://github.com/kryptic-sh.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SQEEL\n\n[![CI](https://github.com/kryptic-sh/sqeel/actions/workflows/ci.yml/badge.svg)](https://github.com/kryptic-sh/sqeel/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/kryptic-sh/sqeel)](https://github.com/kryptic-sh/sqeel/releases/latest)\n\nFast, vim-native SQL client. No Electron. No JVM.\n\n## Features\n\n- Native Rust — instant startup\n- Vim bindings — first class (operators, text objects, visual modes, marks,\n  jumplist, page scroll, H/M/L, case/indent ops, dot-repeat, soft-wrap with\n  `:set wrap` / `:set linebreak` and `gj`/`gk`)\n- Mouse support in all panes\n- Two UIs: terminal (`sqeel`) or native GUI (`sqeel-gui`)\n- MySQL, SQLite, PostgreSQL via sqlx\n- tree-sitter SQL syntax highlighting (dialect-aware)\n- LSP integration (`sqls`) — completions + inline diagnostic underlines + gutter\n  signs, tree-sitter fallback for parse errors, auto-generated `sqls` config\n  from the active connection, `K` hover (markdown + GFM tables), `gd`\n  goto-definition\n- Schema browser — click or keyboard to expand/collapse\n- Editor tabs with lazy loading and 5-min RAM eviction\n- Auto-save SQL buffers, result history, query history\n- tmux-aware pane navigation\n- Vim-style status bar + command mode (`:`)\n- Vim-style results pane — cell cursor, visual-line / visual-block selection\n  with TSV yank, `/` search, count prefix nav, mouse drag select\n- Focus-stealing hover popup — markdown rendered with pulldown-cmark, GFM tables\n  turned into a navigable cell grid (yank, visual selection, `/` search),\n  schema-cache fast path for tables, lazy column fetch on miss\n\n## Layout\n\n```\n┌──────────┬─────────────────────────────┐\n│          │  [tab1] [tab2]              │\n│  Schema  │         Editor              │\n│  (15%)   │         (85%)               │\n│          │                             │\n│          ├─────────────────────────────┤\n│          │         Results             │\n│          │      (shows on query)       │\n└──────────┴─────────────────────────────┘\n```\n\nResults hidden → editor fills right pane. Query runs → results expand to 50%.\n\n## Install\n\n```sh\ncargo install --git https://github.com/kryptic-sh/sqeel --bin sqeel\ncargo install --git https://github.com/kryptic-sh/sqeel --bin sqeel-gui\n```\n\nOr build from source:\n\n```sh\ngit clone https://github.com/kryptic-sh/sqeel\ncd sqeel\ncargo build --release\n```\n\nBinaries land in `target/release/sqeel` and `target/release/sqeel-gui`.\n\n### Sandbox mode\n\nRun `sqeel --sandbox` to launch in a fresh tempdir-backed environment that won't\ntouch your real `~/.config/sqeel` or `~/.local/share/sqeel`. The sandbox\nauto-seeds:\n\n- a `sample` SQLite connection backed by a fresh DB file,\n- a `sample_users.sql` buffer with a `CREATE TABLE users` + a couple of\n  inserts + a select.\n\nThe temp dir path is printed to stderr at startup. It survives the process\n(under `/tmp/sqeel-sandbox-*`) — clean it up with `rm -rf` when you're done.\n\n## Config\n\n### Main — `~/.config/sqeel/config.toml`\n\n```toml\n[editor]\nkeybindings = \"vim\"\n\n# Path to the SQL LSP binary (sqls recommended: https://github.com/sqls-server/sqls)\nlsp_binary = \"sqls\"\n\n# Lines scrolled per mouse wheel tick (all panes)\nmouse_scroll_lines = 3\n\n# Leader key for chord shortcuts (e.g. \u003cleader\u003ec opens the connection switcher).\n# Single character; \" \" for Space.\nleader_key = \" \"\n\n# Stop a Ctrl+Shift+Enter batch on the first query error.\nstop_on_error = true\n```\n\n### Connections — `~/.config/sqeel/conns/\u003cname\u003e.toml`\n\nEach file is one connection. Filename = display name in UI.\n\n```toml\nurl = \"mysql://localhost/mydb\"\n```\n\n```toml\nurl = \"postgres://user:pass@host/db\"\n```\n\nsqeel scans `conns/` on startup and loads all `.toml` files.\n\n## Keybindings\n\nPress `?` in normal mode to open the help overlay.\n\n### Global\n\n| Key                | Action                                              |\n| ------------------ | --------------------------------------------------- |\n| `?`                | Open help overlay (normal mode)                     |\n| `Ctrl+Enter`       | Run statement under cursor — or selection in Visual |\n| `Ctrl+Shift+Enter` | Run every statement in the buffer                   |\n| `:q`               | Quit                                                |\n| `Ctrl+C`           | Cancel running query / batch                        |\n| `Esc Esc`          | Dismiss all toasts                                  |\n\n### Leader (default `Space` — config: `editor.leader_key`)\n\n| Key                | Action                       |\n| ------------------ | ---------------------------- |\n| `\u003cleader\u003ec`        | Connection switcher          |\n| `\u003cleader\u003en`        | New scratch tab              |\n| `\u003cleader\u003er`        | Rename current tab           |\n| `\u003cleader\u003ed`        | Delete current tab (confirm) |\n| `\u003cleader\u003e\u003cleader\u003e` | Fuzzy file picker            |\n\n### Pane Focus\n\n| Key              | Action        |\n| ---------------- | ------------- |\n| `Ctrl+H` / click | Focus schema  |\n| `Ctrl+L` / click | Focus editor  |\n| `Ctrl+J` / click | Focus results |\n| `Ctrl+K` / click | Focus editor  |\n\n### Tabs\n\n| Key            | Action        |\n| -------------- | ------------- |\n| `Shift+L`      | Next tab      |\n| `Shift+H`      | Prev tab      |\n| Click tab name | Switch to tab |\n\n### Editor — Vim\n\nCore motions, operators, text objects, and visual modes all work. The help\noverlay (`?`) is the authoritative list; the table below is a cheat sheet of\nfeatures that go beyond basic vim.\n\n| Key                     | Action                                    |\n| ----------------------- | ----------------------------------------- |\n| `i` / `Esc`             | Insert / Normal                           |\n| `v` / `V` / `Ctrl+V`    | Visual (char / line / block)              |\n| `:`                     | Command mode                              |\n| `/` + `n` / `N`         | Search + next / previous                  |\n| `*` / `#`               | Search word under cursor fwd / back       |\n| `Ctrl+d` / `Ctrl+u`     | Half-page scroll (cursor follows)         |\n| `Ctrl+f` / `Ctrl+b`     | Full-page scroll                          |\n| `H` / `M` / `L`         | Cursor to viewport top / middle / bottom  |\n| `gj` / `gk`             | Visual-line down / up (under `:set wrap`) |\n| `gg` / `G`              | First / last line                         |\n| `zz` / `zt` / `zb`      | Center / top / bottom viewport on cursor  |\n| `m{a-z}`                | Set mark                                  |\n| `` `{a-z} `` / `'{a-z}` | Jump to mark (charwise / linewise)        |\n| `Ctrl+o` / `Ctrl+i`     | Jumplist back / forward                   |\n| `gU` / `gu` / `g~`      | Uppercase / lowercase / toggle-case op    |\n| `\u003e` / `\u003c`               | Indent / outdent op                       |\n| `Ctrl+a` / `Ctrl+x`     | Increment / decrement number under cursor |\n| `K`                     | LSP hover popup for symbol under cursor   |\n| `gd`                    | LSP goto-definition (pushes jumplist)     |\n| `Ctrl+P` / `Ctrl+N`     | Query history prev / next                 |\n\n### Explorer Pane\n\n| Key           | Action                 |\n| ------------- | ---------------------- |\n| `j` / `k`     | Navigate down / up     |\n| `Enter` / `l` | Expand / collapse node |\n| `/`           | Search                 |\n\n### Results Pane\n\nVim-native navigation over the cell grid. Arrow keys mirror `hjkl`.\n\n| Key / Mouse           | Action                                           |\n| --------------------- | ------------------------------------------------ |\n| `j` / `k` / `h` / `l` | Cursor / scroll (count-prefixable, arrows alias) |\n| `gg` / `G`            | First / last row                                 |\n| `0` / `$`             | First / last column of current row               |\n| `/` + `n` / `N`       | Search cells (case-insensitive) + next / prev    |\n| `V`                   | Visual-line select rows                          |\n| `v` / `Ctrl+V`        | Visual-block select rectangle                    |\n| `y`                   | Yank selection / row (TSV)                       |\n| `Esc`                 | Clear selection / close `/` prompt               |\n| `Shift+H` / `Shift+L` | Prev / next result tab                           |\n| `Enter`               | Jump editor cursor to error line:col (error tab) |\n| Left click            | Copy column value                                |\n| Click + drag          | Visual-block select cells across drag region     |\n| Right click           | Copy full row                                    |\n| Left click (error)    | Copy query or error text                         |\n| `q` / `Ctrl+C`        | Dismiss results                                  |\n\n### Hover Popup (`K`)\n\nOpens a focus-stealing popup over the editor; arrow keys + mouse drag mirror\n`hjkl`. Tabular hover responses (sqls returns markdown tables for table schemas)\nrender as a navigable grid; plain markdown is styled in-place.\n\n| Key / Mouse           | Action                                        |\n| --------------------- | --------------------------------------------- |\n| `j` / `k` / `h` / `l` | Cell cursor (table) / scroll (text)           |\n| `gg` / `G`            | First / last row                              |\n| `0` / `$`             | First / last column of current row            |\n| `/` + `n` / `N`       | Search cells (case-insensitive) + next / prev |\n| `V` / `v` / `Ctrl+V`  | Visual-line / visual-block selection          |\n| `y`                   | Yank cell or selection (TSV)                  |\n| Click + drag          | Drag-select cells (auto-scrolls past edge)    |\n| Mouse wheel           | Move cursor row                               |\n| `Esc`                 | Clear selection / dismiss popup               |\n\n### Connection Switcher\n\n| Key       | Action            |\n| --------- | ----------------- |\n| `j` / `k` | Navigate          |\n| `Enter`   | Connect           |\n| `n`       | New connection    |\n| `e`       | Edit connection   |\n| `d`       | Delete connection |\n| `Esc`     | Close             |\n\n### Add / Edit Connection\n\n| Key     | Action                  |\n| ------- | ----------------------- |\n| `Tab`   | Switch Name / URL field |\n| `Enter` | Save                    |\n| `Esc`   | Cancel                  |\n\n## Data\n\n```\n~/.local/share/sqeel/\n  queries/    # auto-saved SQL buffers (grouped by connection)\n  results/    # last 10 successful results (JSON, grouped by connection)\n```\n\n## Workspace\n\n```\nsqeel-core/            # state, DB, query runner, schema, config\nsqeel-tui/             # ratatui terminal provider\nsqeel-gui/             # iced native GUI provider\nsqeel-vim/             # vim-mode engine + ex commands (built on sqeel-buffer)\nsqeel-buffer/          # vim-shaped text buffer + cell-write render widget\nsqeel/                 # binaries: sqeel + sqeel-gui\n```\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkryptic-sh%2Fsqeel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkryptic-sh%2Fsqeel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkryptic-sh%2Fsqeel/lists"}