Dependency Map
This document groups the INFJ Bot's dependencies by purpose and identifies candidates for slimming.
Core Runtime (Required)
| Package |
Purpose |
Slimmable? |
chromadb |
Vector database for semantic memory |
No |
sentence-transformers |
Local embeddings (MiniLM) |
No |
torch |
Required by sentence-transformers |
No |
numpy |
Numerical ops |
No |
python-dotenv |
.env file loading |
No |
PyYAML |
Config / prompt YAML parsing |
No |
pydantic |
Data validation (FastAPI, MCP) |
No |
LLM Providers (Pick One+)
| Package |
Provider |
Slimmable? |
google-genai |
Gemini (new SDK) |
Keep both or pick one |
google-generativeai |
Gemini (legacy SDK) |
Keep both or pick one |
google-auth-* |
Google auth flows |
If using Gemini |
ollama |
Local LLM fallback |
If using local models |
Slim option: If you only use Gemini, drop ollama and Anthropic packages. If you only use local models, drop all Google packages.
Web & API
| Package |
Purpose |
Slimmable? |
fastapi |
Web UI + REST API |
No (unless headless) |
uvicorn |
ASGI server |
No (unless headless) |
sse-starlette |
SSE streaming for Observatory |
No (unless headless) |
starlette |
FastAPI dependency |
Transitive |
httpx |
HTTP client |
No |
websockets |
WebSocket support |
If not using WS chat |
Slim option: Run in CLI-only mode (cli.py) and drop FastAPI/uvicorn/sse-starlette.
Voice & Audio
| Package |
Purpose |
Slimmable? |
faster-whisper |
Speech-to-text |
Yes β drop if no voice |
piper-tts |
Text-to-speech |
Yes β drop if no voice |
sounddevice |
Audio I/O |
Yes β drop if no voice |
soundfile |
Audio file handling |
Yes β drop if no voice |
Slim option: Remove all four if you never use voice commands.
Tools & Integrations
| Package |
Purpose |
Slimmable? |
playwright |
Browser automation |
Yes β drop if no web tools |
duckduckgo-search |
Web search |
Yes β drop if no search |
PyPDF2 |
PDF parsing |
Yes β drop if no PDF tools |
mcp |
Model Context Protocol |
Yes β drop if no MCP servers |
markdown |
Markdown rendering |
Transitive |
Data Science (Optional)
| Package |
Purpose |
Slimmable? |
pandas |
Data analysis |
Yes β only used in some tools |
matplotlib |
Plotting |
Yes β only used in some tools |
Dev / Quality (Not in requirements.txt)
| Package |
Purpose |
Install |
pytest |
Testing |
pip install pytest |
ruff |
Linting + formatting |
pip install ruff |
mypy |
Type checking |
pip install mypy |
bandit |
Security scanning |
pip install bandit |
detect-secrets |
Secret detection |
pip install detect-secrets |
Slimming Guide
To create a minimal install for headless, text-only operation:
pip install chromadb sentence-transformers torch numpy python-dotenv PyYAML pydantic httpx
pip install google-genai google-generativeai google-auth-oauthlib
pip install ollama
pip install fastapi uvicorn sse-starlette
This drops ~500MB+ of voice, browser, and data science dependencies.