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 WebGPU

Gemma 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.

VariantWhere it runsRole
Gemma 4 E2BVisitor browser via transformers.js and WebGPUOffline fallback for public, low-latency interactions.
Gemma 4 E4BOwner machine via OllamaPrimary live demo path over a WebRTC data channel.
Gemma 4 31B DenseOwner-controlled origin, opt-in per podDeeper reasoning for high-value tasks and negotiation flows.
Gemma 4 26B MoEOptional sidecarHigh-throughput planning, retrieval, and batch tool work.

Ship it

Three ways to move a pod

  1. Email it. Send the signed HTML file directly. The pod boots and phones home over WebRTC when the owner origin is online.
  2. Embed it. Mount the shim on any page with GemmaPod.mount(el, config). The live widget above is doing that.
  3. Deploy it. Drag the blob into /deploy and get a stable gemmapod.com/<id> URL after signature verification.