{"id":48921053,"url":"https://github.com/editor-code-assistant/eca-desktop","last_synced_at":"2026-04-17T05:01:57.852Z","repository":{"id":351640386,"uuid":"1211795776","full_name":"editor-code-assistant/eca-desktop","owner":"editor-code-assistant","description":"ECA Desktop - AI Code Assistant","archived":false,"fork":false,"pushed_at":"2026-04-15T22:25:45.000Z","size":75,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-15T22:26:23.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/editor-code-assistant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-15T18:54:40.000Z","updated_at":"2026-04-15T22:25:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/editor-code-assistant/eca-desktop","commit_stats":null,"previous_names":["editor-code-assistant/eca-desktop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/editor-code-assistant/eca-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editor-code-assistant%2Feca-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editor-code-assistant%2Feca-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editor-code-assistant%2Feca-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editor-code-assistant%2Feca-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/editor-code-assistant","download_url":"https://codeload.github.com/editor-code-assistant/eca-desktop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editor-code-assistant%2Feca-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31915900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-17T05:00:42.055Z","updated_at":"2026-04-17T05:01:57.846Z","avatar_url":"https://github.com/editor-code-assistant.png","language":"TypeScript","readme":"# ECA Desktop\n\nA modern, cross-platform desktop client for [ECA (Editor Code Assistant)](https://eca.dev). Built with Electron, designed for developers and non-developers alike.\n\n[![CI](https://github.com/editor-code-assistant/eca-desktop/actions/workflows/ci.yml/badge.svg)](https://github.com/editor-code-assistant/eca-desktop/actions/workflows/ci.yml)\n[![Release](https://github.com/editor-code-assistant/eca-desktop/actions/workflows/release.yml/badge.svg)](https://github.com/editor-code-assistant/eca-desktop/actions/workflows/release.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/editor-code-assistant/eca-desktop?label=latest)](https://github.com/editor-code-assistant/eca-desktop/releases/latest)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)\n![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-blue)\n\n## Download\n\nGet the latest release for your platform from [**GitHub Releases**](https://github.com/editor-code-assistant/eca-desktop/releases/latest):\n\n| Platform | Architecture          | Formats              |\n|----------|-----------------------|----------------------|\n| macOS    | Intel (x64)           | `.dmg`, `.zip`       |\n| macOS    | Apple Silicon (arm64) | `.dmg`, `.zip`       |\n| Linux    | x64                   | `.AppImage`, `.deb`  |\n| Linux    | arm64                 | `.AppImage`, `.deb`  |\n\nRelease assets are published with [SLSA build provenance](https://slsa.dev/) so you can verify they were built by this repository's CI.\n\n\u003e **Auto-updates:** `.dmg`, `.zip`, and `.AppImage` update in place via `electron-updater`.\n\u003e `.deb` does **not** auto-update — upgrade by downloading a fresh `.deb` from Releases (or via `apt` once an apt repository is published).\n\n\u003e The ECA server binary is downloaded automatically on first launch — no extra setup needed.\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────┐\n│                  Electron App                        │\n│                                                      │\n│  ┌──────────────┐    IPC (contextBridge)   ┌────────────────────┐\n│  │  Main Process │◄───────────────────────►│ Renderer (Chromium) │\n│  │               │                          │                    │\n│  │  server.ts    │    JSON-RPC / stdio      │  eca-webview       │\n│  │  rpc.ts       │◄──────────────────┐      │  (React SPA)       │\n│  │  bridge.ts    │                   │      │                    │\n│  │  menu.ts      │                   ▼      └────────────────────┘\n│  │  updater.ts   │           ┌──────────────┐\n│  └──────────────┘            │  ECA Server   │\n│                              │  (native bin) │\n│  ┌──────────────┐            └──────────────┘\n│  │ Preload       │\n│  │ preload.ts    │  ← secure contextBridge\n│  └──────────────┘\n└─────────────────────────────────────────────────────┘\n```\n\n- **Main process**: Manages the ECA server binary (download, lifecycle) and bridges IPC ↔ JSON-RPC\n- **Renderer**: Loads `eca-webview` (shared React SPA) via the pluggable `__ecaWebTransport` interface\n- **Preload**: Exposes a minimal, secure API via `contextBridge` (no `nodeIntegration`)\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) (v18+)\n- npm\n\n## Setup\n\n```bash\n# Clone with submodules\ngit clone --recursive https://github.com/editor-code-assistant/eca-desktop.git\ncd eca-desktop\n\n# Install dependencies\nnpm install\n\n# Install webview dependencies\ncd eca-webview \u0026\u0026 npm install \u0026\u0026 cd ..\n```\n\n## Development\n\n```bash\n# Start dev mode (Vite dev server + Electron with hot reload)\nnpm run dev\n```\n\nThis runs the eca-webview Vite dev server on `localhost:5173` and launches Electron pointing to it.\n\n### NixOS\n\nA `shell.nix` is provided that sets up the correct environment automatically — including a NixOS-patched Electron binary via `ELECTRON_OVERRIDE_DIST_PATH`:\n\n```bash\n# Enter the dev shell (provides Node.js + patched Electron)\nnix-shell\n\n# Then use npm scripts as usual\nnpm install\nnpm run build\nnpm start       # run production build\nnpm run dev     # dev mode with hot reload\n```\n\n\u003e **Note:** On NixOS, the npm-bundled Electron binary won't work due to FHS assumptions. Always use `nix-shell` which provides a properly patched Electron. If you encounter GPU issues, set `ECA_DISABLE_GPU=1` before running.\n\n## Building\n\n```bash\n# Build everything (webview + main + preload)\nnpm run build\n\n# Package for current platform\nnpm run package\n\n# Package for specific platform\nnpm run package:mac\nnpm run package:linux\n```\n\nPackaged installers are output to the `release/` directory.\n\n## Project Structure\n\n```\neca-desktop/\n├── eca-webview/              # Shared UI (git submodule)\n├── src/\n│   ├── main/\n│   │   ├── main.ts           # Electron entry point\n│   │   ├── server.ts         # ECA server download \u0026 lifecycle\n│   │   ├── rpc.ts            # JSON-RPC API definitions\n│   │   ├── bridge.ts         # IPC ↔ JSON-RPC message routing\n│   │   ├── menu.ts           # Application menu\n│   │   └── updater.ts        # Auto-update via electron-updater\n│   ├── preload/\n│   │   └── preload.ts        # Secure context bridge\n│   └── renderer/\n│       └── index.html        # Host page for eca-webview\n├── resources/                # App icons\n├── package.json\n├── tsconfig.json\n├── electron-builder.yml\n└── README.md\n```\n\n## Platforms\n\n| Platform | Status |\n|----------|--------|\n| macOS (Intel \u0026 Apple Silicon) | ✅ Supported |\n| Linux (x64 \u0026 arm64) | ✅ Supported |\n| Windows | 🔮 Planned |\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines and how to submit changes.\n\n## License\n\n[Apache-2.0](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feditor-code-assistant%2Feca-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feditor-code-assistant%2Feca-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feditor-code-assistant%2Feca-desktop/lists"}