flowchart TB
subgraph Inputs["Inputs"]
HC["Helm Chart Directory"]
PROMPTS["System & User Prompts"]
CONFIG["Configuration
• API Keys
• Models
• Run Count"]
end
subgraph subGraph1["API Selection"]
DECISION{"API Key Available?"}
ANTHROPIC["Anthropic API
Claude Models"]
OPENAI["OpenAI API
GPT Models"]
OPENROUTER["OpenRouter API
Fallback"]
end
subgraph subGraph2["Analysis Engine"]
LOAD["Load Helm Files"]
ANALYZE["Security Analysis"]
PARSE["Parse AI Response"]
end
subgraph Results["Results"]
CSV["CSV Report
• MITRE ATT&CK Data
• Risk Priorities"]
MD["Markdown Report
• Full Responses
• Token Usage"]
end
HC --> ANALYZER["Helm Security Analyzer"]
PROMPTS --> ANALYZER
CONFIG --> ANALYZER
ANALYZER --> LOAD
LOAD --> ANALYZE
ANALYZE --> DECISION
DECISION -- Anthropic Key --> ANTHROPIC
DECISION -- OpenAI Key --> OPENAI
DECISION -- No Direct Key --> OPENROUTER
ANTHROPIC --> PARSE
OPENAI --> PARSE
OPENROUTER --> PARSE
PARSE --> CSV & MD
HC:::input
PROMPTS:::input
CONFIG:::input
DECISION:::decision
ANTHROPIC:::api
OPENAI:::api
OPENROUTER:::api
LOAD:::process
ANALYZE:::process
PARSE:::process
CSV:::output
MD:::output
ANALYZER:::core
classDef input fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef api fill:#fff3e0,stroke:#f57c00,stroke-width:2px
classDef process fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef output fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#fbc02d,stroke-width:2px