Skip to main content

icloudpd-web

Release

Overview

  • Warning: This is a public software from personal project that comes without any warranties. You may use it for personal usages at your own risk. You can contribute to the project by submitting a feature request or a bug report via Github issues.
  • icloud-photos-downloader is a CLI tool for downloading iCloud photos and videos.
  • icloudpd-web is an application that provides a web UI wrapper around the icloudpd Python library.
  • The application allows managing multiple icloudpd settings ("policies" in icloudpd-web) through the web UI and monitoring the progress of the downloads.
  • The application bundles a static next.js application in a fastapi server. Therefore, you can spin up the server and use the web UI using the python distribution.

Screenshots

main edit

Installation

Requires Python 3.12+.

pipx install icloudpd-web

Development

Backend (Python, uv):

uv sync --dev
make dev-backend    # http://127.0.0.1:8000

Frontend (Vite, in another terminal):

make install-web
make dev-web        # http://127.0.0.1:5173 with proxy to :8000

Production build:

make build          # builds web into src/icloudpd_web/web_dist and uv-builds the wheel

Once built, icloudpd-web hosts both API and UI on a single port.

First run

Generate a password hash, set the session secret, and start the server:

export ICLOUDPD_WEB_PASSWORD_HASH=$(icloudpd-web init-password yourpassword)
export ICLOUDPD_WEB_SESSION_SECRET=$(openssl rand -hex 32)
icloudpd-web --host 0.0.0.0 --port 8080

Data lives in ~/.icloudpd-web/ by default (override with --data-dir).

Usage

run icloudpd-web --help to see the available options.

User Flow

  • Log in with the server password (set via ICLOUDPD_WEB_PASSWORD_HASH).
  • View all policies on landing. Policies are TOML files in ~/.icloudpd-web/policies/.
  • Create, edit, duplicate, or delete policies through the REST API.
  • Authenticate a policy with iCloud credentials; handle 2FA when required.
  • Start or stop a policy run; stream live logs and progress via SSE.
  • Monitor run history; log files are stored at ~/.icloudpd-web/runs/{policy}/{run_id}.log.

Details

  • The user can add, edit, duplicate, delete, start and stop a policy.
  • Download progress of a policy can be viewed through the SSE log stream or the stored log files.
  • Refer to the example_policy/example.toml for the policy format.
  • Refer to the icloudpd docs for the underlying CLI options.

Technical Details

Architecture

  • Backend: FastAPI (Python 3.12). REST for mutations + SSE for log/progress streaming.
  • icloudpd integration: icloudpd is run as a subprocess (not imported). One subprocess per run; logs captured to ~/.icloudpd-web/runs/{policy}/{run_id}.log.
  • Policies: one TOML file per policy at ~/.icloudpd-web/policies/*.toml, atomic writes.
  • Scheduler: 1 Hz asyncio tick. Cron expressions per policy; overlapping fires are skipped.
  • Auth: single-user server password (scrypt-hashed, set via env var); cookie session.
  • Secrets: iCloud passwords in ~/.icloudpd-web/secrets/*.password (file mode 0600, never returned to clients).
  • 2FA: handled via icloudpd's MFA provider mechanism plus a local file-backed callback.
  • Integrations: Apprise (server-wide notifications) and aws s3 sync (per-policy).

Term of Use

The copyright of icloudpd-web ("the software") fully belongs to the author(s). The software is free to use for personal, educational, or non-commercial purposes only. Unauthorized use to generate revenue is not allowed.

License

This project is licensed under CC BY-NC-4.0. This means:

You can:

  • Use this package for personal projects
  • Modify and distribute the code
  • Use it for academic or research purposes

You cannot:

  • Use this package for commercial purposes
  • Sell the code or any modifications
  • Include it in commercial products

For full license details, see the LICENSE file.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

icloudpd_web-2026.7.24.tar.gz (509.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

icloudpd_web-2026.7.24-py3-none-any.whl (256.4 kB view details)

Uploaded Python 3

File details

Details for the file icloudpd_web-2026.7.24.tar.gz.

File metadata

  • Download URL: icloudpd_web-2026.7.24.tar.gz
  • Upload date:
  • Size: 509.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for icloudpd_web-2026.7.24.tar.gz
Algorithm Hash digest
SHA256 9af469214fa08f740a5f3e956ac48de73746dcd2f036273831ae6b115eb9f3b8
MD5 06d8778f4c794380a464061214011c5e
BLAKE2b-256 137b3d9b3ac00ce573c3ff150526fcb095082a0c95d05a90e48059681a663497

See more details on using hashes here.

File details

Details for the file icloudpd_web-2026.7.24-py3-none-any.whl.

File metadata

  • Download URL: icloudpd_web-2026.7.24-py3-none-any.whl
  • Upload date:
  • Size: 256.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for icloudpd_web-2026.7.24-py3-none-any.whl
Algorithm Hash digest
SHA256 61f11edbafe8948a49187eb4a98c4f77a348d795fb619c8fcb4e245dbcaf3623
MD5 7bfc6a45741f34d1c51a13e60f5e69bc
BLAKE2b-256 5da5c7ddd2e362ead3d79b9b4eef1d8c11bf48671a506a382eae46be699406d7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.7.24 This release

2 files

2026.7.23

2 files

2026.4.20

2 files

2026.2.27

2 files

2025.7.31

2 files

2025.3.18

2 files

2025.1.17

2 files

2025.1.14

2 files

2025.1.9.post1

2 files

2025.1.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page