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.8
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.8.tar.gz | 250.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|