Comparison with other projects¶
This page sets Agent Kourier beside the projects that cover parts of the same ground, as they stood when the project was researched on 2026-09-29. Each of them may have moved on since.
Prior art¶
| Project | Covers | Why Agent Kourier is still needed |
|---|---|---|
| giantswarm/klaus-gateway | A Slack front door for kagent 1.0: A2A v1, human-in-the-loop cards, streaming, per-user identity | It refuses any turn without a person's token, so alert-triggered runs are excluded by design. It is coupled to Giant Swarm's platform. |
| apexlnc/kslack | kagent's closed Slack pull request, moved to its own repository | Not adopted into the kagent organisation; last push 2025-11. |
| eliasecchig/a2a-gateway | A generic A2A bridge to Slack, Discord, Telegram and Google Chat | No alert ingress, no kagent human-in-the-loop, no Kubernetes resource model. |
gke-labs/kube-agents a2a/gateway |
A backend-neutral chat adapter interface with a Slack adapter | Chat only. |
| zanglang/kagent-slack-bridge, a2a-slack-template | Minimal Socket Mode bridges | Target kagent 0.10 URLs, one agent, no human-in-the-loop. |
| khook | Kubernetes events to kagent, with dedup | Kubernetes events only; targets the 0.x session API. |
| HolmesGPT, Robusta, argus, SherlockOps | Alert investigation with Slack output | Each is its own agent, not a gateway to arbitrary A2A agents. |
| agentgateway | An A2A and MCP proxy with auth, RBAC and rate limits | No chat or alert ingress. Complementary: recommended in front of the backend. |
Against extending klaus-gateway¶
- Alert-driven runs. klaus-gateway makes every call as a person. An alert has no person, so adding alert ingress there would reverse one of its core principles, not add a feature.
- No platform prerequisites. klaus-gateway needs Dex account linking, its own data plane and roster annotations before an agent is offered. Agent Kourier needs an A2A endpoint and a Slack app.
- Public protocol. klaus-gateway compiles against kagent's internal controller APIs. Agent Kourier uses public A2A and one published extension, so it works with non-kagent agents and is insulated from kagent's internal changes.
- Team self-service. klaus-gateway is configured through Helm values with one default agent. Agent Kourier's namespaced Binding lets each team wire its own channel to its own agent.
Against contributing to kagent¶
- Upstream declined chat in core. The Slack bot pull request was asked to live in a separate repository, and the issue asking for a Slack bot was closed as not planned.
- Backend neutrality. Code in kagent serves only kagent. Agent Kourier serves any A2A agent, including one running as a Google AX task.
- An independent lifecycle. A broker has to stay up while agents are suspended.
What Agent Kourier gives up¶
- Per-person identity. klaus-gateway solves per-person tokens and session shares. Agent Kourier runs every turn as the Binding's identity. If per-person tool authority becomes a requirement, klaus-gateway's approach is the reference.
- Upstream alignment. kagent is redesigning how events reach sleeping agents, and a native solution could overlap Agent Kourier's chat path. Agent Kourier's hedge is backend neutrality and the alert-to-session model.
Why a broker explains the design these choices lead to.