OPENAI_API_KEY= MODEL_NAME="gpt-realtime-2" # Local vision model (only used with --local-vision CLI flag) # By default, vision is handled by gpt-realtime when the camera tool is used LOCAL_VISION_MODEL=HuggingFaceTB/SmolVLM2-2.2B-Instruct # Cache for local VLM (only used with --local-vision CLI flag) HF_HOME=./cache # Hugging Face token for accessing datasets/models HF_TOKEN= # Profile selection (ignored while the profile is locked — see below) # REACHY_MINI_CUSTOM_PROFILE="example" # ---- Personality lock ---- # The app ships LOCKED to the receptionist profile so a live lobby robot # can't have its reception flow swapped or broken at runtime (the dashboard's # Personality Studio shows the editor but Apply is disabled). On a unit you # own and want to experiment with, set this to true to UNLOCK editing: then # Advanced -> Personality studio's Save / Apply / "Use on startup" all work. # Restart required. Leave locked for production. Also togglable from the # dashboard: Settings -> Advanced. # RECEPTION_PROFILE_UNLOCK=false # Skip loading .env if you prefer environment-only configuration. # REACHY_MINI_SKIP_DOTENV=1 # Optional external profile/tool directories # REACHY_MINI_EXTERNAL_PROFILES_DIRECTORY=external_content/external_profiles # REACHY_MINI_EXTERNAL_TOOLS_DIRECTORY=external_content/external_tools # Optional: discover and auto-load all tools found in REACHY_MINI_EXTERNAL_TOOLS_DIRECTORY, # even if they are not listed in the selected profile's tools.txt. # This is convenient for downloaded tools used with built-in/default profiles. # AUTOLOAD_EXTERNAL_TOOLS=1 # ---- Email delivery (host notifications) ---- # The send_email tool delivers via EITHER Gmail SMTP or Resend, chosen by # EMAIL_BACKEND. Leave EMAIL_BACKEND unset to auto-detect: Gmail if its creds # are set, else Resend, else outbox-only (recorded in the dashboard's Mailbox # Out panel, but nothing leaves the robot). Also configurable from the # dashboard: Settings. # EMAIL_BACKEND=gmail # or "resend" # -- Gmail SMTP (delivers to ANY recipient — no domain to verify) -- # Needs a Google App Password (16 chars) with 2-Step Verification enabled: # https://myaccount.google.com/apppasswords (spaces in the password are OK) # GMAIL_ADDRESS=you@gmail.com # GMAIL_APP_PASSWORD=abcd efgh ijkl mnop # GMAIL_FROM_NAME=Reachy Reception # -- Resend (transactional HTTP API) -- # Get a free API key at https://resend.com/api-keys (3000 emails/month free). # Without RESEND_API_KEY (and no Gmail creds), send_email writes to the # in-memory outbox only (visible in the dashboard's Mailbox Out panel, but # nothing actually leaves the robot). # # RESEND_FROM defaults to "onboarding@resend.dev" — Resend's sandbox sender # that ONLY delivers to the email address registered on your Resend account. # For production / arbitrary recipients, verify a domain at # https://resend.com/domains and set RESEND_FROM to an address on that # domain (e.g. "noreply@methdai.com"). RESEND_API_KEY= RESEND_FROM=onboarding@resend.dev # ---- Reception calendar (Google Calendar via iCal) ---- # Set this to enable scheduled-visitor flow. The receptionist pulls today's # appointments live from this URL (cached ~5 min). When unset, the bot # serves walk-in visitors only — they say "I'm here to see X" and the bot # routes via the employee directory (managed from the dashboard's # Employees panel). There is no hardcoded demo schedule. # # To get a URL: in Google Calendar, create a calendar (e.g. "MethdAI # Reception") -> Settings and sharing -> Integrate calendar -> # "Public address in iCal format". Paste it below. # # Event title convention: " with " # - "Rohan Verma with Mukul" # - "Sara Khan with Priya — product demo follow-up" # Host name matches the employee directory (employees.py); aliases work. # An optional " — note" suffix after the host becomes the appointment note; # alternatively put it in the event's DESCRIPTION field. # RECEPTION_ICS_URL=https://calendar.google.com/calendar/ical/.../public/basic.ics # Timezone used to display iCal event times on the dashboard and to the LLM. # Must be a valid IANA tz name. Defaults to Asia/Kolkata (pilot deployment # is in India). Set this when the robot OS is in a different tz than your # operators expect to see times in. Common values: # Asia/Kolkata India (IST, UTC+5:30) # America/New_York US East Coast # Europe/London UK # Asia/Tokyo Japan # RECEPTION_TIMEZONE=Asia/Kolkata # ---- Privacy retention ---- # Guest face crops in guests/*.png older than this many days are deleted # at app startup. Set to 0 to disable (keep faces forever until FIFO # capacity eviction kicks in at 100). FACE_TTL_DAYS=30 # Visit rows in visitor_log.db older than this many days are deleted at # app startup. Set to 0 to disable (unbounded growth). VISITOR_LOG_RETENTION_DAYS=90 # LBPH face-recognition strictness. LOWER = stricter (fewer false matches, # more "I don't recognise you, please tell me your name" prompts). # 50 - 75 recommended for production (default 75) # 75 - 100 permissive (some lighting/angle variance OK) # 100 - 110 old default — produces frequent false matches # If returning guests stop being recognised, raise by 10 and re-test. # If strangers get greeted as someone else, lower by 10. FACE_LBPH_THRESHOLD=75