Find a file
Shantur Rathore 93a31f9822
Some checks failed
Release Binaries / release (push) Has been cancelled
Release v0.20.0 - OpenCode V2, full-history navigation, worktrees and native browser previews (#781)
## Highlights

- **CodeNomad now runs on OpenCode V2**: Projects share the native
OpenCode service, so desktop windows and terminal clients can work with
the same session history. Closing CodeNomad leaves the shared service
running.
- **Long conversations stay usable**: Transcript memory is bounded,
full-history search finds content beyond the loaded messages, and the
timeline lets you jump across an entire conversation with contextual
previews.
- **Move work between Git worktrees**: Create and select native
worktrees, move a session family together, and retain the right project
and branch context as you switch tasks.
- **Ask a quick side question with `/btw`**: Get a separate, temporary
answer without interrupting the main session.
- **A more consistent workspace**: New light/dark palettes, clearer
conversation surfaces, responsive session actions, persistent
search/command windows, and View-menu panel toggles make the interface
easier to adapt.
- **Better attachments and visual feedback**: Device picking,
drag-and-drop, and clipboard attachments share one workflow; project
files remain available through `@` references. Images returned by MCP
and other tools now render directly in chat.

## Upgrading from 0.19.x

- **OpenCode V2 is required.** The technical minimum is **2.0.7**, which
supplies the native step-start timestamp used by the current event
reducer. **2.0.16** is the recommended and qualified runtime for this
release. V1 runtimes and the former V2 beta protocol are not supported.
- **Install and manage OpenCode from startup or Preferences.** CodeNomad
prefers an executable on PATH and can install into a shared user npm
location using bundled Node/npm. Terminal clients can use the same
installation.
- **Runtime installation and service restart are separate actions.**
Updating the CLI does not silently restart an already-running OpenCode
service. Compatible shared npm installations on OpenCode 2.0.15+ use
native upgrade for version changes, including live Windows executable
handling.
- **Upgrade remote CodeNomad servers to 0.20.0 for the new UI.** The
published UI manifest now requires server 0.20.0 instead of advertising
compatibility with the V1-based 0.19.x server.
- **Git enables the complete project/worktree experience.** If the
backend cannot find Git, directory-scoped conversations remain available
while Git-dependent functionality is unavailable.

## Sessions, history, and worktrees

- Full-history search, counts, selective cleanup, and global timeline
navigation work independently of the currently loaded transcript. Search
includes edit diffs stored in tool metadata.
- Large transcripts load bounded windows while preserving access to
complete content. Timeline markers retain tool identities, and
hover/focus previews show bounded Markdown excerpts.
- Session search uses flat results with optional subsessions; normal
browsing retains the parent/child hierarchy. Fork actions are available
after both user and assistant messages.
- Native worktree creation, discovery, and family moves use repository
ownership checks. Removing a worktree verifies and evacuates affected
sessions before deleting it.
- Worktree selectors open without waiting for a fresh Git scan, and
saved conversations restore before secondary Git panels and catalogs
finish loading.
- Stop and double Escape no longer accidentally restart a parent
session. Automatic empty-session cleanup verifies native content before
removing anything.
- Active-session model choices survive prompt admission, catalog
refreshes, and delayed responses instead of switching back unexpectedly.

## Composer, tools, and plugins

- Attach local-device files with the native picker, paste, or
drag-and-drop, and reference project files separately through `@`.
Attachment reads follow the active draft and session rather than
spilling into a newly selected conversation.
- MCP and specialized tool results can display returned images without
inserting image bytes into copied text, search, or speech.
- Global and Project plugin activation switches are separate, making the
scope of each change explicit. Plugin details are available from the
name tooltip.
- Native Forms support provider authentication and interactive requests.
Permission rejection feedback survives refreshes, and native background
Shells remain separate from interactive terminals.
- Profile environment variables are refreshed before each prompt, custom
command, or session shell request, including removal of previously
configured values.
- Browser previews and desktop automation give agents a visible
inspection-and-fix workflow with session/window targeting. Automation
tools are available without a Developer Mode toggle.

## Desktop continuity and interface

- Electron and Tauri support multiple UUID-backed windows with
independent tabs, drafts, attachments, selection, and view state over
one shared backend. Window restoration uses partitioned storage rather
than one monolithic snapshot.
- Startup prioritizes the active project and conversation, including
interrupted hydration and slow filesystem/Git discovery. Preferences
retain their own geometry, zoom, and navigation.
- Browser authentication can recover in place after a server restart
while preserving drafts, without replaying failed actions.
- Light/dark palette selections are independent of appearance mode.
Settings, message cards, the composer, and panels use more consistent
surfaces and controls.
- Search and command windows stay open during outside interactions. The
native View menu exposes panel and timeline toggles.
- Thinking, tool visibility, token sections, and compact headers are
clearer. System context updates are hidden by default; collapse
preferences also apply to single-step reasoning.
- User-supplied HTML displays as literal source rather than being
interpreted as chat markup.
- Turkish localization joins the existing languages, with updated
coverage for V2 features.

## Reliability and distribution

- Reconnection reconciles native session and pending-request state,
while slow event routing no longer blocks the shared stream or other
recipients.
- Windows Tauri fixes address window-state capture deadlocks, input
reentrancy, and native focus/menu responsiveness. Desktop startup avoids
interactive shell prompts that could block launch.
- Bundled Node is updated to 24.20.0 LTS, and desktop resources include
the Node/npm tools needed for first-run runtime setup.
- OpenCode setup keeps executable selection, runtime status,
installation/update, and service actions together in Preferences.
Diagnostics include clearer cross-platform server information.
- Provider usage fixes include credit-based z.ai coding-plan quotas and
refreshed session usage on native step/usage events.

## Thanks for contributions

Thanks to [@pascalandr](https://github.com/pascalandr),
[@markerikson](https://github.com/markerikson),
[@fitzgpt](https://github.com/fitzgpt),
[@Kondziosz](https://github.com/Kondziosz),
[@shantur](https://github.com/shantur), and
[@bluelovers](https://github.com/bluelovers).

GitHub will append the complete merged pull request and contributor list
to the generated release notes.

**Full Changelog**:
https://github.com/NeuralNomadsAI/CodeNomad/compare/v0.19.0...v0.20.0
2026-09-25 15:30:28 +01:00
.github feat(plugins): add scoped V2 plugin activation controls (#726) 2026-09-25 01:29:14 +02:00
.opencode chore(opencode): qualify 2.0.16 with aligned clients and plugin (#772) 2026-09-24 20:42:08 +02:00
dev-docs feat(plugins): add scoped V2 plugin activation controls (#726) 2026-09-25 01:29:14 +02:00
docs fix(release): preserve PR notes and validate WinGet access (#658) 2026-08-29 16:02:35 +01:00
images Move screenshots to correct folder 2025-11-21 21:59:58 +00:00
packages chore(release): prepare stable 0.20.0 (#780) 2026-09-25 16:23:41 +02:00
scripts fix(chat): display user HTML as literal source (#777) 2026-09-25 09:52:18 +02:00
temp Bump to v0.11.2 2026-02-17 18:47:21 +00:00
.gitignore chore: ignore local artifacts and add cloudflare lockfile 2026-01-22 16:42:47 +00:00
.node-version chore(desktop): upgrade bundled Node to 24.20.0 LTS (#679) 2026-09-19 22:01:30 +02:00
AGENTS.md fix(plugins): simplify activation controls UI (follow-up #726) (#778) 2026-09-25 12:45:51 +02:00
BUILD.md chore(desktop): upgrade bundled Node to 24.20.0 LTS (#679) 2026-09-19 22:01:30 +02:00
CONTRIBUTING.md feat(v2): manage session families across worktrees (#649) 2026-09-17 22:57:37 +02:00
DESKTOP_V2_COMPARISON.md fix(opencode): support earlier and modern V2 runtime contracts (#695) 2026-09-16 23:48:08 +02:00
LICENSE chore(license): add MIT license 2026-02-02 11:22:49 +00:00
MIGRATION_V2.md fix(opencode): ground compatibility retirement in native contracts 2026-09-20 23:46:54 +02:00
package-lock.json chore(release): prepare stable 0.20.0 (#780) 2026-09-25 16:23:41 +02:00
package.json chore(release): prepare stable 0.20.0 (#780) 2026-09-25 16:23:41 +02:00
README.md fix(git): keep conversations usable without backend Git (#757) 2026-09-23 14:18:17 +02:00
THIRD_PARTY_NOTICES.md feat(usage): show provider quota in session status (#584) 2026-07-15 10:25:00 +01:00

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.

Multi-instance workspace


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 Tauri deb, Electron portable tar.gz (x64)

The Tauri deb is currently built and installation-tested on Ubuntu 24.04. Compatibility with older Debian-based distributions is not yet guaranteed.

💻 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, the CODENOMAD_SERVER_PASSWORD environment variable, or create an auth.json file (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.

Previews use token-scoped URLs inside opaque-origin sandboxes. Loopback HTTP native previews receive a dedicated .preview.localhost origin so root routes, POSTs, and live reload behave normally; HTTPS, LAN, and web hosts use the capability path. Element comments use a source-checked message bridge.

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/:id before forwarding the request upstream
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
  • Git — a prerequisite for full functionality (repository identity, Git operations and worktrees). Git must be executable in the CodeNomad backend's PATH; it is not bundled with the desktop installers.
  • Node.js 18+ — for server mode or building from source

On Windows, install Git for Windows with the option to use Git from the command line and third-party software. A per-user installation is sufficient and does not require administrator rights; install into a user-writable directory and make Git available in the user PATH. On macOS or Linux, follow the platform installation instructions. Fully quit and restart CodeNomad after installation so its backend inherits the updated PATH. For a remote server, install Git on the server host for the account running CodeNomad and restart that server process, not just the browser. A Git installation available only inside WSL does not satisfy the Windows backend's requirement.

Without Git, CodeNomad tolerates a degraded, directory-only mode. You can open a folder and talk to your agent, including asking it to help install Git. The backend supplies the agent with Git availability and backend platform context before prompts and custom commands; there is no blocking Git installation screen. Git operations and worktree management require Git. Session access is restricted to the explicitly opened physical folder; open another checkout separately to access its conversations. The agent's shell and the CodeNomad backend can run on different hosts, so installation help must target the backend account and environment. Git availability is rechecked on subsequent sends and the agent context is removed once it is available.


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-tauri

See full workaround in the original README.


Community

GitHub stars

CodeNomad star history

Built with ♥ by Neural Nomads · MIT License