
syngnat/gonavi
Database managementNavigate every data source — native speed, agent-ready, zero Electron bloat.
Overview
Navigate every data source — native speed, agent-ready, zero Electron bloat.
README
GoNavi
Navigate every data source — native speed, agent-ready, zero Electron bloat.
A high-performance cross-platform database client built with Wails (Go) + React. Desktop-first. MCP-ready. ~20–26MB class installers.
Language: English · 简体中文 · 🌐 Website · ⬇ Download · ⚡ Quick Start · ✨ Features · 🤖 MCP
Sponsored by APISmart · HuaLongAI
Why GoNavi?
Most database GUIs are Electron shells with megabytes of tax. GoNavi takes a different path — and “lightweight” only makes sense if you separate three numbers:
| Number | What it means | GoNavi (v0.9.8) |
|---|---|---|
| Installer size | What you download | ~20–26 MB class (Win / macOS / Linux release assets) |
| Steady-state RSS | What RAM the running UI holds | Linux WebKit build, idle empty workbench: main ≈ 429 MB; with WebKit helpers ≈ 765 MB (method below) |
| UI stack | Chromium tax or not | Go + system WebView (Wails) — not Electron |
| Typical Electron client | GoNavi | |
|---|---|---|
| Runtime | Chromium + Node | Go + native WebView |
| Installer | Hundreds of MB common | ~20–26 MB class |
| Startup | Heavy | Fast |
| Memory claim | Often mixed with installer size | Measure RSS separately (see note) |
| AI / Agents | Bolt-on or absent | First-class MCP + multi-provider AI (draft SQL; GUI still owns schema / edits / EXPLAIN) |
| Data sources | Mostly RDBMS | SQL · Cache · Vector · MQ · Search · Time-series · Domestic DBs |
Installer MB ≠ RAM. The RSS figures above are one Linux cloud run of the v0.9.8 WebKit41 build (empty workbench, no DB connections, remote display, ~30–40 s steady). Do not compare them to installer size, or to unverified “native ~80 MB” marketing. Windows / macOS laptop numbers may differ — treat them as a labeled sample, not a leaderboard score.
One cockpit for MySQL, Postgres, Redis, Kafka, Milvus, OceanBase, ClickHouse…
Query, edit, audit, sync — and hand structured context to coding agents without leaking passwords off-host.
At a Glance
┌──────────────────────────────────────────────────────────────────────┐
│ GoNavi Workbench │
│ ┌─────────────┐ ┌──────────────────┐ ┌─────────────────────────┐ │
│ │ Connections │ │ Monaco SQL + AI │ │ Virtualized DataGrid │ │
│ │ SSH / Proxy │ │ Schema context │ │ Batch edit · Export │ │
│ │ Drivers │ │ Slash commands │ │ Txn submit / rollback │ │
│ └─────────────┘ └────────┬─────────┘ └─────────────────────────┘ │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ Go core · Audit · Sync │ │
│ │ MCP HTTP · Web Server │ │
│ └───────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
Product screenshots
Each image is a full GoNavi application window (1440×900) captured from the latest dev build, scaled proportionally for README display.
Sample data from a local lab database · connection addresses, keys, and provider configuration are not shown
💖 Sponsors
Want to sponsor GoNavi? We welcome sponsorships and partnerships that help sustain its open-source development. Contact the maintainer on WeChat:
ygf1140302783(note “GoNavi”) to start a conversation.
Special thanks to APISmart and HuaLongAI for sponsoring GoNavi open-source development.
| Sponsor | What they offer | Why it fits GoNavi |
|---|---|---|
| APISmart | APISmart provides unified access to leading AI models through a single API. Developers can connect to LLM, image, and video models using one API key and an OpenAI-compatible interface. This eliminates the need to manage multiple providers separately. Intelligent routing and automatic failover help improve reliability, while centralized billing makes usage easier to manage. With APISmart, developers can build and scale AI applications faster through one streamlined platform. | Lets developers and agent workflows use multiple AI capabilities without separately integrating each provider. |
| HuaLongAI | HuaLongAI is a premium model API relay provider for power AI developers, focused on official direct connectivity. It primarily offers Codex-series models supplied directly from official sources, with no substitutions or dilution, and invites verification. Billing is transparent, with token-level itemized records available for review. It supports enterprise-grade high concurrency and provides enterprise customers with a professional management platform, formal contracts, and invoices; visit the website for contact details. GPT-series models start at a 0.08 rate, with a stable Pro group at 0.15, two-way referral gifts, and uncapped referral rewards. | Stable model access is core infrastructure for GoNavi’s schema-aware assistants, MCP, and day-to-day development. |
- APISmart: https://www.apismart.ai/ — unified AI model API with an OpenAI-compatible interface.
- HuaLongAI: https://gonavi.hualong.online/ — console, docs, and the domestic high-speed endpoint.
HuaLongAI also sponsored a shared 50B token pool for GoNavi co-maintainers, used via API Key (not 50B per person). Rules and how to apply: Issue #671.
✨ Key Features
To connect a custom OpenAI-compatible model service, add a provider in GoNavi’s AI settings with its documented base URL (for example, https://api.example.com/v1), API key, and an available model ID. Match the selected model and API format to the GoNavi feature you intend to use.
🧩 Stack
Go 1.24 · Wails v2 · React 18 · TypeScript · Vite · Ant Design 5 · Zustand · Monaco
🗄 Supported Data Sources
Built-in — ready out of the box · Optional agent — install via Driver Manager
| Built-in | MySQL · GoldenDB · PostgreSQL · Oracle · Redis · Chroma · Qdrant · Milvus · RocketMQ · MQTT · Kafka · RabbitMQ |
| Optional | MariaDB · Doris · StarRocks · Sphinx · SQL Server · SQLite · DuckDB · OceanBase · Dameng · Kingbase · HighGo · Vastbase · OpenGauss · GaussDB · IRIS · Caché · MongoDB · TDengine · IoTDB · ClickHouse · Hive · Trino · Elasticsearch · TiDB · CockroachDB · KWDB · TimescaleDB · GBase 8a · GBase 8c · GBase 8s · YashanDB · Firebird · QuestDB · GreptimeDB · InfluxDB · Presto · OpenSearch · Weaviate · Meilisearch · Typesense · etcd · ZooKeeper · Custom Driver/DSN |
Elasticsearch REST console
Elasticsearch connections reuse the query workspace as a version-aware REST console:
- Write Dev Tools-style
METHOD /pathrequests with JSON bodies, or NDJSON for_bulkand_msearch; run the request at the cursor, the exact selection, or a batch in editor order. - Search hits can be viewed as a table while the complete HTTP response remains available as raw JSON or text.
- A server-side allowlist accepts supported search, document, index, mapping, settings, alias, health, and limited CAT operations. Unknown and high-privilege endpoints are rejected by default.
- Destructive operations require an expiring one-time confirmation. Connection protection still takes precedence and blocks writes as well as script-bearing reads.
- Writes are limited to concrete indices and require Elasticsearch
view_index_metadata(ormanage) permission so GoNavi can verify the target before sending data; aliases and data streams are not accepted as write targets. - Request templates adapt document, mapping, and Bulk paths for Elasticsearch 6, 7, and 8.
This console targets Elasticsearch 6/7/8. It does not claim OpenSearch compatibility, and intentionally excludes reindex, security, snapshot, node, cluster-settings, template, pipeline, lifecycle, and other unrestricted administration APIs.
🚀 Quick Start
Prerequisites
- Go 1.25+
- Node.js 18+
- Wails CLI
- Linux only: a C compiler, pkg-config, and the GTK3 / WebKitGTK development packages
go install github.com/wailsapp/wails/v2/cmd/[email protected]
Develop
git clone https://github.com/Syngnat/GoNavi.git
cd GoNavi
wails dev # full hot reload
node tools/wails-fast-dev.mjs # faster when Go exports unchanged
node tools/wails-fast-dev.mjs --refresh-bindings # after Go export signature changes
Build
wails build
wails build -clean # clean build before release
Artifacts → build/bin.
On Linux, install the build dependencies first (pick one):
# Debian 12+ / Ubuntu 22.04+
sudo apt-get install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev
# Fedora / OpenCloudOS 9
sudo dnf install -y gcc pkgconf-pkg-config gtk3-devel webkit2gtk4.1-devel
# RHEL / Rocky / AlmaLinux 9 (WebKitGTK 4.0 only)
sudo dnf install -y gcc pkgconf-pkg-config gtk3-devel webkit2gtk3-devel
# Arch Linux
sudo pacman -S --needed base-devel gtk3 webkit2gtk-4.1
The build detects whether WebKitGTK 4.1 or 4.0 is installed. The frontend build peaks at about 3 GB of memory.
Prefer a binary?
Grab the latest build from Releases
(macOS AMD64/ARM64 · Windows AMD64 · Linux WebKitGTK 4.0/4.1).
Standalone CLI
Stable and dev builds carry headless gonavi archives under the
gonavi-cli_${VERSION}_${GOOS}_${GOARCH} namespace with a matching
gonavi-cli_${VERSION}_checksums.txt file. Download the matching archive from
the GitHub Release, verify its checksum, extract it, then run:
gonavi list-connections
gonavi query --conn CONNECTION_ID --sql 'SELECT * FROM orders LIMIT 10'
gonavi export --conn CONNECTION_ID --output orders.csv --sql 'SELECT * FROM orders'
gonavi batch --conn CONNECTION_ID --file migration.sql --allow-write
The project does not currently publish the CLI to npm. Install it directly from the verified release archive instead.
The stable workflow also generates and retains a checksum-driven WinGet
manifest artifact for Syngnat.GoNavi.CLI; it must be accepted by the WinGet
community repository before the package is available there. The existing
desktop GoNavi package is separate. After acceptance, install with:
winget install --id Syngnat.GoNavi.CLI -e
The CLI shares the active data root with the desktop application:
GONAVI_DATA_ROOT first, then ~/.gonavi/storage_root.json, then ~/.gonavi.
Use a 0600 owner-only --connection-file for transient credentials; secrets
are never accepted as command-line flags. Query output defaults to JSONL, while
diagnostics go to stderr. Mutating SQL also requires the stored AI safety level,
connection protections, and --allow-write.
For Linux containers, copy docker.cli.env.example, set the host data root and
your host UID/GID, then run the CLI against the same mounted /data directory:
cp docker.cli.env.example docker.cli.env
docker compose --env-file docker.cli.env -f docker-compose.cli.yml run --rm gonavi-cli list-connections
🌐 Web Server (Experimental)
Same Go backend + React UI over HTTP — not a containerized Wails window.
go build .
.\GoNavi-Wails.exe web-server --addr 127.0.0.1:34116
- First visit →
/setup(admin password; optional Google Authenticator) - Bridge:
window.go.*/window.runtime.*→ HTTP / SSE - Sessions, recovery codes, login rate limits
- Plugins: read-only by default; set
GONAVI_WEB_PLUGIN_MANAGEMENT=1on the server to let authenticated sessions install and enable plugins (this executes plugin code on the host)
Docker / Podman
cp docker.web-server.env.example docker.web-server.env
# set GONAVI_HOST_DATA_ROOT (absolute path)
# optional: GONAVI_WEB_PASSWORD (min 6 chars)
docker compose --env-file docker.web-server.env -f docker-compose.web-server.yml up -d
Open http://127.0.0.1:34116. Mount the active data root at /data
(connections.json, daily_secrets.json, optional drivers/).
Auth state → web_auth.json.
Do not expose an unhardened web entry to the public internet. Use reverse proxy + HTTPS in production.
Health: GET /__gonavi/healthz
Local source build: add -f docker-compose.web-server.local.yml --build.
After changing env passwords:
docker compose --env-file docker.web-server.env -f docker-compose.web-server.yml up -d --force-recreate
(docker restart does not reload env files.)
🤖 MCP & Agents
Ship schema tools to agents without shipping your vault:
cp docker.mcp-server.env.example docker.mcp-server.env
docker compose --env-file docker.mcp-server.env -f docker-compose.mcp-server.yml up -d
| Surface | Entry |
|---|---|
| MCP container | docker-compose.mcp-server.yml → ghcr.io/syngnat/gonavi-mcp-server |
| Web UI container | docker-compose.web-server.yml → ghcr.io/syngnat/gonavi-web-server |
| Podman / Quadlet | deploy/podman/gonavi-mcp-server |
| Kubernetes | deploy/k8s/gonavi-mcp-server |
| Helm | deploy/helm/gonavi-mcp-server |
| Build-only image | Dockerfile.build-env → ghcr.io/syngnat/gonavi-build-env |
Image tags (all four images follow the same scheme):
| Tag | Meaning |
|---|---|
latest |
Newest stable release |
0.9.8 / v0.9.8 |
Exact release, e.g. ghcr.io/syngnat/gonavi-web-server:0.9.8 |
0.9 / v0.9 |
Newest patch of a minor line |
dev-latest |
Rolling dev branch build, moves on every push |
Pin an exact release when a cluster should not drift; dev-latest is a moving
pointer and is not a stable anchor. Release tags are published both with and
without a v prefix (v0.9.8 and 0.9.8) pointing at the same digest, so use
whichever your tooling expects.
Safety defaults: remote schema-only omits execute_sql; when enabled it follows the same AI safety controls as the built-in assistant, and calling execute_sql is the confirmation.
Details: cmd/gonavi-mcp-server/README.md.
Linux build environment only
docker build -f Dockerfile.build-env -t gonavi-build-env:local .
docker run --rm -it -v "$PWD:/workspace" -w /workspace gonavi-build-env:local bash
📦 Release Pipeline
Push a v* tag → GitHub Actions builds multi-arch releases.
Notes auto-generated from merged PRs via .github/release.yaml.
🛠 Troubleshooting
🤝 Contributing
Issues and PRs welcome. Branch from dev, PR against dev.
- CONTRIBUTING.md
- Call for contributors (incl. sponsored token pool): Issue #671
🤝 Contributors
💬 Contact & Feedback
| Channel | Notes |
|---|---|
| GitHub Issues | Preferred for bugs, feature requests, and docs — easier to track and reproduce |
ygf1140302783 (note “GoNavi”) — maintainer can invite you to the community group for discussion |
For technical reports, include version, OS, and repro steps when possible. Windows blank/crash on intranet images: WebView2 guide.
⭐ Star History
Links
- APISmart — Unified AI model API (GoNavi sponsor)
- HuaLongAI — AI API Gateway (GoNavi sponsor)
- linux.do
- AIBook
License
Built for people who live in SQL, schemas, and agent loops.
Install
docker run --rm -it -v "$PWD:/workspace" -w /workspace gonavi-build-env:local bash