The Problem

Developers spend excessive time switching contexts between local terminals and cloud‑hosted AI assistants. Each agent (Claude Code, Codex, Gemini, etc.) requires a separate session and manual credential handling, which slows iterative coding and increases friction for non‑technical teammates.

What This Does

Codync turns each AI agent into a persistent bot that can be messaged from any device—iPhone, macOS, Windows, Linux, or terminal. Bots expose a unified chat interface, keep state across sessions, and deliver notifications when work completes. The desktop experience lives under apps/desktop. The entry point is apps/desktop/src/main/index.ts, which launches an Electron window (apps/desktop/electron-builder.yml) and loads the renderer bundle (apps/desktop/src/renderer/main.tsx). The renderer communicates with a Rust‑based host (host/Cargo.toml) through IPC; host modules (apps/desktop/src/main/host-controller.ts and host-proxy.ts) orchestrate agent calls, file access, and network requests.

The web preview is served from web/, built with Next.js (web/package.json). The web side also uses the same Rust host via WebAssembly (web/wasm/).

How It Is Wired

Entry point: apps/desktop/src/main/index.ts → electron-builder → apps/desktop/src/renderer/main.tsx. From the renderer, the BotStore (apps/desktop/src/renderer/store/bot-store.ts) holds bot metadata. On user interaction, BotSync (apps/desktop/src/renderer/store/bot-sync.ts) dispatches IPC messages to the host. The host (host/src/lib.rs) receives the command, resolves the target agent via host-proxy.ts, and forwards the request to the relevant SDK (e.g., Claude SDK in apps/desktop/src/main/claude.ts). The response flows back through IPC to the renderer, where ChatWindow (apps/desktop/src/renderer/views/ChatWindow.tsx) renders the message.

External touches:

  • Network: HTTP requests to AI provider APIs (e.g., Claude, Gemini) are performed in the host; the URLs and keys are expected in environment variables referenced in host/Cargo.toml.
  • Filesystem: File reads/writes are routed through apps/desktop/src/main/file-saves.ts and file-sink.ts.
  • Notifications: macOS (apps/desktop/resources/mac/com.pokai.Codync.dev.screen.plist) and Windows installers use native notification APIs exposed via the Electron renderer.

Wiring cost: The host is a single hub; changes to agent logic require edits in host/Cargo.toml and the corresponding JS glue in apps/desktop/src/main/*.ts. The renderer has minimal coupling, delegating all heavy lifting to the host.

How To Use It

# Clone
git clone https://github.com/moses-y/Codync
cd Codync

# Build desktop
cd apps/desktop
npm install          # uses package.json
npm run build        # generates dist/ and electron-builder config

# Run locally
npm run dev          # launches Electron with hot reload

Configuration Create a .env file in apps/desktop or set environment variables at runtime. Required keys are listed in host/Cargo.toml under [dependencies] for each AI provider. For example, CL_AZURE_KEY for Claude, GEMINI_API_KEY for Gemini.

Running The built binary is in apps/desktop/dist/. On macOS, double‑click codync-macos.dmg; on Windows, run codync-windows-x64.exe; on Linux, execute the AppImage from dist/.

Real‑World Use

A mobile developer opens the Codync iOS app, selects the “Claude Code” bot, and types: “Review my pull request #42 and suggest improvements.” The iOS client sends the message via a WebSocket to the local host; the host forwards it to Claude, streams the response back, and the iOS UI shows the review in real time. Meanwhile, the desktop app shows a notification, allowing the developer to click and jump into the review conversation.

Code Health & Issues

  • Tests: 100 test files under tests/ and cloud/test/e2e/.
  • CI: Workflows in .github/workflows/ cover desktop (release-desktop.yml), host (host.yml), and cloud (cloud.yml).
  • License: Apache‑2.0 (LICENSE).
  • No structural red flags per static analysis.
  • Missing: No automated linting configuration (e.g., ESLint) is present; adding one would improve code quality.

The Bottom Line

Codync offers a pragmatic, free solution for embedding AI agents as first‑class teammates. Its split between a Rust host and a lightweight Electron renderer keeps the codebase modular, but adding new agents requires updates in both the host Cargo configuration and the JS glue layer. The project is well‑structured, with comprehensive CI and a clear build path, making it suitable for teams that need on‑premise AI integration without subscription overhead.