-
Notifications
You must be signed in to change notification settings - Fork 0
C2 containers
Bishal Singh edited this page Mar 13, 2026
·
2 revisions
graph LR
%% ── External Systems
Prom["Prometheus<br/>AlertManager<br/>[External Monitor]"]
Platforms["Chat Platforms<br/>Slack · Teams · GChat<br/>[Inbound Sources]"]
%% ── System Boundary
subgraph Boundary["System Boundary — Alert Routing Infrastructure"]
direction TB
%% Extension Tool
subgraph ET["Extension Tool"]
direction TB
GW["Message Gateway<br/> Platform Adapter"]
VP["Validation Pipeline<br/>Schema · Dedup · Rate Limiter"]
DaprET["Dapr Sidecar<br/>Pub: alerts-inbound · Sub: alerts-outbound<br/>State: fingerprints · counters"]
GW --> VP --> DaprET
end
%% Dapr State Store
subgraph State["Dapr State Store · Redis 7"]
Redis[("Redis 7<br/>Fingerprints · Rate Counters")]
end
%% Dapr Pub/Sub Broker
subgraph MsgBroker["Dapr Pub/Sub · RabbitMQ"]
direction TB
CH1["alerts-inbound"]
CH2["alerts-outbound"]
end
%% L0 Agent
subgraph L0["L0 Agent"]
direction TB
QM["Queue Manager<br/>Alert Consumer · Payload Parser"]
A2A["A2A Server<br/>auto → L1 dispatch<br/>hitl → HITL approval"]
RH["Response Handler<br/>Formatter · Router"]
DaprL0["Dapr Sidecar<br/>Sub: alerts-inbound · Pub: alerts-outbound"]
DaprL0 --> QM --> A2A --> RH --> DaprL0
end
PlatOut["Outbound Platform APIs<br/>Slack Web API · Teams Graph API · GChat REST<br/>[Block Kit · Adaptive Card · Card JSON]"]
end
%% L1 Agents
L1["L1 Agents<br/>[A2A JSON-RPC · HTTPS]"]
%% ── Flows
Prom -->|"webhook · HTTPS"| Platforms
Platforms -->|"[Inbound] Event JSON · Sync"| GW
DaprET <-->|"[State] Redis RESP3 · get/set/expire"| Redis
DaprET -->|"[Pub/Sub] AMQP 0-9-1 publish · alerts-inbound"| CH1
CH1 -->|"[Pub/Sub] AMQP 0-9-1 deliver · alerts-inbound"| DaprL0
DaprL0 -.->|"[Pub/Sub] AMQP 0-9-1 publish · alerts-outbound"| CH2
CH2 -.->|"[Pub/Sub] AMQP 0-9-1 deliver · alerts-outbound"| DaprET
DaprET -.->|"[Outbound] ResponsePayload · HTTP callback"| GW
GW -.->|"[Outbound] formatted reply"| PlatOut
A2A <-.->|"A2A JSON-RPC · HTTPS · Async"| L1
%% ── Styling
classDef external fill:#1a1a2a,stroke:#00C9FF,stroke-width:1.5px,color:#00C9FF
classDef gateway fill:#0d1a2a,stroke:#00C9FF,stroke-width:1px,color:#00C9FF
classDef validate fill:#1a0d2a,stroke:#7B61FF,stroke-width:1px,color:#7B61FF
classDef dapr fill:#1e0d2a,stroke:#7B61FF,stroke-width:1.5px,color:#C084FC
classDef broker fill:#2a1a00,stroke:#FF9900,stroke-width:1px,color:#FF9900
classDef redis fill:#1a0d1a,stroke:#7B61FF,stroke-width:1.5px,color:#7B61FF
classDef l0core fill:#0d2a1a,stroke:#00E5A0,stroke-width:1px,color:#00E5A0
classDef outbound fill:#2a0d14,stroke:#FF4D6D,stroke-width:1px,color:#FF4D6D
classDef agents fill:#1e1a2a,stroke:#C084FC,stroke-width:1.5px,color:#C084FC
class Prom,Platforms external
class GW gateway
class VP validate
class DaprET,DaprL0 dapr
class CH1,CH2 broker
class Redis redis
class QM,A2A,RH l0core
class PlatOut outbound
class L1 agents