Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1fd056a
feat: add browser instrumentation
BenElferink Jun 25, 2026
9bf7039
fix: correct filepath reference in BrowserInspector QuickScan method
BenElferink Jun 25, 2026
11b1094
chore: add Go setup action to build workflow
BenElferink Jun 25, 2026
83a83a5
feat: enhance restart logic for browser sidecar
BenElferink Jun 25, 2026
16e031f
fix: reorder runtime agent check in IsRestartRequired function
BenElferink Jun 25, 2026
19b56ed
feat: add browser port missing reason for instrumentation
BenElferink Jun 25, 2026
fd22aea
fix: address PR review and harden browser-proxy
BenElferink Jul 15, 2026
25db1c4
Merge branch 'main' into feature/run-841
BenElferink Jul 15, 2026
d79fb59
fix(e2e): include app container in browser sidecar assert
BenElferink Jul 15, 2026
426d5ac
Merge branch 'main' of github.com:odigos-io/odigos into feature/run-841
BenElferink Jul 16, 2026
70da406
refactor(browser-proxy): CSP-safe config.js, export token, rate limits
cursoragent Sep 6, 2026
d7e3210
merge: resolve conflicts with main for browser instrumentation
cursoragent Sep 6, 2026
63ed5d7
Merge branch 'main' into cursor/browser-instrumentation-security-2830
BenElferink Sep 6, 2026
671518f
chore: bump browser-community agent to v0.3.0
cursoragent Sep 6, 2026
7407088
fix(ci): regenerate browser CRD enums and fix helm lint
cursoragent Sep 6, 2026
c943eae
fix(e2e): make deployment condition asserts order-independent
cursoragent Sep 6, 2026
53b1d47
Merge branch 'main' into cursor/browser-instrumentation-security-2830
BenElferink Sep 7, 2026
873e66e
fix(autoscaler): accept OTLP logs on node collector
cursoragent Sep 8, 2026
30626c4
Merge branch 'main' into cursor/browser-instrumentation-security-2830
BenElferink Sep 8, 2026
8914e7a
fix(e2e): stop asserting status.replicas == 1 for apps-ready
cursoragent Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,55 @@ jobs:
path: /tmp/scan-results/odigos-scheduler.json
retention-days: 30

build-browser-proxy:
name: build-browser-proxy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Browser Proxy Image
uses: docker/build-push-action@v6
with:
platforms: linux/amd64
push: false
tags: browser-proxy:pr-${{ github.event.number || github.run_number }}
provenance: false
file: browser-proxy/Dockerfile
outputs: type=docker,dest=/tmp/browser-proxy.tar
- name: Load Docker image for scanning
run: docker load -i /tmp/browser-proxy.tar
- name: Scan image for vulnerabilities
id: scan-browser-proxy
uses: odigos-io/ci-core/vulnerabilities-scanner@main
with:
image: browser-proxy:pr-${{ github.event.number || github.run_number }}
severity-cutoff: "CRITICAL"
continue-on-error: true
- name: Save browser-proxy scan JSON
if: always()
run: |
mkdir -p /tmp/scan-results
cat > /tmp/scan-results/odigos-browser-proxy.json << 'EOF'
${{ steps.scan-browser-proxy.outputs.results-json }}
EOF
jq --arg img "odigos-browser-proxy" --arg tag "pr-${{ github.event.number || github.run_number }}" '. + {imageName: $img, imageTag: $tag}' /tmp/scan-results/odigos-browser-proxy.json > /tmp/scan-results/odigos-browser-proxy_enriched.json
mv /tmp/scan-results/odigos-browser-proxy_enriched.json /tmp/scan-results/odigos-browser-proxy.json
- name: Upload browser-proxy scan results
if: always()
uses: actions/upload-artifact@v4
with:
name: vuln-scan-result-browser-proxy-${{ github.sha }}.json
path: /tmp/scan-results/odigos-browser-proxy.json
retention-days: 30
- uses: actions/setup-go@v6
with:
go-version: "1.26.2"
- name: run tests
working-directory: ./browser-proxy
run: |
make test

build-agents:
name: build-agents
runs-on: depot-ubuntu-latest
Expand Down Expand Up @@ -438,6 +487,7 @@ jobs:
needs:
- build-and-test-autoscaler
- build-scheduler
- build-browser-proxy
- build-agents
- build-and-test-instrumentor
- build-and-test-odigos-collector
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/full-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
name: build-all-services
strategy:
matrix:
service: [instrumentor, odiglet, agents, frontend, operator]
service: [instrumentor, odiglet, agents, frontend, operator, browser-proxy]
include:
- service: instrumentor
dockerfile_path: .
Expand All @@ -31,6 +31,8 @@ jobs:
dockerfile_path: frontend
- service: operator
dockerfile_path: operator
- service: browser-proxy
dockerfile_path: browser-proxy
runs-on: depot-ubuntu-24.04-8
steps:
- uses: actions/checkout@v5
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/publish-modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ jobs:

