Skip to content

open-compute 0.2.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 13:07
· 240 commits to main since this release
Immutable release. Only release title and notes can be modified.
ea61346

0.2.1 completes native binding forwarding for Dynamic Workers, fixes first-upload SDK typing and same-name R2 recreation, and adds the managed single-domain public gateway. It is for self-hosted operators who need the new Worker Loader behavior or want one public HTTPS domain while keeping ocd as the sole application authority.

What's new

  • Managed single-domain gateway. ocd now owns Caddy as a verified embedded child, projects complete configuration snapshots, serves Worker wildcard HTTPS origins, handles delegated DNS-01 challenges, exposes bounded ocd caddy status/validate/reload tools, and recovers the last confirmed snapshot after restart. The Docker qualification environment exercises startup, reload, snapshot recovery, and restart.
  • Dynamic Worker binding forwarding. Parent Workers can explicitly grant selected private native bindings to Dynamic Workers. Grants use the fork-owned Loader boundary, are immutable per deployment, and are revoked with their owner without broadening the standard structured-clone surface.
  • Dual Worker origins. Local .localhost authority remains available while eligible Workers can also receive a public HTTPS origin under the configured gateway domain. SQLite migration V8 adds the authoritative public-origin state without changing published earlier migrations.

Workerd

The third_party/workerd submodule moved from 40937077470ed7edec082329d3a10e4195b402cb to 1c7b89bea323a39a8511271913820f9fcf39306d. The formal pin is v1.20260918.1-open-compute-i102.1c7b89be. workerd --version still prints workerd 2026-09-18; the unchanged date reflects the same upstream base, while the fork revision adds the private forwarding contract.

Every commit in that submodule range:

  • 1c7b89bea323 Add private dynamic worker binding grants

SDK

  • Package: @open-compute/sdk@0.2.1, published to the npm registry; install with npm install @open-compute/sdk@0.2.1.
  • Pins: official cloudflare@7.1.0, the checked-in Cloudflare OpenAPI lock, and the checked-in Wrangler compatibility fixtures.
  • Surface: the first scripts.update upload now accepts the generated worker_loader binding type and serializes the pinned multipart metadata shape without a local adapter.
  • Pairing: only an ocd and SDK with the same stable X.Y.Z are qualified together.

Fixed

  • Fixed #99: a first Worker upload through @open-compute/sdk can type and send a worker_loader binding.
  • Fixed #100: resolving an R2 binding by name now selects the current Ready bucket after deletion and same-name recreation instead of the old tombstone.
  • Completed #102: Dynamic Workers receive only explicitly granted private bindings; standard Loader values still retain Cloudflare-compatible structured-clone and DataCloneError behavior.
  • ocd caddy fmt formats through stdin and writes the result to stdout, preserving the source file even when the embedded Caddy would otherwise use a nonzero “input differs” status.
  • Gateway Unix sockets now use the bounded instance runtime directory, so long data paths on macOS cannot exceed the platform socket-path limit during startup.

Before you upgrade

  • Stop ocd and take a current snapshot before replacing the binary. Startup transactionally applies control migration V8; all previously published migration bytes remain unchanged.
  • Existing local Worker origins remain authoritative. Public origins are created only when [public_gateway] is configured and the required public DNS and ingress are available.
  • A public gateway host must provide routable TCP 443 and delegated UDP/TCP DNS for the configured challenge listener. Docker qualification proves the packaged local topology but does not substitute for public DNS and reachability checks on the deployment host.
  • The Caddy and workerd pins are embedded and verified. Production startup remains offline and does not search PATH or download runtime components.

Install or upgrade

An existing receipt-managed installation can upgrade directly:

ocd upgrade 0.2.1

For a new user-owned installation, download and review the installer, then pin this release:

curl -fsSL -o install.sh https://raw.githubusercontent.com/elliothux/open-compute/v0.2.1/scripts/install.sh
less install.sh
OPEN_COMPUTE_RELEASE_TAG=v0.2.1 sh install.sh
ocd setup --yes

Verify with ocd --version, ocd config check, ocd doctor, ocd capabilities --json, and, when the gateway is configured, ocd caddy status.

Downloads

Host Asset
macOS on Apple silicon ocd-v0.2.1-darwin-arm64
Linux on ARM64 ocd-v0.2.1-linux-arm64
Linux on x86-64 ocd-v0.2.1-linux-x64

The release also contains release.json and SHA256SUMS. Every executable embeds the formally pinned workerd and Caddy payloads. Windows and Intel macOS remain source-build-only targets.

Security

There are no published security advisories specific to 0.2.1. Dynamic Worker forwarding is grant-based and fail-closed, private values remain outside the standard Loader clone surface, internal gateway sockets remain local and capability-scoped, and Caddy reloads accept only a complete platform-generated configuration after adaptation and validation.

Known limitations

  • Public gateway qualification requires real public TCP 443 plus delegated UDP/TCP DNS; hosts behind non-routable or provider-internal addresses cannot complete public TLS qualification.
  • The gateway targets the documented single-machine deployment profile and does not implement Cloudflare's managed multi-region workers.dev control plane.
  • Dynamic private forwarding is an explicit open-compute extension. It does not claim that native binding objects are structured-cloneable through Cloudflare's standard Worker Loader API.
  • The macOS document parser still has no enforceable hard memory ceiling; concurrency, input/output, CPU, and timeout bounds remain active.
  • Code signing and macOS notarization are not included.

Verification

The release source completed the repository build, Docker gateway qualification, formatting, Clippy, no-default-features, Rust 1.98 checks, metadata, dependency boundaries, 90.01% Rust line coverage, and one complete 53-target workspace Gate against the formally pinned workerd. The tag-triggered workflow independently repeats coverage and the macOS Gate, runs the controlled Linux egress fixture, packages all three targets, verifies isolated single-binary startup and checksums, publishes the paired npm package, and exposes the GitHub Release only after every required job succeeds.

Full changelog

Thanks

No external issue reports were closed in this release.