Loading ai_agent/README.md +0 −1 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 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 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 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 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 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 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 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 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 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 }}