ghosthand upload does it for photos and videos:ghosthand upload clip.mp4 ──daemon──> ghosthand.dev (R2, 1 day) ──> https://ghosthand.dev/u/<id> iPhone Safari ──open link, tap Save──> iOS share sheet ──Save Video / Save Image──> Photos │ Photos ──Share > TikTok──> draft or post
| File | Way | Why |
| Photo or video, up to 100 MB | ghosthand upload, Safari Save > Save Video | One command, no install, no server on the Mac |
| Offline, or over 100 MB | USB copy into VLC, then Files Save Video | No network; needs VLC |
ghosthand upload clip.mp4 # https://ghosthand.dev/u/3fK9xQ2mZr7T # clip.mp4 (5234112 bytes), expires 11 Oct 2026 at 16:34. ...
acquire. No lease: the upload does not touch the iPhone..mp4, .jpg): it tells iOS the type.upload tool takes path (a file on the daemon's Mac), or data (base64) with name.ghosthand key -l 42 cmd+space # Spotlight, from any app ghosthand type -l 42 Safari ghosthand key -l 42 enter ghosthand key -l 42 cmd+l # address bar ghosthand type -l 42 https://ghosthand.dev/u/3fK9xQ2mZr7T ghosthand key -l 42 enter ghosthand tap -l 42 --text Save --screentext # wait until it says Save, not Loading... ghosthand tap -l 42 --text "Save Video" # "Save Image" for photos ghosthand photo list -l 42 --limit 1
File, and the Save tap calls navigator.share({ files }). The share sheet of a file has Save Video. navigator.share runs only from a tap, so the button is needed.Info.plist has UIFileSharingEnabled (so --app can write to it) and LSSupportsOpeningDocumentsInPlace (so its folder shows in the Files app).ghosthand app list -l 42 | grep vlc # org.videolan.vlc-ios VLC <version> [file sharing] (page 2)
[file sharing] works too. System apps like Fitness refuse --app.ghosthand file push -l 42 clip.mp4 /Documents/clip.mp4 --app org.videolan.vlc-ios ghosthand key -l 42 cmd+space ghosthand type -l 42 Files ghosthand key -l 42 enter ghosthand tap -l 42 --text Browse ghosthand tap -l 42 --text "On My iPhone" ghosthand tap -l 42 --text VLC ghosthand hold -l 42 --text clip --duration 2000 --screentext ghosthand tap -l 42 --text Share ghosthand tap -l 42 --text "Save Video" # "Save Image" for photos ghosthand photo list -l 42 --limit 1
| Way | Result |
file push to /DCIM | the file is on disk, but Photos does not import it |
| ImageCaptureCore upload | the iPhone does not offer upload, only delete |
| Finder photo sync, iMazing | read-only "From My Mac" albums; needs iCloud Photos off |
Delete PhotoData/Photos.sqlite to force a rebuild | destroys albums and edits; never do it |
| 3uTools, Tenorshare | they need their own app on the iPhone |
ghosthand file remove -l 42 /Documents/clip.mp4 --app org.videolan.vlc-ios ghosthand photo delete -l 42 IMG_0042.MP4 # name from photo list
ghosthand upload (mp4, ghosthand.dev) > Safari > Save > Save Video, the item showed in photo list. Earlier the same day: Mac share page > Save > Save Video (mp4, over a kimaki HTTPS tunnel and over the LAN URL), uguu.se link > Safari > Save to Photos (jpg), and VLC push > Files > Save Video (mp4). Every item showed in photo list.