ccanywhere
v0.1.17
Published
Claude Code Anywhere - A TypeScript CI/CD tool for mobile-friendly development workflows
Downloads
13
Maintainers
Readme
CCanywhere
English | 简体中文
Mobile-friendly CI/CD tool for viewing code diffs when developing via SSH with Claude Code. Automatically captures changes, generates HTML diffs, uploads to cloud storage, and sends notifications.
🎯 Why CCanywhere?
Problem: Can't view code diffs on mobile devices when using Claude Code via SSH.
Solution: Auto-capture changes → Generate mobile HTML diffs → Upload to cloud → Send notification links.
✨ Features
- 📱 Mobile-optimized diff viewing
- 🔗 Claude Code hook integration
- ☁️ Cloud storage (R2, S3, OSS)
- 📬 Multi-channel notifications (Telegram, DingTalk, WeChat Work, Email)
- 🧪 Playwright testing support
- 🚀 Deployment webhooks
🚀 Quick Start
Install
# Global install (recommended)
npm install -g ccanywhere
ccanywhere init
# Or project-specific
npm install -D ccanywhereConfigure
Create ccanywhere.config.json:
{
"artifacts": {
"baseUrl": "https://artifacts.example.com",
"storage": {
"provider": "r2",
"r2": {
"accountId": "YOUR_ACCOUNT_ID",
"accessKeyId": "YOUR_ACCESS_KEY",
"secretAccessKey": "YOUR_SECRET_KEY",
"bucket": "my-bucket"
}
}
},
"notifications": {
"channels": ["telegram"],
"telegram": {
"botToken": "YOUR_BOT_TOKEN",
"chatId": "YOUR_CHAT_ID"
}
}
}Test & Run
# Test configuration
ccanywhere test --all
# Run pipeline
ccanywhere run📖 Commands
ccanywhere init # Initialize configuration
ccanywhere run # Run build pipeline
ccanywhere test # Test configuration
ccanywhere register # Manage Claude Code hooks
ccanywhere cleanup # Clean old artifacts
ccanywhere info # Show configuration infoTest Options
ccanywhere test --all # Test everything
ccanywhere test --notifications # Test notifications only
ccanywhere test --deployment # Test deployment only
ccanywhere test --notifications --send --title "Test" --message "Hello"Claude Code Integration
ccanywhere register # Register Stop hook
ccanywhere register --status # Check hook status
ccanywhere register --remove # Remove hooks⚙️ Configuration
Configuration Hierarchy
- Environment variables (highest priority)
- Project config (
ccanywhere.config.json) - User config (
~/.claude/ccanywhere.config.json) - Defaults
User Configuration
Store common settings in ~/.claude/ccanywhere.config.json:
{
"notifications": {
"channels": ["telegram"],
"telegram": {
"botToken": "YOUR_BOT_TOKEN",
"chatId": "YOUR_CHAT_ID"
}
}
}Environment Variables
Set system environment variables to override configuration:
# Storage
export STORAGE_PROVIDER=r2
export R2_ACCOUNT_ID=your-account-id
export R2_ACCESS_KEY_ID=your-key
export R2_SECRET_ACCESS_KEY=your-secret
export R2_BUCKET=my-bucket
# Notifications
export BOT_TOKEN_TELEGRAM=your-token
export CHAT_ID_TELEGRAM=your-chat-id
# Optional
export DEPLOYMENT_WEBHOOK_URL=https://deploy.example.com/webhook📬 Notifications
Telegram
- Create bot via @BotFather
- Get bot token
- Add bot to chat and get chat ID
{
"email": {
"to": "[email protected]",
"smtp": {
"host": "smtp.gmail.com",
"port": 587,
"user": "[email protected]",
"pass": "your-app-password"
}
}
}DingTalk / WeChat Work
{
"dingtalk": "https://oapi.dingtalk.com/robot/send?access_token=TOKEN",
"wecom": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=KEY"
}🧪 Playwright Testing
# Install Playwright
npm install -D @playwright/test
npx playwright install
# Configure in ccanywhere.config.json
{
"test": {
"enabled": true,
"configFile": "./playwright.config.ts"
}
}📁 Storage Structure
Files are organized as: {folder}/{project-name}/{filename}
- GitHub repo:
https://github.com/owner/repo - Storage path:
diffs/owner/repo/diff-123.html
🚀 Deployment
{
"deployment": "https://deploy.example.com/webhook"
}Webhook receives:
ref: Git commit hashbranch: Current branchtrigger: "ccanywhere"timestamp: Unix timestamp
🔧 Development
# Setup
git clone https://github.com/mylukin/ccanywhere.git
cd ccanywhere
npm install
# Development
npm run dev
# Test
npm test
# Build
npm run build
# Lint & Format
npm run lint
npm run format📝 License
MIT
🆘 Support
Made with ❤️ for developers who code anywhere 📱💻🌍
