The state machine is pure and performs no effects.
WhyTurn-taking is the part that has to be correct, and purity is what makes it testable. Aborting mid-generation, rejecting an impossible event, the ordering of cancel-then-stop-then-open: all of it is asserted in a test rather than verified by clicking.
CostThe caller has to perform the effects faithfully; a machine that ran them itself would be harder to get wrong at the call site.
Illegal transitions are rejected with a reason, not ignored.
WhyA machine that quietly swallows impossible events hides the bug that produced them. A rejection surfaces in the UI during the demo, which is how you find out the capture layer is firing events out of order.
CostMore states to handle explicitly, and a table that has to be maintained.
The default provider is scripted and requires no key.
WhyA demo behind an API key is a demo nobody runs. Everything that makes this interesting (streaming, cancellation, the latency accounting) is real without one, and the page discloses exactly what is canned.
CostThe replies are not a model's. That is stated on the page rather than implied away.
The interrupted turn is recorded, not discarded.
WhyAn interruption tells you the response gap was too long. Throwing those turns away deletes precisely the data that explains why the presence felt wrong.
CostMetrics have to handle turns where a first token never arrived.
The presence layer is Canvas 2D, not WebGL.
WhyThis page argues the pipeline is the hard part. Shipping a megabyte of 3D to draw a status indicator would undercut that, and a few hundred lines of arithmetic reads the same from across a room.
CostNo depth, no real volumetrics. It evokes a projection rather than simulating one.