Skip to content

Project

DosKit

One click to run classic DOS software, nothing to install

Runs classic DOS software and demos directly in modern browsers using WebAssembly. No setup, no configuration.

WebAssemblyJavaScriptDOSEmulationjs-dos
1 GitHub stars<3s Load Time
Screenshot of DosKit

Architecture

flowchart LR
    subgraph Browser["Browser Runtime"]
        UI["UI Layer"]
        WASM["js-dos / DOSBox WASM"]
        Assets["Program Assets"]
    end
    subgraph Content["Library"]
        Packages["Curated DOS Packages"]
        Metadata["Game and Demo Metadata"]
    end
    UI --> WASM
    Assets --> WASM
    Packages --> Assets
    Metadata --> UI

01 — The Problem

Classic DOS software and demos represent an important part of computing history, but experiencing them requires technical knowledge to set up emulators, source disk images, and configure audio/video settings. This creates a barrier that prevents casual users from exploring vintage computing culture.

02 — The Solution

Built a WebAssembly platform that runs DOS software directly in modern browsers with zero installation. The emulator, the software, and its configuration are bundled together, so the user just clicks to run it.

The Results

  • One-click access to classic DOS software and demos
  • No installation, plugins, or configuration required
  • Touch controls enable mobile device support
  • Curated library of historically significant software

DosKit brings classic DOS software to modern browsers through WebAssembly emulation. Nothing to install and nothing to configure: you click, and it runs.

DOS Emulator Preview

[ SYSTEM OFFLINE ]
Power

Key Features

  • Instant Access: One-click access to DOS software
  • Browser-Based: Runs entirely in the browser via WebAssembly
  • Curated Library: Classic demos, games, and applications
  • Mobile Friendly: Touch controls for mobile devices

Technical Implementation

DosKit uses js-dos, a WebAssembly port of DOSBox, to run x86 DOS binaries directly in the browser:

const dos = await Dos(canvas, {
  wdosboxUrl: '/wdosbox.js',
  autoStart: true
});

await dos.fs.extract('/software.zip');
await dos.main(['-c', 'SOFTWARE.EXE']);

The emulator handles CPU emulation, memory management, and audio/video output, providing an authentic DOS experience without any native installation.

Why this was worth building

A lot of classic software preservation efforts are technically impressive but still inaccessible to most people. If someone has to learn emulator configuration before they can try a demo, the preservation effort has not fully crossed into public accessibility. DosKit was built to reduce that gap to a single click.

Product and engineering tradeoffs

Running old software in the browser sounds simple until you account for startup time, asset packaging, keyboard handling, audio behavior, and mobile input. The experience had to feel immediate enough for casual exploration while still preserving the character of the original software.

That led to a few practical decisions:

  • keep the launch path short so users reach the software quickly
  • package software and emulator configuration together instead of expecting manual setup
  • support touch controls for devices that do not have a physical keyboard
  • curate the library so the first-run experience highlights software that is historically interesting and technically representative

Product framing

The hard part of DosKit was product framing, not emulation. WebAssembly turns a fiddly setup process into a plain web page, and a curated library keeps a niche corner of computing approachable.

Outcome

What you get is a preservation product that still feels current: fast launch, zero installation, cross-device support, and a clear reason the software matters. The emulator core, the software, and its configuration all ship together as one web page that loads in under three seconds.

Was this helpful?

Want to learn more?

Ask can answer questions about this project's implementation, technologies, and more.