The project's README from github.com/leepokai/Codync. As one markdown file: README.md.
The open-source, 1:1 alternative to Grok Bot and Muse.
Your coding agents, as teammates you can message.
Codync turns the coding agents on your computer — Claude Code, Codex, Cursor, Pi, OpenCode, Grok Build, Gemini, Copilot and ~40 more — into persistent bots you delegate to from your iPhone, Mac, Linux desktop or any terminal, the way you'd message a colleague. Pick who, say what, put the phone away. You get a notification when a bot finishes or needs your approval.
Why bots? On a phone, "find the right working session, then pick an environment" is too slow. With bots you already know who to hand the intent to: open the chat, type, done.
@name picks who replies. Start a thread on any message to branch off without cluttering the main chat.codync-host is one small, fast Rust binary for macOS and Linux (static on Linux, runs on any distro) that drives every agent, keeps the transcripts and serves every client.computer tool.| Platform | App | Highlights | |
|---|---|---|---|
| 📱 | iPhone | Native SwiftUI | Chat with bots, approvals, push notifications, Live Activity, widgets, remote screen, voice calls |
| 💻 | macOS | Native SwiftUI, menu bar + window | Runs the host, chat window, usage in the menu bar, iPhone pairing |
| 🐧 | Linux | Native GTK 4 / libadwaita | Runs the host (desktop or headless server), chat app |
| ⌨️ | Terminal | codync-host tui |
Message your bots from any terminal, over SSH too |
The host (codync-host, Rust) runs on macOS and Linux; every client talks to it, so all your bots and chats are the same everywhere.
Remote Apple client ⇄ encrypted channel (direct or Cloudflare cloud/) ⇄ codync-host ⇄ ACP agent
Local / SSH client ⇄ loopback HTTP + SSE ⇄ codync-host
Host notifications → APNs worker (relay/) → iPhone
session/load, restarted with New session).team MCP server lets it discover your other visible bots and wait for a reply. Requests appear in both chats; each recipient keeps its own agent, folder and approvals. Native subagents stay under the coding agent's control. See bot collaboration.rev, so the phone reconnects with since: rev and never misses anything.claude -p /usage (a local command, no model call) plus Claude Code's status line, Codex via ~/.codex/sessions. The phone, widgets and menu bar only see percentages.UI patterns (roster, character avatars, approval cards, trace sheet, "needs you / done" notifications) follow Grok Bot.
One line (macOS or Linux):
curl -fsSL https://raw.githubusercontent.com/leepokai/Codync/main/packaging/install.sh | sh
On a Mac it installs the app (the host ships inside it); on Linux the host, plus the desktop app when a display is present. Add sh -s -- --host-only for servers and headless Macs. Re-run it to upgrade.
Mac — download codync-macos.dmg and drag it to Applications, or:
brew install --cask leepokai/codync/codync
All three install the same signed, notarized app.
Open Codync: it sets up the host on first launch. Open Codync opens the full window; Pair iPhone… shows the QR code.
iPhone — get Codync on the App Store (iOS 18+, free), then scan the QR code from Pair iPhone… on the Mac, the Linux app or codync-host pair.
Linux — the host, plus the native GTK 4 / libadwaita app:
curl -fsSL https://raw.githubusercontent.com/leepokai/Codync/main/packaging/install.sh | sh
# or: brew install leepokai/codync/codync-host
codync-host install # systemd --user service
codync-host pair # QR code in the terminal, or Settings in the app
The script also installs the desktop app (codync, with its .desktop file and icon) when you're in a graphical session; it needs GTK 4 and libadwaita. By hand: unpack codync-linux-<arch>.tar.gz from Releases and run bin/codync.
Building the Linux app yourself needs libgtk-4-dev libadwaita-1-dev: cargo install --path apps/linux.
Linux server / cloud VM — the host runs headless on any distro (static binary, x86_64 + arm64). Setup, remote access and limitations: docs/guides/linux-servers.md.
Remote access works out of the box through the free Cloudflare relay, end-to-end encrypted; the phone switches to a direct connection on the same network or over Tailscale. Details: remote relay.
Agents — install and sign in to whichever you use; Codync finds them. Claude Code, Codex and Pi run through their ACP adapters (fetched by npx, so Node.js is needed for those).
codync-host install also routes Claude Code's status line through codync-host statusline so live limits reach the host; an existing status line keeps working (it's wrapped, and restored on uninstall).
codync-host| Command | |
|---|---|
codync-host install / uninstall |
background service (launchd on macOS, systemd --user on Linux) |
codync-host tui [--url … --token …] |
message your bots from a terminal (this computer by default; SSH-friendly) |
codync-host pair [--json] |
pairing QR code / link |
codync-host status |
installed? running? |
codync-host serve [--port 19222] |
run in the foreground |
codync-host statusline [-- <your command>] |
Claude Code status line command (wraps yours) |
codync-host reset-token |
rotate the local loopback bearer token |
codync-host cloud |
cloud enablement, URL and status |
codync-host devices |
list/revoke authorized remote devices |
codync-host access |
review device access requests |
Data lives in ~/.codync. The local bearer token authorizes loopback helpers and SSH-forwarded callers. Remote devices use individual keys and grants over the encrypted channel; revoke a lost device through device management rather than rotating the loopback token. Host methods and caller permissions live in host/src/api/mod.rs.
| Path | |
|---|---|
host/ |
codync-host — Rust daemon: ACP client, SQLite transcript, HTTP/SSE API, push, usage |
kit/ |
Swift package: CodyncKit (wire models, host client, theme, avatars) and CodyncUI (store + chat screens shared by iPhone and Mac) |
apps/ios/ |
iOS app: pairing, roster, push, Live Activity glue |
apps/ios/Widgets/ |
Bots, usage and per-provider usage widgets + bot Live Activity |
apps/macos/ |
Menu bar + native chat window; installs/monitors the host |
apps/linux/ |
Native Linux app (GTK 4 + libadwaita, Rust) |
cloud/ |
Cloudflare accounts, D1, encrypted channel relay and offline mailbox |
apps/shared/ |
Shared Apple account integration and environment configuration |
apps/screen-macos/, apps/screen-linux/ |
Platform screen capture/input helpers |
docs/ |
Documentation index and file structure |
relay/ |
Cloudflare Worker APNs relay with encrypted per-device tickets |
web/ |
Website (Next.js static export, deployed on Vercel) |
packaging/ |
Homebrew cask and formula templates (published to leepokai/homebrew-codync on release) and install.sh (the curl installer) |
Build, install, restart and full checks: development guide.
The Xcode project is generated: xcodegen generate --spec apps/project.yml.
cd host && cargo test # host
cd kit && swift test # shared Swift
cd apps/linux && cargo test # Linux app (needs GTK dev packages)
cd cloud && npm test # cloud API / channel relay
cd relay && npm test # relay tickets
The major version is the phone ↔ host protocol: apps work with hosts of the same major version.
MIT