Skip to main content
Version: 0.9.18

Release identity and service compatibility

Use this reference before you choose a release, replace a component or roll back an upgrade. Deploy the approved component and configuration set for your deployment. A shared tag, an unchanged component or a service-change table alone does not prove that a mixed set works together.

Availability: Operators need the target release notes, the generated deployment bundle, registry access and the release's schema and upgrade instructions. SDK versions and the separately managed Portal have their own release identities. Confirm support coverage with your support agreement; a shared version label does not establish tested compatibility.

Keep four identities separate​

IdentityWhat it tells youWhat it does not establish
Product release/tagWhich product revision and release instructions are intendedThat a specific host runs its images or has applied its configuration
Deployment manifest and bundle referenceWhich roles, images and generated files are selected for that environment/featuresThat the target hosts fetched them or passed acceptance
Actual image/configuration identityWhat content was delivered and is runningCompatibility with every other service, schema or client
Test/acceptance evidenceWhich concrete combination and scenario workedArbitrary later image tags, different feature sets or untested workloads

The Portal's release distribution manifest selects deployment registries and Delphi image names. Upstream images, mounted binaries and externally managed services also belong in your deployment inventory. The distribution list is neither the complete running-container catalogue nor a test result.

Capture a useful release record​

Before and after a change, record:

  • Deployment and namespace; product release; release notes and migration instructions.
  • Each affected service's image reference, registry digest and running image identity; platform/architecture when relevant.
  • Configuration bundle reference and recoverable exact content/version; effective feature profile and required configuration/secret version identifiers, without their values.
  • Schema/migration state, independently versioned SDK/client contracts and external dependency versions needed for the scenario.
  • The acceptance checks, result and time, plus the previous compatible recovery set.

On a known API host, a bounded identity check is:

docker inspect --format '{{.Name}} {{.Config.Image}} {{.Image}}' voiceai-telapi

This prints the container's reference and image ID, not its environment. A local image ID is not interchangeable with a registry manifest digest, so keep the distribution/registry record as well. The normal refresh helper compares running container IDs with local image metadata. It detects stale local instances; it is not a provenance or interoperability test.

Tags are not immutable content​

Service Compose uses the configured Delphi release tag and upstream references such as postgres:17-alpine, redis:7-alpine, caddy:2-alpine and ubuntu/squid:latest. These names can resolve to different content over time. Record resolved digests when reproducibility matters. Several Delphi base images are pinned by digest from 0.9.18; the Compose service images above are not.

Decide whether a component can move alone​

Proposed changeEvidence needed before applying it
Restart/recreate unchanged componentRecorded image/configuration identity, dependency health and the same intended schema/credentials
Apply a documented component patchExact patch scope, permitted dependency set, migration/activation order, targeted acceptance and rollback instructions
Mix a newer component with older dependenciesExplicit evidence for that combination; otherwise use the approved coordinated release set
Roll back after a migrationConfirm old images can use the resulting schema, or use the planned schema/data recovery procedure; merely retagging images is insufficient
Change optional modules/topologyGenerated manifest and effective flags, additional dependencies/network paths, entitlement and feature-specific verification

Mixed-release compatibility: this handbook lists no accepted mixed-release combination. Upgrade the complete release set unless the release notes for a documented patch name the permitted dependency set. To add a combination, deploy it in a test environment, run the checks in apply and accept the selected set, and keep the image digests and results.

A service-change table says which components changed. It does not certify unchanged components against new schemas, queue payloads or runtime contracts.

Release register​

The register lists release references for upgrade planning. It does not assign support status or establish that a release is deployed. Confirm the selected release, its published artifacts and your support agreement before an upgrade.

Release lineLatest patchRelease month
v0.9.18v0.9.18October 2026
v0.9.17v0.9.17-patch2September 2026
v0.9.16v0.9.16-patch2July 2026
v0.9.15v0.9.15-patch4July 2026
v0.9.14v0.9.14-patch3June 2026
v0.9.13v0.9.13-patch3June 2026
v0.9.12v0.9.12-patch1May 2026
v0.9.11NoneMay 2026
v0.9.10v0.9.10-patch1April 2026

Upgrade to 0.9.18​

Read the 0.9.18 release notes before you start. The following steps are mandatory for an upgrade from 0.9.17:

  1. Upgrade the full 0.9.18 release set. Do not mix in 0.9.17 components without acceptance evidence for that exact combination.
  2. Run the database migrations with the Ops db-migrate service, including the new live_session_usage migration, before the new API, Web and Voice services start.
  3. Set FEATURE_BROWSER_SDK and FEATURE_WEBRTC explicitly to true or false. Unset flags are off. TelAPI and TelWeb reject a supplied value other than literal true or false; they also reject WebRTC enabled without the Browser SDK.
  4. Remove the retired FEATURE_API_ACCESS; it has no alias. Because FEATURE_API_ACCESS was on by default in 0.9.17, the Browser SDK stays off unless you enable it. Follow upgrade the integration capabilities.
  5. If your teams use the system-audio library, configure its storage first. Without it, uploads fail with "System audio storage is not configured". See choose a storage backend.

