Skip to content

Configuration

immich-go is configured via CLI flags and environment variables. There are no configuration files.

Configuration Methods

CLI Flags

bash
immich-go upload \
  --server=http://localhost:2283 \
  --api-key=your-api-key \
  --concurrent-tasks=8 \
  /path/to/photos

Environment Variables

All flags can be set via environment variables:

bash
export IMMICH_GO_UPLOAD_SERVER="http://localhost:2283"
export IMMICH_GO_UPLOAD_API_KEY="your-api-key"
export IMMICH_GO_CONCURRENT_TASKS="8"

immich-go upload /path/to/photos

See the Environment Variables reference for the complete list.

Priority

CLI flags override environment variables.

Global Options

These apply to all commands.

FlagEnvironment VariableDefaultDescription
--log-levelIMMICH_GO_LOG_LEVELINFODEBUG, INFO, WARN, ERROR
--dry-runIMMICH_GO_DRY_RUNfalseSimulate without changes
--concurrent-tasksIMMICH_GO_CONCURRENT_TASKSCPU coresParallel operations (1-20)
--on-errorsIMMICH_GO_ON_ERRORSstopstop, continue, or number
--outputIMMICH_GO_OUTPUTtexttext or json

Server Connection

Command-scoped options. The environment variable includes the command name.

FlagEnvironment VariableDescription
--serverIMMICH_GO_UPLOAD_SERVERServer URL
--api-keyIMMICH_GO_UPLOAD_API_KEYAPI key
--admin-api-keyIMMICH_GO_UPLOAD_ADMIN_API_KEYAdmin API key
--client-timeoutIMMICH_GO_UPLOAD_CLIENT_TIMEOUTRequest timeout (default: 20m)
--skip-verify-sslIMMICH_GO_UPLOAD_SKIP_VERIFY_SSLSkip SSL verification
--on-errorsIMMICH_GO_ON_ERRORSError handling: stop, continue, or number

Replace UPLOAD with ARCHIVE or STACK for other commands.

Upload Options

FlagEnvironment VariableDefaultDescription
--overwriteIMMICH_GO_UPLOAD_OVERWRITEfalseReplace existing files
--session-tagIMMICH_GO_UPLOAD_SESSION_TAGfalseTag with session timestamp
--tagIMMICH_GO_UPLOAD_TAG-Custom tags
--pause-immich-jobsIMMICH_GO_UPLOAD_PAUSE_IMMICH_JOBStruePause server jobs
--no-resume-jobsIMMICH_GO_UPLOAD_NO_RESUME_JOBSfalseDo not resume jobs (testing)
--include-unmatchedIMMICH_GO_UPLOAD_INCLUDE_UNMATCHEDfalseUpload even if JSON match fails

Source Modes

FlagEnvironment VariableDescription
--googleIMMICH_GO_UPLOAD_GOOGLEGoogle Photos takeout
--icloudIMMICH_GO_UPLOAD_ICLOUDiCloud export
--picasaIMMICH_GO_UPLOAD_PICASAPicasa mode
--from-immichIMMICH_GO_UPLOAD_FROM_IMMICHImmich-to-Immich

File Filtering

FlagEnvironment VariableDescription
--date-rangeIMMICH_GO_UPLOAD_DATE_RANGEDate filter
--include-extensionsIMMICH_GO_UPLOAD_INCLUDE_EXTENSIONSOnly these extensions
--exclude-extensionsIMMICH_GO_UPLOAD_EXCLUDE_EXTENSIONSSkip these extensions
--include-typeIMMICH_GO_UPLOAD_INCLUDE_TYPEIMAGE or VIDEO
--ban-fileIMMICH_GO_UPLOAD_BAN_FILEExclude patterns

Album Options

FlagEnvironment VariableDefaultDescription
--folder-as-albumIMMICH_GO_UPLOAD_FOLDER_AS_ALBUMNONEFOLDER, PATH, NONE
--folder-as-tagsIMMICH_GO_UPLOAD_FOLDER_AS_TAGSfalseFolders as tags
--into-albumIMMICH_GO_UPLOAD_INTO_ALBUM-Single album
--album-path-joinerIMMICH_GO_UPLOAD_ALBUM_PATH_JOINER" / "Path separator

Stacking Options

FlagEnvironment VariableValues
--manage-raw-jpegIMMICH_GO_UPLOAD_MANAGE_RAW_JPEGNoStack, KeepRaw, KeepJPG, StackCoverRaw, StackCoverJPG
--manage-heic-jpegIMMICH_GO_UPLOAD_MANAGE_HEIC_JPEGNoStack, KeepHeic, KeepJPG, StackCoverHeic, StackCoverJPG
--manage-burstIMMICH_GO_UPLOAD_MANAGE_BURSTNoStack, Stack, StackKeepRaw, StackKeepJPEG

Example Configurations

Shell Profile

bash
# ~/.bashrc or ~/.zshrc
export IMMICH_GO_UPLOAD_SERVER="http://localhost:2283"
export IMMICH_GO_UPLOAD_API_KEY="your-api-key"
export IMMICH_GO_CONCURRENT_TASKS="8"
export IMMICH_GO_UPLOAD_MANAGE_RAW_JPEG="StackCoverRaw"
export IMMICH_GO_UPLOAD_PAUSE_IMMICH_JOBS="true"

Then run without repeating options:

bash
immich-go upload /photos
immich-go upload --google /takeout-*.zip

Wrapper Script

bash
#!/bin/bash
# immich-upload.sh

export IMMICH_GO_UPLOAD_SERVER="http://localhost:2283"
export IMMICH_GO_UPLOAD_API_KEY="$(cat ~/.config/immich-go/api-key)"

immich-go upload \
  --manage-raw-jpeg=StackCoverRaw \
  --manage-burst=Stack \
  --session-tag \
  "$@"

Systemd Environment File

bash
# /etc/immich-go.env
IMMICH_GO_UPLOAD_SERVER=http://localhost:2283
IMMICH_GO_UPLOAD_API_KEY=your-api-key
IMMICH_GO_CONCURRENT_TASKS=4

Date Range Formats

FormatExampleDescription
Year2023Entire year
Month2023-07Entire month
Day2023-07-15Single day
Range2023-01-15,2023-03-15Start to end