livepeer / livepeer/livepeer-python-gateway
Add SSE/chunked streaming support to the SDK
@rickstaa is already working on this.
Since Jun 15, 2026.
- Dominant language
- Python
- Stars
- 1
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Description
## What
Add SSE / chunked streaming support to `call_runner` in the Python SDK, so callers can consume live runner responses incrementally instead of waiting for the full body.
- `http.open_stream()` — opens an HTTP request and hands back the live `(session, response)` without reading the body. Caller owns both. No total timeout (streams run indefinitely); only connect/first-byte are bounded. Raises `LivepeerHTTPError` on `>= 400`.
- `LiveRunnerCallStream` — returned by `call_runner(..., stream=True)`. Owns the aiohttp session/response, is an async context manager (or call `aclose()`), and exposes the body via `aiter_bytes()` / `aiter_lines()` plus `status`/`headers`/`content_type`/`runner`.
- Payment — streaming reuses the existing per-call 402 challenge/retry path; `open_stream` raises before any body, so the payment retry catches it exactly like the non-streaming path.
- Export `LiveRunnerCallStream` from the package root.
## Why
Live runner apps that stream output (token-by-token LLM responses, progressive media) need an incremental response path in the SDK, without standing up the trickle/lv2v continuous-payment flow. This SSE path is one job, one upfront payment.
## Implementation
Implemented in livepeer/livepeer-python-gateway#25 (builds on the live-runner work in #20).
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.