Electron desktop playground for running code in one split-screen workspace. Runbox ships with JavaScript ready to go, and now includes the plumbing for on-demand Python runtime installs without requiring the user to manage Python manually.
- Electron
- React
- TypeScript
- Monaco Editor
npm install
npm run dev
npm run build
npm run package:mac
npm run package:win- Split editor/output layout
- Monaco-based code editor
- Manual run and auto-run
- Separate stdout and stderr panels
- Timeout and stop controls
- Persistent tabs and layout restore
- JavaScript execution in an isolated child process
- Python runner support
- In-app runtime installation flow for languages that are not bundled yet
- GitHub Releases auto-update hooks
src/renderer: UI, editor, output panelssrc/preload: safe bridge between renderer and Electron mainsrc/main: window lifecycle, IPC, execution manager, runtime managersrc/main/runners: language adapterssrc/main/runtimes: language runtime detection and installationsrc/shared: IPC payload and event types
- Create a runner in
src/main/runners. - Return a
PreparedRunwith command, args, and cleanup logic. - If the language needs its own runtime, add a controller in
src/main/runtimes. - Register the runner in
src/main/runners/registry.ts. - The UI will pick it up from the shared language registry response.
Runbox expects Python runtime archives to be hosted by you and downloaded from inside the app when the user selects Python.
- Open
src/main/runtimes/python-config.ts. - Fill in the
urlfor each supported platform. - Optional but recommended: fill in the
sha256checksum. - Package each archive so the extracted layout matches the configured
entryPoint.
Expected archive layout examples:
macOS zip
python/
bin/
python3
Windows zip
python/
python.exe
Notes:
- In development, Runbox will fall back to
RUNBOX_PYTHON_PATHor apython3/pythoncommand found on your PATH. - In packaged builds, users can select
Pythonin the language dropdown and click the right-side install action to fetch the runtime. - The same install flow can be reused later for Java, Go, or other languages.
Runbox now includes an update manager wired for GitHub Releases via electron-updater.
- Set
runboxUpdater.ownerandrunboxUpdater.repoinpackage.json. - Publish packaged builds to that GitHub repository's Releases page.
- Use
npm run package:macandnpm run package:winto generate installer artifacts.
Notes:
- macOS auto-update needs the
ziptarget alongsidedmg, which is already enabled. - In dev mode, update checks stay disabled. Test updates with a packaged build.