I think this is what I’ve been waiting for! Live interactions with models are fundamentally asynchronous! This will be great for interactivity.
What a good time for harness design. Just while OpenCode is growing up a bit and focusing on their harness. I’m delighted to see people focusing on good general solid harness design principles.
Someone make an OpenCode API (the best general agent end UI API I know) compatible server for it!
Sucks that I haven’t upgraded my client to V2 yet and I don’t really want to build on an outdated API . ..
For some reason they're comparing their harness running on Astra xhigh to Codex with Astra max?
---
Also worth noting that OpenAI just added support for async tool calling to their harness, which isn't 1:1 with this approach, but is slowly ramping up in being able to provide something similar.
It results in token savings similar in scale to those displayed here by Unreal.
---
My harness has used a slightly fancier version of the approach that Unreal is using since ~Feb, and... it definitely works excellently, but it's also assuredly smoother with Astra and other recent models that are more aware of async tool calling.
Honestly the fact that we're still modeling agent harnesses like chat and strapping them into shell sessions instead of building async actor systems with sandboxed OS functionality access actors is bananas to me. So much easy wins can be had just by building on right abstractions... Hopefully will get enough time to play with this idea soon on my own.
I don't really understand how async tool calls translate to token savings
It says that it removes tokens wasted while a model is waiting on synchronous tool calls. What tokens exactly is Pi using when waiting?
I think a running agent periodically checks if a process it started has finished.
I think this is what I’ve been waiting for! Live interactions with models are fundamentally asynchronous! This will be great for interactivity.
What a good time for harness design. Just while OpenCode is growing up a bit and focusing on their harness. I’m delighted to see people focusing on good general solid harness design principles.
Someone make an OpenCode API (the best general agent end UI API I know) compatible server for it!
Sucks that I haven’t upgraded my client to V2 yet and I don’t really want to build on an outdated API . ..
The headline graph is kind of bizarre.
For some reason they're comparing their harness running on Astra xhigh to Codex with Astra max?
---
Also worth noting that OpenAI just added support for async tool calling to their harness, which isn't 1:1 with this approach, but is slowly ramping up in being able to provide something similar.
A big part of why Codex uses so many tokens is that it basically hot loops on polling tasks it starts for... absolutely no good reason: https://www.reddit.com/r/codex/comments/1wdlp7q/weve_discove...
I fixed it on my fork of Codex too, also back in Jan/Feb – I keep this patch rebased, for anyone who wants it: https://github.com/tekacs/codex/commit/9ffcf8db9078eae43d411...
It results in token savings similar in scale to those displayed here by Unreal.
---
My harness has used a slightly fancier version of the approach that Unreal is using since ~Feb, and... it definitely works excellently, but it's also assuredly smoother with Astra and other recent models that are more aware of async tool calling.
Honestly the fact that we're still modeling agent harnesses like chat and strapping them into shell sessions instead of building async actor systems with sandboxed OS functionality access actors is bananas to me. So much easy wins can be had just by building on right abstractions... Hopefully will get enough time to play with this idea soon on my own.
Sounds like a trademark issue when Epic ships a wildly popular Unreal Engine
But I don't think you can trademark a generic word like Unreal...
Why don't you explain what's different?
Mildly disappointed that this has nothing to do with Unreal Engine, the popular game engine.
omp.sh does this way better by just allowing structural toolcall execution in eval with python/js.