{"data":{"slug":"leon-sander-local-multimodal-ai-chat","name":"Local-Multimodal-AI-Chat","tagline":"Self-hosted multimodal AI chat with local LLMs supporting PDF RAG, image interaction, and speech-to-text","github_url":"https://github.com/Leon-Sander/Local-Multimodal-AI-Chat","owner":"Leon-Sander","repo":"Local-Multimodal-AI-Chat","owner_avatar_url":"https://avatars.githubusercontent.com/u/72946124?v=4","primary_language":"Python","stars":206,"forks":114,"topics":["chromadb","docker","langchain","llm","local-llm","multimodal","ollama","openai","rag","speech-to-text","streamlit","whisper"],"archived":false,"github_pushed_at":"2026-07-10T10:51:14+00:00","maintenance_label":"Steady","stars_delta_30d":1,"url":"https://www.graphcanon.com/tools/leon-sander-local-multimodal-ai-chat","markdown_url":"https://www.graphcanon.com/tools/leon-sander-local-multimodal-ai-chat.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/leon-sander-local-multimodal-ai-chat","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=leon-sander-local-multimodal-ai-chat","description":"Self-hostable multimodal chat with local LLMs (Ollama/OpenAI): PDF RAG, image chat, and Whisper voice, Streamlit + Docker.","homepage_url":null,"license":"GPL-3.0","open_issues":3,"watchers":9,"ai_summary":"A self-contained package for setting up a local environment to host multimodal interactions including chat, document analysis, image processing, and voice recognition using Docker and Streamlit. Intended for those wishing to run all aspects locally without relying on cloud infrastructure.","readme_excerpt":"## Getting Started\n\nYou can also follow the [setup video](https://youtu.be/eNwvAdem4vo) (Linux/Windows).\n\nFirst, copy the example environment file and add your key only if you plan to use the OpenAI endpoint:\n\n```bash\ncp .env.example .env\n\n---\n\n### Easiest and preferred: Docker Compose\n\n1. **Set the model save path**: line 21 in `docker-compose.yml`.\n2. **Start it**: `docker compose up`\n   *No GPU? Remove the `deploy` section from the compose file.*\n3. **Open the app**: [http://0.0.0.0:8501](http://0.0.0.0:8501)\n4. **Pull models**: browse [ollama.com/library](https://ollama.com/library) and enter `/pull MODEL_NAME` in the chat bar. You need an embedding model (e.g. [nomic-embed-text](https://ollama.com/library/nomic-embed-text)) for PDFs and a vision model (e.g. [llava](https://ollama.com/library/llava)) for images.\n5. **Optional**: adjust `config.yaml`; replace the avatars in `chat_icons/`.\n\n---\n\n### Complete manual install\n\n1. **Install [Ollama](https://github.com/ollama/ollama).**\n2. **Create a virtual environment** (developed on Python 3.10.12).\n3. **Install requirements**:\n   ```bash\n   pip install --upgrade pip\n   pip install -r requirements.txt\n   pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu\n   ```\n4. **Run**:\n   ```bash\n   python3 src/database_operations.py   # initializes the SQLite database\n   streamlit run src/app.py\n   ```\n5. **Pull models** as described above.\n\n---\n\n## License\n\nLicensed under the GNU GPL-3.0. See [LICENSE.md](./LICENSE.md).","github_created_at":"2024-01-09T10:20:39+00:00","created_at":"2026-07-15T11:00:41.163741+00:00","updated_at":"2026-09-20T05:05:46.903159+00:00","categories":[{"slug":"computer-vision","name":"Computer Vision","url":"https://www.graphcanon.com/categories/computer-vision","markdown_url":"https://www.graphcanon.com/categories/computer-vision.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/computer-vision"},{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"speech-audio","name":"Speech & Audio","url":"https://www.graphcanon.com/categories/speech-audio","markdown_url":"https://www.graphcanon.com/categories/speech-audio.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/speech-audio"}],"tags":[{"slug":"chromadb","name":"chromadb"},{"slug":"docker","name":"docker"},{"slug":"langchain","name":"langchain"},{"slug":"local-llm","name":"local-llm"},{"slug":"multimodal","name":"multimodal"},{"slug":"ollama","name":"ollama"},{"slug":"openai","name":"openai"},{"slug":"rag","name":"rag"}],"trust":{"provenance":{"is_fork":false,"github_id":740911570,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T05:05:44.116Z","maintenance":{"label":"Steady","score":60,"methodology":"github_public_v1","releases_90d":1,"days_since_push":71,"last_release_at":"2026-07-10T10:46:14Z","stars_delta_30d":1,"open_issues_delta_30d":0},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T11:00:42.537Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-09-20T05:05:45.163Z"},"deploy":{"source":"dockerfile:docker-compose.yml","self_host":true,"observed_at":"2026-09-20T05:05:45.163Z","managed_saas":false},"languages":{"value":["python"],"source":"github.language","observed_at":"2026-09-20T05:05:45.163Z"},"has_docker":{"value":true,"source":"dockerfile:docker-compose.yml","observed_at":"2026-09-20T05:05:45.163Z"},"license_spdx":{"value":"GPL-3.0","source":"github.license","observed_at":"2026-09-20T05:05:45.163Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["If you need functionalities such as PDF RAG, image interaction, and speech-to-text without relying on the cloud","For environments requiring full control over where data is processed and stored, promoting greater privacy and compliance"],"when_not_to_use":["Avoid if your project requires seamless integration with cloud resources for scaling or cost-effectiveness","Not suitable when the infrastructure demands exceed local computational resources, leading to performance bottlenecks"],"source":"enrich:decision_facts","observed_at":"2026-07-17T08:09:14.962Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"Local-Multimodal-AI-Chat lets you set up a self-contained environment for local multimodal AI interactions through Docker and Streamlit."}]}}