Repository navigation
open-compute 0.2.1
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.
ocdnow owns Caddy as a verified embedded child, projects complete configuration snapshots, serves Worker wildcard HTTPS origins, handles delegated DNS-01 challenges, exposes boundedocd caddystatus/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
.localhostauthority 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:
1c7b89bea323Add private dynamic worker binding grants
SDK
- Package:
@open-compute/sdk@0.2.1, published to the npm registry; install withnpm 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.updateupload now accepts the generatedworker_loaderbinding type and serializes the pinned multipart metadata shape without a local adapter. - Pairing: only an
ocdand SDK with the same stableX.Y.Zare qualified together.
Fixed
- Fixed #99: a first Worker upload through
@open-compute/sdkcan type and send aworker_loaderbinding. - 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
DataCloneErrorbehavior. ocd caddy fmtformats 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
ocdand 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
PATHor download runtime components.
Install or upgrade
An existing receipt-managed installation can upgrade directly:
ocd upgrade 0.2.1For 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 --yesVerify 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.devcontrol 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.
Thanks
No external issue reports were closed in this release.