The Problem
You built a great agent in TypeScript. It uses the OpenAI SDK, calls GPT-4o, handles multi-turn conversations. But to make it a real microservice — with identity, authentication, payments, task scheduling, and an interoperable protocol — you’d need to rewrite all of that infrastructure from scratch. In TypeScript. Again. That’s months of work. And then someone wants a Kotlin agent. Start over.The Solution
Bindu’s gRPC adapter lets any language callbindufy() and get the exact same microservice a Python agent gets. DID identity, A2A protocol, x402 payments, OAuth2 auth, Redis scheduling, PostgreSQL storage — all of it. No reimplementation.
Python (direct, in-process):
bindufy(), write a handler, and get a microservice.
How It Actually Works
When a TypeScript developer callsbindufy(), three things happen:
1. The SDK starts the Bindu core as a child process
The Python core handles all the infrastructure — DID, auth, x402, scheduling, storage, the HTTP server. The TypeScript developer doesn’t install Python manually; the SDK detects it and spawns it.2. The SDK registers the agent over gRPC
It sends the config (author, name, skills, payment settings) to the core. The core runs the full bindufy logic — the same code path a Python agent takes — and starts an A2A HTTP server.3. When messages arrive, the core calls the SDK’s handler over gRPC
A client sends an A2A message to:3773. The core’s worker picks it up and calls manifest.run(messages). For a gRPC agent, that’s a HandleMessages call to the TypeScript process. The handler runs, returns a response, and the core sends it back to the client.
Real Examples
TypeScript + OpenAI
GPT-4o agent with one
bindufy() callTypeScript + LangChain
LangChain.js research assistant
Kotlin + OpenAI
Kotlin agent with the same pattern
Quick Test
Start the gRPC server and verify it’s alive:Ports
| Port | Protocol | Purpose |
|---|---|---|
:3773 | HTTP | A2A protocol (clients connect here) |
:3774 | gRPC | Agent registration (SDKs connect here) |
:XXXXX | gRPC | Handler execution (core calls SDKs here, dynamic port) |