```plaintext
%% Handler Deployment Strategy (ADR-0019)
%% C4 Component diagram showing platform layers with Ray cluster
flowchart TB
subgraph platform["🏗️ Platform Layer"]
direction LR
kubeflow["📊 Kubeflow
Pipelines"]
kserve["🎯 KServe
(visibility)"]
mlflow["📈 MLflow
(registry)"]
end
subgraph ray["⚡ Ray Cluster"]
direction TB
subgraph gpu_apps["🎮 GPU Inference (Workers)"]
direction LR
llm["/llm
vLLM
🟢 khelben 0.95 GPU"]
whisper["/whisper
Whisper
🟡 elminster 0.5 GPU"]
tts["/tts
XTTS
🟡 elminster 0.5 GPU"]
embeddings["/embeddings
BGE
🔴 drizzt 0.8 GPU"]
reranker["/reranker
BGE
🔵 danilo 0.8 GPU"]
end
subgraph cpu_apps["🖥️ CPU Handlers (Head Node)"]
direction LR
chat["/chat
ChatHandler
0 GPU"]
voice["/voice
VoiceHandler
0 GPU"]
end
end
subgraph support["🔧 Supporting Services"]
direction LR
nats["📨 NATS
(events)"]
milvus["🔍 Milvus
(vectors)"]
valkey["💾 Valkey
(cache)"]
end
subgraph pypi["📦 Package Registry"]
gitea_pypi["Gitea PyPI
• handler-base
• chat-handler
• voice-assistant"]
end
%% Connections
kubeflow --> ray
kserve --> ray
mlflow --> ray
cpu_apps -->|"Ray internal calls"| gpu_apps
cpu_apps --> nats
cpu_apps --> milvus
cpu_apps --> valkey
gitea_pypi -->|"pip install
runtime_env"| cpu_apps
classDef platform fill:#9b59b6,color:white
classDef gpu fill:#e74c3c,color:white
classDef cpu fill:#3498db,color:white
classDef support fill:#27ae60,color:white
classDef registry fill:#f39c12,color:black
class kubeflow,kserve,mlflow platform
class llm,whisper,tts,embeddings,reranker gpu
class chat,voice cpu
class nats,milvus,valkey support
class gitea_pypi registry
```