Skip to main content

Duckpad

Build local DuckDB pipelines on a visual canvas, inspect their results, and explain individual values back to their source cells. Duckpad combines a React/TypeScript interface with a Python/FastAPI execution service.

Start

Requires Python 3.11+ and Git on PATH. Release wheels include the frontend, Monaco and its workers; Node.js is not needed to run the installed application.

pip install ./dist/duckpad-0.1.0-py3-none-any.whl
duckpad start

The distribution is named duckpad. Version tags publish the package to PyPI and create a GitHub release with Conventional Commit notes and downloadable distributions. After the first release, install it with pip install duckpad. See the release guide for one-time publishing setup and tagging instructions.

Open the localhost address printed in the terminal. Sign in as admin using the password printed once on the first launch. The same password remains valid after a restart. The default instance directory is $XDG_DATA_HOME/duckpad, or ~/.local/share/duckpad. Authentication, connection settings and execution history are kept there, outside project repositories.

duckpad start --home /path/to/my-instance --port 8765 --no-browser

Only one backend may own an instance directory at a time. Use separate --home directories for independent instances. The default address is 127.0.0.1.

Try the complete example

Choose Open example project and Run pipeline. The Northstar example creates CSV and Parquet inputs, joins customers to orders, computes ordered outputs, uses nested reusable components twice with separate parameters, computes aggregates, distinct counts, set operations and window ranks, and exports two CSV reports. Its dev and prod data are deliberately different.

Select Regional revenue, choose the report output, then click a revenue cell. Follow a contribution into the nested aggregate and page through its source amounts. No external accounts are required for this example. See the example tour.

Northstar pipeline and preview

Included workflows

  • Drag templates onto the canvas, connect ports, configure typed parameters, and edit shared SQL definitions in Monaco.
  • Use guided filter, join-key and aggregate forms, or edit their generated SQL expressions.
  • Preview, filter and sort results; explain valid cells with five contributions per page and complete counts.
  • Group nodes into nested components, expose parameters, and import independent copies between projects.
  • Save automatically to Git, inspect diffs, open isolated branches or historical revisions, and explicitly merge changes.
  • Detect concurrent UI/file edits and resolve recoverable conflicts without losing either proposal.
  • Recompute manually, stop active SQL, retain stale previews after failure, and inspect durable execution history.
  • Configure reusable connections and environments outside project Git, with local, S3 and Oracle presets.
  • Switch English/French and light/dark themes without changing the project.
  • Monitor Duckpad server CPU and RAM as percentages with subtle background bars; click for two minutes of history and RAM used / total in MiB or GiB. Samples refresh every two seconds while the workspace is open; history resets on reload or sign-out. Process memory comes from psutil, supporting Linux, macOS, and Windows. CPU includes all server threads, normalized to the available CPU capacity (100% means fully used); RAM is current resident memory divided by total capacity. CPU affinity and visible Linux cgroup v1/v2 limits constrain those capacities; otherwise system totals apply. Measurements cover the Duckpad server process. Missing measurements are shown as unavailable.

Language defaults to the first supported language in your browser preferences (English or French, with English as the fallback), and the theme defaults to your system color scheme. Manual choices are saved in this browser and take priority on subsequent visits.

Results live in memory per worktree and environment. After a backend restart, history remains available but previews and lineage require another manual run. Editing or changing an external source does not launch a run automatically.

Develop and verify

bash scripts/setup.sh
uv run duckpad start --home .duckpad-dev --no-browser

For frontend development, npm run dev --prefix frontend proxies /api to the backend on port 8765.

uv run ruff check src tests scripts
uv run ruff format --check src tests scripts
uv run pytest -q
npm run check --prefix frontend
npm exec --prefix frontend -- playwright install chromium
npm run build --prefix frontend
npm run test:e2e --prefix frontend
uv build

The Playwright suite starts a disposable instance on port 8766. DUCKPAD_CHROMIUM_EXECUTABLE can point to an already installed Chromium executable. Building a release without compiled assets fails with an actionable message; editable installation permits building them afterward.

Documentation

The required dependency is duckdb>=2.0; the recorded validation uses DuckDB 2.0.0 on Linux x86_64. Oracle needs a matching OraDuck extension and Oracle Instant Client. S3 validation uses a local S3 emulator; live AWS IAM, TLS and deployment-specific behavior need their own integration checks. Details and reproducible commands are in the connector guide.

Metadata

Release files for duckpad 0.1.0

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

Source distribution (sdist)

Source distribution for duckpad 0.1.0
File Size Uploaded Provenance
duckpad-0.1.0.tar.gz 1.7 MB With provenance Details

Built distribution (wheel)

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

Total release size: 2.7 MB

Release files / duckpad-0.1.0.tar.gz

Download URL duckpad-0.1.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
2929ac380209ab6f26d7ba3ef4beaf1d739f0c21b1882ebb70443857df5d5c7a
BLAKE2b-256 checksum
How to use checksums
15d368f976f8cde36fec6ee57adadf6d9a421ebc751eaa35f407e7807d704ff0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 26, 2026.

Transparency log

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

Download URL duckpad-0.1.0-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
f3c14c900531e77b5490840c0ae07945e093d9461b361dd1bf950f25d2f01ab3
BLAKE2b-256 checksum
How to use checksums
277ba73a207d8175e8912fb1baaba37de2074839242e6159e7b66c73d7748bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 26, 2026.

Transparency log

Security for duckpad 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

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for duckpad-0.1.0.tar.gz

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 Oct 26, 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.

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