A powerful tool to search your screenshot history using natural language, understanding both text and visual content.
- 🧠 Hybrid Search: Combines AI analysis of image pixels and OCR text for highly accurate results.
- 🖥️ Intuitive GUI: A simple and clean web interface built with Streamlit for easy searching.
- ⌨️ Powerful CLI: A full-featured command-line interface for scripting and power users.
- 🤖 Automated Indexing: A background "watcher" automatically detects and indexes new screenshots.
- 🔒 Local First: All models and data are processed locally on your machine. Nothing is sent to the cloud.
Follow these steps to get the project running on your local machine.
- Python 3.9 or higher
- Git
-
Clone the Repository:
git clone https://github.com/Ahmed-Rahil/Visual-Memory-Search.git cd visual-memory-search -
Create and Activate a Virtual Environment:
# macOS / Linux python3 -m venv .venv source .venv/bin/activate # Windows python -m venv .venv .\.venv\Scripts\activate
-
Install Dependencies:
pip install -r requirements.txt
-
Add Your Screenshots: Place any images you want to index into the
screenshots/folder.
You can run this project in two ways. The GUI is recommended for the best experience.
This method requires two separate terminals running simultaneously.
-
Start the Automated Watcher (Terminal 1): This script monitors your
screenshotsfolder and automatically indexes new images. Keep it running in the background.python watcher.py
-
Launch the GUI (Terminal 2): This will start the Streamlit web server and open the application in your browser.
streamlit run app.py
For scripting or terminal-based workflows, use the unified CLI.
-
Index a Folder (One-Time Scan):
python vms/main.py index --path /path/to/screenshots
-
Search from the Terminal:
python vms/main.py search "a python function with a for loop" -
Watch a Folder (CLI version):
python vms/main.py watch
Project settings can be modified in the config.yaml file:
embedding_model: The AI model to use.database: The path for the vector database.default_screenshots_folder: The default folder to index and watch.
Contribution is most welcome. Create an Issue if you have suggestion and create a pull request if you have some contibution.
