{"id":45938224,"url":"https://github.com/chenhg5/cc-connect","last_synced_at":"2026-04-02T19:21:21.270Z","repository":{"id":341120134,"uuid":"1168978399","full_name":"chenhg5/cc-connect","owner":"chenhg5","description":"Bridge local AI coding agents (Claude Code, Cursor, Gemini CLI, Codex) to messaging platforms (Feishu/Lark, DingTalk, Slack, Telegram, Discord, LINE, WeChat Work). Chat with your AI dev assistant from anywhere — no public IP required for most platforms.","archived":false,"fork":false,"pushed_at":"2026-02-28T08:45:17.000Z","size":79,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-28T13:55:58.065Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/chenhg5.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":null,"dco":null,"cla":null}},"created_at":"2026-02-28T02:39:39.000Z","updated_at":"2026-02-28T08:45:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chenhg5/cc-connect","commit_stats":null,"previous_names":["chenhg5/cc-connect"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/chenhg5/cc-connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenhg5%2Fcc-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenhg5%2Fcc-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenhg5%2Fcc-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenhg5%2Fcc-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenhg5","download_url":"https://codeload.github.com/chenhg5/cc-connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenhg5%2Fcc-connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29959284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"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-02-28T10:11:01.205Z","updated_at":"2026-04-02T19:21:21.258Z","avatar_url":"https://github.com/chenhg5.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/images/banner.svg\" alt=\"CC-Connect Banner\" width=\"800\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/chenhg5/cc-connect/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/chenhg5/cc-connect/actions/workflows/ci.yml/badge.svg\" alt=\"CI Status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/chenhg5/cc-connect/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/chenhg5/cc-connect?include_prereleases\" alt=\"Release\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/cc-connect\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/cc-connect?logo=npm\" alt=\"npm downloads\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/chenhg5/cc-connect/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/chenhg5/cc-connect\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/chenhg5/cc-connect\" alt=\"Go Report Card\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/kHpwgaM4kq\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-Join-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://t.me/+odGNDhCjbjdmMmZl\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Telegram-Group-26A5E4?logo=telegram\u0026logoColor=white\" alt=\"Telegram\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"./README.zh-CN.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eControl your local AI agents from any chat app. Anywhere, anytime.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  cc-connect bridges AI agents running on your machine to the messaging platforms you already use.\u003cbr/\u003e\n  Code review, research, automation, data analysis — anything an AI agent can do,\u003cbr/\u003e\n  now accessible from your phone, tablet, or any device with a chat app.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/connector.png\" alt=\"CC-Connect Architecture\" width=\"90%\"/\u003e\n\u003c/p\u003e\n\n---\n\n## 🆕 What's New (beta)\n\n\u003e These highlights are in **beta / pre-release** builds — install [`cc-connect@beta`](https://www.npmjs.com/package/cc-connect?activeTab=versions) or grab a [pre-release](https://github.com/chenhg5/cc-connect/releases) binary. They are **not** in the default **stable** release yet; details may change before promotion to stable.\n\n- **Personal WeChat** — Chat with your local agent from **Weixin (personal)** via ilink long-polling; QR `weixin setup`, CDN media, no public IP. *[Setup → `docs/weixin.md`](docs/weixin.md)*\n- **Auto-compress** — When the session estimate blows past your threshold, cc-connect can trim context so long threads keep working instead of silently falling over.\n- **Friendlier `--continue`** — Fork-on-continue so your bridge session doesn’t inherit a half-finished CLI terminal session by accident.\n- **Cron with boundaries** — Run jobs in a **fresh session** each time and cap **per-job timeouts** so runaway tasks don’t wedge the bot.\n- **Richer platforms** — e.g. **Discord** `@everyone` / `@here`, **Telegram** voice-style replies, **Feishu** fixes for reply threading and async dispatch.\n\n---\n\n## 🧩 Platform feature snapshot\n\nHigh-level view of what each **built-in platform** can do in cc-connect. Inspired by [OpenClaw China’s feature matrix](https://github.com/BytePioneer-AI/openclaw-china#功能支持) — handy for comparing channels at a glance.\n\n**Legend**\n\n| Symbol | Meaning |\n|--------|---------|\n| ✅ | Works in **stable** cc-connect with typical configuration |\n| ✅（beta） | **Beta / pre-release only** — the **Weixin (personal)** column: install [`cc-connect@beta`](https://www.npmjs.com/package/cc-connect?activeTab=versions) or a [pre-release binary](https://github.com/chenhg5/cc-connect/releases); **not** in the default stable npm build yet |\n| ⚠️ | Partial, needs extra config (e.g. speech / ASR), or limited by the vendor app or API |\n| ❌ | Not supported or not applicable in practice |\n\n† **QQ (NapCat / OneBot)** — unofficial self-hosted bridge; behaviour depends on your NapCat / network setup.\n\n| Capability | Feishu | DingTalk | Telegram | Slack | Discord | LINE | WeCom | **Weixin**\u003cbr\u003e*(personal)* | QQ† | QQ Bot |\n|------------|:------:|:--------:|:--------:|:-----:|:-------:|:----:|:-----:|:-------------------------:|:---:|:------:|\n| Text \u0026 slash commands | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅（beta） | ✅ | ✅ |\n| Markdown / cards | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ✅（beta） | ✅ | ✅ |\n| Streaming / chunked replies | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅（beta） | ✅ | ✅ |\n| Images \u0026 files | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅（beta） | ✅ | ✅ |\n| Voice / STT / TTS | ⚠️ | ⚠️ | ✅ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅（beta） | ⚠️ | ⚠️ |\n| Private (DM) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅（beta） | ✅ | ✅ |\n| Group / channel | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅（beta） | ✅ | ✅ |\n\n\u003e **Weixin column:** every **✅（beta）** means “available only when you run a **beta / pre-release** build,” not a statement that the feature is incomplete — the whole **personal WeChat (ilink)** channel is still **pre-stable**.  \n\u003e **WeCom:** Webhook mode needs a **public URL**; long-connection / WS style setups often do not.  \n\u003e **Voice row:** many platforms need `[speech]` / TTS providers enabled in `config.toml`; values are a best-effort summary.  \n\u003e Per-platform setup: [Platform setup guides](#-platform-setup-guides) below.\n\n---\n\n## ✨ Why cc-connect?\n\n### 🤖 Universal Agent Support\n**7 AI Agents** — Claude Code, Codex, Cursor Agent, Qoder CLI, Gemini CLI, OpenCode, iFlow CLI. Use whichever fits your workflow, or all of them at once.\n\n### 📱 Platform Flexibility\n**10 Chat Platforms** — Feishu, DingTalk, Slack, Telegram, Discord, WeChat Work, LINE, QQ, QQ Bot (Official), plus **Weixin (personal ilink)** for **personal WeChat**. *Personal WeChat is **beta / pre-release only*** — install [`cc-connect@beta`](https://www.npmjs.com/package/cc-connect?activeTab=versions) or a [GitHub pre-release](https://github.com/chenhg5/cc-connect/releases) binary; the default **stable** npm package does **not** ship the `weixin` platform yet. Most platforms need **zero public IP**.\n\n### 🔄 Multi-Agent Orchestration\n**Multi-Bot Relay** — Bind multiple bots in a group chat and let them communicate with each other. Ask Claude, get insights from Gemini — all in one conversation.\n\n### 🎮 Complete Chat Control\n**Full Control from Chat** — Switch models (`/model`), tune reasoning (`/reasoning`), change permission modes (`/mode`), manage sessions, all via slash commands.\n\n**Directory Switching in Chat** — Change where the next session starts with `/dir \u003cpath\u003e` (and `/cd \u003cpath\u003e` as a compatibility alias), plus quick history jump via `/dir \u003cnumber\u003e` / `/dir -`.\n\n### 🧠 Persistent Memory\n**Agent Memory** — Read and write agent instruction files (`/memory`) without touching the terminal.\n\n### ⏰ Intelligent Scheduling\n**Scheduled Tasks** — Set up cron jobs in natural language. *\"Every day at 6am, summarize GitHub trending\"* just works.\n\n### 🎤 Multimodal Support\n**Voice \u0026 Images** — Send voice messages or screenshots; cc-connect handles STT/TTS and multimodal forwarding.\n\n### 📦 Multi-Project Architecture\n**Multi-Project** — One process, multiple projects, each with its own agent + platform combo.\n\n### 🌍 Multilingual Interface\n**5 Languages** — Native support for English, Chinese (Simplified \u0026 Traditional), Japanese, and Spanish. Built-in i18n ensures everyone feels at home.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/screenshot/cc-connect-lark.JPG\" alt=\"飞书\" width=\"32%\" /\u003e\n  \u003cimg src=\"docs/images/screenshot/cc-connect-telegram.JPG\" alt=\"Telegram\" width=\"32%\" /\u003e\n  \u003cimg src=\"docs/images/screenshot/cc-connect-wechat.JPG\" alt=\"微信\" width=\"32%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eLeft：Lark \u0026nbsp;|\u0026nbsp; Telegram \u0026nbsp;|\u0026nbsp; Right：Wechat\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## 🚀 Quick Start\n\n### 🤖 Install \u0026 Configure via AI Agent (Recommended)\n\n\u003e **The easiest way** — Send this to Claude Code or any AI coding agent, and it will handle the entire installation and configuration for you:\n\n```bash\nFollow https://raw.githubusercontent.com/chenhg5/cc-connect/refs/heads/main/INSTALL.md to install and configure cc-connect.\n```\n\n---\n\n### 📦 Manual Install\n\n**Via npm:**\n\n```bash\n# Stable version\nnpm install -g cc-connect\n\n# Beta version (more features, may be unstable)\nnpm install -g cc-connect@beta\n```\n\n\u003e **Personal WeChat (Weixin ilink):** only available in **beta / pre-release** builds (`cc-connect@beta` or a prerelease asset under [Releases](https://github.com/chenhg5/cc-connect/releases)). **Stable** `npm install -g cc-connect` does **not** include this platform until it graduates from beta.\n\n**Download binary from [GitHub Releases](https://github.com/chenhg5/cc-connect/releases):**\n\n```bash\n# Linux amd64 - Stable\ncurl -L -o cc-connect https://github.com/chenhg5/cc-connect/releases/latest/download/cc-connect-linux-amd64\nchmod +x cc-connect\nsudo mv cc-connect /usr/local/bin/\n\n# Beta version (from pre-release)\ncurl -L -o cc-connect https://github.com/chenhg5/cc-connect/releases/download/v1.x.x-beta/cc-connect-linux-amd64\n```\n\n**Build from source (requires Go 1.22+):**\n\n```bash\ngit clone https://github.com/chenhg5/cc-connect.git\ncd cc-connect\nmake build\n```\n\n---\n\n### ⚙️ Configure\n\n```bash\nmkdir -p ~/.cc-connect\ncp config.example.toml ~/.cc-connect/config.toml\nvim ~/.cc-connect/config.toml\n```\n\nSet `admin_from = \"alice,bob\"` in a project to allow those user IDs to run privileged commands such as `/dir` and `/shell`.\nWhen a user runs `/dir reset`, cc-connect restores the configured `work_dir` and clears the persisted override stored under `data_dir/projects/\u003cproject\u003e.state.json`.\n\n---\n\n### ▶️ Run\n\n```bash\n./cc-connect\n```\n\n---\n\n### 🔄 Upgrade\n\n```bash\n# npm\nnpm install -g cc-connect\n\n# Binary self-update\ncc-connect update           # Stable\ncc-connect update --pre     # Beta (includes pre-releases)\n```\n\n---\n\n## 📊 Support Matrix\n\n| Component | Type | Status |\n|-----------|------|--------|\n| Agent | Claude Code | ✅ Supported |\n| Agent | Codex (OpenAI) | ✅ Supported |\n| Agent | Cursor Agent | ✅ Supported |\n| Agent | Gemini CLI (Google) | ✅ Supported |\n| Agent | Qoder CLI | ✅ Supported |\n| Agent | OpenCode (Crush) | ✅ Supported |\n| Agent | iFlow CLI | ✅ Supported |\n| Agent | Goose (Block) | 🔜 Planned |\n| Agent | Aider | 🔜 Planned |\n| Platform | Feishu (Lark) | ✅ WebSocket — no public IP needed |\n| Platform | DingTalk | ✅ Stream — no public IP needed |\n| Platform | Telegram | ✅ Long Polling — no public IP needed |\n| Platform | Slack | ✅ Socket Mode — no public IP needed |\n| Platform | Discord | ✅ Gateway — no public IP needed |\n| Platform | LINE | ✅ Webhook — public URL required |\n| Platform | WeChat Work | ✅ WebSocket / Webhook |\n| Platform | Weixin (personal, ilink) | ✅（beta）— HTTP long polling — no public IP needed |\n| Platform | QQ (NapCat/OneBot) | ✅ WebSocket — Beta |\n| Platform | QQ Bot (Official) | ✅ WebSocket — no public IP needed |\n\n---\n\n## 📖 Platform Setup Guides\n\n| Platform | Guide | Connection | Public IP? |\n|----------|-------|------------|------------|\n| Feishu (Lark) | [docs/feishu.md](docs/feishu.md) | WebSocket | No |\n| DingTalk | [docs/dingtalk.md](docs/dingtalk.md) | Stream | No |\n| Telegram | [docs/telegram.md](docs/telegram.md) | Long Polling | No |\n| Slack | [docs/slack.md](docs/slack.md) | Socket Mode | No |\n| Discord | [docs/discord.md](docs/discord.md) | Gateway | No |\n| WeChat Work | [docs/wecom.md](docs/wecom.md) | WebSocket / Webhook | No (WS) / Yes (Webhook) |\n| Weixin (personal) | [docs/weixin.md](docs/weixin.md) | HTTP long polling (ilink) — **beta only** | No |\n| QQ / QQ Bot | [docs/qq.md](docs/qq.md) | WebSocket | No |\n\n---\n\n## 🎯 Key Features\n\n### 💬 Session Management\n\n```\n/new [name]       Start a new session\n/list             List all sessions\n/switch \u003cid\u003e      Switch session\n/current          Show current session\n/dir [path|reset] Show, switch, or reset work directory\n```\n\nProject configs can also rotate to a fresh session automatically after long inactivity:\n\n```toml\n[[projects]]\nreset_on_idle_mins = 60\n```\n\n---\n\n### 🔐 Permission Modes\n\n```\n/mode             Show available modes\n/mode yolo        # Auto-approve all tools\n/mode default     # Ask for each tool\n```\n\n---\n\n### 🔄 Provider Management\n\n```\n/provider list              List providers\n/provider switch \u003cname\u003e     Switch API provider at runtime\n```\n\n---\n\n### 🤖 Model Selection\n\n```\n/model                      List available models (format: alias - model)\n/model switch \u003calias\u003e       Switch to model by alias\n```\n\n---\n\n### 📂 Work Directory\n\n```\n/dir                         Show current work directory and history\n/dir \u003cpath\u003e                  Switch to a path (relative or absolute)\n/dir \u003cnumber\u003e                Switch from history\n/dir -                       Switch to previous directory\n/cd \u003cpath\u003e                   Compatibility alias for /dir \u003cpath\u003e\n```\n\n---\n\n### ⏰ Scheduled Tasks\n\n```bash\n/cron add 0 6 * * * Summarize GitHub trending\n```\n\n### 📎 Agent Attachment Send-Back\n\nWhen an agent generates a local screenshot, chart, PDF, bundle, or other file, it can send that attachment back to the current chat.\n\nFirst release supports:\n- Feishu\n- Telegram\n\nIf your agent does not natively inject the system prompt, run this once in chat after upgrading:\n\n```text\n/bind setup\n```\n\nor:\n\n```text\n/cron setup\n```\n\nThis refreshes the cc-connect instructions in the project memory file so the agent knows how to send attachments back.\n\nYou can control this feature globally in `config.toml`:\n\n```toml\nattachment_send = \"on\"  # default: \"on\"; set to \"off\" to block image/file send-back\n```\n\nThis switch is independent from the agent's `/mode`. It only controls `cc-connect send --image/--file`.\n\nExamples:\n\n```bash\ncc-connect send --image /absolute/path/to/chart.png\ncc-connect send --file /absolute/path/to/report.pdf\ncc-connect send --file /absolute/path/to/report.pdf --image /absolute/path/to/chart.png\n```\n\nNotes:\n- Absolute paths are the safest option.\n- `--image` and `--file` can both be repeated.\n- `attachment_send = \"off\"` disables only attachment send-back; ordinary text replies still work.\n- This command is for generated attachments, not ordinary text replies.\n\n📖 **Full documentation:** [docs/usage.md](docs/usage.md)\n\n---\n\n## 📚 Documentation\n\n- [Usage Guide](docs/usage.md) — Complete feature documentation\n- [INSTALL.md](INSTALL.md) — AI-agent-friendly installation guide\n- [config.example.toml](config.example.toml) — Configuration template\n- [CONTRIBUTING.md](CONTRIBUTING.md) — How to report issues and contribute pull requests\n\n---\n\n## 👥 Community\n\n- [Discord](https://discord.gg/kHpwgaM4kq)\n- [Telegram](https://t.me/+odGNDhCjbjdmMmZl)\n\n---\n\n## 🙏 Contributors\n\n\u003ca href=\"https://github.com/chenhg5/cc-connect/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=chenhg5/cc-connect\u0026v=20250313\" /\u003e\n\u003c/a\u003e\n\n---\n\n## ⭐ Star History\n\n\u003ca href=\"https://www.star-history.com/#chenhg5/cc-connect\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=chenhg5/cc-connect\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=chenhg5/cc-connect\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=chenhg5/cc-connect\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n## 📄 License\n\nMIT License\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with ❤️ by the cc-connect community\u003c/sub\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":["未分类","Go","Agent Bridges"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenhg5%2Fcc-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenhg5%2Fcc-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenhg5%2Fcc-connect/lists"}