## Thanks for contributions - PR [#249](https://github.com/NeuralNomadsAI/CodeNomad/pull/249) "feat(speech): add prompt voice input" by [@shantur](https://github.com/shantur) - PR [#243](https://github.com/NeuralNomadsAI/CodeNomad/pull/243) "feat(i18n): Hebrew locale + full RTL support" by [@MusiCode1](https://github.com/MusiCode1) - PR [#241](https://github.com/NeuralNomadsAI/CodeNomad/pull/241) "feat(lazy loading): Implement virtual list with virtua" by [@pixellos](https://github.com/pixellos) - PR [#240](https://github.com/NeuralNomadsAI/CodeNomad/pull/240) "fix(tauri): force Windows process tree shutdown" by [@pascalandr](https://github.com/pascalandr) - PR [#239](https://github.com/NeuralNomadsAI/CodeNomad/pull/239) "perf(ui): split right panel and secondary viewer chunks" by [@pascalandr](https://github.com/pascalandr) - PR [#238](https://github.com/NeuralNomadsAI/CodeNomad/pull/238) "perf(ui): defer locale and overlay bundles" by [@pascalandr](https://github.com/pascalandr) - PR [#236](https://github.com/NeuralNomadsAI/CodeNomad/pull/236) "Suppress OS notifications for subagent (child) sessions" by `@app/codenomadbot` - PR [#235](https://github.com/NeuralNomadsAI/CodeNomad/pull/235) "fix(ui): unwrap pasted placeholders in slash commands" by `@app/codenomadbot` - PR [#232](https://github.com/NeuralNomadsAI/CodeNomad/pull/232) "fix(tauri): stop CLI process group on exit" by `@app/codenomadbot` - PR [#229](https://github.com/NeuralNomadsAI/CodeNomad/pull/229) "feat(ui): add RTL support for Hebrew/Arabic text" by [@MusiCode1](https://github.com/MusiCode1) - PR [#227](https://github.com/NeuralNomadsAI/CodeNomad/pull/227) "fix(tauri): improve Windows desktop runtime behavior" by [@pascalandr](https://github.com/pascalandr) - PR [#226](https://github.com/NeuralNomadsAI/CodeNomad/pull/226) "fix(tauri): restore desktop menu controls and fullscreen shortcut" by [@pascalandr](https://github.com/pascalandr) - PR [#225](https://github.com/NeuralNomadsAI/CodeNomad/pull/225) "fix(tauri): restore external links in the folder picker" by [@pascalandr](https://github.com/pascalandr) - PR [#224](https://github.com/NeuralNomadsAI/CodeNomad/pull/224) "fix(tauri): sync server UI bundle during prebuild" by [@pascalandr](https://github.com/pascalandr) - PR [#215](https://github.com/NeuralNomadsAI/CodeNomad/pull/215) "perf(ui): lazy-load markdown and defer diff rendering" by [@pascalandr](https://github.com/pascalandr) ## Highlights - **Voice-first conversations**: Start prompts with voice input, configure speech behavior from settings, and listen back to assistant responses with message playback and conversation playback controls. - **A complete Hebrew + RTL experience**: CodeNomad now ships with a full Hebrew locale and much broader right-to-left support, making the app feel natural for Hebrew users while improving Arabic text rendering too. - **A much faster experience in long chats**: The new virtualized message list, deferred markdown and diff rendering, and more selective loading for heavy UI surfaces make large sessions feel noticeably smoother. ## What's Improved - **More flexible speech controls**: Speech settings and playback modes now adapt better to different browsers and platform capabilities. - **Cleaner prompt workflow**: The prompt includes a quick clear action, a simpler recording indicator, and a more polished mic control layout. - **Faster startup and lighter heavy views**: Locale bundles, overlays, right-panel viewers, picker flows, markdown, and diff surfaces all load more lazily to reduce upfront UI work. - **Less notification spam**: Subagent sessions no longer fire OS notifications, so important interruptions are easier to notice. - **Better RTL behavior across the whole interface**: Session names, tool outputs, markdown blocks, file views, selectors, and layout controls behave more consistently in right-to-left contexts. ## Fixes - **More reliable Windows desktop behavior**: Process cleanup is stronger during app shutdown, background CLI process trees are terminated more reliably, desktop identity/metadata is aligned more cleanly, and stray console windows are hidden during startup and exit. - **Cleaner shutdown on macOS and Linux**: Desktop quit/close now stops the spawned CLI process group more reliably, reducing leftover background processes after exit. - **Restored desktop actions**: External links in the folder picker work again, and the desktop View/Window controls plus the fullscreen shortcut are back. - **More stable streaming and scrolling**: Reasoning streams stay pinned more consistently, follow behavior is less jumpy, spacing is cleaner in virtualized conversations, and session switching retains position more smoothly. - **Safer slash command pasting**: Pasted placeholders are resolved correctly before slash commands run, so long pasted inputs behave like normal prompts. - **More dependable desktop packaging**: Tauri prebuild now refreshes the server UI bundle correctly, which avoids packaged desktop builds picking up stale UI assets. - **Clearer speech compatibility handling**: Streaming playback limitations are surfaced more cleanly instead of failing in a confusing way. ### Contributors - [@pascalandr](https://github.com/pascalandr) - [@MusiCode1](https://github.com/MusiCode1) - [@pixellos](https://github.com/pixellos)
CodeNomad
A fast, multi-instance workspace for running OpenCode sessions.
CodeNomad is built for people who live inside OpenCode for hours on end and need a cockpit, not a kiosk. It delivers a premium, low-latency workspace that favors speed, clarity, and direct control.
Manage multiple OpenCode sessions side-by-side.
📸 More Screenshots
Global command palette for keyboard-first control.
Getting Started
Choose the way that fits your workflow:
🖥️ Desktop App (Recommended)
The best experience. A native application (Electron-based) with global shortcuts, deeper system integration, and a dedicated window.
- Download: Grab the latest installer for macOS, Windows, or Linux from the Releases Page.
- Run: Install and launch like any other app.
🦀 Tauri App (Experimental)
We are also working on a lightweight, high-performance version built with Tauri. It is currently in active development.
- Download: Experimental builds are available on the Releases Page.
- Source: Check out
packages/tauri-appif you're interested in contributing.
💻 CodeNomad Server
Run CodeNomad as a local server and access it via your web browser. Perfect for remote development (SSH/VPN) or running as a service.
npx @neuralnomads/codenomad --launch
Full server/CLI documentation (flags + env vars, TLS, auth, remote access):
To see all available options:
npx @neuralnomads/codenomad --help
🧪 Dev Releases
Bleeding-edge builds are published as GitHub pre-releases and are generated automatically from the dev branch.
npx @neuralnomads/codenomad-dev --launch
Highlights
- Multi-Instance: Juggle several OpenCode sessions side-by-side with tabs.
- Long-Session Native: Scroll through massive transcripts without hitches.
- Command Palette: A single global palette to jump tabs, launch tools, and control everything.
- Deep Task Awareness: Monitor background tasks and child sessions without losing flow.
Requirements
- OpenCode CLI: Must be installed and available in your
PATH. - Node.js 18+: Required if running the CLI server or building from source.
Troubleshooting
macOS says the app is damaged
If macOS reports that "CodeNomad.app is damaged and can't be opened," Gatekeeper flagged the download because the app is not yet notarized. You can clear the quarantine flag after moving CodeNomad into /Applications:
xattr -l /Applications/CodeNomad.app
xattr -dr com.apple.quarantine /Applications/CodeNomad.app
After removing the quarantine attribute, launch the app normally. On Intel Macs you may also need to approve CodeNomad from System Settings → Privacy & Security the first time you run it.
Linux (Wayland + NVIDIA): Tauri AppImage closes immediately
On some Wayland compositor + NVIDIA driver setups, WebKitGTK can fail to initialize its DMA-BUF/GBM path and the Tauri build may exit right away.
Try running with one of these environment variables:
# Most reliable workaround (can reduce rendering performance)
WEBKIT_DISABLE_DMABUF_RENDERER=1 codenomad
# Alternative for some Wayland setups
__NV_DISABLE_EXPLICIT_SYNC=1 codenomad
If you're running the Tauri AppImage and want the workaround applied every time, create a tiny wrapper script on your PATH:
#!/bin/bash
export WEBKIT_DISABLE_DMABUF_RENDERER=1
exec ~/.local/share/bauh/appimage/installed/codenomad/CodeNomad-Tauri-0.4.0-linux-x64.AppImage "$@"
Upstream tracking: https://github.com/tauri-apps/tauri/issues/10702
Architecture & Development
CodeNomad is a monorepo split into specialized packages. If you want to contribute or build from source, check out the individual package documentation:
| Package | Description |
|---|---|
| packages/electron-app | The native desktop application shell. Wraps the UI and Server. |
| packages/server | The core logic and CLI. Manages workspaces, proxies OpenCode, and serves the API. |
| packages/ui | The SolidJS-based frontend. Fast, reactive, and beautiful. |
Quick Build
To build the Desktop App from source:
- Clone the repo.
- Run
npm install(requires pnpm or npm 7+ for workspaces). - Run
npm run build --workspace @neuralnomads/codenomad-electron-app.

