OpenHands / OpenHands/software-agent-sdk
Move Canvas conversation stream transport into the TypeScript SDK
Open
@neubig is already working on this.
Since Sep 14, 2026.
architecture
canvas-extensions
enhancement
ready-for-dev
security
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 539
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 137
Description
Desired Behavior
Canvas still implements the Agent Server conversation WebSocket transport, including authentication, reconnects, and handshake timeouts. That transport belongs in the SDK TypeScript client so local and Docker conversations use the same protocol implementation.
Status: ready-for-dev
Acceptance Criteria
- Export a browser-compatible conversation event stream client from the secondary TypeScript clients entrypoint.
- Own first-frame authentication (no key in the URL), replay query parameters, bounded reconnect backoff, handshake timeout, send, and cleanup in the SDK.
- Preserve Canvas lifecycle callbacks and prevent replaced sockets or cancelled reconnect timers from changing the active connection.
- Cover authentication ordering, reconnection/cancellation, stale events, and timeout behavior with focused tests; verify against the isolated Agent Server.
- Document the API and migrate Canvas to consume it in a separate PR.
Contributor guide
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.