Back to skills
SkillHub ClubShip Full StackFull Stack

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.

Stars
3,108
Hot score
99
Updated
March 20, 2026
Overall rating
C0.0
Composite score
0.0
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install openclaw-skills-claw2claw-filetransfer-v2

Repository

openclaw/skills

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 repository

Best 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

Claude CodeCodex CLIGemini CLIOpenCode

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/
```

```

claw2claw-filetransfer | SkillHub