peregrine/demo/config/user.yaml
pyr0ball bc7e3c8952 feat: DEMO_MODE — isolated public menagerie demo instance
Adds a fully neutered public demo for menagerie.circuitforge.tech/peregrine
that shows the Peregrine UI without exposing any personal data or real LLM inference.

scripts/llm_router.py:
  - Block all inference when DEMO_MODE env var is set (1/true/yes)
  - Raises RuntimeError with a user-friendly "public demo" message

app/app.py:
  - IS_DEMO constant from DEMO_MODE env var
  - Wizard gate bypassed in demo mode (demo/config/user.yaml pre-seeds a fake profile)
  - Demo banner in sidebar: explains read-only status + links to circuitforge.tech

compose.menagerie.yml (new):
  - Separate Docker Compose project (peregrine-demo) on host port 8504
  - Mounts demo/config/ and demo/data/ — isolated from personal instance
  - DEMO_MODE=true, no API keys, no /docs mount
  - Project name: peregrine-demo (run alongside personal instance)

demo/config/user.yaml:
  - Generic "Demo User" profile, wizard_complete=true, no real personal info

demo/config/llm.yaml:
  - All backends disabled (belt-and-suspenders alongside DEMO_MODE block)

demo/data/.gitkeep:
  - staging.db is auto-created on first run, gitignored via demo/data/*.db

.gitignore: add demo/data/*.db

Caddy routes menagerie.circuitforge.tech/peregrine* → 8504 (demo instance).
Personal Peregrine remains on 8502, unchanged.
2026-03-02 11:22:38 -08:00

51 lines
1.2 KiB
YAML

# Demo user profile — pre-seeded for the public menagerie demo.
# No real personal information. All AI features are disabled (DEMO_MODE=true).
name: "Demo User"
email: "demo@circuitforge.tech"
phone: ""
linkedin: ""
career_summary: >
Experienced software engineer with a background in full-stack development,
cloud infrastructure, and data pipelines. Passionate about building tools
that help people navigate complex systems.
nda_companies: []
mission_preferences:
music: ""
animal_welfare: ""
education: ""
social_impact: "Want my work to reach people who need it most."
health: ""
candidate_voice: "Clear, direct, and human. Focuses on impact over jargon."
candidate_accessibility_focus: false
candidate_lgbtq_focus: false
tier: free
dev_tier_override: null
wizard_complete: true
wizard_step: 0
dismissed_banners: []
docs_dir: "/docs"
ollama_models_dir: "~/models/ollama"
vllm_models_dir: "~/models/vllm"
inference_profile: "remote"
services:
streamlit_port: 8501
ollama_host: localhost
ollama_port: 11434
ollama_ssl: false
ollama_ssl_verify: true
vllm_host: localhost
vllm_port: 8000
vllm_ssl: false
vllm_ssl_verify: true
searxng_host: searxng
searxng_port: 8080
searxng_ssl: false
searxng_ssl_verify: true