Skip to main content
Version: 0.9.17-patch2

Release identity and service compatibility

Use this reference before choosing a release, replacing a component or rolling back an upgrade. Deploy the approved component/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, generated deployment bundle, registry access and the applicable schema/upgrade instructions. SDK versions and the separately managed Portal have their own release identities. This page does not grant support status to an archived release or certify unlisted cross-release combinations.

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 the actual deployment inventory. Do not treat that distribution list as the complete running-container catalogue or as a test result.

Capture a useful release record​

Before and after a change, record:

  • Deployment and namespace; product revision/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. Keep the distribution/registry evidence as well. The normal refresh helper compares running container IDs with local image metadata; that check detects stale local instances but is not a complete 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; do not assume every upstream reference except latest is immutable.

Build inputs such as Asterisk/Kamailio/Janus version declarations describe source intent. Confirm them against the artifact actually built and delivered. An upstream version table and a container's Delphi tag answer different questions.

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

A service-change matrix says which components were rebuilt. It does not certify unchanged components against all new schemas, queue payloads or runtime contracts. Treat the historical release register as a navigation aid to release information, not replacement acceptance evidence.

Recorded release register​

This is a retained release register, not a live support feed or an independently verified list of compatible combinations. Its status labels below are the labels recorded when the documentation source was captured. Confirm your approved target, current support agreement and release-specific migration instructions before an upgrade; neither an archive label nor this historical status grants support.

Release lineRecorded latest patchRecorded statusRecorded release month
v0.9.17v0.9.17-patch2CurrentSeptember 2026
v0.9.16v0.9.16-patch2SupportedJuly 2026
v0.9.15v0.9.15-patch4SupportedJuly 2026
v0.9.14v0.9.14-patch3SupportedJune 2026
v0.9.13v0.9.13-patch3SupportedJune 2026
v0.9.12v0.9.12-patch1SupportedMay 2026
v0.9.11None recordedSupportedMay 2026
v0.9.10v0.9.10-patch1SupersededApril 2026

The register records 0.9.16-patch2 as the latest patch while its release-note pointer still names patch1. Do not interpret that inconsistency as verified patch2 rollout instructions. Obtain the exact selected release's notes and artifact record. Next is a documentation/source snapshot, not an additional released product line.

Recorded service rebuilds​

The retained register says the following services changed image digest relative to the preceding release. It stores only changed/not-changed labels, not the digests or test results, so this table cannot reconstruct an immutable deployment. An omitted component means “not listed as changed”, not “tested against every other component”. Missing patch rows are unknown; do not interpolate them.

ReleaseServices recorded as rebuilt
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

log-to-span entries describe the historical build register; the selected Compose sources use that image only in the local development topology. They do not add a production service requirement. Relay uses the upstream coturn image below; do not infer a voiceai-turn image from the availability of TURN. The SDK keeps its own version and release process; these platform rebuild rows are not an SDK support matrix. See browser integration for the separately versioned SDK reference and its contract boundaries.

Declared upstream versions​

For current release 0.9.17-patch2, these declarations were checked at product source d8697e3d9dddbb158ca66e4499c375575cf9d16b.

These are source declarations/defaults, not a bill of materials extracted from running images. Build arguments, deployment overrides and mutable registry tags can change delivered content. Paths below identify the declarations in the selected product source; record resolved image digests and effective overrides separately. No dependency version here certifies a successful upgrade or mixed-version pair.

Component / scopeDeclared version or imageDeclaration location
Asterisk / TelSys22.9.0.docker/voiceai-telsys/Dockerfile: ASTERISK_VER; legacy base Dockerfile also declares it
Kamailio / TelProghcr.io/kamailio/kamailio:6.1.1-bookworm.docker/voiceai-telpro/Dockerfile
RTPEngine26.0 package repository channel.docker/voiceai-rtpengine/Dockerfile: RTPENGINE_VERSION; package installation is not an exact package revision pin
Janus / browser gatewayv1.3.3 Git tag.docker/voiceai-webrtc/Dockerfile: JANUS_VERSION
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
Squidubuntu/squid:latest.infrastructure/services/squid/docker-compose.yaml
Contrib collector / service and export collectorsotel/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, init.sh and render-casting.sh; SIGNOZ_VERSION can override
SigNoz ingester collectorsignoz/signoz-otel-collector:v0.142.0 defaultsignoz/render-casting.sh; SIGNOZ_OTELCOL_TAG can override independently of the app
ClickHouseclickhouse/clickhouse-server:25.5.6 defaultsignoz/vars.yaml and render-casting.sh; CLICKHOUSE_IMAGE can override
Node.js / application and migration buildsnode:24-alpine.docker/voiceai-{telapi,telweb,telphi,tasker,scaler,db-migrate}/Dockerfile
CPU AudioProcpython:3.11-slim.docker/voiceai-audioproc/Dockerfile
GPU AudioProcnvidia/cuda:12.4.1-runtime-ubuntu22.04Same AudioProc Dockerfile; selected device build stage matters
Go / media-upload buildgolang:1.24-alpine.docker/voiceai-media-server/Dockerfile; build tool, not the final runtime
Alpine / media runtime and selected sidecarsalpine:3.19Media-server Dockerfile, TelPro and Voice Compose
Debian / TelSys, RTPEngine and Janus basesdebian:bookworm-slimTheir .docker/voiceai-*/Dockerfile files; Kamailio uses its own image above

Defaults, overrides and mutable references​

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

Squid is not the only mutable reference: major/minor image tags and even version-looking tags can be replaced, repository channels can gain new packages, and build stages can resolve different base content. The auxiliary legacy runtime Dockerfile also references voiceai-base:latest; its existence does not prove it was built or deployed for your release. Use source declarations to investigate, then retain 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 applying its upgrade procedure. Logs and telemetry explains the collector roles; service health and refresh covers controlled activation. Neither a successful pull nor a rendered file proves data-path health.

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, retain the SDK's independent version and verify its supported session modes/contracts using the browser integration guide. Do not assign the platform tag to the SDK merely to make a table look aligned.

Apply and accept the selected set​

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

Use service health plus the applicable end-to-end scenario: sign-in/team access, phone/browser conversation, callback, recording/backup job or feature activation. Store the actual 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, choose the failed layer before rollback. Configuration recovery separates application snapshots, bundle/secret versions, database recovery and external objects. Re-verify after rollback and retain the failed combination as evidence rather than silently marking it compatible.

Older documentation remains reachable at its established URLs. An archive label describes documentation presentation; it does not itself define product support, customer entitlement or a tested upgrade path.