Skip to content

yibo365/kite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kite logo

Kite

Connect local coding agents to mobile chat.
Scan once from Feishu/Lark or WeChat, then drive Codex, Claude Code, Gemini CLI, Cursor Agent, or OpenCode on your Mac from your phone.

Download · Quick start · Supported agents · Troubleshooting · License

Kite desktop app screenshot


Kite is a macOS menu bar app that bridges phone-based chat channels to local coding-agent CLIs. It runs as a single Go process: desktop UI, QR login, message receiving, agent execution, and local state persistence all live inside the app. No public IP, reverse proxy, tunneling service, or hosted backend is required.

Why Kite

Remote coding-agent connections can be fragile, and bot/channel setup can feel heavier than the work you actually want to delegate. Kite keeps the control plane local: pick a project directory, choose an agent, scan a QR code, and send tasks from your phone.

Features

  • Chat channels: Feishu/Lark PersonalAgent and personal WeChat. WeChat here means a personal account, not WeCom/Enterprise WeChat.
  • Local agents: Codex CLI, Claude Code, Gemini CLI, Cursor CLI/Agent, and OpenCode.
  • QR setup: Create a connection in the desktop app, scan with the matching mobile app, and Kite starts the receiver automatically.
  • Session resume: Kite stores the active agent session per chat so follow-up messages continue the same context when the underlying CLI supports it.
  • Mobile commands: Use /help, /status, /new, /list, /switch, /cwd, /model, /reasoning, /mode, and more directly from chat.
  • Local-first security boundary: By default, only the user who completed setup can drive the local agent. Credentials are stored locally in ~/.kite/store.json.

How It Works

Feishu/Lark or WeChat on your phone
              |
              v
        Kite macOS app  ---->  local coding-agent CLI
              |                         |
              +---- text/card reply <---+

Feishu/Lark uses the official long-connection SDK and rich interactive cards. WeChat uses personal-account QR authorization and long polling; replies are plain text so the flow stays lightweight on mobile.

Quick Start

Requirements

  • macOS
  • At least one supported and logged-in agent CLI: codex, claude, gemini, cursor-agent, or opencode
  • A project directory, preferably a git repository
  • Feishu/Lark or WeChat logged in on your phone

Run from source

git clone https://github.com/yibo365/kite.git
cd kite
npm --prefix cmd/kite-wails/frontend run build
go run ./cmd/kite-wails

Build the macOS app

./scripts/package_macos.sh
open build/package/Kite.app

The packaging flow lives in scripts/package_macos.sh. It builds the CLI, Wails app, app bundle, and DMG using local ad-hoc signing.

Create a Connection

  1. Open Kite.
  2. Click Add channel.
  3. Choose a chat channel: Feishu or WeChat.
  4. Choose an agent: Codex, Claude Code, Gemini CLI, Cursor Agent, or OpenCode.
  5. Select the working directory.
  6. Click Scan to connect, then approve the QR login on your phone.

Once the connection is online, send a normal message in the bound chat. Kite will run the selected local agent in the selected working directory and send the result back to the chat.

Supported Agents

Agent CLI used by Kite Session resume Main Kite controls
Codex CLI codex exec / codex resume Yes /model, /reasoning, /mode, /web, /provider
Claude Code claude Yes /model, /reasoning, /mode
Gemini CLI gemini --prompt --output-format stream-json Yes /model, /mode
Cursor Agent cursor-agent -p --output-format stream-json Yes /model, /mode
OpenCode opencode run --format json Yes /model, /reasoning, /mode

Kite forwards one chat turn to the selected CLI. Authentication, provider routing, MCP servers, model availability, and detailed permission policies still belong to the underlying agent CLI.

Chat Commands

/help                 Open the command panel
/status               Show chat, cwd, session, mode, and runtime status
/whoami               Show the bound chat/user identity
/new [name]           Start a fresh agent session on the next prompt
/list                 List sessions for the current chat
/current              Show the active session
/switch <n|id|name>   Switch session by number, id, or name
/delete <n|id|name>   Delete a saved session mapping
/name <name>          Rename the current or next session
/cwd [path]           Show or change working directory
/mode [...]           Change permission/automation mode for the current agent
/model [name]         Show or change model
/reasoning [level]    Show or change reasoning effort when supported
/web [on|off]         Codex web search toggle
/tools [on|off]       Show or hide tool output
/shell <command>      Run a shell command in the current cwd
/show <path>          Show a file or directory
/diff [path]          Show git diff
/commands ...         Manage custom commands
/alias ...            Manage command aliases
/config ...           View or edit chat configuration

Feishu/Lark supports interactive card buttons. WeChat currently uses plain text commands and plain text replies.

Local Data

Kite stores local state at:

~/.kite/store.json

This file contains channel credentials, connection records, working directories, and chat-to-agent-session mappings. Full conversation history remains owned by the selected agent CLI.

Optional Feishu/Lark environment variables:

KITE_FEISHU_APP_ID=cli_xxx
KITE_FEISHU_APP_SECRET=xxx
KITE_FEISHU_OWNER_OPEN_ID=ou_xxx

macOS Gatekeeper

The local packaging script uses ad-hoc signing. It does not use Apple Developer ID signing or notarization. For personal use or small trusted tests, this is fine, but a DMG downloaded from GitHub or a browser may show "cannot verify developer" or "damaged and cannot be opened".

If that happens:

  1. Drag Kite.app into /Applications.
  2. Control-click Kite.app in Finder, choose Open, then confirm Open again.
  3. If macOS still blocks it, open System Settings -> Privacy & Security, find the Kite warning, and choose Open Anyway.
  4. If the quarantine flag is stuck, run:
xattr -dr com.apple.quarantine /Applications/Kite.app

For a downloaded DMG, you can clear quarantine before opening it:

xattr -dr com.apple.quarantine ~/Downloads/Kite.dmg

Only do this for builds you trust. For public distribution, use Apple Developer ID signing, notarization, and DMG stapling.

Development

Run tests and build the frontend:

go test ./...
npm --prefix cmd/kite-wails/frontend run build
go build ./cmd/kite-wails

Useful project links:

Troubleshooting

  • Agent CLI not found: make sure the command works in a terminal, for example codex, claude, gemini, cursor-agent, or opencode, then restart Kite.
  • Feishu/Lark or WeChat receiver is offline: disable and re-enable the connection, or restart Kite.
  • QR code expired: create the connection again to generate a new QR code.
  • WeChat scanned but did not connect: finish the confirmation step on the phone. Scanning alone does not return a token.
  • Wrong working directory: open the connection detail page, choose Edit, and update the directory. Kite will start a new agent session after the directory changes.
  • macOS blocks the app: see macOS Gatekeeper.

Security Notes

  • ~/.kite/store.json contains credentials. Do not commit it to git.
  • Kite runs local agent CLIs on your machine. Treat the bound chat user as someone who can operate the selected project directory.
  • Use high-permission modes such as /mode yolo and commands such as /shell carefully.

License

Kite is released under the MIT License. Some files may retain their own upstream notices if they reuse third-party open-source material.

About

把本地 Coding Agent 接到手机聊天里。 飞书或个人微信扫码连接后,直接在手机上驱动 Mac 里的 Codex / Claude Code。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors