Legato

Why computer-use agents are slow, and how to make them faster

A computer-use step is: take a screenshot, call the model, act, wait for the screen. Three things make it slow.

What Legato does about each:

problem Legato
fixed sleeps waits until the screen stops changing, inside the sandbox when it can, never longer than the 2 s it replaces
one action per call up to 3 actions per turn, with one screenshot after them
cache misses keeps 8 screenshots and drops 4 at a time, so the prefix stays the same between drops
stuck calls a wall-clock timeout and a token budget on every model call

The result, with the same Claude model on the same 24 office tasks: 1.48x faster than the reference loop, 48/48 tasks in both. Per task, Legato waited 14.0 s for the screen against 44.5 s, and each model call took 3.02 s against 4.17 s.

To measure your own loop, run the same tasks through legato.Harness and legato.Harness.reference and compare result.report(), which splits each run into model time, action time and waiting (example).

Edit this page on GitHub · Markdown