event.SessionID can be empty in some cases, causing the agent_session_id to never be written to disk. When cc-connect restarts, the session resumes without any agent_session_id and Claude Code treats it as a brand new conversation, losing all context. Fix: use state.agentSession.CurrentSessionID() (interactive mode) and agentSession.CurrentSessionID() (relay mode) instead, which always returns the actual session ID held by the agent. Also call sessions.Save() after SetAgentSessionID() to ensure the change is flushed to disk. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Control your local AI agents from any chat app. Anywhere, anytime.
cc-connect bridges AI agents running on your machine to the messaging platforms you already use.
Code review, research, automation, data analysis — anything an AI agent can do,
now accessible from your phone, tablet, or any device with a chat app.
🆕 What's New (beta)
These highlights are in beta / pre-release builds — install
cc-connect@betaor grab a pre-release binary. They are not in the default stable release yet; details may change before promotion to stable.
- 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 - 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.
- Friendlier
--continue— Fork-on-continue so your bridge session doesn’t inherit a half-finished CLI terminal session by accident. - Cron with boundaries — Run jobs in a fresh session each time and cap per-job timeouts so runaway tasks don’t wedge the bot.
- Richer platforms — e.g. Discord
@everyone/@here, Telegram voice-style replies, Feishu fixes for reply threading and async dispatch.
🧩 Platform feature snapshot
High-level view of what each built-in platform can do in cc-connect. Inspired by OpenClaw China’s feature matrix — handy for comparing channels at a glance.
Legend
| Symbol | Meaning |
|---|---|
| ✅ | Works in stable cc-connect with typical configuration |
| ✅(beta) | Beta / pre-release only — the Weixin (personal) column: install cc-connect@beta or a pre-release binary; not in the default stable npm build yet |
| ⚠️ | Partial, needs extra config (e.g. speech / ASR), or limited by the vendor app or API |
| ❌ | Not supported or not applicable in practice |
† QQ (NapCat / OneBot) — unofficial self-hosted bridge; behaviour depends on your NapCat / network setup.
| Capability | Feishu | DingTalk | Telegram | Slack | Discord | LINE | WeCom | Weixin (personal) |
QQ† | QQ Bot |
|---|---|---|---|---|---|---|---|---|---|---|
| Text & slash commands | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅(beta) | ✅ | ✅ |
| Markdown / cards | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ✅(beta) | ✅ | ✅ |
| Streaming / chunked replies | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅(beta) | ✅ | ✅ |
| Images & files | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅(beta) | ✅ | ✅ |
| Voice / STT / TTS | ⚠️ | ⚠️ | ✅ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅(beta) | ⚠️ | ⚠️ |
| Private (DM) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅(beta) | ✅ | ✅ |
| Group / channel | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅(beta) | ✅ | ✅ |
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.
WeCom: Webhook mode needs a public URL; long-connection / WS style setups often do not.
Voice row: many platforms need[speech]/ TTS providers enabled inconfig.toml; values are a best-effort summary.
Per-platform setup: Platform setup guides below.
✨ Why cc-connect?
🤖 Universal Agent Support
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.
📱 Platform Flexibility
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 or a GitHub pre-release binary; the default stable npm package does not ship the weixin platform yet. Most platforms need zero public IP.
🔄 Multi-Agent Orchestration
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.
🎮 Complete Chat Control
Full Control from Chat — Switch models (/model), tune reasoning (/reasoning), change permission modes (/mode), manage sessions, all via slash commands.
Directory Switching in Chat — Change where the next session starts with /dir <path> (and /cd <path> as a compatibility alias), plus quick history jump via /dir <number> / /dir -.
🧠 Persistent Memory
Agent Memory — Read and write agent instruction files (/memory) without touching the terminal.
⏰ Intelligent Scheduling
Scheduled Tasks — Set up cron jobs in natural language. "Every day at 6am, summarize GitHub trending" just works.
🎤 Multimodal Support
Voice & Images — Send voice messages or screenshots; cc-connect handles STT/TTS and multimodal forwarding.
📦 Multi-Project Architecture
Multi-Project — One process, multiple projects, each with its own agent + platform combo.
🌍 Multilingual Interface
5 Languages — Native support for English, Chinese (Simplified & Traditional), Japanese, and Spanish. Built-in i18n ensures everyone feels at home.
Left:Lark | Telegram | Right:Wechat
🚀 Quick Start
🤖 Install & Configure via AI Agent (Recommended)
The easiest way — Send this to Claude Code or any AI coding agent, and it will handle the entire installation and configuration for you:
Follow https://raw.githubusercontent.com/chenhg5/cc-connect/refs/heads/main/INSTALL.md to install and configure cc-connect.
📦 Manual Install
Via npm:
# Stable version
npm install -g cc-connect
# Beta version (more features, may be unstable)
npm install -g cc-connect@beta
Personal WeChat (Weixin ilink): only available in beta / pre-release builds (
cc-connect@betaor a prerelease asset under Releases). Stablenpm install -g cc-connectdoes not include this platform until it graduates from beta.
Download binary from GitHub Releases:
# Linux amd64 - Stable
curl -L -o cc-connect https://github.com/chenhg5/cc-connect/releases/latest/download/cc-connect-linux-amd64
chmod +x cc-connect
sudo mv cc-connect /usr/local/bin/
# Beta version (from pre-release)
curl -L -o cc-connect https://github.com/chenhg5/cc-connect/releases/download/v1.x.x-beta/cc-connect-linux-amd64
Build from source (requires Go 1.22+):
git clone https://github.com/chenhg5/cc-connect.git
cd cc-connect
make build
⚙️ Configure
mkdir -p ~/.cc-connect
cp config.example.toml ~/.cc-connect/config.toml
vim ~/.cc-connect/config.toml
Set admin_from = "alice,bob" in a project to allow those user IDs to run privileged commands such as /dir and /shell.
When a user runs /dir reset, cc-connect restores the configured work_dir and clears the persisted override stored under data_dir/projects/<project>.state.json.
▶️ Run
./cc-connect
🔄 Upgrade
# npm
npm install -g cc-connect
# Binary self-update
cc-connect update # Stable
cc-connect update --pre # Beta (includes pre-releases)
📊 Support Matrix
| Component | Type | Status |
|---|---|---|
| Agent | Claude Code | ✅ Supported |
| Agent | Codex (OpenAI) | ✅ Supported |
| Agent | Cursor Agent | ✅ Supported |
| Agent | Gemini CLI (Google) | ✅ Supported |
| Agent | Qoder CLI | ✅ Supported |
| Agent | OpenCode (Crush) | ✅ Supported |
| Agent | iFlow CLI | ✅ Supported |
| Agent | Goose (Block) | 🔜 Planned |
| Agent | Aider | 🔜 Planned |
| Platform | Feishu (Lark) | ✅ WebSocket — no public IP needed |
| Platform | DingTalk | ✅ Stream — no public IP needed |
| Platform | Telegram | ✅ Long Polling — no public IP needed |
| Platform | Slack | ✅ Socket Mode — no public IP needed |
| Platform | Discord | ✅ Gateway — no public IP needed |
| Platform | LINE | ✅ Webhook — public URL required |
| Platform | WeChat Work | ✅ WebSocket / Webhook |
| Platform | Weixin (personal, ilink) | ✅(beta)— HTTP long polling — no public IP needed |
| Platform | QQ (NapCat/OneBot) | ✅ WebSocket — Beta |
| Platform | QQ Bot (Official) | ✅ WebSocket — no public IP needed |
📖 Platform Setup Guides
| Platform | Guide | Connection | Public IP? |
|---|---|---|---|
| Feishu (Lark) | docs/feishu.md | WebSocket | No |
| DingTalk | docs/dingtalk.md | Stream | No |
| Telegram | docs/telegram.md | Long Polling | No |
| Slack | docs/slack.md | Socket Mode | No |
| Discord | docs/discord.md | Gateway | No |
| WeChat Work | docs/wecom.md | WebSocket / Webhook | No (WS) / Yes (Webhook) |
| Weixin (personal) | docs/weixin.md | HTTP long polling (ilink) — beta only | No |
| QQ / QQ Bot | docs/qq.md | WebSocket | No |
🎯 Key Features
💬 Session Management
/new [name] Start a new session
/list List all sessions
/switch <id> Switch session
/current Show current session
/dir [path|reset] Show, switch, or reset work directory
Project configs can also rotate to a fresh session automatically after long inactivity:
[[projects]]
reset_on_idle_mins = 60
🛡️ OS-User Isolation (run_as_user)
On Linux/macOS, a project can spawn its agent under a different Unix user for OS-level file-system isolation from the supervisor user that runs cc-connect. Currently supported by Claude Code.
[[projects]]
name = "claude-sandboxed"
run_as_user = "partseeker-coder"
run_as_env = ["PGSSLROOTCERT"]
The target user needs passwordless sudo from the supervisor, no sudo
of its own, read+write on work_dir, and its own ~/.claude/settings.json
with whatever credentials the agent uses. If you authenticate via
claude.ai OAuth, symlink the target user's ~/.claude/.credentials.json
to the supervisor's copy so token refresh stays in sync — see the
environment propagation checklist
for details. See
docs/usage.md
for the full setup.
Before starting cc-connect, audit the setup with:
cc-connect doctor user-isolation
This runs three go/no-go preflight gates and an isolation probe that reports what the target user can and cannot read. cc-connect refuses to start if any gate fails or if the probe detects a cross-user leak.
🔐 Permission Modes
/mode Show available modes
/mode yolo # Auto-approve all tools
/mode default # Ask for each tool
🔄 Provider Management
/provider list List providers
/provider switch <name> Switch API provider at runtime
🤖 Model Selection
/model List available models (format: alias - model)
/model switch <alias> Switch to model by alias
📂 Work Directory
/dir Show current work directory and history
/dir <path> Switch to a path (relative or absolute)
/dir <number> Switch from history
/dir - Switch to previous directory
/cd <path> Compatibility alias for /dir <path>
⏰ Scheduled Tasks
/cron add 0 6 * * * Summarize GitHub trending
📎 Agent Attachment Send-Back
When an agent generates a local screenshot, chart, PDF, bundle, or other file, it can send that attachment back to the current chat.
First release supports:
- Feishu
- Telegram
If your agent does not natively inject the system prompt, run this once in chat after upgrading:
/bind setup
or:
/cron setup
This refreshes the cc-connect instructions in the project memory file so the agent knows how to send attachments back.
You can control this feature globally in config.toml:
attachment_send = "on" # default: "on"; set to "off" to block image/file send-back
This switch is independent from the agent's /mode. It only controls cc-connect send --image/--file.
Examples:
cc-connect send --image /absolute/path/to/chart.png
cc-connect send --file /absolute/path/to/report.pdf
cc-connect send --file /absolute/path/to/report.pdf --image /absolute/path/to/chart.png
Notes:
- Absolute paths are the safest option.
--imageand--filecan both be repeated.attachment_send = "off"disables only attachment send-back; ordinary text replies still work.- This command is for generated attachments, not ordinary text replies.
📖 Full documentation: docs/usage.md
📚 Documentation
- Usage Guide — Complete feature documentation
- INSTALL.md — AI-agent-friendly installation guide
- config.example.toml — Configuration template
- CONTRIBUTING.md — How to report issues and contribute pull requests
👥 Community
❤️ Sponsor
Want to appear here? Contact us: Email: chg80333@gmail.com | WeChat: mongorz | Telegram | Discord
Sponsors
| Become a sponsor! We offer exclusive benefits for our users. Contact us to learn more about sponsorship opportunities. |
☕ Support the Project
If cc-connect has been helpful to you, consider buying us a coffee! Your support helps us:
- 🛠️ Maintain and improve the project
- 📚 Write better documentation and tutorials
- 🐛 Fix bugs and add new features faster
- ☕ Keep the developers caffeinated
How to Donate
Buy Me a Coffee: https://buymeacoffee.com/cg33
WeChat Pay / Alipay:
| WeChat Pay | Alipay |
|---|---|
![]() |
![]() |
Thank You, Donors! 🎉
We're grateful to everyone who has supported this project. Leave your GitHub username in the donation message if you'd like to be recognized here!
🤝 Commercial Cooperation
We accept the following commercial collaborations:
- Enterprise Customization: Custom deployment for internal AI tooling (Feishu, DingTalk, WeChat Work, Slack, etc.)
- Technical Consulting: AI agent integration and architecture design
- Outsourcing Projects: AI-related system development
Contact: Email: chg80333@gmail.com | WeChat: mongorz | Telegram | Discord
🙏 Contributors
⭐ Star History
📄 License
MIT License
Built with ❤️ by the cc-connect community


