<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ilhan Mansij Jidda</title>
    <description>The latest articles on DEV Community by Ilhan Mansij Jidda (@ilhan_mansij_jidda).</description>
    <link>https://dev.to/ilhan_mansij_jidda</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4078509%2F5a9c31cc-a982-4204-b7cb-43ede6360b0d.jpg</url>
      <title>DEV Community: Ilhan Mansij Jidda</title>
      <link>https://dev.to/ilhan_mansij_jidda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ilhan_mansij_jidda"/>
    <language>en</language>
    <item>
      <title>Shiksha AI &amp; Mitra AI: Real-Time Spoken English &amp; Roleplay Voice Agent for Bharat</title>
      <dc:creator>Ilhan Mansij Jidda</dc:creator>
      <pubDate>Sat, 15 Aug 2026 13:10:25 +0000</pubDate>
      <link>https://dev.to/ilhan_mansij_jidda/shiksha-ai-mitra-ai-real-time-spoken-english-roleplay-voice-agent-for-bharat-4n6e</link>
      <guid>https://dev.to/ilhan_mansij_jidda/shiksha-ai-mitra-ai-real-time-spoken-english-roleplay-voice-agent-for-bharat-4n6e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Created for the Voice for Bharat Challenge 2026&lt;/strong&gt; — &lt;em&gt;10 Days of Voice Agents Challenge&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Powered by **Murf Falcon&lt;/em&gt;* (the fastest TTS API), LiveKit Agents, Deepgram Nova-3, and Google Gemini. &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Problem and the Users
&lt;/h2&gt;

&lt;p&gt;For millions of learners across India—students, job seekers, non-native English speakers, and young professionals—learning to &lt;strong&gt;speak English fluently&lt;/strong&gt; is one of the most impactful skills for career and educational growth.&lt;/p&gt;

