Panoptes is a declarative, Rust-based file system watcher that uses local AI (Moondream via Ollama) to automatically rename images and documents based on their visual content. Named after the all-seeing giant of Greek mythology, Panoptes watches your directories and intelligently organizes incoming files.
-
Zero API costs - Uses local AI models (Moondream ~1.6GB)
-
Privacy-preserving - All processing happens on your machine
-
Rust-powered - Memory-safe, fast, and reliable
-
Declarative config - Nickel-based type-safe configuration
-
Container-ready - Podman-native with Chainguard Wolfi base
-
RSR Gold compliant - Full Rhodium Standard Repository compliance
# Clone the repository
git clone https://gitlab.com/hyperpolymath/panoptes.git
cd panoptes
# Setup environment
just setup
# Start the AI engine (downloads Moondream ~1.6GB)
just start-engine
# Build the scanner
just build-release
# Start watching files
just watchPanoptes uses Nickel for type-safe configuration. Edit config.ncl:
{
watch_path = "/var/home/core/Downloads/scan_input",
ai_engine = {
url = "http://localhost:11434/api/generate",
model = "moondream",
},
rules = {
sanitize = true,
date_prefix = true,
max_length = 50,
},
}| Option | Description |
|---|---|
|
Path to configuration file (default: |
|
Directory to watch (overrides config) |
|
AI model to use (default: |
|
Ollama API URL |
|
Enable verbose logging |
|
Don’t rename files, just log suggestions |
# Watch default directory
panoptes --config config.ncl
# Watch specific directory with verbose output
panoptes --watch ~/Pictures/Unsorted --verbose
# Test without making changes
panoptes --watch ~/Downloads --dry-run+-------------------+ +------------------+ +----------------+
| File System | | Panoptes | | Ollama |
| (inotify/kqueue) | --> | (Rust) | --> | (Moondream) |
+-------------------+ +------------------+ +----------------+
| |
v |
+----------+ |
| Renamed | <-----------------+
| Files | AI Suggestion
+----------+# Run tests
just test
# Format code
just fmt
# Run linter
just lint
# Full validation
just validateThis repository maintains RSR Gold compliance:
-
SPDX headers on all source files
-
Nickel configuration (infrastructure-as-code)
-
Podman with Chainguard Wolfi base images
-
Complete documentation suite
-
Security-first architecture
Run just validate to verify compliance.
# Check if Ollama is running
just engine-status
# Restart the engine
just restart-engine
# Verify model is loaded
podman exec panoptes-llm ollama list-
Ensure the watch directory exists
-
Check file permissions
-
Verify with
--verboseflag
See CONTRIBUTING.adoc for guidelines.
This project is licensed under the MIT License - see LICENSE.txt for details.
-
Ollama - Local LLM runtime
-
Moondream - Tiny Vision Language Model
-
Rename Your Images With Ollama - Tutorial video