Google Gemma 4 Challenge 2026
Portable agents that can leave the chat box.
This signed pod opens a DARTC session back to its owner, then becomes a small runtime presence: it can listen, act, show state, and present work from anywhere the blob is dropped.
secure rendezvous
gemmapod explainersigned pod runtime
DARTC rendezvous~650 KBSigned HTML+JS+WASM pod, small enough to attach or host anywhere.
WebRTCPrimary path back to a Gemma model running on your origin machine.
WebGPUBrowser fallback keeps the agent alive when the origin is offline.
Pod anatomy
What ships inside the blob
The core idea is not a chatbot page. It is a composable AI asset with its own signed identity, policy, and transport preferences.
Runtime contents
- Signed manifest. Ed25519 over CBOR for identity, persona, model preference, transport config, and allowed tools.
- WASM core. Rust crypto, manifest parsing, signature verification, and the transport state machine.
- Browser shim. Preact chat UI plus WebRTC, local fallback, and direct HTTP transports.
- Signed tool allow-list. The owner origin re-verifies the manifest before exposing local tools.
Minimal pod manifest
name = "raj-card"
model = "gemma4:e4b"
system_prompt = """
You are Raj's AI business card.
Be concise and friendly.
"""
[transport]
preferred = ["webrtc", "fallback"]
[transport.webrtc]
signal_url = "wss://gemmapod.com/signal"
pod_id = "raj-card"
[[tools]]
name = "share_contact"
description = "Share Raj's public contact details."Transport
How a pod finds its model
A pod tries the manifest's preferred route, keeps chat bytes off the signaling broker, and falls back locally when it has to.
POD BLOB (single signed .html)
signed manifest + WASM core + browser shim
WebRTC primary
browser widget -> WSS signal exchange -> owner origin daemon
owner origin -> Ollama -> Gemma 4
Browser fallback
browser widget -> transformers.js -> Gemma 4 E2B over WebGPUGemma usage
Model sizes for different jobs
GemmaPod keeps the agent portable while letting heavier models stay close to the owner, where private tools and business context already live.
| Variant | Where it runs | Role |
|---|---|---|
Gemma 4 E2B | Visitor browser via transformers.js and WebGPU | Offline fallback for public, low-latency interactions. |
Gemma 4 E4B | Owner machine via Ollama | Primary live demo path over a WebRTC data channel. |
Gemma 4 31B Dense | Owner-controlled origin, opt-in per pod | Deeper reasoning for high-value tasks and negotiation flows. |
Gemma 4 26B MoE | Optional sidecar | High-throughput planning, retrieval, and batch tool work. |
Ship it
Three ways to move a pod
- Email it. Send the signed HTML file directly. The pod boots and phones home over WebRTC when the owner origin is online.
- Embed it. Mount the shim on any page with
GemmaPod.mount(el, config). The live widget above is doing that. - Deploy it. Drag the blob into /deploy and get a stable
gemmapod.com/<id>URL after signature verification.