Native cross-platform database manager.
PostgreSQL · MySQL · Redis · MongoDB · SQLite · Cassandra — one binary, no Electron.
A native, lightweight, cross-platform database manager built with Rust and Slint — in the spirit of TablePlus but compiled from a single codebase for macOS and Linux.
Where RDB is headed and why — see VISION.md.
- Multi-engine — PostgreSQL, MySQL/MariaDB, Redis, MongoDB, SQLite, Cassandra in one app
- Native UI — GPU-rendered via Slint (no webview, no Chromium, no Electron)
- Fast & light — no GC, no runtime; aggressive release optimization (LTO,
opt-level=z,panic=abort) - Secure connections — passwords stored in OS keychain (macOS Keychain, libsecret) with AES-GCM encrypted-file fallback
- Schema browser — sidebar tree: databases → tables/collections/keys → columns/fields
- Tabbed query editor — multiple tabs per session, one per engine
- Results grid — resizable columns, client-side row filtering, copy support
- Command palette —
Cmd+Kto jump to any connection or table instantly - DSN import — paste a connection URL, fields auto-fill
- Connection test — verify creds before saving
- Light / dark mode toggle
| Engine | Protocol | Result type |
|---|---|---|
| PostgreSQL | tokio-postgres |
Tabular |
| MySQL / MariaDB | mysql_async |
Tabular |
| Redis | redis crate |
Key-value / raw |
| MongoDB | mongodb crate |
Documents (JSON) |
| SQLite | rusqlite |
Tabular |
| Cassandra | scylla |
Tabular |
The UI (app/) depends only on rdb-core. It never imports a concrete driver crate. Adding a new engine = a new driver-* crate that implements the Driver trait; the UI is untouched.
Slint's event loop runs on the main thread. All I/O (connect, query, schema fetch) spawns on a tokio multi-thread runtime. Results return to the UI thread via invoke_from_event_loop.
#[async_trait]
pub trait Driver: Send + Sync {
async fn connect(cfg: &ConnConfig) -> Result<Self> where Self: Sized;
async fn ping(&self) -> Result<()>;
async fn schema(&self) -> Result<Schema>;
async fn query(&self, q: &Query) -> Result<ResultSet>;
async fn close(self) -> Result<()>;
}pub enum Query {
Sql(String), // PostgreSQL, MySQL, SQLite, Cassandra
Command(Vec<String>), // Redis: ["GET", "key"]
Mongo(MongoOp), // find / insert / aggregate
}pub enum ResultSet {
Tabular { cols: Vec<Column>, rows: Vec<Row> },
Documents(Vec<serde_json::Value>),
KeyValue(Vec<(String, RedisValue)>),
Affected(u64),
}Prebuilt installers are expected to be attached to GitHub Releases.
npm i -g @suiflex/rdbThe postinstall step downloads the prebuilt rdb binary for your platform from
the matching GitHub Release, then rdb launches it. On macOS it also installs
RDB.app into ~/Applications so it shows up in Launchpad.
curl -fsSL https://raw.githubusercontent.com/suiflex/rdb/develop/scripts/install.sh | bashOptional:
curl -fsSL https://raw.githubusercontent.com/suiflex/rdb/develop/scripts/install.sh | RDB_VERSION=v0.1.0 INSTALL_DIR="$HOME/.local/bin" bashOn macOS the script installs RDB.app into Applications (Launchpad) and symlinks
the rdb command into ~/.local/bin. On Linux it installs the rdb binary into
/usr/local/bin when writable, otherwise ~/.local/bin.
For the macOS app (Launchpad):
brew install --cask suiflex/tap/rdbFor the CLI binary only:
brew install suiflex/tap/rdbUpgrade later with brew upgrade rdb.
irm https://raw.githubusercontent.com/suiflex/rdb/develop/scripts/install.ps1 | iexOptional:
$env:RDB_VERSION="v0.28.0"; $env:INSTALL_DIR="$env:LOCALAPPDATA\Programs\RDB\bin"; irm https://raw.githubusercontent.com/suiflex/rdb/develop/scripts/install.ps1 | iexThe script installs rdb.exe into
%LOCALAPPDATA%\Programs\RDB\bin by default and warns if that directory is not
on PATH.
scoop bucket add suiflex https://github.com/suiflex/scoop-bucket
scoop install rdbUpgrade later with scoop update rdb.
| Tool | Version |
|---|---|
| Rust | stable (see rust-toolchain.toml) |
| Cargo | bundled with Rust |
No additional native dependencies needed on macOS. Linux requires a few system packages for Slint rendering (see below).
# Debian / Ubuntu
sudo apt install libxkbcommon-dev libfontconfig1-dev libgl1-mesa-dev
# Fedora / RHEL
sudo dnf install libxkbcommon-devel fontconfig-devel mesa-libGL-devel# Development
cargo build -p rdb
# Optimized release (~smaller binary)
cargo build --release -p rdb
# Run directly
cargo run -p rdbThe release binary lands at target/release/rdb.
- Launch RDB — connection picker opens.
- Click + → fill in host, port, credentials, database.
- Or paste a DSN URL into the Import URL field — fields auto-fill.
- Click Test to verify, then Save.
- Click a saved connection → connects, schema loads in sidebar.
- Type SQL (PostgreSQL/MySQL), a Redis command (e.g.
GET key), or a MongoDB JSON operation in the query editor. Cmd+Enter(macOS) /Ctrl+Enter(Linux) to run.- Click a table/collection in the sidebar to auto-generate and run a
SELECT */findquery.
Cmd+K — fuzzy-search all connections and schema objects.
Type in the Filter box above the grid — filters rows client-side without re-querying.
Active development. Ships 6 engines (PostgreSQL, MySQL, Redis, MongoDB, SQLite, Cassandra); planned expansion to ~20 (ClickHouse, BigQuery, Oracle, and more).
| Crate | Description |
|---|---|
rdb |
Desktop binary (app/) |
rdb-core |
Driver trait, Query, ResultSet, Schema, RdbError |
rdb-connstore |
Saved connections — JSON on disk + OS keychain / AES-GCM file |
rdb-driver-postgres |
PostgreSQL driver via tokio-postgres |
rdb-driver-mysql |
MySQL/MariaDB driver via mysql_async |
rdb-driver-redis |
Redis driver via redis crate |
rdb-driver-mongo |
MongoDB driver via mongodb crate |
rdb-driver-sqlite |
SQLite driver via rusqlite |
rdb-driver-cassandra |
Cassandra driver via scylla |
MIT