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
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(orsw run) — Execute a source and stream records to the configured destination.streamwright validate(orsw validate) — Validate source definitions, authentication specifications, and schemas without executing network requests.streamwright connectors(orsw connectors) — Browse, inspect, and install connectors from the StreamWright Hub.streamwright mcp(orsw 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
- Full documentation: https://streamwright.web.app/docs/
- Architecture Guide: https://streamwright.web.app/docs/architecture/
- Connectors & Readers: https://streamwright.web.app/docs/connectors/
- MCP Server Guide: https://streamwright.web.app/docs/ai/mcp/
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)
| File | Size | Uploaded | |
|---|---|---|---|
| streamwright-0.1.7.tar.gz | 249.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|