[HN Gopher] Show HN: Gemma Gem - AI model embedded in a browser ...
___________________________________________________________________
Show HN: Gemma Gem - AI model embedded in a browser - no API keys,
no cloud
Gemma Gem is a Chrome extension that loads Google's Gemma 4 (2B)
through WebGPU in an offscreen document and gives it tools to
interact with any webpage: read content, take screenshots, click
elements, type text, scroll, and run JavaScript. You get a small
chat overlay on every page. Ask it about the page and it (usually)
figures out which tools to call. It has a thinking mode that shows
chain-of-thought reasoning as it works. It's a 2B model in a
browser. It works for simple page questions and running JavaScript,
but multi-step tool chains are unreliable and it sometimes ignores
its tools entirely. The agent loop has zero external dependencies
and can be extracted as a standalone library if anyone wants to
experiment with it.
Author : ikessler
Score : 141 points
Date : 2026-04-06 00:14 UTC (22 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| avaer wrote:
| There's also the Prompt API, currently in Origin Trial, which
| supports this api surface for sites:
|
| https://developer.chrome.com/docs/ai/prompt-api
|
| I just checked the stats: Model Name: v3Nano
| Version: 2025.06.30.1229 Backend Type: GPU (highest
| quality) Folder size: 4,072.13 MiB
|
| Different use case but a similar approach.
|
| I expect that at some point this will become a native web
| feature, but not anytime soon, since the model download is many
| multiples the size of the browser itself. Maybe at some point
| these APIs could use LLMs built into the OS, like we do for
| graphics drivers.
| oyebenny wrote:
| Interesting!
| sheept wrote:
| The Summarizer API is already shipped, and any website can use
| it to quietly trigger a 2 GB download by simply calling
| Summarizer.create()
|
| (requires user activation)
| veunes wrote:
| That's exactly where we're headed. Architecturally it makes
| zero sense to spin up an LLM in every app's userspace. Since we
| have dedicated NPUs and GPUs now, we need a unified system-
| level orchestrator to balance inference queues across different
| programs - exactly how the OS handles access to the NIC or the
| audio stack. The browser should just be making an IPC call to
| the system instead of hauling its own heavy inference engine
| along for the ride
| michaelbuckbee wrote:
| FWIW - I did a real world experiment pitting the built in
| Gemini Nano vs a free equivalent from OpenRouter (server call)
| and the free+server side was better in literally every
| performance metric.
|
| That's not to say that the in browser isn't valuable for
| privacy+offline, just that the standard case currently is
| pretty rough.
|
| https://sendcheckit.com/blog/ai-powered-subject-line-alterna...
| spijdar wrote:
| It's worth mentioning that "Gemini Nano 4" is going to be
| Gemma 4, and presumably when it becomes the default Nano
| model, it should improve performance quite a bit.
|
| (It's currently available for testing in Android's AICore
| under a developer preview)
| emregucerr wrote:
| I would love to see someone build it as some kind of an SDK. App
| builders could use it as a local LLM plugin when dealing with
| data involving sensitive information.
|
| It's usually too much when an app asks someone to setup a local
| LLM but this I believe could solve that problem?
| winstonp wrote:
| Which apps have you seen ask for someone to setup a local LLM?
| Can't recall having ever seen one
| jillesvangurp wrote:
| It's not too hard to code together with an LLM. I've been
| playing with small embeddings models in browsers in the last
| weeks. You don't really need that much. The limitation is that
| these things are fairly limited and slow to begin with and they
| run slower in a browser even with webgpu. But you can do some
| cool stuff. Adding an LLM is just more of the same.
|
| If you want to see an example of this,
| https://querylight.tryformation.com/ is where I put my search
| library and demo. It does vector search in the browser.
| montroser wrote:
| Not sure if I actually _want_ this (pretty sure I don 't) -- but
| very cool that such a thing is now possible...
| eric_khun wrote:
| it would be awesome if a local model would be directly embeded to
| chrome and developer could query them.
|
| Anyone know if this is somehow possible without going through an
| extension?
| fastball wrote:
| https://developer.chrome.com/docs/ai/get-started
| veunes wrote:
| It's a neat idea, but giving a 2B model full JS execution
| privileges on a live page is a bit sketchy from a security
| standpoint. Plus, why tie inference to the browser lifecycle at
| all? If Chrome crashes or the tab gets discarded, your agent's
| state is just gone. A local background daemon with a "dumb"
| extension client seems way more predictable and robust fwiw
| jillesvangurp wrote:
| There's indexed db, opfs, etc. Plenty of ways to store stuff in
| a browser that will survive your browser restarting. Background
| daemons don't work unless you install and start them yourself.
| That's a lot of installation friction. The whole point of a
| browser app is that you don't have to install stuff.
|
| And what you call sketchy is what billions of people default to
| every day when they use web applications.
| shawabawa3 wrote:
| > but giving a 2B model full JS execution privileges on a live
| page is a bit sketchy from a security standpoint.
|
| Every webpage I've ever visited has full JS execution
| privileges and I trust half of them less than an LLM
| saagarjha wrote:
| Note that every webpage does not have full JS execution
| privileges on other parts of the web.
| derefr wrote:
| At least in this case (not so sure about the Prompt API
| case mentioned in another thread) the agent is "in" the
| page. And that means that the agent is constrained by the
| same CORS limits that constrain the behavior of the page's
| own JS.
|
| If you think about it, everything we've done to make
| malicious webpages unable to fiddle around with your state
| on other sites using XHRs, are exactly and already the
| proper set of constraints we'd want to prevent models
| working _with_ webpages from doing the same thing.
| mark_l_watson wrote:
| I was thinking the same thing: better to run models using a
| local service not in the wen browser. I use Ollama and LM
| Studio, switching between which service I have running
| depending on what I am working on. It should be straight
| forward to convert this open source project to use a different
| back end.
|
| That said this looks like a cool project. It is so valuable
| writing projects like this that use local models, both for tool
| building and self education. I am writing my own "Emacs native"
| agentic coding harness and I am learning a lot.
| dabrez wrote:
| I have this written a a project I will attempt to do in the
| future, I also call it "weapons grade unemployment" in the notes
| I was proposing to use granite but the principle still stands.
| You beat me to it.
| kabir_daki wrote:
| "Show HN: Gemma Gem - AI model embedded in a browser - no API
| keys, no cloud"
___________________________________________________________________
(page generated 2026-04-06 23:01 UTC)