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

All commands can be invoked interchangeably using streamwright or the shorthand sw alias (e.g. sw run, sw validate, sw connectors, sw mcp).

  • streamwright run (or sw run) — Execute a source and stream records to the configured destination.
  • streamwright validate (or sw validate) — Validate source definitions, authentication specifications, and schemas without executing network requests.
  • streamwright connectors (or sw connectors) — Browse, inspect, and install connectors from the StreamWright Hub.
  • streamwright mcp (or sw mcp) — Launch the Model Context Protocol (MCP) server for AI coding assistants.

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.7

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.7
File Size Uploaded
streamwright-0.1.7.tar.gz 249.6 kB Details

Built distribution (wheel)

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

Total release size: 411.2 kB

Release files / streamwright-0.1.7.tar.gz

Download URL streamwright-0.1.7.tar.gz
Size 249.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a83ce802f280cf4a561b607267ee5360ce7b4a4efcccaf9e42967a4978f34c7c
BLAKE2b-256 checksum
How to use checksums
3e3dfdea8103d26cd0f75cee17a9539aa0c368c28719069c585922119e2edf1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.9

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

Download URL streamwright-0.1.7-py3-none-any.whl
Size 161.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c33a5621fb5e76bf313aac510b0c056e4704b8dbf916682e6a3a2db2e09dbe0
BLAKE2b-256 checksum
How to use checksums
c14a080ae4eef03b9ef2f806cdc34117257719372189d655260d81d5d3f9328b
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

This release

0.1.7 This release

2 release files

0.1.6

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