Mark Ku's Blog
Open Source · GitHub

DB-Kit

One interface for MySQL, MariaDB, PostgreSQL, SQL Server, Oracle, SQLite, MongoDB, Redis, Kafka, Elasticsearch and RabbitMQ — a cross-platform database manager built on Tauri + Rust, ~10× lighter than Electron, secure and ready to go, bilingual (Traditional Chinese / English), with a built-in AI assistant, SQL stress testing, SQL review and the dbk command-line tool.

Download latestView on GitHub
Free · Open Source (MIT) · No telemetryCross-platform · Windows / macOS / Linux
Unified interface
DB-Kit

DB-Kit in 3 Minutes

A quick video tour of what it solves and its highlights.

Supported Data Sources

Relational, document, key-value, event streaming and search — eleven data sources in one workflow

🐬

MySQL

Full CRUD, DDL schema editing, EXPLAIN analysis, index management and SSL modes.

🦭

MariaDB

A first-class connection type with full MySQL feature parity, plus INSERT / DELETE … RETURNING result sets.

🐘

PostgreSQL

Multi-column filtering, field statistics, SSL modes, structure dump and multi-format export.

🗄️

SQL Server

CRUD, schema tabs (indexes / foreign keys / DDL), stored procedures & functions, SHOWPLAN execution plans and ER diagrams.

🏛️

Oracle

EZConnect / SID / TNS connection modes and DBMS_XPLAN execution plans; requires the 64-bit Oracle Instant Client (server 12c+).

🪶

SQLite

Serverless local file database that works out of the box — great for lightweight projects.

🍃

MongoDB

Documents flattened into tables, find / aggregation pipelines, CRUD via JSON, visualized explain, validation rules and a monitoring panel.

🔴

Redis

Five structure editors, namespace key tree, Pub/Sub, an ops panel, INFO status and a command console.

🌊

Kafka

Topic / partition / consumer-group management, message browsing & producing, offset resets, monitoring & alerts; Schema Registry / Connect / ACLs.

🔍

Elasticsearch

Cluster / index tree, a Query DSL editor (JSON envelope with linting and field completion), search / count / aggregations as dual result sets, cluster health overview and mapping viewer; OpenSearch compatible.

🐰

RabbitMQ

Vhost / queue tree, non-destructive message preview (basic.get then requeue), publishing with publisher confirms, queue details, purge / delete and a cluster overview.

Core Features

Everyday database operations made consistent and secure

🗂️

Unified interface

Eleven data sources share one connection tree, data grid and shortcuts; a Ctrl+K command palette fuzzy-jumps to any connection / database / table.

🔐

Secure connections

Passwords encrypted in the OS keychain; SSH tunnels with host key verification (TOFU); optional app-lock password, per-connection read-only mode and color labels to tell production from staging.

✏️

Full CRUD & filtering

Inline cell editing with safe primary-key writes; multi-column filtering across 9 operators with AND / OR, multi-column sorting, two-way foreign-key navigation and pinned tables.

📝

Query workspace

Syntax highlighting with context-aware column autocomplete, a visual query builder (auto-JOIN from foreign keys), SQL snippets, :name parameterized queries, history & favorites, and 7 editor color themes.

📑

Stacked result sets

Run multiple SQL statements at once and see every result set stacked together — each independently scrollable, sortable and exportable; results before a failing statement are kept.

🔎

Advanced object search

Ctrl+Shift+G searches tables / columns / indexes / stored procedures / triggers across databases, including definitions and comments; whole-word and wildcard matching, highlighted hits, jump back to the sidebar tree.

🔁

Import & export

Export to CSV / TSV / Excel / JSON / SQL INSERT / Markdown; Excel and CSV import with preview, column mapping and row-level error reporting.

🔀

Data transfer & sync

Transfer single tables or whole databases across connections (auto-creating missing tables); compare two tables by primary key to generate sync SQL; structure diff works across connections too.

📊

Execution plans & stats

Visualized EXPLAIN everywhere: SHOWPLAN for SQL Server, DBMS_XPLAN for Oracle, explain stage trees for MongoDB — plus field statistics and distinct-value distribution.

🔥

