ECA (Editor Code Assistant) Desktop is an AI-powered pair-programming client that runs as a standalone desktop app — no editor required.
It connects to an external eca server process to provide interactive chat, code suggestions, context management and more.
The rationale came from being able to offer all ECA server capabilities that are a lot in an easy way without requiring an editor, since most logic lives in ECA server, ECA Desktop is a thin wrapper layer re-using eca-webview.
For more details about ECA, features and configuration, check ECA server.
This app will auto download eca and manage the process.
Grab the latest installer for your platform from GitHub Releases:
| Platform | Architecture | Formats |
|---|---|---|
| macOS | Intel (x64) | .dmg, .zip |
| macOS | Apple Silicon (arm64) | .dmg, .zip |
| Linux | x64 | .AppImage, .deb, .flatpak |
| Linux | arm64 | .AppImage, .deb |
For the Flatpak bundle:
flatpak install --user ./eca-linux-x86_64.flatpak
flatpak run dev.eca.desktopRelease assets are published with SLSA build provenance so you can verify they were built by this repository's CI.
Auto-updates:
.dmg,.zip, and.AppImageupdate in place viaelectron-updater..debdoes not auto-update — upgrade by downloading a fresh.debfrom Releases..flatpakapp updates are owned by Flatpak — until ECA is on Flathub, upgrade by installing a fresh bundle. The managedecaserver keeps auto-updating in every format.
Open Settings from the app menu to configure the eca server path, extra server args, and other preferences.
Check troubleshooting docs section.
- Node.js v18+
- npm
Make sure that you have the eca-webview submodule cloned:
git clone --recursive https://github.com/editor-code-assistant/eca-desktop.git
cd eca-desktop
npm installIf you already cloned without --recursive:
git submodule update --init --recursivenpm run devThis starts the eca-webview Vite dev server on http://localhost:5173 and launches Electron pointing to it, so any changes will be updated on the desktop app live.
If you already have an eca-webview Vite dev server running (for example one started by eca-vscode or eca-intellij), you can boot only the desktop side and have it connect to that same webview:
# Terminal A — the webview only (or already running from another client)
npm run dev:webview
# Terminal B — the desktop only, connects to http://localhost:5173 by default
npm run dev:appOverride the URL with the ECA_WEBVIEW_URL env var to point at a non-default host/port:
ECA_WEBVIEW_URL=http://localhost:6000 npm run dev:appnpm run package # current platform
npm run package:mac # macOS
npm run package:linux # Linux (AppImage + deb)
npm run package:flatpak # Linux (Flatpak bundle, x64)Installers are written to release/.
The Flatpak target additionally requires flatpak, flatpak-builder and appstreamcli (package appstream, plus appstream-compose on Debian/Ubuntu) installed, plus the shared runtimes:
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 org.electronjs.Electron2.BaseApp//24.08When sandboxed, the app spawns the eca server on the host via flatpak-spawn --host (permission --talk-name=org.freedesktop.Flatpak) so the agent can use your real toolchain (git, shells, MCP servers), falling back to an in-sandbox server if the portal is unavailable.
See CONTRIBUTING.md for more details.
| Platform | Status |
|---|---|
| macOS (Intel & Apple Silicon) | ✅ Supported |
| Linux (x64 & arm64) | ✅ Supported |
| Windows | 🔮 Planned |
Contributions are very welcome, please open an issue for discussion or a pull request. See CONTRIBUTING.md for development guidelines.
