Third-party version sources
This page is the single source of truth for third-party versions used by the Delphi platform — Kamailio, Asterisk, Janus, RTPEngine, coturn, PostgreSQL, Redis, the OTel collector, base images, etc. Bespoke voiceai-* images that ship from this release are tracked by ECR_TAG and live in the release notes instead.
Each row points at the single file that pins the version. When a release is cut, refresh this page using the extraction commands below; then update any operations page that quotes a stale version.
Pinned versions (v0.9.11)
| Component | Version | Source-of-truth file |
|---|---|---|
| Asterisk (TelSys) | 22.9.0 | .docker/voiceai-telsys/Dockerfile — ENV ASTERISK_VER |
| Kamailio (TelPro) | 6.1.1-bookworm | .docker/voiceai-telpro/Dockerfile — FROM ghcr.io/kamailio/kamailio:... |
| RTPEngine (TelPro) — dfx.at channel | 14.1 | .docker/voiceai-rtpengine/Dockerfile — ARG RTPENGINE_VERSION |
| Janus (TelPro / WebRTC) — git tag | v1.3.3 | .docker/voiceai-webrtc/Dockerfile — ARG JANUS_VERSION |
| coturn (TelPro) | coturn/coturn:4.6.2 | .infrastructure/services/telpro/docker-compose.yml |
| PostgreSQL (Database) | postgres:17-alpine | .infrastructure/services/database/docker-compose.yaml |
| PgBouncer (Database) | edoburu/pgbouncer:v1.25.1-p0 | .infrastructure/services/database/docker-compose.yaml |
| Redis (Database) | redis:7-alpine | .infrastructure/services/database/docker-compose.yaml |
| Caddy (Web, Media) | caddy:2-alpine | .infrastructure/services/{web,media}/docker-compose.yaml |
| Squid (Squid) | ubuntu/squid:latest (unpinned, see warning below) | .infrastructure/services/squid/docker-compose.yaml |
| OpenTelemetry Collector (contrib) (every service) | otel/opentelemetry-collector-contrib:0.150.1 | .infrastructure/services/*/docker-compose.yaml |
| SigNoz (SigNoz service) | main branch (cloned at deploy) | .infrastructure/services/signoz/init.sh — git clone -b main |
| Node.js (TelAPI, TelWeb, TelPhi, Tasker, Scaler) | node:24-alpine | .docker/voiceai-{telapi,telweb,telphi,tasker,scaler}/Dockerfile — FROM node:... |
| Python (CPU AudioProc) | python:3.11-slim | .docker/voiceai-audioproc/Dockerfile — FROM python:... |
| NVIDIA CUDA (GPU AudioProc) | nvidia/cuda:12.4.1-runtime-ubuntu22.04 | .docker/voiceai-audioproc/Dockerfile — FROM nvidia/cuda:... |
| Go (media-upload build) | golang:1.24-alpine | .docker/voiceai-media-server/Dockerfile — FROM golang:... |
| Alpine (sidecar runtimes) | alpine:3.19 | .docker/voiceai-media-server/Dockerfile, telpro / voice docker-compose |
| Debian (telsys / telpro / rtpengine / webrtc runtime base) | bookworm-slim | various .docker/voiceai-*/Dockerfile |
The Squid container is the only one in the stack pinned to a floating tag. Behaviour can change unexpectedly on update.sh (which always pulls). Pin to a digest in .infrastructure/services/squid/docker-compose.yaml for reproducibility.
Where to upgrade each component
When you decide to bump a version, edit the source file from the table above and re-roll the relevant image (or just bump the compose file for non-voiceai-* images):
| Component | Changes that drive a re-build |
|---|---|
| Asterisk, Kamailio, Janus, RTPEngine, AudioProc | Edit the relevant .docker/voiceai-*/Dockerfile, then build & push the new voiceai-*:<tag> image to the registry. |
| Node, Go, Python, Debian, Alpine base images | Same as above — edit FROM line in .docker/voiceai-*/Dockerfile, rebuild, push. |
| coturn, PostgreSQL, PgBouncer, Redis, Caddy, OTel, Squid | Edit .infrastructure/services/<svc>/docker-compose.yaml, push the bundle to S3, run update.sh --config-ref <new-ref>. No image rebuild needed. |
| SigNoz | Update .infrastructure/services/signoz/init.sh to pin a tag instead of main (recommended), push the bundle, run update.sh --config-ref. |
Refreshing this page on a release
The extraction commands below are deliberately small and copy-pasteable — run them at the root of the platform repo (itk-ai-assistant). Each one prints the current value of one row in the table above, so a successful release-day refresh is a 30-second diff exercise.
One-shot script
Save the following as scripts/print-third-party-versions.sh in the platform repo (or adapt for your shell of choice). It prints a table you can paste directly into this page on release day.
#!/usr/bin/env bash
# Print every pinned third-party version in the Delphi platform.
# Run from the root of itk-ai-assistant (the platform repo).
set -euo pipefail
print_row() { printf '%-32s %-48s %s\n' "$1" "$2" "$3"; }
print_row "Component" "Version" "Source"
print_row "---------" "-------" "------"
# Bespoke voiceai-* image base versions (from .docker/*/Dockerfile)
print_row "Asterisk (TelSys)" \
"$(rg -No 'ASTERISK_VER=([0-9.]+)' -r '$1' .docker/voiceai-telsys/Dockerfile | head -1)" \
".docker/voiceai-telsys/Dockerfile"
print_row "Kamailio (TelPro)" \
"$(rg -No 'kamailio:([^\s]+)' -r '$1' .docker/voiceai-telpro/Dockerfile | head -1)" \
".docker/voiceai-telpro/Dockerfile"
print_row "RTPEngine (TelPro)" \
"$(rg -No 'RTPENGINE_VERSION=([0-9.]+)' -r '$1' .docker/voiceai-rtpengine/Dockerfile | head -1)" \
".docker/voiceai-rtpengine/Dockerfile"
print_row "Janus (WebRTC)" \
"$(rg -No 'JANUS_VERSION=(v?[0-9.]+)' -r '$1' .docker/voiceai-webrtc/Dockerfile | head -1)" \
".docker/voiceai-webrtc/Dockerfile"
# Compose-pinned upstream images (every infrastructure/services/*/docker-compose.*)
rg -No '^\s*image:\s*([^\s$]+)$' -r '$1' \
.infrastructure/services/*/docker-compose.y*ml | sort -u | \
awk -F: '{ printf "%-32s %s\n", $2, $1 }'
# SigNoz — what branch / tag does init.sh check out?
print_row "SigNoz" \
"$(rg -No 'signoz\.git.*-b ([^\s]+)|--branch ([^\s]+)' -r '$1$2' .infrastructure/services/signoz/init.sh || echo 'main')" \
".infrastructure/services/signoz/init.sh"
Make it executable and run it on every release tag:
chmod +x scripts/print-third-party-versions.sh
./scripts/print-third-party-versions.sh
Quick one-liners (no script needed)
If you don't want to commit the script, the same data with raw rg:
# All bespoke base images
rg -nN '^FROM\s|^ARG\s.*VERSION|ASTERISK_VER=' .docker/voiceai-*/Dockerfile
# All upstream images pinned in compose files
rg -nN '^\s*image:\s*[^\$]' .infrastructure/services/*/docker-compose.y*ml
# SigNoz checkout target
rg -nN 'signoz\.git' .infrastructure/services/signoz/init.sh
Release-day checklist
- Run the extraction script (or one-liners) at the platform repo root.
- Diff its output against the table above. For each row that changed:
- Update this page.
- Update the corresponding service operations page — Containers tables list per-service versions.
- Add a one-line entry under "Infrastructure and operations" in the release notes.
- Re-run
pnpm format:check && pnpm buildin the docs repo — formatting and link integrity are enforced in CI. - If a version bump is operationally significant (Postgres major version, Asterisk major, Kamailio major, OTel pipeline-breaking change), add an explicit operator callout (for example
:::info[Upgrade checklist]) to the relevant operations page. - Bump the page's
platform_version:andlast_verified:frontmatter.
What's intentionally not pinned
ubuntu/squid:latest— see warning above.- SigNoz — tracks
mainbecause the upstreamdocker-composeis opinionated about coordinated upgrades. Pin to a tag once your deployment depends on a specific feature. - The
voiceai-*image tag itself (ECR_TAG) — set per deployment via the bootstrap/opt/deployment/.env. The release notes are the source of truth for whatECR_TAGships at each release.
See also
- Service operations — per-service Containers tables that quote the versions on this page.
- Release notes — v0.9.11 — product changelog and operator rollout checklist for deployments.