No description
Find a file
Renovate 5b703310ba
All checks were successful
Build and test / Clippy (pull_request) Successful in 1m59s
Build and test / Build AMD64 (pull_request) Successful in 1m57s
Build and test / Generate Documentation (pull_request) Successful in 1m39s
Checking Renovate configuration / validate (pull_request) Successful in 1m50s
Checking yaml / Run yamllint (pull_request) Successful in 12s
Build and test / Tests (pull_request) Successful in 1m40s
chore(deps): lock file maintenance
2025-08-01 15:06:51 +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): lock file maintenance 2025-08-01 15:06:51 +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.