<?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: Eshaan</title>
    <description>The latest articles on DEV Community by Eshaan (@tamatar).</description>
    <link>https://dev.to/tamatar</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3902677%2F39797c05-ac1b-4606-b515-643db94af155.png</url>
      <title>DEV Community: Eshaan</title>
      <link>https://dev.to/tamatar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tamatar"/>
    <language>en</language>
    <item>
      <title>How I built Glia: A local-first shared memory layer for browser chats and IDEs</title>
      <dc:creator>Eshaan</dc:creator>
      <pubDate>Mon, 18 May 2026 11:42:18 +0000</pubDate>
      <link>https://dev.to/tamatar/how-i-built-glia-a-local-first-shared-memory-layer-for-browser-chats-and-ides-2m69</link>
      <guid>https://dev.to/tamatar/how-i-built-glia-a-local-first-shared-memory-layer-for-browser-chats-and-ides-2m69</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Fbwges2xp1wkhgdbmv0fe.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.amazonaws.com%2Fuploads%2Farticles%2Fbwges2xp1wkhgdbmv0fe.png" alt="Persistent Memory layer for Web Ai apps and Ai agents via mcp" width="800" height="386"&gt;&lt;/a&gt;Have you ever spent 15 minutes re-explaining your database schema, architecture, or codebase decisions to Claude or ChatGPT because your chat limit was reached or you opened a new session?&lt;/p&gt;

&lt;p&gt;If you use AI web chats and IDE coding agents (Cursor, Windsurf, Claude Code), this constant context loss is the biggest friction point in daily development.&lt;/p&gt;

&lt;p&gt;To solve this, I built Glia—a 100% offline, local-first shared memory layer that links your browser chats and IDE coding tools using a unified local database.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://glia-ai.vercel.app/" rel="noopener noreferrer"&gt;https://glia-ai.vercel.app/&lt;/a&gt; &lt;br&gt;
Codebase: &lt;a href="https://github.com/Eshaan-Nair/Glia-AI" rel="noopener noreferrer"&gt;https://github.com/Eshaan-Nair/Glia-AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Core Problem&lt;/strong&gt;: Context Amnesia AI assistants are brilliant, but they live in isolated silos. When you chat on Claude.ai web, that planning is invisible to your Cursor agent. When your browser session resets, your context is wiped clean.&lt;/p&gt;

&lt;p&gt;Glia acts as a shared local brain. You save your web chat with a browser extension, and it is instantly recalled by your coding agents inside the IDE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Architecture&lt;/strong&gt;: Built for Local Speed &amp;amp; Absolute Privacy I wanted a lightweight tool that runs entirely offline with zero cloud fees and absolute security.&lt;/p&gt;

&lt;p&gt;Here is how Glia works under the hood:&lt;/p&gt;

&lt;p&gt;Chrome MV3 Extension Runs on &lt;u&gt;Claude&lt;/u&gt;, &lt;u&gt;ChatGPT&lt;/u&gt;, &lt;u&gt;DeepSeek&lt;/u&gt;, &lt;u&gt;Gemini&lt;/u&gt;, &lt;u&gt;Grok&lt;/u&gt;, &lt;u&gt;Mistral&lt;/u&gt;, and &lt;u&gt;Copilot&lt;/u&gt;. It intercepts SPA navigations to prevent context bleeding, performs local PII scrubbing (redacting credentials, emails, and tokens), and automatically injects relevant context into your prompt text box before submission.&lt;/p&gt;

&lt;p&gt;Express &amp;amp; SQLite Backend Glia runs a local server that uses sqlite-vec for 768-dimension local vector search (using nomic-embed-text via Ollama) and SQLite FTS5 for literal keyword prefix matching. They run in parallel, and the scores are fused.&lt;/p&gt;

&lt;p&gt;Surgical Context Trimming Traditional RAG dumps massive text blocks that bloat prompts. Glia indexes text at the individual sentence level. On recall, it extracts only the specific sentences that match your query. In benchmarks, this surgical approach cuts prompt noise by up to 95%.&lt;/p&gt;

&lt;p&gt;Local Knowledge Graph A background queue uses a local LLM (llama3.1:8b via Ollama) to extract entity triples (subject-relation-object) to build an offline knowledge graph, visualizable in an interactive React + D3.js dashboard served locally.&lt;/p&gt;

