clibot

English | ไธญๆ็
clibot is a lightweight middleware that bridges ACP-compatible AI CLI tools (Claude Code, Gemini CLI, OpenCode) to IM platforms (Discord, Telegram, Feishu, DingTalk, QQ, WeChat). Use powerful desktop AI programming assistants from your phone with streaming responses - no public IP required.
โจ Features
- ๐ No Public IP Required: All bots connect via long-connections (WebSocket/Long Polling). Deploy on your home/office computer behind NAT.
- ๐ฑ Access Anywhere: Use desktop AI tools from mobile phone via IM apps
- ๐ฏ Unified Entry Point: Manage multiple AI tools through a single bot
- ๐ Flexible Extension: Add new CLI or Bot by implementing interfaces
- โก ACP Support: Streaming responses, no tmux required (for compatible CLIs)
โจ Claude Code Skill
For Claude Code users, an interactive skill is available for one-command setup:
/clibot setup
The skill handles everything: binary download, bot token setup, config generation, and service startup โ all through a guided wizard. No manual config editing required.
See skills/clibot/ for details.
๐ Quick Start
Prerequisites
For detailed installation instructions, see INSTALL.md.
Install
go install github.com/keepmind9/clibot@latest
The binary will be installed at ~/go/bin/clibot. Make sure it's in your PATH:
export PATH=$PATH:~/go/bin
๐ Network Proxy
clibot supports network proxies for accessing IM platforms in restricted networks.
Quick Setup
# Using environment variables
export HTTP_PROXY="http://127.0.0.1:7890"
clibot serve
# Or configure in config.yaml
proxy:
enabled: true
url: "http://127.0.0.1:7890"
Supported Protocols
- HTTP/HTTPS proxy
- SOCKS5 proxy
- Optional username/password authentication
Documentation
See Proxy Configuration Guide for details.
๐ Get Your User ID
Before configuring clibot, you need to get your user ID from the IM platform for whitelist and admin setup.
Quick Method
Step 1: Start clibot with whitelist temporarily disabled:
# ~/temp_config.yaml
security:
whitelist_enabled: false # Temporarily disable
bots:
telegram:
enabled: true
token: "YOUR_BOT_TOKEN"
Step 2: Run clibot:
clibot serve --config ~/temp_config.yaml
Step 3: Send echo command to your bot:
echo
Step 4: Bot replies with your user ID:
๐ Your IM Information
Platform: telegram
User ID: 123456789
Step 5: Update your actual config with your user ID:
security:
whitelist_enabled: true
allowed_users:
telegram:
- "123456789" # Your actual user ID
admins:
telegram:
- "123456789" # Your actual user ID
Important: Delete ~/temp_config.yaml and restart with proper config.
# Create config directory
mkdir -p ~/.config/clibot
# Copy configuration template
cp configs/config.mini.yaml ~/.config/clibot/config.yaml
# Edit configuration (replace YOUR_* placeholders)
nano ~/.config/clibot/config.yaml
Run
clibot serve --config ~/.config/clibot/config.yaml
๐ก Operation Modes
ACP Mode (Recommended) โญ
Best for: claude-agent-acp, Gemini CLI with ACP, OpenCode with ACP
Advantages:
- โ
No tmux required
- โ
Streaming responses (real-time)
- โ
Full-duplex communication
- โ
Works on all platforms
Configuration:
sessions:
- name: "my-project"
work_dir: "/path/to/project"
start_cmd: "claude-agent-acp"
transport: "stdio://"
Setup ACP CLI:
# Install ACP adapter for Claude Code
npm install -g @zed-industries/claude-agent-acp
# Gemini CLI
gemini --experimental-acp
# OpenCode CLI
opencode --acp
Hook Mode
Best for: Claude Code, Gemini CLI, OpenCode (default mode)
Advantages:
- โ
Real-time notifications
- โ
Accurate completion detection
Requirements:
- โ ๏ธ Requires tmux
- โ ๏ธ Requires CLI hook configuration
Configuration:
sessions:
- name: "my-project"
work_dir: "/path/to/project"
start_cmd: "claude"
See CLI Hook Configuration Guide for detailed setup.
Mode Selection
Priority: ACP > Hook
ACP Mode provides better user experience and should be preferred when available.
๐ฑ Setup Bot
Feishu (Recommended)
- Create a Feishu app at Open Platform
- Get App ID and App Secret
- Configure bot:
bots:
feishu:
enabled: true
app_id: "cli_xxxxxxxxx"
app_secret: "xxxxxxxxxxxxxxxx"
Discord
- Create a Discord application at Discord Developer Portal
- Create a bot and get token
- Invite bot to your server
- Configure:
bots:
discord:
enabled: true
token: "YOUR_BOT_TOKEN"
channel_id: "YOUR_CHANNEL_ID"
Telegram
- Create a bot via BotFather
- Get bot token
- Configure:
bots:
telegram:
enabled: true
token: "YOUR_BOT_TOKEN"
QQ
- Create a QQ bot at QQ Open Platform
- Get App ID and App Secret
- Configure:
bots:
qq:
enabled: true
app_id: "YOUR_QQ_APP_ID"
app_secret: "YOUR_QQ_APP_SECRET"
Note: QQ bot uses WebSocket for receiving messages and HTTP API for sending. Supports C2C (private chat) messages.
WeChat
WeChat bot uses QR code login instead of a static token. On first run, scan the QR code with your WeChat app to authenticate.
- Enable the bot and run clibot:
- Scan the QR code when prompted (rendered in terminal)
- Click "Confirm" in WeChat to authorize
- Credentials are saved automatically for future runs
bots:
weixin:
enabled: true
# Optional: credentials file path (default: ~/.clibot/weixin/credentials.json)
# credentials_path: "~/.clibot/weixin/credentials.json"
Note: The first login requires scanning the QR code in a terminal with a display. After initial authentication, credentials are stored and reused automatically. Session expiry (code -14) will require re-scanning.
๐ฎ Usage
Special Commands
slist # List all sessions
suse <session> # Switch to session
snew <name> <type> <dir> [cmd] # Create new session (admin only)
sdel <name> # Delete session (admin only)
sclose [name] # Close session
sstatus [name] # Show session status
whoami # Show your info
status # Show all session status
echo # Show your IM info
help # Show help
Special Keywords
โ ๏ธ Hook Mode Only: These keywords only work in Hook mode with tmux.
tab # Send Tab key (autocomplete)
esc # Send Escape key
s-tab # Send Shift+Tab
enter # Send Enter key
ctrl-c # Send Ctrl+C (interrupt)
Note: These keywords simulate key presses via tmux send-keys. They only work in Hook mode. ACP mode uses direct protocol communication and does not support these keywords.
Example Workflow
You: slist
Bot: Available Sessions:
โข claude (acp)
โข gemini (gemini)
You: suse claude
Bot: โ Switched to session: claude
You: help me write a python function to parse json
Bot: [AI response...]
๐ง Deployment
Run as systemd service (Linux/macOS)
# Create systemd user directory
mkdir -p ~/.config/systemd/user
# Install service file
cp deploy/clibot.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable clibot
systemctl --user start clibot
# View logs
journalctl --user -u clibot -f
Run as supervisor service
# Install supervisor
sudo apt-get install supervisor
# Install config file
sudo cp deploy/clibot.conf /etc/supervisor/conf.d/
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start clibot
For detailed deployment guide, see deploy/DEPLOYMENT.md.
๐ Security
โ ๏ธ User whitelist must be enabled (default: whitelist_enabled: true)
Only whitelisted users can use clibot. Always configure allowed_users and admins in your config file.
๐๏ธ Project Structure
clibot/
โโโ cmd/ # CLI entry point
โโโ internal/
โ โโโ core/ # Core logic
โ โโโ cli/ # CLI adapters
โ โโโ bot/ # Bot adapters
โโโ configs/ # Configuration templates
โโโ docs/ # Documentation
๐ Documentation
๐ค Contributing
Contributions are welcome! Please read AGENTS.md for development guidelines.
๐ License
MIT