Verify the upgrade with apply and accept the selected set. Feature availability lists which services need each flag.

Service image changes by release​

Each row lists the Delphi images whose digest changed against the preceding release. The table stores changed/not-changed labels only, not digests or test results, so it cannot reconstruct an immutable deployment. An omitted component means "not changed", not "tested against every other component". Missing patch rows are unknown; do not interpolate them.

ReleaseImages that changed
v0.9.18TelPro, RTPEngine, WebRTC (Janus), TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate, Log-to-span
v0.9.17-patch2TelPro, TelPhi, TelAPI, TelWeb, Tasker, DB migrate, Scaler
v0.9.17-patch1TelPro, RTPEngine, WebRTC (Janus), TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate, Log-to-span
v0.9.17TelPro, TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate, Log-to-span
v0.9.16-patch1TelPro, RTPEngine, TelPhi, TelAPI, TelWeb, Scaler, Log-to-span
v0.9.16TelPro, RTPEngine, WebRTC (Janus), TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate, Log-to-span
v0.9.15TelPro, RTPEngine, WebRTC (Janus), TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate, Log-to-span
v0.9.14-patch3TelPro, RTPEngine, WebRTC (Janus), TelPhi, AudioProc, TelAPI, TelWeb, Scaler, Tasker, DB migrate, Log-to-span
v0.9.14-patch1TelPhi, TelAPI, TelWeb, DB migrate
v0.9.14TelPro, RTPEngine, WebRTC (Janus), TelSys, TelPhi, AudioProc, TelAPI, TelWeb, Media server, Scaler, Tasker, DB migrate
v0.9.13-patch3TelAPI, TelWeb, TelPro, TelPhi, Tasker, DB migrate
v0.9.13-patch1TelPro, TelPhi, TelWeb, TelAPI, DB migrate
v0.9.13TelPro, TelSys, TelPhi, TelAPI, TelWeb, Scaler, Tasker, DB migrate, Log-to-span
v0.9.12-patch1TelPhi
v0.9.12TelPhi, TelAPI, TelWeb, Media server, Scaler, Tasker
v0.9.11TelPro, TelSys, TelPhi, TelAPI, TelWeb, Media server, Scaler, Tasker

The Media server image contains the media-upload service. The voiceai-log-to-span image is used by the local development topology. Voice and TelPro hosts run the same converter as a mounted binary in an alpine:3.19 sidecar, so a Log-to-span change also needs that binary updated. Relay uses the upstream coturn image below; there is no Delphi voiceai-turn image. The SDK keeps its own version and release process; these rows are not an SDK support matrix. See browser integration for the separately versioned SDK reference.

Upgrade the separately managed Portal​

Availability: this procedure is for operators responsible for the Portal deployment. A Delphi customer deployment upgrade does not itself upgrade the Portal.

  1. Back up the Portal database and record the Portal image and migration state before its separate rollout. Confirm that the backup can be restored.
  2. Apply the Portal release's database migrations before starting its new application version. These migrations include table rebuilds and removal of obsolete module-grant storage; they are not purely additive. Account session-version changes can require users to sign in again.
  3. Verify Portal sign-in, customer memberships and feature-profile selection after the migration. Keep the prior image and database backup together for recovery. Replacing the container alone does not reverse a database migration.

Declared upstream versions​

These are the upstream versions declared in the product source for release 0.9.18. They are declarations and defaults, not a bill of materials read from running images: build arguments, deployment overrides and mutable tags can change delivered content, so record resolved digests and effective overrides separately.

