NemoClaw Agentic Workflows & PHI Security
Deploying agents in clinical environments requires isolating Protected Health Information (PHI) while permitting models to execute reasoning loops. NemoClaw combines foundation models with a ReAct orchestration layer to implement strict de-identification/re-identification boundaries.
| Addon | Cloud (EKS/AKS/GKE) | On-prem (kubeadm/RKE2) | OpenShift |
|---|---|---|---|
| Cilium CNI | deployed | deployed | β OVN-Kubernetes (built-in) |
| Istio service mesh | |||
| MetalLB | β cloud LB used | ||
| Cloud CSI driver | EBS/Disk/PD | β Longhorn / Rook-Ceph | β ODF (Ceph) |
| Longhorn storage | β cloud CSI used | β ODF used | |
| Kyverno | β SCC + OPA only | ||
| OPA Gatekeeper | |||
| Nvidia GPU Operator | via OperatorHub | ||
| cert-manager | |||
| NemoClaw / NIM |
Safety & Guardrails for Clinical AI
Workloads deployed inside the clinical-apps and clinical-data namespaces must implement strict boundary parameters using K8s native admission policies and service meshes:
1. Cilium Network Policy β Clinical Data Namespace Isolation
Enforces strict zero-trust isolation on the clinical-data namespace, preventing arbitrary traffic ingress and egress.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: clinical-data-isolation
namespace: clinical-data
spec:
endpointSelector: {}
ingress:
- fromEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: nemo-agents
toPorts:
- ports:
- port: "8080"
protocol: TCP
rules:
http:
- method: GET
path: /fhir/r4/.*
- fromEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: clinical-apps
- fromEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: monitoring
toPorts:
- ports:
- port: "9090"
egress:
- toEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: "53"
protocol: UDP
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: clinical-data
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
2. Istio PeerAuthentication & AuthorizationPolicy
Enforces strict mTLS in-transit encryption and explicitly validates SPIFFE identities.
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: clinical-data-mtls-strict
namespace: clinical-data
spec:
mtls:
mode: STRICT
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: fhir-server-allow
namespace: clinical-data
spec:
selector:
matchLabels:
app: hapi-fhir
action: ALLOW
rules:
- from:
- source:
principals:
- "cluster.local/ns/nemo-agents/sa/drug-interaction-agent"
- "cluster.local/ns/nemo-agents/sa/diagnostic-agent"
- "cluster.local/ns/nemo-agents/sa/radiology-agent"
- "cluster.local/ns/clinical-apps/sa/clinician-app"
to:
- operation:
methods: ["GET"]
paths: ["/fhir/r4/*"]
when:
- key: request.auth.claims[aud]
values: ["fhir-server"]
3. Istio Egress Gateway for External Tool APIs
Forces all external agent requests through a centralized, audited egress gateway.
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: drugbank-external
namespace: nemo-agents
spec:
hosts:
- api.drugbank.com
ports:
- number: 443
name: https
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: nemo-agents-egress
namespace: nemo-agents
spec:
hosts:
- api.drugbank.com
- api.fda.gov
tls:
- match:
- port: 443
route:
- destination:
host: istio-egressgateway.istio-system.svc.cluster.local