[Atp] atmoq: ATProto over Media over QUIC Transport
Eli Mallon <eli@stream.place> Wed, 15 July 2026 04:17 UTC
Return-Path: <eli@stream.place>
X-Original-To: atp@mail2.ietf.org
Delivered-To: atp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 04D3E116F9D61 for <atp@mail2.ietf.org>; Tue, 14 Jul 2026 21:17:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1784089052; bh=0FSiFhZl3VPwikfR5DzfGPzAC6IMRfvc+RCssZ04PW0=; h=From:Date:Subject:To; b=c6e8SZmo9iygv8gTOZafPlFCxFkatJu4cgRHTA12e4GYpDYJjGv3mEl5bMvB2akCj /Sx2GeGDKAuyKaGtHswjIQOeB4tmHoAmJCbcjuMld2v0XOkStKnyC5xxwGnvW4mCaJ CBUFAjOOV+8AQBeaX8iwGBWxeTEgR21aN4qQETQU=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.889
X-Spam-Level:
X-Spam-Status: No, score=-1.889 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=stream-place.20251104.gappssmtp.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Bg7IfFLXcU-l for <atp@mail2.ietf.org>; Tue, 14 Jul 2026 21:17:31 -0700 (PDT)
Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 269E8116F9D56 for <atp@ietf.org>; Tue, 14 Jul 2026 21:17:31 -0700 (PDT)
Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-84862b0d5f8so1526147b3a.3 for <atp@ietf.org>; Tue, 14 Jul 2026 21:17:31 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1784089050; cv=none; d=google.com; s=arc-20260327; b=ZpPvT/1ErGNPdIRx63hLIEzyWsAVe2HBgMegZPpq1qRFvKUWCRyhIzj9DlrLIRAlht LHai35rL6AiOvwGoho3RXET+U4CJWJEIkluvv3PqqLrc5s6w4GSPnDoaCojSRpSkaGL1 DKWWR/wbuvjuJPukYDyK7eUS0Z0oFcY7d6zC9Rm1EBnBtsSjY2YwdI/MEhpgddt5L4VL CwVC7IZ6/rJUKZ6iaYw720Urzy/jDJpEAv/ImcUEb2NZh0FMs9da2xDXTyk9RYZIji9k woHoc+umsbEji1sOu4EgzzGBm0AmbzTaTGjyaWTh5Z/JG1ApGVpkDwA2O9NsrguA9Ne6 Z2aQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=0FSiFhZl3VPwikfR5DzfGPzAC6IMRfvc+RCssZ04PW0=; fh=Ey4raUt1O8w4kZJlRV+d2BKKjWnLGEvIFibDo3ZjRYI=; b=ARPiBCghYqdoI18o7rWR6FGRQ4OYhRT9e4+VDSCsdz4QmFsOfZ10T/qEndB4rqv76M cEYHYcbeb2jRmJErWKd1xb7SiWvsHKarV0McYVd7v4LSXKqYfknkJ0Dr6dfYk5rW0Zc6 /esInB0REouQXD+1hOxkhr+BDdt2ebdgWW4tU59Sweq2bfoBwX663xgrpSERaUswzA1C ZJzfizaHDq05RhKk7J/6w2mkEwJ6fxvOb1KQ5pqeKAlbK8osrr7wOSH8JAemj/hMjb5j R93y5EKi1newkBFl3flqPIyoLcfIu1vcMoH/7gPOaqo2mJYdhHYl29aIrCZ2j10X++BR GgLw==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stream-place.20251104.gappssmtp.com; s=20251104; t=1784089050; x=1784693850; darn=ietf.org; h=content-type:to:subject:message-id:date:from:mime-version:from:to :cc:subject:date:message-id:reply-to:content-type; bh=0FSiFhZl3VPwikfR5DzfGPzAC6IMRfvc+RCssZ04PW0=; b=dSTFLzZeOZEs5MJtYTnZDAUidXQcVRb5ppPoM1zVnxtJg1c0KAF3x3Ec+gtNd7qgUu lhVZ9q631UE4A9Agv6ytpTskLGW6fpsh0LIT82tCjHFjd+8aJbed8cVAw9rn7xenYaqw VT0uuKTXZ0yOloC/WFFn3FMrk6U9wCxlzgcCC6QKuc0RuRiHsv+v6WoaG5KwNK3jmxX/ 3HQqIbQsY8ev2WLO+JFHLgpZRxhvD6X+8EXiRVb1IAMvEC6SEaWcEwrMtn0fC/Ym5/GT p1uziOloYED+oxPVuYOSWDG5AWBTzchZeA+8XZQk5GapZBjT4jQ8E6RHvNqwtaMSm7Ty GlLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784089050; x=1784693850; h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0FSiFhZl3VPwikfR5DzfGPzAC6IMRfvc+RCssZ04PW0=; b=IdkP6z2f8QglzK1LU2o9L1+qH80BleJ07f6Lbp42W5hCBz3lVZLJLPQoj5Km5mMLvC UXhN1a08ZzNr5i2HLX6Sx4tEZHQwMnxTFKJChRkB6JtSWBxJGOC4BFO0wy5i5Uiy7L7I zd70dMMYT/baU5tU4xKeJO1fEtzobQZ8ujUkn20o7EF7NZe/4v/thqddcxd6hZRPJicF IsYFDZYp/4/UP/3qW0MxQtptl7K/ujzyTOSEk5SSLkcUty217djG0XtDp5ZsoY1pF/po V3W1b6ix4V84wI934ipokl4hbWDdpV09eg44wzkfWwTpwsN6km+xQ3UUQ3m5XA2ZpvVT yn6Q==
X-Gm-Message-State: AOJu0YxJ40UwVKWGu34SKiHU2vNLlE8+WFg3Fxd2mnTN0rXh7a+NyAMv 5ZdpvmaB7PDdnc/MmE/IZ3vIk/HPIyFDVjrsSLh5REzkpxv73kyXid0sBzcKKvDSFzCIq5/Echg AI06aswkw9k5PFQXcn+v1vH62ab0RFtthP8HBTFnmAaHcxtr+y05l48g=
X-Gm-Gg: AfdE7cnQho3e3UDqvHzwkMw+MiatdKSDEq1/NWv5pwdhy9Ak8/N2XORjZP/jy4Dshpf GjW0FgO84kWUxVZvpPQ1KMt20ZzQACkluutVm9UqAVKikkh3YEpfWhY/+B5gfvcv5a+Y/FikxMY RmIbaxyjhMJEYlgcewZxGzgt62akbevWJT+GkXVa+QrO9V2UFIHRfNN0ZXwpLBPc0VJp+sakizH 78arh9Rhay/T/eU905IIWMTyqYbY4pM7bTgKXEpxuni1tN1axbDN7UJds8z2xdu0VGtLIiZ9Kw/ vhKwdptA/BBVNKEFzmx056C4xUsA4quid2vH0kl3Z1zZeonOjyTg4nrypw==
X-Received: by 2002:a05:6a00:451c:b0:848:812b:848a with SMTP id d2e1a72fcca58-84889629ac6mr14977117b3a.33.1784089050034; Tue, 14 Jul 2026 21:17:30 -0700 (PDT)
MIME-Version: 1.0
From: Eli Mallon <eli@stream.place>
Date: Tue, 14 Jul 2026 21:17:17 -0700
X-Gm-Features: AUfX_mzEiwFnVMVU4XjxF8rJl8sGdte0c27R6I1U8XMdkBvvXtSM4S5GrTSvPd8
Message-ID: <CAJ_8DJ4nxZTQQ-gcM8doFMQjVA_AtsvfL1aiBUk=+NxMqK7kOA@mail.gmail.com>
To: atp@ietf.org
Content-Type: multipart/alternative; boundary="0000000000001344f606569e9adc"
Message-ID-Hash: 46Q3ELZH3ZGYNW6DFPXNHWFMKKFY7IXD
X-Message-ID-Hash: 46Q3ELZH3ZGYNW6DFPXNHWFMKKFY7IXD
X-MailFrom: eli@stream.place
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Atp] atmoq: ATProto over Media over QUIC Transport
List-Id: Authenticated Transfer <atp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/atp/byiE6I59R66dfxO74chBp54ctfo>
List-Archive: <https://mailarchive.ietf.org/arch/browse/atp>
List-Help: <mailto:atp-request@ietf.org?subject=help>
List-Owner: <mailto:atp-owner@ietf.org>
List-Post: <mailto:atp@ietf.org>
List-Subscribe: <mailto:atp-join@ietf.org>
List-Unsubscribe: <mailto:atp-leave@ietf.org>
Hi all, My name is Eli Mallon, I'm the creator of Streamplace <https://stream.place/>; livestreaming and VOD on the AT Protocol. (If Bluesky is working on Twitter on atproto, we're working on Twitch and YouTube.) Very excited for our first WG meeting next week! In March, Suhas Nandakumar and Cullen Fluffy Jennings submitted draft-nandakumar-atproto-atom-00 <https://datatracker.ietf.org/doc/draft-nandakumar-atproto-atom/>: a spec to relay atproto data over Media over QUIC Transport (and thus WebTransport) instead of the current implementations that use WebSockets. Streamplace's work sits right at the intersection of media and atproto, so this felt perfectly targeted at us! The idea is exciting for a few reasons. On a basic level, MOQT is a lower-latency and higher-throughput protocol than WebSocket, providing us a solid protocol-level option when we get to the point where sending the entire global atproto firehose over a single WebSocket becomes unrealistic. But to me the headline is this: atproto relaying over MOQT means atproto firehose data could be broadcast over generic MoQ relays, piggybacking on the substantial effort that is going into the next generation of low-latency global media distribution. Currently, fan-out for atproto relays is handled with services like Bluesky's rainbow <https://github.com/bluesky-social/indigo/tree/main/cmd/rainbow>; custom atproto-aware software purpose-built for fanout. A MOQT implementation would instead allow us to instead use off-the-shelf MoQ relays like the big public one that Cloudflare operates <https://developers.cloudflare.com/moq/> or the global networks being built out by Cisco and Akamai. We've recently completed an initial implementation of the spec called atmoq <https://github.com/streamplace/atmoq>, which includes a Rust server (that sits in front of an upstream WebSocket relay) and Rust, Go, and TypeScript client implementations. The implementation diverges from the spec in some ways — not everything in the atproto universe *quite* cleanly mapped onto MOQT primitives — but overall the system works quite well. My presentation next week will go into detail, but some brief highlights: * Tested and working with the public atproto relays at Cloudflare and moq.dev. * In addition to the "everything" track that provides all the data, each separate user is made available as a their own track, facilitating use cases where you only care about syncing a small number of users. * Tested and working in-browser. We're operating a public atmoq relay at streamplace.network, please feel free to try it out. Happy to answer any questions; otherwise looking forward to presenting next week. Thank you! Eli