&lt;p&gt;However, traditional language learning platforms focus primarily on reading comprehension, flashcards, and written grammar quizzes. When learners actually try to speak, they face two major barriers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fear of Judgment &amp;amp; Social Anxiety&lt;/strong&gt;: Learners feel self-conscious making grammar or pronunciation mistakes in front of peers or native speakers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Conversational Practice Partners&lt;/strong&gt;: Most learners lack daily access to an English-speaking partner for real-life conversations like ordering food, asking for street directions, or attending job interviews.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Under the &lt;strong&gt;Learning &amp;amp; Literacy track&lt;/strong&gt;, I built &lt;strong&gt;Shiksha AI&lt;/strong&gt; (a patient, encouraging main tutor) and &lt;strong&gt;Mitra AI&lt;/strong&gt; (a real-life scenario roleplay specialist) to provide a 24/7, judgment-free, voice-first English practice companion.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. What the Voice Agent Does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shiksha AI&lt;/strong&gt; &amp;amp; &lt;strong&gt;Mitra AI&lt;/strong&gt; provide an interactive, end-to-end voice experience over both Web Browsers and Telephone/SIP calls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Empathetic Main Tutor (Shiksha AI)&lt;/strong&gt;: Greets the learner, conducts turn-by-turn spoken practice, models correct grammar gently, and never shames or criticizes mistakes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Specialist Handoff (Mitra AI)&lt;/strong&gt;: When the learner asks to practice a real-life situation (ordering at a fast-food restaurant, asking for metro directions, buying groceries, doctor visits), Shiksha AI instantly transfers the call live to &lt;strong&gt;Mitra AI&lt;/strong&gt;, who steps into character for interactive roleplay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hinglish &amp;amp; Native Script Support&lt;/strong&gt;: Seamlessly understands code-mixed Indian English (Hinglish) and writes non-English words in native Devanagari script (e.g., &lt;code&gt;नमस्ते&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Knowledge Tools&lt;/strong&gt;: Fetches real-time word definitions (Free Dictionary API) and analyzes spoken grammar (LanguageTool Engine).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outbound Telephony (SIP Calls)&lt;/strong&gt;: Schedules and places automated daily practice calls directly to a user's SIP phone address (e.g. Linphone) using a background scheduler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human Escalation &amp;amp; Persistent Memory&lt;/strong&gt;: Remembers returning learners across calls and logs human teacher support tickets whenever a learner feels overwhelmed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. How the System Works
&lt;/h2&gt;

&lt;p&gt;The system connects real-time WebRTC audio streaming to a Python AI pipeline powered by &lt;strong&gt;LiveKit Agents&lt;/strong&gt; and &lt;strong&gt;Murf Falcon TTS&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph TD
    User([Learner - Web Browser / Linphone SIP]) &amp;lt;--&amp;gt; NextJS[Next.js 15 Frontend &amp;amp; LiveKit UI]
    NextJS &amp;lt;--&amp;gt; LiveKit[LiveKit Cloud WebRTC &amp;amp; SIP Gateway]
    LiveKit &amp;lt;--&amp;gt; Agent[Python LiveKit Agent Worker Process]

    subgraph Core Voice Pipeline
        Agent &amp;lt;--&amp;gt; STT[Deepgram Nova-3 Multi-Language STT]
        Agent &amp;lt;--&amp;gt; LLM[Google Gemini 2.5 Flash / Groq Llama 3.3 70B]
        Agent &amp;lt;--&amp;gt; TTS[Murf Falcon TTS - Anisha &amp;amp; Samar Voices]
    end

    subgraph Tools &amp;amp; Data Storage
        Agent &amp;lt;--&amp;gt; DictAPI[Live Free Dictionary API]
        Agent &amp;lt;--&amp;gt; GrammarAPI[LanguageTool Grammar Engine]
        Agent &amp;lt;--&amp;gt; DB[(SQLite Memory &amp;amp; Call Analytics DB)]
    end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core Architecture Components:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speech-to-Text (STT)&lt;/strong&gt;: &lt;strong&gt;Deepgram Nova-3&lt;/strong&gt; (&lt;code&gt;language="multi"&lt;/code&gt;) for ultra-low latency Indian English &amp;amp; multi-lingual speech transcription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brain (LLM)&lt;/strong&gt;: &lt;strong&gt;Google Gemini 2.5 Flash&lt;/strong&gt; / &lt;strong&gt;Groq Llama 3.3 70B&lt;/strong&gt; for fast conversational reasoning and tool calling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text-to-Speech (TTS)&lt;/strong&gt;: &lt;strong&gt;Murf Falcon TTS&lt;/strong&gt;—the fastest text-to-speech API—using &lt;code&gt;Anisha&lt;/code&gt; (Conversational Indian English) for Shiksha AI and &lt;code&gt;Samar&lt;/code&gt; (Energetic Male Voice) for Mitra AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Transport&lt;/strong&gt;: &lt;strong&gt;LiveKit Agents SDK 1.4&lt;/strong&gt; for sub-second WebRTC audio streaming, VAD turn detection, and LiveKit SIP Trunking for telephony calls.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. The Most Important Features Built
&lt;/h2&gt;

&lt;p&gt;Here are the key highlights built across my 10-day sprint:&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentic Indian Voices with Murf Falcon
&lt;/h3&gt;

&lt;p&gt;Using &lt;strong&gt;Murf Falcon's streaming API&lt;/strong&gt;, my agent speaks with natural Indian accent rhythm, natural pauses (&lt;code&gt;text_pacing=True&lt;/code&gt;), and sentence-level tokenization for zero perceptible lag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Safety Guardrails &amp;amp; Cultural Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Never Shame&lt;/strong&gt;: Always praise effort enthusiastically before modeling corrections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never Diagnose&lt;/strong&gt;: Strictly forbidden from diagnosing learning or cognitive deficits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard Refusals&lt;/strong&gt;: Polite escalation refusal scripts for medical, legal, or financial queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Script Mandate&lt;/strong&gt;: Non-English words are written in their native script (Hindi → Devanagari &lt;code&gt;नमस्ते&lt;/code&gt;), avoiding romanized transliterations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Live Specialist Agent Handoff (Day 9)
&lt;/h3&gt;

&lt;p&gt;When a user says &lt;em&gt;"Let's practice ordering food at a fast-food restaurant"&lt;/em&gt;, Shiksha AI triggers &lt;code&gt;@function_tool async def transfer_to_scenario_specialist(...)&lt;/code&gt;. LiveKit session switches live to &lt;strong&gt;Mitra AI&lt;/strong&gt; (&lt;code&gt;Samar&lt;/code&gt; voice), who opens in character. Once done, &lt;code&gt;return_to_main_tutor()&lt;/code&gt; returns the call to Shiksha AI cleanly!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@function_tool&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;transfer_to_scenario_specialist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;RunContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scenario_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Seamlessly transfer the active call to Mitra AI for scenario roleplay.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;say&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sounds fun! I will connect you to Mitra AI, our real-life scenario specialist.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;ScenarioSpecialist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;room&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;participant_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;participant_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;scenario_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;scenario_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;parent_assistant&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;http_session&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;http_session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scheduled Outbound Telephony &amp;amp; Background Scheduler (Day 6)
&lt;/h3&gt;

&lt;p&gt;Learners can schedule automated daily practice calls via an interactive Next.js modal. A Python background daemon polls SQLite and dispatches LiveKit SIP calls directly to the learner's Linphone address (&lt;code&gt;sip:username@sip.linphone.org&lt;/code&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Challenges and How I Overcame Them
&lt;/h2&gt;

&lt;p&gt;Building a real-time voice system comes with real production hurdles. Here are three major issues I faced and solved:&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 1: SIP &lt;code&gt;486 Busy Here&lt;/code&gt; Caller ID Loopback Rejection
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Problem&lt;/strong&gt;: When dialing a Linphone SIP address, Linphone rejected incoming calls with &lt;code&gt;INVITE failed: sip status 486: Busy here&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Root Cause&lt;/strong&gt;: Setting &lt;code&gt;sip_number&lt;/code&gt; (Caller ID) to match the target username (&lt;code&gt;user1&lt;/code&gt;) caused Linphone to treat the call as a self-loopback call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Set &lt;code&gt;sip_call_to&lt;/code&gt; to &lt;code&gt;user1&lt;/code&gt; while setting &lt;code&gt;sip_number&lt;/code&gt; to a distinct caller ID (&lt;code&gt;+18885550199&lt;/code&gt; / &lt;code&gt;Shiksha AI&lt;/code&gt;). Linphone now rings cleanly every time!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 2: HTTP Session Leaks Across Agent Handoffs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Problem&lt;/strong&gt;: Handoffs to Mitra AI hung because Murf Falcon TTS in the new specialist agent lacked the active &lt;code&gt;aiohttp.ClientSession&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Explicitly passed &lt;code&gt;http_session&lt;/code&gt; across &lt;code&gt;OutboundAssistant&lt;/code&gt; and &lt;code&gt;ScenarioSpecialist&lt;/code&gt; constructors, allowing Murf Falcon TTS to reuse existing network connections effortlessly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. How Readers Can Build and Run It
&lt;/h2&gt;

&lt;p&gt;Want to build your own voice agent? Follow these steps to get running in minutes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Clone the Repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Cheese-Cheese/voice-for-bharat-challenge-2026.git
&lt;span class="nb"&gt;cd &lt;/span&gt;voice-for-bharat-challenge-2026
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Configure Environment Variables
&lt;/h3&gt;

&lt;p&gt;Copy &lt;code&gt;.env.example&lt;/code&gt; to &lt;code&gt;backend/.env.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="py"&gt;LIVEKIT_URL&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;wss://your-livekit-domain.livekit.cloud&lt;/span&gt;
&lt;span class="py"&gt;LIVEKIT_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_livekit_api_key&lt;/span&gt;
&lt;span class="py"&gt;LIVEKIT_API_SECRET&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_livekit_api_secret&lt;/span&gt;

&lt;span class="py"&gt;MURF_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_murf_api_key&lt;/span&gt;
&lt;span class="py"&gt;DEEPGRAM_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_deepgram_api_key&lt;/span&gt;
&lt;span class="py"&gt;GOOGLE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_gemini_api_key&lt;/span&gt;

&lt;span class="py"&gt;SIP_TRUNK_ID&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your_livekit_sip_trunk_id&lt;/span&gt;
&lt;span class="py"&gt;MY_SIP_URI&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;sip:your_username@sip.linphone.org&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Run the Backend Worker &amp;amp; Scheduler
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;backend
uv &lt;span class="nb"&gt;sync
&lt;/span&gt;uv run python src/agent.py dev        &lt;span class="c"&gt;# Main WebRTC Voice Worker&lt;/span&gt;
uv run python src/scheduler.py        &lt;span class="c"&gt;# Outbound Call Scheduler&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Run the Next.js Frontend
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; to start talking to your voice agent!&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What I Would Improve Next
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multilingual Speech Output&lt;/strong&gt;: Extend Murf Falcon TTS voices across regional Indian languages (Hindi, Tamil, Telugu, Marathi).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pronunciation Pitch &amp;amp; Phoneme Scoring&lt;/strong&gt;: Real-time visual feedback showing exact syllable stress and pitch contours during practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp / SMS Practice Digest&lt;/strong&gt;: Automatically sending a post-call summary of new vocabulary &amp;amp; grammar rules practiced directly to the learner's phone.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  8. Links to Code &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;💻 &lt;strong&gt;Public GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Cheese-Cheese/voice-for-bharat-challenge-2026" rel="noopener noreferrer"&gt;voice-for-bharat-challenge-2026&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Murf Falcon TTS&lt;/strong&gt;: &lt;a href="https://murf.ai/api/docs" rel="noopener noreferrer"&gt;murf.ai/api/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎙️ &lt;strong&gt;LiveKit Agents SDK&lt;/strong&gt;: &lt;a href="https://livekit.io/agents" rel="noopener noreferrer"&gt;livekit.io/agents&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>education</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
