NimbusCode is a browser IDE for learning and experimenting with code, without local compiler/runtime setup.
Everything runs on the frontend through WebAssembly-backed runtimes. There is no backend service, no server-side execution, and no API layer required to use the app.
Learning programming is often blocked by installation and toolchain setup. NimbusCode removes that friction:
- write code in the browser
- run it directly in the browser
- keep files locally in browser storage
- avoid backend infrastructure entirely
- You create/open files in the left explorer.
- Files open in editor tabs (Monaco).
- Runtime is detected from the file extension.
- Code executes in browser runtimes powered by WebAssembly.
- Output appears in the bottom terminal panel (including interactive input when supported).
For C/C++, NimbusCode compiles source to a WASM binary in-browser, then runs that binary in a WASI environment.
| Language | Extensions | Runtime mapping |
|---|---|---|
| JavaScript | .js, .mjs, .cjs |
quickjs |
| Python | .py |
python |
| C | .c |
clang |
| C++ | .cpp, .cc, .cxx |
clangpp |
| PHP | .php |
php-cgi |
| SQLite | .sql |
sqlite |
| Ruby | .rb |
ruby |
- VS Code-style split layout:
- left explorer
- editor area (tabbed)
- output console
- File + folder create/delete from explorer
- Inline file/folder creation input (no browser prompt)
- Monaco editor with Tokyo Night theming
- Language indicator + supported-languages dropdown
- Run button with runtime status
- Output terminal with clear action
- Settings button placeholder (non-functional)
- Icons via
lucide-react
Workspace files/folders are stored in IndexedDB:
- DB name:
nimbuscode-workspace - Object store:
entries - Keys: file/folder
path
This means your workspace stays in your browser between reloads, without any backend database.
- Bun
- Vite + React + TypeScript
- Monaco Editor (
@monaco-editor/react) - Split panes (
react-split) - WebAssembly runtimes + WASI execution (
@runno/runtime,@runno/wasi) - IndexedDB (browser local storage)
NimbusCode is frontend-only by design:
- no auth server
- no API server
- no code execution server
- no cloud database
You can host the built static files on any static hosting platform.
Runno needs SharedArrayBuffer, which only works when the deployed site is
cross-origin isolated.
Your deployed HTML response must include:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corpThis repo already includes:
vercel.jsonfor Vercel deploymentspublic/_headersfor platforms that support_headers(for example Netlify / Cloudflare Pages static headers)
After deploying, open browser devtools on the deployed app and verify:
window.crossOriginIsolated // should be trueInstall dependencies:
bun installStart dev server:
bun run devLint:
bun run lintBuild:
bun run buildPreview production build:
bun run preview- Initial runtime startup can take longer on first run (assets/runtime bootstrapping).
- Infinite loops can still lock the browser tab.
- Execution is local to the browser context; this is not a multi-user remote execution platform.