You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hitting this too. For us streaming isn't just unsupported, it corrupts output. Our self-hosted vLLM (Gemma 4 31B) backend has a streaming-only tool-call parser bug that duplicates characters in large tool-call arguments (file contents in write/edit): <html → <<htmlhtml. The identical request with stream:false is clean. So every edit OpenCode makes comes back garbled and it loops re-writing the file.
Setting options.streaming: false in the provider config has no effect (v1.15.13). It looks like the field isn't consumed at runtime (related: #5674, and the buildParams() hardcoded stream:true noted in #24815). Our only workaround is a local proxy that forces stream:false upstream and re-serialises the response as SSE.
Requesting a respected per-provider/per-model option to disable streaming, e.g.:
FYI: For those of you having problem using Gemma 4 31B on vLLM with OpenCode. Updating vLLM to 0.24.0 and using the vLLM example template solved all of our issues.
FYI: For those of you having problem using Gemma 4 31B on vLLM with OpenCode. Updating vLLM to 0.24.0 and using the vLLM example template solved all of our issues.
Any clue how to make DeepSeek v4 Flash 0731 work with streaming? It's the same issue there: corrupted tool calls. Both on vLLM and sglang (used latest dev nightly builds).
FYI: For those of you having problem using Gemma 4 31B on vLLM with OpenCode. Updating vLLM to 0.24.0 and using the vLLM example template solved all of our issues.
Any clue how to make DeepSeek v4 Flash 0731 work with streaming? It's the same issue there: corrupted tool calls. Both on vLLM and sglang (used latest dev nightly builds).
Haven't been able to test, as we're not allowed to deploy Chinese models at work, unfortunately...
Does it generate fake / empty streaming tokens in response? Opencode has some kind of built-in timeout (around 300 seconds, I think). If it doesn't receive at least one streaming response token within that limit, it will consider API endpoint timed out and retry the request. And I often encounter situations when it takes more than 300 seconds to generate the full non-streaming response.
Here is what Google AI told me but I'm not sure if it's true:
While LiteLLM does have an internal "fake streaming" mechanism (MockResponsesAPIStreamingIterator) that translates a stream=true request into a non-streaming upstream call, it waits for the complete upstream non-streaming response to finish before it splits that response up into chunks and sends them back to your consumer. It does not proactively emit periodic "keep-alive" or empty filler tokens to the client while the upstream endpoint is still thinking.
To prevent opencode from timing out while waiting for a slow non-streaming backend, you will need to intercept the request and handle the keeping-alive yourself.
Activity
McAvity commentedon Aug 8, 2025
+1, because you now need to be verified organization to use steaming with gpt5, so being able to turn off streaming would be great.
harkairt commentedon Aug 10, 2025
Facing the same issue
archodev commentedon Aug 17, 2025
+1
jordanbaindev commentedon Sep 8, 2025
+1
LeonMusCoden commentedon Sep 15, 2025
+1
JeongJuhyeon commentedon Sep 25, 2025
Is this something an outside contribution could solve or does it need a lot of work?
trufae commentedon Oct 16, 2025
im also interested in testing non-streaming mode for opencode, that may save some network, making debugging of problems in the protocol easier too.
HansuHessu commentedon Oct 25, 2025
+1
dayeguilaiye commentedon Oct 27, 2025
+1
jayteaftw commentedon Nov 7, 2025
+1
eleqtrizit commentedon Jan 17, 2026
+1
csawtelle commentedon Jan 23, 2026
+1
smetay commentedon Feb 2, 2026
+1
RawthiL commentedon Feb 3, 2026
+1
10 remaining items
Snowy117 commentedon Jun 3, 2026
+1
trufae commentedon Jun 3, 2026
+1
sebdanielsson commentedon Jun 8, 2026
Hitting this too. For us streaming isn't just unsupported, it corrupts output. Our self-hosted vLLM (Gemma 4 31B) backend has a streaming-only tool-call parser bug that duplicates characters in large tool-call arguments (file contents in write/edit):
<html→<<htmlhtml. The identical request withstream:falseis clean. So every edit OpenCode makes comes back garbled and it loops re-writing the file.Setting
options.streaming: falsein the provider config has no effect (v1.15.13). It looks like the field isn't consumed at runtime (related: #5674, and thebuildParams()hardcodedstream:truenoted in #24815). Our only workaround is a local proxy that forcesstream:falseupstream and re-serialises the response as SSE.Requesting a respected per-provider/per-model option to disable streaming, e.g.:
so it actually sends
stream:falseto the provider. This unblocks both providers that can't stream and providers whose streaming output is broken.feat(opencode): respect provider/model streaming:false to disable res…
sebdanielsson commentedon Jul 3, 2026
FYI: For those of you having problem using Gemma 4 31B on vLLM with OpenCode. Updating vLLM to 0.24.0 and using the vLLM example template solved all of our issues.
izogfif commentedon Aug 9, 2026
Any clue how to make DeepSeek v4 Flash 0731 work with streaming? It's the same issue there: corrupted tool calls. Both on vLLM and sglang (used latest dev nightly builds).
sebdanielsson commentedon Aug 10, 2026
Haven't been able to test, as we're not allowed to deploy Chinese models at work, unfortunately...
junwha commentedon Aug 21, 2026
@izogfif Use a litellm proxy
izogfif commentedon Aug 28, 2026
@junwha
Does it generate fake / empty streaming tokens in response? Opencode has some kind of built-in timeout (around 300 seconds, I think). If it doesn't receive at least one streaming response token within that limit, it will consider API endpoint timed out and retry the request. And I often encounter situations when it takes more than 300 seconds to generate the full non-streaming response.
Here is what Google AI told me but I'm not sure if it's true:
crashr commentedon Aug 28, 2026
Reminder: https://github.com/crashr/llama-stream could be a workaround.
StroepWafel commentedon Sep 24, 2026
+1