strategy:
matrix:
service: ['autoscaler', 'scheduler', 'instrumentor', 'collector', 'odiglet', 'ui', 'operator', 'agents']
service: ['autoscaler', 'scheduler', 'instrumentor', 'collector', 'odiglet', 'ui', 'operator', 'agents', 'browser-proxy']
include:
- service: autoscaler
runner: depot-ubuntu-latest
Expand Down Expand Up @@ -249,6 +249,10 @@ jobs:
runner: depot-ubuntu-latest
summary: 'Odigos Agents'
description: 'The Odigos Agents used to copy Odigos agent relevant files into the user workloads.'
- service: browser-proxy
runner: depot-ubuntu-latest
summary: 'Browser proxy for Odigos'
description: 'Sidecar that injects the OpenTelemetry browser SDK into served HTML and proxies browser telemetry to the Odigos collector.'
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
Expand Down Expand Up @@ -327,6 +331,7 @@ jobs:
matrix.service == 'ui' && 'frontend/Dockerfile' ||
matrix.service == 'operator' && 'operator/Dockerfile' ||
matrix.service == 'agents' && 'odiglet/Dockerfile' ||
matrix.service == 'browser-proxy' && 'browser-proxy/Dockerfile' ||
'Dockerfile' }}
target: >-
${{ matrix.service == 'agents' && 'agents' || '' }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
instrumentation_agent:
description: "Canonical agent category (e.g. python, php, ruby, nodejs)"
description: "Canonical agent category (e.g. python, php, ruby, nodejs, browser)"
required: true
type: string
new_agent_version:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/vulnerability-scan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ jobs:
"odigos-collector",
"odigos-ui",
"odigos-operator",
"odigos-agents"
"odigos-agents",
"odigos-browser-proxy"
]'
echo "images=$(echo "$IMAGES" | jq -c .)" >> "$GITHUB_OUTPUT"
echo "count=$(echo "$IMAGES" | jq 'length')" >> "$GITHUB_OUTPUT"
Expand Down
30 changes: 12 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ build-instrumentor:
build-scheduler:
$(MAKE) build-image/scheduler SUMMARY="Scheduler for Odigos" DESCRIPTION="Scheduler manages the installation of OpenTelemetry Collectors with Odigos." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)

.PHONY: build-browser-proxy
build-browser-proxy:
$(MAKE) build-image/browser-proxy DOCKERFILE=browser-proxy/$(DOCKERFILE) SUMMARY="Browser proxy for Odigos" DESCRIPTION="Sidecar that injects the OpenTelemetry browser SDK into served HTML and proxies browser telemetry to the Odigos collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)

.PHONY: build-collector
build-collector:
$(MAKE) build-image/collector DOCKERFILE=collector/$(DOCKERFILE) SUMMARY="Odigos Collector" DESCRIPTION="The Odigos build of the OpenTelemetry Collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
Expand All @@ -186,7 +190,7 @@ verify-nodejs-agent:
.PHONY: build-images
build-images:
# prefer to build timeconsuimg images first to make better use of parallelism
make -j $(nproc) build-ui build-collector build-odiglet build-autoscaler build-scheduler build-instrumentor build-agents TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)
make -j $(nproc) build-ui build-collector build-odiglet build-autoscaler build-scheduler build-instrumentor build-browser-proxy build-agents TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)

.PHONY: build-images-rhel
build-images-rhel:
Expand Down Expand Up @@ -226,6 +230,10 @@ push-instrumentor:
push-scheduler:
$(MAKE) push-image/scheduler SUMMARY="Scheduler for Odigos" DESCRIPTION="Scheduler manages the installation of OpenTelemetry Collectors with Odigos." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)

.PHONY: push-browser-proxy
push-browser-proxy:
$(MAKE) push-image/browser-proxy DOCKERFILE=browser-proxy/$(DOCKERFILE) SUMMARY="Browser proxy for Odigos" DESCRIPTION="Sidecar that injects the OpenTelemetry browser SDK into served HTML and proxies browser telemetry to the Odigos collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)

.PHONY: push-collector
push-collector:
$(MAKE) push-image/collector DOCKERFILE=collector/$(DOCKERFILE) BUILD_DIR=. SUMMARY="Odigos Collector" DESCRIPTION="The Odigos build of the OpenTelemetry Collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
Expand All @@ -240,7 +248,7 @@ push-agents:

