
TL;DR
Cloudflare's JavaScript-native RPC on Workers now works across languages: TypeScript Workers can call methods on Python Workers and vice versa, with live objects, functions, and streams crossing the boundary. Pyodide's FFI handles type conversion, so no schemas, no protobuf, and no serialization code are needed. Available now.
Two years ago Cloudflare built an RPC system into Workers that made calling another Worker's methods feel like a local function call: live objects, functions, and streams crossing process boundaries with no schemas and no dependencies. It was called "JavaScript-native RPC" for a reason, it only spoke JavaScript. On August 3, as part of Agents Week, Cloudflare removed that constraint. Workers RPC now works across Python and JavaScript, in both directions, with no protocol definitions and no serialization code.
The change is a capability expansion of the existing RPC system, built on Cap'n Proto, that Workers have had since 2024. You configure a Service binding, and a TypeScript Worker can call a method on a Python Worker as if it were a local module:
// TypeScript worker
import { WorkerEntrypoint } from "cloudflare:workers";
export class RpcService extends WorkerEntrypoint {
async add(a: number, b: number): Promise<number> {
return a + b;
}
}
# Python worker
from workers import Response, WorkerEntrypoint
class Default(WorkerEntrypoint):
async def fetch(self, request):
rpc = self.env.RPC
result = await rpc.add(42, 144)
return Response.json({"result": result})
The only wiring is the Service binding in wrangler.jsonc. No protobuf files, no code generation, no JSON envelopes.
What can cross the boundary is more interesting than plain numbers. Structured-cloneable values convert to the appropriate native type on the other side (a JS Date becomes a Python datetime). You can pass functions into a Python Worker and call them back, which makes cross-language callbacks and streams work without any glue. Python keyword arguments map onto JavaScript's object-style parameters, so a JS method like get(key, { type: "text" }) can be called from Python as get("myKey", type="text").
The type translation is the mechanical heart of the feature, and it has two layers. Pyodide, the CPython-to-WebAssembly interpreter that has powered Python Workers since launch, already ships a foreign function interface that maps int and float to Number, bool to Boolean, dict to Object, and list to Array. Where direct translation is impossible, Pyodide creates a proxy object that forwards attribute access and method calls across the boundary, which is how passing a Python function as a JavaScript callback works.
The second layer is a thin conversion package, workers-runtime-sdk, which handles Cloudflare's own Web API objects: Request, Response, Blob, and File. Without it, Pyodide treats those as opaque JavaScript proxies, leaking implementation details into Python code. With it, they become idiomatic Python objects. The package is included by default when you deploy with uv run pywrangler deploy, so importing from the workers namespace already uses it.
From the archive
Aug 3, 2026 • 7 min read
Aug 3, 2026 • 8 min read
Aug 3, 2026 • 10 min read
Aug 3, 2026 • 8 min read
The clearest framing is in the announcement itself: one coding agent can write a Python Worker and another can write a JavaScript Worker, and the runtime handles the rest. That matters more than it sounds, because the barrier this removes is not just boilerplate, it is the interface contract. Teams routinely split services by language to reuse a library: a Python ecosystem like Pygments for syntax highlighting, or a JS ecosystem like a frontend framework. The standard answer is to build an HTTP API or a protobuf service around the one library, and then maintain that contract forever. RPC across the boundary removes the contract from the critical path: the method signature is the interface, and the runtime translates.
Three things stand out:
Same-thread execution changes the cost model. RPC between Workers usually does not cross a network. The other Worker typically runs in the same thread as the caller, and Cloudflare claims near-zero overhead compared with in-process code. That is a different category from HTTP calls between services, and it is why the "no schemas" pattern stays fast enough to be the default rather than an optimization.
The type-bridging is the real product. Languages disagree about the most basic shapes: JavaScript passes object arguments, Python passes keyword arguments. Cloudflare picked the mapping (keyword arguments to object fields, dates to datetimes, functions to callable proxies) so neither side writes adapter code. That is the difference between "RPC that exists" and "RPC that feels native," and it is the hard part to get right.
It is the polyglot layer for agent-built systems. The Agents Week context is deliberate. Agent-generated services increasingly arrive in different languages because the generating model favors different toolchains per task. A platform that lets those services call each other without a human-written contract removes a whole class of integration work from agent workflows.
This is a general-availability feature, not a beta, but it inherits the platform's real constraints. Python Workers run CPython compiled to WebAssembly through Pyodide, so performance-sensitive Python code is still bounded by the WASM interpreter. Pyodide's FFI proxy objects work, but deep object graphs crossing the boundary repeatedly will cost more than a native call. And while the RPC system is open source in workerd, you get this cross-language path in the Workers runtime, not in a standalone library you can drop into any FastAPI or Express deployment.
The same week, Cloudflare also shipped inbound TCP and gRPC for Workers, which pairs naturally with this: RPC covers internal service-to-service calls, gRPC covers client-facing APIs, and both now work with Python. The agent angle connects to the multi-agent orchestration space, where teams are building heterogeneous agent fleets that need cheap, typed communication between components. And the "open weights everywhere" story from today, with Qwen 3.8 Max promising the first open-weights Max-class release, is another push toward mixed ecosystems where polyglot service boundaries are the norm rather than the exception.
Read next
Cloudflare's Agents Week opens with @cloudflare/computer, an open-source agent runtime where an SQLite-backed workspace gives every agent a shared filesystem and lets the model pick between fast isolates and full Linux containers per task. The bet: containers for under 10% of agent work.
7 min readCloudflare announced inbound TCP connections and gRPC support for Workers and Containers as part of Agents Week: a connect() handler on Spectrum, full-duplex gRPC from Containers, and automatic gRPC to gRPC-web translation so Workers can serve gRPC APIs without a container. Private beta today.
6 min readHow to use Claude Code's Task tool, custom sub-agents, and worktrees to run parallel development workflows. Real prompt examples, agent configurations, and workflow patterns from daily use.
11 min readTechnical content at the intersection of AI and development. Building with AI agents, Claude Code, and modern dev tools - then showing you exactly how it works.
Open-source cloud sandboxes for AI agents. Isolated environments that start in under 200ms, run code in Python, JavaScri...
View ToolWorkflow automation platform with native AI agent building. Visual editor plus JavaScript/Python code nodes, 500+ integr...
View ToolLightweight Python framework for multi-agent systems. Agent handoffs, tool use, guardrails, tracing. Successor to the ex...
View ToolMulti-agent orchestration framework built on the OpenAI Agents SDK. Define agent roles, typed tools, and directional com...
View ToolSpawn isolated workers with independent context windows.
Claude CodeThe primary command-line entry point for Claude Code sessions.
Claude CodeReal-time prompt loop with history, completions, and multiline input.
Claude Code
Check out Trae here! https://tinyurl.com/2f8rw4vm In this video, we dive into @Trae_ai a newly launched AI IDE packed with innovative features. I provide a comprehensive demonstration...

No-Code AI Automation with VectorShift: Integrations, Pipelines, and Chatbots In this video, I introduce VectorShift, a no-code AI automation platform that enables you to create AI solutions...

In this video, I'll introduce you to VectorShift, a powerful no-code AI automation platform, and show you how to use its functionalities for various use cases, including agents, chatbots, and...

Cloudflare's Agents Week opens with @cloudflare/computer, an open-source agent runtime where an SQLite-backed workspace...

Cloudflare announced inbound TCP connections and gRPC support for Workers and Containers as part of Agents Week: a conne...

How to use Claude Code's Task tool, custom sub-agents, and worktrees to run parallel development workflows. Real prompt...

Durable execution lands on Vercel. What it means for agents, long-running flows, and indie dev stacks - with code, gotch...

Alibaba released Qwen 3.8 Max on August 3, 2026 - a 2.4T-parameter MoE with 95B active per token, a 1M context window, a...

Octane is a new MIT-licensed UI framework from Inferno's creator that compiles React-style hooks, Suspense, and actions...

New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.