Experimental Gemini Nano on-device inference demos across browser, Python, and HTTP surfaces.
| Directory | Language | Port | Status |
|---|---|---|---|
api-server/ |
Python (FastAPI + Ollama) | 8080 | Stable |
chrome-bridge/ |
Node.js / Express | 8081 | Stable |
python-mediapipe/ |
Python (MediaPipe) | — | Stable |
chrome-demo/ |
HTML / JavaScript | — (file) | Stable |
graph TD
A[chrome-demo\nindex.html] -->|window.ai Prompt API| B[Chrome Canary\nGemini Nano built-in]
C[HTTP client] -->|POST /v1/chat/completions| D[chrome-bridge\nserver.js :8081]
D -->|Puppeteer + window.ai| B
E[HTTP client] -->|POST /generate| F[api-server\napp.py :8080]
F -->|Ollama REST API| G[Ollama\nlocal model]
H[terminal] -->|python run_nano.py| I[python-mediapipe\nMediaPipe LLM Inference]
I -->|.task model file| J[Gemma 2B-IT\nor Gemini Nano weights]
cd api-server
python -m venv .venv && .venv\Scripts\activate # Windows
pip install -r requirements.txt
python app.py
# → http://localhost:8080cd chrome-bridge
npm install
npm start
# → http://localhost:8081Test without Chrome:
npm testcd python-mediapipe
pip install -r requirements.txt
python run_nano.py "What is Gemini Nano?"
# Prints download instructions if model.task is absent (exits 0)
python run_nano.py --model-path /path/to/gemma2b-it.task "Your prompt"Open chrome-demo/index.html directly in Chrome Canary with:
chrome://flags/#prompt-api-for-gemini-nano → Enabled
No server required.
See SETUP.md for Chrome flag configuration and model download instructions.