Loading ai_agent/README.md +0 −1 Changes for ai_agent/README.md: 0 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -112,7 +112,6 @@ Run the container: The Dockerfile sets these defaults: ``` ENV APP_HOST=0.0.0.0 ENV APP_PORT=9013 ENV MCP_SERVER_URL=http://127.0.0.1:8004/mcp ... Loading deployment/docker/README.md +9 −4 Changes for deployment/docker/README.md: 9 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -8,13 +8,13 @@ This deployment relies on a `.env` file that is loaded at runtime by Docker Compose. ``` GROQ_API_KEY=your-secret-key OpenOP_BACKEND_OAI=http://example-backend GROQ_API_KEY=your-groq-api-key OEG_SERVICE_URL=http://your-oeg-api-url/oeg/1.0.0 GROQ_MODEL_NAME=qwen/qwen3-32b ``` ## Run Start services ``` docker compose --env-file .env up -d ``` Loading @@ -25,6 +25,11 @@ docker compose down ## Additional Info All service ports are explicitly forwarded to the host to simplify local development, testing and debugging. This allows you to interact with APIs and MCP Servers individually, without attaching to containers or using internal Docker networking tools. This allows you to interact with APIs and MCP servers individually, without attaching to containers or using internal Docker networking tools. | Service | Host Port | |-----------|-----------| | mcp | 8004 | | ai-agent | 9013 | --- No newline at end of file deployment/docker/docker-compose.yaml +10 −18 Changes for deployment/docker/docker-compose.yaml: 10 added lines, 18 removed lines. Original line number Diff line number Diff line version: "3.9" services: api: image: labs.etsi.org:5050/oop/code/ai2/dummy_backend container_name: api environment: API_HOST: 0.0.0.0 API_PORT: 8081 ports: - "8081:8081" networks: - ai_net mcp: image: labs.etsi.org:5050/oop/code/ai2/mcp_module container_name: mcp environment: MCP_HOST: 0.0.0.0 MCP_PORT: 8004 OpenOP_BACKEND_OAI: ${OpenOP_BACKEND_OAI} OEG_SERVICE_URL: ${OEG_SERVICE_URL} ports: - "8004:8004" networks: - ai_net healthcheck: test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8004/health')"] interval: 10s timeout: 5s retries: 5 start_period: 10s ai-agent: image: labs.etsi.org:5050/oop/code/ai2/ai_agent container_name: ai-agent depends_on: - mcp mcp: condition: service_healthy environment: APP_HOST: 0.0.0.0 APP_PORT: 9013 MCP_SERVER_URL: http://mcp:8004/mcp GROQ_API_KEY: ${GROQ_API_KEY} GROQ_MODEL_NAME: openai/gpt-oss-20b GROQ_MODEL_NAME: ${GROQ_MODEL_NAME:-qwen/qwen3-32b} ports: - "9013:9013" networks: Loading deployment/helm/ai2/Chart.yaml 0 → 100644 +14 −0 Changes for deployment/helm/ai2/Chart.yaml: 14 added lines, 0 removed lines. Original line number Diff line number Diff line apiVersion: v2 name: ai2 type: application version: 1.0.0 appVersion: "1.0.0" keywords: - ai2 - oop - etsi - mcp - ai-agent home: https://labs.etsi.org/rep/oop/code/ai2 maintainers: - name: OOP Team deployment/helm/ai2/templates/_helpers.tpl 0 → 100644 +50 −0 Changes for deployment/helm/ai2/templates/_helpers.tpl: 50 added lines, 0 removed lines. Original line number Diff line number Diff line {{- define "ai2.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{- define "ai2.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} {{- $name := default .Chart.Name .Values.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} {{- end }} {{- end }} {{- end }} {{- define "ai2.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{- define "ai2.labels" -}} helm.sh/chart: {{ include "ai2.chart" . }} {{ include "ai2.selectorLabels" . }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} {{- end }} {{- define "ai2.selectorLabels" -}} app.kubernetes.io/name: {{ include "ai2.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{- define "ai2.configMapName" -}} {{- include "ai2.fullname" . }}-config {{- end }} {{- define "ai2.secretName" -}} {{- include "ai2.fullname" . }}-secrets {{- end }} {{- define "ai2.mcpServiceName" -}} {{- include "ai2.fullname" . }}-mcp {{- end }} {{- define "ai2.aiAgentServiceName" -}} {{- include "ai2.fullname" . }}-ai-agent {{- end }} Loading
ai_agent/README.md +0 −1 Changes for ai_agent/README.md: 0 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -112,7 +112,6 @@ Run the container: The Dockerfile sets these defaults: ``` ENV APP_HOST=0.0.0.0 ENV APP_PORT=9013 ENV MCP_SERVER_URL=http://127.0.0.1:8004/mcp ... Loading
deployment/docker/README.md +9 −4 Changes for deployment/docker/README.md: 9 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -8,13 +8,13 @@ This deployment relies on a `.env` file that is loaded at runtime by Docker Compose. ``` GROQ_API_KEY=your-secret-key OpenOP_BACKEND_OAI=http://example-backend GROQ_API_KEY=your-groq-api-key OEG_SERVICE_URL=http://your-oeg-api-url/oeg/1.0.0 GROQ_MODEL_NAME=qwen/qwen3-32b ``` ## Run Start services ``` docker compose --env-file .env up -d ``` Loading @@ -25,6 +25,11 @@ docker compose down ## Additional Info All service ports are explicitly forwarded to the host to simplify local development, testing and debugging. This allows you to interact with APIs and MCP Servers individually, without attaching to containers or using internal Docker networking tools. This allows you to interact with APIs and MCP servers individually, without attaching to containers or using internal Docker networking tools. | Service | Host Port | |-----------|-----------| | mcp | 8004 | | ai-agent | 9013 | --- No newline at end of file
deployment/docker/docker-compose.yaml +10 −18 Changes for deployment/docker/docker-compose.yaml: 10 added lines, 18 removed lines. Original line number Diff line number Diff line version: "3.9" services: api: image: labs.etsi.org:5050/oop/code/ai2/dummy_backend container_name: api environment: API_HOST: 0.0.0.0 API_PORT: 8081 ports: - "8081:8081" networks: - ai_net mcp: image: labs.etsi.org:5050/oop/code/ai2/mcp_module container_name: mcp environment: MCP_HOST: 0.0.0.0 MCP_PORT: 8004 OpenOP_BACKEND_OAI: ${OpenOP_BACKEND_OAI} OEG_SERVICE_URL: ${OEG_SERVICE_URL} ports: - "8004:8004" networks: - ai_net healthcheck: test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8004/health')"] interval: 10s timeout: 5s retries: 5 start_period: 10s ai-agent: image: labs.etsi.org:5050/oop/code/ai2/ai_agent container_name: ai-agent depends_on: - mcp mcp: condition: service_healthy environment: APP_HOST: 0.0.0.0 APP_PORT: 9013 MCP_SERVER_URL: http://mcp:8004/mcp GROQ_API_KEY: ${GROQ_API_KEY} GROQ_MODEL_NAME: openai/gpt-oss-20b GROQ_MODEL_NAME: ${GROQ_MODEL_NAME:-qwen/qwen3-32b} ports: - "9013:9013" networks: Loading
deployment/helm/ai2/Chart.yaml 0 → 100644 +14 −0 Changes for deployment/helm/ai2/Chart.yaml: 14 added lines, 0 removed lines. Original line number Diff line number Diff line apiVersion: v2 name: ai2 type: application version: 1.0.0 appVersion: "1.0.0" keywords: - ai2 - oop - etsi - mcp - ai-agent home: https://labs.etsi.org/rep/oop/code/ai2 maintainers: - name: OOP Team
deployment/helm/ai2/templates/_helpers.tpl 0 → 100644 +50 −0 Changes for deployment/helm/ai2/templates/_helpers.tpl: 50 added lines, 0 removed lines. Original line number Diff line number Diff line {{- define "ai2.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{- define "ai2.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} {{- $name := default .Chart.Name .Values.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} {{- end }} {{- end }} {{- end }} {{- define "ai2.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{- define "ai2.labels" -}} helm.sh/chart: {{ include "ai2.chart" . }} {{ include "ai2.selectorLabels" . }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} {{- end }} {{- define "ai2.selectorLabels" -}} app.kubernetes.io/name: {{ include "ai2.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{- define "ai2.configMapName" -}} {{- include "ai2.fullname" . }}-config {{- end }} {{- define "ai2.secretName" -}} {{- include "ai2.fullname" . }}-secrets {{- end }} {{- define "ai2.mcpServiceName" -}} {{- include "ai2.fullname" . }}-mcp {{- end }} {{- define "ai2.aiAgentServiceName" -}} {{- include "ai2.fullname" . }}-ai-agent {{- end }}