SQL stress testing

Replay the current statement across threads: fixed iterations or a duration with ramp-up, warmup, p50 / p90 / p95 / p99 latency percentiles and a live per-second TPS chart; errors grouped by fingerprint, run on a dedicated pool so interactive connections stay free, with writes and destructive statements blocked by default.

🩺

SQL review

A Review tab under the query editor runs 15 static rules as you type: UPDATE / DELETE without WHERE, cartesian joins, functions on columns defeating indexes, the NOT IN NULL trap, NOLOCK dirty reads and more. Dialect-aware, never executes your query, works offline.

Schema cache & query cancel

Table / column completion now comes from a single dictionary query cached to disk, so the whole schema is suggested the moment a tab opens, even offline; a running query can be cancelled on the server (KILL QUERY / pg_cancel_backend), killing the statement without dropping the session.

🧩

ER diagrams, DDL & docs

Draggable entity-relationship diagrams, DDL schema editing, index management, and one-click whole-database documentation in HTML / Markdown.

🛡️

Query safety net & backups

A result row cap and query timeouts so a stray SELECT * can't freeze the app; scheduled backups with history; connection pool health checks and monitoring.

🌊

Kafka streaming

Topics / partitions / consumer groups with offset resets (preview before apply); a message browser with JS filter expressions and Avro / Protobuf decoding; producing with traffic mode and CSV batches.

📈

Kafka monitoring & alerts

Health risk scans, background metric sampling with trend charts; alert rules that fire OS notifications; Schema Registry read/write, Connect connectors and ACL management.

🎨

Seven gemstone themes

Amethyst / Moonstone / Jade / Garnet / Amber / Ruby / Obsidian, switched from the toolbar along with light / dark, driving both the whole app and SQL editor syntax highlighting.

🌐

Bilingual UI

Traditional Chinese ⇄ English switching at runtime, no restart; the GUI, backend error messages, AI context and the dbk CLI (--lang) all follow one language setting.

🤖

Built-in AI assistant

A side panel wired to your local Claude CLI (signed in with your Claude subscription, no cloud API): streaming Q&A, natural-language SQL / ES DSL generation you preview before applying, plus one-click AI review, tuning advice and stress-report analysis.

⌨️

dbk command-line tool

Query / browse / export / backup / stress test, plus writes gated behind --yes (and --force for destructive ones); reuses the same connections and keychain and compiles to a slim Tauri-free binary — ideal for servers and scripts.

Screenshots

Real screenshots of the app (dark theme)

Table view

Table view

Connection tree, tabs, and an inline-editable data grid with safe primary-key writes.

Query editor

Query editor

SQL syntax highlighting, autocomplete, query history & favorites, run-selection; multi-statement results stacked together.

ER diagram

ER diagram

Foreign-key relationships visualized; draggable, zoomable cards with remembered layout.

Redis key-value

Redis key-value

Namespace key tree, five structure editors, and an INFO server-status panel.

Advanced object search

Advanced object search

Ctrl+Shift+G searches tables / columns / indexes / stored procedures across databases, with highlighted hits and one-click jump back to the sidebar tree.

Kafka message browser

Kafka message browser

Topic tree with partition / offset / key / value at a glance, JSON detail pane with headers; one-shot queries and live tail.

SQL stress test

SQL stress test

One query replayed across threads: TPS, mean / standard deviation and p50 / p90 / p95 / p99 latency percentiles, a live per-second chart, and errors grouped by fingerprint.

SQL review

SQL review

The Review tab under the query editor: 15 static rules across three severity levels listed as you type; click a finding to select the matching range in the editor.

Tech Stack

Rust backend performance and safety, with a modern frontend experience

FrameworkTauri 2
FrontendReact 18 + TypeScript + Vite
UITailwind CSS + shadcn/ui
StateZustand
BackendRust (sqlx / tiberius / rust-oracle / mongodb / redis / rdkafka / lapin)
SecurityOS keychain + SSH tunnels (russh)

Download & Install

Don't want to build it yourself? Grab the installer for your OS from GitHub Releases

Windows 10 / 11

DB.Kit_x.y.z_x64-setup.exe (NSIS, recommended) or _x64_en-US.msi

