PullPath · Download · DownloadBytes · Downloads
This tool on every surface: CLI · MCP · Python · JavaScript · Go · Java · .NET
Bring back a file from where the device keeps downloads — Android's shared Download folder, or on iOS an app's own Documents — to check what an app saved. These call app_download.
PullPath
func (d *Device) PullPath(ctx context.Context, devicePath, local, app string) (*Transfer, error)
PullPath brings back the file or folder at a path on the device — the paths PushPath takes — to local, which must not exist yet for a folder, and checks every file's size against the device's.
Download
func (d *Device) Download(ctx context.Context, name, path, app string) (*Transfer, error)
Download saves the file called name, from where the device keeps downloads, to path on this machine, and checks the copy's size against the device's. On Android the folder is the shared Download folder; on an iOS simulator it is an app's Documents — app, or the one in front when app is empty — and on a real iPhone the same. A relative path is this process's.
DownloadBytes
func (d *Device) DownloadBytes(ctx context.Context, name, app string) ([]byte, error)
DownloadBytes is Download without touching this machine's disk: the file comes back in the answer and is returned as it was on the device.
Downloads
func (d *Device) Downloads(ctx context.Context, app string) ([]DeviceFile, error)
Downloads lists what the folder the device keeps downloads in holds: Android's shared Download folder, or on an iOS simulator an app's Documents — app, or the one in front when app is empty — and on a real iPhone the same. An empty folder is an empty list, not an error.
Examples
Bring back a file an app saved
saved, err := dev.Download(ctx, "mobium-report.txt", "report.txt", "")
if err != nil {
return err
}
fmt.Println(saved.Path, saved.Bytes)
// Or the file itself, as bytes
report, err := dev.DownloadBytes(ctx, "mobium-report.txt", "")
if err != nil {
return err
}
fmt.Println(len(report))
The same call from the command line, mobium download mobium-report.txt -o report.txt, printed on an Android 15 emulator:
downloaded mobium-report.txt from Download/mobium-report.txt to …/report.txt (44 bytes) — confirmed by the copy's size read back against the device's

The Files Demo's Download the report saved mobium-report.txt in the Download folder, and the line under it says how big and which save it was; mobium download brought that file back — on an Android 15 emulator
List what the folder holds
files, err := dev.Downloads(ctx, "")
if err != nil {
return err
}
for _, f := range files {
fmt.Println(f.Name, f.Bytes)
}
The same call from the command line, mobium download, printed on an Android 15 emulator:
the Download folder holds 1 file
mobium-report.txt 44 bytes 2026-09-29 03:41
Bring back a folder from a path on the device
got, err := dev.PullPath(ctx, "/sdcard/seed", "seed-copy", "")
if err != nil {
return err
}
fmt.Println(got.Files, got.Path)
The same call from the command line, mobium download --device-path /sdcard/seed -o seed-copy, printed on an Android 15 emulator:
downloaded seed from /sdcard/seed to …/seed-copy (a folder of 2 files, 8 bytes) — confirmed by each of its 2 files' sizes read back against the device's