&lt;p&gt;Model Context Protocol (MCP) Server An integrated MCP server exposes tools like recall_context, store_memory, and get_project_summary to &lt;u&gt;Cursor&lt;/u&gt;, &lt;u&gt;Windsurf&lt;/u&gt;, and &lt;u&gt;Claude Code&lt;/u&gt; over stdio, allowing coding agents to manage project context autonomously.&lt;/p&gt;

&lt;p&gt;Zero-Docker Setup If you want to try it out, you can set up the SQLite engine, Chrome extension, and MCP server in a single command:&lt;/p&gt;

&lt;p&gt;npx glia-ai-setup&lt;/p&gt;

&lt;p&gt;Glia is completely open-source (MIT). Check out the codebase, leave a star if you like it, and let me know your thoughts on the local-first vector search architecture!&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Eshaan-Nair/Glia-AI" rel="noopener noreferrer"&gt;https://github.com/Eshaan-Nair/Glia-AI&lt;/a&gt; &lt;br&gt;
Website: &lt;a href="https://glia-ai.vercel.app/" rel="noopener noreferrer"&gt;https://glia-ai.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>mcp</category>
      <category>memory</category>
    </item>
    <item>
      <title>Stop Re-explaining Your Code to AI: How I Built a Local-First "Long-Term Memory" Engine</title>
      <dc:creator>Eshaan</dc:creator>
      <pubDate>Tue, 28 Apr 2026 15:19:01 +0000</pubDate>
      <link>https://dev.to/tamatar/stop-re-explaining-your-code-to-ai-how-i-built-a-local-first-long-term-memory-engine-38nk</link>
      <guid>https://dev.to/tamatar/stop-re-explaining-your-code-to-ai-how-i-built-a-local-first-long-term-memory-engine-38nk</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Problem: AI Amnesia&lt;/strong&gt;&lt;br&gt;
We’ve all been there: You're 12 chats deep into a complex project. You’ve explained your architecture, your database schema, and that one obscure bug you finally fixed at 2 AM. Then you open a new chat, and the AI starts from zero. You spend the next 20 minutes re-explaining everything.&lt;/p&gt;

&lt;p&gt;I got tired of this "context bankruptcy," so I built SYNQ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is SYNQ?&lt;/strong&gt;&lt;br&gt;
SYNQ is an open-source Chrome extension + local backend that gives your AI assistant (Claude, ChatGPT, or Gemini) persistent memory. It captures your conversations, distills them into a semantic knowledge graph, and automatically injects relevant context into your next prompt using a zero-loss RAG pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Tech Stack&lt;/strong&gt;&lt;br&gt;
To keep everything private and fast, I went with a fully local-first architecture:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Backend&lt;/em&gt;: Node.js &amp;amp; Express 5.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Extension&lt;/em&gt;: TypeScript &amp;amp; Chrome Manifest V3.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vector DB&lt;/em&gt;: ChromaDB for semantic search.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Graph DB&lt;/em&gt;: Neo4j for entity relationship mapping.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Local Embeddings&lt;/em&gt;: Ollama (nomic-embed-text).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;LLM Processing&lt;/em&gt;: Groq LLaMA 3.1 (for high-speed graph extraction).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features I’m Proud Of&lt;/strong&gt;&lt;br&gt;
Zero-Loss Chunker: Unlike most RAG apps that use lossy LLM summarization, SYNQ uses a sliding window chunker. This ensures that even small personal details—like the name of your cat—are preserved.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Auto-Connect&lt;/em&gt;: It intercepts your prompts in real-time. Before the AI sees your message, SYNQ silently prepends the top-3 most relevant historical "memories".&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Knowledge Graph&lt;/em&gt;: I used D3.js to build a visualization of your project history. You can see how entities like Database, User Auth, and Stripe connect over time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Privacy Scrubbing&lt;/em&gt;: It automatically redacts API keys and JWTs before anything is processed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Open Source?&lt;/strong&gt;&lt;br&gt;
I’m currently an engineering student preparing for placements. Building this helped me manage my own project workflows, but I realized that "Context Sovereignty"—the idea that you should own your chat history, not the LLM provider—is something we all need.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check it out on GitHub&lt;/em&gt;:&lt;br&gt;
⭐ &lt;a href="https://github.com/Eshaan-Nair/Synq" rel="noopener noreferrer"&gt;https://github.com/Eshaan-Nair/Synq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love to hear your thoughts on the pipeline or any suggestions for new features!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
