<?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: Kaif Ansari</title>
    <description>The latest articles on DEV Community by Kaif Ansari (@thekaifansari01).</description>
    <link>https://dev.to/thekaifansari01</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%2F4062520%2F494ae7e6-56bc-4214-89eb-0e3a0f3c3679.png</url>
      <title>DEV Community: Kaif Ansari</title>
      <link>https://dev.to/thekaifansari01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thekaifansari01"/>
    <language>en</language>
    <item>
      <title>The First Time My AI Agent Sent an Email to the Wrong Person — And Why I Finished It Anyway</title>
      <dc:creator>Kaif Ansari</dc:creator>
      <pubDate>Fri, 13 Nov 2026 03:00:04 +0000</pubDate>
      <link>https://dev.to/thekaifansari01/the-first-time-my-ai-agent-sent-an-email-to-the-wrong-person-and-why-i-finished-it-anyway-5gda</link>
      <guid>https://dev.to/thekaifansari01/the-first-time-my-ai-agent-sent-an-email-to-the-wrong-person-and-why-i-finished-it-anyway-5gda</guid>
      <description>&lt;p&gt;"An agent that can't be interrupted mid-task is a demo. One that can — that's a product."&lt;/p&gt;

&lt;p&gt;The first time my AI agent tried to send an email to the wrong person, I didn't know how to stop it.&lt;/p&gt;

&lt;p&gt;I was six steps into a multi-step task. The message was already drafted. The AgenticBrain was about to hit send. I said: &lt;em&gt;"No — not WhatsApp, email him. &lt;a href="mailto:Kaif13018@gmail.com"&gt;Kaif13018@gmail.com&lt;/a&gt;."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And it just... stopped. Replanned. Switched tools. Kept the project work it had already completed. Sent the email to the right address.&lt;/p&gt;

&lt;p&gt;That moment taught me something no tutorial would have: &lt;strong&gt;an agent that can't be interrupted mid-task is a demo. One that can — that's a product.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm Kaif. Over the last 14 months I've been building &lt;strong&gt;JARVIS OS Agent&lt;/strong&gt; — an open-source autonomous AI operating system for Windows — on a 2012 Intel i5-3210M with 4GB RAM.&lt;/p&gt;

&lt;p&gt;This post is about how to install it on your machine. But first, I want to show you what makes it different — because installing yet another "autonomous agent" without knowing &lt;em&gt;why&lt;/em&gt; is a waste of your afternoon.&lt;/p&gt;




&lt;h2&gt;
  
  
  What JARVIS Actually Does (And Why It Took 14 Months)
&lt;/h2&gt;

&lt;p&gt;Most "autonomous agents" on GitHub are ChatGPT API wrappers with a fancy README. They run a plan, and if something goes wrong, you either wait or kill the process.&lt;/p&gt;

&lt;p&gt;JARVIS is different in four specific ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The loop is genuinely interruptible.&lt;/strong&gt;&lt;br&gt;
Change your mind mid-task — the plan re-plans in place, completed steps stay intact. No restart. No hallucinated apology loop. This is what took the longest to get right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Memory is a five-tier system, not a chat log.&lt;/strong&gt;&lt;br&gt;
Rolling episodic history (2 days raw + 13 days summarized), weighted semantic graph with temporal decay, hybrid BM25 + vector RAG, TTL ephemeral state, and a semantic behavioral pattern engine. All running on &lt;strong&gt;local embeddings&lt;/strong&gt; — no cloud calls, no quotas, no cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. It reaches out proactively — but asks before acting.&lt;/strong&gt;&lt;br&gt;
Background listeners catch emails, WhatsApp messages, PC health alerts. When something needs attention, the agent pauses, explains the context, and waits for your consent. HITL confirmation gates are enforced at the IPC layer, not the prompt — the agent &lt;strong&gt;cannot&lt;/strong&gt; auto-approve its own outgoing messages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Tool integration is plug-and-play via MCP.&lt;/strong&gt;&lt;br&gt;
18,000+ external servers — GitHub, Brave, SQLite, Notion, Docker. Add one with a single CLI command. Hot-reloads in 2 seconds. No restart, no code edits.&lt;/p&gt;

