The RunAnywhere consumer app for the browser, written in TypeScript.
There is nothing to install. Open the page, pick a model, and it downloads into your browser and runs there through WebAssembly, with a WebGPU path where your browser and the model both support it. Whatever you type, say, or upload stays in the tab.
runanywhere-web-demo.vercel.app
Works in Chrome or Edge 86 and newer, Safari, and Firefox. Models are held in OPFS on your own disk, so the second visit starts instantly.
Captured in a Chromium browser with WebGPU active, running a small GGUF chat model through the llama.cpp WASM build.
The image files are in docs/screenshots/.
| Assistant | Streaming chat with tool calling and saved conversations |
| Talk | A full voice session: it listens, thinks, and answers out loud |
| Image and Live | Describe a photo, or a live camera frame |
| Transcribe | Batch and streaming speech to text |
| Read aloud | Speak any text you give it |
| Documents | Drop in .txt, .md, or .json and ask questions about them |
| Solutions | Two packaged pipelines: a voice agent and document Q&A |
| Benchmarks | One prompt at three token budgets, charted |
| Downloads | Model registry, disk usage, storage folder |
Segmentation and Diarization have views wired up, but no browser engine registers those capabilities yet, so both tabs show an unavailable placeholder.
The picker groups models by publisher, so you pick a name you recognise and then a size. It carries current-generation open models across chat, vision, speech, and embedding. Sizes shown are measured, not estimated.
A browser tab is the tightest of the four runtimes: WASM32 gives a 4 GiB address space and the runtime needs headroom inside it, so the picker reports what your browser can actually hold and marks the rest as out of reach rather than letting a download fail late.
git clone https://github.com/RunanywhereAI/runanywhere-web.git
cd runanywhere-web
npm ci
npm run dev # http://localhost:3000npm ci pulls the SDK and every WASM artifact with it. There is no separate WASM build step
and no Emscripten toolchain to install. You need Node 22.12 or newer.
The one thing that trips people up: the page has to be cross-origin isolated for
SharedArrayBuffer. The dev server and vercel.json both send COOP same-origin and COEP
require-corp, and public/coi-serviceworker.js covers hosts that cannot.
docs/DEVELOPMENT.md has the scripts table, the WASM artifact list,
deployment configuration, and troubleshooting.
Four npm packages, no monorepo checkout, no source aliases. What npm install resolves is
what the app runs against, currently 0.20.24.
index.html → main.ts → app.ts
boot screen SDK init shell, routing, views
│
┌─────────────────┴──────────────────┐
│ @runanywhere/web │ lifecycle + facades
└─────────────────┬──────────────────┘
│
┌─────────────────┼──────────────────┐
│ │ │
web-llamacpp web-onnx proto-ts
LLM · VLM STT·TTS·VAD·embed generated types
CPU + WebGPU CPU + WebGPU
│
▼
racommons.wasm, the same C++ core
that ships in the Swift, Kotlin, and Electron apps
Views call RunAnywhere.* and nothing deeper. They may import @runanywhere/web and
@runanywhere/web/browser, never /internal or /backend, and they do not reimplement
routing, storage, or inference rules in UI code.
Every surface has a URL fragment (#/vision, #/benchmarks), so a tab survives a refresh, a
pasted link, and the reload the isolation service worker performs on Safari.
| Reference | |
|---|---|
| Which SDK call each view makes | docs/reference/sdk-surface-by-view.md |
| WASM artifacts and how they are copied | docs/reference/wasm-artifacts.md |
| Building, deploying, troubleshooting | docs/DEVELOPMENT.md |
| Contributor conventions | AGENTS.md |
| Platform | Repo |
|---|---|
| iOS and macOS, Swift | runanywhere-ios |
| Android, Kotlin | runanywhere-android |
| Windows, Electron | runanywhere-electron |
| SDK monorepo | runanywhere-sdks |
| Documentation | docs.runanywhere.ai |
| Discord | discord.gg/N359FBbDVd |
RunAnywhere License, Apache 2.0 based with additional commercial-use terms. See LICENSE.





