File size: 5,366 Bytes
06a1901
 
 
 
 
 
 
 
 
 
 
 
 
8db7d9a
06a1901
 
8db7d9a
 
 
 
 
 
 
 
 
 
06a1901
 
 
 
 
 
 
 
 
 
 
 
8db7d9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
06a1901
8db7d9a
 
 
06a1901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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:  "<Visitor name> with <Host name>"
#   - "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