New Features & Improvements

  1. Deepgram Flux TTS — Added Deepgram’s Flux model as a text-to-speech vendor across the feature-server, API server, and webapp.
  2. Gradium TTS — Added Gradium as a text-to-speech vendor.
  3. Inworld streaming TTS — Inworld TTS streams with word-level alignment, and the API adds the inworld-tts-2 generation. The older tts-1 generation is deprecated.
  4. Qwen Omni-Realtime (speech-to-speech) — Added Alibaba’s Qwen Omni-Realtime (Qwen-Audio-3.0) as a speech-to-speech vendor for the agent verb.
  5. OpenAI GPT live — Added OpenAI’s GPT live models for speech-to-speech, and OpenAI live transcription is selectable for transcribe.
  6. xAI and Resemble in the portal — The webapp exposes xAI and Resemble text-to-speech options in Extra Options.
  7. Speechmatics filtering — Speechmatics accepts filtering configuration.
  8. Dialogflow CX tool calls — Dialogflow CX supports a client-side tool-call round trip through toolHook.
  9. Dialogflow CES tool calls, streaming playout, and observability — Dialogflow CES supports the same client-side tool-call round trip, streams playout as it arrives, and reports turn-by-turn detail. Recent Calls in the portal has a turn-by-turn transcript view for Dialogflow sessions.
  10. Per-member conference recordinglisten accepts scope=members at the conference level, producing one fork per participant instead of a single mixed stream.
  11. Remote party on conference participants — Conference participants report the remote party’s number.
  12. SRTP on outbound SIP URI callsdial accepts srtpEncryption for SIP URI targets, and the SBC honors the X-Jambonz-SRTP header on forwarded SIP URI calls. rtcp-mux is now the default for SRTP on both inbound and outbound.
  13. transfer onholdHook — The transfer verb and handoff accept an onholdHook.
  14. Multi-arch Docker images — The feature-server, API server, webapp, inbound, and outbound images are built for both amd64 and arm64.

Removals

  1. SMPP removed — SMPP support has been removed from the feature-server, API server, and webapp.
  2. FreeSWITCH dependencies removed — Integration tests run against mediajam, and the cron jobs no longer reference FreeSWITCH.

Bug Fixes

  • transfer/handoff caller ID — A transfer or handoff no longer loses the caller ID.
  • Speech-to-speech teardown — Speech-to-speech sessions are torn down cleanly.
  • DTMFlcc_DTMF prefers RFC 2833 through the media server.
  • say on the streaming path — The say verb executes correctly when streaming.
  • Ultravox errors — A failed call registration reports the real underlying error rather than a generic failure.
  • Outbound SDP — The SBC no longer emits an SDP m= line with no audio codec.
  • 3PCC detection — Inbound no longer misidentifies certain calls as third-party call control.
  • CLI environment — The API server loads the ecosystem environment in the bin/ and upgrade-db CLIs.
  • SSO login — SSO login no longer returns a 500 for enterprise users, and service-provider-scoped users are no longer redirected to registration after signing in.
  • Enterprise upgrade billing — Upgrading an enterprise account keeps the customer’s existing Stripe subscription.
  • Portal — Users land on Home after opting into the new console; the carrier KYC prompt is hidden when prepaid isn’t offered; the placeholder “Est. next invoice” card is parked; and the enterprise welcome dialog no longer pushes account creation.

Component versions

Component11.0.011.1.1
mediajamv0.4.15v0.5.3
drachtio10.0.2210.1.2
upload-recordings1.8.51.8.6
rtpengine14.1.1.8-jambonz1014.1.1.8-jambonz10 (AMI) / -jambonz11 (deb)
pcap-server1.0.31.0.3 (AMI) / 1.0.4 (deb)
heplify-server1.0.31.0.3 (AMI) / 1.0.4 (deb)

The three components that differ between the AMI and Debian package installs differ only in packaging: jambonz11 adds a multi-arch Docker build and an RPM build-dependency fix, and the pcap-server and heplify-server point releases each add a multi-arch Docker image. No functional difference, and the two converge at the next release.

Availability

jambonz.cloud — 11.1.1 is available on our hosted platform, with nothing to install or upgrade.

