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:
- Fetch — Retrieve records through declarative REST HTTP requests, storage readers (S3, GCS, and local files), database integrations, or vendor SDK connectors.
- Shape — Filter, transform, and normalize records on the fly using embedded DuckDB SQL.
- Write — Deliver data to JSONL, CSV, TSV, and Parquet files; DuckDB and DuckLake; Singer-compatible message streams; or supported
dltdestinations.
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
- Full documentation: https://streamwright.web.app/docs/
- Architecture Guide: https://streamwright.web.app/docs/architecture/
- Connectors & Readers: https://streamwright.web.app/docs/connectors/
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)
| File | Size | Uploaded | |
|---|---|---|---|
| streamwright-0.1.6.tar.gz | 247.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|