Getting Started
Environment
Important Urmate environment variables grouped by feature area.
Environment
Urmate environment values live in /root/apps/urmate/.env.local. Use /root/apps/urmate/.env.example as the baseline. Never commit real secrets.
Core
| Variable | Purpose |
|---|---|
DATABASE_URL | Main PostgreSQL connection used by Prisma. |
NEXT_PUBLIC_SITE_URL | Public site URL for links and callbacks. |
NEXT_PUBLIC_SITE_NAME | Public site name. |
NEXT_ALLOWED_DEV_ORIGINS | Extra allowed dev origins for Next dev server. |
PORT | Optional app port. |
Auth
| Variable | Purpose |
|---|---|
BETTER_AUTH_URL | Better Auth base URL. |
BETTER_AUTH_TRUSTED_ORIGINS | Trusted origins for auth. |
BETTER_AUTH_SECRET | Required auth signing secret. |
GOOGLE_CLIENT_ID, GOOGLE_SECRET | Google login OAuth client. |
GITHUB_CLIENT_ID, GITHUB_SECRET | GitHub OAuth. |
RESEND_API_KEY, RESEND_FROM_EMAIL | Email sending. |
Google Calendar
Instructor calendar uses a separate OAuth client:
| Variable | Purpose |
|---|---|
GOOGLE_CALENDAR_CLIENT_ID | Calendar OAuth client id. |
GOOGLE_CALENDAR_SECRET | Calendar OAuth secret. |
Redirect URI:
http://localhost:3000/api/study/instructor/calendar/callback
For production or tunnel testing:
https://your-origin.example/api/study/instructor/calendar/callback
Chat Channels
| Variable | Purpose |
|---|---|
CHAT_CHANNEL_PUBLIC_ORIGIN | Public HTTPS origin used for Telegram/Discord/Meta webhooks. |
CHAT_CLOUDNEST_PROVIDER | Storage provider for chat assets. |
CHAT_CLOUDNEST_STORAGE_ACCOUNT_ID | Chat storage account. |
CHAT_CLOUDNEST_FOLDER_ID | Chat storage folder. |
REDIS_URL | Optional Redis. |
NEXT_PUBLIC_SOCKET_URL | Browser socket URL. |
SOCKET_PORT | Socket server port. |
Circles
| Variable | Purpose |
|---|---|
CIRCLES_APP_BASE_PATH | Usually /circles-app. |
CIRCLES_INTERNAL_URL | Internal Circles service origin. |
CIRCLES_PROXY_SECRET | Shared proxy secret. |
CIRCLES_API_SECRET, CIRCLES_API_SECRET_KEY | API bridge secrets if enabled. |
CIRCLES_DB_HOST, CIRCLES_DB_PORT, CIRCLES_DB_NAME, CIRCLES_DB_USER, CIRCLES_DB_PASSWORD, CIRCLES_DB_PREFIX | Circles/Grupo database bridge. |
Provider Key Encryption
| Variable | Purpose |
|---|---|
LLM_PROVIDER_SECRET_KEY | Encrypts saved provider keys. |
LLM_PROVIDER_DIGEST_KEY | Creates provider key digests. |
LLM_PROVIDER_SECRET_KEY_VERSION | Current key version label. |
XRouter and AI Providers
Common variables:
XROUTER_API_KEYXROUTER_MODELXROUTER_FALLBACK_PROVIDEROPENROUTER_API_KEYOPENAI_API_KEYOPENAI_BASE_URLANTHROPIC_API_KEYGOOGLE_GENERATIVE_AI_API_KEYGEMINI_API_KEYAWS_BEARER_TOKEN_BEDROCKGOOGLE_VERTEX_PROJECTHUGGINGFACE_API_KEYTOGETHER_API_KEYFIREWORKS_API_KEYXAI_API_KEY
Study LMS
| Variable | Purpose |
|---|---|
STUDY_LMS_DATABASE_URL, LMS_DATABASE_URL | Optional external LMS DB. |
STUDY_LMS_MEDIA_BASE_URL, LMS_MEDIA_BASE_URL | LMS media base URL. |
STUDY_CLOUDNEST_PROVIDER | Study storage provider. |
STUDY_INSTRUCTOR_CLOUDNEST_PROVIDER | Instructor upload storage. |
NCERT_CLOUDNEST_PROVIDER | NCERT sync storage. |
STUDY_ASSIGNMENT_UPLOAD_MAX_BYTES | Assignment upload limit. |
STUDY_INVITES_FROM_EMAIL | Study invite sender. |
Billing
| Variable | Purpose |
|---|---|
RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET, RAZORPAY_WEBHOOK_SECRET | Razorpay. |
STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET | Stripe. |
PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET, PAYPAL_WEBHOOK_ID, PAYPAL_ENV | PayPal. |
GOOGLE_PAY_MERCHANT_ID, GOOGLE_PAY_ENVIRONMENT | Google Pay. |
Runtimes and Infra
| Variable | Purpose |
|---|---|
INFRA_RELAY_URL, INFRA_RELAY_HTTP_URL | VPS relay URLs. |
INFRA_RELAY_SIGNING_SECRET | Relay signing secret. |
URMATE_GAME_ENGINE_* | Game engine install/workspace/repo settings. |
URMATE_CODE_TUTOR_* | Code Tutor runtime and AI settings. |
CODESANDBOX_API_KEY, E2B_API_KEY | External runtime providers. |

