Cloudflare Basin PipelinesRenamed
Cloudflare’s managed streaming ingestion service, called Cloudflare Pipelines until October 2026, that takes events over HTTP or a Workers binding, transforms them with SQL and writes them to R2 as Apache Iceberg tables, Parquet or JSON.
- What it is
- Stream processing
- Used for
- ETL & ELT pipelines
- Type
- Commercial product
- Made by
- Cloudflare, Inc.
- License
- Proprietary
- Status
- Renamed. Called Cloudflare Pipelines until 1 October 2026, when it became generally available as Basin Pipelines; existing resources and configurations keep working.
- Facts checked
- 12 October 2026
What it is
A setup has three parts. A stream is a durable, buffered queue that accepts JSON events from an HTTP endpoint, a Worker binding (env.STREAM.send(records)) or Cloudflare Logpush, and can validate them against a schema. A pipeline is a SQL statement, INSERT INTO sink SELECT … FROM stream, that filters, reshapes, casts or hashes each event on the way through. A sink writes the result with exactly-once delivery, either as Iceberg tables in Basin Catalog or as JSON or Parquet files in an R2 bucket, rolling a new file by size (5 MB or more) or time (every 10 seconds or more). One stream can feed several pipelines. The engine underneath comes from Arroyo, the Rust stream processor Cloudflare bought in 2025.
Transforms are stateless for now: no windows, joins or aggregations, which Cloudflare lists as planned. An account can have 20 streams, 20 pipelines and 20 sinks, a request can carry 5 MB, and the limits page allows 1 GB/s per stream. It needs the Workers Paid plan. Ingesting into a stream is free; SQL transforms cost $0.04 per GB beyond 50 GB a month, and sinks $0.03 per GB for JSON or $0.06 per GB for Parquet and Iceberg beyond 50 GB, measured on uncompressed data, plus normal R2 and Basin Catalog charges. In Cloudflare’s example, 500 GB a month filtered down to 300 GB of Iceberg costs $33.
Why teams pick it
- No Kafka, Flink or Spark to run: events go from a Worker or HTTP call to a queryable Iceberg table with one SQL statement
- Exactly-once delivery into Iceberg, Parquet or JSON on R2, with schema validation and typed Worker bindings that catch mismatches before deploy
- Free ingestion and per-GB pricing for transforms and sinks, with no hourly charges
- Cloudflare Logpush can feed a stream, so Cloudflare’s own logs can be filtered and stored as Iceberg tables
Watch out for
- Stateless SQL only: no windowed aggregations, joins or materialized views yet
- Low default quotas (20 streams, pipelines and sinks per account) and 5 MB per ingestion request
- Writes only to R2 and Basin Catalog; streams accept JSON events only
- Pipelines created before 25 September 2025 are on a deprecation path, and the October 2026 rename means older
wrangler pipelinesguides are out of date
Alternatives
What all stream processing have in common →
ArroyoOpen sourceA stream processing engine in Rust: you write the pipeline as SQL, and it keeps windows and joins running with checkpointed state.
BytewaxOpen sourceA Python stream processing framework on a Rust engine built on Timely Dataflow; its company wound down in 2025 and the last release is from November 2024.
FelderaOpen sourceAn incremental view maintenance engine in Rust: you write SQL tables and views, and it keeps every view up to date by processing only the changes, based on the award-winning DBSP theory.
ksqlDBCommercialConfluent’s SQL server for Kafka: queries that run forever, turning topics into new topics and into tables you can look up.
PathwayCommercialA Python framework for streaming ETL and live RAG pipelines: you write table transformations in Python, and a Rust engine built on Differential Dataflow keeps the results up to date.
Quix StreamsOpen sourceA pure-Python library for stateful stream processing on Kafka: a pandas-like Streaming DataFrame, RocksDB state backed up to Kafka, and no cluster of its own.
Redpanda ConnectRenamedOpen sourceFormerly Benthos: one Go binary that runs a YAML pipeline of inputs, processors and outputs, with at-least-once delivery and no disk state of its own.
StreamlingCommercialGoldsky’s young Rust pipeline runtime: YAML pipelines of stateless SQL, TypeScript and plugin steps on Arrow, from Kafka or files into Postgres, ClickHouse or webhooks.Timely DataflowOpen sourceA Rust library for data-parallel dataflow with logical timestamps, loops and exact progress tracking; the engine underneath Materialize.How it fits with other technologies
What Cloudflare Basin Pipelines uses
What uses Cloudflare Basin Pipelines
Create a stream, a SQL pipeline and an Iceberg sink, then send events · bash
# interactive: creates the stream (with schema), the Basin Catalog sink and the SQL
npx wrangler basin pipelines setup --name ecommerce
# the pipeline is one SQL statement, for example:
# INSERT INTO ecommerce_sink
# SELECT user_id, event_type, product_id, amount
# FROM ecommerce_stream WHERE event_type = 'purchase';
curl -X POST "https://$STREAM_ID.ingest.cloudflare.com" \
-H "Content-Type: application/json" \
-d '[{"user_id": "user_12345", "event_type": "purchase", "product_id": "widget-001", "amount": 29.99}]'
# from a Worker instead: "pipelines": [{ "binding": "STREAM", "stream": "<STREAM_ID>" }]
# await env.STREAM.send([{ user_id: "user_12345", event_type: "purchase" }]);See it in a real stack
No architecture uses Cloudflare Basin Pipelines yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2023–2026
Arroyo was started in 2023 by Micah Wylde, who had worked on stream processing at Lyft and Splunk, to make real-time pipelines usable by people who aren’t streaming experts. Apache Flink had the power but, in Micah Wylde’s words, an API too hard and low-level for most users and stateful services that needed endless operations. Arroyo answered with SQL as the interface, Rust instead of the JVM, and state kept in object storage, and was open-sourced in the summer of 2023.
On 10 April 2025 Cloudflare put Pipelines into open beta, at first a way to batch JSON events into R2, and announced it had acquired Arroyo to bring SQL transforms and Iceberg output to it. On 25 September 2025 it relaunched Pipelines on the new architecture, with streams, SQL pipelines and sinks into R2 Data Catalog, as part of the Cloudflare Data Platform alongside R2 SQL.
On 1 October 2026 the platform became generally available as Cloudflare Basin, and Pipelines became Basin Pipelines, by then with tens of thousands of pipelines created, Logpush as a source, typed bindings and Terraform support.
Why it’s built this way
- SQL as the only transformation language
- Arroyo’s founders chose SQL because it is easy to use, widely known and declarative, and Cloudflare kept it so that validation and reshaping happen at ingestion, “shifting left” before data lands in storage.
- Separate streams, pipelines and sinks
- The September 2025 architecture made the buffer, the transform and the destination distinct resources, so one stream can be read by several pipelines that route the same data to different tables or files.
- Stateless transforms first
- Filtering and reshaping cover most ingestion; Cloudflare said it would bring Arroyo’s stateful features (aggregations, joins, materialized views) later and may price them separately.
Timeline
- 2023
Arroyo, the engine it is built on, is open-sourced
- 2025
Pipelines open beta and Arroyo acquisition on 10 April
- 2025
Rebuilt with SQL transforms and Iceberg sinks on 25 September
- 2026
Generally available and renamed Basin Pipelines on 1 October
- Cloudflare blog: Just landed, streaming ingestion on Cloudflare with Arroyo and Pipelines (10 April 2025)
- Cloudflare blog: Announcing the Cloudflare Data Platform (25 September 2025)
- Cloudflare blog: Introducing Cloudflare Basin, an open, serverless data platform, now generally available (1 October 2026)
- Cloudflare changelog: Cloudflare Basin is now generally available (1 October 2026)
Sources10 · facts checked 12 October 2026
- Cloudflare docs: Basin Pipelines overview (formerly Cloudflare Pipelines, now generally available)
- Cloudflare docs: Basin Pipelines, Streams
- Cloudflare docs: Basin Pipelines, Writing to streams (Worker binding, HTTP)
- Cloudflare docs: Basin Pipelines, Pipelines (SQL transformations)
- Cloudflare docs: Basin Pipelines, Sinks
- Cloudflare docs: Basin Pipelines, Getting started (setup, rolling policy, HTTP ingest)
- Cloudflare docs: Basin Pipelines limits
- Cloudflare docs: Basin Pipelines pricing
- Cloudflare docs: Basin Pipelines, Legacy pipelines
- Cloudflare blog: Introducing Cloudflare Basin, an open, serverless data platform, now generally available (1 October 2026)