Open AlexCheema opened 1 month ago
on it :) anyone wants to help? ;)
@szmeku I've spent most of the weekend stubbing out a Typescript implementation of Exo, discovery/networking with libp2p + pubsub w/ a relay server and just started looking at writing wasm bindings for tinygrad vs actually writing out all the wgsl for a webgpu implementation...would love to chat! Discord DM's are open
@moosh3 uff you're far further than me :D let me dig into it more. Thanks for your update!
Background
We want to make exo as accessible as possible. The most accessible thing possible would be you don't even have to install something, you just go to your browser e.g. node.exolabs.net
Proposed Solution
exo running in the browser. This could be a new minimal implementation in JS that implements the exo service, or it could be some way to get the existing Python code to run in the browser (WebAssembly or Pyodide or similar). The inference itself will probably need to use WebGPU. You will need to implement a new discovery module other than UDP since UDP broadcast won't work in the browser. This discovery module could be as simple as manually specifying node endpoints. You will also need to implement a new way of doing p2p networking since the current approach requires exposing a port for gRPC over HTTP. Instead, it may make sense to use libp2p or similar. In the end, there needs to be a shareable link that allows you to connect browser nodes. I could imagine this link being something like
node.exolabs.net?node_endpoints=http://123.123.123.123:52712
.Deliverables