digraph deployment { rankdir=TB bgcolor="#0a0e17" fontname="Helvetica" node [fontname="Helvetica" fontsize=10 style=filled color="#1e2a4a" fontcolor="#e8eaf0"] edge [fontname="Helvetica" fontsize=9 fontcolor="#8892a8" color="#4a5568"] label="Deployment — Kind Cluster (dev) / EC2 (prod)" labelloc=t fontsize=14 fontcolor="#0066ff" user [label="Browser\nlocalhost:8040" fillcolor="#243056" shape=box] subgraph cluster_kind { label="Kind Cluster: unt (namespace: unt)" color="#0066ff" fontcolor="#0066ff" style=rounded subgraph cluster_frontend_pod { label="Pod: ui" color="#1e2a4a" fontcolor="#4a5568" ui [label="nginx\n:80\n\nVue SPA\nProxy → api:8000" fillcolor="#121829" shape=box] ui_svc [label="Service: ui\nNodePort 30040" fillcolor="#0d1a33" shape=diamond fontsize=9] } subgraph cluster_api_pod { label="Pod: api" color="#1e2a4a" fontcolor="#4a5568" api [label="uvicorn\n:8000\n\nFastAPI\nMCP clients (stdio)\nLangGraph agents" fillcolor="#121829" shape=box] api_svc [label="Service: api\nClusterIP" fillcolor="#0d1a33" shape=diamond fontsize=9] } subgraph cluster_langfuse_pod { label="Pod: langfuse" color="#1e2a4a" fontcolor="#4a5568" langfuse [label="Langfuse\n:3000\n\nTrace viewer" fillcolor="#121829" shape=box] langfuse_svc [label="Service: langfuse\nNodePort 30030" fillcolor="#0d1a33" shape=diamond fontsize=9] } subgraph cluster_pg_pod { label="Pod: postgres" color="#1e2a4a" fontcolor="#4a5568" pg [label="PostgreSQL\n:5432\n\nLangfuse data" fillcolor="#121829" shape=cylinder] pg_svc [label="Service: postgres\nClusterIP" fillcolor="#0d1a33" shape=diamond fontsize=9] } } subgraph cluster_external { label="External APIs" color="#00c853" fontcolor="#00c853" style=dashed ext_weather [label="OpenMeteo" fillcolor="#0d2a0d" shape=octagon fontcolor="#00c853"] ext_faa [label="FAA" fillcolor="#0d2a0d" shape=octagon fontcolor="#00c853"] ext_bedrock [label="AWS Bedrock" fillcolor="#243056" shape=octagon] ext_kong [label="Kong Konnect\n(optional)" fillcolor="#243056" shape=octagon style="filled,dashed"] } // Port mappings user -> ui_svc [label="host:8040 → 30040" color="#0066ff"] ui_svc -> ui ui -> api_svc [label="proxy"] api_svc -> api api -> ext_weather [label="HTTP" color="#00c853"] api -> ext_faa [label="HTTP" color="#00c853"] api -> ext_bedrock [label="Converse API" style=dashed] api -> langfuse_svc [label="traces" style=dotted] langfuse_svc -> langfuse langfuse -> pg_svc pg_svc -> pg user -> ext_kong [style=dashed label="(optional)" color="#4a5568"] ext_kong -> ui_svc [style=dashed color="#4a5568"] }