Download and double-click to run the install wizard.

macOS

DB.Kit_x.y.z_aarch64.dmg (Apple Silicon) / x64.dmg (Intel)

Download the .dmg for your chip and drag the app into Applications.

Linux

.AppImage (no install) / .deb (Debian/Ubuntu) / .rpm (Fedora/RHEL)

chmod +x the .AppImage and run it directly, or install the matching .deb / .rpm package. If the latest release doesn't include Linux files yet, grab the previous release or build from source.

Windows: if SmartScreen warns you, click "More info" → "Run anyway" (the installer isn't paid-code-signed); Tauri needs the WebView2 Runtime — built into Windows 11, and the installer prompts to download it if missing. macOS: the installer isn't Apple-notarized, so if first launch is blocked, right-click the app → "Open", or go to System Settings → Privacy & Security and click "Open Anyway". The app checks GitHub for new versions on startup (or manually from the About dialog), so you won't need to come back for updates. Connecting to Oracle additionally requires the 64-bit Oracle Instant Client (without it, only Oracle connections are affected).

Quick Start

  1. 1

    Install prerequisites: Rust (stable), Node.js 18+, and the Tauri system dependencies.

  2. 2

    Clone https://github.com/markku636/db-kit, enter the project directory and run npm install.

  3. 3

    Run npm run tauri dev for development; run npm run tauri build to produce installers (Windows also has a one-click .msi / .exe build script).

Requires Rust and Node.js 18+; the first build compiles the Rust backend, so allow some time.

The command-line tool dbk

Besides the desktop GUI there's a dbk CLI: read-only queries, browsing, export, backups, stress tests, and writes gated behind explicit flags. It reuses the core layer (connection management / export / backup / encryption) without going through Tauri — ideal over SSH, in scripts and in scheduled jobs.

Run a read-only query on a connection saved in the GUI, output CSV

dbk --conn prod-mysql --format csv query "select id,name from users limit 20"

Ad-hoc connection (password via env var so it never lands in argv), list tables

DBKIT_PASSWORD=*** dbk --kind mysql --host 10.0.0.5 --user app db list

Browse a table (paging / filtering / sorting)

dbk --conn prod-mysql table data orders --page 0 --page-size 50 --filter "status:=:paid" --sort "created_at:desc"

Export a whole table (--data-format takes csv / tsv / xlsx / json / sql / markdown)

dbk --conn prod-mysql export orders --to orders.xlsx --data-format xlsx

Stress test: 8 threads for 30 seconds with a 5-second ramp, JSON report as a performance baseline

dbk --conn prod-mysql stress "select * from orders where status = 'paid'" --threads 8 --seconds 30 --ramp 5 --format json > baseline.json

Writes need --yes; without the flag nothing runs and it just prints what it would do (a built-in dry run)

dbk --conn staging exec "update orders set status = 'void' where id = 1001" --yes

Compile a slim Tauri-free binary

cargo build --release --no-default-features --bin dbk

Three layers of safety: query / explain only allow read statements (select / with / show / describe / explain / pragma…) and reject anything that writes with a non-zero exit code; writing means switching to exec with --yes; DROP / TRUNCATE / FLUSHDB and UPDATE·DELETE without a WHERE additionally need --force. The check strips strings, comments and parentheses first and only honors a top-level WHERE, so commenting out the condition or hiding it in a subquery won't slip past. stress is always read-only and has no --allow-writes. --kind supports mysql / mariadb / postgres / sqlite / mongo / redis / mssql / oracle (Kafka / Elasticsearch / RabbitMQ are GUI-only); --url takes a single connection string (e.g. oracle://user:pass@host:1521/SERVICE); the global --lang zh-TW|en switches message language (shared with the GUI, --help included). Pairing it with a read-only database account is still recommended as a second line of defense.

Read the full CLI guide (docs/cli.md)

Want to manage every database from one interface?

Free, open source (MIT) and cross-platform. See the full docs, installers and source on GitHub.

DB-Kit — Cross-platform Unified Database Manager (Open Source) | Mark Ku's Tech Blog - Mark Ku's Tech Notes