KDE Plasma on the web

a full Linux desktop in one browser tab. rvwasm boots Debian with KDE Plasma on your own computer: Konsole, Dolphin, Kate, apt-get install, sound, GPU drawing and video. nothing is streamed from a server.

Start Plasma

one click boots it in this tab. free, no account. the first start downloads the parts of the disk it needs. prefer zero clicks? plasmaontheweb.com/desktop boots at once.

The KDE Plasma desktop running in a browser tab on rvwasm, with Konsole, Kate, Dolphin and System Settings tiled in four windows above the panel.
a real capture: Plasma with Konsole, Kate, Dolphin and System Settings, in a Chrome tab.

what is rvwasm

rvwasm is a Linux desktop on the web. it runs Debian (riscv64) with the KDE Plasma desktop inside a single Chrome tab, so you can use KDE Plasma in the browser with nothing to install. there is no remote screen and no virtual machine in a data centre: the machine runs on your computer, inside the page, on your CPU and GPU.

the Plasma shell is compiled straight to WebAssembly, so this is a real Plasma web port, not a video of a desktop. the applications are Debian's ordinary riscv64 programs, run through a JIT that translates them to WebAssembly while they run.

the project is called rvwasm; Plasma is what it runs. it is real enough to open a terminal, install packages with apt-get, play sound and run Firefox.

how it works

the browser tab is the computer. a Linux kernel built for WebAssembly runs in it, and Debian's programs run on that kernel. small services of ours connect the programs to the page, which draws the windows, runs the GPU commands, plays the sound and decodes the video.

how rvwasm fits together Layers from top to bottom: the browser tab provides the display, GPU, video decoder, audio and network. Under it, a Linux kernel compiled to WebAssembly. Under that, the Plasma shell running natively in WebAssembly, and Debian riscv64 programs running through the rv JIT. YOUR BROWSER TAB = THE HARDWARE displayWebGL canvas gpuWebGL2 / WebGPU videoWebCodecs audioAudioWorklet networkWebSocket to relay one block of shared memory LINUX KERNEL, COMPILED TO WEBASSEMBLY linux-wasm: no MMU, each process a Web Worker window, gpu, sound and video services in JS NATIVE WEBASSEMBLY Plasma desktop plasmashell, panel, launcher, widgets Qt 6 + KDE Frameworks compiled to WebAssembly no emulation: stays fast DEBIAN + RV JIT Konsole, Dolphin, Kate, Settings... unmodified riscv64 programs, translated to WebAssembly as they run
  • kernel: Joel Severin's linux-wasm, Linux compiled to 64-bit WebAssembly, with our patches. each process is a Web Worker sharing one memory.
  • the jit, rv: runs Debian's unmodified riscv64 binaries by turning hot code into WebAssembly, which the browser compiles to machine code. RISC-V is simple and regular, so it translates cheaply.
  • native desktop: the Plasma shell skips emulation entirely, so the panel, menus and windows stay responsive.
  • disks: the system disk is fetched in 1 MiB pieces as the machine reads them and kept in your browser. your changes and home folder never leave it.
  • the server only hands out those files and a restricted network relay. it does not run your desktop.

what works

a Debian riscv64 system with the full KDE desktop, not a demo window.

plasma and apps

the Plasma 6 desktop with panel, launcher and system tray, plus Konsole, Dolphin, Kate, System Settings, Firefox ESR and Chromium.

worksQt 6KDE Frameworks 6

apt and packages

apt-get install reaches Debian's riscv64 archive. pip, npm, cargo and git clone from GitHub work too.

worksthrough the relay

audio

the kernel has a sound card; PulseAudio plays through an AudioWorklet to your speakers. Chrome needs one click on the page first.

worksPulseAudioAudioWorklet

gpu

programs draw with OpenGL through Mesa, and the commands run on your real GPU through WebGL2, or WebGPU with ?exec=webgpu.

worksWebGL2WebGPU

video

players hand compressed video to the page, which decodes it with WebCodecs on your hardware decoder (H.264, HEVC, VP8, VP9, AV1). showing the picture in the player's window is still being finished.

in progressWebCodecs

your files

the home folder and every change are kept in your browser's private storage, so a second visit picks up where you left off.

worksstays in your browser

known limits: no fork() (programs use vfork), no systemd, Chrome only, and programs under the JIT run slower than natively.

requirements

rvwasm runs on your computer, so your computer sets the speed. per-core speed matters most: the JIT and the desktop are mostly single-threaded per task.

