Reference material
Gateway API reference
The machine-readable contract for
/plan, /health, and /.well-known/did.json. Every field, response, and example.gateway/README.md
The operator’s reference: configuration knobs, environment variables, the
/health payload, troubleshooting, and where vendored code came from.planner.md
The planner LLM’s system prompt. If the gateway is doing something you don’t expect, start here.
Seed recipes
The two shipped recipes —
multi-agent-research and payment-required-flow — plus whatever you wrote. Each is a complete example.Hands-on next steps
Run the full test matrix
Run the full test matrix
The Each produces a full SSE log in
gateway_test_fleet example has 13 prebuilt test cases covering edge behaviors (empty question, wrong bearer token on a peer, timeout, ambiguous question, nonexistent skill):examples/gateway_test_fleet/logs/<case>.sse — open one and read it end to end. It’s unusually readable once you know the event types.Write a second recipe
Write a second recipe
The one from the recipes chapter was generic. Try a tenant-specific policy — “always prepend a compliance disclaimer to the final message,” or “for any question about PII, refuse and point at the legal agent.”
Add a new agent
Add a new agent
Copy
examples/joke_agent.py, change the instructions, run it on port 3779, add it to a /plan request. Watch the planner pick it up without any gateway-side config change.Edit the planner's system prompt
Edit the planner's system prompt
Open
gateway/agents/planner.md and tighten or loosen its instructions. Changes take effect on the next plan — no restart needed.Production checklist
If you’re moving this past localhost:Turn on DID signing for every peer.
Use the identity chapter as your walk-through. Unsigned calls are fine on localhost; they’re a vulnerability anywhere else.
Rotate GATEWAY_API_KEY from the dev value to a generated secret.
Distribute via your usual secret-management tool — not
.env.local.Pin the planner model.
Add
model: openrouter/anthropic/claude-sonnet-4.6 (or whichever you want) to gateway/agents/planner.md frontmatter so upgrades are explicit, not implicit.Set max_steps on every /plan request.
A runaway planner that loops 100 times at your expense is a real failure mode. Cap it.
When you’re stuck
Gateway won't boot
Gateway won't boot
Re-read the env var section of
gateway/README.md. Partial DID or Hydra config fails fast with a message naming the missing var.Planner never calls a tool
Planner never calls a tool
The descriptions you gave for
agents[].skills[].description are probably too short or too vague. Anthropic’s docs say tool descriptions are “by far the most important factor in tool performance” — 3–4 sentences on intent, inputs, outputs, and when to use it.Agent returns "User not found"
Agent returns "User not found"
Your
OPENROUTER_API_KEY is invalid or out of credit.event: error with "Invalid Responses API request"
event: error with "Invalid Responses API request"
You’re on an older gateway commit.
git pull.That’s the whole story
You have a gateway, five agents, the ability to add more, the ability to teach patterns via recipes, and the ability to sign outbound calls for production. Everything else in this repo is either reference material for one of those five concepts, or internal implementation detail you don’t need to read until you’re ready to extend the gateway itself.Gateway API reference
Every field, every response shape.
Bindu Agent API
What each agent the gateway calls exposes.
DIDs explained
The identity model under
did_signed.Discord community
Ask questions, share recipes.