OpenHands / OpenHands/software-agent-sdk

Streaming: reproductions and baselines (blocks the byte-budget work)

Open
#4,679 1 comment 0 reactions 1 assignee View on GitHub

@VascoSch92 is already working on this.

Since Aug 27, 2026.

enhancement ready-for-dev testing
Dominant language
Python
Stars
1.1k
Forks
539
Avg merge
1d 19h
Merged PRs (30d)
137

Description

Part of #4671 (step 0). Blocks step 4.

Why this exists as its own issue

The streaming design proposes bounding each connection by pending bytes, with the cap derived as a multiple of the largest legal frame. That derivation is currently in form onlythere is no measured frame-size distribution, and no throughput claim in the design has been measured. Filing this separately is what stops the byte budget from being built on a guessed number.

Desired Behavior

Harnesses

  • A delta-flood stress test (high token rate, slow/wedged consumer).
  • A retry-injecting fake LLM, so retry × identity behaviour is testable without a provider.

Measurements

  • Lock contention at step boundaries.
  • EventLog.append cost against conversation length.
  • Fan-out cost against connection count.
  • Frame-size distribution — the input the byte budget is derived from.

Note

pi resyncs by re-sending the entire transcript against a 16 MiB frame cap. Our tool outputs won't survive that, which is why the design keeps paged replay rather than adopting pi's snapshot wholesale — but the frame-size numbers are what turn that from a hunch into a decision.

Acceptance Criteria

  • A delta-flood stress harness exists (high token rate against a slow/wedged consumer).
  • A retry-injecting fake LLM exists, so retry × identity behaviour is testable without a provider.
  • Lock contention at step boundaries is measured and recorded.
  • EventLog.append cost is measured against conversation length.
  • Fan-out cost is measured against connection count.
  • The frame-size distribution is measured and published, so the step-4 byte budget cites a number rather than a placeholder.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.