Smart downloads folder organizer powered by local AI (Ollama)
Project description
Downloads Organizer
Smart downloads folder organizer powered by local AI (Ollama). Compatible with macOS and Linux. Installs with pipx and runs as a system service.
Your files never leave your machine — all AI classification happens locally via Ollama.
Demo
~/Downloads/
├── 📥 Recién Descargado/ ← files from today
└── 📁 Organizado/
├── 🔴 Urgente/
│ ├── Trabajo/
│ │ └── documento/
│ └── Finanzas/
│ └── hoja_de_calculo/
├── 🟡 Normal/
│ └── Personal/
│ └── imagen/
└── 📦 Archivo/
Requirements
Installation
macOS
# 1. Install Ollama
brew install ollama
ollama serve &
ollama pull llama3.2
# 2. Install pipx (if needed)
brew install pipx
pipx ensurepath
# 3. Install Downloads Organizer
pipx install downloads-organizer
# 4. Enable system service
dorg install
Linux
# 1. Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
ollama pull llama3.2
# 2. Install pipx (if needed)
pip install pipx --user && pipx ensurepath
# 3. Install Downloads Organizer
pipx install downloads-organizer
# 4. Enable systemd service
dorg install
Usage
| Command | Description |
|---|---|
dorg install |
Install and enable system service |
dorg uninstall |
Remove system service |
dorg status |
Service status + statistics |
dorg classify |
Classify pending files now |
dorg watch |
Start in foreground (debug mode) |
dorg logs |
View service logs |
dorg logs -n 200 |
View last N log lines |
dorg config |
Edit configuration file |
dorg config --set ollama.model=mistral |
Change Ollama model |
dorg projects |
List approved projects |
dorg projects --add Trabajo |
Add project manually |
Configuration
File: ~/.config/downloads-organizer/config.yaml
downloads_folder: ~/Downloads
recent_folder_name: Recién Descargado # staging folder for new files
organized_folder_name: Organizado # destination for classified files
classify_time: "06:00" # daily classification time
ollama:
base_url: http://localhost:11434
model: llama3.2
timeout: 60
confidence_threshold: 0.65 # below this → ask user
projects: # approved project names
- Trabajo
- Personal
- Finanzas
- Estudio
Recommended Ollama Models
| Model | Size | Speed | Quality | Best for |
|---|---|---|---|---|
llama3.2 |
2 GB | Fast | Good | Default, everyday use |
mistral |
4 GB | Medium | Very good | More nuanced classification |
phi3 |
2 GB | Fast | Good | Low-RAM machines |
gemma2 |
5 GB | Slow | Excellent | Best accuracy |
Change model:
ollama pull mistral
dorg config --set ollama.model=mistral
How It Works
New file detected
│
▼
[watchdog event]
│
▼
_should_move()? ──No──► ignore
│
Yes
│
▼
wait for file ready (download complete)
│
▼
move → Recién Descargado/
+ native notification
│
▼
(daily at 06:00)
│
▼
[Ollama classification]
│
├─ confidence ≥ 0.65 + known project
│ └─► move automatically
│
├─ confidence < 0.65
│ └─► show interactive dialog
│
└─ new project suggested
└─► ask user to approve/rename/reject
└─► move to Organizado/
Contributing
See CONTRIBUTING.md for development setup, commit conventions, and the pull request process.
License
MIT — see LICENSE. Copyright (c) 2025 Jarsa Sistemas
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file downloads_organizer-1.0.0.tar.gz.
File metadata
- Download URL: downloads_organizer-1.0.0.tar.gz
- Upload date:
- Size: 24.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc7168d8a2e8dbf491e4c44c9269aece5997f8334070db1c14cc560592c240ee
|
|
| MD5 |
1f3092e5f11d5bb126a5c688a46fd735
|
|
| BLAKE2b-256 |
9a5d8f0b9a4c73f203a265de70eac0e806916e89d8029c53e2a3e31f0bbf3754
|
Provenance
The following attestation bundles were made for downloads_organizer-1.0.0.tar.gz:
Publisher:
release.yml on Jarsa/downloads-organizer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
downloads_organizer-1.0.0.tar.gz -
Subject digest:
cc7168d8a2e8dbf491e4c44c9269aece5997f8334070db1c14cc560592c240ee - Sigstore transparency entry: 1091445227
- Sigstore integration time:
-
Permalink:
Jarsa/downloads-organizer@77a04414172c64f910b3acd4f6995c0e139584a8 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Jarsa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77a04414172c64f910b3acd4f6995c0e139584a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file downloads_organizer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: downloads_organizer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b281160560d05b1f76d6f3ff0c937d0ecba0e710eec993995f4ffcded9527ed
|
|
| MD5 |
bcf7512b6c873863efe6af1d87c281fc
|
|
| BLAKE2b-256 |
7f75de737923269a858ce237c50c48db6bad90061bbac3455e38da7ba999d90e
|
Provenance
The following attestation bundles were made for downloads_organizer-1.0.0-py3-none-any.whl:
Publisher:
release.yml on Jarsa/downloads-organizer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
downloads_organizer-1.0.0-py3-none-any.whl -
Subject digest:
3b281160560d05b1f76d6f3ff0c937d0ecba0e710eec993995f4ffcded9527ed - Sigstore transparency entry: 1091445234
- Sigstore integration time:
-
Permalink:
Jarsa/downloads-organizer@77a04414172c64f910b3acd4f6995c0e139584a8 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Jarsa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77a04414172c64f910b3acd4f6995c0e139584a8 -
Trigger Event:
push
-
Statement type: