File: README.md
Immich-Go: Upload Your Photos to Your Immich Server
Immich-Go is an open-source tool designed to streamline uploading large photo collections to your self-hosted Immich server.
โ Compatible with Immich V2 and V3
โ ๏ธ This is an early version, not yet extensively tested
โ ๏ธ Keep a backup copy of your files for safety
๐ Key Features
- Immich V3 Ready: Full compatibility with Immich V2 and V3
- Simple Installation: No NodeJS or Docker required
- Multiple Sources: Upload from Google Photos Takeouts, iCloud, local folders, ZIP archives, and other Immich servers
- Large Collections: Successfully handles 100,000+ photos
- Smart Management: Duplicate detection, burst photo stacking, RAW+JPEG handling
- Cross-Platform: Available for Windows, macOS, Linux, and FreeBSD
๐ Quick Start
1. Install Immich-Go
Download the pre-built binary for your system from the GitHub releases page.
2. Basic Usage
# Upload photos from a local folder
immich-go upload from-folder --server=http://your-ip:2283 --api-key=your-api-key /path/to/your/photos
# Upload Google Photos takeout
immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip
# Archive photos from Immich server
immich-go archive from-immich --from-server=http://your-ip:2283 --from-api-key=your-api-key --write-to-folder=/path/to/archive3. Requirements
- A running Immich server with API access
- API key with appropriate permissions (see full list)
โ ๏ธ Breaking Change (v0.32.0): The
ReplaceAssetAPI method has been removed. Theasset.replacepermission is no longer needed. If your API key includes it, it will be ignored by the server. Useasset.copyinstead for asset duplication needs.
๐ Skip System Files
- Use
--ban-fileto exclude junk artifacts. Patterns ending with/apply to directories (for example,--ban-file .Spotlight-V100/), while patterns without the trailing slash apply to individual files (for example,--ban-file .DS_Store). - Immich-Go ships with sensible defaults that already skip common clutter such as
@eaDir/,@__thumb/,SYNOFILE_THUMB_*.*,Lightroom Catalog/,thumbnails/,.DS_Store,/._*,.Spotlight-V100/,.photostructure/, andRecently Deleted/. - Add additional patterns as needed to keep uploads focused on real photos. See the banned files reference for details.
๐ Documentation
| Topic | Description |
|---|---|
| Installation | Detailed installation instructions for all platforms |
| Commands | Complete command reference and options |
| Configuration | Configuration options and environment variables |
| Examples | Common use cases and practical examples |
| Best Practices | Tips for optimal performance and reliability |
| Technical Details | File processing, metadata handling, and advanced features |
| Upload Commands Overview | How immich-go processes files from different sources |
| Release Notes | Version history and release notes |
โจ How immich-go Works
immich-go offers a versatile set of commands to handle your photo and video uploads. Whether you're uploading from a simple folder, migrating from a Google Photos Takeout, or transferring assets between Immich servers, the tool provides intelligent features to preserve your metadata and organization.
Here's a brief overview of the main upload commands:
from-folder: The basic command for uploading from any local folder. It can create albums from your directory structure and read XMP sidecar files.from-google-photos: A powerful command to migrate from a Google Photos Takeout. It intelligently matches photos with their JSON metadata to preserve albums, descriptions, and locations.from-immich: A server-to-server migration tool that allows you to copy assets between two Immich instances with fine-grained filtering.from-picasa: A specialized version offrom-folderthat automatically reads.picasa.inifiles to restore your Picasa album organization.from-icloud: Another specialized command that handles the complexity of an iCloud Photos takeout, correctly identifying creation dates and album structures from the included CSV files.
Leveraging Immich's Features
immich-go is more than just an uploader; it intelligently interacts with the Immich server to preserve your library's structure:
- Albums and Tags: Automatically creates albums and tags on the server to match your source organization.
- Stacking: Groups related images, like RAW+JPEG pairs or photo bursts, into stacks.
- Duplicate Detection: Avoids re-uploading files that already exist on the server.
- Efficient Uploads: Can pause Immich's background jobs (like thumbnailing) during an upload for better performance.
For a detailed explanation of how each upload command works, please see the Upload Commands Overview.
๐ฏ Popular Use Cases
- Google Photos Migration: Complete guide
- iCloud Import: Step-by-step instructions
- Server Migration: Transfer between Immich instances
- Bulk Organization: Stacking and tagging strategies
๐ก Support the Project
๐ค Contributing
Contributions are welcome! Please see our contributing guidelines for details.
๐ License
This project is licensed under the terms specified in the LICENSE file.
Need help? Check our documentation or open an issue on GitHub.
File: Readme.md
Immich-Go: Upload Your Photos to Your Immich Server
Immich-Go is an open-source tool designed to streamline uploading large photo collections to your self-hosted Immich server.
โ Compatible with Immich V2 and V3
โ ๏ธ This is an early version, not yet extensively tested
โ ๏ธ Keep a backup copy of your files for safety
๐ Key Features
- Immich V3 Ready: Full compatibility with Immich V2 and V3
- Simple Installation: No NodeJS or Docker required
- Multiple Sources: Upload from Google Photos Takeouts, iCloud, local folders, ZIP archives, and other Immich servers
- Large Collections: Successfully handles 100,000+ photos
- Smart Management: Duplicate detection, burst photo stacking, RAW+JPEG handling
- Cross-Platform: Available for Windows, macOS, Linux, and FreeBSD
๐ Quick Start
1. Install Immich-Go
Download the pre-built binary for your system from the GitHub releases page.
2. Basic Usage
# Upload photos from a local folder
immich-go upload from-folder --server=http://your-ip:2283 --api-key=your-api-key /path/to/your/photos
# Upload Google Photos takeout
immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip
# Archive photos from Immich server
immich-go archive from-immich --from-server=http://your-ip:2283 --from-api-key=your-api-key --write-to-folder=/path/to/archive3. Requirements
- A running Immich server with API access
- API key with appropriate permissions (see full list)
โ ๏ธ Breaking Change (v0.32.0): The
ReplaceAssetAPI method has been removed. Theasset.replacepermission is no longer needed. If your API key includes it, it will be ignored by the server. Useasset.copyinstead for asset duplication needs.
๐ Skip System Files
- Use
--ban-fileto exclude junk artifacts. Patterns ending with/apply to directories (for example,--ban-file .Spotlight-V100/), while patterns without the trailing slash apply to individual files (for example,--ban-file .DS_Store). - Immich-Go ships with sensible defaults that already skip common clutter such as
@eaDir/,@__thumb/,SYNOFILE_THUMB_*.*,Lightroom Catalog/,thumbnails/,.DS_Store,/._*,.Spotlight-V100/,.photostructure/, andRecently Deleted/. - Add additional patterns as needed to keep uploads focused on real photos. See the banned files reference for details.
๐ Documentation
| Topic | Description |
|---|---|
| Installation | Detailed installation instructions for all platforms |
| Commands | Complete command reference and options |
| Configuration | Configuration options and environment variables |
| Examples | Common use cases and practical examples |
| Best Practices | Tips for optimal performance and reliability |
| Technical Details | File processing, metadata handling, and advanced features |
| Upload Commands Overview | How immich-go processes files from different sources |
| Release Notes | Version history and release notes |
โจ How immich-go Works
immich-go offers a versatile set of commands to handle your photo and video uploads. Whether you're uploading from a simple folder, migrating from a Google Photos Takeout, or transferring assets between Immich servers, the tool provides intelligent features to preserve your metadata and organization.
Here's a brief overview of the main upload commands:
from-folder: The basic command for uploading from any local folder. It can create albums from your directory structure and read XMP sidecar files.from-google-photos: A powerful command to migrate from a Google Photos Takeout. It intelligently matches photos with their JSON metadata to preserve albums, descriptions, and locations.from-immich: A server-to-server migration tool that allows you to copy assets between two Immich instances with fine-grained filtering.from-picasa: A specialized version offrom-folderthat automatically reads.picasa.inifiles to restore your Picasa album organization.from-icloud: Another specialized command that handles the complexity of an iCloud Photos takeout, correctly identifying creation dates and album structures from the included CSV files.
Leveraging Immich's Features
immich-go is more than just an uploader; it intelligently interacts with the Immich server to preserve your library's structure:
- Albums and Tags: Automatically creates albums and tags on the server to match your source organization.
- Stacking: Groups related images, like RAW+JPEG pairs or photo bursts, into stacks.
- Duplicate Detection: Avoids re-uploading files that already exist on the server.
- Efficient Uploads: Can pause Immich's background jobs (like thumbnailing) during an upload for better performance.
For a detailed explanation of how each upload command works, please see the Upload Commands Overview.
๐ฏ Popular Use Cases
- Google Photos Migration: Complete guide
- iCloud Import: Step-by-step instructions
- Server Migration: Transfer between Immich instances
- Bulk Organization: Stacking and tagging strategies
๐ก Support the Project
๐ค Contributing
Contributions are welcome! Please see our contributing guidelines for details.
๐ License
This project is licensed under the terms specified in the LICENSE file.
Need help? Check our documentation or open an issue on GitHub.
File: readme.md
Immich-Go: Upload Your Photos to Your Immich Server
Immich-Go is an open-source tool designed to streamline uploading large photo collections to your self-hosted Immich server.
โ Compatible with Immich V2 and V3
โ ๏ธ This is an early version, not yet extensively tested
โ ๏ธ Keep a backup copy of your files for safety
๐ Key Features
- Immich V3 Ready: Full compatibility with Immich V2 and V3
- Simple Installation: No NodeJS or Docker required
- Multiple Sources: Upload from Google Photos Takeouts, iCloud, local folders, ZIP archives, and other Immich servers
- Large Collections: Successfully handles 100,000+ photos
- Smart Management: Duplicate detection, burst photo stacking, RAW+JPEG handling
- Cross-Platform: Available for Windows, macOS, Linux, and FreeBSD
๐ Quick Start
1. Install Immich-Go
Download the pre-built binary for your system from the GitHub releases page.
2. Basic Usage
# Upload photos from a local folder
immich-go upload from-folder --server=http://your-ip:2283 --api-key=your-api-key /path/to/your/photos
# Upload Google Photos takeout
immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip
# Archive photos from Immich server
immich-go archive from-immich --from-server=http://your-ip:2283 --from-api-key=your-api-key --write-to-folder=/path/to/archive3. Requirements
- A running Immich server with API access
- API key with appropriate permissions (see full list)
โ ๏ธ Breaking Change (v0.32.0): The
ReplaceAssetAPI method has been removed. Theasset.replacepermission is no longer needed. If your API key includes it, it will be ignored by the server. Useasset.copyinstead for asset duplication needs.
๐ Skip System Files
- Use
--ban-fileto exclude junk artifacts. Patterns ending with/apply to directories (for example,--ban-file .Spotlight-V100/), while patterns without the trailing slash apply to individual files (for example,--ban-file .DS_Store). - Immich-Go ships with sensible defaults that already skip common clutter such as
@eaDir/,@__thumb/,SYNOFILE_THUMB_*.*,Lightroom Catalog/,thumbnails/,.DS_Store,/._*,.Spotlight-V100/,.photostructure/, andRecently Deleted/. - Add additional patterns as needed to keep uploads focused on real photos. See the banned files reference for details.
๐ Documentation
| Topic | Description |
|---|---|
| Installation | Detailed installation instructions for all platforms |
| Commands | Complete command reference and options |
| Configuration | Configuration options and environment variables |
| Examples | Common use cases and practical examples |
| Best Practices | Tips for optimal performance and reliability |
| Technical Details | File processing, metadata handling, and advanced features |
| Upload Commands Overview | How immich-go processes files from different sources |
| Release Notes | Version history and release notes |
โจ How immich-go Works
immich-go offers a versatile set of commands to handle your photo and video uploads. Whether you're uploading from a simple folder, migrating from a Google Photos Takeout, or transferring assets between Immich servers, the tool provides intelligent features to preserve your metadata and organization.
Here's a brief overview of the main upload commands:
from-folder: The basic command for uploading from any local folder. It can create albums from your directory structure and read XMP sidecar files.from-google-photos: A powerful command to migrate from a Google Photos Takeout. It intelligently matches photos with their JSON metadata to preserve albums, descriptions, and locations.from-immich: A server-to-server migration tool that allows you to copy assets between two Immich instances with fine-grained filtering.from-picasa: A specialized version offrom-folderthat automatically reads.picasa.inifiles to restore your Picasa album organization.from-icloud: Another specialized command that handles the complexity of an iCloud Photos takeout, correctly identifying creation dates and album structures from the included CSV files.
Leveraging Immich's Features
immich-go is more than just an uploader; it intelligently interacts with the Immich server to preserve your library's structure:
- Albums and Tags: Automatically creates albums and tags on the server to match your source organization.
- Stacking: Groups related images, like RAW+JPEG pairs or photo bursts, into stacks.
- Duplicate Detection: Avoids re-uploading files that already exist on the server.
- Efficient Uploads: Can pause Immich's background jobs (like thumbnailing) during an upload for better performance.
For a detailed explanation of how each upload command works, please see the Upload Commands Overview.
๐ฏ Popular Use Cases
- Google Photos Migration: Complete guide
- iCloud Import: Step-by-step instructions
- Server Migration: Transfer between Immich instances
- Bulk Organization: Stacking and tagging strategies
๐ก Support the Project
๐ค Contributing
Contributions are welcome! Please see our contributing guidelines for details.
๐ License
This project is licensed under the terms specified in the LICENSE file.
Need help? Check our documentation or open an issue on GitHub.
File: docs/README.md
Immich-Go Documentation
Welcome to the complete documentation for Immich-Go, an open-source tool for uploading and managing photo collections with your self-hosted Immich server.
๐ Documentation Overview
This documentation is organized into several sections to help you get started quickly and master advanced features:
๐ Getting Started
- Installation - Complete installation guide for all platforms
- Examples - Common use cases and practical examples
- Configuration - Environment variables and configuration options
๐ Command Reference
- Commands Overview - Complete command structure and global options
- Upload Commands - Detailed upload command documentation
- Archive Commands - Export and archival operations
- Stack Commands - Photo organization and stacking
๐ Best Practices & Advanced Topics
- Best Practices - Performance tips and optimization strategies
- Technical Details - File processing, metadata handling, and internals
- Environment Setup - Advanced environment configuration
๐ง Specialized Topics
- Concurrency - Multi-threading and performance optimization
- Miscellaneous - Additional guides and troubleshooting
๐ฏ Quick Navigation by Use Case
New Users
- Start with Installation to set up Immich-Go
- Review Examples for your specific use case
- Check Best Practices for optimal performance
Google Photos Migration
Advanced Users
- Technical Details for deep dive into functionality
- Configuration for advanced customization
- Concurrency for performance optimization
๐ Common Commands Quick Reference
# Upload from local folder
immich-go upload from-folder --server=SERVER --api-key=KEY /path/to/photos
# Upload Google Photos takeout
immich-go upload from-google-photos --server=SERVER --api-key=KEY /path/to/takeout.zip
# Archive from Immich server
immich-go archive from-immich --server=SERVER --api-key=KEY --write-to-folder=/archive
# Stack similar photos
immich-go stack --server=SERVER --api-key=KEY๐ Documentation Structure
docs/
โโโ README.md # This file - documentation hub
โโโ installation.md # Installation guide
โโโ configuration.md # Configuration options
โโโ environment.md # Environment setup
โโโ examples.md # Practical examples
โโโ best-practices.md # Performance and reliability tips
โโโ technical.md # Technical details and internals
โโโ commands/ # Command reference
โ โโโ README.md # Command overview
โ โโโ upload.md # Upload commands
โ โโโ archive.md # Archive commands
โ โโโ stack.md # Stack commands
โโโ concurrency/ # Performance optimization
โ โโโ README.md # Concurrency overview
โ โโโ multi-threading.md # Threading details
โโโ misc/ # Additional guides
โโโ README.md # Miscellaneous topics index
โโโ google-takeout.md # Google Photos migration
โโโ motivation.md # Project background
โโโ troubleshooting.md # Common issues and solutions๐ Getting Help
- Documentation Issues: Something unclear? Open an issue
- Bug Reports: Found a problem? Report it
- Feature Requests: Have an idea? Share it
- Debug Information: Need to send logs? See how to send debug data
๐ค Contributing to Documentation
Documentation improvements are always welcome! See our contributing guidelines for details on:
- Fixing typos or errors
- Adding examples
- Improving clarity
- Adding new sections
๐ License
This documentation is part of the Immich-Go project and is licensed under the same terms as specified in the LICENSE file.
Ready to get started? Begin with the Installation Guide or jump to Examples for your specific use case.