T8: compose.cloud.yml — multi-tenant cloud stack on port 8505, CLOUD_MODE=true, per-user encrypted data at /devl/menagerie-data, joins caddy-proxy_caddy-internal network; .env.example extended with five cloud-only env vars. T10: app/telemetry.py — log_usage_event() is the ONLY entry point to usage_events table; hard kill switch (all_disabled) checked before any DB write; complete no-op in local mode; swallows all exceptions so telemetry never crashes the app; psycopg2-binary added to requirements.txt. Event calls wired into 4_Apply.py at cover_letter_generated and job_applied. 5 tests, 413/413 total passing.
78 lines
3.1 KiB
Text
78 lines
3.1 KiB
Text
# requirements.txt — Peregrine by Circuit Forge LLC
|
|
# Extracted from environment.yml for Docker pip installs
|
|
# Keep in sync with environment.yml
|
|
|
|
# ── Web UI ────────────────────────────────────────────────────────────────
|
|
streamlit>=1.35
|
|
watchdog
|
|
reportlab>=4.0
|
|
pandas>=2.0
|
|
pyarrow
|
|
streamlit-paste-button>=0.1.0
|
|
|
|
# ── Job scraping ──────────────────────────────────────────────────────────
|
|
python-jobspy>=1.1
|
|
playwright>=1.40
|
|
selenium
|
|
undetected-chromedriver
|
|
webdriver-manager
|
|
beautifulsoup4
|
|
requests
|
|
curl_cffi
|
|
fake-useragent
|
|
|
|
# ── LLM / AI backends ─────────────────────────────────────────────────────
|
|
openai>=1.55.0,<2.0.0 # >=1.55 required for httpx 0.28 compat; <2.0 for langchain-openai
|
|
anthropic>=0.80
|
|
ollama
|
|
langchain>=0.2
|
|
langchain-openai
|
|
langchain-anthropic
|
|
langchain-ollama
|
|
langchain-community
|
|
langchain-google-genai
|
|
google-generativeai
|
|
tiktoken
|
|
|
|
# ── Resume matching ───────────────────────────────────────────────────────
|
|
scikit-learn>=1.3
|
|
rapidfuzz
|
|
# lib-resume-builder-aihawk intentionally excluded — pulls torch+CUDA (~7GB).
|
|
# AIHawk runs in its own conda env (aihawk-env) outside the Docker container.
|
|
|
|
# ── Notion integration ────────────────────────────────────────────────────
|
|
notion-client>=3.0
|
|
|
|
# ── Document handling ─────────────────────────────────────────────────────
|
|
pypdf
|
|
pdfminer-six
|
|
pdfplumber
|
|
python-docx
|
|
json-repair
|
|
pyyaml>=6.0
|
|
python-dotenv
|
|
|
|
# ── Auth / licensing ──────────────────────────────────────────────────────
|
|
PyJWT>=2.8
|
|
pysqlcipher3
|
|
|
|
# ── Cloud / telemetry ─────────────────────────────────────────────────────────
|
|
psycopg2-binary
|
|
|
|
# ── Utilities ─────────────────────────────────────────────────────────────
|
|
sqlalchemy
|
|
tqdm
|
|
loguru
|
|
rich
|
|
tenacity
|
|
httpx
|
|
|
|
# ── Testing ───────────────────────────────────────────────────────────────
|
|
pytest>=9.0
|
|
pytest-cov
|
|
pytest-mock
|
|
lxml
|
|
|
|
# ── Documentation ────────────────────────────────────────────────────────
|
|
mkdocs>=1.5
|
|
mkdocs-material>=9.5
|