Your database, finally friendly.
Browse, search and edit PostgreSQL, MySQL, MariaDB, SQLite and SQL Server like a spreadsheet, and ask for data in plain words.
Website · Download · Report an issue
Most database tools are built for people who already think in SQL. Kiyi is built for everyone else, and stays out of the way of the people who do.
- Edit like a spreadsheet. Change a cell and it's saved, with Undo right there. Insert rows with a form that shows what's required and what each default will be.
- Ask AI. Type "pro customers in Germany who spent over 1k" and get filters you can see, tweak and remove. Bring any provider: Anthropic, OpenAI, Gemini, xAI Grok, OpenRouter, Groq, Mistral, or a local model with Ollama or LM Studio. Only the table's structure is sent, never your rows.
- Design tables without DDL. Types in plain terms ("Money / exact number"), required and unique rules, defaults, relationships and indexes. Kiyi writes the right
ALTERstatements for your database, in the right order. - Reach private databases. SSH tunnels through a bastion (password, key file or ssh-agent, hosts picked from
~/.ssh/config, jump hosts), AWS SSM port forwarding, Kubernetesport-forwardand the Cloud SQL Auth Proxy, with every step of the connection test explained. Sign in to RDS with IAM, verify SSL against your own CA (the Amazon RDS bundle is fetched for you), or connect over a Unix socket. Databases running locally or in Docker are found automatically. - Safe on production. Production connections are read-only by default, edits wait for an explicit Save, and destructive changes are explained in plain language before they run.
- Ask questions, get charts. "Monthly revenue this year" becomes a query you can see, run as a chart. AI also writes, explains and fixes SQL in the editor.
- Charts, summaries and dashboards. Any result as bars, a line, a pie or a single figure; group a table by any column (dates by day, month or year) without SQL. Keep charts side by side on a dashboard that refreshes on demand.
- Find and fix messy data. Duplicates, one value spelled several ways, stray spaces, invalid emails, outliers and impossible dates, found per table or across the database, with fixes you review before they run.
- Move data between databases. Bring another system's data into yours, even when the tables differ: Kiyi suggests which table and column goes where, cleans values up with readable steps, keeps links between tables intact, and moves everything in one transaction after a check and an optional test run.
- Import and export. Excel, CSV and JSON out, from any view or query; Excel and CSV in (Turkish and other Excel encodings detected), batched, all or nothing. Move your saved connections to another computer, without their passwords.
- Work faster. ⌘K to jump anywhere, query history and saved queries (with
:parametersthat ask for their values), saved table views, hidden/frozen/reordered columns, copy rows as CSV, Markdown, JSON or INSERTs, find and replace across a column. - See and protect the whole database. A schema diagram; functions, procedures, triggers, sequences, users and roles with the SQL behind them; readable query plans; backups and restores; and comparing two databases with the SQL that would align them.
- Developer mode. The SQL behind every action, raw column types, and a SQL editor with schema-aware autocomplete. Results of a query on one table can be edited in place and saved.
Passwords and API keys live in the system keychain. Your own work (query history, saved queries, table views, open tabs, settings) is kept in Kiyi's folder, so it can be backed up and moves with exported connections; history never leaves the computer. No account, no telemetry.
| Download | 12 MB |
| Launch to window | 0.31 s |
| Memory at idle | 79 MB |
| Open, sort or filter a 1M-row table | ~1 ms |
| Read all 1M rows | 0.77 s on PostgreSQL, 0.68 s on MySQL (faster than psql and mysql themselves) |
Download size of Kiyi 0.2.0 for Apple Silicon; the rest measured with 0.1.0 on an M1 Pro MacBook Pro. Full results and how to reproduce them: docs/benchmarks.md.
Download the latest version for macOS (Apple Silicon or Intel), Windows (64-bit) or Linux (64-bit AppImage or .deb) from the website or the releases page. Kiyi updates itself in the background and asks before restarting.
No database handy? Choose Try the sample database on the welcome screen to explore a small store with customers, products and orders.
The macOS app is signed with a Developer ID and notarized by Apple. The Windows installer isn't code-signed yet: if SmartScreen asks, choose More info → Run anyway. On Linux, passwords are kept in the desktop's Secret Service (GNOME Keyring or KWallet), and both the AppImage and the .deb update themselves.
| Database | Status |
|---|---|
| PostgreSQL | Supported |
| MySQL | Supported |
| MariaDB | Supported |
| SQLite | Supported |
| SQL Server | Supported (2017 and later, Azure SQL) |
New engines plug in through a driver and an entry in crates/kiyi-core/src/catalog.rs; the app itself doesn't change.
Kiyi is a Rust core with a Tauri 2 shell and a React interface.
crates/kiyi-core/ Drivers, database catalog, SQL planners, tunnels, AI, connection store, keychain. No Tauri dependency.
crates/kiyi-devbridge/ The core over HTTP, so the UI can run in a plain browser for screenshots and end-to-end tests.
src-tauri/ Tauri commands (a thin layer over the core) and the updater.
src/ React + React Aria, CSS Modules, CodeMirror 6, Glide Data Grid.
src/styles/tokens.css Every color, spacing value and font.
site/ The website, deployed to GitHub Pages.
Rust (stable), Node.js 24, pnpm, and Docker for the test databases. On Linux, also the Tauri system libraries and libdbus-1-dev (for the keyring).
pnpm install
./dev/setup-ssh-key.sh # local key for the test SSH bastion
docker compose -f dev/docker-compose.yml up -d --wait # PostgreSQL, MySQL and an SSH bastion
pnpm tauri devTest connections:
| URL | Notes |
|---|---|
postgres://kiyi:kiyi@localhost:55432/shop |
Sample data to play with |
mysql://kiyi:kiyi@localhost:53306/shop |
Sample data to play with |
postgres://kiyi:kiyi@localhost:55432/demo |
The "Acme Store" used for screenshots |
To try an SSH tunnel, use host 127.0.0.1, port 52222, user and password kiyi, and postgres:5432 as the database host.
SQL Server is optional in the dev setup (it's large and emulated on Apple Silicon):
docker compose -f dev/docker-compose.yml --profile sqlserver up -d --wait
docker compose -f dev/docker-compose.yml exec sqlserver /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P Kiyi_pass1 -i /seed/sqlserver.sql
KIYI_LIVE_SQLSERVER=1 cargo test -p kiyi-core --test sqlserver_liveConnect in the app with sqlserver://sa:Kiyi_pass1@localhost:51433/kiyi_test. SQL Server has no read-only session setting, so Kiyi enforces read-only connections itself.
cargo test --workspace # unit tests
KIYI_LIVE=1 cargo test -p kiyi-core --test live --test objects # drivers, tunnels, objects, import/export against the Docker databases
pnpm typecheck
pnpm test # interface logic (Vitest)
cargo audit # known vulnerabilities; accepted ones are explained in .cargo/audit.tomlLive tests use a separate kiyi_test database, so editing shop in the app never breaks them.
kiyi-devbridge serves the core over HTTP and the UI talks to it instead of Tauri (src/dev/bridge.ts). Useful for screenshots and scripted flows with Playwright:
pnpm dev # Vite on :1420
cargo run -p kiyi-devbridge # bridge on :1421
node dev/shoot.mjs /tmp/shots dark # screenshots of the main screens
node dev/flows.mjs /tmp/flows # end-to-end flows against the real databases
node dev/marketing.mjs site/assets/shots # website screenshots, dark and lightTo try the live AI test (it spends a few tokens): XAI_API_KEY=… KIYI_LIVE=1 cargo test -p kiyi-core --test ai_live -- --nocapture.
Providers are managed in Settings → AI. Kiyi speaks the Anthropic Messages API and any OpenAI-compatible /chat/completions endpoint. Keys are stored in the keychain; without one, the provider's environment variable is used (for example ANTHROPIC_API_KEY). Whatever the model returns is validated as a single read-only condition before it runs.
Kiyi writes a log to ~/Library/Logs/com.parevo.kiyi/kiyi.log on macOS and %LOCALAPPDATA%\com.parevo.kiyi\logs\kiyi.log on Windows. Settings → About & updates → Report a problem opens a GitHub issue with the version, platform and recent log filled in, for you to read before sending; Copy diagnostics copies the same to paste anywhere. SQL text, passwords and keys are never logged. See also CONTRIBUTING.md and SECURITY.md.
- Every push to
mainbuilds a beta (vX.Y.Z-beta.N) for users on the beta channel. - Pushing a
vX.Y.Ztag builds a stable release for everyone.
git tag v0.2.0 && git push origin v0.2.0The app checks for updates at launch and every four hours, downloads in the background, and installs when the user chooses to restart.
Required repository secrets: TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD for update signatures. macOS builds are signed and notarized when APPLE_CERTIFICATE, APPLE_CERTIFICATE_PASSWORD and APPLE_SIGNING_IDENTITY are set, together with an App Store Connect API key (APPLE_API_KEY, APPLE_API_ISSUER, APPLE_API_PRIVATE_KEY) or an Apple ID (APPLE_ID, APPLE_PASSWORD, APPLE_TEAM_ID). Without them the app is ad-hoc signed.
MIT © Parevo