OpenHands / OpenHands/software-agent-sdk

Move Canvas conversation stream transport into the TypeScript SDK

Open
#5,012 2 comments 0 reactions 1 assignee View on GitHub

@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

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.