AWS — AMIs are published for all nine deployment variants on both amd64 and arm64, in all 30 regions the CloudFormation templates support. The AMIs and their EBS snapshots are public, so generate-cf.sh copies them into your own account. See the AWS installation instructions to deploy or upgrade a self-hosted cluster.

Media server

  1. mediajam replaces FreeSWITCH — The feature-server media path now runs on the new Go-based mediajam media server instead of FreeSWITCH. Higher session density, linear multi-core scaling, and a small footprint that builds on any Linux distro and as a minimal Docker image. Audio-only (PCMU/PCMA + telephone-event), RTP via Pion, RFC 2833 DTMF, resampling via libspeexdsp, with Krisp and RNNoise available for noise isolation and turn-taking.

New Features & Improvements

  1. Transfer verb — New transfer verb that hands a call off to another destination as a blind transfer (SIP REFER or bridged dial) or a warm transfer (caller parked on hold, or joined into a three-way conference), with spoken briefs, confirmation gates, hold music, and a configurable disposition (return to the app, go to voicemail, or hang up) when the transfer does not complete.
  2. Transfer-to-human handoff for AI verbs — The agent and llm verbs accept a declarative handoff block. When present, the runtime injects a transfer_to_human tool into the model’s toolset and runs the packaged transfer choreography when the model calls it — no toolHook required.
  3. Built-in hangup tool for AI verbs — The agent and llm verbs accept a hangup block that injects a hangup tool the model can call to end the call on its own, with an optional reason placed in the X-Reason header on the outbound BYE.
  4. Conference observability & control (API)GET /Accounts/{sid}/Conferences?expand=participants returns live conference rooms with their participants and durations; new POST/DELETE /Accounts/{sid}/Conferences/{name}/listen endpoints start and stop a conference-scoped listen fork, addressed by conference name with no participant leg.
  5. Bidirectional conference listen stream — The conference listen fork is bidirectional: the room’s mixed audio streams to your WebSocket endpoint, and audio the WebSocket server streams back is mixed into the room and heard by every participant (unless disabled with disableBidirectionalAudio).
  6. Play or speak to a whole room — The media server can play an audio file (or tone) and speak TTS to an entire conference/room, mixed into the room mix so all participants hear it, with the ability to stop an in-flight playout.
  7. Live Call Control — transferupdateCall now accepts transfer as a live call control operation.
  8. New speech vendors and models — Added support for xAI (STT), Murf (STT and TTS), Rime coda, Cartesia Sonic 3.5 (with word timestamps), Soniox v5 real-time model (stt-rt-v5), and NVIDIA Riva cloud (NVCF) credentials with refreshed Magpie voices. The webapp exposes the new vendors in the speech-services UI.
  9. Speech vendors removed — Verbio, Cobalt, Nuance, Voxist, and PlayHT have been deprecated and removed across the feature-server, API server, and webapp.
  10. gather interim events — Interim gather events now include a verb_id.
  11. API security hardening — Added cross-account authorization checks (CWE-639) across API server resources (tenants, LCR carrier-set entries, SIP/SMPP gateways, custom voices, and more) to prevent access to records outside the caller’s scope.
  12. SBC gateway safety — Carrier configuration now rejects 0.0.0.0 and /0 gateways, and sbc_addresses enforces a unique host:port index.

Bug Fixes

  • Call counts on transfer/abandon — A call transferred off a feature-server now correctly decrements the SBC call count (inbound and outbound), and abandoned outbound calls decrement the count as well. Long-running calls are no longer reaped by the cleanup cron (the debug:incalls keys for active calls are refreshed).
  • Krisp/noise alerts — Alerts raised when Krisp noise isolation or turn detection fails now report the real vendor and underlying error instead of a hardcoded message.
  • Conference timeLimittimeLimit is now preserved on a transferred feature-server when joining a conference.
  • Speech-to-speech teardown — The call now ends cleanly when an s2s session ends with no follow-on verbs; ElevenLabs s2s coerces non-string client_tool_result.result values to strings; and s2s disconnect logging no longer mislabels _onDisconnect as _onConnectFailure.
  • listen verb — Fixed the listen verb being torn down (with the wrong handler) when a background listen task failed.
  • dial verb — An unanswered actionHook is no longer logged as a dial error.
  • Scale-in — Resource teardown in _clearResources is now bounded so scale-in can’t hang.
  • Security/logging — The carrier register_password is no longer written to the log.

