OpenCherry Desktop is an open-source desktop application designed to orchestrate multiple Git repositories across various AI coding agents from a single interface inspired by VS Code's Source Control panel. It streamlines workflow management for developers working with AI-assisted coding tools.
Key Features:
Orchestrate multiple Git repositories and AI coding agents (Claude Code, OpenCode, Codex, Gemini CLI, Aider) in one place.
Multi-repo management: Register, track, and manage multiple repositories from a unified interface.
Agent detection and classification: Identify and categorize running AI coding agents for efficient workflow coordination.
VS Code-like source control interface: Experience familiar Git operations with a modern, intuitive design.
Cross-platform support: Primarily built for Ubuntu/GNOME, with secondary support for macOS and Windows via Tauri 2.
SQLite-based persistence: Maintain tracked repositories and configurations across sessions.
Audience & Benefit:
Ideal for developers working on multiple projects who seek to leverage AI coding tools in parallel. OpenCherry enhances productivity by centralizing Git repository management and AI agent orchestration, enabling efficient workflow coordination.
Available via winget for easy installation.
README
OpenCherry π
> Ubuntu/GNOME-first multi-repo Γ multi-agent control tower for AI-assisted coding.
OpenCherry is an open source desktop app that lets you orchestrate many Git
repositories across many AI coding agents (Claude Code, OpenCode, Codex,
Gemini CLI, Aider, β¦) from a single VS Code Source Controlβstyle interface.
Status: alpha. Usable for the current multi-repo Git + agent-correlation MVP, with Ubuntu/GNOME as the primary target and rough edges still expected.
Why
Existing AI coding tools assume one repo, one agent, one terminal at a time.
Real work spans many repos and benefits from parallel agents. OpenCherry is the
missing dashboard.
The closest neighbour is superset-sh/superset,
which targets macOS only. OpenCherry targets Ubuntu/GNOME first, with macOS
and Windows as supported secondary platforms via Tauri 2.
Additional crates (opencherry_inject, opencherry_commit_msg,
opencherry_providers, opencherry_watcher, opencherry_persistence,
opencherry_settings) will be extracted as the codebase grows.
Development
Quick Start (Recommended)
The easiest way to set up the project is using the provided setup script and just task runner.
WebKit (the WebView used by Tauri) ships with macOS, so there is nothing else
to install for the GUI.
System dependencies (Windows)
Microsoft Visual Studio C++ Build Tools (MSVC linker)
WebView2 runtime (preinstalled on Windows 10/11)
git2 builds with vendored-libgit2, so no system libgit2 or OpenSSL is
needed on any platform.
Toolchain (all platforms)
Rust stable (1.80+) via rustup
Node.js 20+
pnpm 9+
Run dev shell
pnpm -C apps/desktop install
pnpm -C apps/desktop tauri dev
Validate
just check
Packaging & local install
OpenCherry ships as unsandboxed packages β no store, no auto-updater. The app
spawns external AI CLI agents and manages Git repos in arbitrary filesystem
locations, so an unsandboxed package is the right fit; Flatpak/Snap are deferred
(Snap with confinement: classic is the likely future route). Linux releases
are published as .AppImage, .deb, and .rpm; macOS as .dmg; Windows as an
NSIS .exe. Every release asset ships with a matching .sha256 checksum.
Quick install (one command)
The fastest way to get OpenCherry on Linux (x86_64):
curl -fsSL https://raw.githubusercontent.com/4nrry/opencherry/main/scripts/install.sh | sh
This resolves the latest .AppImage for your architecture, verifies its
SHA-256, installs it to ~/.local/bin/opencherry, and adds an application-menu
entry. AppImages need FUSE at runtime β if launch fails, install it with
sudo apt install libfuse2 (Debian/Ubuntu) or run
APPIMAGE_EXTRACT_AND_RUN=1 opencherry.
Build the .deb
The build needs the same system dependencies and toolchain as the dev shell
above. Then:
./scripts/build-deb.sh
This runs pnpm -C apps/desktop tauri build --bundles deb and prints the path
of the generated package β target/release/bundle/deb/opencherry__amd64.deb
(the Cargo workspace target/ directory at the repo root). The first release
build is slow (lto = "thin", codegen-units = 1); later builds reuse the
cache.
Build the AppImage
just build-appimage # or: ./scripts/build-appimage.sh
This produces target/release/bundle/appimage/opencherry__amd64.AppImage
(Tauri uses the Debian amd64 arch token for the AppImage and .deb).
Run it directly (it needs FUSE β sudo apt install libfuse2), or use the
one-command installer above to fetch a published build instead.
Use apt install with a path (not dpkg -i) so runtime dependencies resolve
automatically. Pass an absolute path β apt rejects a relative path with
Unsupported file ... given on commandline when it can't resolve it from the
current directory (build-deb.sh prints the absolute install command for you).
Then launch OpenCherry from the application menu, or run the installed
binary at /usr/bin/opencherry-desktop.
Update and uninstall
There is no auto-update. To update, bump version in
apps/desktop/src-tauri/tauri.conf.json, rebuild, and reinstall the new .deb
over the old one. To remove:
sudo apt remove open-cherry
Windows installer (.exe)
Windows builds produce an NSIS installer. There are two ways to get one.
Download from CI β every tagged release (v*) attaches a Windows installer
to its GitHub Release. Manually triggering the Release (Windows) workflow
(workflow_dispatch) also builds one and uploads it as a downloadable build
artifact, so contributors can grab a build without a Windows machine.
Build locally on Windows β install the prerequisites first:
Rust stable via rustup (MSVC toolchain)
Node.js 20+ and pnpm 9+
Microsoft Visual Studio C++ Build Tools (MSVC linker)
WebView2 runtime (preinstalled on Windows 10/11)
git2 builds with vendored-libgit2, so no system libgit2 or OpenSSL is
needed. Then, from the repo root in PowerShell:
.\scripts\build-windows.ps1
This runs pnpm -C apps/desktop tauri build --bundles nsis and prints the path
of the generated installer β target\release\bundle\nsis\opencherry__x64-setup.exe.
Double-click it to install. The installer is unsigned, so Windows SmartScreen
may warn on first run; choose More info β Run anyway.
macOS disk image (.dmg)
macOS builds produce a .dmg disk image. There are two ways to get one.
Download from CI β every tagged release (v*) attaches Apple Silicon
(aarch64) and Intel (x86_64) disk images to its GitHub Release. Manually
triggering the Release (macOS) workflow (workflow_dispatch) builds both
and uploads them as downloadable build artifacts.
Build locally on macOS β install the Xcode Command Line Tools
(xcode-select --install), Rust stable via rustup, and Node.js 20+ / pnpm 9+.
Then, from the repo root:
./scripts/build-macos.sh
This runs pnpm -C apps/desktop tauri build --bundles dmg and prints the path
of the generated image β target/release/bundle/dmg/opencherry__.dmg
(`` is aarch64 or x64).
Open it and drag OpenCherry to Applications. The app is unsigned and not
notarized, so on first launch macOS Gatekeeper may block it; right-click the app
β Open, or allow it in System Settings β Privacy & Security.
To cross-compile for both architectures from one machine, add the targets with
rustup target add aarch64-apple-darwin x86_64-apple-darwin and set
OPENCHERRY_MAC_TARGET (e.g. OPENCHERRY_MAC_TARGET=universal-apple-darwin).
Testing
The current codebase includes backend and frontend automated coverage for the
already shipped behavior.
persistence tests cover add/list/remove and legacy JSON import