Skip to main content

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

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