From 743a8931c53f04b4295bbbc4c45736ad7623b2a3 Mon Sep 17 00:00:00 2001 From: Art Berger Date: Mon, 2 Feb 2026 16:06:09 -0500 Subject: [PATCH 1/6] nav updates Signed-off-by: Art Berger --- public/sitemap.xml | 214 ++++++++++++++++++++++----------------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/public/sitemap.xml b/public/sitemap.xml index 893b14b2..93da814b 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -2,749 +2,749 @@ https://kagent.dev/agents - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/blog - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/community - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/concepts/agents - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/concepts/architecture - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/concepts - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/concepts/tools - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/a2a-agents - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/a2a-byo - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/crewai-byo - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/discord-a2a - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/documentation - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/langchain-byo - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/skills - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/examples/slack-a2a - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/first-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/first-mcp-tool - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/local-development - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/quickstart - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/system-prompts - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/getting-started/tracing - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/introduction/installation - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/introduction - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/introduction/what-is-kagent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/observability/audit-prompts - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/observability/launch-ui - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/observability - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/operations/debug - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/operations/operational-considerations - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/operations - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/operations/uninstall - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/operations/upgrade - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/api-ref - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-add-mcp - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-bug-report - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-build - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-completion - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-dashboard - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-deploy - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-get - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-help - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-init - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-install - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-invoke - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-mcp - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-run - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-uninstall - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli/kagent-version - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/cli - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/faq - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/helm - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/resources/release-notes - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/amazon-bedrock - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/anthropic - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/azure-openai - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/byo-openai - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/gemini - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/google-vertexai - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/ollama - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers/openai - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kagent/supported-providers - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/deploy/install-controller - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/deploy - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/deploy/server - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/develop/fastmcp-python - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/develop/mcp-go - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/develop - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/introduction - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/quickstart - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/api-ref - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-add-tool - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-build - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-completion - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-deploy - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-help - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-init - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-install - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-run - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference/kmcp-secrets - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/reference - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs/kmcp/secrets - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/docs - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/enterprise - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/page.tsx - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/argo-rollouts-conversion-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/cilium-crd-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/helm-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/istio-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/k8s-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/kgateway-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/observability-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/agents/promql-agent - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/istio - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/kubernetes - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/prometheus - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/documentation - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/helm - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/argo - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/grafana - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/other - 2026-01-29 + 2026-02-02 weekly 0.8 https://kagent.dev/tools/cilium - 2026-01-29 + 2026-02-02 weekly 0.8 From fc397b4b3f0280e3a4ec66920c71f4008566694d Mon Sep 17 00:00:00 2001 From: Art Berger Date: Mon, 2 Feb 2026 16:06:18 -0500 Subject: [PATCH 2/6] add frontmatter yaml Signed-off-by: Art Berger --- src/app/docs/kagent/examples/skills/page.mdx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/docs/kagent/examples/skills/page.mdx b/src/app/docs/kagent/examples/skills/page.mdx index 58c3f8b4..218f734c 100644 --- a/src/app/docs/kagent/examples/skills/page.mdx +++ b/src/app/docs/kagent/examples/skills/page.mdx @@ -45,6 +45,10 @@ To create a container-based skill, package your skill files into a container ima ```bash cat > SKILL.md <<'EOF' + --- + name: k8s-deploy-skill + description: Use this skill when users want to deploy a basic app on the Kubernetes cluster. + --- # Kubernetes simple deploy skill Use this skill when users want to deploy a basic app on the Kubernetes cluster. @@ -56,7 +60,7 @@ To create a container-based skill, package your skill files into a container ima - Call the script `scripts/deploy-app.py` passing the supplied name, image, and optional parameters (# of replicas and port number) if supplied, in that order. - The script generates a correct two-resource manifest (Deployment + Service) and writes it to the file `temp-manifest.yaml`. - You, the **agent**, are expected to apply the generated manifest `temp-manifest.yaml` against the current Kubernetes context. + You, the **agent**, are expected to apply the generated manifest `temp-manifest.yaml` against the current Kubernetes context using the `k8s_apply_manifest` tool. ## Example @@ -281,9 +285,9 @@ spec: name: kagent-tool-server kind: RemoteMCPServer toolNames: - - k8s_apply_manifest - k8s_get_resources - k8s_describe_resource + - k8s_apply_manifest systemMessage: | You are a Kubernetes assistant that helps users deploy and manage applications. You have access to skills that can help automate common tasks. @@ -312,7 +316,7 @@ After creating the agent, test it with queries that match your skills. Example output: ```json - {"artifacts":[{"artifactId":"91afd732-3fa5-4e25-8f0e-07a4968050e5","parts":[{"kind":"text","text":"I am a Kubernetes AI agent with deployment skills. I can help you deploy and manage Kubernetes applications by working with manifests, describing resources, getting resource details, and applying configurations to your Kubernetes cluster. However, currently, I do not have any additional specialized skills loaded beyond these core Kubernetes capabilities. If you have any Kubernetes-related tasks or questions, feel free to ask!"}]}],"contextId":"f130122c-06e1-467c-9eb3-fe3704988b4d","history":[{"contextId":"f130122c-06e1-467c-9eb3-fe3704988b4d","kind":"message","messageId":"msg-cd691a32-c0d8-471d-b8eb-e4e3265621ce","parts":[{"kind":"text","text":"What skills do you have?"}],"role":"user","taskId":"b7ee2804-b15e-4dee-b6e9-ca2901383a10"},{"contextId":"f130122c-06e1-467c-9eb3-fe3704988b4d","kind":"message","messageId":"msg-cd691a32-c0d8-471d-b8eb-e4e3265621ce","parts":[{"kind":"text","text":"What skills do you have?"}],"role":"user","taskId":"b7ee2804-b15e-4dee-b6e9-ca2901383a10"},{"kind":"message","messageId":"e22926e1-50d2-4571-a039-a3dcf8dfb2b8","parts":[{"kind":"text","text":"I am a Kubernetes AI agent with deployment skills. I can help you deploy and manage Kubernetes applications by working with manifests, describing resources, getting resource details, and applying configurations to your Kubernetes cluster. However, currently, I do not have any additional specialized skills loaded beyond these core Kubernetes capabilities. If you have any Kubernetes-related tasks or questions, feel free to ask!"}],"role":"agent"}],"id":"b7ee2804-b15e-4dee-b6e9-ca2901383a10","kind":"task","metadata":{"kagent_app_name":"kagent__NS__k8s_assistant_with_skills","kagent_author":"k8s_assistant_with_skills","kagent_invocation_id":"e-ceaee83e-40a1-4088-b545-89e96f71608e","kagent_session_id":"f130122c-06e1-467c-9eb3-fe3704988b4d","kagent_usage_metadata":{"candidatesTokenCount":74,"promptTokenCount":1236,"totalTokenCount":1310},"kagent_user_id":"admin@kagent.dev"},"status":{"state":"completed","timestamp":"2025-11-21T22:13:16.484468+00:00"}} + {"artifacts":[{"artifactId":"983693f3-dfc3-4169-9ceb-831c3b7f5218","parts":[{"kind":"text","text":"I am a Kubernetes AI agent equipped with deployment skills. I can help you deploy, manage, and troubleshoot Kubernetes applications and resources. Additionally, I have access to functions for describing, getting, and managing Kubernetes resources, as well as executing bash commands within the Kubernetes environment.\n\nCurrently, no additional specialized skills are loaded in this conversation, but I can assist with a wide range of Kubernetes-related tasks such as:\n\n- Creating and managing deployments, services, and pods\n- Describing Kubernetes objects\n- Executing commands and scripts in the Kubernetes cluster\n- Retrieving detailed information about namespaces, nodes, and other resources\n- Helping with troubleshooting and debugging Kubernetes issues\n\nIf you have a specific Kubernetes task or question, just let me know!"}]}],"contextId":"02ca4e85-6084-4621-9407-245bdc69ebc3","history":[{"contextId":"02ca4e85-6084-4621-9407-245bdc69ebc3","kind":"message","messageId":"msg-be65549d-7819-404d-8b46-68a382da0415","parts":[{"kind":"text","text":"What skills do you have?"}],"role":"user","taskId":"85a44549-3b0e-448d-964f-37190fdcebd2"},{"contextId":"02ca4e85-6084-4621-9407-245bdc69ebc3","kind":"message","messageId":"msg-be65549d-7819-404d-8b46-68a382da0415","parts":[{"kind":"text","text":"What skills do you have?"}],"role":"user","taskId":"85a44549-3b0e-448d-964f-37190fdcebd2"},{"kind":"message","messageId":"fcbf0b5c-5ff7-48c1-acaa-3b190ce185d7","metadata":{"adk_partial":false},"parts":[{"kind":"text","text":"I am a Kubernetes AI agent equipped with deployment skills. I can help you deploy, manage, and troubleshoot Kubernetes applications and resources. Additionally, I have access to functions for describing, getting, and managing Kubernetes resources, as well as executing bash commands within the Kubernetes environment.\n\nCurrently, no additional specialized skills are loaded in this conversation, but I can assist with a wide range of Kubernetes-related tasks such as:\n\n- Creating and managing deployments, services, and pods\n- Describing Kubernetes objects\n- Executing commands and scripts in the Kubernetes cluster\n- Retrieving detailed information about namespaces, nodes, and other resources\n- Helping with troubleshooting and debugging Kubernetes issues\n\nIf you have a specific Kubernetes task or question, just let me know!"}],"role":"agent"}],"id":"85a44549-3b0e-448d-964f-37190fdcebd2","kind":"task","metadata":{"kagent_app_name":"kagent__NS__k8s_assistant_with_skills","kagent_author":"k8s_assistant_with_skills","kagent_invocation_id":"e-7d0dc60a-ffab-4941-ac10-9ad8df07e55a","kagent_session_id":"02ca4e85-6084-4621-9407-245bdc69ebc3","kagent_user_id":"A2A_USER_02ca4e85-6084-4621-9407-245bdc69ebc3"},"status":{"state":"completed","timestamp":"2026-02-02T16:23:57.588472+00:00"}} ``` 2. Invoke a skill, such as by asking it to deploy an app. From e85068addd0214305a1ce72b98b8040e44612c14 Mon Sep 17 00:00:00 2001 From: Art Berger Date: Mon, 2 Feb 2026 16:32:06 -0500 Subject: [PATCH 3/6] navigation Signed-off-by: Art Berger --- src/config/navigation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/navigation.json b/src/config/navigation.json index 58a0822f..65f6ce82 100644 --- a/src/config/navigation.json +++ b/src/config/navigation.json @@ -99,7 +99,7 @@ { "title": "Amazon Bedrock", "href": "/docs/kagent/supported-providers/amazon-bedrock", - "description": "Use Amazon Bedrock models with kagent via the OpenAI Chat Completions API." + "description": "Use Amazon Bedrock models with kagent via the native Bedrock provider or the OpenAI Chat Completions API." }, { "title": "Anthropic", From 0527c2b00ae98974d9df0f2d869b46401454be72 Mon Sep 17 00:00:00 2001 From: Art Berger Date: Mon, 2 Feb 2026 16:32:15 -0500 Subject: [PATCH 4/6] updates for things from Eitan's talk Signed-off-by: Art Berger --- src/app/docs/kagent/concepts/agents/page.mdx | 25 +++- src/app/docs/kagent/concepts/tools/page.mdx | 51 ++++++- src/app/docs/kagent/examples/a2a-byo/page.mdx | 56 ++++++++ .../operational-considerations/page.mdx | 71 ++++++++++ src/app/docs/kagent/resources/helm/page.mdx | 10 +- .../amazon-bedrock/page.mdx | 127 ++++++++++++------ 6 files changed, 292 insertions(+), 48 deletions(-) diff --git a/src/app/docs/kagent/concepts/agents/page.mdx b/src/app/docs/kagent/concepts/agents/page.mdx index 4c2aefde..1b9a4d64 100644 --- a/src/app/docs/kagent/concepts/agents/page.mdx +++ b/src/app/docs/kagent/concepts/agents/page.mdx @@ -141,8 +141,29 @@ Here's how you could reference an existing agent (`promql-agent`) as a tool: toolNames: - k8s_get_resources - k8s_get_available_api_resources - # Referencing an existing agent as a tool + # Referencing an existing agent as a tool (same namespace) - type: Agent agent: ref: promql-agent -``` \ No newline at end of file + # Referencing an agent in another namespace + - type: Agent + agent: + ref: other-namespace/promql-agent +``` + +### MCP server endpoint + +A2A-enabled agents are automatically exposed as an MCP server on the kagent controller. The MCP endpoint is available at `/mcp` on the same port as the A2A endpoint (default 8083). + +This MCP server provides two tools: + +- **`list_agents`**: Lists invokable kagent agents that are accepted and deployment-ready. +- **`invoke_agent`**: Invokes a kagent agent via A2A. The agent reference uses the format `namespace/name`. + +You can connect MCP clients (such as Cursor, Claude Desktop, or other MCP-compatible tools) to the kagent controller to use your agents as MCP tools, such as when port-forwarding the controller: + +``` +http://localhost:8083/mcp +``` + +The MCP server uses the same authentication as the A2A endpoints. diff --git a/src/app/docs/kagent/concepts/tools/page.mdx b/src/app/docs/kagent/concepts/tools/page.mdx index 46397f81..c472fc0a 100644 --- a/src/app/docs/kagent/concepts/tools/page.mdx +++ b/src/app/docs/kagent/concepts/tools/page.mdx @@ -22,9 +22,58 @@ You can check out the full list of built-in tools [here](/tools). The built-in tools are meant as a good starting point for any agents running in kubernetes, however we don't envision them covering all possible use-cases, so we support multiple tool extension points to allow you to bring in your own tools. +### Cross-namespace tool references + +You can refer to tools from MCP servers in other namespaces by using the `namespace/name` format. This way, you can share tool servers across namespaces without duplicating them. + +Example: Reference to a RemoteMCPServer in the `tools` namespace. + +```yaml +tools: + - type: McpServer + mcpServer: + name: tools/kagent-tool-server + kind: RemoteMCPServer + toolNames: + - k8s_get_resources +``` + +The same format applies when referring to Services or MCPServers in other namespaces. + +### Headers for tool calls + +You can add headers to requests sent from an agent to a tool using `headersFrom`. This ability is useful for passing API keys, authentication tokens, or other per-request metadata to MCP servers. Header values are resolved from Secrets or ConfigMaps in the same namespace as the Agent. + +Example: Add an API key header when calling a tool. + +```yaml +tools: + - type: McpServer + mcpServer: + name: kagent-tool-server + kind: RemoteMCPServer + toolNames: + - k8s_get_resources + headersFrom: + - name: Authorization + valueFrom: + type: Secret + name: tool-api-secret + key: api-key +``` + +Headers specified in `headersFrom` override any headers of the same name configured on the tool itself. + ## Agents as Tools -You also have an option of using agents as tools. Any agent you create can be referenced and used by other agents you have. +You also have an option of using agents as tools. Any agent you create can be referenced and used by other agents you have. You can refer to agents in other namespaces by using the `namespace/name` format. + +```yaml +tools: + - type: Agent + agent: + ref: other-namespace/promql-agent +``` ## MCP Tools diff --git a/src/app/docs/kagent/examples/a2a-byo/page.mdx b/src/app/docs/kagent/examples/a2a-byo/page.mdx index d509b31b..114bfd75 100644 --- a/src/app/docs/kagent/examples/a2a-byo/page.mdx +++ b/src/app/docs/kagent/examples/a2a-byo/page.mdx @@ -4,6 +4,8 @@ pageOrder: 1 description: "Bring your own ADK agent to kagent" --- +import { Tabs, Tab } from '@/components/mdx/tabs'; + export const metadata = { title: "Bringing your own ADK agent to kagent", description: "Learn how to bring your own ADK agent to kagent", @@ -63,6 +65,14 @@ Now that you have your own custom agent image, you can create a BYO Agent resour 3. Create a BYO Agent resource. + + +
+ For private container registries, add `imagePullSecrets` to reference a Secret that contains credentials for pulling the agent image. Create the secret with `kubectl create secret docker-registry my-registry-secret --docker-server= --docker-username= --docker-password= -n kagent`. + ```yaml kubectl apply -f - < + +
+ ```yaml + kubectl apply -f - < ## Testing the A2A endpoint @@ -296,3 +333,22 @@ To use lifespan hooks in your ADK agent, create a lifespan function and pass it lifespan=lifespan.lifespan # Pass the lifespan function ) ``` + +### A2A max payload size + +BYO agents accept A2A requests with a default maximum payload size of 10 MB. For agents that need to handle larger payloads (for example, when processing large file attachments), set the `A2A_MAX_CONTENT_LENGTH` environment variable in the agent deployment. + +Example: Allow 50 MB payloads: + +```yaml +spec: + type: BYO + byo: + deployment: + image: ghcr.io/my-org:latest + env: + - name: A2A_MAX_CONTENT_LENGTH + value: "52428800" # 50 MB in bytes +``` + +Set to `0`, `none`, or `unlimited` for no limit (use with caution). diff --git a/src/app/docs/kagent/operations/operational-considerations/page.mdx b/src/app/docs/kagent/operations/operational-considerations/page.mdx index 4998b923..2a48d89a 100644 --- a/src/app/docs/kagent/operations/operational-considerations/page.mdx +++ b/src/app/docs/kagent/operations/operational-considerations/page.mdx @@ -4,6 +4,8 @@ pageOrder: 1 description: "Important operational considerations when running kagent in production." --- +import { Tabs, Tab } from '@/components/mdx/tabs'; + export const metadata = { title: "Operational Considerations", description: "Important operational considerations when running kagent in production.", @@ -14,6 +16,57 @@ export const metadata = { Review the following operational considerations when running kagent in production environments, including database configuration, high availability, and secret management. +## Secure execution environment + +Kagent supports Kubernetes security contexts to run agents and tool servers with reduced privileges. Configure `securityContext` and `podSecurityContext` on your Agent or ToolServer resources to enforce secure execution. + +Common settings include: + +- **`runAsNonRoot: true`**: Ensures the container does not run as root. +- **`runAsUser`**: Specifies the user ID for the container process. +- **`readOnlyRootFilesystem`**: Mounts the root filesystem as read-only when possible. + + + +
+Set these in `spec.declarative.deployment.podSecurityContext` and `spec.declarative.deployment.securityContext`. + +```yaml +spec: + type: Declarative + declarative: + deployment: + podSecurityContext: + runAsNonRoot: true + runAsUser: 1000 + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: false +``` +
+ +
+Set these in `spec.byo.deployment.podSecurityContext` and `spec.byo.deployment.securityContext`. + +```yaml +spec: + type: BYO + byo: + deployment: + podSecurityContext: + runAsNonRoot: true + runAsUser: 1000 + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: false +``` +
+ +At the Helm chart level, you can set global defaults with `podSecurityContext` and `securityContext` in your values. For more information, see the [Kubernetes SecurityContext documentation](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/). + ## Automatic agent restart on secret updates Kagent automatically restarts agents when you update the secrets that the agents reference. This restart ensures that agents pick up new API keys, TLS certificates, and other secret values without manual intervention. @@ -60,6 +113,24 @@ controller: - **Leader election**: Leader election uses Kubernetes leases and is handled automatically. - **Failover**: If the leader fails, another replica automatically becomes the leader. +## Proxy configuration for agent traffic + +When agents and MCP servers run behind an API gateway or proxy, you can configure kagent to route agent-to-agent and agent-to-MCP traffic through that proxy. Set `proxy.url` in your Helm values to the proxy endpoint. + +The proxy applies to: + +- Agent-to-agent traffic (when one agent invokes another as a tool) +- Agent-to-MCP-server traffic (when agents call ToolServers, Services, or RemoteMCPServers with internal Kubernetes URLs) + +Example Helm configuration: + +```yaml +proxy: + url: "http://proxy.kagent.svc.cluster.local:8080" +``` + +The controller rewrites internal URLs to use the proxy and sets the `x-kagent-host` header so the proxy can route requests to the correct backend. External URLs (for example, RemoteMCPServers pointing to `https://external.example.com`) are not rewritten. + ### Use PostgreSQL for scaling To scale the controller to multiple replicas, configure PostgreSQL as the database backend. You can enable PostgreSQL by using the Helm `--set` flag or values file. diff --git a/src/app/docs/kagent/resources/helm/page.mdx b/src/app/docs/kagent/resources/helm/page.mdx index 20aa3fb4..5e18e9bb 100644 --- a/src/app/docs/kagent/resources/helm/page.mdx +++ b/src/app/docs/kagent/resources/helm/page.mdx @@ -108,9 +108,9 @@ A Helm chart for kagent, built with Google ADK | controller.service.ports.port | int | `8083` | | | controller.service.ports.targetPort | int | `8083` | | | controller.service.type | string | `"ClusterIP"` | | -| controller.streaming.initialBufSize | string | `"4Ki"` | | -| controller.streaming.maxBufSize | string | `"1Mi"` | | -| controller.streaming.timeout | string | `"600s"` | | +| controller.streaming.initialBufSize | string | `"4Ki"` | Initial size of the A2A streaming buffer. | +| controller.streaming.maxBufSize | string | `"1Mi"` | Maximum size of the A2A streaming buffer. | +| controller.streaming.timeout | string | `"600s"` | Timeout for A2A streaming connections. | | controller.tolerations | list | `[]` | Node taints which will be tolerated for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). | | controller.volumeMounts | list | `[]` | | | controller.volumes | list | `[]` | | @@ -126,7 +126,7 @@ A Helm chart for kagent, built with Google ADK | grafana-mcp.resources.requests.cpu | string | `"100m"` | | | grafana-mcp.resources.requests.memory | string | `"128Mi"` | | | imagePullPolicy | string | `"IfNotPresent"` | | -| imagePullSecrets | list | `[]` | | +| imagePullSecrets | list | `[]` | Image pull secrets for pulling agent and tool images from private registries. You can also set `imagePullSecrets` per agent in the Agent `deployment` spec. | | kagent-tools.enabled | bool | `true` | | | kagent-tools.fullnameOverride | string | `"kagent-tools"` | | | kagent-tools.replicaCount | int | `1` | | @@ -178,7 +178,7 @@ A Helm chart for kagent, built with Google ADK | providers.openAI.apiKeySecretRef | string | `"kagent-openai"` | | | providers.openAI.model | string | `"gpt-4.1-mini"` | | | providers.openAI.provider | string | `"OpenAI"` | | -| proxy.url | string | `""` | | +| proxy.url | string | `""` | Proxy URL for routing agent-to-agent and agent-to-MCP traffic through a gateway (for example, `http://proxy.kagent.svc.cluster.local:8080`). When set, the controller routes internal Kubernetes URLs (agents, MCP servers, services) through this proxy. The proxy uses the `x-kagent-host` header for routing. Omit for direct connections. | | querydoc.image.pullPolicy | string | `"IfNotPresent"` | | | querydoc.image.registry | string | `"ghcr.io"` | | | querydoc.image.repository | string | `"kagent-dev/doc2vec/mcp"` | | diff --git a/src/app/docs/kagent/supported-providers/amazon-bedrock/page.mdx b/src/app/docs/kagent/supported-providers/amazon-bedrock/page.mdx index 8a53e50a..833e46b9 100644 --- a/src/app/docs/kagent/supported-providers/amazon-bedrock/page.mdx +++ b/src/app/docs/kagent/supported-providers/amazon-bedrock/page.mdx @@ -1,68 +1,115 @@ --- title: "Amazon Bedrock" pageOrder: 1 -description: "Use Amazon Bedrock models with kagent via the OpenAI Chat Completions API." +description: "Use Amazon Bedrock models with kagent via the native Bedrock provider or the OpenAI Chat Completions API." --- export const metadata = { title: "Amazon Bedrock", - description: "Use Amazon Bedrock models with kagent via the OpenAI Chat Completions API.", + description: "Use Amazon Bedrock models with kagent via the native Bedrock provider or the OpenAI Chat Completions API.", author: "kagent.dev" }; # Amazon Bedrock -You can use Amazon Bedrock models with kagent by leveraging AWS Bedrock's [OpenAI Chat Completions API](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions.html). +You can use Amazon Bedrock models with kagent in two ways: the native Bedrock provider (recommended) or the OpenAI-compatible API interface. -## Step 1: Prepare your AWS details +## Option 1: Native Bedrock provider + +The native Bedrock provider uses AWS IAM credentials and the Bedrock API directly. Use this option when you want the simplest configuration and full Bedrock feature support. + +### Step 1: Prepare your AWS credentials + +1. Create an IAM user or role with permissions for Bedrock. You need at least `bedrock:InvokeModel` for the models you use. For more information, see the [AWS Bedrock model access docs](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html). + +2. Choose the AWS region and Bedrock model. Refer to the [AWS Bedrock supported models documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html). + - Example regions: `us-east-1` or `us-west-2` + - Example model IDs: `us.anthropic.claude-sonnet-4-20250514-v1:0` or `amazon.titan-text-express-v1` + +3. Create a Kubernetes secret with your AWS credentials in the same namespace as your agent, typically `kagent`: + + ```bash + kubectl create secret generic bedrock-credentials -n kagent \ + --from-literal=AWS_ACCESS_KEY_ID= \ + --from-literal=AWS_SECRET_ACCESS_KEY= + ``` + +### Step 2: Create the ModelConfig + +```yaml +kubectl apply -f - < ``` -4. Create a Kubernetes secret that stores your AWS API key in the same namespace as your agent, typically `kagent`. +4. Create a Kubernetes secret that stores your AWS API key in the same namespace as your agent, typically `kagent`: ```bash kubectl create secret generic kagent-bedrock -n kagent --from-literal AWS_API_KEY=$AWS_API_KEY ``` -## Step 2: Create the ModelConfig - -1. Create a ModelConfig resource that uses the OpenAI-compatible API interface. - - ```yaml - kubectl apply -f - <.amazonaws.com/openai/v1`. | - -## Next Steps - - Now that you configured your Bedrock model, you can [create or update an agent](https://kagent.dev/docs/kagent/getting-started/first-agent) to use this model configuration. +### Step 2: Create the ModelConfig + +```yaml +kubectl apply -f - <.amazonaws.com/openai/v1`. | + +## Next steps + +Now that you have configured your Bedrock model, you can [create or update an agent](https://kagent.dev/docs/kagent/getting-started/first-agent) to use this model configuration. From b3efc109b9b1b5d8032b89790644404e646358cb Mon Sep 17 00:00:00 2001 From: Art Berger Date: Mon, 2 Feb 2026 16:53:43 -0500 Subject: [PATCH 5/6] rephrase Signed-off-by: Art Berger --- src/app/docs/kagent/examples/a2a-byo/page.mdx | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/app/docs/kagent/examples/a2a-byo/page.mdx b/src/app/docs/kagent/examples/a2a-byo/page.mdx index 114bfd75..1549d170 100644 --- a/src/app/docs/kagent/examples/a2a-byo/page.mdx +++ b/src/app/docs/kagent/examples/a2a-byo/page.mdx @@ -66,13 +66,11 @@ Now that you have your own custom agent image, you can create a BYO Agent resour 3. Create a BYO Agent resource. -
- For private container registries, add `imagePullSecrets` to reference a Secret that contains credentials for pulling the agent image. Create the secret with `kubectl create secret docker-registry my-registry-secret --docker-server= --docker-username= --docker-password= -n kagent`. - +
```yaml kubectl apply -f - < -
+
+ For agent images that are in private container registries, you can use an image pull secret with the credentials to the registry. + + First, create the Secret. + ```sh + kubectl create secret docker-registry my-registry-secret --docker-server= --docker-username= --docker-password= -n kagent + ``` + + Then, add `imagePullSecrets` to refer to the Secret that you just created. ```yaml kubectl apply -f - < Date: Tue, 3 Feb 2026 09:31:50 -0500 Subject: [PATCH 6/6] fix namespace refs Signed-off-by: Art Berger --- src/app/docs/kagent/concepts/agents/page.mdx | 5 +++-- src/app/docs/kagent/concepts/tools/page.mdx | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/app/docs/kagent/concepts/agents/page.mdx b/src/app/docs/kagent/concepts/agents/page.mdx index 1b9a4d64..6d9e9672 100644 --- a/src/app/docs/kagent/concepts/agents/page.mdx +++ b/src/app/docs/kagent/concepts/agents/page.mdx @@ -144,11 +144,12 @@ Here's how you could reference an existing agent (`promql-agent`) as a tool: # Referencing an existing agent as a tool (same namespace) - type: Agent agent: - ref: promql-agent + name: promql-agent # Referencing an agent in another namespace - type: Agent agent: - ref: other-namespace/promql-agent + name: promql-agent + namespace: other-namespace ``` ### MCP server endpoint diff --git a/src/app/docs/kagent/concepts/tools/page.mdx b/src/app/docs/kagent/concepts/tools/page.mdx index c472fc0a..f61b7d51 100644 --- a/src/app/docs/kagent/concepts/tools/page.mdx +++ b/src/app/docs/kagent/concepts/tools/page.mdx @@ -32,7 +32,8 @@ Example: Reference to a RemoteMCPServer in the `tools` namespace. tools: - type: McpServer mcpServer: - name: tools/kagent-tool-server + name: kagent-tool-server + namespace: tools kind: RemoteMCPServer toolNames: - k8s_get_resources @@ -72,7 +73,8 @@ You also have an option of using agents as tools. Any agent you create can be re tools: - type: Agent agent: - ref: other-namespace/promql-agent + name: promql-agent + namespace: other-namespace ``` ## MCP Tools