{"id":29835268,"url":"https://github.com/livekit/agents-js","last_synced_at":"2026-06-13T02:09:00.909Z","repository":{"id":257884390,"uuid":"780635287","full_name":"livekit/agents-js","owner":"livekit","description":"Build realtime multimodal AI agents with Node.js","archived":false,"fork":false,"pushed_at":"2026-03-07T01:20:03.000Z","size":50965,"stargazers_count":761,"open_issues_count":81,"forks_count":244,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-03-07T08:26:22.612Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://docs.livekit.io/agents","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/livekit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-01T21:55:35.000Z","updated_at":"2026-03-07T01:19:14.000Z","dependencies_parsed_at":"2024-11-18T00:49:31.970Z","dependency_job_id":null,"html_url":"https://github.com/livekit/agents-js","commit_stats":null,"previous_names":["livekit/agents-js"],"tags_count":699,"template":false,"template_full_name":null,"purl":"pkg:github/livekit/agents-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fagents-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fagents-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fagents-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fagents-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/livekit","download_url":"https://codeload.github.com/livekit/agents-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fagents-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30320871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T20:05:46.299Z","status":"ssl_error","status_checked_at":"2026-03-09T19:57:04.425Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-29T12:17:42.579Z","updated_at":"2026-06-13T02:09:00.894Z","avatar_url":"https://github.com/livekit.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Voice \u0026 Realtime Agents"],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2024 LiveKit, Inc.\n\nSPDX-License-Identifier: Apache-2.0\n--\u003e\n\n\u003c!--BEGIN_BANNER_IMAGE--\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"/.github/banner_dark.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"/.github/banner_light.png\"\u003e\n  \u003cimg style=\"width:100%;\" alt=\"The LiveKit icon, the name of the repository and some sample code in the background.\" src=\"https://raw.githubusercontent.com/livekit/agents-js/main/.github/banner_light.png\"\u003e\n\u003c/picture\u003e\n\n\u003c!--END_BANNER_IMAGE--\u003e\n\n# LiveKit Agents for Node.js\n\n\u003c!--BEGIN_DESCRIPTION--\u003e\n\nThe Agent Framework is designed for building realtime, programmable participants that run on\nservers. Use it to create conversational, multi-modal voice agents that can see, hear, and\nunderstand.\n\nThis is a Node.js distribution of the [LiveKit Agents framework](https://livekit.io/agents),\noriginally written in Python.\n\n\u003c!--END_DESCRIPTION--\u003e\n\n## ✨ 1.0 Release ✨\n\nThis README reflects the 1.0 release. See the [migration guide](https://docs.livekit.io/agents/start/v0-migration/nodejs/) if you're trying to upgrade from `0.x`.\n\n## Features\n\n- **Flexible integrations**: A comprehensive ecosystem to mix and match the right STT, LLM, TTS, and Realtime API to suit your use case.\n- **Extensive WebRTC clients**: Build client applications using LiveKit's open-source SDK ecosystem, supporting all major platforms.\n- **Exchange data with clients**: Use [RPCs](https://docs.livekit.io/home/client/data/rpc/) and other [Data APIs](https://docs.livekit.io/home/client/data/) to seamlessly exchange data with clients.\n- **Semantic turn detection**: Uses a transformer model to detect when a user is done with their turn, helps to reduce interruptions.\n- **MCP support**: Native support for MCP. Integrate tools provided by MCP servers with one line of code.\n- **Open-source**: Fully open-source, allowing you to run the entire stack on your own servers, including [LiveKit server](https://github.com/livekit/livekit), one of the most widely used WebRTC media servers.\n\n## Installation\n\nThe framework includes a variety of plugins that make it easy to process streaming input or generate\noutput. For example, there are plugins for converting text-to-speech or running inference with\npopular LLMs.\n\n- Install `pnpm` if you haven't already:\n\n```bash\nnpm install -g pnpm\n```\n\nTo install the core Agents library as well as plugins, run:\n\n```bash\npnpm install @livekit/agents\n```\n\nCurrently, only the following plugins are supported:\n\n| Plugin                                                                                               | Features      |\n| ---------------------------------------------------------------------------------------------------- | ------------- |\n| [@livekit/agents-plugin-openai](https://www.npmjs.com/package/@livekit/agents-plugin-openai)         | LLM, TTS, STT |\n| [@livekit/agents-plugin-google](https://www.npmjs.com/package/@livekit/agents-plugin-google)         | LLM, TTS      |\n| [@livekit/agents-plugin-deepgram](https://www.npmjs.com/package/@livekit/agents-plugin-deepgram)     | STT, TTS      |\n| [@livekit/agents-plugin-elevenlabs](https://www.npmjs.com/package/@livekit/agents-plugin-elevenlabs) | TTS           |\n| [@livekit/agents-plugin-cartesia](https://www.npmjs.com/package/@livekit/agents-plugin-cartesia)     | STT, TTS      |\n| [@livekit/agents-plugin-neuphonic](https://www.npmjs.com/package/@livekit/agents-plugin-neuphonic)   | TTS           |\n| [@livekit/agents-plugin-resemble](https://www.npmjs.com/package/@livekit/agents-plugin-resemble)     | TTS           |\n| [@livekit/agents-plugin-rime](https://www.npmjs.com/package/@livekit/agents-plugin-rime)             | TTS           |\n| [@livekit/agents-plugin-inworld](https://www.npmjs.com/package/@livekit/agents-plugin-inworld)       | STT, TTS      |\n| [@livekit/agents-plugin-silero](https://www.npmjs.com/package/@livekit/agents-plugin-silero)         | VAD           |\n| [@livekit/agents-plugin-livekit](https://www.npmjs.com/package/@livekit/agents-plugin-livekit)       | EOU           |\n| [@livekit/agents-plugin-anam](https://www.npmjs.com/package/@livekit/agents-plugin-anam)             | Avatar        |\n| [@livekit/agents-plugin-bey](https://www.npmjs.com/package/@livekit/agents-plugin-bey)               | Avatar        |\n| [@livekit/agents-plugin-lemonslice](https://www.npmjs.com/package/@livekit/agents-plugin-lemonslice) | Avatar        |\n| [@livekit/agents-plugin-liveavatar](https://www.npmjs.com/package/@livekit/agents-plugin-liveavatar) | Avatar        |\n| [@livekit/agents-plugin-mistralai](https://www.npmjs.com/package/@livekit/agents-plugin-mistralai)   | LLM, STT, TTS |\n| [@livekit/agents-plugin-xai](https://www.npmjs.com/package/@livekit/agents-plugin-xai)               | LLM, TTS      |\n| [@livekit/agents-plugin-phonic](https://www.npmjs.com/package/@livekit/agents-plugin-phonic)         | Realtime      |\n| [@livekit/agents-plugin-fishaudio](https://www.npmjs.com/package/@livekit/agents-plugin-fishaudio)   | TTS           |\n| [@livekit/agents-plugin-hume](https://www.npmjs.com/package/@livekit/agents-plugin-hume)             | TTS           |\n\n## Docs and guides\n\nDocumentation on the framework and how to use it can be found [here](https://docs.livekit.io/agents/)\n\n## Recommended starter app\n\nKickstart a complete voice AI pipeline (LLM, STT, TTS) with the LiveKit Agents Starter for Node.js:\n\n- [livekit-examples/agent-starter-node](https://github.com/livekit-examples/agent-starter-node)\n\nIt includes a ready-made assistant, multilingual turn detection, background noise cancellation, metrics/logging, and a production-ready Dockerfile. Start fast, then tailor it with your preferred models and plugins.\n\n## Core concepts\n\n- Agent: An LLM-based application with defined instructions.\n- AgentSession: A container for agents that manages interactions with end users.\n- entrypoint: The starting point for an interactive session, similar to a request handler in a web server.\n- Worker: The main process that coordinates job scheduling and launches agents for user sessions.\n\n## Usage\n\nCheckout the [quickstart guide](https://docs.livekit.io/agents/start/voice-ai/)\n\n### Simple voice agent\n\n---\n\n```ts\nimport {\n  type JobContext,\n  type JobProcess,\n  WorkerOptions,\n  cli,\n  defineAgent,\n  llm,\n  voice,\n  inference,\n} from '@livekit/agents';\nimport * as silero from '@livekit/agents-plugin-silero';\nimport { fileURLToPath } from 'node:url';\nimport { z } from 'zod';\n\nconst lookupWeather = llm.tool({\n  description: 'Used to look up weather information.',\n  parameters: z.object({\n    location: z.string().describe('The location to look up weather information for'),\n  }),\n  execute: async ({ location }, { ctx }) =\u003e {\n    return { weather: 'sunny', temperature: 70 };\n  },\n});\n\nexport default defineAgent({\n  prewarm: async (proc: JobProcess) =\u003e {\n    proc.userData.vad = await silero.VAD.load();\n  },\n  entry: async (ctx: JobContext) =\u003e {\n    const agent = new voice.Agent({\n      instructions: 'You are a friendly voice assistant built by LiveKit.',\n      tools: { lookupWeather },\n    });\n\n    const session = new voice.AgentSession({\n      // Speech-to-text (STT) is your agent's ears, turning the user's speech into text that the LLM can understand\n      // See all available models at https://docs.livekit.io/agents/models/stt/\n      stt: new inference.STT({ model: 'deepgram/nova-3', language: 'en' }),\n      // A Large Language Model (LLM) is your agent's brain, processing user input and generating a response\n      // See all available models at https://docs.livekit.io/agents/models/llm/\n      llm: new inference.LLM({ model: 'openai/gpt-4.1-mini' }),\n      // Text-to-speech (TTS) is your agent's voice, turning the LLM's text into speech that the user can hear\n      // See all available models as well as voice selections at https://docs.livekit.io/agents/models/tts/\n      tts: new inference.TTS({ model: 'cartesia/sonic-3', voice: '9626c31c-bec5-4cca-baa8-f8ba9e84c8bc' }),\n      // VAD and turn detection are used to determine when the user is speaking and when the agent should respond\n      // See more at https://docs.livekit.io/agents/build/turns\n      vad: ctx.proc.userData.vad! as silero.VAD,\n      turnDetection: new livekit.turnDetector.MultilingualModel(),\n      // to use realtime model, replace the stt, llm, tts and vad with the following\n      // llm: new openai.realtime.RealtimeModel(),\n    });\n\n    await session.start({\n      agent,\n      room: ctx.room,\n    });\n\n    await session.generateReply({\n      instructions: 'greet the user and ask about their day',\n    });\n  },\n});\n\ncli.runApp(new WorkerOptions({ agent: fileURLToPath(import.meta.url) }));\n```\n\nNo third-party API keys are required for this example. It runs out of the box via the [LiveKit Inference Gateway](https://docs.livekit.io/agents/models/#inference).\n\n### Multi-agent handoff\n\n---\n\nThis code snippet is abbreviated. For the full example, see [multi_agent.ts](examples/src/multi_agent.ts)\n\n```ts\ntype StoryData = {\n  name?: string;\n  location?: string;\n};\n\nclass IntroAgent extends voice.Agent\u003cStoryData\u003e {\n  constructor() {\n    super({\n      instructions: `You are a story teller. Your goal is to gather a few pieces of information from the user to make the story personalized and engaging. Ask the user for their name and where they are from.`,\n      tools: {\n        informationGathered: llm.tool({\n          description:\n            'Called when the user has provided the information needed to make the story personalized and engaging.',\n          parameters: z.object({\n            name: z.string().describe('The name of the user'),\n            location: z.string().describe('The location of the user'),\n          }),\n          execute: async ({ name, location }, { ctx }) =\u003e {\n            ctx.userData.name = name;\n            ctx.userData.location = location;\n\n            return llm.handoff({\n              agent: new StoryAgent(name, location),\n              returns: \"Let's start the story!\",\n            });\n          },\n        }),\n      },\n    });\n  }\n\n  // Use inheritance to create agent with custom hooks\n  async onEnter() {\n    this.session.generateReply({\n      instructions: '\"greet the user and gather information\"',\n    });\n  }\n}\n\nclass StoryAgent extends voice.Agent\u003cStoryData\u003e {\n  constructor(name: string, location: string) {\n    super({\n      instructions: `You are a storyteller. Use the user's information in order to make the story personalized.\n        The user's name is ${name}, from ${location}`,\n    });\n  }\n\n  async onEnter() {\n    this.session.generateReply();\n  }\n}\n\nexport default defineAgent({\n  prewarm: async (proc: JobProcess) =\u003e {\n    proc.userData.vad = await silero.VAD.load();\n  },\n  entry: async (ctx: JobContext) =\u003e {\n    await ctx.connect();\n    const participant = await ctx.waitForParticipant();\n    console.log('participant joined: ', participant.identity);\n\n    const userdata: StoryData = {};\n\n    const session = new voice.AgentSession({\n      vad: ctx.proc.userData.vad! as silero.VAD,\n      stt: new inference.STT({ model: 'deepgram/nova-3', language: 'en' }),\n      llm: new inference.LLM({ model: 'openai/gpt-4.1-mini' }),\n      tts: new inference.TTS({ model: 'cartesia/sonic-3', voice: '9626c31c-bec5-4cca-baa8-f8ba9e84c8bc' }),\n      userData: userdata,\n    });\n\n    await session.start({\n      agent: new IntroAgent(),\n      room: ctx.room,\n    });\n  },\n});\n```\n\n### Running your agent\n\nThe framework exposes a CLI interface to run your agent. To get started, you'll need the following\nenvironment variables set:\n\n- `LIVEKIT_URL`\n- `LIVEKIT_API_KEY`\n- `LIVEKIT_API_SECRET`\n- any additional provider API keys (e.g. `OPENAI_API_KEY`)\n\nThe following command will start the worker and wait for users to connect to your LiveKit server:\n\n```bash\npnpm run build \u0026\u0026 node ./examples/src/restaurant_agent.ts dev\n```\n\n### Using playground for your agent UI\n\nTo ease the process of building and testing an agent, we've developed a versatile web frontend\ncalled \"playground\". You can use or modify this app to suit your specific requirements. It can also\nserve as a starting point for a completely custom agent application.\n\n- [Hosted playground](https://agents-playground.livekit.io)\n- [Source code](https://github.com/livekit/agents-playground)\n- [Playground docs](https://docs.livekit.io/agents/playground)\n\n### Running for production\n\n```shell\npnpm run build \u0026\u0026 node ./examples/src/restaurant_agent.ts start\n```\n\nRuns the agent with production-ready optimizations.\n\n### FAQ\n\n#### What happens when I run my agent?\n\nWhen you follow the steps above to run your agent, a worker is started that opens an authenticated\nWebSocket connection to a LiveKit server instance(defined by your `LIVEKIT_URL` and authenticated\nwith an access token).\n\nNo agents are actually running at this point. Instead, the worker is waiting for LiveKit server to\ngive it a job.\n\nWhen a room is created, the server notifies one of the registered workers about a new job.\nThe notified worker can decide whether or not to accept it. If the worker accepts the job, the\nworker will instantiate your agent as a participant and have it join the room where it can start\nsubscribing to tracks. A worker can manage multiple agent instances simultaneously.\n\nIf a notified worker rejects the job or does not accept within a predetermined timeout period, the\nserver will route the job request to another available worker.\n\n#### What happens when I SIGTERM a worker?\n\nThe orchestration system was designed for production use cases. Unlike the typical web server, an\nagent is a stateful program, so it's important that a worker isn't terminated while active sessions\nare ongoing.\n\nWhen calling SIGTERM on a worker, the worker will signal to LiveKit server that it no longer wants\nadditional jobs. It will also auto-reject any new job requests that get through before the server\nsignal is received. The worker will remain alive while it manages any agents connected to rooms.\n\n## Contributing\n\nTo contribute to this project:\n\n1. Fork the [agents-js repository](https://github.com/livekit/agents-js)\n2. Create a new branch based on the `main` branch\n3. Make your changes\n4. Submit a pull request\n5. Make sure to complete the pre-review checklist before tagging reviewers\n\n### Testing changes and plugins\n\nTo test any changes or plugins:\n\n1. Build the project:\n   ```bash\n   pnpm build\n   ```\n\n2. Edit `./examples/src/basic_agent.ts` as necessary for any plugin changes\n\n3. Run the basic agent with debug logging:\n   ```bash\n   node ./examples/src/basic_agent.ts dev --log-level=debug\n   ```\n\n### Testing agent connectivity\n\nTo connect and talk to your agent:\n\n1. Go to the [LiveKit dashboard sandbox section](https://cloud.livekit.io/projects/\u003cyour-project-id\u003e/sandbox)\n2. Launch a sandbox app called \"Web Voice Agent\"\n3. Run your agent and make sure all LiveKit API keys are configured correctly\n4. Click the \"START CALL\" blue button on the sandbox UI to test the connection and talk to your agent\n\n## License\n\nThis project is licensed under `Apache-2.0`, and is [REUSE-3.2](https://reuse.software) compliant.\nRefer to [the license](LICENSES/Apache-2.0.txt) for details.\n\n\u003c!--BEGIN_REPO_NAV--\u003e\n\u003cbr/\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\u003cth colspan=\"2\"\u003eLiveKit Ecosystem\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003eAgents SDKs\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit/agents\"\u003ePython\u003c/a\u003e · \u003cb\u003eNode.js\u003c/b\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eLiveKit SDKs\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit/client-sdk-js\"\u003eBrowser\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-swift\"\u003eSwift\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-android\"\u003eAndroid\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-flutter\"\u003eFlutter\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-react-native\"\u003eReact Native\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/rust-sdks\"\u003eRust\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/node-sdks\"\u003eNode.js\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/python-sdks\"\u003ePython\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-unity\"\u003eUnity\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-unity-web\"\u003eUnity (WebGL)\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-esp32\"\u003eESP32\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/client-sdk-cpp\"\u003eC++\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eStarter Apps\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit-examples/agent-starter-python\"\u003ePython Agent\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-node\"\u003eTypeScript Agent\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-react\"\u003eReact App\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-swift\"\u003eSwiftUI App\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-android\"\u003eAndroid App\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-flutter\"\u003eFlutter App\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-react-native\"\u003eReact Native App\u003c/a\u003e · \u003ca href=\"https://github.com/livekit-examples/agent-starter-embed\"\u003eWeb Embed\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eUI Components\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit/components-js\"\u003eReact\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/components-android\"\u003eAndroid Compose\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/components-swift\"\u003eSwiftUI\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/components-flutter\"\u003eFlutter\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eServer APIs\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit/node-sdks\"\u003eNode.js\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/server-sdk-go\"\u003eGolang\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/server-sdk-ruby\"\u003eRuby\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/server-sdk-kotlin\"\u003eJava/Kotlin\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/python-sdks\"\u003ePython\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/rust-sdks\"\u003eRust\u003c/a\u003e · \u003ca href=\"https://github.com/agence104/livekit-server-sdk-php\"\u003ePHP (community)\u003c/a\u003e · \u003ca href=\"https://github.com/pabloFuente/livekit-server-sdk-dotnet\"\u003e.NET (community)\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eResources\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://docs.livekit.io\"\u003eDocs\u003c/a\u003e · \u003ca href=\"https://docs.livekit.io/mcp\"\u003eDocs MCP Server\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/livekit-cli\"\u003eCLI\u003c/a\u003e · \u003ca href=\"https://cloud.livekit.io\"\u003eLiveKit Cloud\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eLiveKit Server OSS\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://github.com/livekit/livekit\"\u003eLiveKit server\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/egress\"\u003eEgress\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/ingress\"\u003eIngress\u003c/a\u003e · \u003ca href=\"https://github.com/livekit/sip\"\u003eSIP\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eCommunity\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://community.livekit.io\"\u003eDeveloper Community\u003c/a\u003e · \u003ca href=\"https://livekit.io/join-slack\"\u003eSlack\u003c/a\u003e · \u003ca href=\"https://x.com/livekit\"\u003eX\u003c/a\u003e · \u003ca href=\"https://www.youtube.com/@livekit_io\"\u003eYouTube\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!--END_REPO_NAV--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Fagents-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivekit%2Fagents-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Fagents-js/lists"}