Workers VPC - TCP connections via connect() over VPC Networks
VPC Network bindings now support the connect() Socket API for raw TCP connections to private destinations, in addition to HTTP traffic via fetch().
This means Workers can now open TCP sockets to any private service reachable through the bound Cloudflare Tunnel, Cloudflare Mesh, or Cloudflare WAN on-ramp — Redis, Memcached, MQTT, custom binary protocols, or any other TCP-based service.
-
wrangler.jsonc
<div><div><span>{</span></div></div><div><div><span> </span><span>"</span><span>$schema</span><span>"</span><span>:</span><span> </span><span>"./node_modules/wrangler/config-schema.json"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>vpc_networks</span><span>"</span><span>:</span><span> </span><span>[</span></div></div><div><div><span> </span><span>{</span></div></div><div><div><span> </span><span>"</span><span>binding</span><span>"</span><span>:</span><span> </span><span>"PRIVATE_NETWORK"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>network_id</span><span>"</span><span>:</span><span> </span><span>"cf1:network"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>remote</span><span>"</span><span>:</span><span> </span><span>true</span></div></div><div><div><span> </span><span>}</span></div></div><div><div><span> </span><span>]</span></div></div><div><div><span>}</span></div></div> -
wrangler.toml
<div><div><span>[[</span><span>vpc_networks</span><span>]]</span></div></div><div><div><span>binding</span><span> </span><span>=</span><span> </span><span>"PRIVATE_NETWORK"</span></div></div><div><div><span>network_id</span><span> </span><span>=</span><span> </span><span>"cf1:network"</span></div></div><div><div><span>remote</span><span> </span><span>=</span><span> </span><span>true</span></div></div>
At runtime, use connect() on the binding to open a TCP socket to a private destination:
<div><div><span>export</span><span> </span><span>default</span><span> </span><span>{</span></div></div><div><div><span> </span><span>async</span><span> </span><span>fetch</span><span>(</span><span>request</span><span>:</span><span> </span><span>Request</span><span>,</span><span> </span><span>env</span><span>:</span><span> </span><span>Env</span><span>)</span><span> </span><span>{</span></div></div><div><div><span> </span><span>// Open a TCP connection to a private Redis instance</span></div></div><div><div><span> </span><span>const</span><span> </span><span>socket</span><span> </span><span>=</span><span> </span><span>await</span><span> </span><span>env</span><span>.</span><span>PRIVATE_NETWORK</span><span>.</span><span>connect</span><span>(</span><span>"10.0.1.50:6379"</span><span>)</span><span>;</span></div></div><div><div>
</div></div><div><div><span> </span><span>// Write a Redis PING command</span></div></div><div><div><span> </span><span>const</span><span> </span><span>writer</span><span> </span><span>=</span><span> </span><span>socket</span><span>.</span><span>writable</span><span>.</span><span>getWriter</span><span>()</span><span>;</span></div></div><div><div><span> </span><span>await</span><span> </span><span>writer</span><span>.</span><span>write</span><span>(</span><span>new</span><span> </span><span>TextEncoder</span><span>()</span><span>.</span><span>encode</span><span>(</span><span>"PING</span><span>\r\n</span><span>"</span><span>))</span><span>;</span></div></div><div><div><span> </span><span>await</span><span> </span><span>writer</span><span>.</span><span>close</span><span>()</span><span>;</span></div></div><div><div>
</div></div><div><div><span> </span><span>return</span><span> </span><span>new</span><span> </span><span>Response</span><span>(</span><span>socket</span><span>.</span><span>readable</span><span>)</span><span>;</span></div></div><div><div><span> </span><span>},</span></div></div><div><div><span>};</span></div></div>
Note
connect() over VPC Networks currently supports plaintext TCP only.
For more details, refer to VPC Networks and the Workers Binding API.
Fetched June 19, 2026



