No description
Find a file
Marc Plano-Lesay 47c039cc71
All checks were successful
Checking Renovate configuration / validate (pull_request) Successful in 1m37s
Build and test / Tests (pull_request) Successful in 1m52s
Build and test / Clippy (pull_request) Successful in 1m52s
Checking yaml / Run yamllint (pull_request) Successful in 3s
Build and test / Build AMD64 (pull_request) Successful in 1m53s
Build and test / Generate Documentation (pull_request) Successful in 1m53s
chore(deps): update rust crate progenitor to 0.11.0
2025-08-01 14:58:17 +10:00
.forgejo/workflows chore: migrate CI to Forgejo 2025-08-01 12:04:38 +10:00
nix chore: improve Nix flake 2025-08-01 11:35:27 +10:00
src chore(deps): update rust crate progenitor to 0.11.0 2025-08-01 14:58:17 +10:00
.envrc Initial commit 2024-10-23 20:36:36 +11:00
.gitignore chore: improve Nix flake 2025-08-01 11:35:27 +10:00
.yamllint.yaml chore: migrate CI to Forgejo 2025-08-01 12:04:38 +10:00
build.rs chore: make Clippy happy 2025-08-01 11:48:41 +10:00
Cargo.lock chore(deps): update rust crate progenitor to 0.11.0 2025-08-01 14:58:17 +10:00
Cargo.toml chore(deps): update rust crate progenitor to 0.11.0 2025-08-01 14:58:17 +10:00
flake.lock chore: improve Nix flake 2025-08-01 11:35:27 +10:00
flake.nix chore: improve Nix flake 2025-08-01 11:35:27 +10:00
LICENSE Add LICENSE 2024-10-28 05:02:36 +00:00
README.md Add new features to the README 2024-11-05 14:28:43 +11:00
renovate.json chore: migrate CI to Forgejo 2025-08-01 12:04:38 +10:00

Immich CLI utilities

immich-tools is a small command-line utility interacting with an Immich server. It offers the following features:

  • List named faces that do not have an associated date of birth
  • Synchronise date of births from a vcard file
  • List and delete assets, including filtering offline assets only
  • Show details about the server

Some other features are planned, mainly around using external libraries. Feature ideas and contributions welcome.

Configuration

Different options need to be passed to this tool, mainly:

  • server_url: the API endpoint of the Immich instance to work on
  • api_key: the API key to use

These can be passed through different mechanisms:

  • Command line arguments, e.g. immich-tools --server-url https://photos.example.com/api --api-key api-key-goes-here server version
  • Environment variables prefixed with IMMICH_TOOLS_, e.g. IMMICH_TOOLS_SERVER_URL=https://photos.example.com/api IMMICH_TOOLS_API_KEY=api-key-goes-here immich-tools server version
  • Environment variables pointing to files, suffixed with _FILE, e.g. IMMICHTOOLS_SERVER_URL_FILE=~/immich-url.txt IMMICH_TOOLS_API_KEY_FILE=~/immich-api-key.txt immich-tools server version. This is mostly useful for secrets.
  • Through a configuration file, in a well-known, OS-dependent location (on Linux, ~/.config/immichtools/config.toml, on macOS, ~/Library/Application Support/fr.enoent.Immich-Tools/config.toml, and on Windows ~\AppData\Roaming\enoent\Immich Tools\config\config.toml). Note that keys in this file can also be suffixed with _file and point to a file containing the value, instead of the value directly.

Command line arguments take precedence over environment variables, which in turn take precedence over the configuration file.

Example configuration file

server_url = "https://photos.example.com/api"
api_key_file = "/home/example/.config/immichtools/apikey"

[people.sync_date_of_births]
vcard = "/home/example/contacts.vcf"

Immich API bindings

The bindings are generated automatically from src/immich-openapi-specs.json. The file currently in the repo has been generated with Immich v1.119.1, with a few methods removed around file upload (Progenitor doesn't yet support multipart/form-data content types, see here). All other methods should be available.