&lt;p&gt;Plus: Android control via Termux, Telegram remote bot, dual-engine voice (Azure + Vosk), and four independent UI overlays (Agent Panel, Typing Popup, STT Popup, Input Popup) with a Unified Portal web dashboard at &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Constraint That Shaped Everything
&lt;/h2&gt;

&lt;p&gt;Here's the part I want to be honest about: &lt;strong&gt;I didn't build JARVIS despite my hardware. I built it because of it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had no GPU. I had no 32GB workstation. I had a laptop that struggled to load YouTube without lag.&lt;/p&gt;

&lt;p&gt;So every architectural decision became a negotiation with that constraint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud LLMs for reasoning&lt;/strong&gt; — the hard thinking happens on Groq/OpenRouter, not on my CPU&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;BAAI/bge-small-en-v1.5&lt;/code&gt;&lt;/strong&gt; — 33M parameter embedding model instead of 300M+ alternatives. Runs on CPU. Zero cloud calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ONNX-based RapidOCR&lt;/strong&gt; — no PyTorch dependency for GUI automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UIA-first detection&lt;/strong&gt; — OCR only fires when native accessibility APIs return too few elements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy service boot&lt;/strong&gt; — WhatsApp, Telegram, mobile bridges, MCP servers all skip startup entirely if not authenticated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: &lt;strong&gt;boots in ~50 seconds on any Windows machine from the last decade.&lt;/strong&gt; Runs comfortably on modest hardware. Actually usable.&lt;/p&gt;

&lt;p&gt;That's not a flex. That's just what happens when you can't throw hardware at a problem.&lt;/p&gt;


