Some checks failed
CI / test (pull_request) Failing after 1m16s
- Lower vue_ui_beta gate to "free" so all licensed users can access the new UI without a paid subscription - Remove "Paid tier" wording from the Try New UI banner - Fix Vue SPA navigation in cloud/demo deployments: add VITE_BASE_PATH build arg so Vite sets the correct subpath base, and pass import.meta.env.BASE_URL to createWebHistory() so router links emit /peregrine/... paths that Caddy can match - Fix feedback button missing on cloud instance by passing FORGEJO_API_TOKEN through compose.cloud.yml - Remove vLLM container from compose.yml (vLLM dropped from stack; cf-research service in cfcore covers the use case) - Fix cloud config path in Apply page (use get_config_dir() so per-user cloud data roots resolve correctly for user.yaml and resume YAML) - Refactor generate_cover_letter._build_system_context and _build_mission_notes to accept explicit profile arg (enables per-user cover letter generation in cloud multi-tenant mode) - Add API proxy block to nginx.conf (Vue web container can now call /api/ directly without Vite dev proxy) - Update .env.example: remove vLLM vars, add research model + tuning vars for external vLLM deployments - Update llm.yaml: switch vllm base_url to host.docker.internal (vLLM now runs outside Docker stack) Closes #63 (feedback button) Related: #8 (Vue SPA), #50–#62 (parity milestone)
62 lines
1.9 KiB
YAML
62 lines
1.9 KiB
YAML
# compose.demo.yml — Public demo stack for demo.circuitforge.tech/peregrine
|
|
#
|
|
# Runs a fully isolated, neutered Peregrine instance:
|
|
# - DEMO_MODE=true: blocks all LLM inference in llm_router.py
|
|
# - demo/config/: pre-seeded demo user profile, all backends disabled
|
|
# - demo/data/: isolated SQLite DB (no personal job data)
|
|
# - No personal documents mounted
|
|
# - Port 8504 (separate from the personal instance on 8502)
|
|
#
|
|
# Usage:
|
|
# docker compose -f compose.demo.yml --project-name peregrine-demo up -d
|
|
# docker compose -f compose.demo.yml --project-name peregrine-demo down
|
|
#
|
|
# Caddy demo.circuitforge.tech/peregrine* → host port 8504
|
|
|
|
services:
|
|
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "8504:8501"
|
|
volumes:
|
|
- ./demo/config:/app/config
|
|
- ./demo/data:/app/data
|
|
# No /docs mount — demo has no personal documents
|
|
environment:
|
|
- DEMO_MODE=true
|
|
- STAGING_DB=/app/data/staging.db
|
|
- DOCS_DIR=/tmp/demo-docs
|
|
- STREAMLIT_SERVER_BASE_URL_PATH=peregrine
|
|
- PYTHONUNBUFFERED=1
|
|
- PYTHONLOGGING=WARNING
|
|
# No API keys — inference is blocked by DEMO_MODE before any key is needed
|
|
depends_on:
|
|
searxng:
|
|
condition: service_healthy
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
restart: unless-stopped
|
|
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/web/Dockerfile
|
|
args:
|
|
VITE_BASE_PATH: /peregrine/
|
|
ports:
|
|
- "8507:80"
|
|
restart: unless-stopped
|
|
|
|
searxng:
|
|
image: searxng/searxng:latest
|
|
volumes:
|
|
- ./docker/searxng:/etc/searxng:ro
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
# No host port published — internal only; demo app uses it for job description enrichment
|
|
# (non-AI scraping is allowed; only LLM inference is blocked)
|