A fast, native desktop client for PostgreSQL and other database families — built with Tauri v2, React 19, and Rust.
Features depend on the selected database family and installed driver. The list below describes the PostgreSQL feature set; see the provider matrix and contributor guide for other products, capabilities and driver requirements.
- Table browser — browse rows with filtering, sorting, and pagination
- Inline row editing — edit, insert, duplicate, and delete rows with transaction support
- Schema inspector — columns, indexes, constraints, foreign keys, and triggers per table
- Query editor — Monaco-based SQL editor with syntax highlighting and formatting
- Query history & saved queries — automatic per-connection history (search, re-run) plus named saved queries
- EXPLAIN visualization —
EXPLAINandEXPLAIN ANALYZErendered as a collapsible plan tree with costs and timings - SQL lint — unknown tables in
FROM/JOINget warning markers (CTE-aware) - ER diagram — visual entity-relationship diagram for a schema
- Views — list and edit view definitions
- Materialized views — list, create, refresh (standard and concurrent), and drop
- Row Level Security — enable/force RLS per table, manage policies (roles, USING / WITH CHECK)
- Partitioning — inspect partitioned tables, attach and detach partitions
- Logical replication — manage publications (per-table or FOR ALL TABLES) and subscriptions
- Sessions & locks — live
pg_stat_activitywith cancel/terminate, plus lock monitor - Enums — browse, create, and drop enum types
- Schemas — create and drop (with optional CASCADE)
- Database overview — sizes per database and schema on the home dashboard
- Functions — browse and edit stored functions/procedures
- Triggers — view trigger definitions per table
- Sequences — list and alter sequences (start, min, max, increment, cycle, restart)
- Extensions — list installed extensions; install or drop them via SQL
- Roles & privileges — manage roles and their schema/table privileges
- Data export — export table data or query results as CSV or JSON
- Transaction panel — review and commit/rollback pending changes
- Multiple connections — manage and switch between connections; supports connection strings and individual fields
- SSL / TLS —
disable,prefer,require,verify-ca,verify-fullper connection (OS certificate store) - SSH tunnels — reach private databases through a bastion (password, key or SSH agent incl. 1Password, ProxyJump chains, known_hosts verification with optional TOFU on every hop, host import from
~/.ssh/config); database TLS follows the selected SSL mode. See docs/ssh-network.md - Proxies — SOCKS5 and HTTP CONNECT (optional credentials) to reach the SSH server or, without SSH, the database itself via a local forwarding port
- OS keychain secrets — passwords live in Keychain / Credential Manager / Secret Service, never in localStorage
- AI assistant — ask questions about your data in plain language (⌘J or "KI fragen" in the command palette). Answers come with charts and tables you can export as CSV or Excel or open as SQL, plus suggested follow-up questions. Attach CSV, Excel, JSON or Parquet files and let the AI load them into a new table after your approval. Per-connection knowledge (table descriptions and a glossary) is written by you or generated by the AI and used in every chat. Works with Codex, Claude Code, Gemini CLI, OpenCode, GitHub Copilot, your own OpenAI/Anthropic/Google key, or fully local models via Ollama and LM Studio. See docs/ai-workspace.md
- Dark / light / system theme
| Layer | Technology |
|---|---|
| Shell | Tauri v2 (Rust backend) |
| Frontend | React 19 · TypeScript · Vite |
| Routing | TanStack Router |
| Data | TanStack Query |
| UI | shadcn/ui · Tailwind CSS v4 |
| Editor | Monaco Editor |
| DB | tokio-postgres · bb8 connection pool |
- Rust (stable toolchain)
- Bun (version 1.3.10;
bunis required —tauri.conf.jsonhardcodes it) - Tauri CLI v2:
cargo install tauri-cli --version "^2"
bun install
bun run tauri devThe app opens automatically. The Vite dev server runs on port 1420 (strict).
bun run tauri buildOutputs an installer / app bundle in src-tauri/target/release/bundle/.
src/
features/ # Feature modules (one view component per feature)
shell/ # App chrome: layout, header, sidebar, tab bar, transaction panel
table/ # Table & view browser (data, columns, indexes, triggers)
query/ # SQL query editor
alter-table/ # Column management (add / alter / drop)
sequences/ # Sequence listing and editing
extensions/ # Extension management
functions/ # Function/procedure browser
triggers/ # Trigger viewer
er-diagram/ # ER diagram canvas
users/ # Roles & privileges
settings/ # App settings
home/ # Home / overview
components/ui/ # Shared shadcn primitives
lib/
db.ts # Tauri invoke() bridge (all commands)
queries.ts # TanStack Query hooks
connections.ts # Zustand connection store (persisted)
settings.ts # Zustand settings store (persisted)
transactions.ts # Transaction state
routes/ # TanStack Router file routes (thin wrappers)
src-tauri/src/
db/
mod.rs # DatabaseAdapter trait + shared types
postgres.rs # PostgreSQL implementation
commands.rs # #[tauri::command] handlers
pool.rs # bb8 connection pool management
transaction.rs # Transaction state management
lib.rs # Tauri builder, plugin init, command registration
main.rs # Entry point
- All
invoke()calls are centralized insrc/lib/db.ts. TypeScript types mirror Rust structs — keep them in sync. DatabaseAdaptertrait insrc-tauri/src/db/mod.rsis the extension point for additional DB engines.- Routes in
src/routes/are thin: they wirecreateFileRouteto feature views. Route tree is auto-generated intosrc/routeTree.gen.ts— do not edit it manually. - Connections are persisted in
localStorageunder keyl8db.connections. - PostgreSQL connections use
postgres-native-tls(OS certificate store) with per-connectionssl_mode. fetch_table_rowsuses the configurable page size from settings (default 100). Builder-generated filters are validated server-side; raw SQL filter mode sendsallow_raw=true.
- Fork the repo and create a feature branch.
- Run
cargo checkandcargo clippyinsrc-tauri/before committing Rust changes. - Run
npx tsc -p tsconfig.app.json --noEmitto typecheck the frontend. - Open a pull request with a clear description of the change.
-
Data transfer behavior, limits and benchmarks: data-transfer.md.
-
Backup, restore and dump tools: backup.md.
-
Reproducible database and browser checks: integration-tests.md.
-
Performance tests, workload replay and
l8db --benchmark: performance.md. -
Production configuration: .github/PRODUCTION.md.
-
CHANGELOG.mdtracks user-facing changes (Keep a Changelog). -
Releases: every push to
mainauto-publishes installers for macOS (Universal DMG), Windows (MSI/NSIS), and Linux (deb/AppImage) pluslatest.jsonfor the in-app auto-updater — version (<major>.<minor>.<commit-count>) and changelog are generated from Conventional Commits. Full runbook:.github/RELEASING.md. -
OS package managers (Homebrew, winget, AUR, Flatpak): templates in
packaging/, guide inpackaging/README.md. -
SECURITY.mddescribes supported versions and how to report vulnerabilities.
l8db is open source under the Apache License 2.0. See NOTICE for attribution.