Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
136 lines (135 loc) · 5.41 KB
/
Copy path.env.example
File metadata and controls
136 lines (135 loc) · 5.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
ENVIRONMENT=development
POSTGRES_DB=job_agent
POSTGRES_USER=job_agent
POSTGRES_PASSWORD=change-me
DATABASE_URL=postgresql+asyncpg://job_agent:change-me@postgres:5432/job_agent
REDIS_PASSWORD=change-me
REDIS_URL=redis://redis:6379/0
PUBLIC_BASE_URL=http://localhost
CADDY_ADDRESS=http://localhost
SECRET_KEY=replace-with-at-least-32-random-characters
TOKEN_ENCRYPTION_KEY=
ADMIN_USERNAME=admin
ADMIN_PASSWORD_HASH=
# Persistent browser login; valid sessions renew after one day of use.
SESSION_TTL_SECONDS=2592000
USER_SESSION_TTL_SECONDS=2592000
MCP_API_KEYS_HASHED=[]
REAL_EMAIL_DELIVERY_ENABLED=false
EMERGENCY_EMAIL_KILL_SWITCH=false
EMAIL_PROVIDER=fake
GMAIL_CLIENT_ID=
GMAIL_CLIENT_SECRET=
GOOGLE_ADMIN_EMAILS=[]
USER_ACCOUNTS_ENABLED=false
INVITE_REGISTRATION_ENABLED=false
GMAIL_DELIVERY_RECONCILIATION_ENABLED=true
GMAIL_DELIVERY_RECONCILIATION_BATCH=100
GMAIL_DELIVERY_MONITOR_DAYS=14
EMAIL_DELIVERY_MAX_ATTEMPTS=4
# Days an address (a whole domain for a TLS failure) stays paused after a failure the provider gave up on;
# a second such failure after the pause blocks it for good (0 = the first pause never ends).
EMAIL_FAILURE_PAUSE_DAYS=14
# DNS mail-routing preflight (NXDOMAIN/null MX/no route block; timeout/SERVFAIL postpone).
MAIL_ROUTING_PREFLIGHT_ENABLED=true
MAIL_ROUTING_TIMEOUT_SECONDS=5
MAIL_ROUTING_CACHE_TTL_SECONDS=3600
EMPLOYER_MAX_ACTIVE_APPLICATIONS=1
FREEZE_NEW_APPLICATIONS_TO_ACTIVE_EMPLOYER=true
# Days without an employer reply before another vacancy of that employer may be applied to (0 = never).
EMPLOYER_UNANSWERED_RELEASE_DAYS=14
LLM_PROVIDER=mock
OPENAI_API_KEY=
OPENAI_MODEL=
MATCHING_BATCH_SIZE=8
MATCHING_PRIORITY_BATCH_SIZE=4
MATCHING_MAX_JOBS_PER_CYCLE=100
MATCHING_INTER_JOB_DELAY_SECONDS=8
GEMINI_API_KEY=
GEMINI_BASE_URL=https://generativelanguage.googleapis.com
RESUME_STORAGE_PATH=/data/resumes
MAX_RESUME_BYTES=5242880
CRAWLER_USER_AGENT=job-agent/0.1 (+mailto:operator@example.com)
CRAWLER_SCAN_LEASE_SECONDS=180
CRAWLER_SCAN_HEARTBEAT_STALE_SECONDS=180
CRAWLER_SCAN_RECONCILE_INTERVAL_SECONDS=300
CRAWLER_INCREMENTAL_SCAN_TIMEOUT_SECONDS=2700
CRAWLER_FULL_SCAN_TIMEOUT_SECONDS=18000
CRAWLER_DB_LOCK_TIMEOUT_SECONDS=30
CRAWLER_DB_STATEMENT_TIMEOUT_SECONDS=120
# Rabota.md egress resilience. Keep disabled until a trusted primary proxy is configured.
RABOTA_PROXY_POOL_ENABLED=false
RABOTA_PROXY_PRIMARY_URL=
RABOTA_PROXY_FREE_FALLBACK_ENABLED=true
RABOTA_PROXY_DISCOVERY_BATCH=240
RABOTA_PROXY_VALIDATION_CONCURRENCY=24
RABOTA_PROXY_VALIDATION_TIMEOUT_SECONDS=8
RABOTA_PROXY_CANDIDATE_TTL_SECONDS=1800
RABOTA_PROXY_READY_TTL_SECONDS=1800
RABOTA_PROXY_REVALIDATION_GRACE_SECONDS=3600
RABOTA_PROXY_REVALIDATION_RETRY_SECONDS=300
RABOTA_PROXY_REVALIDATION_MAX_FAILURES=3
RABOTA_PROXY_MAINTENANCE_INTERVAL_SECONDS=900
RABOTA_PROXY_MIN_FRESH_FREE=3
RABOTA_PROXY_TARGET_READY_FREE=3
RABOTA_PROXY_PROMOTION_CONCURRENCY=3
RABOTA_PROXY_MAX_PREFLIGHT_ATTEMPTS=12
RABOTA_PROXY_MAINTENANCE_MAX_PREFLIGHT_ATTEMPTS=9
RABOTA_PROXY_BAN_COOLDOWN_SECONDS=21600
RABOTA_PROXY_DEAD_COOLDOWN_SECONDS=3600
RABOTA_PROXY_PRIMARY_DEAD_COOLDOWN_SECONDS=300
RABOTA_PROXY_MAX_FAILOVERS=4
CELERY_WORKER_CONCURRENCY=2
LOG_LEVEL=INFO
ENABLE_LIVE_RABOTA_SMOKE_TEST=false
# Phone call agent (Phase 1: read-only observer). Off by default.
# PHONE_AGENT_ENABLED=false
# PHONEGATE_URL=https://phonegate.nodeforege.win
# PHONEGATE_AUTH_TOKEN=
# PHONE_CALLER_REGION=MD
# Phase 2a: autonomous call answering. Ships OFF. Flip to true only after the
# real-call canary (pytest -m realcall) is green against A14.
PHONE_AUTO_ANSWER_ENABLED=false
# Comma/JSON list of E.164 numbers to never answer, e.g. ["+37360000000"]
PHONE_ANSWER_BLOCKLIST=[]
# --- Phone: evidence clips (captured only for auto-answered calls) ---
# PHONE_EVIDENCE_DIR=storage/phone_evidence
# PHONE_EVIDENCE_MAX_CLIPS_PER_CALL=3 # 0 disables capture
# PHONE_EVIDENCE_SECONDS=8
# PHONE_EVIDENCE_MIN_CHARS=60
# PHONE_EVIDENCE_MAX_CLIP_BYTES=2097152
# PHONE_EVIDENCE_RETENTION_DAYS=30
# PHONE_EVIDENCE_MAX_TOTAL_MB=500
# --- Phone: post-call summary (Celery; off by default) ---
# PHONE_SUMMARY_LLM_ENABLED=false
# PHONE_SUMMARY_LLM_BASE_URL=http://127.0.0.1:4000
# PHONE_SUMMARY_LLM_API_KEY=
# PHONE_SUMMARY_LLM_MODEL= # falls back to OPENAI_MODEL when empty
# PHONE_SUMMARY_LLM_PREFER=quality
# PHONE_VERIFICATION_PIPELINE_VERSION=phone-2b-v1
# PHONE_VERIFICATION_EXTRACTOR_MODEL= # falls back to PHONE_SUMMARY_LLM_MODEL / OPENAI_MODEL
# PHONE_VERIFICATION_VERIFIER_MODEL= # falls back to PHONE_SUMMARY_LLM_MODEL / OPENAI_MODEL
# PHONE_VERIFICATION_ARBITER_MODEL= # falls back to PHONE_SUMMARY_LLM_MODEL / OPENAI_MODEL
# PHONE_VERIFICATION_SMS_MODEL= # falls back to PHONE_SUMMARY_LLM_MODEL / OPENAI_MODEL
# PHONE_VERIFICATION_LLM_TIMEOUT_SECONDS=60
# PHONE_VERIFICATION_MAX_ATTEMPTS=3
# PHONE_VERIFICATION_ASR_FLOOR=0.70
# PHONE_VERIFICATION_PROCESSING_LEASE_SECONDS=300
# PHONE_VERIFICATION_BATCH=10
# --- Phone: inbound SMS polling (read-only PhoneGate API) ---
# PHONE_SMS_BATCH=150
# PHONE_SMS_POLL_INTERVAL_SECONDS=60
# PHONE_SMS_SYNC_STALE_AFTER_SECONDS=300
# PHONE_SMS_CORRELATION_PRE_SKEW_SECONDS=300
# PHONE_SMS_CORRELATION_POST_WINDOW_HOURS=24
# PHONE_SMS_SYNC_POLL_ATTEMPTS=3
# PHONE_SMS_SYNC_POLL_DELAY_SECONDS=1
# --- Phone: Telegram post-call notification (off by default) ---
# TELEGRAM_ENABLED=false
# TELEGRAM_BOT_TOKEN=
# TELEGRAM_CHAT_ID=
# PHONE_TELEGRAM_BATCH=10
# PHONE_TELEGRAM_LEASE_SECONDS=300
# PHONE_TELEGRAM_MAX_ATTEMPTS=3
# PHONE_TELEGRAM_RETRY_BASE_SECONDS=30
# PHONE_TELEGRAM_RETRY_MAX_SECONDS=3600