OP here. I’m reposting this with a focus on the tech stack because I think the "retro" look buried the lede last time.

The Problem with Web Desktops:

We've all seen cool Windows 95/98 JS recreations (like 98.js.org), but they all hit the same wall: the browser inside them is fake. You can't load modern sites (Google, YouTube, HN) inside an iframe due to X-Frame-Options, CORS, and mixed content security policies.

The Solution (BrowserBox):

This project is a frontend for a tool I'm building called BrowserBox.

Remote Isolation: When you open IE in this demo, you aren't opening an iframe. You are spinning up a remote browser session in a Docker container on my server.

Streaming: The view is streamed back to the client (using standard web technologies), and your clicks/keystrokes are sent to the server.

Result: You get a "real" internet connection inside the simulation that bypasses all client-side restriction. You can watch YouTube or browse HN from inside the virtual desktop.

The Stack:

Backend: Node.js / Puppeteer-ish control (raw CDP, custom bookkeeping)

Frontend: Vanilla JS / Custom retro UI framework

Infrastructure: Dockerized browser instances

I built this because I missed the "Wild West" feel of the 90s web, but I also wanted to show that remote browser isolation doesn't have to be clunky enterprise-ware.

Give the browser a try (sound on for full immersion) and let me know if the latency holds up for you.

I think it would be really cool to have a Windows 98 running in browser and an agent to proxy all interaction to real desktop and web:

* It proxies web sites and optinally modifies them to look era-appropriate.

* It can generate missing native apps as shims to apps on your host or web sites. Like, cmd that's actually a pwsh. Or VSCode that looks like Borland C++ Builder.

* Streaming media like Bandcamp or Spotify inside a real WinAmp 2.x.

Ha! That's a cool idea. Regarding proxying web sites: that is essentially what this is, but the agent is a "browser proxy" so the web requests go through a browser and the rendering happens on the browser in the server it's on.

BrowserBox actually has a crazy win9x compatibility mode that opens an IE6 compatible client. The issue with native Win 98 browsers is not so much the web content support (which is, admittedly, very basic), it's the lack of modern cipher suites in HTTPS, so an actual proxy would need serve everything HTTP.

For "era-appropriateness" you could add a Chrome extension to BrowserBox that gracefully downgraded all pages to look antique but doing so in a way that can interface with DOM and JS directly - a fine-grained level of control is where browser-based approaches have advantages over rewriting-proxies.

In the past I experimented with running Electron apps heedlessly on servers and have BrowserBox connect to the apps so you could stream these apps. However it was limited to Electron (or other browser-as-render-engine type GUI apps). It was tricky tho due to Electron quirks and never that compelling for me.