NeoCat 是一个轻量、local-first 的桌面数据库客户端,当前支持 MySQL、PostgreSQL 和本地 SQLite 文件。它使用 Tauri 将 Rust 后端与 Svelte 前端组合在一起,重点覆盖连接、Schema 浏览、SQL 查询、结果查看以及带安全保护的数据修改流程。
项目目前处于早期 Alpha 阶段。界面、数据结构和命令接口仍可能变化,请不要把它当作生产数据库审批或权限系统的替代品。
- MySQL / PostgreSQL 直连。
- 本地 SQLite 文件:打开已有文件或创建新文件。
- SSH 本地端口转发,支持密码、私钥文件和 SSH Agent。
- SSH 主机指纹探测、
known_hosts匹配和首次连接确认。 - MySQL / PostgreSQL TLS required 模式。
- 已保存的非秘密连接配置可在启动后恢复。
- 浏览 MySQL 数据库或 PostgreSQL Schema 下的表、视图、字段、索引和主键信息。
- 浏览 SQLite 的
main、temp及已加载 Schema。 - CodeMirror 6 SQL 编辑器,按连接切换 MySQL/PostgreSQL/SQLite 方言。
- 当前语句、选中语句和编辑器中全部语句的执行入口。
- SQL 格式化、可配置键盘快捷键、查询取消和超时控制。
- 默认单次查询超时 30 秒,可配置范围为 1 秒至 5 分钟。
- 默认最多加载 1,000 行,后端上限为 10,000 行。
- 查询、写入、DDL、提交和回滚操作历史。
- 新连接默认开启 Safe mode。
- 显式开启 Write mode 后才允许写操作。
- 有主键的查询结果支持安全行编辑。
- 写入使用显式事务,可 Commit 或 Rollback。
- 没有
WHERE的UPDATE/DELETE、DDL 等高风险操作需要二次确认。 - Rust 后端会再次执行 SQL 分类、单语句检查和危险操作拦截;客户端提示不能替代数据库权限控制。
- 结果表格支持列宽调整、行查看、字段查看以及复制为 TSV/JSON。
- 查询结果可以导出为 SQL
INSERT文件。 - 查询结果可以导出为 XLSX 工作簿。
- 桌面端通过系统保存对话框选择导出位置。
- 配置 OpenAI-compatible API Base URL、模型名和用户自己的 API Key。
- API Key 只写入操作系统 Keychain,不写入普通应用配置。
- 根据用户指令和选中的表结构生成 SQL 草稿。
- AI 输出只进入编辑器草稿区,不会直接执行 SQL。
- AI 功能默认关闭,属于可选的实验性能力;发送请求前请确认目标服务商和数据范围。
- 单窗口、多 SQL 标签页。
- 连接级 SQL workspace 恢复。
- 查询历史查看和清理。
- 深色、浅色和跟随系统主题。
- 浏览器预览模式,便于快速查看界面;数据库、Keychain 和文件系统能力需要桌面运行时。
- Tauri 2
- Rust + Tokio
- Svelte 5 + TypeScript
- Vite 6
- CodeMirror 6
- SQLx:MySQL、PostgreSQL、SQLite
- SSH2:SSH 隧道与主机指纹处理
- 系统 Keychain/Secret Service:秘密字段保存
.
├── src/ # Svelte 前端和交互逻辑
├── src-tauri/ # Rust 后端、Tauri 命令和桌面配置
├── demo/ # 静态界面原型
├── docs/ # PRD、技术设计和 UI 状态规范
├── .github/workflows/ # GitHub Actions 发布流程
├── package.json
├── pnpm-lock.yaml
└── README.en.md # English README
通用开发环境:
- Node.js 22
- pnpm 10
- Rust stable 和 Cargo
Tauri 桌面开发还需要对应平台的原生工具链:
- macOS:Xcode Command Line Tools。
- Windows:Microsoft C++ Build Tools 和 WebView2 Runtime。
- Linux:WebKitGTK、AppIndicator、librsvg、patchelf 等开发包。仓库中的发布 workflow 已包含 Ubuntu 22.04 的安装步骤。
安装前端依赖:
pnpm install启动浏览器预览:
pnpm dev默认地址为 http://127.0.0.1:1420/。浏览器预览主要用于 UI 开发,连接数据库和系统 Keychain 等原生功能需要桌面运行时。
启动 Tauri 桌面应用:
pnpm tauri:dev构建前端生产文件:
pnpm build构建本机桌面发行包:
pnpm tauri:build运行 Rust 格式检查、单元测试和类型检查:
cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo test --manifest-path src-tauri/Cargo.toml
cargo check --manifest-path src-tauri/Cargo.toml跨平台发布流程位于 release.yml。它使用 Tauri Action 并行构建以下目标:
| 平台 | Runner | Target |
|---|---|---|
| Linux x64 | Ubuntu 22.04 | x86_64-unknown-linux-gnu |
| Windows x64 | Windows latest | x86_64-pc-windows-msvc |
| macOS Intel | macOS latest | x86_64-apple-darwin |
| macOS Apple Silicon | macOS latest | aarch64-apple-darwin |
推送版本标签即可触发发布:
git tag v0.1.0
git push origin v0.1.0标签必须与 package.json 中的版本一致。当前 workflow 会创建 Draft Release,构建完成后请在 GitHub Releases 页面检查并手动发布。也可以在 GitHub Actions 页面手动运行 workflow,并填写版本标签。
当前流程生成的是未签名、未公证的桌面安装包;仓库尚未配置 Apple Developer、Windows 证书或自动更新服务。正式分发前应补充代码签名、公证和更新策略。
- 项目没有账号系统,也没有内置遥测或默认云端同步。
- MySQL/PostgreSQL 密码、SSH 密码、私钥口令和 AI API Key 使用操作系统安全存储。
- 桌面运行时会在 Tauri 应用数据目录中保存本地
nova.db,其中可能包含非秘密连接配置、SQL workspace、查询历史、SQL 文本、错误信息和用户设置。该文件名是为兼容既有安装保留的内部标识。 - 本地
nova.db不等于加密保险箱;共享电脑或备份应用数据目录时应按敏感数据处理。 - AI 仅在用户主动配置并触发时请求外部 API。请求可能包含用户输入、选中的表名、字段定义和数据库方言,请在发送前确认服务商的数据处理策略。
- 客户端的 Safe mode、事务和高风险 SQL 确认是额外防护,不替代数据库账号权限、网络隔离、备份和生产审批。
- 当前支持 MySQL、PostgreSQL 和本地 SQLite 文件;不承诺 MariaDB 的完整兼容性。
- PostgreSQL 当前以 Schema 为对象命名空间,复杂扩展类型、存储过程、函数、触发器和事件管理仍不在范围内。
- 暂不支持远程 SQLite、SQLCipher、SQLite 扩展加载和 ATTACH 管理界面。
- 暂不支持连接配置导入/导出。
- 文件导出当前提供 SQL
INSERT和 XLSX;CSV/JSON 文件导出尚未实现,JSON 目前仅支持复制单行数据。 - 不包含存储过程、函数、触发器、事件管理或企业级权限/审计功能。
- 暂无自动更新、签名、公证和崩溃上报配置。
欢迎通过 Issue 或 Pull Request 反馈问题和提出改进建议。提交代码前请至少运行:
pnpm build
cargo test --manifest-path src-tauri/Cargo.toml
cargo check --manifest-path src-tauri/Cargo.toml涉及连接、凭据、SSH、AI 请求或写入安全的改动,请同时补充测试并说明安全影响。
产品文档计划使用 MIT License,但当前仓库尚未包含 LICENSE 文件。公开发布前请补充明确的许可证文件。