ReleaseCloudflare (Workers AI)Cloudflare (Workers AI)published Sep 11, 2026seen 7h

cloudflare/computer @cloudflare/computer@0.3.0

cloudflare/computer

Open original ↗

Captured source

source ↗
published Sep 11, 2026seen 7hcaptured 7hhttp 200method plain

@cloudflare/computer@0.3.0

Repository: cloudflare/computer

Tag: @cloudflare/computer@0.3.0

Published: 2026-09-11T16:38:11Z

Prerelease: no

Release notes:

Minor Changes

  • #110 `c85a255` Thanks @aron-cf! - The container's HTTP surface now requires a bearer token. The host generates a secret, passes it to the container as RPC_CLIENT_SECRET at launch, and sends it on /connect. Readiness at /health stays open, and leaving the variable unset disables the checks. Before opening a session the host checks that the container refuses an unauthenticated request and fails the connect if it does not, so a container or image predating this has to be recycled. The container's dial-back to the host carries the same secret, and the host refuses an upgrade that does not present it.
  • #108 `3074d90` Thanks @aron-cf! - The /connect caller now provides both API & healthcheck endpoints. The container no longer builds either path itself, so a host is free to serve them wherever it likes.
  • #110 `199fc17` Thanks @aron-cf! - IWorkspaceContainerAPI.start() and restart() now take a single ContainerLaunchSpec of { env, enableInternet } instead of two arguments, and return which of launched, adopted or relaunched happened. Each launch records its spec, and a container found already running is relaunched unless it matches, because neither the environment nor the internet flag can be changed on a live container. A container started outside this API has no record and is relaunched rather than trusted. setInactivityTimeout() joins the interface so a caller that pre-starts containers, such as a warm pool, does not need to reach past it.
  • #110 `c85a255` Thanks @aron-cf! - A command run through the shell no longer inherits the container's whole environment. It receives PATH, HOME, TMPDIR, TZ, LANG, TERM, the LC* family, and any variable prefixed COMPUTER_VAR*, which arrives with the prefix stripped so COMPUTER_VAR_NODE_ENV becomes NODE_ENV. A workspace that relied on some other inherited variable needs the prefix.
  • #108 `3074d90` Thanks @aron-cf! - The UPSTREAM_URL environment variable has been removed along with the container's own sync loop. Syncing is driven by whichever peer holds the other end of the Cap'n Web session.
  • #108 `3074d90` Thanks @aron-cf! - The Cap'n Web /ws endpoint has been renamed to /api at both ends of the connection. A durable object that routes the container's outbound upgrade must match /api in its own fetch handler. Support for the Cap'n Web HTTP batch transport has been removed, so /api carries a websocket only.
  • #138 `25c603a` Thanks @aron-cf! - Workspace.pull() and Workspace.push() are now async iterables that commit one block of changes per iteration. This allows a caller to implement a deferred post-exec sync across several invocations. See [./docs/02_sync_protocol.md](./docs/02_sync_protocol.md) for details.
  • #109 `e2dd6d8` Thanks @aron-cf! - Make the artifacts session id optional: createArtifact(binding) now returns a client over the whole namespace rather than requiring a session to scope by. See [./docs/15_artifacts_interface.md](./docs/15_artifacts_interface.md) for details.

Patch Changes

  • #96 `45fa716` Thanks @agent-think! - Fix issue where the edit tool would rewrite the whole file when oldText doesn't match exactly.
  • #113 `f35f5df` Thanks @aron-cf! - Sync node_modules by default so package manager installs persist across workspace runtimes.