New Features & Improvements

  1. Agent verb — production ready — The agent verb graduates from experimental in 10.1.0 to a fully deployable building block for cascaded voice AI pipelines. Compose any supported STT, LLM, and TTS together and let the platform handle turn-taking, barge-in, and tool execution on your behalf.
  2. Agent tool-filler — Cover the silence during slow LLM tool calls with either LLM-generated backchannel phrases or a background audio loop. In backchannel mode the agent’s own LLM is used to generate a fresh set of natural filler phrases in the configured TTS language (with an optional style hint), pre-warmed at agent startup so they’re ready the moment a tool call fires. In audio mode the agent loops a URL of your choice. Both modes are tuned with startDelaySecs and escalationSecs.
  3. Deepgram Flux multilingual with auto-locking — Detect the caller’s language on the first utterance, then automatically lock STT to that language and switch the TTS voice to match. New autoLockLanguage (true / false / 'always') and languageConfig (per-language voice mapping) properties on the agent verb, plus a WebSocket stt:reconfigure command for mid-call control.
  4. Manifest-driven LLM credentials — The API server and webapp now render LLM credential forms and handle encryption from a shared @jambonz/llm manifest, so adding a new LLM vendor no longer requires changes in api-server or webapp. Fully backward compatible with all existing encrypted credentials.
  5. DeepSeek LLM support — Add DeepSeek as an LLM provider for the agent verb and any HTTP llm.toolHook flow.
  6. Google Vertex AI LLM support — Add Google Vertex AI as an LLM provider, with vertex-gemini and vertex-openai exposed as distinct credential types rather than being inferred from the model name.
  7. Azure OpenAI LLM support — Add Azure OpenAI as an LLM provider with full credential management in the API server and webapp.
  8. Groq LLM support — Add Groq as an LLM provider, exposing Groq’s low-latency inference of open-weight models (Llama, Mixtral, and others) to the agent verb and llm.toolHook flows.
  9. HuggingFace Inference Providers — Add HuggingFace Inference Providers as an LLM provider, opening up the broad catalog of models served through the HuggingFace inference network.
  10. Baseten LLM support — Add Baseten as an LLM provider, letting you wire Baseten-hosted open-weight model deployments directly into the agent verb.
  11. Vendor metadata end-to-end — Surface provider-specific telemetry — region, request id, processing time, cache hit/miss token counts, rate-limit headers, HuggingFace inference provider, Bedrock latency, Groq processing-ms — through turn_end event hooks, session.json, the webapp transcript view, and the offline bundle viewer. A generic renderer means new vendors light up the diagnostics view without UI changes.
  12. LLM connect-time diagnostics — Optional client-side timing breakdown (request → headers, headers → first token, plus TCP/TLS connect timing via undici diagnostics_channel). Enable with JAMBONES_DEBUG_LLM_TIMING=1 on the feature-server.
  13. HTTP llm.toolHook for OpenAI — The HTTP llm.toolHook integration now supports OpenAI in addition to the existing providers.
  14. OpenAI Realtime GA — Full support for OpenAI’s general-availability Realtime API. The platform detects the session shape on the wire and converts legacy formats transparently while stripping GA-invalid fields from older response_create payloads.
  15. OpenAI Realtime Whisper VAD — Use OpenAI’s Whisper-based voice activity detection in the OpenAI Realtime STT pipeline.
  16. AssemblyAI speech-to-speech — New mod_assemblyai_s2s FreeSWITCH module provides real-time speech-to-speech via AssemblyAI’s streaming API.
  17. Vertex AI for Google S2S — Use vertex-gemini and vertex-openai as Google speech-to-speech backends, expanding model availability beyond the standard Google Cloud Speech endpoints.
  18. Cartesia generation_config — Support generation_config for Cartesia Sonic-3 and higher voices, enabling more advanced TTS control.
  19. Google STT parentPath — New recognizer.googleOptions.parentPath lets you point Google STT at a custom GCP resource hierarchy.
  20. jambonz-mini Debian install — A new one-command bare-metal / VPS installer brings up a complete single-host jambonz stack from the public Debian package repository. No Docker, Kubernetes, or cloud templates required — ideal for small deployments, lab environments, and edge installs. See the Debian package install guide for details.
  21. System Updates admin panel — Jambonz-mini deployments installed via AWS CloudFormation or Terraform (on other clouds) can now detect available upgrades, install immediately, schedule (or reschedule, or cancel) future upgrades, and watch live progress streamed back into the portal via Server-Sent Events. A site-wide banner flags any pending upgrade. Visibility is gated by VITE_ENABLE_SYSTEM_UPDATES and a valid license. (Bare-metal Debian installs upgrade via apt upgrade instead.)
  22. Multi-process clustering — Optional cluster.js worker forking is now available in feature-server, sbc-inbound, sbc-outbound, and api-server. Enable via JAMBONES_FORK_INSTANCE=<n> (or JAMBONES_FORK_INSTANCE=max for one worker per core) to get pm2-style scaling under systemd without the pm2 dependency.
  23. Krisp failure alerts — Generate alerts on Krisp noise-isolation or turn-taking failure so operators can spot degraded sessions in time-series dashboards.
  24. Slow End-of-Turn metric alerts — The webapp now badge-flags slow-turn detection in the EOT metric alerts view, making it easier to triage latency outliers.
  25. Inline action events in transcript — Agent transcript action events (TTS language switches, configuration changes, etc.) are now interleaved inline with conversation turns sorted by timestamp, rather than grouped at the bottom.
  26. dial re-anchor X-Reason header — Pass an X-Reason header when re-anchoring media endpoints to FreeSWITCH, allowing the re-anchor to skip license validation.
  27. FreeSWITCH module updates — A new uuid_deepgramflux_configure API command for runtime Deepgram Flux configuration, AVMD fast_math optimization for audio pattern detection, improved 11Labs alignment-tracking logging, and mod_deepgram_transcribe added to the default modules.conf.xml autoload list.

