Agents Overview¶
Agents are the specialists. Each agent is responsible for one domain, collects read-only context from its configured datasources, and uses Claude on Bedrock to synthesize a structured answer.
Built-in agents¶
| Agent | Domain | Datasources |
|---|---|---|
aws |
EC2, RDS, S3, IAM | boto3 (describe/list/get) |
kubernetes |
Pods, namespaces, nodes, Helm, Istio mesh (via Kiali) | mcp (kube-mcp, full read-only tool catalog) |
finops |
Cost analysis (Cost Explorer spend only, no per-namespace/Kubecost breakdown) | boto3 (Cost Explorer) |
devops |
CI/CD, GitLab, pipelines, deployments | http (GitLab API, docs portal) |
observability |
Target-up status only today (routing keywords cover more than the datasource does — see evals/golden/observability.yaml) |
http (single Prometheus up query) |
Datasources above reflect what each agent can ACTUALLY answer today, not
the aspirational domain description — see evals/golden/<agent>.yaml for
the per-agent capability probes this is checked against (spec 35).
Routing¶
The supervisor classifier decides which agent to invoke:
- Keyword fast-path — if the query contains an agent's
routing_keywords, route immediately (no LLM call) - LLM classification — for ambiguous queries, a lightweight Bedrock call picks the best agent
- Fan-out — if the query spans multiple domains, N agents run in parallel and results are synthesized
You can also force a specific agent by passing agent_id in the request.
Agent structure¶
agents/
└── aws/
├── agent.yaml ← config (datasources, keywords, model tier, skills)
└── prompt.md ← system prompt
Every agent is a GenericAgent instance loaded from config. No Python code needed to create a new one.
Read-only guarantee¶
All agents enforce read-only at four layers — no agent can mutate infrastructure:
- System prompt — explicit read-only instructions in every
prompt.md - Adapter code — datasource adapters only implement read operations
- IRSA policy — IAM role has explicit Deny on all write actions (production)
- Kubernetes RBAC — ServiceAccount restricted to
get/list/watch(production)
See Read-Only Policy for details.