diff --git a/src/components/AppArchitectureDiagram.tsx b/src/components/AppArchitectureDiagram.tsx
index 18c2ff9..e241d0a 100644
--- a/src/components/AppArchitectureDiagram.tsx
+++ b/src/components/AppArchitectureDiagram.tsx
@@ -52,6 +52,7 @@ function Box({
h,
label,
sublabel,
+ lines,
fill,
}: {
x: number;
@@ -60,8 +61,15 @@ function Box({
h: number;
label: string;
sublabel?: string;
+ lines?: string[];
fill: string;
}) {
+ const detailLines = lines ?? [];
+ const hasSublabel = Boolean(sublabel);
+ const titleY = y + (hasSublabel || detailLines.length > 0 ? 18 : h / 2 + 5);
+ const sublabelY = y + 34;
+ const detailsStartY = y + (hasSublabel ? 50 : 36);
+
return (
)}
+ {detailLines.map((line, index) => (
+
+ {line}
+
+ ))}
);
}
diff --git a/src/components/AppStatusBadge.tsx b/src/components/AppStatusBadge.tsx
index 4e04b30..8daaff7 100644
--- a/src/components/AppStatusBadge.tsx
+++ b/src/components/AppStatusBadge.tsx
@@ -19,6 +19,12 @@ const statusStyles: Record<
color: '#0a1628',
borderColor: 'rgba(126, 200, 255, 1)',
},
+ 'In Progress': {
+ label: 'In Progress',
+ backgroundColor: 'rgba(255, 180, 50, 0.92)',
+ color: '#1a1400',
+ borderColor: 'rgba(255, 200, 80, 1)',
+ },
Beta: {
label: 'Beta',
backgroundColor: 'rgba(123, 97, 255, 0.92)',
diff --git a/src/content/appShowcases.ts b/src/content/appShowcases.ts
index 7f7bc41..9389da3 100644
--- a/src/content/appShowcases.ts
+++ b/src/content/appShowcases.ts
@@ -1,4 +1,5 @@
import { AppShowcaseContent } from '../types/appShowcase';
+import { kubesentryDiagram } from './kubesentryDiagram';
const GITHUB_URL = 'https://github.com/TheTraille18/';
@@ -220,42 +221,35 @@ export const appShowcases: Record = {
'kubesentry-ai': {
title: 'KubeSentry AI',
tagline:
- 'AI-powered Kubernetes monitoring, anomaly detection, and intelligent alerting for clusters.',
+ 'AI-driven Kubernetes incident response — observability, agents, and chaos engineering in one platform.',
githubUrl: GITHUB_URL,
- workInProgress: true,
summary: [
- 'KubeSentry AI aims to watch Kubernetes clusters for unusual behavior — failed pods, resource spikes, and deployment regressions — and explain what went wrong using AI-assisted analysis.',
- 'Metrics and events from the cluster feed into an anomaly detection layer that correlates signals and surfaces actionable alerts instead of raw log noise.',
+ 'KubeSentry is an AI-driven Kubernetes incident response platform that combines observability, AI agents, and chaos engineering to detect, investigate, and validate issues in Kubernetes environments.',
+ 'The goal is to reduce the time engineers spend diagnosing production incidents by automating root cause analysis and providing actionable recommendations.',
],
architectureCaption:
- 'Cluster metrics and events flow from Prometheus and the Kubernetes API into an analysis pipeline. An AI layer interprets anomalies, correlates root causes, and sends alerts to operators through a dashboard or notification channel.',
- diagram: {
- viewBox: '0 0 760 400',
- boxes: [
- { x: 40, y: 60, w: 170, h: 52, label: 'Kubernetes', sublabel: 'Cluster', fill: 'rgba(0,166,153,0.35)' },
- { x: 280, y: 60, w: 200, h: 52, label: 'Prometheus', sublabel: 'Metrics', fill: 'rgba(0,0,0,0.45)' },
- { x: 520, y: 60, w: 200, h: 52, label: 'Event stream', sublabel: 'K8s API', fill: 'rgba(0,0,0,0.35)' },
- { x: 160, y: 180, w: 200, h: 52, label: 'Anomaly engine', sublabel: 'Detection', fill: 'rgba(255,90,95,0.35)' },
- { x: 400, y: 180, w: 200, h: 52, label: 'AI analysis', sublabel: 'Root cause', fill: 'rgba(255,90,95,0.25)' },
- { x: 280, y: 300, w: 200, h: 52, label: 'Alerts', sublabel: 'Dashboard', fill: 'rgba(0,166,153,0.25)' },
- ],
- arrows: [
- { x1: 210, y1: 86, x2: 278, y2: 86 },
- { x1: 480, y1: 86, x2: 518, y2: 86 },
- { x1: 380, y1: 112, x2: 260, y2: 178 },
- { x1: 620, y1: 112, x2: 500, y2: 178 },
- { x1: 360, y1: 206, x2: 398, y2: 206 },
- { x1: 500, y1: 232, x2: 380, y2: 298 },
- ],
- footer: 'Work in progress — planned K8s observability with AI-assisted incident analysis',
- workInProgress: true,
- },
+ 'Kubernetes API data and Prometheus, CloudWatch, and log streams feed a data collector that normalizes pods, events, metrics, and deployments. A LangGraph AI agent orchestrates multi-step investigation using Kubernetes tools and optional web search, with Claude on Amazon Bedrock driving root cause analysis, confidence scoring, and remediation recommendations delivered to Slack, Jira, ServiceNow, dashboards, or email. A separate chaos engineering pipeline uses LitmusChaos, Chaos Mesh, or AWS FIS to inject failures and validate that KubeSentry detects and diagnoses incidents correctly.',
+ diagram: kubesentryDiagram,
toolsUsed: [
- { category: 'Platform', tools: ['Kubernetes', 'Prometheus', 'Helm'] },
- { category: 'AI', tools: ['LLM', 'Anomaly detection', 'Event correlation'] },
- { category: 'Backend', tools: ['Go', 'Python', 'gRPC', 'Webhooks'] },
+ { category: 'Platform', tools: ['Kubernetes', 'EKS', 'Prometheus', 'CloudWatch', 'Helm'] },
+ { category: 'AI', tools: ['LangGraph', 'Claude', 'Amazon Bedrock', 'Titan Embeddings'] },
+ { category: 'Integrations', tools: ['Slack', 'Jira', 'ServiceNow', 'kubectl'] },
+ { category: 'Chaos', tools: ['LitmusChaos', 'Chaos Mesh', 'AWS FIS'] },
+ { category: 'Backend', tools: ['Go', 'Web search', 'Event correlation'] },
],
progressUpdates: [
+ {
+ date: 'Jun 29, 2026',
+ title: 'Go backend + Kubernetes data collection',
+ detail:
+ 'Scaffolded the production Go layout with server and worker entrypoints, detector, and in-memory alert store. Integrated client-go to list pods and events, built a pod-failure detector, and wired a worker that polls the online-boutique namespace every 30s. Added an HTTP API for health checks and listing alerts, moved the Online Boutique Helm chart to deployments/helm/online-boutique, stood up a local kind cluster for testing, and added Makefile targets for build, run-server, run-worker, helm-install, and port-forward.',
+ },
+ {
+ date: 'Jun 2026',
+ title: 'Architecture design',
+ detail:
+ 'Documented the full incident response pipeline — data collector, LangGraph agent, Bedrock analysis, notification channels, and chaos validation flow.',
+ },
{
date: 'Jun 2026',
title: 'Project page',
@@ -263,13 +257,18 @@ export const appShowcases: Record = {
},
{
date: 'Planned',
- title: 'Metrics collector',
- detail: 'Integrate Prometheus and Kubernetes event watchers for cluster telemetry.',
+ title: 'Data collector',
+ detail: 'Integrate Kubernetes API, Prometheus, CloudWatch, and log streams into a unified collector.',
+ },
+ {
+ date: 'Planned',
+ title: 'LangGraph investigation agent',
+ detail: 'Build multi-step incident workflows with Kubernetes tools and optional web search fallback.',
},
{
date: 'Planned',
- title: 'AI alert summaries',
- detail: 'Generate human-readable incident summaries from correlated cluster signals.',
+ title: 'Chaos validation',
+ detail: 'Run LitmusChaos, Chaos Mesh, or AWS FIS experiments to verify detection and diagnosis.',
},
],
},
diff --git a/src/content/kubesentryDiagram.ts b/src/content/kubesentryDiagram.ts
new file mode 100644
index 0000000..8c9acb8
--- /dev/null
+++ b/src/content/kubesentryDiagram.ts
@@ -0,0 +1,147 @@
+import { ArchitectureDiagramConfig } from '../types/appShowcase';
+
+export const kubesentryDiagram: ArchitectureDiagramConfig = {
+ viewBox: '0 0 880 1400',
+ boxes: [
+ {
+ x: 290,
+ y: 16,
+ w: 300,
+ h: 52,
+ label: 'Kubernetes Cluster',
+ sublabel: 'EKS or any K8s',
+ fill: 'rgba(0,166,153,0.35)',
+ },
+ {
+ x: 50,
+ y: 108,
+ w: 220,
+ h: 108,
+ label: 'Kubernetes API',
+ lines: ['Pod Status', 'Events', 'Deployments'],
+ fill: 'rgba(0,0,0,0.45)',
+ },
+ {
+ x: 610,
+ y: 108,
+ w: 220,
+ h: 108,
+ label: 'Prometheus / Metrics',
+ lines: ['CloudWatch', 'Logs', 'Alerts'],
+ fill: 'rgba(0,0,0,0.45)',
+ },
+ {
+ x: 240,
+ y: 268,
+ w: 400,
+ h: 118,
+ label: 'Data Collector',
+ lines: ['Pods', 'Logs', 'Events', 'Metrics', 'Deployments'],
+ fill: 'rgba(255,90,95,0.35)',
+ },
+ {
+ x: 200,
+ y: 426,
+ w: 480,
+ h: 118,
+ label: 'AI Agent (LangGraph)',
+ lines: ['Incident State', 'Tool Selection', 'Investigation Workflow', 'Multi-step Reasoning'],
+ fill: 'rgba(255,90,95,0.25)',
+ },
+ {
+ x: 50,
+ y: 582,
+ w: 240,
+ h: 100,
+ label: 'Kubernetes Tools',
+ lines: ['kubectl', 'Metrics', 'Events'],
+ fill: 'rgba(0,0,0,0.45)',
+ },
+ {
+ x: 590,
+ y: 582,
+ w: 240,
+ h: 100,
+ label: 'Web Search (optional)',
+ lines: ['AWS Docs', 'CVEs', 'Kubernetes Docs'],
+ fill: 'rgba(0,0,0,0.45)',
+ },
+ {
+ x: 240,
+ y: 722,
+ w: 400,
+ h: 88,
+ label: 'Amazon Bedrock',
+ lines: ['Claude', 'Titan Embeddings (optional)'],
+ fill: 'rgba(0,166,153,0.35)',
+ },
+ {
+ x: 200,
+ y: 842,
+ w: 480,
+ h: 100,
+ label: 'Root Cause Analysis',
+ lines: ['Confidence Score', 'Suggested Remediation', 'YAML / kubectl Recommendations'],
+ fill: 'rgba(255,90,95,0.35)',
+ },
+ {
+ x: 120,
+ y: 978,
+ w: 640,
+ h: 56,
+ label: 'Slack Jira / ServiceNow Dashboard Email',
+ fill: 'rgba(0,166,153,0.25)',
+ },
+ {
+ x: 160,
+ y: 1068,
+ w: 560,
+ h: 40,
+ label: 'Chaos Engineering / Validation Pipeline',
+ fill: 'rgba(255,180,50,0.3)',
+ },
+ {
+ x: 200,
+ y: 1132,
+ w: 480,
+ h: 52,
+ label: 'LitmusChaos / Chaos Mesh / AWS FIS',
+ fill: 'rgba(255,180,50,0.25)',
+ },
+ {
+ x: 200,
+ y: 1210,
+ w: 480,
+ h: 100,
+ label: 'Inject Failures',
+ lines: ['Pod Failures', 'Kill Nodes', 'Network Latency', 'CPU / Memory Pressure'],
+ fill: 'rgba(255,180,50,0.2)',
+ },
+ {
+ x: 240,
+ y: 1338,
+ w: 400,
+ h: 52,
+ label: 'Verify KubeSentry',
+ sublabel: 'Detects & diagnoses correctly',
+ fill: 'rgba(255,180,50,0.35)',
+ },
+ ],
+ arrows: [
+ { x1: 440, y1: 68, x2: 160, y2: 106 },
+ { x1: 440, y1: 68, x2: 720, y2: 106 },
+ { x1: 160, y1: 216, x2: 340, y2: 266 },
+ { x1: 720, y1: 216, x2: 540, y2: 266 },
+ { x1: 440, y1: 386, x2: 440, y2: 424 },
+ { x1: 170, y1: 582, x2: 300, y2: 544 },
+ { x1: 710, y1: 582, x2: 580, y2: 544 },
+ { x1: 440, y1: 544, x2: 440, y2: 720 },
+ { x1: 440, y1: 810, x2: 440, y2: 840 },
+ { x1: 440, y1: 942, x2: 440, y2: 976 },
+ { x1: 440, y1: 1034, x2: 440, y2: 1066 },
+ { x1: 440, y1: 1108, x2: 440, y2: 1130 },
+ { x1: 440, y1: 1184, x2: 440, y2: 1208 },
+ { x1: 440, y1: 1310, x2: 440, y2: 1336 },
+ ],
+ footer: 'Incident response pipeline + chaos validation to prove detection and diagnosis',
+};
diff --git a/src/data/apps.ts b/src/data/apps.ts
index 14d85bb..8d4eff6 100644
--- a/src/data/apps.ts
+++ b/src/data/apps.ts
@@ -56,9 +56,9 @@ export const catalogApps: AppImage[] = [
path: '/apps/kubesentry-ai',
badge: 'AI',
group: 'AI',
- status: 'POC',
- infoLine1: 'AI-powered Kubernetes monitoring',
- infoLine2: 'and anomaly detection for your clusters',
+ status: 'In Progress',
+ infoLine1: 'AI-driven Kubernetes incident response',
+ infoLine2: 'with observability, agents, and chaos engineering',
infoLine3: '',
infoLine4: '',
},
diff --git a/src/types.ts b/src/types.ts
index fb96688..716e184 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -28,6 +28,7 @@ export interface TaskFormValues {
export type AppStatus =
| 'Live'
| 'In Development'
+ | 'In Progress'
| 'Beta'
| 'Planned'
| 'POC'
diff --git a/src/types/appShowcase.ts b/src/types/appShowcase.ts
index 3705ca0..f1544b2 100644
--- a/src/types/appShowcase.ts
+++ b/src/types/appShowcase.ts
@@ -16,6 +16,8 @@ export interface DiagramBox {
h: number;
label: string;
sublabel?: string;
+ /** Additional detail lines rendered inside the box (smaller text). */
+ lines?: string[];
fill: string;
}