Write the agent, not the chat integration.
A Binding connects a chat channel to an agent that serves streaming A2A. Agent Kourier handles the chat side: a session per thread, streamed replies, questions to people, investigations started by alerts, and recovery after a restart or failover. Slack is supported today, and other chat platforms are planned.
Chat
SlackAgents
A2A kagent Google AXStatus: v0.1.2
The current release is 0.1.2: install the published chart and image with Install with Helm.
The v1alpha1 resource format can change before 1.0.
What Agent Kourier handles¶
Without a broker, every agent that talks to chat needs its own code for threads, streaming, questions, restarts and alerts. Agent Kourier does that work once for every agent you bind. It keeps a session per thread, queues replies that arrive while the agent works, streams the answer into one message, posts the agent's questions in the thread, recovers each conversation after a restart, and holds the thread while a suspended agent is not running. The agent keeps its tools and task logic.
The platform team runs Agent Kourier and owns the chat app and the agent backends. Each application team connects its own agent to its own channel with a namespaced Binding, committed next to the agent's manifests. Why a broker explains the split.
-
Try it
Run Agent Kourier in a kind cluster against your own Slack workspace and a read-only kagent agent, and get your first answer in a thread.
-
Install
Install the Helm chart on a cluster you already run, connect Slack, and bind your first agent to a channel.
-
How it works
One broker between your chat and your agents: a thread is a session, conversations resume after a restart, and two replicas on Postgres fail over. The delivery and failover pages say what a restart or failover can still repeat.
A thread is a session¶
An alert lands in the channel. Agent Kourier opens a thread under it and hands it to the agent, which investigates and answers there. People reply in the same thread and the same agent session continues.
An illustration of one alert thread, not captured output. The answers come from your agent; Agent Kourier carries them.
A repeat of the same alert attaches to its thread, and its resolve posts a note there. Agent Kourier reads the alert your alerting tool already posts to Slack, so your alerts arrive as before, whether or not Agent Kourier is running. The docs have a worked trigger for Alertmanager; another tool's bot needs a trigger of its own.