Skip to content

Add a ChatStream-Octane experimental workload - #602

Open
jrmuizel wants to merge 3 commits into
WebKit:mainfrom
jrmuizel:chat-stream-octane
Open

jrmuizel wants to merge 3 commits into
WebKit:mainfrom
jrmuizel:chat-stream-octane

Conversation

@jrmuizel

Copy link
Copy Markdown
Contributor

An LLM chat client in Octane (chat-stream/octane/App.tsrx): a sidebar of conversations, a message list and a composer, with replies streamed a few tokens at a time and rendered as memoized Markdown. It commits like the Octane fixture of the chat-stream benchmark in the Octane repository: event handlers only set state, which the steps commit through window.__benchFlush, and each streamed chunk commits with flushSync.

The corpus, Markdown parser, network stub and stylesheet are in shared/, and the build is in dist/octane.

An LLM chat client in Octane (chat-stream/octane/App.tsrx): a sidebar of
conversations, a message list and a composer, with replies streamed a few
tokens at a time and rendered as memoized Markdown. It commits like the
Octane fixture of the chat-stream benchmark in the Octane repository: event
handlers only set state, which the steps commit through window.__benchFlush,
and each streamed chunk commits with flushSync.

The corpus, Markdown parser, network stub and stylesheet are in shared/, and
the build is in dist/octane.
@netlify

netlify Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for webkit-speedometer-preview ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 76cc0f2
🔍 Latest deploy log https://app.netlify.com/projects/webkit-speedometer-preview/deploys/6af75fee01f9a0f02360d66e
😎 Deploy Preview https://deploy-preview-602--webkit-speedometer-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

StreamReply1, StreamReply2 and StreamReply3 become a single StreamReplies
step that sends the three prompts in turn in the first conversation,
streaming each reply to completion before sending the next.

Also fix the README's reference to chatStreamHelpers, which is named
chatStreamTests.
@camillobruni

camillobruni commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

We have 2 very fast steps on my m4:

ChatStream-Octane
ChatStream-Octane/StreamReplies	5.66	±	0.94 (16.7%)	ms
ChatStream-Octane/SwitchConversations	15.50	±	0.80 (5.1%)	ms
ChatStream-Octane/StreamIntoLongConversation	15.96	±	0.66 (4.1%)	ms
ChatStream-Octane/TypePrompt	4.53	±	0.39 (8.6%)

=> StreamReplies and TypePrompt should probably be bumped by 2x

Build the Markdown views the way a design-system component catalog is
built, as AssistantChat-Octane's catalog is: the app root provides theme,
locale and layout contexts, each message a message context, and each reply
streaming, typography and density contexts. Every block renders through a
memoized chain (MarkdownBlock, the block's own component, Frame, Part), and
each of them, the list items, inline spans and code lines reads the
contexts it depends on. That exercises Octane's context dependency tracking
across long chains of memoized ancestors, where AssistantChat-Octane's
streaming steps spend much of their time.

The streaming cursor's selector moves one level down, into the block frame.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants