Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/images/authors/antweiss.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions src/app/blog/authors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ export interface Author {
}

export const authors: Author[] = [
{
id: 'antweiss',
name: 'Ant Weiss',
title: 'Cluster Whisperer',
photo: '/images/authors/antweiss.jpg',
bio: 'Ant Weiss is a Cluster Whisperer at PerfectScale.io, focusing on cloud-native technologies and open-source projects.Software delivery optimization expert and Kubernetes fanboy.',
}
{
id: 'christianposta',
name: 'Christian Posta',
Expand Down
6 changes: 6 additions & 0 deletions src/app/blog/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ function shortDate(date: string) {
}

const posts = [
{
slug: 'khook4reactive-agents',
publishDate: '2025-09-09',
title: "Truly Reactive Cloud Native AI Agents with Kagent and Khook",
description: "Khook makes Kagent Agents Reactive",
},
{
slug: 'ai-reliability-aire',
publishDate: '2025-05-14',
Expand Down
54 changes: 54 additions & 0 deletions src/blogContent/reactive-agents-khook.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
export const metadata = {
title: "Truly Reactive Cloud Native AI Agents with Kagent and Khook",
publishDate: "2025-09-09T16:00:00Z",
description: "Khook makes Kagent Agents Reactive",
author: "Ant Weiss",
authorIds: ["antweiss"],
}


# Agent Cloud-Native in the House!

Excited by the vision of smart AI agents watching over your Kubernetes cluster?
Want an easy fully cloud-native way to run your agentic software?
Time to discover [Kagent](https://kagent.dev)!
It’s a fairly young OSS project started by the folks at [Solo.io](https://Solo.io) which aims at making the building and running of AI Agents on Kubernetes easy and fun. With all the bells and whistles one would expect - authz and authn, security, visualization, governance and audit, optimization, you name it. Some of it on the roadmap, some of it being built as we speak.

![Kagent logo](/images/blog/reactive-agents-khook/kagent-logo.png)
# Joining the Community
I started playing with Kagent a couple of months ago, loved its ergonomics and decided to build a workshop around it - meanwhile fixing some docs, submitting PRs and joining the community meetings. If you’re looking for a great OSS community to join - look no further - it’s a warm and welcoming bunch of very smart folks. And there’s a lot of work to be done!

# The Need for Reactivity
So after working with Kagent for a while I realized something was missing. For me, anyway. You see - conceptually the difference between an agent and a tool is that an agent acts on your behalf, taking decisions in alignment with the declared goals and guidelines. (While with a tool - you need to take all of the decisions yourself and command your wishes.) In this respect - much of the cloud native software is already agentic. Anything built on KRM (
[Kubernetes Resource Model](https://www.geeksforgeeks.org/linux-unix/kubernetes-resource-model-krm-and-how-to-make-use-of-yaml/)) is declarative by nature - the user declares the desired state and then the operators or the controllers make sure it becomes the actual state. And in that respect - they are definitely our agents - acting on our behalf, recreating missing pods, reconciling broken states. True agents are reactive by nature - they listen on events and correct course accordingly with state or goal declarations being just one type of event.

And that’s exactly what Kagent didn’t have. Until now in order to summon an agent - one needed to chat to it - either in Kagent’s sleek Web UI, over CLI or API. But what good is an agent if it just sits there waiting for instructions? I wanted a way to make my agents reactive.

# Introducing Khook

![khook logo](/images/blog/reactive-agents-khook/khook-logo.png)

Enter Khook - a Kubernetes controller that allows defining:
- Kubernetes events to listen to
- the agent to call
- the templated prompt to pass to the agent

Khook assumes autonomous remediation and incident response. Finally - the ops person's dream come true!

The following diagram shows how Khook works:

![khook diagram](/images/blog/reactive-agents-khook/khook-diagram.png)

It’s been a while since I’ve developed a full-blown Kubernetes controller from scratch and I have to thank Kiro and Cursor (and specifically Sonnet 3.7) for taking care of all the boilerplate for me. This definitely made me more productive.

# A Hook to the Future
Last Monday I presented Khook to the Kagent community and it makes me happy that it was met with a lot of excitement. In fact - since Friday - the [khook repository](https://github.com/kagent-dev/khook) (with the gracious help from Eitan Yarmush) has been transferred in the kagent-dev org on Github and we’re actively looking for early users and contributors to take the hooks for test drives and find interesting bugs. Oh, and if you clicked on the link - make sure to star the repo. It will make my day brighter 🙏

Here's a demo of Khook triggering a Kagent agent: <YouTube id="cYXLKAXZnso" />

While building this project I realized it can be of much wider use - becoming the connecting tissue between virtually any type of event (think task queues, DB transactions, webhooks) and any type of A2A-compatible agent (all agent communication in Kagent is based on the [A2A protocol](https://github.com/a2aproject/A2A)). Especially now with [Kagent supporting BYO agents](https://kagent.dev/docs/kagent/examples/a2a-byo). So yes - a lot of space for improvement, innovation, experimentation.

Find this exciting too? Drop me a line, [join the Kagent community](https://discord.com/invite/Fu3k65f2k3) and contribute to Kagent or Khook or both.

And may our future be agentic.