""" VAPORA Agent Pools Configuration Defines scaling policies and configurations for each of the 12 agent roles """ import k.api.all as k # ===== AGENT POOL DEFINITIONS ===== agent_pools = { "architect": { role = "Architect" description = "System design and architecture decisions" llm = "Claude Opus" parallelizable = false # Initiator role, must run sequentially min_replicas = 2 max_replicas = 5 target_cpu = 70 cpu_request = "2000m" memory_request = "4Gi" cpu_limit = "4000m" memory_limit = "8Gi" } "developer": { role = "Developer" description = "Code implementation" llm = "Claude Sonnet" parallelizable = true min_replicas = 5 max_replicas = 20 target_cpu = 60 cpu_request = "2000m" memory_request = "3Gi" cpu_limit = "4000m" memory_limit = "6Gi" } "code_reviewer": { role = "CodeReviewer" description = "Code quality and review" llm = "Claude Sonnet" parallelizable = true min_replicas = 3 max_replicas = 10 target_cpu = 65 cpu_request = "1500m" memory_request = "2Gi" cpu_limit = "3000m" memory_limit = "4Gi" } "tester": { role = "Tester" description = "Test writing and validation" llm = "Claude Sonnet" parallelizable = true min_replicas = 3 max_replicas = 10 target_cpu = 70 cpu_request = "2000m" memory_request = "3Gi" cpu_limit = "4000m" memory_limit = "6Gi" } "documenter": { role = "Documenter" description = "Documentation and guides" llm = "GPT-4" parallelizable = true min_replicas = 2 max_replicas = 8 target_cpu = 50 cpu_request = "1000m" memory_request = "2Gi" cpu_limit = "2000m" memory_limit = "4Gi" } "marketer": { role = "Marketer" description = "Marketing content and campaigns" llm = "Claude Sonnet" parallelizable = true min_replicas = 1 max_replicas = 5 target_cpu = 40 cpu_request = "1000m" memory_request = "2Gi" cpu_limit = "2000m" memory_limit = "4Gi" } "presenter": { role = "Presenter" description = "Presentations and slides" llm = "Claude Sonnet" parallelizable = true min_replicas = 1 max_replicas = 3 target_cpu = 50 cpu_request = "1000m" memory_request = "2Gi" cpu_limit = "2000m" memory_limit = "4Gi" } "devops": { role = "DevOps" description = "CI/CD and deployment" llm = "Claude Sonnet" parallelizable = true min_replicas = 2 max_replicas = 8 target_cpu = 60 cpu_request = "1500m" memory_request = "2Gi" cpu_limit = "3000m" memory_limit = "4Gi" } "monitor": { role = "Monitor" description = "Health checking and alerting" llm = "Gemini Flash" parallelizable = true # Real-time monitoring min_replicas = 2 max_replicas = 5 target_cpu = 30 cpu_request = "1000m" memory_request = "1Gi" cpu_limit = "2000m" memory_limit = "2Gi" } "security": { role = "Security" description = "Security audit and verification" llm = "Claude Opus" parallelizable = false # Can block pipeline min_replicas = 2 max_replicas = 5 target_cpu = 70 cpu_request = "2000m" memory_request = "4Gi" cpu_limit = "4000m" memory_limit = "8Gi" } "project_manager": { role = "ProjectManager" description = "Project tracking and roadmap" llm = "Claude Sonnet" parallelizable = true min_replicas = 1 max_replicas = 3 target_cpu = 40 cpu_request = "1000m" memory_request = "2Gi" cpu_limit = "2000m" memory_limit = "4Gi" } "decision_maker": { role = "DecisionMaker" description = "Conflict resolution and decisions" llm = "Claude Opus" parallelizable = false # On-demand decision making min_replicas = 1 max_replicas = 3 target_cpu = 70 cpu_request = "2000m" memory_request = "4Gi" cpu_limit = "4000m" memory_limit = "8Gi" } } # ===== HORIZONTAL POD AUTOSCALERS ===== hpas = [ { name = "vapora-agents-developer-hpa" target_deployment = "vapora-agents" agent_role = "developer" min_replicas = 5 max_replicas = 20 target_cpu_utilization = 60 metrics = [ { type = "Resource" resource = { name = "cpu" target = {type = "Utilization", averageUtilization = 60} } }, { type = "Pods" pods = { metric = {name = "agent_queue_depth"} target = {type = "AverageValue", averageValue = "50"} } } ] } { name = "vapora-agents-reviewer-hpa" target_deployment = "vapora-agents" agent_role = "code_reviewer" min_replicas = 3 max_replicas = 10 target_cpu_utilization = 65 } { name = "vapora-agents-monitor-hpa" target_deployment = "vapora-agents" agent_role = "monitor" min_replicas = 2 max_replicas = 5 target_cpu_utilization = 30 } ] # ===== POD DISRUPTION BUDGETS ===== pod_disruption_budgets = [ { name = "vapora-agents-pdb" selector = {matchLabels = {"app": "vapora-agents"}} minAvailable = 2 # Always keep at least 2 agents running } { name = "surrealdb-pdb" selector = {matchLabels = {"app": "surrealdb"}} minAvailable = 2 # Database must always have 2+ replicas } ] # ===== NETWORK POLICIES FOR AGENTS ===== network_policies = [ { name = "allow-agent-to-nats" ingress = [{ from = [{podSelector = {matchLabels = {"app": "vapora-agents"}}}] ports = [{protocol = "TCP", port = 4222}] }] egress = [{ to = [{podSelector = {matchLabels = {"app": "nats"}}}] ports = [{protocol = "TCP", port = 4222}] }] } { name = "allow-agent-to-database" ingress = [{ from = [{podSelector = {matchLabels = {"app": "vapora-agents"}}}] ports = [{protocol = "TCP", port = 8000}] }] egress = [{ to = [{podSelector = {matchLabels = {"app": "surrealdb"}}}] ports = [{protocol = "TCP", port = 8000}] }] } ] # ===== OUTPUT ===== output = { agent_pools = agent_pools hpas = hpas pdbs = pod_disruption_budgets network_policies = network_policies }