Helios needs exactly three environment variables, all of which are API keys for external services. They are never exposed to the browser — only the serverless functions inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/V3RNE42/helios/llms.txt
Use this file to discover all available pages before exploring further.
/api/ read them at request time on Vercel’s server-side runtime.
.env.example
The repository ships with a.env.example file at the project root that lists all required variables with empty values:
.env.example
Variable reference
OpenCage Data geocoding API key. Used by
api/geocode.js as a fallback geocoder when the primary provider (Nominatim / OpenStreetMap) rate-limits or returns no results. Obtain a key at https://opencagedata.com/.ipgeolocation.io API key. The primary source for UTC-offset lookups in
api/timezone.js. Given a latitude and longitude, the function calls ipgeolocation.io first and falls back to TimeZoneDB only if this call fails. Obtain a key at https://ipgeolocation.io/.TimeZoneDB API key. The fallback timezone provider in
api/timezone.js, used only when the ipgeolocation.io call fails. Obtain a key at https://timezonedb.com/.Local development
For local development withvercel dev, copy the example file to .env at the project root and fill in your keys:
.env and populate each variable:
.env
vercel dev reads this file automatically and injects the variables into the serverless function runtime, exactly as production does. A plain static server such as python -m http.server does not serve the /api functions and therefore cannot use these variables.
Production (Vercel)
For production deployments, set the three variables in the Vercel dashboard under Settings → Environment Variables. They do not need to be committed to the repository — the Vercel runtime injects them into each serverless function invocation. After adding or changing environment variables in the dashboard, trigger a new deployment for the changes to take effect.How variables are consumed
Each serverless function reads only the keys it needs viaprocess.env:
-
api/geocode.js— readsprocess.env.OPENCAGE_KEYinside thefromOpenCagefunction. The key is only accessed when Nominatim has already failed, so a missing key causes an error only in that fallback path. -
api/timezone.js— readsprocess.env.IPGEOLOCATION_KEYinsidefromIpGeolocation(called first) andprocess.env.TIMEZONEDB_KEYinsidefromTimeZoneDB(called only iffromIpGeolocationthrows). If either key is absent when its function is invoked, the function throws an explicit configuration error rather than making a malformed API request.