Skip to main content

CLI Reference

This page is auto-generated from the Click command definitions. Run make docs-cli to regenerate.

analyze

Analyze videos and cache metadata.

immich-memories analyze [OPTIONS]
FlagTypeDefaultDescription
--year, -yinteger-Year to analyze
--force, -fbooleanfalseForce re-analysis of cached videos

auto

Automation -- detect and generate memory candidates.

immich-memories auto [OPTIONS]

auto history

Show recent auto-generated memories.

immich-memories auto history [OPTIONS]
FlagTypeDefaultDescription
--limitinteger10Number of entries to show

auto install

Install system-level scheduler (launchd/systemd/cron).

immich-memories auto install [OPTIONS]
FlagTypeDefaultDescription
--hourinteger range9Hour to run (0-23)
--minuteinteger range0Minute to run (0-59)
--cooldowninteger24Cooldown hours between runs
--uninstallbooleanfalseRemove installed scheduler
--showbooleanfalseShow config without installing
--forcebooleanfalseSchedule this install even when its checkout is a worktree or behind its upstream

auto run

Generate the top-scoring memory candidate.

immich-memories auto run [OPTIONS]
FlagTypeDefaultDescription
--dry-runbooleanfalseShow what would be generated
--forcebooleanfalseSkip cooldown check
--cooldowninteger-Min hours since last auto-run
--uploadbooleanfalseUpload to Immich
--quietbooleanfalseMachine-friendly output

auto status

Show durable automation and external scheduler state.

immich-memories auto status [OPTIONS]
FlagTypeDefaultDescription
--jsonbooleanfalseMachine-readable output

auto suggest

Show prioritized memory candidates.

immich-memories auto suggest [OPTIONS]
FlagTypeDefaultDescription
--jsonbooleanfalseMachine-readable output
--limitinteger10Max candidates to show
--typetext-Filter by memory type

auto test-notification

Send a test notification to verify Apprise URL configuration.

immich-memories auto test-notification [OPTIONS]

cache

Manage the analysis cache (LLM scores, video metadata).

immich-memories cache [OPTIONS]

cache backup

Backup the entire cache DB (safe SQLite backup API).

immich-memories cache backup [OPTIONS]

Arguments:

  • output_path (path)

cache export

Export asset scores to JSON (safe, lock-aware).

immich-memories cache export [OPTIONS]

Arguments:

  • output_path (path)

cache import

Import asset scores from JSON backup.

immich-memories cache import [OPTIONS]

Arguments:

  • input_path (path)

cache stats

Show cache statistics.

immich-memories cache stats [OPTIONS]

config

Configure Immich connection settings.

immich-memories config [OPTIONS]
FlagTypeDefaultDescription
--url, -utext-Immich server URL
--api-key, -ktext-Immich API key
--show, -sbooleanfalseShow current configuration

Arguments:

  • action (choice)

days-due

Show which discovered days have an anniversary about now.

immich-memories days-due [OPTIONS]
FlagTypeDefaultDescription
--ondatetime-The date to look around (default today)
--cataloguefile~/.immich-memories/special-days.json

discover-days

Find days something happened on, and remember them for later.

Meant to run occasionally rather than per generation: the point of a catalogue is a memory nobody asked for — five years to the day since the wedding — and that needs the days found in advance.

Days inside a trip are skipped, since a trip memory already tells that story, and so are holidays, which have their own.

Resumes by default: years already in the catalogue are not scanned again, which matters for a command that runs for hours. --rescan starts over.

immich-memories discover-days [OPTIONS]
FlagTypeDefaultDescription
--sinceinteger2007First year to scan
--untilinteger2026Last year to scan
--per-yearinteger6Busiest candidates to ask about
--also-skiptext-A holiday name or MM-DD this library keeps that the defaults miss
--outfile~/.immich-memories/special-days.jsonWhere to write the catalogue
--rescanbooleanfalseStart over, ignoring and replacing the existing catalogue

export-project

Export project state for later editing.