Bug Fixes

  • Fixed AMD tone detection stopping prematurely on machine-stopped-speaking; tone detection now continues as expected.
  • Fixed a TTS streaming race condition with fast LLMs that trigger tool calls — the streaming connection is now pre-warmed and channel variables are set before startTtsStream is invoked.
  • Fixed agent preflight-hit transitions (direct jump to Thinking) not calling autoLockLanguage when they should.
  • Fixed Deepgram Flux STT metadata capture by reading the languages array directly from EndOfTurn events.
  • Fixed LLM tool history being dropped across internal toolCallResponse reprompts, which could cause the LLM to hallucinate a refusal mid-conversation. Tools from the last prompt() are now cached and reused.
  • Fixed Rimelab voice-model handling so each model uses its own voice rather than being forced to a single hardcoded default.
  • Fixed a quick-CANCEL race condition in sbc-inbound where rapid CANCEL requests on inbound calls could cause missed state transitions and stale call-count entries.
  • Fixed a UTC date-handling bug in the webapp’s /Updates/sessions/{path} route that produced inconsistent session and bundle paths across timezones.
  • drachtio-server (critical): Fixed a delayed crash that could occur when in-dialog requests (INFO, NOTIFY, OPTIONS, MESSAGE, PUBLISH, SUBSCRIBE) arrived during an active INVITE transaction.
  • drachtio-server (critical): Fixed a memory leak on WebSocket BYE when the transport closed before the application responded.
  • drachtio-server (critical): Fixed a crash on shutdown caused by improper cleanup ordering during SIGTERM.
  • drachtio-server: Corrected session-expires refresher timing, and fixed an edge case where a late ACK after dialog teardown could destabilize the transaction layer.
  • FreeSWITCH: Fixed a long-standing curl + boost::asio race condition across all 11 streaming-TTS modules by replacing double-map lookups with an iterator pattern in HTTP completion callbacks.
  • FreeSWITCH: Fixed a missing semicolon in mod_rimelabs_tts_streaming and removed obsolete libwebsockets logging symbols to support current libwebsockets versions.

SQL Changes

