Cloudflare has launched K2, a durable event streaming service in public beta, and the interesting part is not what it does but how it's built. Rather than running a traditional distributed log like Apache Kafka — which requires dedicated clusters, careful partition management, and significant operational overhead — K2 offloads replication and consensus entirely to R2 object storage. The result is a streaming primitive that inherits R2's eleven-nines durability and separates compute from storage, enabling independent scaling of each. The architectural tradeoff is explicit and honest: because object stores don't support appends, K2 accumulates writes in-memory at the edge, batches them into segment files, and writes complete objects to R2. This introduces roughly 1 second of produce latency at the 99th percentile — a meaningful penalty for latency-sensitive workloads, but irrelevant for the analytics, fraud detection, and pipeline ingestion use cases Cloudflare is targeting. Ordering and offset consistency are maintained through R2's atomic operations, eliminating the need for a separate coordination service like ZooKeeper. K2 originated as the ingestion layer for Basin Pipelines, Cloudflare's serverless data pipeline product. Pipelines operates on a pull-based model, meaning something upstream needs to durably store events before they're read, transformed, and written to their final destination. Running Kafka across Cloudflare's 335+ city edge network — where machines are ephemeral, compute slices are small, and networking traverses the public internet — was not feasible. K2 is the answer to a real internal constraint, not a product looking for a problem. The consumption model is flexible and well-designed. Subscriptions support both competing consumers (work split across a pool for parallelism) and fan-out (every consumer sees every message), or a hybrid. Batches are leased for 5 minutes with explicit ack/nack/extend semantics. Data is represented as raw bytes, leaving serialization format to the application. The API surface is deliberately minimal — HTTP endpoints and Worker bindings, with stream creation available via CLI, dashboard, or API. Cloudflare positions K2 against its own Queues product with unusual clarity: Queues handles individual work items with retries, delays, and dead-letter queues; K2 handles high-volume data movement with batch-level processing and long-term retention. Basin Pipelines is recommended when the destination is R2 or Iceberg tables; K2 when custom processing or other destinations are involved. This kind of honest product taxonomy is rare and useful. Beta limits are modest — 10GB storage, 30MB/s produce per stream — with anticipated pricing at $0.04/GB produced, $0.04/GB consumed, and $0.02/GB retained. These numbers position K2 as dramatically cheaper than managed Kafka services for storage-heavy workloads, though the comparison is imperfect given the latency tradeoff. The serverless model means zero cluster management, zero capacity planning, and zero idle costs. The deeper significance is architectural: Cloudflare is proving that object storage can serve as the foundation for stateful distributed systems that traditionally required specialized infrastructure. If K2 succeeds at scale, the pattern — push consensus down to the storage layer, keep the application layer stateless and simple — will propagate across the industry. That's a genuinely generative contribution to how distributed systems are built.