{"id":51192723,"url":"https://github.com/feoh/ios-filedrop","last_synced_at":"2026-06-27T17:01:49.457Z","repository":{"id":365297114,"uuid":"1271471537","full_name":"feoh/ios-filedrop","owner":"feoh","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-16T18:48:37.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T19:25:46.609Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feoh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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}},"created_at":"2026-06-16T17:39:02.000Z","updated_at":"2026-06-16T18:49:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/feoh/ios-filedrop","commit_stats":null,"previous_names":["feoh/ios-filedrop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/feoh/ios-filedrop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feoh%2Fios-filedrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feoh%2Fios-filedrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feoh%2Fios-filedrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feoh%2Fios-filedrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feoh","download_url":"https://codeload.github.com/feoh/ios-filedrop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feoh%2Fios-filedrop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34860913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-27T17:01:48.829Z","updated_at":"2026-06-27T17:01:49.453Z","avatar_url":"https://github.com/feoh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ios-filedrop\n\n`ios-filedrop` sends a file from Linux to a folder you can open from the iOS\nFiles app. It is meant for small everyday transfers such as PDFs, documents,\nor images that you downloaded on Linux and want on an iPad or iPhone.\n\nThe default setup uses [rclone](https://rclone.org/) with iCloud Drive and\nuploads into an iCloud Drive folder named `FromLinux`.\n\n## Why this exists\n\nApple does not provide a native iCloud Drive client for Linux. `ios-filedrop`\nkeeps the day-to-day command simple while delegating the iCloud connection to\nrclone:\n\n```bash\nios-filedrop ~/Downloads/example.pdf\n```\n\nThe file will appear in iCloud Drive under:\n\n```text\nFromLinux/example.pdf\n```\n\nIf a file with that name already exists, `ios-filedrop` avoids overwriting it\nby using a readable suffix such as `example-1.pdf`.\n\n## Requirements\n\n- Linux\n- Python 3.11 or newer\n- [uv](https://docs.astral.sh/uv/)\n- [rclone](https://rclone.org/install/), built with the `iclouddrive` backend\n- An Apple ID with iCloud Drive enabled\n\nCheck your rclone build with:\n\n```bash\nrclone help backends | grep iclouddrive\n```\n\n## Credential and config location\n\nBy default, rclone stores config in `~/.config/rclone/rclone.conf`.\n`ios-filedrop` deliberately does **not** use that path.\n\nInstead, it sets `RCLONE_CONFIG` to:\n\n```text\n~/.local/state/ios-filedrop/rclone.conf\n```\n\nThis keeps Apple credentials/session data out of Git-managed dotfiles under\n`~/.config`. rclone's iCloud backend stores an obscured password plus session\ntokens/cookies; obscured is not the same as encrypted, so keep this file\nprivate.\n\n`ios-filedrop` creates the containing directory with mode `0700` and permissions\nthe config file as `0600` when it exists.\n\n## Installation\n\n### From a local checkout\n\n```bash\ngit clone https://github.com/feoh/ios-filedrop.git\ncd ios-filedrop\nuv sync\nuv run ios-filedrop --help\n```\n\n### As a uv tool\n\nFrom a local checkout:\n\n```bash\nuv tool install .\nios-filedrop --help\n```\n\nOr, once published/available from GitHub:\n\n```bash\nuv tool install git+https://github.com/feoh/ios-filedrop.git\n```\n\n## One-time setup\n\nRun:\n\n```bash\nios-filedrop setup\n```\n\nor from a checkout:\n\n```bash\nuv run ios-filedrop setup\n```\n\nThis starts interactive `rclone config` using the private config file described\nabove.\n\nRecommended rclone choices:\n\n- Remote name: `icloud`\n- Backend/type: `iclouddrive`\n- Service: `drive`\n\nThe remote name matters. The upload command defaults to `icloud`; if you choose\na different remote name, pass it later with `--remote your-name`.\n\nFollow rclone's prompts for your Apple ID, password, and any two-factor/session\nsteps. If device-push two-factor authentication fails, re-run setup and enter\n`sms` at rclone's 2FA prompt to request a text-message code.\n\nAfter setup, verify it:\n\n```bash\nios-filedrop check\n```\n\n## Usage\n\nUpload a file to the default `FromLinux` folder:\n\n```bash\nios-filedrop ~/Downloads/paper.pdf\n```\n\nUpload to a nested folder:\n\n```bash\nios-filedrop ~/Downloads/paper.pdf --folder 'FromLinux/Papers'\n```\n\nRename during upload:\n\n```bash\nios-filedrop ~/Downloads/paper.pdf --name reading-for-class.pdf\n```\n\nPreview the rclone commands without contacting iCloud or uploading:\n\n```bash\nios-filedrop ~/Downloads/paper.pdf --dry-run\n```\n\nUse a different rclone remote or config path:\n\n```bash\nios-filedrop ~/Downloads/paper.pdf \\\n  --remote mydrive \\\n  --config-path /secure/path/rclone.conf\n```\n\n## Collision behavior\n\n`ios-filedrop` will not overwrite a destination file.\n\nIf `paper.pdf` already exists in the target folder, the upload will use:\n\n```text\npaper-1.pdf\n```\n\nIf that exists too, it tries `paper-2.pdf`, and so on.\n\n## Troubleshooting\n\n### `rclone is not installed or is not on PATH`\n\nInstall rclone using your distro package manager or the upstream install\ninstructions, then run `ios-filedrop setup` again.\n\n### `Remote 'icloud' was not found`\n\nRun `ios-filedrop setup` and create an rclone remote named exactly `icloud`, or\npass the remote you configured:\n\n```bash\nios-filedrop check --remote your-remote-name\n```\n\n### iCloud asks you to sign in again\n\nApple sessions can expire. Re-run:\n\n```bash\nios-filedrop setup\n```\n\nand update the existing `icloud` remote.\n\n### iCloud two-factor authentication fails\n\nrclone may print a long Apple JSON error if device-push or SMS two-factor\nauthentication fails, even when Apple's response says the code was valid.\n\nIf `ios-filedrop check` reports a missing iCloud trust token, try rclone's\nreconnect flow with the isolated config file:\n\n```bash\nRCLONE_CONFIG=~/.local/state/ios-filedrop/rclone.conf \\\n  rclone config reconnect icloud:\n```\n\nIf reconnect still fails during 2FA, the failure is in rclone's iCloud Drive\nauthentication flow. In that case, the practical workaround is to use another\nrclone backend that is visible in the iOS Files app, such as Dropbox, OneDrive,\nGoogle Drive, or WebDAV, and pass that remote with `--remote`.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeoh%2Fios-filedrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeoh%2Fios-filedrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeoh%2Fios-filedrop/lists"}