AgentForge
A typed multi-agent coordinator that routes tool calls by capability, retries with fallback agents, and streams live pipeline state over SSE.
The gap
Most agent demos run a single loop in one process. Real workflows need specialists — a planner, a researcher, a coder, a verifier — with different tools, different failure modes, and no shared protocol. When one agent stalls or returns garbage, the whole run dies silently. There is no typed tool registry, no dead-letter path, and no way to watch the graph as it executes.
What I built
AgentForge is an event-driven orchestrator: a Golang control plane owns agent lifecycle and routing; Python workers own LLM inference. Every agent registers a JSON tool schema at boot. The coordinator matches outgoing tool calls to the best capable agent, retries with a declared fallback on failure, and pushes status events into Redis so a Next.js dashboard can stream the run live.
How it fits together
Technical choices
- ●Go for the coordinator — concurrency and long-lived gRPC streams without GC stalls during fan-out.
- ●Capability registry over hard-coded agent graphs — new workers can join without redeploying the control plane.
- ●SSE for the UI instead of WebSockets — simpler auth and enough for status telemetry.
System features
- Capability-matched routing
Tool calls resolve to agents by declared schema, not by brittle if/else chains.
- Fallback & dead-letter paths
Failed workers hand off to a backup agent; poison messages land in a DLQ for inspection.
- Live run graph
Dashboard subscribes to SSE and renders each agent node as the pipeline progresses.
- Typed tool contracts
Every tool is a versioned JSON schema — invalid args never reach the model.