Skip to main content

Iceberg Explorer

High-performance web application for interactive exploration of Apache Iceberg data lakes.

Features

  • Browse Iceberg catalog namespaces and tables
  • View table schema, partitioning, and snapshot history
  • Execute SQL queries against Iceberg tables using DuckDB
  • Export query results to CSV
  • Real-time streaming of query results

Tech Stack

  • Backend: FastAPI, DuckDB (with Iceberg extension), Granian
  • Frontend: HTMX, Alpine.js, Tailwind CSS
  • Observability: OpenTelemetry, structlog

Quick Start (Docker)

Run the latest image from GHCR:

docker run --rm -p 8080:8080 \
  -e ICEBERG_EXPLORER_CATALOG__TYPE=rest \
  -e ICEBERG_EXPLORER_CATALOG__URI=http://<catalog-host>:8181 \
  -e ICEBERG_EXPLORER_CATALOG__NAME=default \
  ghcr.io/davzucky/iceberg-explorer:latest

Open http://localhost:8080 in your browser.

Environment Variables

These are the main environment variables end users typically set when running with Docker.

Variable Required Description
ICEBERG_EXPLORER_CATALOG__TYPE Yes Catalog type: rest (default) or local.
ICEBERG_EXPLORER_CATALOG__URI Yes for rest REST catalog endpoint (for example, http://lakekeeper:8181).
ICEBERG_EXPLORER_CATALOG__WAREHOUSE Yes for local Warehouse location for local catalog mode.
ICEBERG_EXPLORER_CATALOG__NAME No DuckDB attachment name (default: default).
ICEBERG_EXPLORER_CATALOG__TOKEN No Bearer token for authenticated REST catalogs.
ICEBERG_EXPLORER_CATALOG__CREDENTIAL No Catalog credential string when required by your catalog.
ICEBERG_EXPLORER_CATALOG__S3__ENDPOINT No S3-compatible endpoint URL for table data access.
ICEBERG_EXPLORER_CATALOG__S3__ACCESS_KEY_ID No S3 access key ID.
ICEBERG_EXPLORER_CATALOG__S3__SECRET_ACCESS_KEY No S3 secret access key.
ICEBERG_EXPLORER_CATALOG__S3__REGION No S3 region.
ICEBERG_EXPLORER_SERVER__PORT No HTTP server port inside the container (default: 8080).

Screenshot

Iceberg Explorer screenshot

Development

Prerequisites

  • Python 3.11+
  • uv package manager

Setup

# Install dependencies
uv sync --all-extras

# Run tests
uv run pytest

# Run linting
uv run ruff check src/

# Start development server
uv run iceberg-explorer

CI/CD and Releases

Continuous Integration

The CI workflow runs on pull requests and pushes to main and performs:

  • Dependency install with uv (locked via uv.lock)
  • Linting (ruff check)
  • Tests (pytest)
  • Lakekeeper/MinIO/Postgres service startup checks via Docker Compose
  • Docker image build validation

Release Workflow

The Release workflow supports two paths:

  1. Push a tag in the format vX.Y.Z
  2. Manually run the workflow (workflow_dispatch) to create the tag from pyproject.toml

Release behavior:

  • Verifies tag version matches pyproject.toml
  • Builds and publishes a Python wheel
  • Builds Docker image and scans with Trivy (fails on HIGH,CRITICAL)
  • Pushes image to GHCR only after Trivy passes
  • Creates GitHub Release with auto-generated release notes
  • Opens a PR to bump version to the next patch (X.Y.Z -> X.Y.(Z+1))

Manual Release Steps

  1. Ensure project.version in pyproject.toml is the version you want to release
  2. Open GitHub Actions and run the Release workflow
  3. Leave ref as main (or choose a specific commit/branch)
  4. Confirm the workflow completes successfully

PyPI Trusted Publishing Setup (one-time)

Configure Trusted Publishing in your PyPI project:

  1. Go to PyPI project settings -> Publishing -> Add a new trusted publisher
  2. Set owner to davzucky
  3. Set repository to iceberg-explorer
  4. Set workflow name to release.yml
  5. Set environment name only if you enforce one in GitHub Actions

No PyPI API token is needed when Trusted Publishing is configured correctly.

Pre-commit Hooks

# Install pre-commit hooks
uv run pre-commit install

License

MIT

Metadata

Release files for iceberg-explorer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for iceberg-explorer 0.1.0
File Interpreter ABI Platform Actions
iceberg_explorer-0.1.0-py3-none-any.whl Python 3 none any Details for iceberg_explorer-0.1.0-py3-none-any.whl

Release files / iceberg_explorer-0.1.0-py3-none-any.whl

Download URL iceberg_explorer-0.1.0-py3-none-any.whl
Size 53.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e53707443f81aed51eb7a222491ebd0d31b78febb24d856838bcf18107c827bc
BLAKE2b-256 checksum
How to use checksums
4b2648058afe2f5a17cc1b16ed3a0dfd6352b3ff932c355f9774f056906237ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 25, 2026.

Transparency log

Security for iceberg-explorer 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

1 file in this release has been uploaded with provenance metadata.

Attestation for iceberg_explorer-0.1.0-py3-none-any.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page