Skip to content

Instantly share code, notes, and snippets.

View danielezonca's full-sized avatar

Daniele Zonca danielezonca

  • Red Hat
  • Milan, Italy
View GitHub Profile

NeMo Guardrails + MCP Gateway Integration

Preliminary design document for securing MCP Gateway traffic with NeMo Guardrails, orchestrated by the TrustyAI operator.

Problem Statement

MCP Gateway processes Model Context Protocol requests (tool calls, prompt fetches) through Envoy. Today, NeMo Guardrails deploys as a standalone service with no awareness of the gateway. Wiring them together requires manual deployment of the

@danielezonca
danielezonca / envoy-ai-gateway-composability-analysis.md
Created February 10, 2026 09:52
Envoy AI Gateway: Composability Feasibility Analysis - Istio Gateway Support

Envoy AI Gateway: Composability Feasibility Analysis

Analysis of making the Envoy AI Gateway composable across different gateway implementations (Envoy Gateway, Istio Gateway, and others).

Repository: envoyproxy/ai-gateway


Table of Contents

@danielezonca
danielezonca / envoy-ai-gateway-chat-completion-analysis.md
Created February 10, 2026 09:10
Envoy AI Gateway: Chat Completion Translation Architecture Analysis

Envoy AI Gateway: Chat Completion Translation Architecture

An analysis of how the Envoy AI Gateway converts between native third-party AI provider formats and a unified OpenAI-compatible API for chat completion endpoints.

Repository: envoyproxy/ai-gateway Documentation: aigateway.envoyproxy.io


Table of Contents

- kind: bridge
metadata:
name: my-bridge
- kind: source
metadata:
name: source-name
bridge_id: c64kfqla5bkhm18frpdg
connector_type_id: slack_source_0.1
connector_spec:
title Counterfactual (websocket)
AuditUI->TrustyService:CounterfactualRequest
activate TrustyService
note over TrustyService:Add distribution data\n(if available)
database Kafka
TrustyService->Kafka:CounterfactualRequest(id)
deactivate TrustyService
title Counterfactual (REST)
AuditUI->TrustyService:CounterfactualRequest
activate AuditUI
activate TrustyService
note over TrustyService:Add distribution data\n(if available)
TrustyService->ExplainableService:CounterfactualRequest(id)
activate ExplainableService
title Counterfactual (message)
AuditUI->TrustyService:CounterfactualRequest
activate AuditUI
activate TrustyService
note over TrustyService:Add distribution data\n(if available)
database Kafka
TrustyService->Kafka:CounterfactualRequest(id)
AuditUI<-TrustyService:CounterfactualRequest(id)
2020-12-10T15:10:38.0964400Z [ERROR] testPerturbCurrencyFeature Time elapsed: 0.008 s <<< ERROR!
2020-12-10T15:10:38.0965451Z java.lang.IllegalArgumentException
2020-12-10T15:10:38.0975367Z at java.base/java.util.Currency.getInstance(Currency.java:393)
2020-12-10T15:10:38.0986989Z at org.kie.kogito.explainability.model.TypeTest.testPerturbCurrencyFeature(TypeTest.java:234)
2020-12-10T15:10:38.0989425Z at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2020-12-10T15:10:38.0991564Z at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2020-12-10T15:10:38.1009678Z at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2020-12-10T15:10:38.1011820Z at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2020-12-10T15:10:38.1013513Z at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
2020-12-10T15:10:38.1031735Z at org.junit.jupiter.e
00:12:24.712 [main] DEBUG org.reflections.Reflections - could not scan file Jenkinsfile.quarkus in url file:/home/jenkins/workspace/KIE_kogito_kogito-quarkus_master/jenkins-tests/target/test-classes/ with scanner SubTypesScanner
org.reflections.ReflectionsException: could not create class object from file Jenkinsfile.quarkus
at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:32)
at org.reflections.Reflections.scan(Reflections.java:253)
at org.reflections.Reflections.scan(Reflections.java:202)
at org.reflections.Reflections.<init>(Reflections.java:123)
at com.homeaway.devtools.jenkins.testing.LocalProjectPipelineExtensionDetector.getClassesOfTypeInPackage(LocalProjectPipelineExtensionDetector.java:61)
at com.homeaway.devtools.jenkins.testing.LocalProjectPipelineExtensionDetector$getClassesOfTypeInPackage.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ kogito-drools ---
[INFO] org.kie.kogito:kogito-drools:jar:1.0.0-SNAPSHOT
[INFO] +- org.kie.kogito:drools-core:jar:1.0.0-SNAPSHOT:compile
[INFO] | +- org.drools:drools-core:jar:7.45.0.Final:compile
[INFO] | | +- org.kie.soup:kie-soup-xstream:jar:7.45.0.Final:compile
[INFO] | | \- commons-codec:commons-codec:jar:1.11:compile
[INFO] | +- com.thoughtworks.xstream:xstream:jar:1.4.11.1:compile
[INFO] | | +- xmlpull:xmlpull:jar:1.1.3.1:compile
[INFO] | | \- xpp3:xpp3_min:jar:1.1.4c:compile
[INFO] | +- org.kie.kogito:kogito-api:jar:1.0.0-SNAPSHOT:compile