pub async fn spawn(ctx: &Context) -> Result<String, Error>
The spawn flow itself. Idempotent and cheap when the viewer is already up: a try_read of the lock returns without spawning.