Skip to content

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
Loading

Clone this wiki locally