No database schema changes are required for this release. The LLM vendor expansion is handled entirely via the new @jambonz/llm manifest layer and the @jambonz/schema package — existing llm_credentials storage is reused.

Availability

  • Available now on jambonz.cloud.
  • Available now for AWS self-hosting via CloudFormation scripts.
  • Available now as a Debian package for jambonz-mini bare-metal / VPS deployments.
  • Coming shortly to all other self-hosting platforms.

Questions? Contact us at support@jambonz.org

New Features & Improvements

  1. Session observability — Major new feature providing detailed per-session data for debugging and analysis. At call end, the feature-server assembles a session.json containing turn-by-turn detail (transcripts, latencies, agent responses) and sends it to the recorder alongside the audio. The API server exposes a new session retrieval endpoint and bundle viewer (HTML page with embedded waveform player) so you can replay audio and inspect turn data together. A new observability_level column on the application controls how much detail is captured. The webapp adds an observability level selector and a transcript tab in the Recent Calls view for browsing session data.
  2. Krisp turn detection with native-turn-taking STT vendors — You can now use Krisp for acoustic turn detection even when your STT vendor (AssemblyAI, Deepgram Flux, Speechmatics) provides its own native turn-taking. Previously these vendors always used their built-in detection; now you can opt into Krisp for more consistent behavior across vendors.
  3. Agent verb inherits STT/TTS from application — The agent verb now falls back to the STT and TTS settings configured on the application when stt or tts are not specified in the verb. Previously these were effectively required on the verb itself.
  4. drachtio-srf 5.0.21 — Updated the SIP stack to pick up upstream fixes.

Bug Fixes

  • Fixed webapp clearing the “alerts last viewed” timestamp on logout, which caused the alert notification badge to re-trigger for already-seen alerts after logging back in.
  • Fixed an issue in the Recent Calls view where session date was being parsed from attempted_at instead of the recording URL, producing incorrect timestamps in some cases.

SQL Changes

1ALTER TABLE accounts ADD COLUMN observability_level
2 ENUM('disabled','recording','full') NOT NULL DEFAULT 'disabled' AFTER record_all_calls;
3
4ALTER TABLE applications ADD COLUMN observability_level
5 ENUM('disabled','recording','full') DEFAULT NULL AFTER record_all_calls;

Availability

  • Available now on jambonz.cloud; coming soon with devops scripts for subscription customers

Questions? Contact us at support@jambonz.org

New Features & Improvements

  1. Agent verb — Major new feature enabling low-latency voice AI agents with support for Amazon Bedrock and Google Gemini as LLM backends, Deepgram and Krisp for STT/turn-taking, and ElevenLabs TTS with spoken-word tracking. Includes mid-conversation async updates via agent:update, noise cancellation powered by Krisp, and comprehensive metrics and measurement. See the agent verb reference and voice agents guide for details.
  2. Node.js SDK — New unified SDK for building jambonz voice applications in TypeScript/JavaScript, supporting webhook and WebSocket transports, REST API client, TTS streaming, and chainable verb methods. Replaces the older @jambonz/node-client and @jambonz/node-client-ws packages. See the Node.js SDK documentation.
  3. Python SDK (experimental) — New Python SDK with the same capabilities as the Node.js SDK: webhook and WebSocket transports, REST client, TTS streaming, inject commands, and spec-driven verb generation with full type hints. See the Python SDK documentation.
  4. Speech vendor updates — Expanded speech vendor support across the platform:
    • Speechmatics Preview STT — New speech-to-text vendor with turn-taking event forwarding and analytics.
    • Houndify WebSocket STT — Speech recognition over WebSocket with audioQueryAbsoluteTimeout for controlling recognition timeouts.
    • AssemblyAI Universal-3 Pro — Support for the universal-3 pro streaming model, defaulting to u3-rt-pro when a prompt is provided.
    • Deepgram Flux language hint — Pass language_hint to Deepgram Flux STT for improved recognition accuracy.
    • Google S2S transcription events — Google Speech-to-Speech now emits llm_event with transcription data to the application layer.
    • ElevenLabs TTS tracking — Track spoken words and TTS timing for ElevenLabs, enabling detailed usage analytics and billing insights.
    • TTS time-to-first-byte metrics — Latency metrics across all streaming TTS vendors to measure time to first audio byte.
    • Inworld AI models — Support for Inworld AI models.
  5. Krisp noise isolation — Add support for Krisp-powered noise isolation and cancellation with usage tracking and event generation.
  6. Google Gemini LLM — Add support for Google Gemini as an LLM provider with credential management in the API server and webapp.
  7. MCP client hardening — Improved MCP client reliability with configurable timeouts, authentication support, URL hints, automatic reconnection, and graceful connection close.
  8. Listen verb in conference — Support for nesting a listen verb inside a conference, enabling real-time audio streaming from conference sessions.
  9. LLM services — New LLM services management in the API server and webapp.
  10. License expiry alert — The webapp now displays an alert when the system license key is expired or approaching expiration.
  11. Schema migration — Migrated to the consolidated @jambonz/schema package, deprecating the standalone verb-specs module.
  12. Updated API swagger — API server swagger documentation updated to reflect new endpoints and properties.

