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.
- 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 rdbs-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.
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 | RDBS_VERSION=v0.1.0 INSTALL_DIR="$HOME/.local/bin" bashThe script installs rdbs into /usr/local/bin when writable, otherwise it falls back to ~/.local/bin.
| 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 rdbs
# Optimized release (~smaller binary)
cargo build --release -p rdbs
# Run directly
cargo run -p rdbsThe release binary lands at target/release/rdbs.
- Launch RDBS — 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 |
|---|---|
rdbs |
Desktop binary (app/) |
rdbs-core |
Driver trait, Query, ResultSet, Schema, RdbsError |
rdbs-connstore |
Saved connections — JSON on disk + OS keychain / AES-GCM file |
rdbs-driver-postgres |
PostgreSQL driver via tokio-postgres |
rdbs-driver-mysql |
MySQL/MariaDB driver via mysql_async |
rdbs-driver-redis |
Redis driver via redis crate |
rdbs-driver-mongo |
MongoDB driver via mongodb crate |
rdbs-driver-sqlite |
SQLite driver via rusqlite |
rdbs-driver-cassandra |
Cassandra driver via scylla |
MIT