2025-12-29 00:11:27 +05:30
# NoEntropy 🗂️
> AI-powered file organizer that intelligently sorts your messy Downloads folder using Google Gemini API



## About
NoEntropy is a smart command-line tool that organizes your cluttered Downloads folder automatically. It uses Google's Gemini AI to analyze files, understand their content, and categorize them into organized folder structures. Say goodbye to manually sorting through hundreds of downloads!
## Features
- **🧠 AI-Powered Categorization** - Uses Google Gemini API for intelligent file sorting
2025-12-31 13:01:15 +05:30
- **🎨 Custom Categories** - Define your own categories for personalized organization
2025-12-29 00:11:27 +05:30
- **📁 Automatic Sub-Folders** - Creates relevant sub-folders based on file content analysis
- **💨 Smart Caching** - Minimizes API calls with metadata-based caching (7-day expiry)
- **⚡ Concurrent Processing** - Parallel file inspection with configurable limits
- **👀 Dry-Run Mode** - Preview changes without moving any files
- **📝 Text File Support** - Inspects 30+ text formats for better categorization
- **✅ Interactive Confirmation** - Review organization plan before execution
2025-12-29 21:47:57 +05:30
- **↩️ Undo Support** - Revert file organization changes if needed
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Quick Start
2025-12-31 13:01:15 +05:30
2026-01-02 00:55:29 +05:30
### Installation
2025-12-31 13:01:15 +05:30
2026-01-02 00:55:29 +05:30
**Option 1: Download Pre-built Binary**
2025-12-31 13:01:15 +05:30
2026-01-02 00:55:29 +05:30
Download the binary for your operating system from [releases ](https://github.com/glitchySid/noentropy/releases ):
2025-12-29 00:11:27 +05:30
```bash
2026-01-02 00:55:29 +05:30
# Linux/macOS: Give execute permissions
chmod +x noentropy
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
# Run NoEntropy
./noentropy
2025-12-29 00:11:27 +05:30
```
2026-01-02 00:55:29 +05:30
**Option 2: Build from Source**
2025-12-29 00:11:27 +05:30
```bash
2026-01-02 00:55:29 +05:30
# Clone repository
git clone https://github.com/glitchySid/noentropy.git
cd noentropy
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
# Build and run
cargo build --release
./target/release/noentropy
2025-12-29 21:47:57 +05:30
```
2026-01-02 00:55:29 +05:30
### First Run
2026-01-02 00:42:32 +05:30
2026-01-02 00:55:29 +05:30
On first run, NoEntropy will guide you through an interactive setup to configure your API key and download folder. That's it!
2026-01-02 00:42:32 +05:30
2026-01-02 00:55:29 +05:30
### Basic Usage
2025-12-29 21:47:57 +05:30
```bash
2026-01-02 00:55:29 +05:30
# Organize your downloads folder
./noentropy
2025-12-29 21:47:57 +05:30
2026-01-07 22:22:18 +05:30
# Organize a specific directory (current directory)
./noentropy .
# Organize a specific directory (absolute path)
./noentropy /path/to/folder
2026-01-02 00:55:29 +05:30
# Preview changes without moving files
./noentropy --dry-run
2025-12-29 21:47:57 +05:30
2026-01-07 22:22:18 +05:30
# Preview organization of current directory
./noentropy . --dry-run
2026-01-02 00:55:29 +05:30
# Undo the last organization
./noentropy --undo
2025-12-29 21:09:10 +05:30
```
2026-01-02 00:55:29 +05:30
## Documentation
2025-12-29 21:09:10 +05:30
2026-01-02 00:55:29 +05:30
Comprehensive documentation is available in the `docs/` directory:
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- **[Installation Guide ](docs/INSTALLATION.md )** - Detailed installation instructions and setup
- **[Configuration Guide ](docs/CONFIGURATION.md )** - Configure API key, folders, and custom categories
- **[Usage Guide ](docs/USAGE.md )** - Command-line options and usage examples
- **[How It Works ](docs/HOW_IT_WORKS.md )** - Architecture, caching, and internal processes
- **[Troubleshooting ](docs/TROUBLESHOOTING.md )** - Common issues and solutions
- **[Development Guide ](docs/DEVELOPMENT.md )** - Project structure and development setup
- **[Contributing Guide ](docs/CONTRIBUTING.md )** - How to contribute to NoEntropy
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Example Output
2025-12-29 00:11:27 +05:30
```bash
2026-01-02 00:55:29 +05:30
$ ./noentropy
2025-12-29 00:11:27 +05:30
Found 47 files. Asking Gemini to organize...
Gemini Plan received! Performing deep inspection...
2026-01-02 00:55:29 +05:30
Deep inspection complete!
2025-12-29 00:11:27 +05:30
--- EXECUTION PLAN ---
Plan: image1.png -> Images/
Plan: document.pdf -> Documents/
Plan: notes.txt -> Documents/Notes/
Plan: config.yaml -> Code/Config/
Plan: script.py -> Code/Scripts/
2026-01-02 00:55:29 +05:30
...
2025-12-29 00:11:27 +05:30
Do you want to apply these changes? [y/N]: y
--- MOVING FILES ---
Moved: image1.png -> Images/
Moved: document.pdf -> Documents/
Moved: notes.txt -> Documents/Notes/
2026-01-02 00:55:29 +05:30
...
2025-12-29 00:11:27 +05:30
Organization Complete!
Files moved: 47, Errors: 0
Done!
```
2026-01-07 22:22:18 +05:30
## Custom Path Support
NoEntropy now supports organizing any directory, not just your configured Downloads folder!
### Organize Any Directory
```bash
# Organize current directory
./noentropy .
# Organize specific folder
./noentropy /path/to/folder
# Organize with relative path
./noentropy ./subfolder
```
### Features
- **Path Validation**: Ensures the directory exists and is accessible
- **Path Normalization**: Resolves `.` , `..` , and symlinks for consistency
- **Full Compatibility**: Works with all existing options (`--dry-run` , `--recursive` , etc.)
- **Security**: Prevents path traversal attacks and invalid paths
### Use Cases
- Quickly organize project directories
- Clean up specific folders without changing configuration
- Test organization on different directories
- Organize documents, downloads, or any file collection
```bash
# Preview organization of current directory
./noentropy . --dry-run
# Organize project folder recursively
./noentropy ./my-project --recursive
# Undo organization in specific directory
./noentropy /path/to/folder --undo
```
2026-01-02 00:55:29 +05:30
## Use Cases
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- 📂 Organize a messy Downloads folder
- 🤖 Auto-categorize downloaded files by type and content
- 🔍 Smart sub-folder creation based on file content
- 🚀 Batch file organization without manual effort
- 💾 Reduce clutter and improve file system organization
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Key Features Explained
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
### Custom Categories
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
Define your own categories instead of using defaults:
2025-12-29 00:11:27 +05:30
```toml
2026-01-02 00:55:29 +05:30
# config.toml
categories = ["Work", "Personal", "School", "Projects", "Bills", "Media", "Misc"]
2025-12-29 00:11:27 +05:30
```
2026-01-02 00:55:29 +05:30
Perfect for organizing files based on your specific workflow. See the [Configuration Guide ](docs/CONFIGURATION.md ) for examples.
2025-12-29 21:47:57 +05:30
2026-01-02 00:55:29 +05:30
### Smart Caching
2025-12-29 21:47:57 +05:30
2026-01-02 00:55:29 +05:30
NoEntropy caches API responses for 7 days to minimize costs and improve performance. Files are only re-analyzed if they change (based on size and modification time).
2025-12-29 21:47:57 +05:30
2026-01-02 00:55:29 +05:30
### Undo Functionality
2025-12-29 21:47:57 +05:30
2026-01-02 00:55:29 +05:30
Made a mistake? Easily undo the last organization:
2025-12-29 00:11:27 +05:30
```bash
2026-01-02 00:55:29 +05:30
./noentropy --undo
2025-12-29 00:11:27 +05:30
```
2026-01-02 00:55:29 +05:30
All file moves are tracked for 30 days with full conflict detection and safety features.
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Requirements
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- **Rust 2024 Edition** or later (if building from source)
- **Google Gemini API Key** - Get one at [https://ai.google.dev/ ](https://ai.google.dev/ )
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Command-Line Options
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
| Option | Short | Description |
|--------|-------|-------------|
2026-01-07 22:22:18 +05:30
| `[PATH]` | - | Path to organize (defaults to configured download folder) |
2026-01-02 00:55:29 +05:30
| `--dry-run` | `-d` | Preview changes without moving files |
| `--max-concurrent` | `-m` | Maximum concurrent API requests (default: 5) |
| `--recursive` | - | Recursively search files in subdirectories |
| `--undo` | - | Undo the last file organization |
| `--change-key` | - | Change Gemini API key |
| `--help` | `-h` | Show help message |
See the [Usage Guide ](docs/USAGE.md ) for detailed examples and workflows.
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Project Structure
2025-12-30 02:24:44 +05:30
2025-12-29 00:11:27 +05:30
```
noentropy/
2026-01-02 00:55:29 +05:30
├── docs/ # Comprehensive documentation
2025-12-29 00:11:27 +05:30
├── src/
2026-01-02 00:55:29 +05:30
│ ├── cli/ # Command-line interface
│ ├── files/ # File operations and detection
│ ├── gemini/ # AI integration
│ ├── models/ # Data structures
│ ├── settings/ # Configuration management
│ └── storage/ # Caching and undo log
├── Cargo.toml
└── README.md
2025-12-29 00:11:27 +05:30
```
2026-01-02 00:55:29 +05:30
See the [Development Guide ](docs/DEVELOPMENT.md ) for detailed architecture information.
2025-12-30 02:24:44 +05:30
2026-01-02 00:55:29 +05:30
## Contributing
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
Contributions are welcome! Please see our [Contributing Guide ](docs/CONTRIBUTING.md ) for:
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- How to report bugs
- How to suggest features
- Development setup
- Code standards
- Pull request process
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
## Future Enhancements
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- [x] Custom Categories
- [x] Recursive Mode
- [x] Undo Functionality
- [ ] Custom AI Models (OpenAI, Claude, etc.)
- [ ] GUI Version
- [ ] Watch Mode
2025-12-29 00:11:27 +05:30
## License
This project is licensed under the MIT License - see the [LICENSE ](LICENSE ) file for details.
## Acknowledgments
- Built with [Rust ](https://www.rust-lang.org/ )
- Powered by [Google Gemini API ](https://ai.google.dev/ )
- Inspired by the endless struggle to keep Downloads folders organized
2026-01-02 00:55:29 +05:30
## Support
2025-12-29 00:11:27 +05:30
2026-01-02 00:55:29 +05:30
- Check the [Troubleshooting Guide ](docs/TROUBLESHOOTING.md ) for common issues
- Browse [GitHub Issues ](https://github.com/glitchySid/noentropy/issues ) for known problems
- Create a new issue for bugs or feature requests
- Star this repository if you find it useful!
2025-12-29 00:11:27 +05:30
---
Made with ❤️ by the NoEntropy team