Z User
v3.1.0: Part B architecture migration — eliminate Hugging Face inference credit dependency
6c516b6 Download .env.example from sitcod3/modul-x: direct link, hf CLI and curl.
- Browser
- Download file 4.79 kB
-
https://huggingface.co/spaces/sitcod3/modul-x/resolve/main/.env.example
- Command line
-
hf download hf://spaces/sitcod3/modul-x/.env.example
-
curl -L -o .env.example https://huggingface.co/spaces/sitcod3/modul-x/resolve/main/.env.example
4.79 kB
| # Copy to .env and adjust for your environment. | |
| APP_ENVIRONMENT=development | |
| APP_NAME="BRIDGE Modul - X" | |
| APP_VERSION="2.1.0" | |
| DEBUG=true | |
| SECRET_KEY=replace-with-a-random-secret | |
| HOST=0.0.0.0 | |
| PORT=8000 | |
| WORKERS=4 | |
| # Supabase (server-side service-role key; never expose it to the browser) | |
| SUPABASE_URL=https://YOUR_PROJECT_REF.supabase.co | |
| SUPABASE_ANON_KEY=your-public-anon-key | |
| SUPABASE_SERVICE_ROLE_KEY=your-server-only-service-role-key | |
| ENABLE_DB_PERSISTENCE=true | |
| LICENSE_ENFORCEMENT=false | |
| # Local development defaults | |
| DATABASE_URL=sqlite+aiosqlite:///./emailval.db | |
| REDIS_URL=redis://localhost:6379/0 | |
| REDIS_CACHE_TTL=86400 | |
| CELERY_BROKER_URL=redis://localhost:6379/1 | |
| CELERY_RESULT_BACKEND=redis://localhost:6379/2 | |
| # For Upstash, use TLS and database index /0: | |
| # REDIS_URL=rediss://default:YOUR_REDIS_TOKEN@YOUR_ENDPOINT:6379/0 | |
| # CELERY_BROKER_URL=rediss://default:YOUR_REDIS_TOKEN@YOUR_ENDPOINT:6379/0 | |
| # CELERY_RESULT_BACKEND=rediss://default:YOUR_REDIS_TOKEN@YOUR_ENDPOINT:6379/0 | |
| # Never disable TLS certificate verification. Upstash Free has one database; | |
| # prove Celery key-prefix isolation and compatibility before sharing it, or | |
| # use separate provisioned databases/a suitable paid plan for production jobs. | |
| # The app does not need the Upstash Developer API key. Keep it out of runtime | |
| # environment variables; use it only from a restricted operator workflow. | |
| CORS_ORIGINS=["http://localhost:5173","http://localhost:3000","http://127.0.0.1:5173"] | |
| SMTP_TIMEOUT=10 | |
| DNS_TIMEOUT=5 | |
| MAX_BULK_EMAILS=10000 | |
| RATE_LIMIT_PER_MINUTE=60 | |
| USE_PROXIES=false | |
| # --- Mailbox verification engine (Layers 5 + 6) — FULLY AUTONOMOUS --- | |
| # The validator probes recipient MX servers with its own connection-reusing | |
| # SMTP engine. NO third-party verification API, NO vendor key, NO per-check | |
| # fee — the former MillionVerifier delegation was removed in v3.0.0. | |
| # | |
| # IMPORTANT: port 25 must be open outbound. Most cloud PaaS (Hugging Face | |
| # Spaces, AWS Lambda, Cloudflare Workers) BLOCK it. If outbound 25 is blocked, | |
| # the engine still runs but reports every mailbox as smtp_unreachable (honest | |
| # "risky", refunded) — it will never fake a verdict. Two fixes: | |
| # 1) run the orchestrator on a VPS with port-25 egress, or | |
| # 2) keep the orchestrator where it is and point SMTP_WORKER_URL at a | |
| # port-25-capable host running this same image (spec §3.3 worker role). | |
| MAILBOX_PROVIDER=auto # auto | local(=autonomous) | remote | |
| # Remote SMTP probe worker (spec §3.3). Empty = built-in engine on this host. | |
| # Example: https://smtp-worker.example.com (a deployment of this image) | |
| SMTP_WORKER_URL= | |
| # Shared secret required on POST /api/v1/smtp/probe* (X-Worker-Token header). | |
| # Set the SAME value on the worker and on the orchestrator. | |
| SMTP_WORKER_TOKEN= | |
| SMTP_WORKER_TIMEOUT=15 | |
| # --- DNS-over-HTTPS worker (spec §3.2) --- | |
| # MX resolution on free public resolvers (Google + Cloudflare) with a | |
| # dual-resolver consistency check (dns_inconsistent risk signal). Free, | |
| # unlimited, no auth; legacy dnspython path stays as automatic fallback. | |
| DOH_ENABLED=true | |
| DOH_TIMEOUT=5 | |
| # --- AI Risk Scorer (spec §3.4 — LOCAL inference, zero external credits) --- | |
| # Part B architecture migration: the Hugging Face Inference API path was | |
| # REMOVED. The model id names a public HF Hub checkpoint whose weights are | |
| # pulled once (free, unmetered — Hub downloads are not Inference API calls) | |
| # and then run in-process via a transformers pipeline. No token exists in | |
| # this deployment surface; the Dockerfile pre-seeds HF_HOME so a running | |
| # container makes zero network calls for scoring. | |
| # Empty disables inference: the built-in rule-based heuristic then scores | |
| # every ambiguous address (catch-all / unknown) at zero marginal cost, and | |
| # every verdict it decides is marked fallback_used=true. The circuit breaker | |
| # opens on model-load failure or repeated inference errors and the engine | |
| # degrades gracefully — never blocks. | |
| AI_SCORER_MODEL=typeform/distilbert-base-uncased-mnli | |
| AI_SCORER_ZERO_SHOT=true | |
| AI_SCORER_TIMEOUT=12 | |
| # Master switch: false forces heuristic-only scoring (no model load at all). | |
| AI_SCORER_LOCAL=true | |
| # Repeated PII-free feature strings never re-invoke the model inside this | |
| # TTL window (spec §2.2). 0 disables the score cache. | |
| AI_SCORE_CACHE_TTL_SECONDS=3600 | |
| AI_CIRCUIT_FAIL_THRESHOLD=3 | |
| AI_CIRCUIT_COOLDOWN_SECONDS=300 | |
| # SMTP identity used in the probe dialogue. Use a real, resolvable hostname with | |
| # a matching PTR record on a production host — strict receivers reject generic | |
| # HELO names and that degrades accuracy. | |
| SMTP_HELO_DOMAIN=validator.local | |
| SMTP_MAIL_FROM=probe@validator.local | |
| # Catch-all is a domain property: cache the verdict for 72h. | |
| CATCH_ALL_TTL_SECONDS=259200 | |
| # Per-MX-host session cap and overall bulk concurrency. | |
| MAX_CONNECTIONS_PER_HOST=2 | |
| BULK_CONCURRENCY=20 | |