====== 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]]