Roadmap priority: B13
Summary
Stream partial responses as they generate, rather than waiting for the complete reply.
Why it matters
Long generations currently block with no feedback — the NetLogo UI freezes for the full duration of the call. Streaming gives progressive output, which matters for demos with visible agent "speech" and for any single call producing a long passage.
Currently all providers explicitly disable it (e.g. OllamaProvider.scala:50 sends "stream": false).
What needs to be done
- Decide whether this is even a good fit for NetLogo's execution model. A reporter must return a value; streaming implies incremental delivery, which has no natural NetLogo idiom.
- Plausible shapes: a callback command run per chunk, a mutable buffer the modeler polls, or streaming only into a display widget while the reporter still returns the final string.
- SSE parsing per provider — all four use different chunk formats.
- Interaction with
historyLock — partial content must not be committed to history until complete.
- Interaction with thinking models, where reasoning and answer stream as distinct block types.
Open questions
- Is there a real modeling use case, or is this mainly UI polish? Worth deciding before building, since the NetLogo-side design is the hard part rather than the HTTP side.
- If the only benefit is a responsive UI during long calls, a progress indicator may deliver most of the value for far less work.
Roadmap priority: B13
Summary
Stream partial responses as they generate, rather than waiting for the complete reply.
Why it matters
Long generations currently block with no feedback — the NetLogo UI freezes for the full duration of the call. Streaming gives progressive output, which matters for demos with visible agent "speech" and for any single call producing a long passage.
Currently all providers explicitly disable it (e.g.
OllamaProvider.scala:50sends"stream": false).What needs to be done
historyLock— partial content must not be committed to history until complete.Open questions