|
Some checks failed
Release Binaries / release (push) Has been cancelled
## Thanks for contributions - [@shantur](https://github.com/shantur): [#535](https://github.com/NeuralNomadsAI/CodeNomad/pull/535), [#556](https://github.com/NeuralNomadsAI/CodeNomad/pull/556), [#557](https://github.com/NeuralNomadsAI/CodeNomad/pull/557), [#562](https://github.com/NeuralNomadsAI/CodeNomad/pull/562), [#563](https://github.com/NeuralNomadsAI/CodeNomad/pull/563), [#564](https://github.com/NeuralNomadsAI/CodeNomad/pull/564), [#565](https://github.com/NeuralNomadsAI/CodeNomad/pull/565), [#567](https://github.com/NeuralNomadsAI/CodeNomad/pull/567) - [@pascalandr](https://github.com/pascalandr): [#533](https://github.com/NeuralNomadsAI/CodeNomad/pull/533), [#551](https://github.com/NeuralNomadsAI/CodeNomad/pull/551) - [@JDis03](https://github.com/JDis03): [#484](https://github.com/NeuralNomadsAI/CodeNomad/pull/484), [#536](https://github.com/NeuralNomadsAI/CodeNomad/pull/536) - [@aayurt](https://github.com/aayurt): [#552](https://github.com/NeuralNomadsAI/CodeNomad/pull/552) ## Highlights - **Compact mode is much better on mobile**: The message UI has been redesigned for compact layouts, with cleaner controls and a denser conversation view that works better on smaller screens. - **Tool output is easier to control**: New tool-level expansion settings let you choose how much tool-call detail you want to see, making busy sessions easier to scan. - **Streaming output feels steadier**: Bash output, tool output, and assistant responses now stay pinned more reliably while streaming, reducing jumps and missed updates. - **Project sessions are scoped more accurately**: Session lists now respect the active project more consistently, so switching projects is less likely to show unrelated sessions. - **Tab closing is more dependable**: Closing tabs has been tightened up to avoid cases where the wrong tab behavior could interrupt your workflow. ## What’s Improved - **Cleaner compact conversation layout**: Message blocks, message sections, tool calls, permissions, questions, todos, and task output have all been polished for a more readable compact experience. - **More useful tool-call presentation**: Tool calls now have a stronger registry-backed rendering path, clearer titles, improved status display, and better per-tool output handling. - **Better follow behavior near the bottom of sessions**: The session view now tracks bottom-follow intent more carefully, helping the app stay with new output when you expect it to. - **Smoother live session creation**: Session-created events from the live event stream are now handled directly, so new sessions appear more reliably without manual refreshes. - **Improved permission denial feedback**: Denied permissions now produce simpler, less noisy feedback in the conversation. ## Fixes - **More reliable autoscroll during long responses**: Hold-mode assistant autoscroll, message-part tool output autoscroll, and streaming bash output pinning were stabilized. - **Less duplicated streaming text**: SSE part deltas are throttled and buffered more carefully to prevent stale delta text from being duplicated in streamed messages. - **Better session list isolation**: Project session list requests are now scoped so sessions from one project do not bleed into another project’s list. - **More stable tab management**: A tab close bug was fixed to make multi-session navigation safer. - **Release pipeline reliability**: Winget release automation is now wired into the release workflow so Windows package updates can be published more consistently. ## Docs - **New contributor guide**: A `CONTRIBUTING.md` guide was added to help new contributors set up the project and understand the development workflow. - **Winget release docs updated**: Supporting documentation for Winget release automation was refreshed. ### Contributors - [@shantur](https://github.com/shantur) - [@pascalandr](https://github.com/pascalandr) - [@JDis03](https://github.com/JDis03) - [@aayurt](https://github.com/aayurt) **Full Changelog**: [v0.17.0...v0.18.0](https://github.com/NeuralNomadsAI/CodeNomad/compare/v0.17.0...v0.18.0) ## Merged Pull Requests ### [@shantur](https://github.com/shantur) - PR [#535](https://github.com/NeuralNomadsAI/CodeNomad/pull/535) “fix(ui): simplify permission denial feedback” - PR [#556](https://github.com/NeuralNomadsAI/CodeNomad/pull/556) “fix(ui): keep streaming bash output pinned” - PR [#557](https://github.com/NeuralNomadsAI/CodeNomad/pull/557) “WIP: Compact mode message UI redesign” - PR [#562](https://github.com/NeuralNomadsAI/CodeNomad/pull/562) “fix(ui): handle session created SSE events” - PR [#563](https://github.com/NeuralNomadsAI/CodeNomad/pull/563) “feat(ui): Add tool level expansion settings.” - PR [#564](https://github.com/NeuralNomadsAI/CodeNomad/pull/564) “Improve compact mobile UI controls” - PR [#565](https://github.com/NeuralNomadsAI/CodeNomad/pull/565) “fix(ui): scope project session list requests” - PR [#567](https://github.com/NeuralNomadsAI/CodeNomad/pull/567) “fix(ui): keep message-part tool output auto-scroll synced” ### [@pascalandr](https://github.com/pascalandr) - PR [#533](https://github.com/NeuralNomadsAI/CodeNomad/pull/533) “fix: stabilize hold-mode assistant autoscroll” - PR [#551](https://github.com/NeuralNomadsAI/CodeNomad/pull/551) “fix: wire Winget automation into release pipeline” ### [@JDis03](https://github.com/JDis03) - PR [#484](https://github.com/NeuralNomadsAI/CodeNomad/pull/484) “docs: add CONTRIBUTING.md guide for new contributors” - PR [#536](https://github.com/NeuralNomadsAI/CodeNomad/pull/536) “fix(ui): throttle SSE part deltas and prevent stale delta text duplication” ### [@aayurt](https://github.com/aayurt) - PR [#552](https://github.com/NeuralNomadsAI/CodeNomad/pull/552) “Bugfix/tab close bug” |
||
|---|---|---|
| .github | ||
| .opencode | ||
| dev-docs | ||
| docs | ||
| images | ||
| packages | ||
| scripts | ||
| temp | ||
| .gitignore | ||
| AGENTS.md | ||
| BUILD.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
CodeNomad
The AI Coding Cockpit for OpenCode
CodeNomad transforms OpenCode from a terminal tool into a premium desktop workspace — built for developers who live inside AI coding sessions for hours and need control, speed, and clarity.
OpenCode gives you the engine. CodeNomad gives you the cockpit.
Features
- 🚀 Multi-Instance Workspace
- 🌐 Remote Access
- 🧠 Session Management
- 🎙️ Voice Input & Speech
- 🌳 Git Worktrees
- 💬 Rich Message Experience
- 🧩 SideCars
- ⌨️ Command Palette
- 📁 File System Browser
- 🔐 Authentication & Security
- 🔔 Notifications
- 🎨 Theming
- 🌍 Internationalization
Getting Started
🖥️ Desktop App
Available as both Electron and Tauri builds — choose based on your preference.
Download the latest installer for your platform from Releases.
| Platform | Formats |
|---|---|
| macOS | DMG, ZIP (Universal: Intel + Apple Silicon) |
| Windows | NSIS Installer, ZIP (x64, ARM64) |
| Linux | AppImage, deb, tar.gz (x64, ARM64) |
💻 CodeNomad Server
Run as a local server and access via browser. Perfect for remote development.
npx @neuralnomads/codenomad --password <your-password> --launch
Authentication required: The server requires a password on first run. You can pass it via
--password, theCODENOMAD_SERVER_PASSWORDenvironment variable, or create anauth.jsonfile (see Server Documentation).
Self-signed certificate: On first launch with HTTPS enabled (the default), your browser will show a "Your connection is not private" warning. This is expected — the server generates a local self-signed certificate automatically. Click Advanced → Proceed to localhost to continue. For local-only use without the warning, run with
--https=false --http=true.
See Server Documentation for flags, TLS, auth, and remote access.
🧪 Dev Releases
Bleeding-edge builds from the dev branch:
npx @neuralnomads/codenomad-dev --password <your-password> --launch
SideCars
SideCars let you open local web tools inside CodeNomad as tabs.
Configuration
- Name: Display name used in CodeNomad
- Port: Local HTTP or HTTPS service running on
127.0.0.1:<port> - Base path: Mounted under
/sidecars/:id - Prefix mode:
- Preserve prefix forwards the full
/sidecars/:id/...path upstream - Strip prefix removes
/sidecars/:idbefore forwarding the request upstream
- Preserve prefix forwards the full
VSCode (OpenVSCode Server)
Run with Docker:
docker run -it --init -p 8000:3000 -v "${HOME}:${HOME}:cached" -e HOME=${HOME} gitpod/openvscode-server --server-base-path /sidecars/vscode
Add SideCar as:
- Name:
VSCode - Port:
http://127.0.0.1:8000 - Base path:
/sidecars/vscode - Prefix mode:
Preserve prefix
Terminal (ttyd)
Run with:
ttyd --writable zsh
Add SideCar as:
- Name:
Terminal - Port:
http://127.0.0.1:7681 - Base path:
/sidecars/terminal - Prefix mode:
Strip prefix
Requirements
- OpenCode CLI — must be installed and in your
PATH - Node.js 18+ — for server mode or building from source
Development
CodeNomad is a monorepo built with:
| Package | Description |
|---|---|
| packages/server | Core logic & CLI — workspaces, OpenCode proxy, API, auth, speech |
| packages/ui | SolidJS frontend — reactive, fast, beautiful |
| packages/electron-app | Desktop shell — process management, IPC, native dialogs |
| packages/tauri-app | Tauri desktop shell (experimental) |
Quick Start
git clone https://github.com/NeuralNomadsAI/CodeNomad.git
cd CodeNomad
npm install
npm run dev
Troubleshooting
macOS: "CodeNomad.app is damaged and can't be opened"
Gatekeeper flag due to missing notarization. Clear the quarantine attribute:
xattr -dr com.apple.quarantine /Applications/CodeNomad.app
On Intel Macs, also check System Settings → Privacy & Security on first launch.
Linux (Wayland + NVIDIA): Tauri App closes immediately
WebKitGTK DMA-BUF/GBM issue. Run with:
WEBKIT_DISABLE_DMABUF_RENDERER=1 codenomad
See full workaround in the original README.
Community
Built with ♥ by Neural Nomads · MIT License
