Open AI Codex · via Relay Server
Deploy an internal relay server that forwards telemetry to Milestone. Choose the deployment model that fits your infrastructure.
- Kubernetes (Helm)
- VM Setup
Server Setup (Kubernetes)
Install the upstream OpenTelemetry Collector chart on your Kubernetes cluster. The chart is community-maintained; Milestone provides the per-tenant values.yaml and a kubectl-applyable Secret manifest.
Step 1: Add the upstream OTel Helm repo
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts && helm repo update
Step 2: Download configuration
Download values.yaml and secret.yaml from the Integration page in the Milestone app.
Step 3: Create namespace & apply the Secret
kubectl create namespace monitoring --dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f secret.yaml -n monitoring
Step 4: Install the chart
helm install milestone-relay open-telemetry/opentelemetry-collector --version 0.156.2 -n monitoring --create-namespace -f values.yaml
Developer Setup
Save to ~/.codex/config.toml on each developer machine — replace <your-collector-endpoint> with the address you exposed the collector on (internal LB, NodePort, Ingress, etc.). The service is deployed as ClusterIP — expose it however fits your network.
[otel]
environment = "prod"
log_user_prompt = false
[otel.exporter.otlp-http]
endpoint = "http://<your-collector-endpoint>:4318/v1/logs"
protocol = "binary"
headers = { }
[otel.metrics_exporter.otlp-http]
endpoint = "http://<your-collector-endpoint>:4318/v1/metrics"
protocol = "binary"
headers = { }
Set User Identity
Add to your shell profile (~/.zshrc or ~/.bashrc):
export OTEL_RESOURCE_ATTRIBUTES="user.login=$(whoami),user.email=$(whoami)@<your-company-domain>.com"
Then reload: source ~/.zshrc
Restart Codex
Close and reopen Codex for settings to take effect.
Server Setup (VM)
Run the OpenTelemetry Collector as a Docker container on a shared Linux host. The tarball ships with a docker-compose setup pre-wired to forward to Milestone — fill in the endpoint + secret in .env.
Step 1: Download the tarball
Download otel-client-claude-code.tar.gz from the Integration page in the Milestone app.
Step 2: Extract on the Linux host
tar -xvzf otel-client-claude-code.tar.gz && cd client
Step 3: Configure credentials
Set OTEL_SERVER_ENDPOINT to https://telemetry.mstone.ai and OTEL_SHARED_SECRET in .env. Optional: pin OTEL_VERSION / OTEL_IMAGE to choose a specific upstream collector release.
cp env.example .env && nano .env
Step 4: Start the collector
docker compose up -d
Developer Setup
Save to ~/.codex/config.toml on each developer machine — replace your-linux-server-ip with the hostname or IP of the collector host:
[otel]
environment = "prod"
log_user_prompt = false
[otel.exporter.otlp-http]
endpoint = "http://your-linux-server-ip:4318/v1/logs"
protocol = "binary"
headers = { }
[otel.metrics_exporter.otlp-http]
endpoint = "http://your-linux-server-ip:4318/v1/metrics"
protocol = "binary"
headers = { }
Set User Identity
Add to your shell profile (~/.zshrc or ~/.bashrc):
export OTEL_RESOURCE_ATTRIBUTES="user.login=$(whoami),user.email=$(whoami)@<your-company-domain>.com"
Then reload: source ~/.zshrc
Restart Codex
Close and reopen Codex for settings to take effect.