ComponentDeclared version or imageDeclaration location
Kamailio / TelPro6.1.4 source build.docker/voiceai-telpro/Dockerfile: KAMAILIO_VERSION
hiredis / TelProv1.4.1 source build.docker/voiceai-telpro/Dockerfile: HIREDIS_VERSION
RTPEngineRepository channel 26.0, packages 26.0.1.24-1~bpo13+1.docker/voiceai-rtpengine/Dockerfile: RTPENGINE_VERSION, RTPENGINE_PACKAGE_VERSION
Asterisk / TelSys22.11.0, source archive verified with a SHA-256 checksum.docker/voiceai-telsys/Dockerfile: ASTERISK_VER, ASTERISK_SHA256
Janus / browser gatewayv1.4.1 Git tag.docker/voiceai-webrtc/Dockerfile: JANUS_VERSION
Silero VAD model / AudioProcv5.1.2.docker/voiceai-audioproc/Dockerfile: SILERO_VAD_VERSION
Node.js / application and migration imagesnode:24.21.0-alpine3.24, pinned by digest.docker/voiceai-{telapi,telweb,telphi,tasker,scaler,db-migrate}/Dockerfile
Debian / TelPro, TelSys, RTPEngine and Janusdebian:trixie-slim, pinned by digestTheir .docker/voiceai-*/Dockerfile files; also the AudioProc zlib-builder build stage
Go / media-upload, Log-to-span, TelSys toolgolang:1.27.1-alpine3.24, pinned by digest; build stage only.docker/voiceai-media-server/Dockerfile, apps/log-to-span/Dockerfile, TelSys Dockerfile
Alpine / media-upload and Log-to-span imagesalpine:3.24.2, pinned by digest.docker/voiceai-media-server/Dockerfile, apps/log-to-span/Dockerfile
Alpine / Log-to-span sidecarsalpine:3.19.infrastructure/services/voice/docker-compose.yaml and telpro/docker-compose.yml
CPU AudioProcpython:3.11-slim-trixie, pinned by digest.docker/voiceai-audioproc/Dockerfile
GPU AudioProcnvidia/cuda:12.4.1-runtime-ubuntu22.04Same AudioProc Dockerfile; the DEVICE build argument selects the stage
coturn / relaycoturn/coturn:4.6.2.infrastructure/services/telpro/docker-compose.yml
PostgreSQLpostgres:17-alpine.infrastructure/services/database/docker-compose.yaml
PgBounceredoburu/pgbouncer:v1.25.1-p0Database Compose
Redisredis:7-alpineDatabase Compose
Caddy / Web and Mediacaddy:2-alpine.infrastructure/services/web/docker-compose.yaml and media/docker-compose.yaml
Host operating systemubuntu-22.04 cloud image.infrastructure/terraform/modules/server/main.tf: image
Squidubuntu/squid:latest.infrastructure/services/squid/docker-compose.yaml
OpenTelemetry collector (contrib)otel/opentelemetry-collector-contrib:0.159.0API, Database, Ops, Squid, TelPro, Voice and Web Compose; signoz/docker-compose.export-collector.yaml
SigNoz applicationsignoz/signoz:v0.139.0 default.infrastructure/services/signoz/vars.yaml and render-casting.sh: SIGNOZ_VERSION
SigNoz ingester collectorsignoz/signoz-otel-collector:v0.142.0 defaultsignoz/render-casting.sh; SIGNOZ_OTELCOL_TAG overrides it
ClickHouseclickhouse/clickhouse-server:25.5.6 defaultsignoz/vars.yaml and render-casting.sh: CLICKHOUSE_IMAGE
Keycloak / Portal identityquay.io/keycloak/keycloak:26.7.4, pinned by digestapps/portal/identity/Dockerfile; part of the separately managed Portal
Node.js / Portalnode:22-alpineapps/portal/Dockerfile; part of the separately managed Portal

Defaults, overrides and mutable references​

ECR_REGISTRY and ECR_TAG select the Delphi images in the generated service Compose files. Several production declarations fall back to latest; development uses dev. A fallback is not a recommended release selection. Verify the effective generated deployment and keep its identities.

Squid is not the only mutable reference. Major/minor image tags and even version-looking tags can be replaced, and repository channels can gain new packages. Use the declarations to investigate, then keep the actual build and running identities.

SigNoz's application, ingester collector, contrib export collector and ClickHouse have separate version controls. Do not set the ingester to the application version merely to make them match. Inspect the rendered casting and the effective deployment overrides before you apply its upgrade procedure. Telemetry and monitoring explains the collector and ingester roles; service health covers controlled activation.

Review the dependency boundaries​

Component setWhat can couple its upgrade to other components
TelWebDatabase/auth model, role/session rules, API contracts and background notification jobs
TelAPIDatabase/Redis schema and state, browser SDK/session protocols, callbacks, Voice and provider/media behavior
TelPhi + TelSys + optional AudioProcARI/media interfaces, provider audio, edge signaling, recording/job contracts; treat the bundle as coordinated unless the patch documents otherwise
TelPro signaling/media/gatewayVoice routing/media, generated trunk/TLS policy, Redis state and enabled browser gateway/relay behavior
OpsMigration schema, job payload producers/consumers, cloud operations, backups and notification transport
Database/RedisEvery consumer's credentials, TLS, schema/state and recovery compatibility
Media/telemetry/proxyConsumer authentication/trust, data formats, persistent storage, export paths and external connectivity

For browser clients, keep the SDK's independent version and verify its supported session modes and contracts with the browser integration guide. Do not assign the platform tag to the SDK to make a table look aligned.

Apply and accept the selected set​

Follow the deployment journey: preserve the recovery point, preview the intended update, run required migrations and activation in the release's order, and verify each affected role. A finished release distribution is not evidence that your installation completed this step.

Use service health plus the applicable end-to-end scenario: sign-in and team access, phone or browser conversation, callback, recording or backup job, or feature activation. Store the result with the identities above. A failed scoped check is a failed release criterion for that change; do not replace it with an unrelated green build.

If acceptance fails, find the failed layer before rollback. Configuration recovery separates application snapshots, bundle/secret versions, database recovery and external objects. Verify again after rollback and keep the failed combination on record rather than marking it compatible.