====== Gemini Nano v Chrome ======
//Vytvořeno: **1.7.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://developer.chrome.com/docs/ai/built-in|Gemini Nano v Chrome]] je lokální AI model spravovaný přímo prohlížečem Chrome a dostupný přes Built-in AI / Prompt API. Projekt [[https://github.com/Ar9av/gemini-nano-chrome|gemini-nano-chrome]] ukazuje praktický způsob, jak Gemini Nano vystavit jako lokální OpenAI-compatible API a použít ho i z nástrojů, které umí mluvit s OpenAI API.
Námět vychází z [[https://x.com/_ar9av/status/2067233860287627359|příspěvku Arnav Gupta na X]], kde autor popisuje pokus zpřístupnit Gemini Nano z Chromu jako lokální API bez API klíče a bez externích síťových volání po stažení modelu.
===== Princip =====
Gemini Nano neběží jako samostatný proces typu Ollama nebo llama.cpp server. Model je dostupný uvnitř Chromu přes JavaScriptové rozhraní [[https://developer.chrome.com/docs/ai/prompt-api|Prompt API]], konkrétně přes globální objekt ''LanguageModel''.
Projekt ''gemini-nano-chrome'' kolem toho staví bridge:
OpenAI-compatible klient → lokální HTTP server → Chrome CDP → LanguageModel / Gemini Nano
Praktický výsledek je lokální endpoint:
http://localhost:8788/v1/chat/completions
Ten se z pohledu klienta chová podobně jako OpenAI Chat Completions API. Díky tomu ho lze napojit i do nástrojů, které umí OpenAI-compatible providery.
===== Co projekt gemini-nano-chrome dělá =====
Repozitář obsahuje několik částí:
* skripty pro spuštění Chromu se správnými flags,
* automatizaci prvního nastavení přes Chrome DevTools Protocol,
* jednoduché webové chat UI,
* lokální OpenAI-compatible API server,
* ukázky volání přes ''curl'', JavaScript a OpenAI klienta.
Základní spuštění:
git clone https://github.com/Ar9av/gemini-nano-chrome.git
cd gemini-nano-chrome
npm start
Po spuštění jsou dostupné dvě služby:
Chat UI: http://localhost:8123
API server: http://localhost:8788/v1/chat/completions
První běh stáhne lokální model do Chrome profilu. README projektu uvádí velikost stažení přibližně 4 GB. Další spuštění už stejný Chrome profil znovu používá.
===== Požadavky =====
Podle dokumentace [[https://developer.chrome.com/docs/ai/get-started|Chrome Built-in AI]] jsou pro Prompt API potřeba hlavně tyto podmínky:
* Chrome na desktopu; ne Chrome pro Android nebo iOS,
* Windows 10/11, macOS 13+, Linux nebo Chromebook Plus,
* dostatek volného místa v Chrome profilu,
* GPU s více než 4 GB VRAM, nebo CPU režim s alespoň 16 GB RAM a 4 CPU jádry,
* neměřené připojení pro prvotní stažení modelu.
Projekt v README doporučuje Chrome 138+ a uvádí ověření na Chromu 149. Pro lokální testování se zapínají flags:
chrome://flags/#optimization-guide-on-device-model
chrome://flags/#prompt-api-for-gemini-nano
Skript v repozitáři to umí udělat automaticky, takže není nutné flags ručně naklikávat.
===== API server =====
Lokální server implementuje jen část OpenAI API, která dává smysl pro textový lokální model v Chromu.
Podporované endpointy:
* ''GET /health'' – kontrola dostupnosti modelu,
* ''GET /v1/models'' – vrací model ''gemini-nano'',
* ''POST /v1/chat/completions'' – chat completions kompatibilní s OpenAI-style klienty.
Jednoduchý test:
curl http://localhost:8788/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-nano",
"messages": [
{"role": "user", "content": "What are you, in one sentence?"}
]
}'
Streaming je řešený přes SSE. ''response_format'' s JSON schema se mapuje na ''responseConstraint'' v Chrome Prompt API.
===== Napojení do OpenCode =====
[[https://opencode.ai/docs/providers/|OpenCode]] podporuje vlastní providery přes AI SDK. Pro OpenAI-compatible lokální API se používá balíček ''@ai-sdk/openai-compatible''. To znamená, že ''gemini-nano-chrome'' lze přidat jako custom provider.
Příklad konfigurace v ''~/.config/opencode/opencode.json'' nebo v projektovém ''opencode.json'':
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"gemini-nano-chrome": {
"npm": "@ai-sdk/openai-compatible",
"name": "Gemini Nano Chrome",
"options": {
"baseURL": "http://localhost:8788/v1",
"apiKey": "not-needed"
},
"models": {
"gemini-nano": {
"name": "Gemini Nano"
}
}
}
},
"model": "gemini-nano-chrome/gemini-nano",
"small_model": "gemini-nano-chrome/gemini-nano"
}
OpenCode skládá plné ID modelu ve tvaru ''provider_id/model_id''. V tomto příkladu je tedy model dostupný jako:
gemini-nano-chrome/gemini-nano
Před spuštěním OpenCode musí běžet lokální server z projektu ''gemini-nano-chrome'':
npm start
Pro lokální endpoint je vhodné dát pozor na proxy proměnné. Dokumentace [[https://opencode.ai/docs/network/|OpenCode Network]] uvádí, že OpenCode respektuje standardní ''HTTP_PROXY'', ''HTTPS_PROXY'' a ''NO_PROXY''. Pokud je v prostředí proxy, měl by být ''localhost'' v ''NO_PROXY'':
export NO_PROXY=localhost,127.0.0.1
===== Limity =====
Tohle je experimentální lokální integrace, ne plnohodnotná náhrada velkého coding modelu.
Z README projektu a dokumentace Chrome vyplývají hlavně tyto limity:
* kontext v měření autora vychází přibližně na 9216 tokenů,
* API nepodporuje ''max_tokens'', ''n'', embeddings ani legacy completions endpoint,
* stop sekvence jsou řešené klientsky až nad vygenerovaným textem,
* použití sampling parametrů závisí na tom, v jakém režimu je Prompt API dostupné,
* kvalita pro coding agent workflow nemusí odpovídat větším modelům určeným pro práci s nástroji,
* dostupnost a chování Prompt API se může měnit podle verze Chromu.
Pro malé lokální úlohy, rychlé dotazy nebo experiment se zapojením on-device modelu do nástrojů je to zajímavé. Pro komplexní agentní práci s repozitářem je potřeba počítat s malým kontextem a ověřovat výsledky.
===== Souvislost s Phi-4 Mini =====
V diskuzích kolem tohoto tématu se objevuje i zmínka o ''phi4-mini''. To ale není součást projektu ''gemini-nano-chrome''. [[https://ollama.com/library/phi4-mini|Phi-4 Mini v Ollamě]] je samostatný lokální model, který lze spustit přes Ollamu.
Ollama u modelu uvádí i přímé použití s OpenCode:
ollama launch opencode --model phi4-mini
To je jiná integrační cesta než Gemini Nano v Chromu:
* Gemini Nano běží uvnitř Chromu přes Prompt API,
* Phi-4 Mini běží přes Ollamu jako lokální model server,
* OpenCode může s oběma pracovat přes lokální provider, ale technická vrstva je jiná.
===== Poznámka ke Gemini Web Proxy =====
Existuje také projekt [[https://github.com/00bx/gemini-web-proxy|gemini-web-proxy]], který se prezentuje jako Gemini web interface proxy pro OpenCode. Ten ale nepracuje s Gemini Nano v Chromu. Používá Playwright k automatizaci webového rozhraní Gemini a převádí ho na OpenAI-compatible API.
Je tedy potřeba rozlišovat:
* ''gemini-nano-chrome'' – lokální Gemini Nano přes Chrome Prompt API,
* ''gemini-web-proxy'' – automatizace webového Gemini UI přes browser,
* ''phi4-mini'' přes Ollamu – lokální model mimo Chrome.
===== Kdy to dává smysl =====
''gemini-nano-chrome'' dává smysl hlavně jako experiment s lokálním modelem, který už je spravovaný Chromem. Prakticky může sloužit jako:
* lokální fallback model,
* test OpenAI-compatible integrace bez API klíče,
* malý model pro rychlé odpovědi,
* ukázka, jak propojit browser-only AI API s běžnými vývojářskými nástroji.
Pro běžné použití v OpenCode je ale potřeba počítat s tím, že model má malý kontext a není primárně trénovaný jako coding-agent backend.
===== Zdroje =====
* [[https://github.com/Ar9av/gemini-nano-chrome|Ar9av/gemini-nano-chrome – Gemini Nano v Chrome jako OpenAI-compatible API]]
* [[https://x.com/_ar9av/status/2067233860287627359|Původní příspěvek na X od Arnav Gupta]]
* [[https://developer.chrome.com/docs/ai/built-in|Chrome Built-in AI]]
* [[https://developer.chrome.com/docs/ai/prompt-api|Chrome Prompt API]]
* [[https://developer.chrome.com/docs/ai/get-started|Chrome Built-in AI – Get started]]
* [[https://opencode.ai/docs/providers/|OpenCode – Providers]]
* [[https://opencode.ai/docs/models/|OpenCode – Models]]
* [[https://opencode.ai/docs/network/|OpenCode – Network]]
* [[https://ollama.com/library/phi4-mini|Ollama – Phi-4 Mini]]
* [[https://github.com/00bx/gemini-web-proxy|00bx/gemini-web-proxy]]