{"slug": "synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think", "title": "Synaptic: A Local-First AI Dev Companion That Remembers How You Think", "summary": "Synaptic is a local-first AI development companion powered by Gemma 4 that builds a persistent model of a user's problem-solving patterns by monitoring their entire development environment, including files, terminal, errors, and shell history. Its key feature is a \"Socratic gate\" that streams targeted questions based on the user's recent activity before they edit a code file, requiring them to demonstrate understanding before proceeding. The tool uses the gemma4:e4b model for fast, local compression of events in under two seconds to maintain fresh memories, and it runs entirely on the user's machine without sending data to the cloud.", "body_md": "*This is a submission for the Gemma 4 Challenge: Build with Gemma 4*\n\n## What I Built\n\nThree weeks into learning Rust, I had Copilot open and Stack Overflow in the next tab. I was making progress — or so I thought. I'd ask Copilot how to handle an error, paste the answer in, the compiler would go green, and I'd move on.\n\nSix days in, I realised I had no idea what I was doing.\n\nI could produce Rust. I couldn't think in Rust. Copilot was making me a faster copy-paster. It wasn't making me a developer.\n\nWhat I needed wasn't more autocomplete. I needed something to stop me before I typed and ask: \"Do you actually understand what you're about to do?\"\n\nThat question became Synaptic.\n\nSynaptic is a local-first AI dev companion powered entirely by Gemma 4. It watches your entire development environment — files, terminal, errors, shell history — and builds a persistent model of how you specifically think and solve problems. When you're stuck or learning a new language, it surfaces your own past solutions rather than generic documentation pulled from the internet.\n\nThe centrepiece is the Socratic gate.\n\nWhen you open a code file, Synaptic reads your last few hours of activity, identifies what concept is most at stake in that file, and streams a targeted question into a HUD overlay within seconds:\n\n\"You've been writing JavaScript closures recently. Before you edit this Rust file: how are you thinking about ownership and when values go out of scope?\"\n\nThe question isn't generic. It's built from your actual history. Gemma 4 evaluates your answer and either lets you through or asks a sharper follow-up targeting exactly what you glossed over. Over time, your explanations get sharper — because the bar doesn't lower.\n\nBeyond the Socratic gate:\n\n-\n**Ambient memory pipeline**— every file save and terminal command is compressed by Gemma 4 into a structured memory (summary, concepts, significance score, verbatim error text) every 3 seconds, stored locally in SQLite and indexed for semantic search\n\n-\n**Vision error pipeline**— on macOS, when a terminal error fires, Gemma 4 reads a screenshot of your actual screen to extract the full stack trace, not the truncated shell history -\n**Four query modes**— Translate (JS patterns to Rust), Explain (grounded in your own history), Map Concept (to what you already know), Find Solution (have I solved this before?)\n\n-\n**Habit mismatch detection**— runs continuously, warns when you apply patterns from your old language that will break in your new one\n\n-\n**Stuck detection**— watches for compound signals (repeated errors, thrashing, excessive app switches) and auto-surfaces the HUD with relevant context before you ask -\n**Electron HUD overlay**— always-on-top, appears uninvited when it has something worth saying Everything runs on your machine. No API keys required. No data leaves without your permission.\n\nLive site: [https://synaptic-ebon.vercel.app](https://synaptic-ebon.vercel.app)\n\nDocs: [https://synaptic-ebon.vercel.app/docs](https://synaptic-ebon.vercel.app/docs)\n\n## Demo\n\nQuick start to try it yourself:\n\n```\ngit clone https://github.com/cybort360/synaptic\ncd synaptic && npm install\nollama pull gemma4:e4b\nollama pull nomic-embed-text\ncp synaptic.config.example.json synaptic.config.json\n# Edit synaptic.config.json and add a directory to watchPaths\nnpm run launch\n```\n\nOpen a `.rs`\n\n, `.ts`\n\n, `.py`\n\n, or `.go`\n\nfile in a watched directory. The HUD will appear within seconds with a question grounded in your recent activity.\n\n## Code\n\nGitHub: [https://github.com/cybort360/synaptic](https://github.com/cybort360/synaptic)\n\nThe full pipeline in one view:\n\n```\nFiles / Terminal / Shell history\n        ↓\n    Observer (chokidar + history polling + stuck detector)\n        ↓\n    Archivist\n      ├─ Compressor: gemma4:e4b (every 3s, with vision on errors)\n      ├─ Embedder: nomic-embed-text (semantic search vectors)\n      └─ SQLite (local, persistent, yours)\n        ↓\n    Connector\n      ├─ Semantic search over history\n      ├─ Prompt builder (4 modes)\n      └─ Reasoner: gemma4:e4b (streaming)\n        ↓\n    Socratic Engine\n      ├─ Fires on file open for recognised code files\n      ├─ Streams question word-by-word to HUD\n      └─ Evaluates answer, asks follow-up or passes\n        ↓\n    Dashboard (http://localhost:3777) + HUD Overlay (Electron)\n```\n\nStack: Node.js 20, TypeScript, Express, WebSocket, Electron, chokidar, sql.js (SQLite), Ollama. No frameworks. No bundler. Around 5,700 lines of original code.\n\n## How I Used Gemma 4\n\nI used `gemma4:e4b`\n\n— the 4B effective parameter model — and the choice was deliberate at every level.\n\n### Why E4B specifically\n\nSpeed is the constraint. Synaptic compresses every file save and terminal command into a structured memory on a 3-second batch cycle. That cycle is a constraint, not a goal — if compression falls behind, the memories become stale. The Socratic question about your Rust ownership file would be grounded in something you did yesterday rather than what you were doing five minutes ago.\n\nI tested `gemma4:26b`\n\nfor this. The batches piled up. The tool became a liability. At 4B effective parameters, `gemma4:e4b`\n\ncompresses an event in under 2 seconds on a MacBook. The 3-second cycle stays clean. Memories are always fresh.\n\n**Multimodal was the unlock.** When you hit a terminal error, your shell history often truncates it. The important part — the line number, the variable name, the exact constraint violated — is three screens down.\n\nGemma 4 is natively multimodal. When Synaptic detects a terminal error, it captures a screenshot of your screen and sends it to Gemma before compression. Gemma reads the actual stack trace off your screen, not the truncated history. This is only possible with a vision-capable model. A text-only 4B model cannot do it. A vision-capable model too large to run locally cannot do it either. `gemma4:e4b`\n\nis the exact intersection: small enough to run constantly, fast enough for real-time use, and genuinely multimodal.\n\n**The Socratic gate depends on first-token latency.** The gate fires when you open a code file. The HUD slides up. The question starts streaming in word by word while Gemma is still generating. With `gemma4:e4b`\n\n, the first token arrives in under 3 seconds on a MacBook M-series. The question types itself in as the developer reads it. With a larger model, the developer is already ten lines deep before the question finishes generating — and the gate becomes noise.\n\n### What breaks with a different model\n\n| Alternative | What fails |\n|---|---|\n| A 27B local model | Compression batches pile up. The 3-second cycle becomes 30+ seconds and memories fall behind real activity |\n| A non-multimodal 4B | Vision pipeline silently degrades. Errors are compressed without reading the actual screen output |\n| A cloud-only model | The entire privacy guarantee breaks. Code, errors, and history leave your machine |\n| No local model at all | Socratic gate cannot fire on every file open. Latency makes it unusable as a real-time feature |\n\n### The three tiers Gemma 4 powers\n\n| Task | When | Why Gemma 4 |\n|---|---|---|\n| Event compression | Every 3 seconds | Speed. Needs to complete before the next event arrives. |\n| Vision error analysis | On terminal errors (macOS) | Multimodal. Reads the actual stack trace off the screen. |\n| Reasoning + Socratic evaluation | On every query and file open | Quality. Generates personalised questions and evaluates answers. |\n\nA separate `nomic-embed-text`\n\nmodel handles embeddings for semantic search — it outperforms a generalist 4B model at this specific task, so I kept it.\n\n### What Gemma 4 made possible that wasn't before\n\nThe core thesis of Synaptic is that local AI is now capable enough to be the primary intelligence of a real product — not just a demo. `gemma4:e4b`\n\ncan read screenshots, generate coherent structured analysis, evaluate the quality of a developer's reasoning, and do all of this on a consumer laptop in real time.\n\nThat's new. Six months ago you had to choose between capable and local. With Gemma 4 you don't.", "url": "https://wpnews.pro/news/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think", "canonical_source": "https://dev.to/octanexyz/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think-24o6", "published_at": "2026-05-23 04:52:29+00:00", "updated_at": "2026-05-23 05:01:06.027996+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "large-language-models", "open-source", "products"], "entities": ["Copilot", "Gemma 4", "Synaptic", "Rust", "Stack Overflow"], "alternates": {"html": "https://wpnews.pro/news/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think", "markdown": "https://wpnews.pro/news/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think.md", "text": "https://wpnews.pro/news/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think.txt", "jsonld": "https://wpnews.pro/news/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think.jsonld"}}