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

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.8
File Size Uploaded
streamwright-0.1.8.tar.gz 250.2 kB Details

Built distribution (wheel)

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

Total release size: 412.1 kB

Release files / streamwright-0.1.8.tar.gz

Download URL streamwright-0.1.8.tar.gz
Size 250.2 kB
Tags Source
SHA-256 checksum
How to use checksums
556b23db1df289a8e7a06573b1dfc7a5df05b56c1f1d304ace0f898ea42022c4
BLAKE2b-256 checksum
How to use checksums
dbb5ea5ce003a85cd8a30958e0ddef322278f3c0089f91b570400a7d36d15abe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.7

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

Download URL streamwright-0.1.8-py3-none-any.whl
Size 162.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0bca880e7d03697de0a990233abe7ff4262069b952cbaaa490b6e5ac1a680239
BLAKE2b-256 checksum
How to use checksums
c65352385adb2ea6eb09a6bf980ba1b907ea8d06fdd90dc4043ddc557268ee64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.7

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

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