+ {{ $currentPage.Title }} + {{ if .Draft }} + DRAFT + {{ end }} +
+{{ $currentPage.Description | markdownify }}
+ {{ end }} +diff --git a/.gitignore b/.gitignore index 9a60f87..f2d6d26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ .DS_Store -public/ \ No newline at end of file +# Hugo build output +public/ + +# Hugo auto-generated files +resources/_gen/ +assets/jsconfig.json \ No newline at end of file diff --git a/assets/images/banner.png b/assets/images/banner.png index f30b9d8..860c4d8 100644 Binary files a/assets/images/banner.png and b/assets/images/banner.png differ diff --git a/assets/images/social/email.svg b/assets/images/social/email.svg index dbc2499..0ed6fba 100644 --- a/assets/images/social/email.svg +++ b/assets/images/social/email.svg @@ -1,4 +1,14 @@ - - + + + \ No newline at end of file diff --git a/assets/scss/custom/_custom.scss b/assets/scss/custom/_custom.scss new file mode 100644 index 0000000..519b64d --- /dev/null +++ b/assets/scss/custom/_custom.scss @@ -0,0 +1,15 @@ +/* Custom styles for Kagenti website */ + +/* Make the hero banner image smaller by constraining height */ +.classic-hero-image img { + max-height: 425px !important; + width: auto !important; + height: auto !important; +} + +/* Adjust for mobile */ +@media (max-width: 768px) { + .classic-hero-image img { + max-height: 250px !important; + } +} diff --git a/assets/scss/custom/pages/_hero.scss b/assets/scss/custom/pages/_hero.scss new file mode 100644 index 0000000..76f0942 --- /dev/null +++ b/assets/scss/custom/pages/_hero.scss @@ -0,0 +1,22 @@ +// +// hero.scss +// + +.classic-hero-image img { + max-height: 100px !important; + width: auto !important; + height: auto !important; +} + +@media (max-width:767px) { + .classic-hero-image img { + max-height: 250px !important; + width: auto !important; + height: auto !important; + } +} + +.hero { + background-size: cover; + padding-top: 70px; +} diff --git a/assets/scss/style.scss b/assets/scss/style.scss new file mode 100644 index 0000000..98598b2 --- /dev/null +++ b/assets/scss/style.scss @@ -0,0 +1,54 @@ +/* Template Name: LotusLabs Docs + Author: Colin Wilson + E-mail: colin.wilson@proton.me + Created: October 2022 + Version: 1.0.0 + File Description: Main CSS file of the Landing Page template +*/ + +//Custom Font Variables +$font-family-secondary: {{ .Site.Params.secondary_font | default "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Ubuntu'" }}; +$font-family-sans-serif: {{ .Site.Params.sans_serif_font | default "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Ubuntu'" }}; +$font-family-monospace: {{ .Site.Params.mono_font | default "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace" }}; + +//Fonts +// @import "custom/fonts/fonts"; + +//Core files +@import "bootstrap/functions"; +@import "bootstrap/variables"; +@import "variables"; +@import "bootstrap/mixins"; +@import "bootstrap/bootstrap"; + +// Plugins +@import "custom/plugins/icons/google-material"; + +// Structure +@import "custom/structure/general"; +@import "custom/structure/topbar"; +// @import "custom/structure/content"; +// @import "custom/structure/sidebar-layouts"; +// @import "custom/structure/doc-nav"; +// @import "custom/structure/toc-layouts"; +@import "custom/structure/footer"; + +// // Components +@import "custom/components/buttons"; +@import "custom/components/badge"; +@import "custom/components/backgrounds"; +// @import "custom/components/alerts"; +// @import "custom/components/card"; + +// // Pages +// @import "custom/pages/blog"; + +@import "custom/pages/features"; +@import "custom/pages/helper"; +@import "custom/pages/hero"; +{{ if ($.Scratch.Get "image_compare_enabled") }}@import "custom/pages/image-compare-viewer";{{ end }} + +// @import "custom/pages/simplebar"; + +// Custom Kagenti styles +@import "custom/custom"; diff --git a/content/docs/components/agent-identity.md b/content/docs/components/agent-identity.md new file mode 100644 index 0000000..e7cdcc9 --- /dev/null +++ b/content/docs/components/agent-identity.md @@ -0,0 +1,8 @@ +--- +title: "Agent Identity & Discoverability" +description: "SPIFFE/SPIRE workload identity and agent discovery" +date: 2026-03-16 +weight: 6 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/kagenti/main/docs/identity-guide.md" >}} diff --git a/content/docs/components/agent-sandbox.md b/content/docs/components/agent-sandbox.md new file mode 100644 index 0000000..d3bcd68 --- /dev/null +++ b/content/docs/components/agent-sandbox.md @@ -0,0 +1,8 @@ +--- +title: "Agent Sandbox" +description: "Skills-Driven Coding Agents in Kubernetes Isolation" +date: 2026-02-23 +weight: 1 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/kagenti/main/docs/architecture/agent-sandbox.md" >}} diff --git a/content/docs/components/benchmarking.md b/content/docs/components/benchmarking.md new file mode 100644 index 0000000..fd74016 --- /dev/null +++ b/content/docs/components/benchmarking.md @@ -0,0 +1,30 @@ +--- +title: "Benchmarking" +description: "Performance benchmarking and testing for AI agents" +date: 2026-03-16 +weight: 2 +--- + +> Performance benchmarking and testing capabilities for Kagenti agents + +**Status**: Coming Soon + +--- + +## Overview + +The Kagenti benchmarking component will provide comprehensive performance testing and evaluation capabilities for AI agents deployed on the platform. + +## Planned Features + +- **Performance Metrics**: Measure response times, throughput, and resource utilization +- **Load Testing**: Simulate concurrent users and workloads +- **Agent Comparison**: Compare different agent implementations and configurations +- **Quality Metrics**: Evaluate agent output quality and accuracy +- **Cost Analysis**: Track token usage and operational costs + +## Coming Soon + +Detailed documentation and implementation for the benchmarking component will be available in a future release. + +For questions or to contribute to benchmarking capabilities, please join our [Discord community](https://discord.gg/aJ92dNDzqB). diff --git a/content/docs/components/lifecycle-operators.md b/content/docs/components/lifecycle-operators.md new file mode 100644 index 0000000..29fe65a --- /dev/null +++ b/content/docs/components/lifecycle-operators.md @@ -0,0 +1,8 @@ +--- +title: "Kagenti Lifecycle Operators" +description: "Kubernetes operators for AI agent and MCP tool deployment" +date: 2026-03-16 +weight: 4 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/kagenti/main/docs/components.md" >}} diff --git a/content/docs/components/mcp-gateway.md b/content/docs/components/mcp-gateway.md new file mode 100644 index 0000000..0556ee9 --- /dev/null +++ b/content/docs/components/mcp-gateway.md @@ -0,0 +1,8 @@ +--- +title: "MCP Gateway" +description: "Envoy-based gateway for Model Context Protocol servers" +date: 2026-03-16 +weight: 5 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/mcp-gateway/main/README.md" >}} diff --git a/content/docs/components/observability.md b/content/docs/components/observability.md new file mode 100644 index 0000000..4f19947 --- /dev/null +++ b/content/docs/components/observability.md @@ -0,0 +1,8 @@ +--- +title: "Observability" +description: "OpenTelemetry instrumentation and tracing for AI agents" +date: 2026-03-16 +weight: 3 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/kagenti/main/docs/agents/otel-instrumentation.md" >}} diff --git a/content/docs/components/security-access-control.md b/content/docs/components/security-access-control.md new file mode 100644 index 0000000..a23b509 --- /dev/null +++ b/content/docs/components/security-access-control.md @@ -0,0 +1,8 @@ +--- +title: "Security & Access Control" +description: "Identity-based access control with SPIFFE/SPIRE and OAuth2" +date: 2026-03-16 +weight: 7 +--- + +{{< remote-markdown url="https://raw.githubusercontent.com/kagenti/kagenti/main/docs/components.md" >}} diff --git a/data/landing.yaml b/data/landing.yaml index 42e156b..642b38d 100644 --- a/data/landing.yaml +++ b/data/landing.yaml @@ -56,6 +56,34 @@ components: # subtitle: Lotus Docs is a highly configurable Hugo documentation theme. Yet, with the default configuration you can deploy and publish your documentation site in a matter of minutes. Check out some core features below. items: + - title: Agent Sandbox + icon: security + description: Agent Sandbox enables skills-driven coding agents to run in Kubernetes with defense-in-depth isolation. It combines kernel-level sandboxing (Landlock LSM + seccomp-BPF), network filtering, credential isolation via AuthBridge, and SPIFFE/SPIRE identity to provide secure execution for autonomous and interactive agent workflows. Supporting any LLM via litellm, it reuses the same CLAUDE.md and skills from local development while ensuring untrusted code cannot compromise the system. + ctaLink: + text: Learn more + url: /docs/components/agent-sandbox + + - title: Benchmarking + icon: speed + description: Performance benchmarking and testing capabilities for AI agents deployed on Kagenti. Provides comprehensive metrics for response times, throughput, resource utilization, load testing, and agent comparison. Enables teams to evaluate agent output quality, track token usage, and optimize operational costs across different implementations and configurations. + ctaLink: + text: Learn more + url: /docs/components/benchmarking + + - title: Observability + icon: visibility + description: OpenTelemetry instrumentation following GenAI semantic conventions for comprehensive agent observability. Integrates with MLflow for experiment tracking and Phoenix for LLM debugging, providing detailed traces of agent invocations, LLM calls, tool executions, and token usage. Enables teams to monitor, debug, and optimize agent performance in production with distributed tracing and semantic attributes. + ctaLink: + text: Learn more + url: /docs/components/observability + + - title: Kagenti Lifecycle Operators + icon: smart_toy + description: Kagenti Lifecycle Operators automate the deployment and management of AI agents and MCP tools on Kubernetes. The Agent Operator handles agents from container images or source code, while the MCP Tool Operator manages tools via Tool Hive. This streamlines the path from development to production with fast, flexible, and reliable automation. + ctaLink: + text: Learn more + url: /docs/components/lifecycle-operators + - title: MCP Gateway icon: build description: | @@ -64,21 +92,21 @@ components: **Security & Safety Plugins**: The [plugins-adapter](https://github.com/kagenti/plugins-adapter) works with MCP Gateway to provide request/response filtering, content moderation, and policy enforcement for secure AI agent interactions. ctaLink: text: Learn more - url: https://github.com/kagenti/mcp-gateway + url: /docs/components/mcp-gateway - - title: Identity and Authorization Bridge - icon: key - description: Identity and Authorization Bridge includes sidecars that provide identity-based, delegated access control for agents to tools, transparent to agent code. They implement agent identity using SPIFFE/SPIRE, dynamic OAuth client registration, token exchange with fine-grained scoping, and secret retrieval from vault for external tool integration. Together they ensure zero-trust security for agents and allow users to precisely control what agents can do on their behalf. + - title: Agent Identity & Discoverability + icon: fingerprint + description: Zero-trust identity architecture combining SPIFFE/SPIRE workload identity, OAuth2 token exchange, and Keycloak identity management. Provides secure, scalable, and dynamic authentication for cloud-native AI agents with machine identity management, secure delegation through token exchange, and continuous verification. Replaces static credentials with SPIRE-issued JWTs and ensures least-privilege access across the platform. ctaLink: text: Learn more - url: https://github.com/kagenti/kagenti/blob/main/docs/components.md#identity--auth-bridge + url: /docs/components/agent-identity - - title: Kagenti Lifecycle Operators - icon: smart_toy - description: Kagenti Lifecycle Operators automate the deployment and management of AI agents and MCP tools on Kubernetes. The Agent Operator handles agents from container images or source code, while the MCP Tool Operator manages tools via Tool Hive. This streamlines the path from development to production with fast, flexible, and reliable automation. + - title: Security & Access Control + icon: shield + description: Identity and Authorization Bridge includes sidecars that provide identity-based, delegated access control for agents to tools, transparent to agent code. They implement agent identity using SPIFFE/SPIRE, dynamic OAuth client registration, token exchange with fine-grained scoping, and secret retrieval from vault for external tool integration. Together they ensure zero-trust security for agents and allow users to precisely control what agents can do on their behalf. ctaLink: text: Learn more - url: https://github.com/kagenti/kagenti/blob/main/docs/components.md#agent-lifecycle-operator + url: /docs/components/security-access-control blogs: enable: true diff --git a/hugo.toml b/hugo.toml index c4ebbfb..6236aa2 100644 --- a/hugo.toml +++ b/hugo.toml @@ -36,6 +36,12 @@ tags = ['Kubernetes', 'agent', 'workload', 'platform', 'AI', 'LLM'] email = "mailto:kagenti-maintainers@googlegroups.com" [menu] + [[menu.primary]] + name = "Docs" + url = "/docs/components/agent-sandbox" + identifier = "docs" + weight = 5 + [[menu.primary]] name = "Blogs" url = "https://medium.com/kagenti-the-agentic-platform" diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 9c8fd96..98e10a2 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -1,7 +1,7 @@ {{ $.Scratch.Delete "social_list" }} -{{ $social_params := slice "github" "discord" "youtube" "twitter" "bluesky" "instagram" "rss" "email" }} +{{ $social_params := slice "github" "discord" "youtube" "email" "twitter" "bluesky" "instagram" "rss" }} {{ range $social_params }} {{ if isset site.Params.social . }} {{ $.Scratch.Add "social_list" (slice .) }} diff --git a/layouts/docs/baseof.html b/layouts/docs/baseof.html new file mode 100644 index 0000000..24b6b63 --- /dev/null +++ b/layouts/docs/baseof.html @@ -0,0 +1,104 @@ + +{{ $.Scratch.Delete "social_list" }} +{{ $.Scratch.Set "pathName" (printf "%s" (.Site.Params.docs.pathName | default "docs")) }} + +{{ $social_params := slice "github" "discord" "youtube" "email" "twitter" "bluesky" "instagram" "rss" }} +{{ range $social_params }} + {{ if isset site.Params.social . }} + {{ $.Scratch.Add "social_list" (slice .) }} + {{ end }} +{{ end }} + + {{- partial (printf "%s/%s" ($.Scratch.Get "pathName") "head.html") . -}} +
+{{ $currentPage.Description | markdownify }}
+ {{ end }} +Error: Unable to fetch content from {{ $url }}
+{{ end }}