Skip to main content

TUI for managing DuckLake datalakes

Project description

quacktui

A Python TUI for managing DuckLake datalakes. Browse your catalog, inspect table metadata, run SQL queries, and perform maintenance operations — all from your terminal.

Install

With uv (recommended)

uv tool install quacktui

With pip

pip install quacktui

From source

git clone https://github.com/riazk/quacktui
cd quacktui
uv sync
uv run quacktui

Quickstart

Create a connections.toml file in your home directory:

[[connections]]
name = "demo"
type = "duckdb"
uri = "md:demo"

[connections.storage]
type = "s3"
bucket = "my-data"
endpoint = "http://localhost:9000"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"

Then launch quacktui:

quacktui --connection demo

For DuckDB with local files:

[[connections]]
name = "local"
type = "duckdb"
database = "/path/to/database.duckdb"

[connections.storage]
type = "s3"
bucket = "local-bucket"
endpoint = "http://localhost:9000"

Features

Catalog Views

Browse and inspect your datalake with eight dedicated views:

  • Schema Browser — Explore tables and views organized by schema
  • Table Details — Inspect table structure, columns, constraints, and statistics
  • Snapshot Timeline — View table snapshot history and retention policies
  • File Inventory — List all data files backing a table
  • Partition Explorer — Navigate and manage table partitions
  • Schema Evolution — Track column additions, renames, and type changes over time
  • Health Dashboard — Monitor table health, data quality, and maintenance metrics
  • Catalog Database Info — View version, format configuration, and settings

Query Editor

Multi-tab SQL editor with the following capabilities:

  • Syntax highlighting for SQL and Python
  • Schema-aware autocomplete for table and column names
  • Query history stored in persistent SQLite
  • Saved query snippets for frequent operations
  • Result export to CSV, Parquet, JSON, or clipboard
  • Multiple concurrent queries with separate result tabs
  • Query timeline to review and re-run historical queries

Maintenance Operations

Perform five critical datalake maintenance tasks, all requiring explicit confirmation:

  1. Compaction — Consolidate small files into larger files to improve query performance and reduce file count
  2. Expire Snapshots — Remove old snapshots based on retention policies to free storage
  3. Delete Orphaned Files — Clean up unreferenced files in S3 storage
  4. Refresh Statistics — Update table statistics for query optimization
  5. Optimize Manifests — Reorganize manifest files (version-dependent, available when supported by catalog format)

Destructive operations require pressing Ctrl+Enter to confirm.

Safety

By default, quacktui operates in read-only mode. Pass the --allow-writes flag to enable mutations:

quacktui --connection demo --allow-writes

Without this flag, all write operations are disabled and maintenance ops are grayed out.

Catalog Backends

quacktui supports the following catalog backends via DuckLake's extension:

  • DuckDB (default, embedded)
  • PostgreSQL (remote)
  • SQLite (file-based)
  • MySQL (remote)

Specify the backend in connections.toml using the type field.

Storage

In v1, quacktui supports S3 and S3-compatible storage backends:

  • AWS S3
  • MinIO (local or remote)
  • Cloudflare R2
  • DigitalOcean Spaces
  • Any S3-compatible endpoint

Configure the storage endpoint, bucket, and credentials in the [connections.storage] section of connections.toml.

Configuration

Create a connections.toml file to define your datalake connections:

[[connections]]
name = "production"
type = "duckdb"
uri = "md:prod"

[connections.storage]
type = "s3"
bucket = "prod-data"
endpoint = "https://s3.amazonaws.com"
region = "us-east-1"
access_key_id = "YOUR_KEY"
secret_access_key = "YOUR_SECRET"

[[connections]]
name = "staging"
type = "postgresql"
host = "localhost"
port = 5432
database = "datalake"
user = "admin"
password = "secret"

[connections.storage]
type = "s3"
bucket = "staging-data"
endpoint = "http://minio:9000"

For more detailed configuration options, see docs/CONFIGURATION.md.

Keybindings

Navigate and control quacktui with these keyboard shortcuts:

Key Action
Ctrl+P Command palette (search and run commands)
Ctrl+T Theme switcher (dark/light)
F1 Help and keybindings
1 / 2 / 3 Switch between mode tabs (Catalog / Query / Maintenance)
Ctrl+Enter Execute SQL query or confirm destructive operation
Ctrl+N Open new query tab
Ctrl+W Close current tab
Ctrl+R Recall query from history
Tab Navigate between panes
Up / Down Navigate lists and history

Development

For development and contribution guidelines, see:

  • docs/CONTRIBUTING.md — How to contribute
  • docs/COMPATIBILITY.md — Supported versions and compatibility matrix
  • .sisyphus/plans/ducklake-tui.md — Current implementation status and milestones

License

Apache License 2.0. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quacktui-0.1.0.tar.gz (254.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quacktui-0.1.0-py3-none-any.whl (88.1 kB view details)

Uploaded Python 3

File details

Details for the file quacktui-0.1.0.tar.gz.

File metadata

  • Download URL: quacktui-0.1.0.tar.gz
  • Upload date:
  • Size: 254.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quacktui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8ce8532bbe75265ff914a41f1aba9806db04af5c84bfe08c073d17f0bb1807bc
MD5 350cef673fefe9af32bc1f6072ae1201
BLAKE2b-256 ddfe336d693f49047a6512361d021e914e6231847ba17d44ec49df053a025f37

See more details on using hashes here.

Provenance

The following attestation bundles were made for quacktui-0.1.0.tar.gz:

Publisher: publish.yml on arksigma/quacktui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quacktui-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: quacktui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 88.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quacktui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b22a8c5e7d71927766a22eb420906f423365cddeb8c0773546e87dfa6bfeb453
MD5 0934ac0896f50c1a8ca20e7d355c2cd3
BLAKE2b-256 84008305fbff673d3d8913e7df6627cc0f2758769368f1a1eccad49c015f32cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for quacktui-0.1.0-py3-none-any.whl:

Publisher: publish.yml on arksigma/quacktui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page