Skip to main content

Duckstring

Build data pipelines the way you build software: version each transform, declare its dependencies, and Duckstring resolves the execution DAG automatically.

Duckstring treats data transformations as software packages. Upstream dependencies are declared per Pond (unit operation), defining the DAG without the need for its direct management.

Ponds are upgraded and deployed to Duckstring's pull-based Catchment (orchestrator) atomically - like upgrading a package - with the earlier version continuing to execute until there are no consumers dependent on it. Upstream defines constraints on what it can consume, downstream defines when it's needed, and the Catchment optimally executes the sequence of Ponds supplying it with the best currency and frequency as possible.

You should not need to manage the DAG. You should not need global governance. You should know yourself and your suppliers and trust that you'll get what you need when you need it.

Core Concepts

The main elements:

  • Catchment: Control environment (FastAPI + UI + CLI)
  • Pond: Versioned container with declared upstream dependencies
  • Ripple: Unit operation within a Pond (e.g. a single transformation producing a table)
  • Trickle: DBSP-based incremental engine operating within a Ripple

Ponds are typed or referred to in context:

  • Source: A parent Pond
  • Sink: A child Pond
  • Inlet: A Pond with external dependencies and no Sources
  • Outlet: A Pond with no Sinks (e.g. outputs final data products)

To see the orchestration model in action without installing anything, try the Duckstring Playground.

Quickstart

pip install duckstring

# Start a local Catchment (the runtime + web UI) — leave it running
duckstring catchment init --name dev

Then, in another terminal:

# Create the demo pipeline (transactions, products → sales → reports) and deploy it
mkdir demo && cd demo
duckstring pond demo
duckstring pond deploy --all -y

# Run it end to end, once
duckstring trigger pulse reports

# Look around
duckstring status                          # live state of every Pond
duckstring query reports monthly_summary   # peek at an output table

The Catchment also serves a live web UI at http://127.0.0.1:7474 — the Pond graph, freshness, run history, and the full trigger/control surface.

Execution

Ponds execute on demand signals sent to an Outlet, in two flavours — push runs the lineage forward to a target freshness; pull propagates demand upstream so every Pond re-runs as its Sources update, naturally throttled to the bottleneck. Each comes as a one-shot or a standing trigger:

Once Continuously
Push Pulse Tide
Pull Tap Wave

A Tide keeps an Outlet no staler than a bound (duckstring trigger tide reports 1d); a Wave keeps it as fresh as the pipeline can supply. See Triggers for the full semantics.

There is no DAG.

Going further

Full documentation lives at docs.duckstring.com:

There are future plans for a hosted Catchment service at duckstring.com. If you're interested, please get in touch.

License

Apache 2.0

Metadata

Release files for duckstring 0.5.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 duckstring 0.5.0
File Size Uploaded Provenance
duckstring-0.5.0.tar.gz 763.7 kB With provenance Details

Built distribution (wheel)

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

Total release size: 1.6 MB

Release files / duckstring-0.5.0.tar.gz

Download URL duckstring-0.5.0.tar.gz
Size 763.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a7b26cef95d1e81d93ca817d9e3e0d1b868f98e269850a1225975a4ebe293d33
BLAKE2b-256 checksum
How to use checksums
b9d5ff8fb781b366de589c622f733e84eb729e97d72643c7db8f0d51d1f0552e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 3, 2026.

Transparency log

Release files / duckstring-0.5.0-py3-none-any.whl

Download URL duckstring-0.5.0-py3-none-any.whl
Size 871.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17452df8593a7df98e357eec12ce200336f3c6012aa5b98bec48c5e4f3a97547
BLAKE2b-256 checksum
How to use checksums
69d17a833b6ee2c0265d06fffaa4ceed28e1dbdbac84dc471e3c15d4182ee27c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 3, 2026.

Transparency log

Security for duckstring 0.5.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 duckstring-0.5.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 Aug 3, 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.

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