pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A lightweight but feature-rich desktop database client for PostgreSQL and MySQL. 100% Rust, with a native GPU-rendered UI built on GPUI Kit. No webview. Free: no trial, no license key, no account.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A lightweight but feature-rich desktop database client for PostgreSQL and MySQL. 100% Rust, with a native GPU-rendered UI built on GPUI Kit. No webview.
Free: no trial, no license key, no account.
Download for macOS, Windows or Linux · Website · Documentation
See docs/PLAN.md for the roadmap and docs/adr/ for architecture decisions.
• Rust stable (rustup)
• Linux only: libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libvulkan-dev libfontconfig-dev libx11-xcb-dev libssl-dev
• Docker, for the test databases查看完整 README ↗A lightweight but feature-rich desktop database client for PostgreSQL and MySQL. 100% Rust, with a native GPU-rendered UI built on GPUI Kit. No webview.
Free: no trial, no license key, no account.
Download for macOS, Windows or Linux · Website · Documentation
See docs/PLAN.md for the roadmap and docs/adr/ for architecture decisions.
| Path | What |
|---|---|
crates/savoia-app | The app binary (savoia-studio): GPUI views, theme, icon assets |
crates/savoia-core | Domain types, connection config + URL import, driver traits, errors; no UI dependency |
crates/savoia-pg | PostgreSQL driver (tokio-postgres, rustls) |
crates/savoia-mysql | MySQL/MariaDB driver (mysql_async, rustls) |
crates/savoia-store | Saved connections (SQLite) and secrets (a user-only 0600 file) |
crates/savoia-tunnel | SSH tunnels (russh) with known_hosts verification |
crates/savoia-transfer | Dump and import: external client tools and the built-in engine |
docs/site | The website: landing page (landing/) and user documentation (mdBook, src/), published to GitHub Pages |
rustup)libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libvulkan-dev libfontconfig-dev libx11-xcb-dev libssl-devcargo run -p savoia-app # run the app
cargo build -p savoia-app --release
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
npm run docs # the website and docs on http://localhost:3000, rebuilt on change (needs mdbook)
docker compose up -d --wait # Postgres 17 :54317 (TLS on), MySQL 8.4 :33084, SSH bastion :2222 — all savoia/savoia
scripts/dev.sh rebuilds and restarts the app whenever a source file changes, then reconnects the data source you used last. Set SAVOIA_DEV_OPEN=schema.table to also reopen that table's data view:
SAVOIA_DEV_OPEN=it_rel.orders scripts/dev.sh
It is a restart, not an in-place hot reload: GPUI has no hot-patching, so window state other than the reconnect and the data view starts fresh. A failed build leaves the running app as it was. brew install watchexec makes it react faster; without it the script polls once a second.
Driver, tunnel and UI integration tests talk to the compose services. Without these variables they return early and report as passed, so set them when you want real coverage:
SAVOIA_PG_URL=postgres://savoia:[email protected]:54317/savoia \
SAVOIA_MYSQL_URL=mysql://savoia:[email protected]:33084/savoia \
SAVOIA_SSH_TEST=1 cargo test --workspace
scripts/bench.sh startup and scripts/bench.sh scroll (with SAVOIA_PG_URL) measure the release budgets in a real window. Results are in docs/benchmarks/.
samples/ has a Serie A 2025-26 database for trying the explorer, ER diagram and console by hand. Clubs and stadiums are real (figures approximate); every person is invented. It has 20 clubs, 490 players, 380 fixtures (20 matchdays played, so later scores are NULL), views, a function, a procedure, and 150,000 match_events rows for paging and cancel.
docker exec -i savoia-db-postgres-17-1 psql -U savoia -d savoia < samples/serie_a.postgres.sql # schema serie_a
docker exec -i savoia-db-mysql-8.4-1 mysql -uroot -psavoia < samples/serie_a.mysql.sql # database serie_a
To change the data, edit samples/generate_serie_a.py and run it; it rewrites both files with the same rows.
crates/savoia-app/src/theme.rs; don't hard-code colors in views.crates/savoia-app/src/assets.rs, otherwise they render blank.savoia-app depends on gpui-kit. Keep database, dump and storage logic in UI-free crates.Add a changeset to PRs users will notice (npm ci, then npx changeset); merging the generated "Release Savoia Studio" PR tags and builds the release. See docs/RELEASING.md.
Licensed under either of MIT or Apache-2.0, at your option.