<?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: Riddhi Das</title>
    <description>The latest articles on DEV Community by Riddhi Das (@riddhi_das_c8b3db30df00b0).</description>
    <link>https://dev.to/riddhi_das_c8b3db30df00b0</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%2F3962007%2Fbe4e8e90-83b0-4597-ba59-968e5646b7c2.jpg</url>
      <title>DEV Community: Riddhi Das</title>
      <link>https://dev.to/riddhi_das_c8b3db30df00b0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riddhi_das_c8b3db30df00b0"/>
    <language>en</language>
    <item>
      <title>Magnus AI: a real-time voice assistant that controls my Windows PC</title>
      <dc:creator>Riddhi Das</dc:creator>
      <pubDate>Mon, 05 Oct 2026 15:12:24 +0000</pubDate>
      <link>https://dev.to/riddhi_das_c8b3db30df00b0/magnus-ai-a-real-time-voice-assistant-that-controls-my-windows-pc-5b4g</link>
      <guid>https://dev.to/riddhi_das_c8b3db30df00b0/magnus-ai-a-real-time-voice-assistant-that-controls-my-windows-pc-5b4g</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Magnus AI is a voice-first desktop assistant for Windows. You talk to it, and it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open apps and bring windows to the front&lt;/li&gt;
&lt;li&gt;Set volume and brightness&lt;/li&gt;
&lt;li&gt;Run one-phrase routines like "Work Mode", "Study Mode" and "Night Mode"&lt;/li&gt;
&lt;li&gt;Search the web, play YouTube, and set reminders&lt;/li&gt;
&lt;li&gt;Read your clipboard&lt;/li&gt;
&lt;li&gt;Look at your screen or webcam and help debug code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/137xF8eviOjMR5DFXnfyZKzUN_IJyS8Br/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/137xF8eviOjMR5DFXnfyZKzUN_IJyS8Br/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/RIDDHIDEV-OPS/Magnus-AI" rel="noopener noreferrer"&gt;https://github.com/RIDDHIDEV-OPS/Magnus-AI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Voice loop:microphone audio is resampled to 16 kHz mono and streamed over a WebSocket to the Gemini Live API. Replies return as 24 kHz audio, with about 250 ms turn detection and barge-in so you can interrupt.&lt;/li&gt;
&lt;li&gt;Self-describing tools:each file in &lt;code&gt;actions/&lt;/code&gt; exposes one typed function, and its docstrings become function declarations at startup. A new skill is one new file.&lt;/li&gt;
&lt;li&gt;Windows control:Win32 APIs, psutil and PyAutoGUI.&lt;/li&gt;
&lt;li&gt;Interface:a PyQt6 HUD with an animated orb, waveforms and live CPU/RAM/GPU telemetry.&lt;/li&gt;
&lt;li&gt;Memory:preferences are stored in a local JSON file, git-ignored.&lt;/li&gt;
&lt;li&gt;Resilience:a fallback ladder across Gemini models when quota is hit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Magnus currently relies on Google's hosted Gemini model. My next step is an offline mode built on open-weight models (Gemma via Ollama plus faster-whisper), so voice and screen data never leave the machine.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>automation</category>
      <category>github</category>
    </item>
    <item>
      <title>I built Magnus AI, a voice assistant that helps my friend Vashkar plan meals around his allergies</title>
      <dc:creator>Riddhi Das</dc:creator>
      <pubDate>Sat, 03 Oct 2026 11:25:35 +0000</pubDate>
      <link>https://dev.to/riddhi_das_c8b3db30df00b0/i-built-magnus-ai-a-voice-assistant-that-helps-my-friend-vashkar-plan-meals-around-his-allergies-1ihl</link>
      <guid>https://dev.to/riddhi_das_c8b3db30df00b0/i-built-magnus-ai-a-voice-assistant-that-helps-my-friend-vashkar-plan-meals-around-his-allergies-1ihl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;My friend Vashkar Ghosh has to plan his meals around his allergies. That means reading labels, double-checking ingredients and searching for safe options, again and again.&lt;/p&gt;

&lt;p&gt;So I built him &lt;strong&gt;Magnus AI&lt;/strong&gt;, a voice-first assistant for Windows. Instead of typing and searching, he can just say what he needs. He tells Magnus what he can't eat, and Magnus suggests meals that avoid those ingredients and keeps his preferences saved for next time.&lt;/p&gt;

&lt;p&gt;Magnus does more than meals, because a helper that lives on his PC should handle the small daily things too. He can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open and switch between apps by voice&lt;/li&gt;
&lt;li&gt;Set volume and brightness&lt;/li&gt;
&lt;li&gt;Run one-phrase routines like "Work Mode", "Study Mode" and "Night Mode"&lt;/li&gt;
&lt;li&gt;Search the web and play YouTube&lt;/li&gt;
&lt;li&gt;Set reminders and read his clipboard&lt;/li&gt;
&lt;li&gt;Show Magnus his screen or webcam and ask for help&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/137xF8eviOjMR5DFXnfyZKzUN_IJyS8Br/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/137xF8eviOjMR5DFXnfyZKzUN_IJyS8Br/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/RIDDHIDEV-OPS/Magnus-AI" rel="noopener noreferrer"&gt;https://github.com/RIDDHIDEV-OPS/Magnus-AI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Real-time voice loop.&lt;/strong&gt; Microphone audio is resampled to 16 kHz mono and streamed over a WebSocket to the Gemini Live API. Replies come back as 24 kHz audio. There's about 250 ms of turn detection, and barge-in lets Vashkar interrupt mid-sentence the way he would with a person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-describing tools.&lt;/strong&gt; Every file in &lt;code&gt;actions/&lt;/code&gt; exposes one typed function. At startup, Magnus turns the docstrings into function declarations, so adding a new skill means dropping in a single file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows control.&lt;/strong&gt; Win32 APIs (&lt;code&gt;SetForegroundWindow&lt;/code&gt;, &lt;code&gt;AttachThreadInput&lt;/code&gt;), psutil and PyAutoGUI let Magnus find, launch and bring windows to the front.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interface.&lt;/strong&gt; A PyQt6 HUD with an animated orb, live audio waveforms, and CPU/RAM/GPU telemetry served from a small local FastAPI dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local memory.&lt;/strong&gt; Preferences and learned context are stored in a local JSON file with thread-safe atomic writes, and it's git-ignored so personal data never reaches the repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resilience.&lt;/strong&gt; If an API quota error hits, Magnus steps down a fallback ladder of Gemini models instead of going silent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;I want to be upfront: the model at the heart of Magnus is Google's Gemini Live API, which is not open-weight. What is open is the code (MIT-licensed), the Python ecosystem it's built on (PyQt6, psutil, PyAutoGUI, FastAPI), and the Open-Meteo data behind its weather tool.&lt;/p&gt;

&lt;p&gt;Building this for a friend taught me what that trade-off costs. Meal and allergy information is personal, and with a hosted model, his voice and screen go to a server he doesn't control. Open-weight models would fix that by running on his own laptop, working offline, costing nothing per use, and letting me tune the assistant to him. My next step is an offline mode built on an open-weight model so his data never leaves his machine.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
