github livekit/agents livekit-agents@1.8.1

3 hours ago

Duplex Model Support

Speech models that are able to speak and listen simultaneously are now supported via the new DuplexModel class, with OpenAI's GPT-Live model as the first to be implemented.

session = AgentSession(
        llm=GPTLiveModel(
            voice="marin",
            # backend Responses model that handles reasoning and tools
            responses_options={
                "model": "gpt-5.6-luna",
                "instructions": "Use tools when current information is required.",
            },
        ),
    )

Read more about duplex models in our docs.

What's Changed

  • chore: isolate ruff dependencies in ci by @chenghao-mou in #7142
  • fix(telemetry): describe option objects in the session report by @davidzhao in #7127
  • chore: remove commented-out keepalive stub from Deepgram V2 STT by @detail-app[bot] in #7141
  • docs: remove stale example references after examples revamp by @detail-app[bot] in #6402
  • fix(openai): don't replace a TTS prewarm that is still in flight by @omChauhanDev in #7147
  • fix: drain unused adapter metrics streams by @chenghao-mou in #7146
  • fix: drop unused audio forwarding buffer by @chenghao-mou in #7144
  • fix(tests): run the deepgram handshake redaction check in CI by @omChauhanDev in #7152
  • plugins/phonic: add enable_watermarking realtime config option by @arunwpm-work in #7121
  • speechmatics: expose end_of_turn_config and vad_config options by @rrfunde in #6945
  • fix(worker): discard impossible cgroup v2 cpu samples by @longcw in #7113
  • fix(voice): fail remote session requests when transport closes by @EPxiaoma in #7149
  • fix(voice): report played audio across an audio sink swap by @longcw in #6967
  • fix(agents): don't close in-use connections when the pool is invalidated by @Rehansanjay in #7139
  • feat(spatius): warm up region, TLS, and session token at process init by @3DRX in #7025
  • fix(asyncai): invalidate the TTS pool when connection params change by @Rehansanjay in #7132
  • fix(neuphonic): invalidate the TTS pool when connection params change by @Rehansanjay in #7133
  • fix(cartesia): honour api_version on both the pooled socket and the REST header by @Rehansanjay in #7140
  • fix: close temporary speech stream adapters by @chenghao-mou in #7154
  • fix(hotel_receptionist): don't pass simulation runs the grading never checked by @u9g in #6797
  • perf(anam): start engine session with API key by @ao-anam in #6203
  • workflows: spell the value back once the caller refuses a confirmation by @u9g in #6990
  • fix: name VAD in the slow-inference warning by @claude[bot] in #7176
  • feat(meta): add Muse Voice streaming STT plugin by @seyeong-han in #7097
  • fix(voice): report e2e_latency for the first reply after a handoff by @longcw in #7167
  • fix(tests): run the false-interruption resume tests on virtual time by @omChauhanDev in #7179
  • feat(telemetry): flag synchronous code blocking the event loop by @davidzhao in #7128
  • fix(llm): preserve Annotated tool argument metadata by @Kuang-xianxin in #7126
  • fix(google): skip context replay on resumed realtime sessions by @he-yufeng in #6000
  • perf: skip discarded trace payload construction by @chenghao-mou in #7155
  • plugins/phonic: make allow_tool_chaining configurable per tool by @arunwpm-work in #7197
  • feat(openai): add LiveKit inference realtime model by @russellmartin-livekit in #6035
  • feat(plugins-tavus): default to the stock Lucy face when no face or pal is given by @carolin-tavus in #7211
  • feat: add DuplexModel for full-duplex speech models by @longcw in #6677
  • feat: add openai gpt-live duplex support by @chenghao-mou in #7212
  • livekit-agents@1.8.1 by @github-actions[bot] in #7214

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.8.0...livekit-agents@1.8.1

Don't miss a new agents release

NewReleases is sending notifications on new releases.