claw2claw-filetransfer
Cross-platform file transfer between OpenClaw agents via rsync over SSH. From Claws for Claws - send files uncomplicated without getting drizzled by hot butter. Use when user wants to sync, backup, or transfer files between agents on different machines.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-claw2claw-filetransfer-v2
Repository
Skill path: skills/christopher-schulze/claw2claw-filetransfer-v2
Cross-platform file transfer between OpenClaw agents via rsync over SSH. From Claws for Claws - send files uncomplicated without getting drizzled by hot butter. Use when user wants to sync, backup, or transfer files between agents on different machines.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install claw2claw-filetransfer into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding claw2claw-filetransfer to shared team environments
- Use claw2claw-filetransfer for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: claw2claw-filetransfer
description: Cross-platform file transfer between OpenClaw agents via rsync over SSH. From Claws for Claws - send files uncomplicated without getting drizzled by hot butter. Use when user wants to sync, backup, or transfer files between agents on different machines.
homepage: https://github.com/claw2claw/filetransfer
metadata:
clawdbot:
emoji: "📦"
requires:
bins:
- rsync
- ssh
install:
- id: rsync
kind: apt
packages:
- rsync
- openssh-client
label: Install rsync + SSH
---
# claw2claw-filetransfer
**File transfer so smooth, even a lobster can do it.** 🦞
Send files between OpenClaw agents without the drama. rsync over SSH - delta transfers, compression, progress bars. Linux, macOS, Windows - we got you covered.
---
## When to Trigger This Skill
Use this skill when user wants to:
- Transfer files between two OpenClaw agents
- Sync project directories bidirectionally
- Backup files to a remote agent
- Pull logs/data from remote agent
- Set up SSH connection between agents
- Move bits from A to B without crying
---
## Quick Start
```bash
# 1. Set up remote agent (one-time)
claw2claw setup 192.168.1.100 --user root
# 2. Send files like a pro
claw2claw send /backup.tar.gz
# 3. Get files back
claw2claw get /remote/logs.txt
# 4. Sync entire directories
claw2claw sync-to-remote ./my-project/
```
---
## Commands
| Command | Description |
|---------|-------------|
| `setup <host>` | Configure remote agent |
| `send <file>` | Upload to remote |
| `get <file>` | Download from remote |
| `sync-to-remote <dir>` | Push directory to remote |
| `sync-from-remote <dir>` | Pull directory from remote |
| `ls <path>` | List remote files |
| `status` | Show connection status |
---
## Options
| Option | Description |
|--------|-------------|
| `-n, --dry-run` | Preview without executing |
| `--compress` | Enable compression (default) |
| `--no-compress` | Disable compression |
| `--debug` | Enable debug output |
---
## Environment Variables
```bash
REMOTE_HOST="192.168.1.100" # Remote IP/hostname
REMOTE_USER="root" # SSH user
REMOTE_PORT="22" # SSH port
SSH_KEY="/path/to/key" # Custom SSH key
RSYNC_BWLIMIT=1000 # KB/s limit
```
---
## Why This Skill?
### Features
- **Delta transfers** - Only sends changed bytes
- **Compression** - Gzip on the wire
- **Progress bars** - Watch it go brrr
- **Bidirectional** - Push or pull
- **Cross-platform** - Linux, macOS, Windows
- **Key-based auth** - No passwords
### Use Cases
- Backup server to local
- Sync code between agents
- Pull logs for analysis
- Deploy static sites
- Share datasets
---
## Installation
### Linux
```bash
# Pre-installed on most distros
sudo apt install rsync
```
### macOS
```bash
brew install rsync
```
### Windows
```bash
# Option A: Git Bash (recommended)
# Download from https://git-scm.com
# Option B: cwrsync
# Download from https://www.itefix.net/cwrsync
# Option C: WSL
wsl --install
```
---
## Platform-Specific Notes
### Git Bash / MSYS2
- Uses Unix-style paths: `/c/Users/...`
- rsync usually pre-installed
- Works out of the box
### Windows Command Prompt / PowerShell
- Use full paths or forward slashes: `C:/Users/...`
- Or use cwrsync
### WSL
- Detected as Linux, works perfectly
- Can communicate with Windows filesystem
### Cygwin
- Install via Cygwin setup
- Path: `/cygdrive/c/Users/...`
---
## Performance Tips
### Compression
```bash
# On (default) - for text files
claw2claw send /logs/*.log
# Off - for already compressed files
claw2claw send /backup.tar.gz --no-compress
```
### Bandwidth
```bash
# Limit to 500 KB/s
RSYNC_BWLIMIT=500 claw2claw send /huge-file.tar.gz
```
### Large Files
```bash
# rsync auto-resumes interrupted transfers
# Just run same command again
claw2claw send /huge-file.tar.gz
```
### Selective Sync
```bash
# Only sync specific patterns
# Use --include and --exclude in rsync manually
# Or sync specific subdirectories
claw2claw sync-to-remote ./src/
```
---
## Testing Connection
### Quick Test
```bash
claw2claw status
```
### Manual SSH Test
```bash
ssh -o ConnectTimeout=5 user@host "echo OK"
```
### Test File Transfer
```bash
# Small test file first
echo "test" > /tmp/test.txt
claw2claw send /tmp/test.txt /tmp/
claw2claw get /tmp/test.txt /tmp/
rm /tmp/test.txt
```
---
## Troubleshooting
### "rsync: command not found"
```bash
# Linux
sudo apt install rsync
# macOS
brew install rsync
# Windows
# Install Git Bash or cwrsync
```
### "Permission denied"
```bash
# Re-run setup to add SSH key
claw2claw setup <host> --user <user>
```
### "Connection timed out"
```bash
# Check host reachable
ping <host>
# Check port open
nc -zv <host> 22
```
---
## Examples
### Daily Backup
```bash
claw2claw send /backups/daily-$(date +%Y%m%d).tar.gz /backups/
```
### Project Sync
```bash
# Morning
claw2claw sync-from-remote /workspace/project/
# Evening
claw2claw sync-to-remote /workspace/project/
```
### Log Collection
```bash
claw2claw get /var/log/syslog ./logs/
```
---
## Security
- SSH key-based auth only
- Keys: `~/.ssh/` (mode 700)
- Config: `~/.claw2claw.conf` (mode 600)
- No passwords in scripts
---
## Related Skills
Works well with:
- `blogwatcher` - Sync RSS feeds between agents
- `github` - Sync repositories after commits
- `playwright-scraper-skill` - Transfer scraped data
- Any skill that needs to share files
---
## Uninstall
```bash
rm /usr/local/bin/claw2claw
rm ~/.claw2claw.conf
rm -rf ~/.claw2claw/
```
---
**Made with 🦞🦞**
*From Claws for Claws. Transfer files uncomplicated.*
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "christopher-schulze",
"slug": "claw2claw-filetransfer-v2",
"displayName": "Claw2claw Filetransfer",
"latest": {
"version": "1.0.0",
"publishedAt": 1771274118909,
"commit": "https://github.com/openclaw/skills/commit/c93604ab7704320f56892e3fe5d89443429f27d2"
},
"history": []
}
```
### references/commands.md
```markdown
# Command Reference
Detailed documentation for all claw2claw commands.
---
## setup
Configure connection to a remote OpenClaw agent.
```bash
claw2claw setup <remote-host> [user] [port]
```
### Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-host>` | Yes | - | IP or hostname |
| `[user]` | No | `root` | SSH username |
| `[port]` | No | `22` | SSH port |
### Examples
```bash
claw2claw setup 192.168.1.100
claw2claw setup 192.168.1.100 admin
claw2claw setup 192.168.1.100 admin 2222
claw2claw setup myserver.example.com
```
### What Happens
1. Tests SSH connectivity
2. Adds SSH key to remote if needed
3. Saves config to `~/.claw2claw.conf`
---
## send
Upload file to remote agent.
```bash
claw2claw send <source> [destination]
```
### Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<source>` | Yes | - | Local file/directory |
| `[destination]` | No | `/tmp/` | Remote path |
### Examples
```bash
claw2claw send /backup.tar.gz
claw2claw send /backup.tar.gz /backups/
claw2claw send ./my-folder/
claw2claw send /huge-file.tar.gz --dry-run
```
---
## get
Download file from remote agent.
```bash
claw2claw get <remote-source> [local-destination]
```
### Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-source>` | Yes | - | Remote file path |
| `[local-destination]` | No | `.` | Local path |
### Examples
```bash
claw2claw get /var/log/syslog
claw2claw get /var/log/syslog ./logs/
claw2claw get /backups/daily/ ./
```
---
## sync-to-remote
Mirror local directory to remote. **Warning: Deletes remote files not in local.**
```bash
claw2claw sync-to-remote <local-directory> [remote-destination]
```
### Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<local-directory>` | Yes | - | Local dir to sync |
| `[remote-destination]` | No | basename | Remote dir |
### Examples
```bash
claw2claw sync-to-remote ./project/
claw2claw sync-to-remote ./project/ /workspace/project/
claw2claw sync-to-remote ./project/ --dry-run
```
---
## sync-from-remote
Mirror remote directory to local. **Warning: Deletes local files not in remote.**
```bash
claw2claw sync-from-remote <remote-directory> [local-destination]
```
### Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-directory>` | Yes | - | Remote dir |
| `[local-destination]` | No | `.` | Local path |
### Examples
```bash
claw2claw sync-from-remote /workspace/
claw2claw sync-from-remote /workspace/project/ ./local/
```
---
## ls
List files on remote.
```bash
claw2claw ls [path]
```
### Examples
```bash
claw2claw ls
claw2claw ls /var/log/
```
---
## status
Show connection status and diagnostics.
```bash
claw2claw status
```
Shows: platform, config, SSH key, connection test, requirements
---
## Options
### -n, --dry-run
Preview without executing.
```bash
claw2claw send /big-file.tar.gz --dry-run
```
### --compress / --no-compress
Toggle compression.
```bash
claw2claw send /video.mp4 --no-compress
```
### --debug
Enable debug output.
```bash
claw2claw send /file.txt --debug
```
---
## Exit Codes
| Code | Meaning |
|------|---------|
| 0 | Success |
| 1 | Error |
| 2 | Invalid args |
| 130 | Interrupted |
```
### references/examples.md
```markdown
# Real-World Examples
Practical examples for common workflows.
---
## Server Backup
### Full Backup Script
```bash
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M%S)
# Create archive
tar -czf /tmp/backup-$DATE.tar.gz -C /var/www html
# Upload
claw2claw send /tmp/backup-$DATE.tar.gz /backups/
# Cleanup
rm /tmp/backup-$DATE.tar.gz
```
### Add to Cron
```bash
crontab -e
# Add: 0 2 * * * /path/to/backup-script.sh
```
---
## Development Sync
### Morning: Get Latest
```bash
claw2claw sync-from-remote /workspace/myapp/
# Edit code...
```
### Evening: Push Changes
```bash
claw2claw sync-to-remote /workspace/myapp/
```
---
## Log Collection
```bash
# Get syslog
claw2claw get /var/log/syslog ./logs/
# Get specific logs
claw2claw get /var/log/nginx/access.log.1 ./logs/
# Get entire log directory
claw2claw sync-from-remote /var/log/nginx/ ./logs/nginx/
```
---
## Database Transfer
### Export & Send
```bash
# Source: Create dump
mysqldump -u root -p mydb > /tmp/mydb.sql
# Send to remote
claw2claw send /tmp/mydb.sql /backups/
```
### Sync Backup Directory
```bash
claw2claw sync-to-remote /backups/mysql/
```
---
## Multi-Agent Setup
**Agent A:**
```bash
claw2claw setup <agent-b-ip> --user root
```
**Agent B:**
```bash
claw2claw setup <agent-a-ip> --user root
```
Now both can initiate transfers!
---
## Bandwidth Management
```bash
# Limit single transfer
RSYNC_BWLIMIT=500 claw2claw send /large-file.tar.gz
# Export for multiple transfers
export RSYNC_BWLIMIT=500
claw2claw send /file1.tar.gz
claw2claw send /file2.tar.gz
```
---
## Platform Examples
### Linux to Linux
```bash
claw2claw send /backup.tar.gz /backups/
```
### Windows (Git Bash) to Linux
```bash
claw2claw send /c/Users/Admin/Documents/file.txt /tmp/
# or
claw2claw send C:/Users/Admin/Documents/file.txt /tmp/
```
### Linux to Windows
```bash
claw2claw send /workspace/data.csv C:/Users/Admin/Documents/
```
### macOS to Linux
```bash
claw2claw sync-to-remote /Users/admin/project/
```
---
## Emergency Recovery
```bash
# Grab everything before decommission
claw2claw sync-from-remote /home/ ./rescued-home/
claw2claw sync-from-remote /var/log/ ./rescued-logs/
claw2claw get /etc/nginx/ ./rescued-etc/nginx/
```
---
## Selective Transfer
```bash
# Only specific file types (workaround)
mkdir /tmp/js-files
cp $(find ./src -name "*.js") /tmp/js-files/
claw2claw send /tmp/js-files/ /remote/src/
rm -rf /tmp/js-files
```
---
## Testing
### Dry Run First
```bash
# Always test with dry-run for large transfers
claw2claw sync-to-remote ./project/ --dry-run
```
### Small Test File
```bash
echo "test" > /tmp/test.txt
claw2claw send /tmp/test.txt /tmp/
claw2claw get /tmp/test.txt /tmp/
rm /tmp/test.txt
```
### Connection Test
```bash
claw2claw status
# or
ssh -o ConnectTimeout=5 user@host "echo OK"
```
---
## Resume Interrupted
```bash
# Just run again - rsync auto-resumes
claw2claw send /huge-file.tar.gz /remote/
# If really stuck, delete partial and retry
ssh user@host "rm /remote/huge-file.tar.gz.part"
claw2claw send /huge-file.tar.gz /remote/
```
```