{"id":47607524,"url":"https://github.com/ozymandiashh/cloudhop","last_synced_at":"2026-04-01T19:37:25.725Z","repository":{"id":345377270,"uuid":"1185702887","full_name":"ozymandiashh/cloudhop","owner":"ozymandiashh","description":"Move files between cloud services. Free, open source, runs on your machine. No accounts, no middleman.","archived":false,"fork":false,"pushed_at":"2026-03-22T21:16:20.000Z","size":40547,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-23T14:12:20.065Z","etag":null,"topics":["cloud-storage","dropbox","file-transfer","google-drive","icloud","onedrive","open-source","privacy","python","rclone"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/cloudhop/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ozymandiashh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"ozymandiashh","custom":["https://buymeacoffee.com/husamsoboh"]}},"created_at":"2026-03-18T21:28:35.000Z","updated_at":"2026-03-23T01:29:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ozymandiashh/cloudhop","commit_stats":null,"previous_names":["husamsoboh-cyber/cloudmirror","husamsoboh-cyber/cloudhop","ozymandiashh/cloudhop"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/ozymandiashh/cloudhop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozymandiashh%2Fcloudhop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozymandiashh%2Fcloudhop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozymandiashh%2Fcloudhop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozymandiashh%2Fcloudhop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ozymandiashh","download_url":"https://codeload.github.com/ozymandiashh/cloudhop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozymandiashh%2Fcloudhop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-storage","dropbox","file-transfer","google-drive","icloud","onedrive","open-source","privacy","python","rclone"],"created_at":"2026-04-01T19:37:25.008Z","updated_at":"2026-04-01T19:37:25.715Z","avatar_url":"https://github.com/ozymandiashh.png","language":"Python","funding_links":["https://github.com/sponsors/ozymandiashh","https://buymeacoffee.com/husamsoboh"],"categories":[],"sub_categories":[],"readme":"[![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/cloudhop.svg)](https://pypi.org/project/cloudhop/)\n[![GitHub stars](https://img.shields.io/github/stars/ozymandiashh/cloudhop.svg?style=social)](https://github.com/ozymandiashh/cloudhop)\n[![Tests](https://github.com/ozymandiashh/cloudhop/actions/workflows/tests.yml/badge.svg)](https://github.com/ozymandiashh/cloudhop/actions/workflows/tests.yml)\n\n# CloudHop\n\n**The easiest way to copy files between cloud storage services. Free, open source, runs on your machine.**\n\n![CloudHop Dashboard](screenshots/dashboard.png)\n\n## Download / Install\n\n**Mac** -- Download `CloudHop.dmg` from [Releases](https://github.com/ozymandiashh/cloudhop/releases)\n\nFirst launch: right-click \u003e Open \u003e click \"Open\" ([why?](https://support.apple.com/en-us/102445))\n\n**Windows** -- Download `CloudHop-windows.zip` from [Releases](https://github.com/ozymandiashh/cloudhop/releases)\n\n**pip**\n```bash\npip install cloudhop \u0026\u0026 cloudhop\n```\n\n**Homebrew**\n```bash\nbrew tap ozymandiashh/tap \u0026\u0026 brew install cloudhop\n```\n\n**From source**\n```bash\ngit clone https://github.com/ozymandiashh/cloudhop \u0026\u0026 cd cloudhop \u0026\u0026 pip install -e . \u0026\u0026 cloudhop\n```\n\n**Docker**\n```bash\ndocker run -d -p 8787:8787 \\\n  -v ~/.config/rclone:/root/.config/rclone:ro \\\n  husamsoboh/cloudhop:latest\n```\n\nThen open http://localhost:8787 in your browser.\n\nNote: Configure your cloud accounts with `rclone config` first, then mount the config into the container.\n\n## Why CloudHop?\n\n- Free and open source, no limits, no account needed\n- Files transfer directly, never touch our servers\n- 70+ cloud providers (Google Drive, OneDrive, Dropbox, iCloud, MEGA, S3, Proton Drive...)\n- Visual wizard, no command line needed\n- Pause, resume, and schedule transfers across restarts\n- Copy, sync, or two-way bisync modes\n\n## How it works\n\n1. **Run CloudHop** -- launch the app or run `cloudhop` in a terminal\n2. **Pick source** -- choose where your files are (e.g., OneDrive)\n3. **Pick destination** -- choose where to copy them (e.g., Google Drive)\n4. **Configure options** -- set parallel transfers, exclude folders, limit bandwidth\n5. **Connect accounts** -- authorize each cloud provider in your browser\n6. **Start transfer** -- watch progress in the live dashboard with speed charts and ETA\n\n## Features\n\n#### Transfer\n\n- Copy, sync, or two-way bisync modes with safety warnings for destructive operations\n- Pause, resume, and cancel active transfers\n- Multi-destination transfers -- copy one source to up to 5 destinations via queue\n- Transfer presets -- save, manage, and re-run configurations with one click\n- Selective copy -- browse and pick specific folders to transfer\n- Exclude folder picker -- visually exclude folders before starting\n- Server-side copy where the provider supports it (no local disk needed)\n- Conflict resolution via checksum verification option\n- Dry-run preview showing file count and total size before starting\n- Transfer receipt -- downloadable summary after completion\n- Post-transfer verification via rclone check\n\n#### Dashboard\n\n- Real-time progress with live speed and file count charts\n- ETA calculation with smoothing\n- File type breakdown by extension\n- Active transfer list showing files in progress\n- Recent files feed\n- Error tracking with user-friendly messages\n- Progress percentage in browser tab title\n- Milestone notifications at 25%, 50%, 75%\n- Completion screen with verify and receipt options\n- Connection-lost banner when the server is unreachable\n\n#### Scheduling \u0026 Bandwidth\n\n- Schedule windows with start/end times in HH:MM format\n- Day-of-week selection for recurring schedules\n- Live bandwidth control during transfers\n- Bandwidth limit presets in the wizard (10M, 1G, 500K, etc.)\n- Auto-pause on battery (macOS)\n\n#### Notifications\n\n- Desktop notifications on macOS and Linux\n- Email notifications on completion and failure via SMTP\n- Browser milestone alerts at 25%, 50%, 75%\n- Sound alert on completion with mute option\n\n#### Settings\n\n- Settings page with dark/light theme toggle and system color-scheme detection\n- SMTP configuration for email notifications with test email button\n\n#### Security\n\n- Localhost-only binding -- not accessible from other machines\n- CSRF protection with double-submit token pattern and timing-safe comparison\n- DNS rebinding protection via Host header validation\n- Input validation on all API endpoints\n- Path traversal prevention using realpath with os.sep checks\n- SSRF prevention -- rejects rclone on-the-fly backend specifiers\n- Credential filtering -- masks 18 sensitive flag patterns in logs and UI\n\n#### AI Integration\n\n- [CloudHop MCP](https://github.com/ozymandiashh/cloudhop-mcp) connects CloudHop to Claude, letting you control transfers through natural language\n- \"Copy my OneDrive photos to Google Drive\" -- just say what you need\n- Preview sizes, start transfers, monitor progress, pause and resume, all from a conversation\n- Works with Claude Code and Claude Desktop\n\n## CLI Usage\n\n```bash\n# Interactive wizard\ncloudhop\n\n# Direct transfer\ncloudhop onedrive: gdrive:backup --transfers=8 --bwlimit=10M\n\n# Subcommands\ncloudhop status\ncloudhop pause\ncloudhop resume\ncloudhop history\n```\n\n## Supported Providers\n\nGoogle Drive, OneDrive, Dropbox, iCloud Drive, MEGA, Amazon S3, Proton Drive, Local Folder + 70 more via rclone\n\n## How is this different from...\n\n**rclone?**\nCloudHop uses rclone as its engine. If you're comfortable with CLI, you don't need this. CloudHop adds a visual wizard and live dashboard.\n\n**MultCloud / CloudFuze?**\nThose are paid SaaS that route files through their servers. CloudHop is free and your files transfer directly between providers.\n\n**Download and re-upload?**\nThat requires local disk space and 2x transfer time. CloudHop uses server-side copy where supported.\n\n## The story\n\nI needed to move 500GB of files from OneDrive to Google Drive. Every tool I found was either paid, required uploading my files to someone else's server, or needed a PhD in command-line tools. So I built CloudHop -- a simple, visual way to move files between any cloud service, running entirely on your own computer. No accounts, no subscriptions, no middleman.\n\n## Screenshots\n\n| Wizard Welcome | Source Selection | Dashboard |\n|:-:|:-:|:-:|\n| ![Wizard Welcome](screenshots/new-wizard-welcome.png) | ![Source Selection](screenshots/wizard-source.png) | ![Dashboard](screenshots/dashboard.png) |\n\n## Support\n\nCloudHop is free and open source. If it saves you time, consider supporting development:\n\n[Sponsor on GitHub](https://github.com/sponsors/ozymandiashh) | [Buy Me a Coffee](https://buymeacoffee.com/husamsoboh)\n\n### Sponsors\n\u003c!-- $100/month sponsors: large logo with link --\u003e\n*Become the first sponsor! Your logo will appear here.*\n\n### Backers\n\u003c!-- $25/month backers: name or small logo --\u003e\n*Become a backer! Your name will appear here.*\n\n### Supporters\n\u003c!-- $3-$10/month supporters: name with optional link --\u003e\n*Support CloudHop and see your name here.*\n\n## Links\n\n[Security](SECURITY.md) | [Privacy](PRIVACY.md) | [Contributing](CONTRIBUTING.md) | [Changelog](CHANGELOG.md)\n\n## License\n\nMIT License -- see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozymandiashh%2Fcloudhop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozymandiashh%2Fcloudhop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozymandiashh%2Fcloudhop/lists"}