dwarvenpick is a web-based SQL workbench focused on secure, audited ad-hoc querying across multiple data platforms.
- Tabbed SQL editor (Monaco) with syntax highlighting and keyboard shortcuts.
- SQL autocomplete (keywords + explorer objects).
- Server-backed script library with private/shared spaces, folder tree browsing, tags, autosave, version history, and optional connection binding.
- Validate SQL with engine-aware
EXPLAIN(inline editor markers when available). - Safe scripting: run semicolon-delimited multi-statement scripts with stop-on-error and transaction options.
- Explain and analyze query plans (engine-aware).
- Results grid with pagination, sorting, and CSV export.
- Connection catalog and connection management UI.
- Governance:
- Groups and access rules (per-connection query/export/read-only controls).
- Local user management for development and small deployments.
- Audit trail:
- User query history.
- Admin audit events.
- Operations:
- System Health (SYSTEM_ADMIN) with engine-specific cluster checks.
Current focus is JDBC-backed SQL engines:
- PostgreSQL
- MySQL
- MariaDB
- Trino
- StarRocks (via MySQL protocol)
- Vertica (external driver)
- Aerospike (via Aerospike JDBC)
Prerequisites:
- Docker Desktop (or compatible Docker engine) with Compose support.
Start the full stack:
docker compose -f deploy/docker/docker-compose.yml up -d --buildOpen:
- UI:
http://localhost:3000 - Backend health:
http://localhost:3000/api/health
Seeded local development users (dev only, do not reuse in production):
admin / Admin1234!(roles:SYSTEM_ADMIN,USER)analyst / Analyst123!(role:USER)
Seeded OIDC (Keycloak) user for local SSO:
- Keycloak:
http://localhost:8081(admin / admin) - Realm:
dwarvenpick - User:
oidc-admin / Admin1234!
Seeded databases in local compose:
- PostgreSQL sample source:
localhost:5432, dbdwarvenpick, userdwarvenpick, passworddwarvenpick - MySQL sample source:
localhost:3306, dborders, userreadonly, passwordreadonly - MariaDB sample source:
localhost:3307, dbwarehouse, userreadonly, passwordreadonly - Vertica sample source:
localhost:5433, dbwarehouse, userdbadmin, passworddwarvenpick - StarRocks sample source:
localhost:9030, dbwarehouse, userreadonly, passwordreadonly - Trino sample source:
localhost:8088, catalog/schematpch/sf1, usertrino(no password) - Aerospike sample source:
localhost:3005, namespacetest(no auth)
The sample datasets include both transactional-style tables and analytical-style tables/views to exercise query/explain behavior.
The backend uses DWARVENPICK_EXTERNAL_DRIVERS_DIR (default: /opt/app/drivers) as a writable state directory for:
- JDBC driver jars uploaded from the UI
- JDBC driver jars downloaded from Maven Central
- Uploaded TLS/SSL certificates and generated keystores/truststores
- Resource Manager script storage
Docker Compose mounts a named volume at /opt/app/drivers so these artifacts persist across restarts.
For Kubernetes (Helm), enable the external drivers volume and back it with a PVC:
.Values.drivers.external.enabled=true.Values.drivers.external.createPvc=true(or provide.Values.drivers.external.existingClaim)
- Logs: backend logs are emitted to stdout as JSON. Configure levels with
LOGGING_LEVEL_ROOTandLOGGING_LEVEL_COM_DWARVENPICK. - Metrics:
GET /actuator/prometheus(toggle withDWARVENPICK_METRICS_PROMETHEUS_ENABLED).
Prerequisites:
- Java 21 (backend)
- Node.js 22 + npm (frontend)
Backend:
./gradlew :backend:app:bootRunFrontend:
cd frontend
npm ci
npm run devBy default the Vite dev server runs on http://localhost:5173 and proxies /api and /actuator to http://localhost:8080.
backend/: Kotlin + Spring Boot backend (Gradle)frontend/: React + TypeScript web applicationdeploy/: Docker and Helm deployment assetsdocs/: User and operator documentation (published to GitHub Pages)
- User docs (GitHub Pages): https://infocusmodereal.github.io/dwarvenpick/
- Contributing:
CONTRIBUTING.md - Agent conventions:
AGENTS.md
Releases are cut from Git tags (vX.Y.Z). Pushing a tag triggers the Release GitHub Actions workflow, which publishes a GitHub Release with a versioned backend jar and Helm chart package.
Apache-2.0. See LICENSE.