immich-memories export-project [OPTIONS]
FlagTypeDefaultDescription
--year, -yinteger-Year
--person, -ptext-Person name
--output, -opath-Output JSON file

generate

Generate a video compilation.

Memory type presets:
--memory-type season --season summer --year 2024
--memory-type person_spotlight --person "Alice" --year 2024
--memory-type multi_person --person "Alice" --person "Bob" --year 2024
--memory-type monthly_highlights --month 7 --year 2024
--memory-type on_this_day
Manual time period options:
--year 2024 Calendar year
--year 2024 --birthday 02/07 Birthday-based year
--start 2024-01-01 --end 2024-06-30 Custom range
--start 2024-01-01 --period 6m Period from start
immich-memories generate [OPTIONS]
FlagTypeDefaultDescription
--year, -yinteger-Year to generate video for (calendar year by default)
--starttext-Start date (YYYY-MM-DD)
--endtext-End date (use with --start)
--periodtext-Period from start date (e.g., 6m, 1y, 2w)
--birthday, -btext-Run the year up to a birthday, plus earlier birthdays (reads Immich's birth date, or override with MM-DD, e.g. 03-15)
--from-albumtext-Generate from an Immich album (name or ID) instead of a date range
--person, -ptext-Person name (repeatable)
--memory-typechoice: year_in_review | season | person_spotlight | multi_person | monthly_highlights | on_this_day | trip | holiday | then_and_now | special_day-Memory type preset
--holidaytext-Holiday name or MM-DD (use with --memory-type holiday)
--seasonchoice: spring | summer | fall | autumn | winter-Season (use with --memory-type season)
--monthinteger-Month 1-12 (with --year, generates that month; selects trip by month)
--hemispherechoice: north | southnorthHemisphere for season calculation
--duration, -dinteger-Target duration in seconds (default: from memory type preset)
--short-formchoice: 15 | 30 | 60 | 90-Short-form preset: sets the duration and makes the video vertical
--orientationchoice: landscape | portrait | squarelandscapeOutput orientation
--scale-mode, -schoice: fit | blur-How to fill an aspect mismatch: blurred background or black bars (default: from config, else blur)
--transition, -tchoice: smart | cut | crossfade | nonesmartTransition style (default: smart — mix of fades & cuts)
--resolution, -rchoice: auto | 4k | 1080p | 720p-Output resolution (default: config value, 'auto' to match source clips)
--music-volumefloat0.5Music volume 0.0-1.0 (default: 0.5)
--formatchoice: mp4 | h265 | prores-Output format override (default: config value)
--quality, -qchoice: high | medium | low-Output quality (default: from config, typically high)
--output, -o, -Opath-Output file path
--music, -mtext-Music: path to audio file, 'auto' to generate from config, or omit for default behavior
--no-musicbooleanfalseDisable all music (skip both provided files and AI generation)
--dry-runbooleanfalseShow what would be done without generating
--no-renderbooleanfalseRun the real selection — analysis, verify, judge, review — and stop before encoding. Unlike --dry-run, which uses cached analysis only and skips the verify pass, this picks the clips it would actually ship
--trace-selectionfile-Write a stage-by-stage report of how the clips were chosen
--upload-to-immichbooleanfalseUpload generated video back to Immich
--albumtext-Immich album name for uploaded video
--add-datebooleanfalseCaption each clip with its date
--add-placebooleanfalseCaption each clip with its place
--keep-intermediatesbooleanfalseKeep intermediate files for debugging
--privacy-modebooleanfalseBlur faces and mute speech
--titletext-Override video title text
--llm-titlebooleanfalseAsk the LLM for the title instead of using a template (--title still wins)
--subtitletext-Override video subtitle text
--include-live-photosboolean-Include Live Photo video clips (3s iPhone clips, merged when burst-captured)
--include-photosboolean-Include photos as animated Ken Burns clips (blur background, face-aware pan)
--photo-durationfloat-Duration per photo clip in seconds (default: 4.0)
--refinement-passesinteger range-How many times selection may verify, judge and review before settling (default: 10). The biggest dial on warm-run time, and on the bill when llm.base_url points at a paid API
--analysis-depthchoice: auto | fast | thorough-Analysis depth: auto (full analysis for manageable pools), fast (favorites first), or thorough (every eligible clip)
--trip-indexinteger-Select a specific trip by index (use with --memory-type trip)
--all-tripsbooleanfalseGenerate a video for every detected trip (use with --memory-type trip)
--years-backinteger-Years to look back for --birthday, on_this_day, holiday or then_and_now
--near-datetext-Select trip closest to this date (YYYY-MM-DD, use with --memory-type trip)
--daydatetime-The catalogued day to generate (YYYY-MM-DD, use with --memory-type special_day). Its title comes from the catalogue, not from here: run immich-memories days-due to see which days are in it
--quietbooleanfalseSuppress interactive progress, emit log lines

hardware

Show hardware acceleration information.

immich-memories hardware [OPTIONS]

music

Music and audio commands.

immich-memories music [OPTIONS]

music add

Add background music to a video with automatic ducking.

If no music file is provided, automatically selects music based on video mood. Music volume is automatically lowered when speech/sounds are detected.

immich-memories music add [OPTIONS]
FlagTypeDefaultDescription
--music, -mpath-Music file (auto-select if not provided)
--moodtext-Override mood for music selection
--genre, -gtext-Override genre for music selection
--volume, -vfloat-6.0Music volume in dB
--fade-infloat2.0Fade in duration in seconds
--fade-outfloat3.0Fade out duration in seconds

Arguments:

  • video_path (path)
  • output_path (path)

music analyze

Analyze a video to determine its mood for music selection.

immich-memories music analyze [OPTIONS]
FlagTypeDefaultDescription
--ollama-urltext-Ollama API URL (default: from config)
--ollama-modeltext-Ollama vision model (default: from config)

Arguments:

  • video_path (path)

Search for music in local library.

immich-memories music search [OPTIONS]
FlagTypeDefaultDescription
--mood, -mtext-Mood (happy, calm, energetic, etc.)
--genre, -gtext-Genre (acoustic, electronic, cinematic, etc.)
--tempo, -tchoice: slow | medium | fast-Tempo
--min-durationfloat60Minimum duration in seconds
--limit, -ninteger10Number of results

people

Who is in this library, and who they are to each other.

Called on its own this still lists the people Immich knows, which is what immich-memories people has always done.

immich-memories people [OPTIONS]

people scan

Build or refresh the people file from Immich.

Reads every named person's count and month curve, then asks about each remaining pair to find who appears with whom. Nothing here looks at a pixel and nothing here asks you a question — the library's own distribution is the whole input.

Safe to re-run: everything under confirmed: in the file is copied through untouched, and preferred to this pass's reading forever after.

immich-memories people scan [OPTIONS]
FlagTypeDefaultDescription
--min-assetsinteger25Pictures a named person needs before the graph has an opinion
--ownertext-The name of the person whose library this is, if the account does not say
--outfile-Where to write the people file

people show

Print what the last scan wrote down.

immich-memories people show [OPTIONS]
FlagTypeDefaultDescription
--filefile-The people file to read
--tierchoice: inner | recurring | episodic | event-Show only one tier

preflight

Run preflight checks to validate all provider connections.

Checks:

  • Immich server connection and API key
  • LLM availability (Ollama or OpenAI-compatible)
  • Semantic audio analysis (PANNs or energy fallback)
  • Speech boundaries (FireRedVAD runtime)
  • Speech transcription (whisper.cpp runtime)
  • Title rendering (GPU or PIL fallback)
  • Notification delivery health
  • Hardware acceleration
immich-memories preflight [OPTIONS]
FlagTypeDefaultDescription
--verbose, -vbooleanfalseShow detailed output

runs

Browse and manage pipeline run history.

immich-memories runs [OPTIONS]

runs delete

Delete a run and optionally its output files.

Examples:

# Delete run and its output
immich-memories runs delete 20260105_143052_a7b3
# Delete run but keep the video
immich-memories runs delete 20260105_143052_a7b3 --keep-output
immich-memories runs delete [OPTIONS]
FlagTypeDefaultDescription
--keep-outputbooleanfalseKeep the output video file
--yesbooleanfalseConfirm the action without prompting.

Arguments:

  • run_id (text)

runs list

List recent pipeline runs.

Examples:

# List recent runs
immich-memories runs list
# Filter by person
immich-memories runs list --person "John"
# Show only failed runs
immich-memories runs list --status failed
immich-memories runs list [OPTIONS]
FlagTypeDefaultDescription
--limit, -ninteger20Number of runs to show
--person, -ptext-Filter by person name
--status, -schoice: completed | failed | running | cancelled | interrupted-Filter by status

runs show

Show detailed information about a specific run.

Example: immich-memories runs show 20260105_143052_a7b3

immich-memories runs show [OPTIONS]

Arguments:

  • run_id (text)

runs stats

Show aggregate statistics across all runs.

immich-memories runs stats [OPTIONS]

runs storage

Report configured output and cache storage without changing it.

immich-memories runs storage [OPTIONS]
FlagTypeDefaultDescription
--jsonbooleanfalseMachine-readable output

scheduler

Manage scheduled automatic memory generation.

immich-memories scheduler [OPTIONS]

scheduler list

List all configured schedules.

immich-memories scheduler list [OPTIONS]

scheduler start

Start the scheduler daemon.

immich-memories scheduler start [OPTIONS]
FlagTypeDefaultDescription
--foregroundbooleanfalseRun in foreground (don't daemonize)

scheduler status

Show scheduler status.

immich-memories scheduler status [OPTIONS]

titles

Title screen generation and testing commands.

immich-memories titles [OPTIONS]

titles fonts

Manage title screen fonts.

Downloads OFL-licensed fonts from Google Fonts and caches them locally in ~/.immich-memories/fonts/.

immich-memories titles fonts [OPTIONS]
FlagTypeDefaultDescription
--download, -dbooleanfalseDownload all fonts
--clearbooleanfalseClear font cache
--listbooleanfalseList cached fonts

titles test

Generate a test title screen to preview styles.

Examples:

# Simple year title
immich-memories titles test --year 2024
# Birthday title with person name
immich-memories titles test --birthday-age 1 --person "Emma"
# Month divider
immich-memories titles test --month 6 --year 2024 --type month
# Portrait orientation (for social media)
immich-memories titles test --year 2024 --orientation portrait
# French locale with specific style
immich-memories titles test --year 2024 --locale fr --style vintage_charm
immich-memories titles test [OPTIONS]
FlagTypeDefaultDescription
--year, -yinteger-Year for title screen (e.g., 2024)
--birthday-ageinteger-Age for birthday title (e.g., 1 for '1st Year')
--person, -ptext-Person name for subtitle
--month, -minteger-Month for month divider (1-12)
--orientationchoice: landscape | portrait | squarelandscapeOutput orientation
--resolution, -rchoice: 720p | 1080p | 4k1080pOutput resolution
--locale, -lchoice: en | frenLanguage
--style, -schoice: modern_warm | elegant_minimal | vintage_charm | playful_bright | soft_romantic | randomrandomVisual style
--output, -o, -Opath-Output file path
--typechoice: title | month | endingtitleScreen type
--download-fontsbooleanfalseDownload fonts before generating
--no-animated-backgroundbooleanfalseDisable animated backgrounds (static gradient)

ui

Launch the interactive NiceGUI UI.

immich-memories ui [OPTIONS]
FlagTypeDefaultDescription
--port, -pinteger-Port to run the UI on (default: config or 8080)
--host, -htext-Host to bind to (default: config or 0.0.0.0)
--reloadbooleanfalseEnable hot reload (for development only)

years

List years with video content.

immich-memories years [OPTIONS]