WebDuck

WebDuck

DuckDB as a Service

Fast, simple DuckDB-as-a-Service with REST API and Web UI. Install via pip, deploy with Docker, query your data in seconds.

Web UI

Projects

WebDuck Projects View

Browse View

WebDuck Browse View

Quickstart

pip

pip install webduck

Docker

docker run -p 8998:8998 autumo/webduck
Terminal
$  

Features

REST API

Full REST API with JWT auth, optional DB passwords, and project management.

Web UI

Dark-mode interface with SQL editor, data browser, and CSV import/export.

DuckDB Engine

Built on DuckDB with file-locking for safe concurrent access and fast analytics.

SQL Upload

Execute multi-statement SQL scripts from files with sequential execution.

Import/Export

CSV import via drag & drop, one-click export with browser download.

i18n

English + German out of the box, extensible via PO/Gettext.

API Examples

Query your data from any language

# Login - get JWT token
TOKEN=$(curl -s -X POST http://localhost:8998/admin/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "secret"}' | jq -r '.access_token')

# Create a project
curl -X POST http://localhost:8998/admin/projects \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "myproject"}'

# Create a database
curl -X POST http://localhost:8998/admin/projects/myproject/databases \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "mydb"}'

# Set DB password (optional — without it, API is open)
curl -X PUT http://localhost:8998/admin/projects/myproject/databases/mydb/password \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"password":"dbpass","access_level":"write"}'

# Query data — no password = open
curl -X POST http://localhost:8998/db/myproject/mydb/query \
  -H "Content-Type: application/json" \
  -d '{"sql": "SELECT * FROM users LIMIT 10"}'

# Query with DB password set
curl -X POST http://localhost:8998/db/myproject/mydb/query \
  -H "Content-Type: application/json" \
  -H "X-Project-Key: myproject:dbpass" \
  -d '{"sql": "SELECT * FROM users LIMIT 10"}'