Skip to content

Environment Variables

podkit settings can be overridden via environment variables. These take precedence over values in the config file but are overridden by CLI arguments.

Settings Variables

VariableDescription
PODKIT_CONFIGPath to config file (overrides default ~/.config/podkit/config.toml)
PODKIT_QUALITYUnified quality preset (overrides config file quality)
PODKIT_AUDIO_QUALITYAudio-specific quality (overrides config file audioQuality)
PODKIT_VIDEO_QUALITYVideo-specific quality (overrides config file videoQuality)
PODKIT_ENCODINGEncoding mode: vbr or cbr (overrides config file encoding)
PODKIT_TRANSFER_MODETransfer mode: fast, optimized, or portable. Controls whether extra file data is preserved or stripped (overrides config file transferMode)
PODKIT_FORCE_TRANSFER_MODEForce re-processing of all tracks when changing transfer mode (true/false)
PODKIT_CUSTOM_BITRATEOverride target bitrate for AAC encoding, 64-320 kbps (overrides config file customBitrate)
PODKIT_BITRATE_TOLERANCEOverride preset change detection tolerance, 0.0-1.0 (overrides config file bitrateTolerance)
PODKIT_FORCE_TRANSCODEForce re-transcoding of all lossless-source tracks (true/false)
PODKIT_FORCE_SYNC_TAGSWrite sync tags to all matched transcoded tracks without re-transcoding (true/false)
PODKIT_ARTWORKDefault artwork setting (overrides config file artwork)
PODKIT_CHECK_ARTWORKEnable artwork change detection (true/false, overrides config file checkArtwork)
PODKIT_SKIP_UPGRADESSkip file-replacement upgrades during sync (true/false, overrides config file skipUpgrades)
PODKIT_TIPSShow contextual tips (true/false, overrides config file tips)
PODKIT_CLEAN_ARTISTSEnable/disable clean artists (true/false)
PODKIT_CLEAN_ARTISTS_DROPDrop featuring info instead of moving to title (true/false)
PODKIT_CLEAN_ARTISTS_FORMATFormat string for featuring text (e.g., feat. {})
PODKIT_CLEAN_ARTISTS_IGNOREComma-separated artist names to skip (e.g., Simon & Garfunkel,Hall & Oates)
PODKIT_SHOW_LANGUAGEEnable/disable language markers in video series titles (true/false)
PODKIT_SHOW_LANGUAGE_FORMATFormat string for language marker (e.g., ({}), [{}])
PODKIT_SHOW_LANGUAGE_EXPANDExpand language abbreviations to full names (true/false)
SUBSONIC_PASSWORDFallback password for any Subsonic collection

Collection Variables

Collections can be defined entirely via environment variables, eliminating the need for a config file. This is useful for Docker deployments and CI environments.

Music Collections

Define a default music collection (no name required):

VariableDescription
PODKIT_MUSIC_PATHPath to music directory (creates a default directory collection)
PODKIT_MUSIC_TYPECollection type: directory (default) or subsonic
PODKIT_MUSIC_URLSubsonic server URL
PODKIT_MUSIC_USERNAMESubsonic username
PODKIT_MUSIC_PASSWORDSubsonic password

Or define named collections by inserting the collection name (uppercased, hyphens as underscores):

VariableDescription
PODKIT_MUSIC_<NAME>_PATHPath to music directory for collection <NAME>
PODKIT_MUSIC_<NAME>_TYPECollection type for <NAME>
PODKIT_MUSIC_<NAME>_URLSubsonic server URL for <NAME>
PODKIT_MUSIC_<NAME>_USERNAMESubsonic username for <NAME>
PODKIT_MUSIC_<NAME>_PASSWORDSubsonic password for <NAME>

Video Collections

VariableDescription
PODKIT_VIDEO_PATHPath to video directory (creates a default video collection)
PODKIT_VIDEO_<NAME>_PATHPath to video directory for collection <NAME>

Naming Convention

Collection names in env vars use UPPER_SNAKE_CASE, converted to lower-kebab-case in config:

  • PODKIT_MUSIC_MY_SERVER_PATH creates collection my-server
  • PODKIT_MUSIC_MAIN_PATH creates collection main

Auto-Defaulting

When exactly one collection of a given type is defined via env vars, it is automatically set as the default. For example, PODKIT_MUSIC_PATH=/music creates a collection named default and sets it as the default music collection.

Examples

Simple directory source (no config file needed):

Terminal window
PODKIT_MUSIC_PATH=/music podkit sync --device /path/to/ipod

Subsonic source:

Terminal window
export PODKIT_MUSIC_TYPE=subsonic
export PODKIT_MUSIC_URL=https://navidrome.example.com
export PODKIT_MUSIC_USERNAME=user
export PODKIT_MUSIC_PASSWORD=secret
podkit sync --device /path/to/ipod

Multiple named collections:

Terminal window
export PODKIT_MUSIC_MAIN_PATH=/music/library
export PODKIT_MUSIC_VINYL_PATH=/music/vinyl-rips
podkit sync --device /path/to/ipod -c main

Subsonic Password Resolution

For a Subsonic collection named navidrome, the password is resolved in this order:

  1. password field in config file
  2. PODKIT_MUSIC_NAVIDROME_PASSWORD environment variable
  3. SUBSONIC_PASSWORD environment variable

The collection name is uppercased and hyphens are replaced with underscores. For example, a collection named my-server uses PODKIT_MUSIC_MY_SERVER_PASSWORD.

Daemon Variables

These variables are used by the podkit daemon (Docker daemon mode). See the Docker Daemon Mode guide for setup instructions.

VariableDefaultDescription
PODKIT_POLL_INTERVAL5How often to check for new iPod devices, in seconds
PODKIT_APPRISE_URL(unset)Apprise notification endpoint URL (e.g., http://apprise:8000/notify)

Configuration Priority

Settings are merged from multiple sources. Later sources override earlier ones:

  1. Hardcoded defaultsquality = "high", artwork = true
  2. Config file~/.config/podkit/config.toml
  3. Environment variablesPODKIT_*
  4. CLI arguments--quality, --audio-quality, --video-quality, --no-artwork, etc.

Device-specific settings ([devices.<name>]) override global settings when that device is being used.

For the detailed quality resolution chain (how quality, audioQuality, and videoQuality interact across global, device, and CLI levels), see Config File Reference — Quality Resolution Order.

See Also