cd /news/developer-tools/synaptic-a-local-first-ai-dev-compan… Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-10672] src=dev.to β†— pub= topic=developer-tools verified=true sentiment=↑ positive

Synaptic: A Local-First AI Dev Companion That Remembers How You Think

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.

read6 min views19 publishedMay 23, 2026

This is a submission for the Gemma 4 Challenge: Build with Gemma 4

What I Built #

Three 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.

Six days in, I realised I had no idea what I was doing.

I could produce Rust. I couldn't think in Rust. Copilot was making me a faster copy-paster. It wasn't making me a developer.

What 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?"

That question became Synaptic.

Synaptic 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.

The centrepiece is the Socratic gate.

When 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:

"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?"

The 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.

Beyond the Socratic gate:

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

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 - 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?)

Habit mismatch detectionβ€” runs continuously, warns when you apply patterns from your old language that will break in your new one

Stuck detectionβ€” watches for compound signals (repeated errors, thrashing, excessive app switches) and auto-surfaces the HUD with relevant context before you ask - 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.

Live site: https://synaptic-ebon.vercel.app

Docs: https://synaptic-ebon.vercel.app/docs

Demo #

Quick start to try it yourself:

git clone https://github.com/cybort360/synaptic
cd synaptic && npm install
ollama pull gemma4:e4b
ollama pull nomic-embed-text
cp synaptic.config.example.json synaptic.config.json
npm run launch

Open a .rs

, .ts

, .py

, or .go

file in a watched directory. The HUD will appear within seconds with a question grounded in your recent activity.

Code #

GitHub: https://github.com/cybort360/synaptic

The full pipeline in one view:

Files / Terminal / Shell history
        ↓
    Observer (chokidar + history polling + stuck detector)
        ↓
    Archivist
      β”œβ”€ Compressor: gemma4:e4b (every 3s, with vision on errors)
      β”œβ”€ Embedder: nomic-embed-text (semantic search vectors)
      └─ SQLite (local, persistent, yours)
        ↓
    Connector
      β”œβ”€ Semantic search over history
      β”œβ”€ Prompt builder (4 modes)
      └─ Reasoner: gemma4:e4b (streaming)
        ↓
    Socratic Engine
      β”œβ”€ Fires on file open for recognised code files
      β”œβ”€ Streams question word-by-word to HUD
      └─ Evaluates answer, asks follow-up or passes
        ↓
    Dashboard (http://localhost:3777) + HUD Overlay (Electron)

Stack: Node.js 20, TypeScript, Express, WebSocket, Electron, chokidar, sql.js (SQLite), Ollama. No frameworks. No bundler. Around 5,700 lines of original code.

How I Used Gemma 4 #

I used gemma4:e4b

β€” the 4B effective parameter model β€” and the choice was deliberate at every level.

Why E4B specifically

Speed 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.

I tested gemma4:26b

for this. The batches piled up. The tool became a liability. At 4B effective parameters, gemma4:e4b

compresses an event in under 2 seconds on a MacBook. The 3-second cycle stays clean. Memories are always fresh.

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.

Gemma 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

is the exact intersection: small enough to run constantly, fast enough for real-time use, and genuinely multimodal.

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

, 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.

What breaks with a different model

Alternative What fails
A 27B local model Compression batches pile up. The 3-second cycle becomes 30+ seconds and memories fall behind real activity
A non-multimodal 4B Vision pipeline silently degrades. Errors are compressed without reading the actual screen output
A cloud-only model The entire privacy guarantee breaks. Code, errors, and history leave your machine
No local model at all Socratic gate cannot fire on every file open. Latency makes it unusable as a real-time feature

The three tiers Gemma 4 powers

Task When Why Gemma 4
Event compression Every 3 seconds Speed. Needs to complete before the next event arrives.
Vision error analysis On terminal errors (macOS) Multimodal. Reads the actual stack trace off the screen.
Reasoning + Socratic evaluation On every query and file open Quality. Generates personalised questions and evaluates answers.

A separate nomic-embed-text

model handles embeddings for semantic search β€” it outperforms a generalist 4B model at this specific task, so I kept it.

What Gemma 4 made possible that wasn't before

The 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

can 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.

That's new. Six months ago you had to choose between capable and local. With Gemma 4 you don't.

── more in #developer-tools 4 stories Β· sorted by recency
── more on @copilot 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/synaptic-a-local-fir…] indexed:0 read:6min 2026-05-23 Β· β€”