Commit 21fd6e28 authored by Dimitrios Gogos's avatar Dimitrios Gogos
Browse files

docs(ai2): describe the 2.0.0 charts from ai2 ad9a888

The AI2 repository chart is now 2.0.0 with the platform chart's
templates: in-chart redis:7.4-alpine, ClusterIP services, AUTH_ENABLED
from global.auth.enabled and telemetry off. Values pin image tag 2.0.0;
the two charts differ only in the model. The values table uses the
real keys, the kind 1.0.0 pin gap is gone, and F7 names the four tools
that send Idempotency-Key.

Co-Authored-By: default avatarClaude Opus 5.5 <noreply@anthropic.com>
parent 2f641366
Loading
Loading
Loading
Loading
+19 −19
Changes for ai2/implementation-and-delivery.md: 19 added lines, 19 removed lines.
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ shows as a `500` on the first chat, not as a failed start.
| Group | Settings | Notes |
|---|---|---|
| Server | `MCP_HOST`, `MCP_PORT` | `127.0.0.1` and `8004` for a local run; the image binds `0.0.0.0:8004` |
| OEG | `OEG_SERVICE_URL` | Required. OEG's base address, without a path; the chart default is `http://oeg` (OEG's Service listens on port 80). Read on each tool call. The image default `http://127.0.0.1:32263` is a development leftover |
| OEG | `OEG_SERVICE_URL` | Required. OEG's base address, without a path; the chart sets `mcp.oegUrl`, else `http://<global.oeg.host>:<global.oeg.port>` (`http://oeg:80`). Read on each tool call. The image default `http://127.0.0.1:32263` is a development leftover |
| Login | `AUTH_ENABLED` | As for the agent |

### P.3 Defaults by Deployment
@@ -93,26 +93,28 @@ shows as a `500` on the first chat, not as a failed start.
| `GROQ_MODEL_NAME` | `openai/gpt-oss-20b` | `qwen/qwen3-32b` | `qwen/qwen3.8-27b` | `qwen/qwen3.8-27b` |
| `MEMORY_WINDOW_TURNS` | `6` | `3` | `3` | `10` |
| `MEMORY_TTL_SECONDS` | `3600` | `3600` | `3600` | `3600` |
| `AUTH_ENABLED` | `true` | From `global.auth.enabled` | Not set (`true`) | Not set (`true`) |
| Telemetry | On | Off | On | On |
| Redis | — | Own Deployment, `redis:7.4-alpine` | Bitnami chart 25.5.3 | `redis:7-alpine`, host port `6385` |
| `AUTH_ENABLED` | `true` | From `global.auth.enabled` | From `global.auth.enabled` | Not set (`true`) |
| Telemetry | On | Off | Off | On |
| Redis | — | Own Deployment, `redis:7.4-alpine` | Own Deployment, `redis:7.4-alpine` | `redis:7-alpine`, host port `6385` |

The READMEs give other values (window `6` or `10`). Which models are allowed is open (overview F3).

### P.4 Platform Chart Values
### P.4 Chart Values

Both charts take the same values.

| Group | Values | Notes |
|---|---|---|
| Images | `images.mcp.*`, `images.aiAgent.*` (`repository`, `tag`, `pullPolicy`), `images.waitForMcp` | Tags `latest` in the chart; kind sets `"1.0.0"` (§T). The init container image defaults to `curlimages/curl:8.11.1` |
| Replicas | `replicaCount.mcp`, `replicaCount.aiAgent` | `1` each |
| Settings | `config.mcp.port`, `config.mcp.oegServiceUrl`, `config.aiAgent.port`, `config.aiAgent.groqModelName`, `config.aiAgent.memoryWindowTurns`, `config.aiAgent.memoryTtlSeconds`, `config.aiAgent.memoryKeyPrefix` | Become the ConfigMap |
| Images | `mcp.image.*`, `aiAgent.image.*` (`repository`, `tag`, `pullPolicy`), `aiAgent.waitForMcpImage` | Tags `2.0.0`. The init container image defaults to `curlimages/curl:8.11.1` |
| Replicas | `mcp.replicaCount`, `aiAgent.replicaCount` | `1` each |
| Settings | `mcp.port`, `mcp.oegUrl`, `aiAgent.port`, `aiAgent.groqModelName`, `aiAgent.memory.windowTurns`, `aiAgent.memory.ttlSeconds`, `aiAgent.memory.keyPrefix` | Become the ConfigMap |
| Redis | `redis.enabled`, `redis.image`, `redis.port`, `redis.resources` | `false` turns memory off. Requests 50m CPU and 64Mi; limit 128Mi |
| Secret | `secrets.groqApiKey` | Set in `environments/<env>/secrets.values.yaml`, kept out of Git. Empty: the deploy script warns and every chat fails |
| Services | `service.mcp.*`, `service.aiAgent.*` (`type`, `port`, `nodePort`) | `ClusterIP` in the umbrella chart; NodePort `32004` and `32013` in kind |
| Secret | `secrets.groqApiKey`, `secrets.existingSecret` | Set the key in `environments/<env>/secrets.values.yaml`, kept out of Git, or name an existing Secret holding `GROQ_API_KEY`. Empty: the deploy script warns and every chat fails |
| Services | `mcp.service.*`, `aiAgent.service.*` (`type`, `port`, `nodePort`; the agent also `name`) | `ClusterIP` in both charts; NodePort `32004` and `32013` in kind |

