Obayemi Oluwafemi
Back to Projects
AI AgentBackendIn development

AgentForge

A typed multi-agent coordinator that routes tool calls by capability, retries with fallback agents, and streams live pipeline state over SSE.

01 / Problem

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.

02 / Solution

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.

03 / Architecture

How it fits together

Control plane (Go) ↔ inference workers (Python) over gRPC. Redis streams + queues with dead-letter handling for poison tool calls. Capability-based routing: tool name + schema hash → agent id. SSE fan-out from the dashboard for live node status (queued / running / failed / done). Explicit circuit breakers: max retries, timeout budgets, and human-in-the-loop pause hooks.
04 / Decisions

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.
05 / Capabilities

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.

06 / Stack

Technologies

GolangPythongRPCRedisNext.jsTypeScript
Inspect the codebaseView on GitHub →