Files
periscope/backend/.env.example
T
micheleandCursor 61f85f519b Default to DeepSeek V4.1 Flash, show API cost in USD, and re-analyze after replacing BOM and netlist.
V4.1 is natively multimodal so every stage uses deepseek-flash; pricing and the UI now surface dollars instead of empty credits. KiCad netlists and neighborhood fingerprints land in the same cut so a second run can keep the project and skip unchanged ICs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 20:55:35 +02:00

84 lines
3.4 KiB
Bash

# Pinscope Backend — Environment Variables
# Copy to backend/.env and fill in values. Only DEEPSEEK_API_KEY is required.
# -- AI (DeepSeek, default) --------------------------------------------------
# Key from https://platform.deepseek.com/
DEEPSEEK_API_KEY=sk-...
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-flash
DEEPSEEK_VISION_MODEL=deepseek-flash
# enabled (default) | disabled — thinking mode on DeepSeek V4
DEEPSEEK_THINKING=enabled
# Official values: low | high | max
DEEPSEEK_REASONING_EFFORT=high
# PDF ingest (DeepSeek cannot take native PDFs)
# DEEPSEEK_PDF_MAX_CHARS=500000
# DEEPSEEK_PDF_IMAGE_PAGES=32
# Per-stage DeepSeek model overrides (leave empty to use the defaults below)
# V4.1 Flash is natively multimodal — extraction and review share deepseek-flash.
# MODEL_PINTABLE_DEEPSEEK=deepseek-flash
# MODEL_PATTERN_DEEPSEEK=deepseek-flash
# MODEL_SPECS_DEEPSEEK=deepseek-flash
# MODEL_VALIDATION_DEEPSEEK=deepseek-flash
# MODEL_AUTO_RESOLVE_DEEPSEEK=deepseek-flash
# MODEL_NORMALIZE_DEEPSEEK=deepseek-flash
# -- AI provider routing -----------------------------------------------------
# Default provider for every stage; per-stage env vars override.
# Valid values: deepseek | anthropic | gemini
PROVIDER_DEFAULT=deepseek
# PROVIDER_VALIDATION=deepseek
# PROVIDER_AUTO_RESOLVE=deepseek
# -- Anthropic (optional fallback) -------------------------------------------
# ANTHROPIC_API_KEY=sk-ant-...
# ANTHROPIC_MODEL=claude-sonnet-4-6
# MODEL_PINTABLE=
# MODEL_PATTERN=
# MODEL_VALIDATION=
# -- Gemini (optional) -------------------------------------------------------
# GEMINI_API_KEY=
# GEMINI_MODEL=gemini-3-flash-preview
# MODEL_VALIDATION_GEMINI=
# -- Per-stage fallback ------------------------------------------------------
# If set, the stage retries once with FALLBACK_PROVIDER_<STAGE> /
# FALLBACK_MODEL_<STAGE> when the primary provider raises.
# FALLBACK_PROVIDER_VALIDATION=anthropic
# FALLBACK_MODEL_VALIDATION=claude-sonnet-4-6
# -- Storage -----------------------------------------------------------------
# Set GCS_BUCKET to store projects/library in Google Cloud Storage.
# Leave empty for local mode (uses the data/ directory).
GCS_BUCKET=
# -- CORS --------------------------------------------------------------------
# Frontend URL(s), JSON list
CORS_ORIGINS=["http://localhost:3000","http://127.0.0.1:3000","http://localhost:18742","http://127.0.0.1:18742"]
# -- DigiKey (optional) ------------------------------------------------------
# Optional catalog datasheet source and parameter-based passive auto-resolve.
# Order: BOM URL → LCSC → manufacturer PDF URLs → Mouser → DigiKey.
# DIGIKEY_CLIENT_ID=
# DIGIKEY_CLIENT_SECRET=
# DIGIKEY_ENVIRONMENT=production
# DIGIKEY_LOCALE_SITE=US
# DIGIKEY_LOCALE_LANGUAGE=en
# DIGIKEY_LOCALE_CURRENCY=USD
# -- Mouser (optional) -------------------------------------------------------
# Search API key from mouser.com/api-hub. Same family/packing match as DigiKey.
# MOUSER_API_KEY=
# -- Email notifications (optional) ------------------------------------------
# Gmail API via domain-wide delegation. Leave EMAIL_SENDER empty to disable.
# Service account credentials come from GOOGLE_APPLICATION_CREDENTIALS.
EMAIL_SENDER=
EMAIL_FRONTEND_URL=
# Fixed admin email for pipeline-started notifications (leave empty to disable)
EMAIL_ADMIN_NOTIFY=
# Recipient for /api/contact form submissions (leave empty to disable)
CONTACT_RECIPIENT=