diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml index e4e993eac..7aea4175f 100644 --- a/.github/workflows/links.yml +++ b/.github/workflows/links.yml @@ -64,6 +64,7 @@ jobs: --config docs-link-checking/lychee.toml --root-dir "${{ github.workspace }}/public" --index-files index.html + --exclude-path public/docs/kubernetes/2.2.x --remap "^https://agentgateway\.dev/docs/ file:///${{ github.workspace }}/public/docs/" --remap "public/docs/observability public/docs/kubernetes/latest/observability" --remap "public/docs/resiliency public/docs/kubernetes/latest/resiliency" @@ -150,6 +151,7 @@ jobs: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SLACK_CHANNEL: "#doctopus-tests" ERRORS: ${{ steps.link-stats.outputs.errors }} + WARNINGS: ${{ steps.link-stats.outputs.warnings }} REDIRECTS: ${{ steps.link-stats.outputs.redirects }} ICON: ${{ steps.link-stats.outputs.icon }} REPOSITORY: ${{ github.repository }} diff --git a/assets/agw-docs/pages/agentgateway/about/policies.md b/assets/agw-docs/pages/agentgateway/about/policies.md index cbb8625bd..17a82a142 100644 --- a/assets/agw-docs/pages/agentgateway/about/policies.md +++ b/assets/agw-docs/pages/agentgateway/about/policies.md @@ -43,13 +43,13 @@ Some `backend` sub-fields have additional targeting restrictions. The `traffic` section supports an optional `phase` field that controls when the policy runs. When you set the phase to `PreRouting`, the policy runs before route selection. Because of this timing, `PreRouting` policies can only target a Gateway or ListenerSet. -For more information, see [Policy processing order](#processing-order) and [PreRouting filters](#prerouting-filters). +For more information, see [Policy processing order](#processing-order) and [PreRouting filters](#prerouting). ## Policy merging {#merging} When multiple policies target the same resource, agentgateway merges the policy sections on a **field level** (shallow merge). If two policies set the same field, the more specific policy takes precedence. -### Merge precedence +### Merge precedence {#merging-precedence} Each policy section follows a different precedence order based on the specificity of the target. The more specific the target, the higher the precedence. diff --git a/assets/agw-docs/pages/agentgateway/about/processing-order.md b/assets/agw-docs/pages/agentgateway/about/processing-order.md index d9b41317e..d3d831ef3 100644 --- a/assets/agw-docs/pages/agentgateway/about/processing-order.md +++ b/assets/agw-docs/pages/agentgateway/about/processing-order.md @@ -34,7 +34,7 @@ graph LR 3. **PostRouting traffic policies:** Run after route selection. [PostRouting](#postrouting) is the default phase for traffic policies and supports all traffic filters. 4. **Backend policies:** Run when the gateway connects to the destination backend, including backend TLS, authentication, and health checking. -Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. For details, see [merge precedence](#merging). +Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. ## Traffic filter execution order diff --git a/assets/agw-docs/pages/agentgateway/guardrails.md b/assets/agw-docs/pages/agentgateway/guardrails.md index e6b5de479..9a4830b79 100644 --- a/assets/agw-docs/pages/agentgateway/guardrails.md +++ b/assets/agw-docs/pages/agentgateway/guardrails.md @@ -26,7 +26,7 @@ By applying guardrails to both input and output, you can: ### Support for guardrails {#about-guardrail-support} -{{< reuse "agw-docs/snippets/agentgateway-capital.md" >}} includes built-in [prompt guards]({{< link-hextra path="/llm/prompt-guards/">}}) to reject, mask, or pass prompt data through a moderation endpoint. +{{< reuse "agw-docs/snippets/agentgateway-capital.md" >}} includes built-in [prompt guards]({{< link-hextra path="/llm/guardrails/">}}) to reject, mask, or pass prompt data through a moderation endpoint. However, you might want to bring your own guardrails for situations such as: diff --git a/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md b/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md index 6845ffc79..017731efa 100644 --- a/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md +++ b/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md @@ -244,5 +244,4 @@ kubectl delete secret anthropic-secret -n agentgateway-system --ignore-not-found {{< cards >}} {{< card path="/tutorials/claude-code-proxy" title="Claude Code Proxy Tutorial" subtitle="Full walkthrough with prompt guards and observability" >}} {{< card path="/llm/providers/anthropic" title="Anthropic Provider" subtitle="Complete Anthropic provider configuration" >}} - {{< card path="/tutorials/ai-prompt-guard" title="AI Prompt Guard" subtitle="Block sensitive content in prompts" >}} {{< /cards >}} diff --git a/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md b/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md index 0a98f4057..0d6150e81 100644 --- a/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md +++ b/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md @@ -100,6 +100,5 @@ export ANTHROPIC_BASE_URL="http://localhost:4000" {{< cards >}} {{< card path="/llm/providers/anthropic" title="Anthropic provider" subtitle="Complete Anthropic provider configuration" >}} - {{< card path="/tutorials/ai-prompt-guard" title="AI prompt guard" subtitle="Advanced prompt guard patterns" >}} {{< card path="/llm/prompt-guards/" title="Prompt guards" subtitle="Set up guardails for LLM requests and responses" >}} {{< /cards >}} diff --git a/assets/agw-docs/pages/agentgateway/llm/functions.md b/assets/agw-docs/pages/agentgateway/llm/functions.md index da96b5d04..d7764b54f 100644 --- a/assets/agw-docs/pages/agentgateway/llm/functions.md +++ b/assets/agw-docs/pages/agentgateway/llm/functions.md @@ -44,7 +44,7 @@ sequenceDiagram ### Behavior with other AI features {#about-behavior} -Keep in mind the following behaviors when using function calling with other agentgateway features. For more details about these features, see the [API docs]({{< link-hextra path="/reference/api/#aitrafficpolicy" >}}). +Keep in mind the following behaviors when using function calling with other agentgateway features. For more details about these features, see the [API docs]({{< link-hextra path="/reference/api/#backendai" >}}). * Streaming responses: You can stream responses that call functions. * Semantic caching: Function calls are not cached. diff --git a/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md b/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md index e1562eaeb..6ae99ccf4 100644 --- a/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md +++ b/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md @@ -64,7 +64,7 @@ Configure [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-foundry/?vie | `ai.provider.azureopenai` | Define the Azure OpenAI provider. | | `azureopenai.endpoint` | The endpoint of the Azure OpenAI deployment that you created, such as `my-endpoint.cognitiveservices.azure.com`. | | `azureopenai.deployment` | The name of the Azure OpenAI model deployment that you created earlier. For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/how-to/deploy-foundry-models?view=foundry).| - | `azureopenai.apiVersion` | The version of the Azure OpenAI API to use. For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-foundry/?view=foundry-classicreference#api-specs).| + | `azureopenai.apiVersion` | The version of the Azure OpenAI API to use. For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/foundry/?view=foundry-classicreference#api-specs).| | `policies.auth` | Configure the authentication token for Azure OpenAI API. The example refers to the secret that you previously created. The token is automatically sent in the `api-key` header.| 6. Create an HTTPRoute resource that routes incoming traffic to the {{< reuse "agw-docs/snippets/backend.md" >}}. The following example sets up a route. Note that {{< reuse "agw-docs/snippets/kgateway.md" >}} automatically rewrites the endpoint to the appropriate chat completion endpoint of the LLM provider for you, based on the LLM provider that you set up in the {{< reuse "agw-docs/snippets/backend.md" >}} resource. diff --git a/assets/agw-docs/pages/landing.md b/assets/agw-docs/pages/landing.md index 9fd26e5c0..d85d86ede 100644 --- a/assets/agw-docs/pages/landing.md +++ b/assets/agw-docs/pages/landing.md @@ -84,7 +84,7 @@ Enable secure communication between AI agents using the [Agent-to-Agent (A2A)](h - **Authentication**: JWT, API keys, basic auth, MCP auth spec - **Authorization**: Fine-grained RBAC with [Cedar policy engine](https://www.cedarpolicy.com/) - **Traffic policies**: Rate limiting, CORS, TLS, external authz -- **Observability**: Built-in [OpenTelemetry](https://opentelemetry.io/) metrics, logs, and distributed tracing +- **Observability**: Built-in [OpenTelemetry](https://opentelemetry.io) metrics, logs, and distributed tracing ### Platform Agnostic diff --git a/assets/agw-docs/pages/resiliency/connection.md b/assets/agw-docs/pages/resiliency/connection.md index 74d62662c..95b37c3dc 100644 --- a/assets/agw-docs/pages/resiliency/connection.md +++ b/assets/agw-docs/pages/resiliency/connection.md @@ -243,7 +243,7 @@ EOF Manage idle and stale connections with HTTP/2 keepalive. {{< cards >}} - {{< card path="/resiliency/keepalive/#http-keepalive" title="Keepalive" subtitle="COnfigure keepalive connection settings." >}} + {{< card path="/resiliency/keepalive/#http-keepalive" title="Keepalive" subtitle="Configure keepalive connection settings." >}} {{< /cards >}} diff --git a/assets/agw-docs/pages/resiliency/keepalive.md b/assets/agw-docs/pages/resiliency/keepalive.md index 1b06775fa..a735589af 100644 --- a/assets/agw-docs/pages/resiliency/keepalive.md +++ b/assets/agw-docs/pages/resiliency/keepalive.md @@ -6,7 +6,7 @@ With keepalive, the kernel sends probe packets with only an acknowledgement flag {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} -## TCP keepalive +## TCP keepalive {#tcp-keepalive} Keep the TCP connection alive by sending out probes after the connection has been idle for a specific amount of time. @@ -93,7 +93,7 @@ Keep the TCP connection alive by sending out probes after the connection has bee kubectl delete {{< reuse "agw-docs/snippets/trafficpolicy.md" >}} httpbin-keepalive -n httpbin ``` -## HTTP keepalive +## HTTP keepalive {#http-keepalive} Keep the HTTP connection alive by sending out probes after the connection has been idle for a specific amount of time. diff --git a/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md b/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md index 6fc56bc95..74d81baa3 100644 --- a/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md +++ b/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md @@ -199,7 +199,7 @@ Create an HTTPS listener so that the gateway can route gRPC traffic. GRPCRoute r ## Create a GRPCRoute {#create-grpcroute} -1. Create the GRPCRoute resource. Include the `grpc.reflection.v1alpha.ServerReflection` method to enable dynamic API exploration. For detailed information about GRPCRoute fields and configuration options, see the [Gateway API GRPCRoute documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GRPCRoute). +1. Create the GRPCRoute resource. Include the `grpc.reflection.v1alpha.ServerReflection` method to enable dynamic API exploration. For detailed information about GRPCRoute fields and configuration options, see the [Gateway API GRPCRoute documentation](https://gateway-api.sigs.k8s.io/reference/spec/#grpcroute). ```yaml kubectl apply -f - <}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} diff --git a/assets/agw-docs/pages/traffic-management/redirect/https.md b/assets/agw-docs/pages/traffic-management/redirect/https.md index ebaf69acc..01ce75cf0 100644 --- a/assets/agw-docs/pages/traffic-management/redirect/https.md +++ b/assets/agw-docs/pages/traffic-management/redirect/https.md @@ -1,6 +1,6 @@ Redirect HTTP traffic to HTTPS. -For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} diff --git a/assets/agw-docs/pages/traffic-management/redirect/path.md b/assets/agw-docs/pages/traffic-management/redirect/path.md index 9397db55c..cbb3955e7 100644 --- a/assets/agw-docs/pages/traffic-management/redirect/path.md +++ b/assets/agw-docs/pages/traffic-management/redirect/path.md @@ -1,6 +1,6 @@ Redirect requests to a different path prefix. -For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} diff --git a/assets/agw-docs/pages/traffic-management/traffic-split.md b/assets/agw-docs/pages/traffic-management/traffic-split.md index a65f66c59..733540b54 100644 --- a/assets/agw-docs/pages/traffic-management/traffic-split.md +++ b/assets/agw-docs/pages/traffic-management/traffic-split.md @@ -93,7 +93,7 @@ This example demonstrates A/B testing and canary deployments by distributing tra |Setting|Description| |--|--| - |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app#deploy-app/" >}}). | + |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/" >}}). | |`spec.hostnames`| The hostname for which you want to apply traffic splitting.| |`spec.rules.matches.path`|The path prefix to match on. In this example, `/` is used. | |`spec.rules.backendRefs`| A list of services you want to forward traffic to. Use the `weight` option to define the amount of traffic that you want to forward to each service. | diff --git a/assets/agw-docs/snippets/agentgateway-setup.md b/assets/agw-docs/snippets/agentgateway-setup.md index 07988135e..0857f6713 100644 --- a/assets/agw-docs/snippets/agentgateway-setup.md +++ b/assets/agw-docs/snippets/agentgateway-setup.md @@ -1,4 +1,4 @@ -1. Create a Gateway that uses the `{{< reuse "agw-docs/snippets/agw-gatewayclass.md" >}}` GatewayClass. The following example sets up a Gateway that uses the [default agentgateway proxy template](https://github.com/agentgateway/agentgateway/blob/main/controller/pkg/kgateway/helm/agentgateway/templates/deployment.yaml). +1. Create a Gateway that uses the `{{< reuse "agw-docs/snippets/agw-gatewayclass.md" >}}` GatewayClass. The following example sets up a Gateway that uses the [default agentgateway proxy template](https://github.com/agentgateway/agentgateway/blob/main/controller/pkg/helm/agentgateway/templates/deployment.yaml). ```sh {paths="all"} kubectl apply -f- <Azure - +

JWT Authorization

@@ -649,7 +649,7 @@ setTimeout(function() { btn.textContent = 'Copy'; }, 2000); Security
- +

AI Prompt Guard

@@ -826,7 +826,7 @@ function showK8sOption(option) { Support for industry standard AI protocols for agent and tool connectivity including A2A and MCP with the ability to automatically expose existing REST APIs as MCP-native tools.

- +

Developer Portal

diff --git a/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md b/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md index f7c3a6659..9997f5066 100644 --- a/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md +++ b/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md @@ -47,7 +47,7 @@ In real enterprise deployments, security and reliability aren't optional. That's * Local and remote rate limiting * JWT authentication and external auth, (ie, extAuthz) hooks * Upstream auth (cloud identity, TLS, etc) -* Full [OpenTelemetry](https://opentelemetry.io/) support for metrics, logs, and distributed tracing +* Full [OpenTelemetry](https://opentelemetry.io) support for metrics, logs, and distributed tracing These controls allow you to run production-grade agent infrastructure that meets enterprise security and observability requirements. diff --git a/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md b/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md index da5f461d4..d42677838 100644 --- a/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md +++ b/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md @@ -442,7 +442,7 @@ Now that you have path-based LLM routing working, there's a lot more you can do * **Multiple providers on one route** — group backends for automatic load balancing and failover. Agentgateway picks two random providers and selects the healthiest one. * **Prompt guarding** — add `AgentgatewayPolicy` resources for regex-based prompt filtering or webhook-based validation before requests hit your LLM. * **Rate limiting** — protect your API keys and budgets with local or remote rate limiting policies. -* **Observability** — enable full [OpenTelemetry](https://opentelemetry.io/) support for metrics, logs, and distributed tracing across all your LLM traffic. +* **Observability** — enable full [OpenTelemetry](https://opentelemetry.io) support for metrics, logs, and distributed tracing across all your LLM traffic. Check out the [agentgateway docs](https://agentgateway.dev/docs/kubernetes/latest/quickstart/) for more, or come chat with us on [Discord](https://discord.com/invite/y9efgEmppm). diff --git a/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md b/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md index e8530add1..36967e169 100644 --- a/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md +++ b/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md @@ -15,7 +15,7 @@ scale across nodes and data centers. This shift is exactly why [agentgateway](https://agentgateway.dev/), [llm-d](https://llm-d.ai/), and the [Gateway API Inference Extension (GIE)](https://gateway-api-inference-extension.sigs.k8s.io/) belong together. -[llm-d](https://llm-d.ai/docs/architecture/) is pushing new frontiers in intelligent scheduling, prefill/decode +[llm-d](https://llm-d.ai/docs/architecture) is pushing new frontiers in intelligent scheduling, prefill/decode disaggregation, tiered KV caching, and workload-aware autoscaling. [Agentgateway](https://github.com/agentgateway/agentgateway/releases/tag/v1.0.0) has quickly developed into a production-ready high performance AI gateway for LLM, MCP, A2A, and Kubernetes-native inference traffic. GIE has become the standard contract between the gateway layer and inference-aware scheduling. @@ -75,7 +75,7 @@ Each layer does a different job. conformant gateway. - **GIE** gives you the shared language between the gateway and the inference scheduler. Its [InferencePool](https://gateway-api-inference-extension.sigs.k8s.io/api-types/inferencepool/) API and [extension protocol](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/v1.4.0/docs/proposals/004-endpoint-picker-protocol/README.md) let gateways route inference traffic without hard-coding scheduler behavior into the gateway itself. - **llm-d** gives you the serving intelligence. Its architecture focuses on [intelligent inference scheduling, prefill/decode disaggregation, - wide expert parallelism, tiered KV prefix caching, and workload autoscaling](https://llm-d.ai/docs/architecture/). + wide expert parallelism, tiered KV prefix caching, and workload autoscaling](https://llm-d.ai/docs/architecture). The clean separation while being integrated through standard interfaces is the superpower. agentgateway does not need to reimplement llm-d's scheduler logic. llm-d does not need to reinvent gateway functionality, security policy, or Kubernetes networking APIs. GIE is the thread that stitches them all together. @@ -84,7 +84,7 @@ That makes the stack easier to understand and evolve over time. ## Why this combination matters right now The [llm-d inference scheduler](https://github.com/llm-d/llm-d-inference-scheduler) makes this relationship explicit. Its Endpoint Picker -extends GIE and adds llm-d-specific capabilities such as P/D disaggregation. At the same time, the [llm-d architecture](https://llm-d.ai/docs/architecture/) +extends GIE and adds llm-d-specific capabilities such as P/D disaggregation. At the same time, the [llm-d architecture](https://llm-d.ai/docs/architecture) leans into the exact optimizations that operators care about most: - Prefix-cache-aware routing diff --git a/content/blog/2026-03-25-agentgateway-one-year-anniversary.md b/content/blog/2026-03-25-agentgateway-one-year-anniversary.md index 715fec93c..d2e480a96 100644 --- a/content/blog/2026-03-25-agentgateway-one-year-anniversary.md +++ b/content/blog/2026-03-25-agentgateway-one-year-anniversary.md @@ -19,7 +19,8 @@ Since we donated the project to the Linux Foundation in August 2025, we have wit We have over 2,000 GitHub stars on [agentgateway’s main repository](https://github.com/agentgateway/agentgateway), with continuing growth. Thank you everyone who starred the agentgateway repo. -![Star History Chart](https://api.star-history.com/image?repos=agentgateway/agentgateway&type=date&legend=top-left) +{{< reuse-image src="img/blog/1year-anniversary/star-history-2026331.png" width="800px" >}} +{{< reuse-image-dark srcDark="img/blog/1year-anniversary/star-history-2026331.png" width="800px" >}} Scroll through birthday wishes from some of our users and contributors. diff --git a/content/docs/kubernetes/latest/llm/_index.md b/content/docs/kubernetes/latest/llm/_index.md index d7b145c85..89c08fbb2 100644 --- a/content/docs/kubernetes/latest/llm/_index.md +++ b/content/docs/kubernetes/latest/llm/_index.md @@ -16,12 +16,11 @@ Consume services from LLM providers. {{< card link="load-balancing" title="Load balancing" subtitle="P2C, intelligent routing, automatic failover" >}} {{< card link="failover" title="Model failover" subtitle="Priority groups, automatic fallback" >}} {{< card link="content-routing" title="Content-based routing" subtitle="Route by model name, custom fields, body-based routing" >}} - {{< card link="prompt-guards" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} + {{< card link="guardrails" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} {{< card link="prompt-enrichment" title="Enrich prompts" subtitle="System prompts, user prompts, prompt management" >}} {{< card link="prompt-templates" title="Use prompt templates" subtitle="Static and dynamic templating, variable injection" >}} {{< card link="functions" title="Call functions" subtitle="Extend LLMs with external APIs and tools" >}} {{< card link="transformations" title="Transform requests" subtitle="Dynamically transform LLM requests with CEL" >}} - {{< card link="guardrail-api" title="Guardrail Webhook API" subtitle="Custom guardrail controls via webhooks" >}} {{< card link="cost-tracking" title="Track LLM costs" subtitle="Cost tracking, spend monitoring, usage tracking" >}} {{< card link="observability" title="View metrics and logs" subtitle="Token usage, prompt logging, LLM-specific metrics" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/_index.md b/content/docs/kubernetes/latest/tutorials/_index.md index c9616263a..34c0a1059 100644 --- a/content/docs/kubernetes/latest/tutorials/_index.md +++ b/content/docs/kubernetes/latest/tutorials/_index.md @@ -25,7 +25,6 @@ Learn how to deploy and manage agentgateway on Kubernetes through hands-on tutor {{< cards >}} {{< card link="jwt-authorization" title="JWT Authorization" subtitle="Secure your gateway with JWT authentication" icon="lock-closed" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Protect LLM requests from sensitive data exposure" icon="shield-check" >}} {{< card link="claude-code-proxy" title="Claude Code CLI Proxy" subtitle="Proxy and secure Claude Code CLI traffic through the gateway" icon="terminal" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/basic/_index.md b/content/docs/kubernetes/latest/tutorials/basic/_index.md index ab5970ead..b99e2f121 100644 --- a/content/docs/kubernetes/latest/tutorials/basic/_index.md +++ b/content/docs/kubernetes/latest/tutorials/basic/_index.md @@ -262,6 +262,6 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/tutorials/mcp-federation" title="MCP Federation" subtitle="Federate multiple MCP servers" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md b/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md index 032516f54..0f89ad56d 100644 --- a/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md +++ b/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md @@ -306,6 +306,6 @@ kind delete cluster --name agentgateway ## Next steps {{< cards >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/telemetry/_index.md b/content/docs/kubernetes/latest/tutorials/telemetry/_index.md index be05ed6d0..2ea2b9570 100644 --- a/content/docs/kubernetes/latest/tutorials/telemetry/_index.md +++ b/content/docs/kubernetes/latest/tutorials/telemetry/_index.md @@ -309,5 +309,5 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/observability/" title="Observability Reference" subtitle="Complete observability configuration" >}} {{< card path="/observability/otel-stack" title="OTel Stack" subtitle="Full OpenTelemetry stack setup" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/llm/_index.md b/content/docs/kubernetes/main/llm/_index.md index d7b145c85..89c08fbb2 100644 --- a/content/docs/kubernetes/main/llm/_index.md +++ b/content/docs/kubernetes/main/llm/_index.md @@ -16,12 +16,11 @@ Consume services from LLM providers. {{< card link="load-balancing" title="Load balancing" subtitle="P2C, intelligent routing, automatic failover" >}} {{< card link="failover" title="Model failover" subtitle="Priority groups, automatic fallback" >}} {{< card link="content-routing" title="Content-based routing" subtitle="Route by model name, custom fields, body-based routing" >}} - {{< card link="prompt-guards" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} + {{< card link="guardrails" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} {{< card link="prompt-enrichment" title="Enrich prompts" subtitle="System prompts, user prompts, prompt management" >}} {{< card link="prompt-templates" title="Use prompt templates" subtitle="Static and dynamic templating, variable injection" >}} {{< card link="functions" title="Call functions" subtitle="Extend LLMs with external APIs and tools" >}} {{< card link="transformations" title="Transform requests" subtitle="Dynamically transform LLM requests with CEL" >}} - {{< card link="guardrail-api" title="Guardrail Webhook API" subtitle="Custom guardrail controls via webhooks" >}} {{< card link="cost-tracking" title="Track LLM costs" subtitle="Cost tracking, spend monitoring, usage tracking" >}} {{< card link="observability" title="View metrics and logs" subtitle="Token usage, prompt logging, LLM-specific metrics" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/_index.md b/content/docs/kubernetes/main/tutorials/_index.md index c9616263a..34c0a1059 100644 --- a/content/docs/kubernetes/main/tutorials/_index.md +++ b/content/docs/kubernetes/main/tutorials/_index.md @@ -25,7 +25,6 @@ Learn how to deploy and manage agentgateway on Kubernetes through hands-on tutor {{< cards >}} {{< card link="jwt-authorization" title="JWT Authorization" subtitle="Secure your gateway with JWT authentication" icon="lock-closed" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Protect LLM requests from sensitive data exposure" icon="shield-check" >}} {{< card link="claude-code-proxy" title="Claude Code CLI Proxy" subtitle="Proxy and secure Claude Code CLI traffic through the gateway" icon="terminal" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/basic/_index.md b/content/docs/kubernetes/main/tutorials/basic/_index.md index ab5970ead..b99e2f121 100644 --- a/content/docs/kubernetes/main/tutorials/basic/_index.md +++ b/content/docs/kubernetes/main/tutorials/basic/_index.md @@ -262,6 +262,6 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/tutorials/mcp-federation" title="MCP Federation" subtitle="Federate multiple MCP servers" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md b/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md index 032516f54..0f89ad56d 100644 --- a/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md +++ b/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md @@ -306,6 +306,6 @@ kind delete cluster --name agentgateway ## Next steps {{< cards >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/telemetry/_index.md b/content/docs/kubernetes/main/tutorials/telemetry/_index.md index be05ed6d0..2ea2b9570 100644 --- a/content/docs/kubernetes/main/tutorials/telemetry/_index.md +++ b/content/docs/kubernetes/main/tutorials/telemetry/_index.md @@ -309,5 +309,5 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/observability/" title="Observability Reference" subtitle="Complete observability configuration" >}} {{< card path="/observability/otel-stack" title="OTel Stack" subtitle="Full OpenTelemetry stack setup" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-guards/_index.md b/content/docs/standalone/latest/llm/prompt-guards/_index.md index b2c1f8754..c30573cc4 100644 --- a/content/docs/standalone/latest/llm/prompt-guards/_index.md +++ b/content/docs/standalone/latest/llm/prompt-guards/_index.md @@ -18,12 +18,12 @@ To set up guardrails, check out the following guides. {{< card link="moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/prompt-guards/webhook" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} To track guardrails and content safety, see the following guide. {{< cards >}} - {{< card path="/observability/" title="Observe LLM traffic" description="Track content safety metrics and blocked requests." >}} + {{< card path="/llm/observability/" title="Observe LLM traffic" description="Track content safety metrics and blocked requests." >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-guards/overview.md b/content/docs/standalone/latest/llm/prompt-guards/overview.md index 3256572b0..012a2fd69 100644 --- a/content/docs/standalone/latest/llm/prompt-guards/overview.md +++ b/content/docs/standalone/latest/llm/prompt-guards/overview.md @@ -99,7 +99,7 @@ Check out the following guides to build your guardrail system. {{< card link="../moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="../bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="../google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/guardrails/webhook/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="../multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-templates.md b/content/docs/standalone/latest/llm/prompt-templates.md index d10e25811..ba3e4a1f7 100644 --- a/content/docs/standalone/latest/llm/prompt-templates.md +++ b/content/docs/standalone/latest/llm/prompt-templates.md @@ -231,6 +231,6 @@ llm: ## Next steps -- Learn about [CEL expressions]({{< link-hextra path="reference/cel/">}}) for advanced expression logic. +- Learn about [CEL expressions]({{< link-hextra path="/reference/cel/">}}) for advanced expression logic. - Explore [transformations]({{< link-hextra path="/llm/transformations/" >}}) for more LLM request transformation examples. -- Set up [authentication]({{< link-hextra path="configuration/security/jwt-authn/" >}}) to use JWT claims in transformations. +- Set up [authentication]({{< link-hextra path="/configuration/security/jwt-authn/" >}}) to use JWT claims in transformations. diff --git a/content/docs/standalone/latest/tutorials/_index.md b/content/docs/standalone/latest/tutorials/_index.md index 2b9daf3d1..326ea268b 100644 --- a/content/docs/standalone/latest/tutorials/_index.md +++ b/content/docs/standalone/latest/tutorials/_index.md @@ -30,7 +30,6 @@ Learn how to use agentgateway through hands-on tutorials. Start with the basics {{< card link="tls" title="TLS / HTTPS" subtitle="Enable encrypted connections" icon="shield-check" >}} {{< card link="oauth2-proxy" title="OAuth2 Proxy" subtitle="GitHub, Google, Azure AD authentication" icon="user-circle" >}} {{< card link="tailscale-auth" title="Tailscale Authentication" subtitle="Zero-trust access with Tailscale" icon="globe-alt" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Block prompt injection and PII" icon="shield-exclamation" >}} {{< /cards >}} ## Operations diff --git a/content/docs/standalone/main/llm/prompt-guards/overview.md b/content/docs/standalone/main/llm/prompt-guards/overview.md index 864e93095..012a2fd69 100644 --- a/content/docs/standalone/main/llm/prompt-guards/overview.md +++ b/content/docs/standalone/main/llm/prompt-guards/overview.md @@ -99,7 +99,7 @@ Check out the following guides to build your guardrail system. {{< card link="../moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="../bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="../google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/guardrails/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="../multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} diff --git a/content/docs/standalone/main/tutorials/_index.md b/content/docs/standalone/main/tutorials/_index.md index 2b9daf3d1..326ea268b 100644 --- a/content/docs/standalone/main/tutorials/_index.md +++ b/content/docs/standalone/main/tutorials/_index.md @@ -30,7 +30,6 @@ Learn how to use agentgateway through hands-on tutorials. Start with the basics {{< card link="tls" title="TLS / HTTPS" subtitle="Enable encrypted connections" icon="shield-check" >}} {{< card link="oauth2-proxy" title="OAuth2 Proxy" subtitle="GitHub, Google, Azure AD authentication" icon="user-circle" >}} {{< card link="tailscale-auth" title="Tailscale Authentication" subtitle="Zero-trust access with Tailscale" icon="globe-alt" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Block prompt injection and PII" icon="shield-exclamation" >}} {{< /cards >}} ## Operations diff --git a/layouts/shortcodes/card.html b/layouts/shortcodes/card.html index b67c22ba5..550f9d049 100644 --- a/layouts/shortcodes/card.html +++ b/layouts/shortcodes/card.html @@ -3,13 +3,13 @@ {{- if $path }} {{- $pathTrimmed := strings.TrimPrefix "/" $path -}} {{- $section := "" -}} - {{- with findRE `^/docs/(?:kubernetes|standalone)/(?:latest|main)` .Page.RelPermalink }}{{ $section = index . 0 }}{{ end -}} + {{- with findRE `^/docs/(?:kubernetes|standalone)/(?:latest|main|\d+\.\d+\.[x\d]+)` .Page.RelPermalink }}{{ $section = index . 0 }}{{ end -}} {{- if not $section }}{{ $section = strings.TrimSuffix "/" .Page.FirstSection.RelPermalink }}{{ end -}} {{- $section = replaceRE `^https?://[^/]+` "" $section -}} {{- $section = replaceRE `^/localhost:[^/]+` "" $section -}} {{- if not (hasPrefix $section "/") }}{{ $section = printf "/%s" $section }}{{ end -}} {{- $link = printf "%s/%s" $section $pathTrimmed -}} - {{- if not (strings.HasSuffix $link "/") }}{{ $link = printf "%s/" $link }}{{ end -}} + {{- if and (not (strings.HasSuffix $link "/")) (not (in $link "#")) }}{{ $link = printf "%s/" $link }}{{ end -}} {{- range (seq 10) }}{{ $link = replace $link "//" "/" }}{{ end -}} {{- end -}}