Diagnose gRPC connection issues between the Bindu core and a language SDK. Use when an SDK fails to register, HandleMessages calls time out, "connection refused" on :3774, heartbeats stop arriving, or the core logs "agent silently died".
71
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
The Bindu core (Python) runs a gRPC server on port 3774 that SDKs connect to via RegisterAgent and Heartbeat. After registration, the core calls back into the SDK's own gRPC server (ephemeral port) via HandleMessages. Most connection bugs are in that handshake.
See docs/grpc/overview.md for the full message flow and docs/grpc/limitations.md for known unimplemented behaviors.
proto/, bindu/grpc/, or sdks/typescript/src/.bindu/grpc/generated/ or sdks/typescript/src/generated/ to "make the error go away". Proto drift is the underlying problem — fix it with the regenerate-grpc-stubs skill.grpcurl.lsof -ti:3773 -ti:3774
ps aux | grep -E '(bindu|node.*agent|python.*bindu)' | grep -v grep3773 missing → HTTP/A2A server never started. Check for port clash (lsof -i:3773).3774 missing → core started without --grpc. Restart with bindu serve --grpc.Filter for the [bindu-core] prefix. Meaningful signals:
| Log line | Means |
|---|---|
grpc server listening on 0.0.0.0:3774 | Core gRPC up, accepting connections |
agent registered: <did> | SDK successfully called RegisterAgent |
heartbeat received from <did> | SDK is alive and connected |
agent silently died: <did> | No heartbeat in >90s; registration pruned |
failed to deserialize HandleMessages response | Proto drift between core and SDK |
connection refused dialing <host>:<port> | Core can't reach back into SDK's gRPC server |
# List services — confirms the core is accepting connections
grpcurl -plaintext -proto proto/agent_handler.proto localhost:3774 list
# Synthetic heartbeat — confirms the service is bound
grpcurl -plaintext -proto proto/agent_handler.proto \
-d '{"agent_id":"test","timestamp":1234567890}' \
localhost:3774 bindu.grpc.BinduService.Heartbeatlist fails with connection refused → server not bound (check step 1).list works but Heartbeat errors → proto mismatch or handler crash. Read the error body carefully.# Any proto changes without matching generated-tree changes?
git log --oneline -10 -- proto/
git log --oneline -10 -- bindu/grpc/generated/ sdks/typescript/src/generated/If the proto moved but the generated trees didn't — stubs are stale. Run the regenerate-grpc-stubs skill.
SDKs must send Heartbeat every 30 seconds after RegisterAgent. TypeScript SDK heartbeat logic lives in sdks/typescript/src/client.ts.
Common bugs:
setInterval call).Before filing a bug, confirm the behavior isn't documented as known-missing in docs/grpc/limitations.md. Things currently not implemented:
HandleMessagesStream)GrpcAgentClient--grpc and expect SDKs to work. There is no fallback path.7b1ff75
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.