From a766893e68e5fe8f3aea82b52bb34f39e829f784 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 18 Sep 2026 16:05:08 +0000 Subject: [PATCH 1/6] docs: suggest GPT-Live in the realtime model note The commented-out realtime instructions pointed at the OpenAI Realtime API, which is no longer the speech-to-speech model LiveKit recommends first. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015wTPF2dbiDVMRwkQCpWr6o --- src/agent.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/agent.ts b/src/agent.ts index 1118c4b..34f88ad 100644 --- a/src/agent.ts +++ b/src/agent.ts @@ -42,13 +42,14 @@ export function createAgent() { llm: new inference.LLM({ model: 'google/gemma-4-31b-it' }), // To use a realtime model instead of a voice pipeline, replace the LLM - // with a RealtimeModel and remove the STT/TTS from the AgentSession - // (Note: This is for the OpenAI Realtime API. For other providers, see https://docs.livekit.io/agents/models/realtime/) + // with a realtime model and remove the STT/TTS from the AgentSession + // (Note: This is for OpenAI GPT-Live, the recommended speech-to-speech model. + // For other providers, see https://docs.livekit.io/agents/models/realtime/) // 1. Install '@livekit/agents-plugin-openai' // 2. Set OPENAI_API_KEY in .env.local // 3. Add `import * as openai from '@livekit/agents-plugin-openai'` to the top of this file // 4. Replace the llm option with: - // llm: new openai.realtime.RealtimeModel({ voice: 'marin' }), + // llm: new openai.realtime.GPTLiveModel({ voice: 'marin' }), // To add tools, specify `tools` in the constructor. // Here's an example that adds a simple weather tool. From c06ba55b0a83fa37143921096b879ebf10481139 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 18 Sep 2026 19:00:42 +0000 Subject: [PATCH 2/6] chore: upgrade @livekit/agents to 1.9.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Raise agents from 1.6.3 to the current release. Agents 1.9.0 peer-requires @livekit/rtc-node ^0.13.34, so raise that floor to match — npm's latest rtc-node is 1.0.0, which neither agents nor the ai-coustics plugin accepts, so this stays on the 0.13 line deliberately. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015wTPF2dbiDVMRwkQCpWr6o --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5ee3f8d..1c83ad6 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,9 @@ "vitest": "^4.1.4" }, "dependencies": { - "@livekit/agents": "^1.6.3", + "@livekit/agents": "^1.9.0", "@livekit/plugins-ai-coustics": "^0.2.14", - "@livekit/rtc-node": "^0.13.31", + "@livekit/rtc-node": "^0.13.34", "dotenv": "^17.4.1", "zod": "^4.4.3" } From 1f330d797a70ef0a8e635f022ee65505a148a3f1 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Fri, 18 Sep 2026 13:48:18 -0700 Subject: [PATCH 3/6] versions --- package.json | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 5ee3f8d..3757915 100644 --- a/package.json +++ b/package.json @@ -19,21 +19,22 @@ "pnpm": ">=10.0.0" }, "devDependencies": { - "@eslint/js": "^9.39.4", + "@eslint/js": "^9.39.5", "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^24.10.1", - "eslint": "^9.39.4", + "@types/node": "^24.13.5", + "eslint": "^9.39.5", "globals": "^16.5.0", - "jiti": "^2.6.1", + "jiti": "^2.7.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.58.1", - "vitest": "^4.1.4" + "typescript-eslint": "^8.70.0", + "vitest": "^4.1.11" }, "dependencies": { - "@livekit/agents": "^1.6.3", - "@livekit/plugins-ai-coustics": "^0.2.14", - "@livekit/rtc-node": "^0.13.31", - "dotenv": "^17.4.1", - "zod": "^4.4.3" + "@livekit/agents": "^1.9.0", + "@livekit/agents-plugin-openai": "^1.9.0", + "@livekit/plugins-ai-coustics": "^0.2.15", + "@livekit/rtc-node": "^0.13.35", + "dotenv": "^17.4.2", + "zod": "^4.6.5" } } From 4c5483711476a5b40f1b86f091ca702b6cb7fc9e Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Fri, 18 Sep 2026 13:48:40 -0700 Subject: [PATCH 4/6] rm --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 3757915..0d1ca51 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ }, "dependencies": { "@livekit/agents": "^1.9.0", - "@livekit/agents-plugin-openai": "^1.9.0", "@livekit/plugins-ai-coustics": "^0.2.15", "@livekit/rtc-node": "^0.13.35", "dotenv": "^17.4.2", From 7ce32ce33af6accada8692812d846e956ae88c7d Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 18 Sep 2026 20:54:27 +0000 Subject: [PATCH 5/6] chore: bump ai-coustics plugin and rtc-node to current releases State the current versions outright rather than leaving the ranges to float onto them. rtc-node stays on the 0.13 line on purpose: npm's latest is 1.0.0, which neither @livekit/agents nor the ai-coustics plugin accepts. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015wTPF2dbiDVMRwkQCpWr6o --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0d1ca51..1f3f37e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@livekit/agents": "^1.9.0", - "@livekit/plugins-ai-coustics": "^0.2.15", + "@livekit/plugins-ai-coustics": "^0.3.2", "@livekit/rtc-node": "^0.13.35", "dotenv": "^17.4.2", "zod": "^4.6.5" From ea686c5bf3e9b73c6acd75a1e6c0b96bb86549be Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 22 Sep 2026 16:30:08 +0000 Subject: [PATCH 6/6] fix: pass the ai-coustics model as an enum member The 0.3 plugin narrowed `audioEnhancement`'s `model` from a string to the `EnhancerModel` enum, so the string literal no longer typechecks. This also brings the Node starter in line with the Python one, which already names the model through the enum. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015wTPF2dbiDVMRwkQCpWr6o --- src/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.ts b/src/main.ts index 81e6d4c..56e25fb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,5 @@ import { ServerOptions, cli, defineAgent, inference, voice } from '@livekit/agents'; -import { audioEnhancement } from '@livekit/plugins-ai-coustics'; +import { EnhancerModel, audioEnhancement } from '@livekit/plugins-ai-coustics'; import dotenv from 'dotenv'; import { fileURLToPath } from 'node:url'; import { createAgent } from './agent.ts'; @@ -55,7 +55,7 @@ export default defineAgent({ inputOptions: { // ai-coustics QUAIL audio enhancement for noise cancellation // Works for both WebRTC and telephony (SIP) participants - noiseCancellation: audioEnhancement({ model: 'quailVfS' }), + noiseCancellation: audioEnhancement({ model: EnhancerModel.QuailVfS }), }, });