Opposable released an Android app running GUI-Owl 2B on-device. The model controls other apps without a server. One step takes 7.3 s on a laptop CPU. Its vision encoder runs in 236 ms on a Galaxy S25 NPU. The encoder previously took 3.9 s on the same CPU. The model is quantised to 4 bits and uses 1.05 GB for the language model. It uses 445 MB for the vision encoder. Both stay in memory between steps. The app crops screenshots to reduce tokens by 25-40%. This improves accuracy from 27 to 28 of 36 graded screens. The app taps elements directly when the model’s intent matches one on screen. The NPU encoder passes a self-test with cosine similarity above 0.99. The first NPU load takes 72 s to prepare the graph.
What changed
GUI-Owl required a connected cloud model to operate Android apps.
What it unlocks
Running a 2B model entirely on-device to control Android apps without a server.
- 2B parameters
- 7.3 s per step on M2 CPU
- 236 ms vision encoder on Galaxy S25 NPU
- 3.9 s vision encoder on M2 CPU
What you need to act on it
- an Android phone with Snapdragon 8 Elite NPU for full NPU acceleration
- 1.5 GB download for the screen model
Sources