browser
current desktop Chrome, Edge or Brave. Firefox, Safari, phones and tablets are not supported.
cpu
fast single-core performance: Apple M1 or newer, a recent Intel Core or AMD Ryzen, at least 4 cores (8 or more is better).
memory
16 GB of RAM recommended. the tab uses 4 to 8 GB with the desktop; 8 GB works for a light session.
disk
about 5 GB free for the browser's copy of the system disk.
gpu
any GPU with WebGL2. WebGPU is better for ?exec=webgpu.

low-power laptops and Chromebooks boot it, but heavy programs such as Firefox, Chromium and compilers will be slow there.

network allowlist

the machine reaches the internet only through a relay, and this public relay is restricted on purpose so the demo cannot be used for spam or scanning. DNS answers only for allowlisted domains, connections go only to the addresses those names resolved to, on ports 80 and 443, with per-visitor limits.

the allowlist covers installing software:

deb.debian.orgsecurity.debian.orgpypi.orgfiles.pythonhosted.orgregistry.npmjs.orggithub.comcrates.io

so apt-get install, pip install, npm install and git clone from GitHub (and its download hosts) work. general web browsing from inside the machine does not, and neither do mail, SSH or other ports.

faq

What is rvwasm?

rvwasm is a Linux desktop that runs inside a browser tab. It boots Debian (riscv64) with KDE Plasma on linux-wasm, a Linux kernel compiled to WebAssembly, and runs Debian's programs through our own riscv64-to-WebAssembly JIT. rvwasm is the project; Plasma is what it runs.

Is this really KDE Plasma running in the browser?

Yes. The desktop shell (plasmashell, built on Qt 6.8, KDE Frameworks 6 and Plasma 6.3) is compiled straight to WebAssembly and runs natively in your tab, so it is a web port of the Plasma desktop. Applications such as Konsole, Dolphin, Kate and System Settings are Debian's own riscv64 builds, run through the JIT.

Is the desktop streamed from a server, like a remote desktop?

No. Nothing is streamed. The machine runs on your own computer, inside the page, using your CPU, GPU, sound output and hardware video decoder. The server only hands out files and, optionally, a restricted network relay.

Is it free? Do I need an account?

It is free to use and needs no account and no installation: open the page and click Start Plasma.

Is this official KDE software?

No. This is an unofficial project and is not affiliated with or endorsed by KDE e.V. KDE and Plasma are trademarks of KDE e.V. The desktop it runs is KDE's free software.

Which browsers and computers does it work on?

Current desktop Chrome, Edge or Brave. Firefox, Safari, phones and tablets are not supported. A computer with fast single-core performance (Apple M1 or newer, a recent Intel Core or AMD Ryzen) and 16 GB of RAM is recommended; the tab uses 4 to 8 GB with the desktop. About 5 GB of free disk space is used for the browser's copy of the system disk.

Why does the first start take a while?

The system disk is fetched in 1 MiB pieces as the machine reads them and is kept in your browser, so the first visit downloads the parts it uses (hundreds of megabytes up to a few gigabytes). Later visits start from what is already stored.

Can I install software with apt-get?

Yes. apt-get install works through the network relay, as do pip install, npm install, cargo and git clone from GitHub. The relay only allows a short list of domains, so general web browsing from inside the machine does not work.

Can I browse the web inside the desktop?

Not on the public site. Firefox and Chromium are installed, but the machine can only reach the allowlisted domains (Debian's archive, PyPI, npm, GitHub and crates.io), on ports 80 and 443.

Are my files saved?

Your home folder and everything you change on the disk are stored in your own browser, in its Origin Private File System, and never on the server. They stay until you clear this site's data.

How fast is a Linux desktop in a browser tab?

The Plasma shell, the GPU, sound and video paths run at close to native speed in WebAssembly. Debian's riscv64 programs run through the JIT, which is several times faster than other WebAssembly emulators but slower than native, so heavy programs such as Firefox, Chromium and compilers feel slow on a low-power laptop.

credits

rvwasm stands on a lot of free software.

  • linux-wasm by Joel Severin: the Linux kernel compiled to WebAssembly that everything runs on.
  • Debian: the riscv64 system, its packages and its archive.
  • KDE: Plasma, KDE Frameworks, Konsole, Dolphin, Kate and System Settings.
  • Qt, Mesa and virglrenderer, PulseAudio, mpv and libva, BusyBox, musl and LLVM.
rvwasm: plasma on the web
link to us:<a href="https://plasmaontheweb.com/"><img src="https://plasmaontheweb.com/assets/button-88x31.png" width="88" height="31" alt="rvwasm"></a>