I think this is pretty possible. You could use Mori [0] or another set of persistent JS data structures. And you'd need to monkey-patch them to all support being used as cursors like in Om. That'd be pretty cool for those of us who can't sneak Clojure in at our day jobs.