Hey, sorry — here’s a clearer breakdown of what’s happening.
SPARK = Simple Personal AI Reasoning Kernel.
It’s a small local “brain loop” running on my DGX Spark.
It listens to speech, understands intent with embeddings, and picks which code module (what I call Agent GIFs) should run.
Here’s the pipeline:
- Speech In
Browser captures audio and sends a WAV to my DGX Spark. - Local Speech Recognition
Whisper Small + Whisper Large run locally on GPU. - Semantic Understanding
The transcript is embedded using a local embedding model (nomic-embed-text).
I compare it against embeddings of ~100 modules (“trees”). - Intent Routing (the kernel part)
SPARK finds the closest match using cosine similarity.
If confidence is low, it defers to a local 120B model to reason about the safest/correct module. - Module Execution
The chosen module runs.
A module is basically an Agent GIF: a self-contained unit (HTML/JS/PHP/text) embedded inside a GIF file.
So in the demo:
- “What’s the weather in London?” → Weather module
- “Where is OpenAI based?” → Info module
- etc.
More detail:
It’s recording speech through the browser, running that through browser speech recognition, saving WAV files, and uploading them to local Whisper Small + Large.
Then it checks which module to execute by comparing embeddings (or asks local 120B to choose).
I’m not using OSS 120B function calling — rolled my own version for now.
In the first example the user asks for weather in London; in the second, where OpenAI is based (California).
Next step is auto-generating modules with GPT-5+ as I have demonstrated in other posts.

Modules are basically Agent GIFs.
Would appreciate any feedback — I’m sure I’m making lots of mistakes along the way ![]()