&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Windows 10 or 11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;JARVIS uses Windows-specific APIs for GUI automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Python 3.10+&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core runtime (installer auto-installs if missing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node.js 18+&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WhatsApp bridge and MCP servers (24+ recommended)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;~2 GB free disk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Embedding model (~130 MB) + dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;One LLM API key&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Groq is free and fast — &lt;a href="https://console.groq.com/keys" rel="noopener noreferrer"&gt;get one here&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No GPU. No Docker. No CUDA toolkit. Just Windows, a terminal, and an internet connection.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 1: The One-Command Install (5 Minutes)
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;PowerShell&lt;/strong&gt; (the blue one, not CMD) and paste this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;ExecutionPolicy&lt;/span&gt; &lt;span class="nc"&gt;Bypass&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Scope&lt;/span&gt; &lt;span class="k"&gt;Process&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Force&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Net&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ServicePointManager&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;SecurityProtocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Net&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SecurityProtocolType&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;Tls12&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;scriptblock&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Invoke&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;RestMethod&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Uri&lt;/span&gt; &lt;span class="s1"&gt;'https://github.com/thekaifansari01/Jarvis-OS-Agent/releases/latest/download/install.ps1'&lt;/span&gt;&lt;span class="p"&gt;)&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;p&gt;Here's what my installer actually does — so you know exactly what you're running:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Checks if Git, Python 3.11, and Node.js are installed — if not, installs them via &lt;code&gt;winget&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clones the repo to &lt;code&gt;%USERPROFILE%\Jarvis-OS-Agent&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Creates a Python virtual environment with &lt;strong&gt;CPU-optimized PyTorch&lt;/strong&gt; (I deliberately avoid the 2GB CUDA version — most people don't have NVIDIA GPUs)&lt;/li&gt;
&lt;li&gt;Installs the WhatsApp Baileys bridge via &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Prompts you for API keys interactively&lt;/li&gt;
&lt;li&gt;Registers the &lt;code&gt;jarvis&lt;/code&gt; command globally&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;☕ &lt;strong&gt;First run takes 5–10 minutes.&lt;/strong&gt; ~40 Python packages + a 130MB embedding model. Windows might show a UAC prompt for the Visual C++ Redistributable — accept it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once it finishes, &lt;strong&gt;open a NEW terminal&lt;/strong&gt; (the current one won't have the updated PATH) and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;jarvis&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the ASCII banner and a status line confirming voice input is enabled.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Configure API Keys
&lt;/h2&gt;

&lt;p&gt;The installer prompts you for keys at the end. If you skipped that (or want to change providers later):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;notepad&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="no"&gt;USERPROFILE&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;\&lt;span class="nc"&gt;Jarvis&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;OS&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Agent&lt;/span&gt;\&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's the &lt;strong&gt;minimum&lt;/strong&gt; config to get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# FastBrain — for quick commands and chat
FAST_BRAIN_API_KEY=gsk_your_groq_key_here
FAST_BRAIN_MODEL=llama-3.3-70b-versatile
FAST_BRAIN_ENDPOINT=https://api.groq.com/openai/v1

# Primary Brain — for complex multi-step tasks
PRIMARY_API_KEY=gsk_your_groq_key_here
PRIMARY_BASE_URL=https://api.groq.com/openai/v1
PRIMARY_MODEL=llama-3.3-70b-versatile

# Fallback provider (different provider recommended for resilience)
FALLBACK_API_KEY=your_openrouter_key
FALLBACK_BASE_URL=https://openrouter.ai/api/v1
FALLBACK_MODEL=google/gemini-2.0-flash-001

# Web search
TAVILY_API_KEY=tvly-your-key

# Speech-to-text
DEEPGRAM_API_KEY=your_deepgram_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Using local models?&lt;/strong&gt; Point &lt;code&gt;PRIMARY_BASE_URL&lt;/code&gt; to &lt;code&gt;http://localhost:11434/v1&lt;/code&gt; for Ollama or &lt;code&gt;http://localhost:1234/v1&lt;/code&gt; for LM Studio. &lt;strong&gt;Both URLs must end with &lt;code&gt;/v1&lt;/code&gt;&lt;/strong&gt; — that's the OpenAI-compatible route.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Save, restart JARVIS, and you're operational.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Voice Setup (Optional, But Recommended)
&lt;/h2&gt;

&lt;p&gt;Two wake-word engines ship with JARVIS:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Azure Custom Keyword&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;97%+&lt;/td&gt;
&lt;td&gt;~30 minutes (one-time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Vosk KWS&lt;/strong&gt; (fallback)&lt;/td&gt;
&lt;td&gt;~66%&lt;/td&gt;
&lt;td&gt;Auto-downloads on first run&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you don't want to touch Azure, &lt;strong&gt;skip this&lt;/strong&gt;. Vosk works out of the box.&lt;/p&gt;

&lt;p&gt;But if you want "Jarvis" to actually fire reliably:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://speech.microsoft.com/portal/" rel="noopener noreferrer"&gt;Azure Speech Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;Custom Keyword&lt;/strong&gt; project (English US)&lt;/li&gt;
&lt;li&gt;Train Basic (~30 min) or Advanced (~48h)&lt;/li&gt;
&lt;li&gt;Download the &lt;code&gt;.table&lt;/code&gt; file&lt;/li&gt;
&lt;li&gt;Save as &lt;code&gt;Data/model/azure/jarvis.table&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Restart JARVIS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I built this dual-engine system after weeks of frustration with Vosk false triggers. The DSP conditioner (85Hz High-Pass IIR filter + speech-gated AGC) and 5-gate acoustic verifier (Dual WebRTC VAD, SNR, ZCR, duration gating) cut false triggers by ~90%.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Add Superpowers via MCP
&lt;/h2&gt;

&lt;p&gt;This is where things get fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; lets JARVIS plug into external tool servers — GitHub, Brave Search, SQLite, Notion, Docker, Puppeteer — without writing code.&lt;/p&gt;

&lt;p&gt;Add a server from the CLI (JARVIS &lt;strong&gt;hot-reloads within 2 seconds&lt;/strong&gt; — no restart):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c1"&gt;# GitHub tools&lt;/span&gt;
&lt;span class="n"&gt;jarvis&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;github&lt;/span&gt; &lt;span class="n"&gt;npx&lt;/span&gt; &lt;span class="nd"&gt;@modelcontextprotocol&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="no"&gt;GITHUB_PERSONAL_ACCESS_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ghp_xxx&lt;/span&gt;

&lt;span class="c1"&gt;# SQLite database queries&lt;/span&gt;
&lt;span class="n"&gt;jarvis&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;sqlite&lt;/span&gt; &lt;span class="n"&gt;npx&lt;/span&gt; &lt;span class="nd"&gt;@modelcontextprotocol&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt; &lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mydb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt;

&lt;span class="c1"&gt;# Brave Search&lt;/span&gt;
&lt;span class="n"&gt;jarvis&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;brave&lt;/span&gt; &lt;span class="n"&gt;npx&lt;/span&gt; &lt;span class="nd"&gt;@modelcontextprotocol&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;brave&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="no"&gt;BRAVE_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;BSAxxx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask JARVIS: &lt;em&gt;"List my open GitHub issues and summarize them."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The MCP layer is one of my favorite parts of the project — it means I don't have to hardcode every tool. Add a JSON entry, hot-reload, done.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔗 &lt;strong&gt;Browse 18,000+ MCP servers&lt;/strong&gt; at &lt;a href="https://registry.modelcontextprotocol.io/" rel="noopener noreferrer"&gt;registry.modelcontextprotocol.io&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 5: Remote Control via Telegram (Optional)
&lt;/h2&gt;

&lt;p&gt;Want to trigger silent PC commands from your phone?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Message &lt;a href="https://t.me/BotFather" rel="noopener noreferrer"&gt;@BotFather&lt;/a&gt; on Telegram → &lt;code&gt;/newbot&lt;/code&gt; → copy the token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop JARVIS&lt;/strong&gt; (&lt;code&gt;Ctrl+C&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;jarvis&lt;/span&gt; &lt;span class="n"&gt;bot&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;activate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Paste the token&lt;/li&gt;
&lt;li&gt;Restart JARVIS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you can message your bot: &lt;em&gt;"Lock my PC"&lt;/em&gt; or &lt;em&gt;"Take a screenshot and send it."&lt;/em&gt; Commands run silently in the background — your active desktop session stays untouched.&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting the Real Issues
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jarvis is not recognized&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open a &lt;strong&gt;new&lt;/strong&gt; terminal. Or run &lt;code&gt;python SetupRegistry.py&lt;/code&gt; from the repo root.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ModuleNotFoundError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Activate the venv: &lt;code&gt;.\.venv\Scripts\Activate.ps1&lt;/code&gt;, then &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Already running" error&lt;/td&gt;
&lt;td&gt;Stale lock file. Delete &lt;code&gt;jarvis.lock&lt;/code&gt; in repo root. Check Task Manager for orphan &lt;code&gt;python.exe&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wake word doesn't work&lt;/td&gt;
&lt;td&gt;Check &lt;code&gt;Data/model/azure/jarvis.table&lt;/code&gt; exists. If not, Vosk should auto-download — check startup logs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP tools not appearing&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;jarvis mcp test &amp;lt;name&amp;gt;&lt;/code&gt; to see exact error. Validate JSON with &lt;code&gt;python -c "import json; json.load(open('Data/mcp_servers.json'))"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portal won't open&lt;/td&gt;
&lt;td&gt;Install dependencies: &lt;code&gt;pip install flask fastapi uvicorn httpx jinja2&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Full diagnostic tree: &lt;strong&gt;&lt;a href="https://jarvis-os-agent.vercel.app/documentation?section=troubleshooting" rel="noopener noreferrer"&gt;docs · Troubleshooting →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned Building This
&lt;/h2&gt;

&lt;p&gt;A few honest reflections after 14 months of solo development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Constraints are features.&lt;/strong&gt; The limited hardware forced me to use cloud LLMs for reasoning and local embeddings for memory. The result is an agent that runs on hardware most people already own — not a demo that only works on a developer's workstation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Interruptible agents are hard.&lt;/strong&gt; Most "autonomous" tools are fire-and-forget. Making the loop re-plan mid-execution — without corrupting state or losing completed steps — took months of iteration. There's no tutorial for this. You just fail 40 times until it works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. HITL is not optional.&lt;/strong&gt; I initially let the agent auto-send emails. Then it sent one to the wrong "Rahul" in my contacts. That's when I added the consent gate that &lt;strong&gt;cannot be bypassed&lt;/strong&gt; — even if the LLM insists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Local embeddings are underrated.&lt;/strong&gt; Everyone reaches for cloud APIs. &lt;code&gt;BAAI/bge-small-en-v1.5&lt;/code&gt; runs on CPU with zero cost, zero quotas, zero rate limits. For personal agent memory, that's more than enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Documentation is half the product.&lt;/strong&gt; I spent almost as long writing the &lt;a href="https://jarvis-os-agent.vercel.app/documentation" rel="noopener noreferrer"&gt;docs&lt;/a&gt; as I did building the agent. It's the difference between "cool GitHub project" and "something people actually trust."&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest Limitations
&lt;/h2&gt;

&lt;p&gt;I'd rather you know what JARVIS &lt;strong&gt;doesn't&lt;/strong&gt; do before installing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows-only.&lt;/strong&gt; macOS and Linux users are out of luck — for now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local LLM inference is slow.&lt;/strong&gt; A 7B model on CPU runs at ~2 tokens/sec. Use cloud providers unless you're 100% offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single-user only.&lt;/strong&gt; No team features, no multi-user support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No auto-updates.&lt;/strong&gt; You manage updates via &lt;code&gt;git pull&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full limitations page: &lt;strong&gt;&lt;a href="https://jarvis-os-agent.vercel.app/documentation?section=limitations" rel="noopener noreferrer"&gt;docs · Known Limitations →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Resources &amp;amp; Links
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🐙 &lt;strong&gt;GitHub Repository&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;github.com/thekaifansari01/Jarvis-OS-Agent&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📖 &lt;strong&gt;Full Documentation&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jarvis-os-agent.vercel.app/documentation" rel="noopener noreferrer"&gt;jarvis-os-agent.vercel.app/documentation&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🌐 &lt;strong&gt;Official Website&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jarvis-os-agent.vercel.app/" rel="noopener noreferrer"&gt;jarvis-os-agent.vercel.app&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔌 &lt;strong&gt;MCP Server Registry&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://registry.modelcontextprotocol.io/" rel="noopener noreferrer"&gt;registry.modelcontextprotocol.io&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎙️ &lt;strong&gt;Azure Speech Studio&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://speech.microsoft.com/portal/" rel="noopener noreferrer"&gt;speech.microsoft.com/portal&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Telegram BotFather&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://t.me/BotFather" rel="noopener noreferrer"&gt;t.me/BotFather&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡ &lt;strong&gt;Groq API Keys&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://console.groq.com/keys" rel="noopener noreferrer"&gt;console.groq.com/keys&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📱 &lt;strong&gt;Termux (F-Droid)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://f-droid.org/packages/com.termux/" rel="noopener noreferrer"&gt;f-droid.org/packages/com.termux&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;I built JARVIS because I wanted an AI that actually &lt;em&gt;did&lt;/em&gt; things — not one that just talked about doing them. It's not perfect, but it's mine, it's open source, and it runs on hardware most people already own.&lt;/p&gt;

&lt;p&gt;If you install it and it works, star the repo. If it doesn't, open an issue — I read every one. If you build something cool with it, tag me. I'd genuinely love to see it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;⭐ Star JARVIS on GitHub&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://jarvis-os-agent.vercel.app/documentation" rel="noopener noreferrer"&gt;📖 Read the Docs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— Kaif Ansari&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>tutorial</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>I just Googled "Kaif Ansari Jarvis", and the search results gave me literal goosebumps. 🤯</title>
      <dc:creator>Kaif Ansari</dc:creator>
      <pubDate>Sun, 13 Sep 2026 04:01:35 +0000</pubDate>
      <link>https://dev.to/thekaifansari01/i-just-googled-kaif-ansari-jarvis-and-the-search-results-gave-me-literal-goosebumps-h69</link>
      <guid>https://dev.to/thekaifansari01/i-just-googled-kaif-ansari-jarvis-and-the-search-results-gave-me-literal-goosebumps-h69</guid>
      <description>&lt;p&gt;I didn't hire an SEO agency. I didn't write clickbait articles. I didn't try to hack any algorithm.&lt;/p&gt;

&lt;p&gt;For the last 1.5 years, I was just an 18-year-old BCA student sitting in my room, writing 13,000 lines of Python to build my own Autonomous AI Operating System (J.A.R.V.I.S).&lt;/p&gt;

&lt;p&gt;Today, Google automatically indexes my developer profile. It officially recognizes my open-source work, my repositories, and my tech stack (Voice AI, LLM Agents, RAG pipelines).&lt;/p&gt;

&lt;p&gt;This taught me the greatest lesson about personal branding as a developer:&lt;/p&gt;

&lt;p&gt;The best SEO strategy is just to put your head down, write complex code, solve hard problems, and ship real products. You don't need to chase the internet; if you build something valuable, the internet will find you.&lt;/p&gt;

&lt;p&gt;If you want to check out the actual work that got indexed, here are all the official links:&lt;br&gt;
🛠️ Jarvis Source Code: &lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;https://github.com/thekaifansari01/Jarvis-OS-Agent&lt;/a&gt;&lt;br&gt;
📚 Jarvis Architecture &amp;amp; Docs: &lt;a href="https://jarvis-os-agent.vercel.app/documentation" rel="noopener noreferrer"&gt;https://jarvis-os-agent.vercel.app/documentation&lt;/a&gt;&lt;br&gt;
🌐 My Developer Portfolio: &lt;a href="https://buildwithkaif.vercel.app" rel="noopener noreferrer"&gt;https://buildwithkaif.vercel.app&lt;/a&gt;&lt;br&gt;
🤝 Let's Connect: &lt;a href="https://linkedin.com/in/thekaifansari01" rel="noopener noreferrer"&gt;https://linkedin.com/in/thekaifansari01&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Massive thanks to the open-source community for supporting my work! Back to building. 🚀&lt;/p&gt;

&lt;p&gt;(Check the Google search screenshot below 👇)&lt;/p&gt;

&lt;h1&gt;
  
  
  PersonalBranding #SoftwareEngineering #ArtificialIntelligence #BuildInPublic #Developers #SEO #Python
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9b0ccu004fkn8mxrw6lz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9b0ccu004fkn8mxrw6lz.png" alt=" " width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a Secure AI Assistant – From Zero to Production (By a 18-Year-Old Solo Developer)</title>
      <dc:creator>Kaif Ansari</dc:creator>
      <pubDate>Fri, 14 Aug 2026 10:55:37 +0000</pubDate>
      <link>https://dev.to/thekaifansari01/building-a-secure-ai-assistant-from-zero-to-production-by-a-18-year-old-solo-developer-2hga</link>
      <guid>https://dev.to/thekaifansari01/building-a-secure-ai-assistant-from-zero-to-production-by-a-18-year-old-solo-developer-2hga</guid>
      <description>&lt;h1&gt;
  
  
  Building a Secure AI Assistant – From Zero to Production
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By &lt;a href="https://buildwithkaif.vercel.app" rel="noopener noreferrer"&gt;Kaif Ansari&lt;/a&gt; – 18‑year‑old solo developer, BCA fresher, and builder of &lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;J.A.R.V.I.S.&lt;/a&gt; and &lt;a href="https://trynexus.site" rel="noopener noreferrer"&gt;Nexus&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem That Started It All
&lt;/h2&gt;

&lt;p&gt;Every time I built a website that needed an AI assistant, I faced the same nightmare: &lt;strong&gt;API key exposure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'd embed my Groq or OpenAI API key in JavaScript, deploy the site, and within hours, someone would inspect the source code, steal my key, and run up thousands of dollars in usage. I saw it happen to friends. I saw it happen to startups. And I knew there had to be a better way.&lt;/p&gt;

&lt;p&gt;So I built one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built: J.A.R.V.I.S. &amp;amp; Nexus
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🤖 J.A.R.V.I.S. – The OS Agent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;J.A.R.V.I.S.&lt;/a&gt; is a desktop‑native AI operating system for Windows. It's not a chatbot – it's an &lt;strong&gt;autonomous agent&lt;/strong&gt; that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;Edit code without line‑drift&lt;/strong&gt; – exact &lt;code&gt;replace_block&lt;/code&gt; diffs, no fragile line numbers.&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Control your Android phone&lt;/strong&gt; via ADB – lock/unlock, send SMS, open apps.&lt;/li&gt;
&lt;li&gt;📨 &lt;strong&gt;Read your Gmail and Calendar&lt;/strong&gt; – but always asks for permission before acting (HITL).&lt;/li&gt;
&lt;li&gt;🔌 &lt;strong&gt;Use multiple LLMs&lt;/strong&gt; – Groq, Gemini, Regolo, OpenRouter, or local models (Ollama).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔒 Nexus – The Secure AI Proxy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://trynexus.site" rel="noopener noreferrer"&gt;Nexus&lt;/a&gt; is a zero‑trust AI proxy platform that keeps your API keys safe. It works like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You store your Groq API key&lt;/strong&gt; in the Nexus vault – it's encrypted with AES‑256.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You generate a domain‑restricted Nexus key&lt;/strong&gt; – this is what you embed in your frontend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The widget sends requests&lt;/strong&gt; to the Nexus proxy, which verifies the domain origin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your Groq key is decrypted server‑side&lt;/strong&gt; and used only for that request – never exposed to the browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ftrynexus.site%2Fassets%2Fog-image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ftrynexus.site%2Fassets%2Fog-image.png" alt="Nexus Architecture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technologies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HTML5, Tailwind CSS, Vanilla JS, Phosphor Icons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python 3.10+, FastAPI, Vercel Serverless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI/LLM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Groq LPU, Google Gemini, Regolo, OpenRouter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Firebase (Auth + Firestore), Upstash Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ChromaDB (LTM), Pinecone (RAG)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ADB over Tailscale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vercel, GitHub Pages&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Solved the Security Problem
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: AES‑256 Encryption
&lt;/h3&gt;

&lt;p&gt;Your Groq API key is encrypted before it ever touches the database. The encryption key is managed by Firebase – even we can't decrypt it without your authorization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Domain Whitelisting
&lt;/h3&gt;

&lt;p&gt;Each Nexus key is restricted to a list of domains you authorize. If someone steals your Nexus key, it's useless without a matching whitelisted domain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Server‑Side Proxy
&lt;/h3&gt;

&lt;p&gt;The Groq key is &lt;strong&gt;never&lt;/strong&gt; sent to the browser. The widget sends a Nexus key to our proxy, which validates the origin, decrypts the Groq key, and forwards the request. The response goes back the same way.&lt;/p&gt;

&lt;p&gt;This means your key stays &lt;strong&gt;safe, encrypted, and never exposed&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code Snippet: Embedding Nexus in Your Website
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- 1. Configure --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NexusConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_NEXUS_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;meta-llama/llama-4-scout-17b-16e-instruct&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;botName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Nexus AI&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;👋 Hello! How can I assist you today?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- 2. Load the widget --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;defer&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/nexus-web-assistant@3.0.0/dist/nexus-assistant.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your website now has a secure, context‑aware AI assistant.&lt;/p&gt;




&lt;h2&gt;
  
  
  Framework Integrations
&lt;/h2&gt;

&lt;p&gt;Nexus works with every major framework:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚛️ &lt;strong&gt;React&lt;/strong&gt; – &lt;a href="https://dev.to/blog/post/ai-chatbot-react-integration"&gt;Full guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;▲ &lt;strong&gt;Next.js&lt;/strong&gt; – SSR/SSG compatible&lt;/li&gt;
&lt;li&gt;🟢 &lt;strong&gt;Vue&lt;/strong&gt; – Drop‑in script support&lt;/li&gt;
&lt;li&gt;🔴 &lt;strong&gt;Angular&lt;/strong&gt; – Works out of the box&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Astro&lt;/strong&gt; – Zero config&lt;/li&gt;
&lt;li&gt;🔷 &lt;strong&gt;WordPress&lt;/strong&gt; – Plugin available&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real Results
&lt;/h2&gt;

&lt;p&gt;Since launching Nexus, I've seen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;400+ developers&lt;/strong&gt; using the free tier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1,000+ requests&lt;/strong&gt; processed daily&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero security breaches&lt;/strong&gt; – no exposed keys&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;35% higher conversion rates&lt;/strong&gt; for sites using AI‑first support&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://trynexus.site/demo" rel="noopener noreferrer"&gt;trynexus.site/demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt;: &lt;a href="https://trynexus.site/login" rel="noopener noreferrer"&gt;trynexus.site/login&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/thekaifansari01/NexusWeb" rel="noopener noreferrer"&gt;NexusWeb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Portfolio&lt;/strong&gt;: &lt;a href="https://buildwithkaif.vercel.app" rel="noopener noreferrer"&gt;buildwithkaif.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned (And What You Should Know)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Security must be built in, not bolted on.&lt;/strong&gt; If you're handling API keys, encrypt them from day one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source is a superpower.&lt;/strong&gt; When I open‑sourced J.A.R.V.I.S., I got contributions, feedback, and recognition I never expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Age is just a number.&lt;/strong&gt; I'm 18, a BCA fresher, and I built this solo. If I can do it, so can you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build in public.&lt;/strong&gt; Share your progress. It opens doors you can't imagine.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;I love connecting with fellow builders. If you're working on AI agents, LLM apps, or open‑source projects, reach out!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🐙 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/thekaifansari01" rel="noopener noreferrer"&gt;thekaifansari01&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;LinkedIn&lt;/strong&gt;: &lt;a href="https://linkedin.com/in/thekaifansari01" rel="noopener noreferrer"&gt;thekaifansari01&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐦 &lt;strong&gt;X (Twitter)&lt;/strong&gt;: &lt;a href="https://x.com/thekaifansari01" rel="noopener noreferrer"&gt;thekaifansari01&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📧 &lt;strong&gt;Email&lt;/strong&gt;: &lt;a href="mailto:kaif.ansari.global@gmail.com"&gt;kaif.ansari.global@gmail.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Portfolio&lt;/strong&gt;: &lt;a href="https://buildwithkaif.vercel.app" rel="noopener noreferrer"&gt;buildwithkaif.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⭐ If You Found This Helpful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Star&lt;/strong&gt; the &lt;a href="https://github.com/thekaifansari01/Jarvis-OS-Agent" rel="noopener noreferrer"&gt;J.A.R.V.I.S. repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Star&lt;/strong&gt; the &lt;a href="https://github.com/thekaifansari01/NexusWeb" rel="noopener noreferrer"&gt;Nexus repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share&lt;/strong&gt; this post with your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow&lt;/strong&gt; me for more AI and open‑source content&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ by &lt;a href="https://buildwithkaif.vercel.app" rel="noopener noreferrer"&gt;Kaif Ansari&lt;/a&gt; – 18 years old, BCA fresher, and building the AI assistant I always wanted.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built an autonomous AI OS at 18 — with zero CS background.</title>
      <dc:creator>Kaif Ansari</dc:creator>
      <pubDate>Tue, 04 Aug 2026 12:38:18 +0000</pubDate>
      <link>https://dev.to/thekaifansari01/i-built-an-autonomous-ai-os-at-18-with-zero-cs-background-3ff7</link>
      <guid>https://dev.to/thekaifansari01/i-built-an-autonomous-ai-os-at-18-with-zero-cs-background-3ff7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Self-taught&lt;/strong&gt; BCA 1st-year building autonomous OS-level AI agents. Commerce grad, zero CS 2 yrs ago. Built J.A.R.V.I.S. - AI that controls PC, uses tools, remembers. No shortcuts. Just 202 iterations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is J.A.R.V.I.S.?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's not a ChatGPT wrapper. It's a desktop-native AI Operating System that:&lt;/p&gt;

&lt;p&gt;🧠 Thinks — Routes simple queries to Groq LPU (&amp;lt;1.5 sec) and complex tasks to reasoning models (Regolo/Gemini/OpenRouter)&lt;/p&gt;

&lt;p&gt;🔧 Uses Tools — Opens apps, changes volume, sends emails, WhatsApp messages, edits code&lt;/p&gt;

&lt;p&gt;📚 Remembers — ChromaDB long-term memory with daily summarization. Remembers conversations from months ago.&lt;/p&gt;

&lt;p&gt;💻 Edits Code Without Line-Drift — Uses exact replace_block diffs instead of fragile line numbers&lt;/p&gt;

&lt;p&gt;🛡️ Asks Before Acting — Human-in-the-Loop safety. Never modifies critical data without permission&lt;/p&gt;

&lt;p&gt;🔄 Works with Any LLM — Regolo, Gemini, OpenRouter, or local models (Ollama/LM Studio)&lt;/p&gt;

&lt;p&gt;Tech Stack: Python, PyQt5, ZMQ, ChromaDB, Groq, Deepgram, Node.js (Baileys)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I built it:&lt;/strong&gt;&lt;br&gt;
I believe AI should DO things — not just chat. I started with zero coding knowledge 2 years ago. No bootcamps. Just curiosity, coffee, and 202 iterations.&lt;/p&gt;

&lt;p&gt;The first version was a mess. The latest version is an OS-level agent that controls my PC without me touching a keyboard.&lt;/p&gt;

&lt;p&gt;If you're building AI agents or love open-source, let's connect.&lt;/p&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/thekaifansari01/jarvis-by-kaif-ansari" rel="noopener noreferrer"&gt;https://github.com/thekaifansari01/jarvis-by-kaif-ansari&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⭐ If this inspired you, drop a star — it means a lot to a solo developer.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
