A local, self-hosted file monitoring and organization tool using AI
Project description
WatchDock
A local, self-hosted, always-on "watchdog" tool that automatically organizes your files using AI.
Features
- 🔍 Monitors folders - Watch one or more folders on your laptop for new or modified files
- 🤖 AI-powered analysis - Uses local or cloud AI to understand file content
- 📁 Auto-organization - Automatically renames, tags, and moves files to the correct archive location
- ⚙️ Configurable - Customize watched folders, AI providers, and organization rules
- 🖥️ Native GUI - Cross-platform desktop application (Windows, macOS, Linux)
- 💻 CLI Mode - Command-line interface for developers
- 🤝 HITL Mode - Human-In-The-Loop mode for approval before organizing files
- 📚 Few-Shot Learning - Provide examples to train the AI on your preferences
- 🔄 Always-on - Runs continuously in the background
Installation
Via pip (Recommended)
pip install watchdock
From Source
- Clone or download this repository
- Install dependencies:
pip install -r requirements.txt
pip install -e .
Quick Start
Option 1: Native GUI (Recommended for non-developers)
- Install WatchDock:
pip install -e .
# Or: pip install watchdock
- Launch the GUI:
watchdock-gui
# Or: python -m watchdock.gui_main
# Or: watchdock --gui
-
Configure WatchDock through the GUI:
- Set up watched folders
- Configure AI provider and API keys
- Set archive preferences
- Add few-shot examples (optional)
-
Run WatchDock (from command line):
watchdock
# Or: python main.py
Option 2: Command Line (For Developers)
- Install WatchDock:
pip install -e .
- Initialize configuration:
watchdock --init-config
# Or: python main.py --init-config
This creates a default configuration file at ~/.watchdock/config.json
-
Edit the configuration file to:
- Add your AI API keys (if using cloud AI)
- Configure watched folders
- Set archive preferences
-
Run WatchDock:
watchdock
# Or: python main.py
Creating Standalone Executables
To create standalone executables (.app on macOS, .exe on Windows) for distribution:
- Install PyInstaller:
pip install pyinstaller
- Create executable:
# For GUI application
pyinstaller --name=WatchDock --windowed --onefile watchdock/gui_main.py
# For CLI application
pyinstaller --name=watchdock --onefile watchdock/main.py
The executables will be in the dist/ folder.
Operation Modes
WatchDock supports two operation modes:
Auto Mode (Default)
Files are automatically analyzed and organized without user intervention. Perfect for fully automated workflows.
HITL Mode (Human-In-The-Loop)
Files are analyzed and proposed actions are queued for your approval. You can:
- Review each proposed action in the GUI
- Approve or reject individual actions
- Approve all pending actions at once
- Use CLI commands to manage pending actions
CLI Commands for HITL Mode:
# List all pending actions
watchdock --list-pending
# Approve a specific action
watchdock --approve <action_id>
# Reject a specific action
watchdock --reject <action_id>
GUI: Use the "Pending Actions" tab to review and manage pending actions.
Configuration
The configuration file (~/.watchdock/config.json by default) contains:
Watched Folders
{
"watched_folders": [
{
"path": "/Users/yourname/Downloads",
"enabled": true,
"recursive": false,
"file_extensions": null
}
]
}
AI Configuration
WatchDock supports multiple AI providers:
- OpenAI - Cloud-based (requires API key)
- Anthropic - Cloud-based (requires API key)
- Ollama - Local AI (no API key needed)
Example for OpenAI:
{
"ai_config": {
"provider": "openai",
"api_key": "your-api-key-here",
"model": "gpt-4",
"temperature": 0.3
}
}
Example for Ollama (local):
{
"ai_config": {
"provider": "ollama",
"model": "llama2",
"base_url": "http://localhost:11434/v1"
}
}
Archive Configuration
{
"archive_config": {
"base_path": "/Users/yourname/Documents/Archive",
"create_date_folders": true,
"create_category_folders": true,
"move_files": true
}
}
How It Works
- Monitoring: WatchDock monitors specified folders using the
watchdoglibrary - Detection: When a new file appears or is modified, it's detected
- Analysis: The file is analyzed using AI to understand its content
- Organization: Based on the analysis, the file is:
- Categorized (e.g., Documents, Images, Videos)
- Renamed with a clean, descriptive name
- Tagged with relevant keywords
- Moved to an organized archive structure
File Organization Structure
Files are organized in the archive like this:
Archive/
├── 2024-01/
│ ├── Documents/
│ │ ├── project_proposal.pdf
│ │ └── meeting_notes.txt
│ ├── Images/
│ │ └── screenshot_2024.png
│ └── Videos/
│ └── presentation_recording.mp4
Few-Shot Examples
You can provide examples to help the AI understand your organization preferences. This is especially useful for:
- Custom category names
- Specific naming conventions
- Tag preferences
- Domain-specific file types
Examples can be added through the GUI or by editing ~/.watchdock/few_shot_examples.json:
[
{
"file_name": "IMG_20240101_123456.jpg",
"category": "Photos",
"suggested_name": "2024-01-01_family_photo.jpg",
"tags": ["family", "photo", "2024"],
"description": "Family photo from January 2024"
}
]
Logging
WatchDock logs to both:
- Console output
watchdock.logfile in the current directory
Requirements
- Python 3.8+
- Internet connection (for cloud AI providers) or local AI setup (Ollama)
License
MIT License
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 watchdock-0.1.2.tar.gz.
File metadata
- Download URL: watchdock-0.1.2.tar.gz
- Upload date:
- Size: 26.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a951991e5417f968616791df049bd802c26ad4ae9652ef44ac4315cd619e04a
|
|
| MD5 |
eaf1576b0c208bd3d7694d39ab5a80cb
|
|
| BLAKE2b-256 |
ba5e0d2bffc2419f6a6aa9c17cf7d932adbb2f74c9869fc5b9930200a926ee31
|
File details
Details for the file watchdock-0.1.2-py3-none-any.whl.
File metadata
- Download URL: watchdock-0.1.2-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19b373c96fa6c192c2aa6d21a0bc4f503ac786080c4c42f00b2ad0e13f6f9436
|
|
| MD5 |
5bb7a776ab5d0fa15024248b022d46a4
|
|
| BLAKE2b-256 |
44fff1687189c381c72d75d7aa0cfbfcda2a6631c2efde773bf43317b12c263d
|