Skip to main content

StreamWright — Declarative Data Pipelines

StreamWright turns a few YAML files into a working data pipeline. You describe what to pull—from an API, a file store, or a database—and StreamWright handles the how: authentication, pagination, retries, shaping data with DuckDB SQL, and writing it to your destination.

Build reusable data pipelines without writing per-connector code. Define your sources declaratively, install connectors on demand, and run everything through a single CLI command.

How It Works

The streamwright package provides both the CLI tooling and execution runtime for declarative data sources.

Each stream follows a three-stage pipeline:

  1. Fetch — Retrieve records through declarative REST HTTP requests, storage readers (S3, GCS, and local files), database integrations, or vendor SDK connectors.
  2. Shape — Filter, transform, and normalize records on the fly using embedded DuckDB SQL.
  3. Write — Deliver data to JSONL, CSV, TSV, and Parquet files; DuckDB and DuckLake; Singer-compatible message streams; or supported dlt destinations.

CLI Commands

  • streamwright run — Execute a source and stream records to the configured destination.
  • streamwright validate — Validate source definitions, authentication specifications, and schemas without executing network requests.
  • streamwright connectors — Browse, inspect, and install connectors from the StreamWright Hub.

Source Structure

A source is defined declaratively as a directory containing a source.yaml file and a streams/ directory, or as a standalone YAML file where supported.

my_source/
├── source.yaml
└── streams/
    ├── customers.yaml
    └── orders.yaml
  • source.yaml — Defines input parameters (spec), authentication (auth), and base HTTP configuration (http).
  • streams/*.yaml — Defines stream endpoints, pagination, rate limits, schemas, and stream-specific configuration.

Installation

Install StreamWright using pip:

pip install streamwright
streamwright --help

This installs the CLI, execution runtime, and connector hub client. Install additional connectors on demand:

# Browse available connectors
streamwright connectors list

# Install the generic REST API connector
streamwright connectors install restapi

# Install file and storage readers
streamwright connectors install files

# Install Google Ads API support
streamwright connectors install google_ads

# Install multiple connectors at once
streamwright connectors install google_ads meta_ads microsoft_ads

The connector catalog is discovered from the live StreamWright Hub and cached locally in ~/.streamwright/connectors.json.

Quickstart

The repository includes runnable examples to help you get started.

# Install StreamWright and the required connector
pip install streamwright
streamwright connectors install files

# Clone the repository
git clone https://github.com/karthick-jaganathan/streamwright.git

# Validate the example sources
streamwright validate streamwright/examples

# Run the file-reader example
streamwright run streamwright/examples/sources/readers/files_demo \
  --set data_root=streamwright/examples/sources/readers/files_demo/data \
  --allow-connector files \
  --output jsonl:out

Documentation

Metadata

Release files for streamwright 0.1.6

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

Source distribution (sdist)

Source distribution for streamwright 0.1.6
File Size Uploaded
streamwright-0.1.6.tar.gz 247.0 kB Details

Built distribution (wheel)

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

Total release size: 407.1 kB

Release files / streamwright-0.1.6.tar.gz

Download URL streamwright-0.1.6.tar.gz
Size 247.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8cf46f3280bd0424b4aeb105c8e5e4f362225221801ad225ba59bf4f85ae9992
BLAKE2b-256 checksum
How to use checksums
57b82d60bca6c9711e5114058da683c3a00c396ebe98b47b70d42a05884170e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.9

Release files / streamwright-0.1.6-py3-none-any.whl

Download URL streamwright-0.1.6-py3-none-any.whl
Size 160.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3c377bdcef21c70f996e65f2e943932fd6ce4d47a0505b4f31a469a4ad50f2e2
BLAKE2b-256 checksum
How to use checksums
8f61f580676b7e30f1e51f277b698dd1e3dcdbbdc79c6fe4c06bc4716cf37e58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.9

Release history Release notifications | RSS feed

0.1.8

2 release files

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.5

2 release files

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