Bug Fixes

  • Fixed a race condition for outbound calls in the feature-server that could cause call setup failures.
  • Fixed gladiaOptions being hardcoded instead of using user-provided configuration.
  • Fixed Google Speech-to-Speech not sending transcription events to the application layer.
  • Fixed DTMF digits being sent as multiple underscore characters instead of correct tones.
  • Fixed TTS engine flush signaling and guarded against Cartesia empty events without proper completion state.
  • Fixed ElevenLabs models endpoint failure causing the entire language/model dropdown to break; now gracefully falls back to static data.
  • Fixed Deepgram STT language dropdown appearing empty due to model name parsing issue.
  • Fixed missing language names for Cartesia Sonic 3 languages in the language map.
  • Fixed ElevenLabs STT not properly loading available languages and models.
  • Fixed potential crash in webapp TTS voice sorting when voice name is undefined.
  • Fixed exception when user provides an invalid value for a play file URL.
  • Added exception handling in the mod_dub FreeSWITCH module to prevent crashes from unhandled errors.
  • Fixed agent verb integration with Deepgram STT and Krisp/LLM-based turn taking.
  • Fixed internal task validation that was incorrectly rejecting valid internal tasks.
  • Removed unused IBM speech integration from the webapp.

SQL Changes

-- Krisp usage tracking
CREATE TABLE krisp_usage_rollup (...)

Contact your account manager or email support@jambonz.org for the complete SQL migration script for this release.

Questions? Contact us at support@jambonz.org

New Features & Improvements

  1. Add ability to override certain TTS streaming options via the config verb, allowing runtime control of streaming behavior.
  2. Add ability to enable/disable Azure audio logging via azureOptions in speech credentials.
  3. Compare SDP to determine if transcoding is being used, with refactored codec checking.
  4. SoundHound now supports audio endpoint configuration from speech credentials with requestInfo and sampleRate options.
  5. Add configurable say chunk size for TTS streaming.
  6. Enhanced TTS sentence boundary detection for Arabic and Japanese with improved regex handling.
  7. Add support for sending DTMF to Ultravox.
  8. Add label to STT/TTS alerts with time-series updates.
  9. Use timeout on HTTP requests to prevent hanging connections.
  10. Allow UAS leg to send re-invite with outbound gateway credentials.
  11. Add hasRecording flag for setting recording URLs in call detail records.
  12. Add configurable backup for outbound registration failure.
  13. Use persistent call-id for regbot using gateway SID.
  14. Only disable registration after multiple consecutive failures rather than a single failure.
  15. Add support for Google Gemini TTS.
  16. Add support for OpenAI transcribe auto language detection.
  17. Allow boostAudioSignal from updateCall API.
  18. Allow media_path updates from REST API with validation for media_path values.
  19. Allow startRecording without SIPREC URL for cloud deployments.
  20. Add new fields for ICE and DTLS configuration.
  21. Add admin carrier and number management control via JAMBONES_ADMIN_CARRIER.
  22. Add database migrations for predefined carriers tables.
  23. Add alert notification badge to the webapp with configurable polling.
  24. Add SoundHound audio endpoint configuration in the webapp.