.PHONY: push-images
push-images:
make push-autoscaler push-scheduler push-odiglet push-instrumentor push-collector push-ui TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)
make push-autoscaler push-scheduler push-odiglet push-instrumentor push-browser-proxy push-collector push-ui TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)

.PHONY: push-images-rhel
push-images-rhel:
Expand All @@ -264,24 +272,9 @@ load-to-kind-victoria-metrics:
-
kind load docker-image $(ORG)/odigos-victoria-metrics$(IMG_SUFFIX):$(TAG)

# Victoria Metrics is not built from this repo — pull the published image and retag for e2e.
# Materialize a single-platform image via buildx --load so kind load does not fail on
# multi-arch manifests (ctr: content digest ... not found).
# kind's LoadImageArchive always runs: ctr images import --all-platforms
# See https://github.com/kubernetes-sigs/kind/issues/3795
.PHONY: load-to-kind-victoria-metrics
load-to-kind-victoria-metrics:
printf 'FROM $(ORG)/odigos-victoria-metrics:latest\n' | docker buildx build \
--platform=linux/$$(docker version -f '{{.Server.Arch}}') \
--pull \
-t $(ORG)/odigos-victoria-metrics$(IMG_SUFFIX):$(TAG) \
--load \
-
kind load docker-image $(ORG)/odigos-victoria-metrics$(IMG_SUFFIX):$(TAG)

.PHONY: load-to-kind
load-to-kind:
make -j 6 load-to-kind-instrumentor load-to-kind-autoscaler load-to-kind-scheduler load-to-kind-odiglet load-to-kind-collector load-to-kind-ui load-to-kind-cli load-to-kind-agents load-to-kind-victoria-metrics ORG=$(ORG) TAG=$(TAG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)
make -j 6 load-to-kind-instrumentor load-to-kind-autoscaler load-to-kind-scheduler load-to-kind-odiglet load-to-kind-browser-proxy load-to-kind-collector load-to-kind-ui load-to-kind-cli load-to-kind-agents load-to-kind-victoria-metrics ORG=$(ORG) TAG=$(TAG) IMG_SUFFIX=$(IMG_SUFFIX) DOCKERFILE=$(DOCKERFILE)

.PHONY: restart-ui
restart-ui:
Expand Down Expand Up @@ -551,6 +544,7 @@ publish-to-ecr:
make -j 3 build-tag-push-ecr-image/scheduler SUMMARY="Scheduler for Odigos" DESCRIPTION="Scheduler manages the installation of OpenTelemetry Collectors with Odigos." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
make -j 3 build-tag-push-ecr-image/collector DOCKERFILE=collector/$(DOCKERFILE) SUMMARY="Odigos Collector" DESCRIPTION="The Odigos build of the OpenTelemetry Collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
make -j 3 build-tag-push-ecr-image/ui DOCKERFILE=frontend/$(DOCKERFILE) SUMMARY="UI for Odigos" DESCRIPTION="UI provides the frontend webapp for managing an Odigos installation." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
make -j 3 build-tag-push-ecr-image/browser-proxy DOCKERFILE=browser-proxy/$(DOCKERFILE) SUMMARY="Browser proxy for Odigos" DESCRIPTION="Sidecar that injects the OpenTelemetry browser SDK into served HTML and proxies browser telemetry to the Odigos collector." TAG=$(TAG) ORG=$(ORG) IMG_SUFFIX=$(IMG_SUFFIX)
echo "✅ Deployed Odigos to EKS, now install the CLI"

# install gatekeeper to prevent:
Expand Down
6 changes: 6 additions & 0 deletions api/config/crd/bases/odigos.io_actions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -234,6 +235,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -471,6 +473,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -548,6 +551,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -620,6 +624,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -712,6 +717,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down
5 changes: 5 additions & 0 deletions api/config/crd/bases/odigos.io_instrumentationconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ spec:
- RuntimeDetailsUnavailable
- CrashLoopBackOff
- ImagePullBackOff
- BrowserPortMissing
type: string
containerName:
description: The name of the container to which this configuration
Expand Down Expand Up @@ -708,6 +709,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -746,6 +748,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -890,6 +893,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -1507,6 +1511,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down
4 changes: 4 additions & 0 deletions api/config/crd/bases/odigos.io_instrumentationrules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -398,6 +399,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -465,6 +467,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -502,6 +505,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down
3 changes: 3 additions & 0 deletions api/config/crd/bases/odigos.io_samplings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -279,6 +280,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down Expand Up @@ -478,6 +480,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down
1 change: 1 addition & 0 deletions api/config/crd/bases/odigos.io_sources.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ spec:
- go
- dotnet
- javascript
- browser
- php
- ruby
- rust
Expand Down
Loading
Loading