Umbrella values: `ai2.enabled: true`, `ai2.fullnameOverride: ai2`, which names the services
`ai2-mcp` and `ai2-ai-agent`. In the umbrella chart every value above sits under `ai2.`, for example
`ai2.secrets.groqApiKey` and `ai2.service.mcp.nodePort`. For kind the key goes in
`ai2.secrets.groqApiKey` and `ai2.mcp.service.nodePort`. For kind the key goes in
`helm/environments/kind/secrets.values.yaml`.

### P.5 Portal Settings Pointing at AI²
@@ -146,12 +148,11 @@ ruff format check, pytest and GitLab SAST. On `main`, `develop` and tags it buil
| Probes | Readiness and liveness on `/health` for both services |
| Login off | `global.auth.enabled: false` sets `AUTH_ENABLED=false` on both |

**AI2 repository chart.** `deployment/helm/ai2` (chart 1.0.0) differs from the platform chart
(§P.3): Bitnami Redis, NodePort services, no `AUTH_ENABLED`, no telemetry switch. Which chart is
authoritative is open (overview F10). Run `helm dependency update` before installing it. Its Redis
settings are `redis.master.service.ports.redis` (`6379`) and `redis.memory.database` (`0`), with
Redis auth and persistence off. Compose's Redis host port `6385` has no NodePort equivalent, since
NodePorts must be in `30000-32767`.
**AI2 repository chart.** `deployment/helm/ai2` (chart 2.0.0) has the same templates as the
platform chart. Only the model differs: `qwen/qwen3.8-27b` here, `qwen/qwen3-32b` in the platform
chart. Which chart is authoritative is open (overview F10). Both values files pin image tag `2.0.0`;
the pipeline tags `develop` images `develop`. Compose's Redis host port `6385` has no NodePort
equivalent, since NodePorts must be in `30000-32767`.

**kind.** `helm/scripts/helm-deploy.sh` deploys the umbrella chart with
`environments/kind/values.yaml` and, if present, `secrets.values.yaml`. The agent is at
@@ -226,8 +227,7 @@ Unspecified means no reason has been agreed.
| No confirmation before writes; retries can repeat creates (F6, F7) | Unspecified | Ask the agent to use an idempotency key; check state before retrying |
| No federation tools, though the public documentation says AI² manages federation | Unspecified | The portal's Federation tab |
| OEG operations without a tool (§K.1 in the design) | Unspecified | The portal, or OEG directly |
| The two charts differ (F10) | Unspecified | Deploy with the platform chart |
| kind pins AI² images to `1.0.0`. The `v1.0.0-release` tag predates token passing, and the pipeline names that image `v1.0.0-release`; whether a `1.0.0` image exists is not verified | Image tags are set by hand at release | Set `ai2.images.*.tag` to a current image |
| The two charts differ in the model (F10) | Unspecified | Deploy with the platform chart |
| Missing settings show at the first chat, as a plain `500` | Unspecified | Check the agent log after the first chat |
| Health checks miss Groq, Redis and OEG | Unspecified | Watch the logs |
| Containers run as root; no pod security settings for the agent or MCP server | Unspecified | None |
+5 −4
Changes for ai2/overview-and-architecture.md: 5 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -202,8 +202,9 @@ goes away. Decide the budget and whether AI² must stop when the caller disconne
without asking the user. Decide whether writes need confirmation.

**F7. How are duplicate creates avoided?** The model may repeat a create after a tool error or
timeout. Three tools send an `Idempotency-Key`, and only when the model supplies one. Decide the
rule.
timeout. Four tools (`instantiate_app`, `create_app_deployment`, `create_traffic_influence` and
`create_traffic_influence_device`) send an `Idempotency-Key`, and only when the model supplies one.
Decide the rule.

**F8. Limits, audit, retention and scale.** There is no per-user limit on LLM use, no record of
which tools ran for whom, no agreed retention for memory (the 3600-second TTL is a default), and
@@ -214,8 +215,8 @@ are NodePorts, and `GET /debug/objgraph` needs no token. Decide whether other MC
supported and which routes may be exposed.

**F10. Which chart is the source of truth?** The AI2 repository's chart and the platform chart
differ ([implementation-and-delivery.md §Q](/ai2/implementation-and-delivery.md)). Decide which one
is authoritative and whether they must be identical.
differ only in the model ([implementation-and-delivery.md §Q](/ai2/implementation-and-delivery.md)).
Decide which one is authoritative and whether they must stay identical.

**F11. Does AI² adopt the platform conventions?** The platform describes JSON logs with
correlation IDs and `/healthz` plus `/readyz` for components. AI² uses plain logs and `/health`.