Ino S3 Download Model
Download a model straight from S3 into ComfyUI's model folders
- success
- msg
- model_type
- abs_path
- rel_path
Here's the setup that keeps happening: you've got a model library in S3 - checkpoints, LoRAs, VAEs - because you move between machines or run on rented cloud GPUs. Every new box needs the models, and nobody wants to re-download 12 GB of Flux from HuggingFace per session. InoS3DownloadModel pulls a model file out of S3 and puts it in the right ComfyUI model folder, based on a model_type you pick. It's the download half of a "sync models from the bucket, then load them" workflow, and it hands you the path it used so you can feed it straight into a loader.
The model_type dropdown is the whole game: it's the list of ComfyUI's model directories (checkpoints, diffusion_models, loras, clip, vae, controlnet, and more). Pick loras and the file lands in ComfyUI/models/loras/...; pick diffusion_models and it lands there. That means the file shows up in the right native dropdown, no manual moving.
How it works
Required inputs: enabled, model_type (the dropdown), model_subfolder (default flux1dev - an extra subdir under the model folder), s3_key (the object path in the bucket, e.g. uploads/lora/aly_v001.safetensors), and model_config (default "{}"). Optional: s3_config.
The model_config input is an override mechanism: if you pass it a JSON dict, its fields win - model_type, model_subfolder, repo_id (mapped to the S3 config), and filename (mapped to the S3 key). So you can drive the whole node from a single config string built elsewhere in the graph. Otherwise it reads model_type/model_subfolder/s3_key directly.
Destination is ComfyUI/models/<model_type>/<model_subfolder>/<object basename>. Outputs: success, msg, model_type (what it actually used), abs_path, and rel_path - wire abs_path/rel_path into a loader like Ino Load Diffusion Model or Ino Load Lora Model.
Credentials via s3_config JSON or the standard env vars: S3_ACCESS_KEY, S3_ACCESS_SECRET, S3_BUCKET_NAME, S3_ENDPOINT_URL, S3_REGION_NAME.
Installing it
Part of the 125+-node ComfyUI-InoNodes pack by nobandegani:
cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/comfyui_ino_nodes
cd comfyui_ino_nodes
pip install -r requirements.txt
Or search "ComfyUI Ino Nodes" in ComfyUI Manager and restart. Needs inopyutils and a current V3-schema ComfyUI.
Common issues
Wrong model_type is the classic mistake - put a LoRA in diffusion_models and it won't appear in any LoRA dropdown, even though it downloaded fine. Match the type to the file: checkpoints go in checkpoints, standalone UNETs in diffusion_models, adapters in loras. The output model_type confirms what was actually used, especially if model_config silently overrode your dropdown. Also note the destination uses only the object's basename - a subfolder path in s3_key doesn't become a subfolder locally; that's what model_subfolder is for. And remember the download isn't a load: you still need a loader node after it, and the returned path is how you connect the two.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | true | — |
| model_config | STRING | {} | — |
| model_type | COMBO | 32 options: audio_encoders, checkpoints, clip, clip_vision, controlnet, detection, +26 | |
| model_subfolder | STRING | flux1dev | — |
| s3_key | STRING | uploads/lora/aly_v001.safetensors | — |
| s3_configopt | STRING | {"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""} | you can leave it empty and pass it with env vars |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| success | BOOLEAN | — |
| msg | STRING | — |
| model_type | STRING | — |
| abs_path | STRING | — |
| rel_path | STRING | — |