peregrine/scripts
pyr0ball 236db81ed3 feat: startup preflight — port collision avoidance + resource checks
scripts/preflight.py (stdlib-only, no psutil):
- Port probing: owned services auto-reassign to next free port; external
  services (Ollama) show ✓ reachable / ⚠ not responding
- System resources: CPU cores, RAM (total + available), GPU VRAM via
  nvidia-smi; works on Linux + macOS
- Profile recommendation: remote / cpu / single-gpu / dual-gpu
- vLLM KV cache offload: calculates CPU_OFFLOAD_GB when VRAM < 10 GB
  free and RAM headroom > 4 GB (uses up to 25% of available headroom)
- Writes resolved values to .env for docker compose; single-service mode
  (--service streamlit) for scripted port queries
- Exit 0 unless an owned port genuinely can't be resolved

scripts/manage-ui.sh:
- Calls preflight.py --service streamlit before bind; falls back to
  pure-bash port scan if Python/yaml unavailable

compose.yml:
- vllm command: adds --cpu-offload-gb ${CPU_OFFLOAD_GB:-0}

Makefile:
- start / restart depend on preflight target
- PYTHON variable for env portability
- test target uses PYTHON variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 20:36:16 -08:00
..
custom_boards chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
vision_service feat: add vision service to compose stack and fine-tune wizard tab to Settings 2026-02-24 19:37:55 -08:00
__init__.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
company_research.py feat: LGBTQIA+ focus + Phase 2/3 audit fixes 2026-02-24 20:02:03 -08:00
db.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
discover.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
enrich_descriptions.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
finetune_local.py fix: thread searxng URL through research functions via _SEARXNG_URL constant 2026-02-24 18:52:10 -08:00
generate_cover_letter.py fix: remove hardcoded personal values — Phase 1 audit findings 2026-02-24 19:57:03 -08:00
generate_llm_config.py feat: auto-generate llm.yaml base_url values from user profile services config 2026-02-24 19:10:54 -08:00
imap_sync.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
llm_router.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
manage-ui.sh feat: startup preflight — port collision avoidance + resource checks 2026-02-24 20:36:16 -08:00
manage-vision.sh chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
manage-vllm.sh feat: LGBTQIA+ focus + Phase 2/3 audit fixes 2026-02-24 20:02:03 -08:00
match.py feat: extract hard-coded personal references from all scripts via UserProfile 2026-02-24 18:45:39 -08:00
migrate.py feat: migration tool + portable startup scripts 2026-02-24 20:25:54 -08:00
preflight.py feat: startup preflight — port collision avoidance + resource checks 2026-02-24 20:36:16 -08:00
prepare_training_data.py feat: extract hard-coded personal references from all scripts via UserProfile 2026-02-24 18:45:39 -08:00
scrape_url.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
sync.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
task_runner.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
test_email_classify.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
user_profile.py feat: LGBTQIA+ focus + Phase 2/3 audit fixes 2026-02-24 20:02:03 -08:00