G1 arm and hand holding a drink can, isolated on a transparent background
Moissan Club

One harness.
Three robots.

How far can Gemma 4 go
when the brain stays local?

gemma-hackathonAGI House · October 24, 2026

Unitree G1 · AgileX PiPER · LeKiwi Robot

The starting point

Cloud models showed us
what was possible

GPT6 Astra

Advanced reasoning and coding
set a high capability bar.

Network latencyAvailabilityUsage cost

The on-device question

How much intelligence fits inside
a robot’s physical limits?

Power envelopeMemoryGPU

AGI House Wi-Fi is doing a great job selling on-device AI today.

Local inference removes the network round trip and external API dependency. Hardware and energy still have a cost.

A small task with a real physical outcome

Any language. Pick a drink.

Three white drink cans with different fruit pictures, viewed by the robot camera

The same can shape. Different pictures and requests.

“The one with the lychee picture.”

Gemma hears the audio directly.

Vision grounds the request in the table.

The robot picks the selected drink.

16 GBJetson Orin NX
inside the G1

Stock instruction-tuned, quantized Gemma 4 weights. No task-specific post-training. Language coverage depends on the tested clips and room acoustics.

Gemma 4 E2B on the G1

The question format
changes the result

One-word perception
77 / 78 correct
320 ms
Structured tool call
76 / 78 correct
686 ms
Object bounding box
78 / 78 correct
772 ms

MODEL CONFIGURATIONThinking off for direct perception.
Short, grounded answers.

INPUT AND RUNTIMERight-sized images.
Warm prefixes. Few output tokens.

The harness asks the model
a question it can answer well.

Orin NX, MAXN with pinned clocks, llama.cpp CUDA. 78 crops from 3 generated kitchen scenes. Perception diagnostic, not a physical-task success rate.

Same-day comparison on Orin NX

More parameters cost time

Median complete request · lower is faster
ModelRequest latencyMedianCorrect
E2B
839 ms78 / 78
E4B
1,499 ms78 / 78
12B
2,778 ms78 / 78

E2B already solves this diagnostic.
12B gives tighter boxes, with a longer wait.

Peak board RAM
E2B 5.8 GB · E4B 8.6 GB · 12B 11.4 GB

MAXN, clocks unpinned, thinking off. Same 78-frame diagnostic. Quantization differs; prompts were tuned on E2B. Press C to change the view.

Generating a fresh task program

Here, model size earns its keep

ModelMedian generation requestWall timeTasks passed
E2B
4.96 s2 / 9
E4B
4.25 s8 / 9
12B
12.20 s8 / 9

E4B’s shorter programs offset its slower per-token rate.

12B on the harder set: 3 / 6 at 16.67 s median. E4B hard-set comparison remains open.

9 basic tasks, one greedy sample each, tested on 2–3 mock layouts. Inference on Orin; generated code executed in host-side mocks. These are program tests, not robot success rates.

A working second inference backend

LiteRT GPU runs on the G1

llama.cpp CUDA168 ms
LiteRT-LM GPU628 ms

Native speech to target choice.
LiteRT adds 460 ms in this comparison.

26 / 28

Both runtimes reached the same score,
with different individual misses.

WebGPU on Vulkan
NVIDIA Tegra Orin adapter

Both engines resident: 7.3 GB board RAM.
CUDA image gate stayed near 320 ms.

LiteRT-LM 0.18.0, E2B, MAXN, unpinned clocks. 14 clips repeated twice. Application-level comparison with different bundles and prefix caching. Coexistence excludes the full robot stack.

Minimal adaptation at the robot boundary

One task interface.
Very different bodies.

01 / HUMANOID

Unitree G1

Jetson Orin NX 16 GB
BrainCo hand

Our original physical benchmark

02 / ROBOT ARM

AgileX PiPER

Alienware laptop
NVIDIA GPU

Independent teammate port
Only low-level robot control changed

03 / MOBILE ARM

LeKiwi Robot

The same harness approach
in a mobile embodiment

The latest team extension

The prompts and task logic travel.
Each robot supplies its own execution and calibration.

PiPER and LeKiwi Robot deployments are team-reported results. Task portability does not imply identical motor controllers or zero hardware setup.

The useful boundary

Gemma resolves meaning.
The harness makes it executable.

The model

Hears the request.
Describes the visible objects.
Chooses what the guest meant.

One direct, grounded question at a time.

The written logic

Coordinates the task.
Measures geometry and reach.
Controls motion and checks the result.

look()   pick()   give()
place()   say()   listen()

Zero-shot task interpretation with stock weights. Robot adapters and calibration remain explicit engineering.

Automatic calibration demonstrated on G1

An outside view
turns error into feedback

Actual G1 head-camera measurement with object boxes and hand localization overlays

Existing head-view measurement, shown here as execution evidence

Latest G1 third-person auto-calibration result confirmed by the team. No quantitative gain claimed here; the pictured head-view servo is a separate documented measurement path.

The next level of generalization

A new request becomes
a new task program

def task(robot):
    cans = robot.look()
    if not cans:
        robot.say("No cans in view.")
        return
    target = max(cans,
                 key=lambda c: c["x"])
    if robot.pick(target["id"]):
        robot.give()

Illustrative task code over the shared API; the physical skills stay in the adapter

12.20 s

12B median generation on Orin.
Too slow for our live interaction budget.

AGX Thor

Encouraging task-code experiments
on a larger local GPU.

[Add the successful Thor task here]

Press E to edit this task example locally.

Orin figure: 9-task mock suite, not robot execution. Thor success is a team-reported experiment; no timing benchmark recorded. Generated task logic composes existing physical skills.

Why we’re optimistic

Gemma 4 gave us
a remarkably strong baseline

Already useful with stock weights

Native vision and audio on a robot.

Grounded decisions at interactive latency.

Model sizes that support different roles.

Our next experiments

Task-specific post-training.

Fewer tokens per successful decision.

Better task programs and feedback-driven calibration.

Order in your language. Choose by the picture.

Built with Gemma 4 and Google AI Edge. Thanks to the Gemma and LiteRT teams.
github.com/MoissanClub/gemma-hackathon

Orin NX 16 GB

The measured model table

MetricE2BE4B12B
One-word perception, correct77 / 7869 / 7875 / 78
One-word perception, median request368 ms532 ms829 ms
Bounding box, correct78 / 7878 / 7878 / 78
Bounding box, median request839 ms1,499 ms2,778 ms
Basic task programs, passed2 / 98 / 98 / 9
Generation request, median wall time4.96 s4.25 s12.20 s
Peak board RAM during model runs5.8 GB8.6 GB11.4 GB

MAXN, clocks unpinned, thinking off. Prompts tuned on E2B; different quantization variants. Program correctness uses mocks. Full sources and limitations are in the speaker notes.