{"id":20065015,"url":"https://github.com/sawyerhood/multisim","last_synced_at":"2025-08-09T07:13:11.175Z","repository":{"id":244118723,"uuid":"802595107","full_name":"SawyerHood/multisim","owner":"SawyerHood","description":"A demo of a multiplayer browser that imagines websites!","archived":false,"fork":false,"pushed_at":"2024-06-12T17:42:02.000Z","size":174,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-13T01:38:18.394Z","etag":null,"topics":["browser","genai","llm","multiplayer","nextjs","partykit","react","typescript","web"],"latest_commit_sha":null,"homepage":"https://multisim.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SawyerHood.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-18T18:27:25.000Z","updated_at":"2024-06-13T01:38:23.452Z","dependencies_parsed_at":"2024-06-13T01:38:22.564Z","dependency_job_id":"1de68761-e3ea-4b77-b610-efdfac4697fb","html_url":"https://github.com/SawyerHood/multisim","commit_stats":null,"previous_names":["sawyerhood/multisim"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SawyerHood%2Fmultisim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SawyerHood%2Fmultisim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SawyerHood%2Fmultisim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SawyerHood%2Fmultisim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SawyerHood","download_url":"https://codeload.github.com/SawyerHood/multisim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224459296,"owners_count":17314864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser","genai","llm","multiplayer","nextjs","partykit","react","typescript","web"],"created_at":"2024-11-13T13:48:40.367Z","updated_at":"2024-11-13T13:48:41.096Z","avatar_url":"https://github.com/SawyerHood.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MultiSim\n\nThis is a proof of concept to show what it could be like to have a fully multiplayer version of WebSim (a browser where an LLM generates the webpages).\n\n\nhttps://github.com/SawyerHood/multisim/assets/2380669/1ee72222-1f85-4b8e-8c33-320eca9ee00e\n\n\n**How is it multiplayer?**\n\n- There is presence so you can see what pages other people are on.\n- If you are on the same page as someone else, you can see their multiplayer cursor\n- Multiple people can see a webpage stream in together\n- There is multiplayer chat so you can talk to other users\n\n\u003e This is demoware / a proof of concept. I wrote this over a weekend and decided that I don't want to flesh it out, but it is architecturally interesting so it is worth sharing.\n\n## Getting started\n\nCreate a `.env.local` file with the following:\n\n```\nOPENAI_API_KEY={Your Key}\nWEBAPP_URL=http://localhost:3000\nNEXT_PUBLIC_PARTY_KIT_HOST=localhost:1999\nNEXT_PUBLIC_PARTY_KIT_URL=http://localhost:1999\n```\n\n```bash\nbun i\nbun dev\n```\n\n## How does it work?\n\n- The main shell of the app is a Next.js app that you can host anywhere.\n- There is a [partykit](https://www.partykit.io/) room that is powering the multiplayer features.\n- Right now there is an in memory cache of pages inside of the room.\n- All ai generation is handled on the partykit room. This lets llm generation get de-duped across clients.\n- There is a very small postMessage protocol for transmitting things like cursor positions between the iframe and the parent\n\n## What is missing?\n\nThere isn't any long term persistence of the pages or account management. Right now there is only a single hardcoded room as well. If you want to actually scale this you will need to be able to shard people into different servers. You really want the concept of a \"party\" or a \"universe\" where people can all jam on things together.\n\n## Why did you stop working on this?\n\nI started working on this because it would be a fun proof of concept. Once I proved to myself that I knew how to build it I stopped because I don't really want to build out a full fledged websim competitor.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsawyerhood%2Fmultisim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsawyerhood%2Fmultisim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsawyerhood%2Fmultisim/lists"}