Skip to main content
Every Glasswarp integration is the same shape. Glasswarp owns observe and act; your model owns decide.

The shape

decide and act are yours: decide calls your model with obs.jpeg and obs.targets; act maps its output to click_target, type_text, etc.

Make it cheap: skip idle frames

Set VP0 on in the example loops to skip idle frames by default. Empty dirty_rects means “don’t spend a model call.”

Ground every action

Prefer click_target over raw pixels so the loop survives layout shifts:

Keep task logic out of the transport

Put prompts, CV, and planning in your own module. The Glasswarp client is a thin transport adapter — mixing task logic into it makes both harder to test.

Reference loops

The SDK ships runnable agent loops:
  • gemini_agent_loop.py — CV grid → SoM targets → Gemini → click_target
  • claude_agent_loop.py — observe → Claude → act (VP0 on by default)
See Examples.