# Use a server-side Syntarus project key. Never expose it to clients. SYNTARUS_API_KEY=sk_mem_replace_me # For a secret manager/Docker secret, use SYNTARUS_API_KEY_FILE instead. SYNTARUS_BASE_URL=https://ai.syntarus.com/v1 SMARA_DATABASE_URL=postgresql://smara:change-me@postgres:5432/smara SMARA_DATABASE_PATH=./data/smara.db SMARA_POSTGRES_PASSWORD=change-me SMARA_COMPOSE_PROJECT=smara SMARA_BIND_ADDRESS=127.0.0.1 SMARA_HOST_PORT=8090 # Development only. Keep this false in any shared or deployed environment; # production requests must arrive through a verified native Smara session, # device token, or server-to-server assertion. SMARA_DEV_MODE=false # Optional server-to-server gateway assertion secret for non-browser clients. # It is never shipped to the frontend and is not a user credential. SMARA_GATEWAY_SIGNING_SECRET=replace-with-a-long-random-secret # Optional compatibility secret for an internal bearer assertion. Native Web # auth uses SMARA_SESSION_SECRET and does not require this value. SMARA_CONTROL_BRIDGE_SECRET=replace-with-a-different-long-random-secret # Native Smara auth. Point this at the existing accounts database during the # cutover so account ids (and therefore memory namespaces) are preserved. SMARA_ACCOUNTS_DATABASE_URL=postgresql://memoryos:change-me@memoryos-postgres:5432/memoryos_accounts SMARA_SESSION_SECRET=replace-with-a-long-random-session-secret SMARA_SESSION_TTL_DAYS=30 SMARA_AUTH_COOKIE_NAME=smara_session # Optional private operator console. Leave unset to keep /admin unavailable. # The browser receives only a short-lived httpOnly session cookie. SMARA_OPERATOR_SECRET=replace-with-a-long-random-operator-secret SMARA_OPERATOR_COOKIE_NAME=smara_operator SMARA_OPERATOR_SESSION_HOURS=12 SMARA_INTERNAL_TOKEN=replace-with-a-long-random-worker-token # Browser origins allowed to call Smara. SMARA_ALLOWED_ORIGINS=https://ai.syntarus.com # Hosted control-plane policy: personal integrations and browser sessions stay # on the paired desktop. Set true only for a separately reviewed migration. SMARA_HOSTED_USER_INTEGRATIONS_ENABLED=false # Legacy hosted integration vault. Leave these empty in the default hosted # control-plane deployment: user credentials and browser sessions stay on the # paired desktop. Set the explicit opt-in flag only for a reviewed migration. SMARA_INTEGRATION_MASTER_KEY= # Rotation: prepend the new key, keep the old one until all credentials have # been read and re-encrypted by the integration worker, then remove it. SMARA_INTEGRATION_MASTER_KEYS= SMARA_PUBLIC_BASE_URL=https://ai.syntarus.com # Required only when enabling the matching OAuth connection buttons. SMARA_GOOGLE_CLIENT_ID= SMARA_GOOGLE_CLIENT_SECRET= SMARA_TELEGRAM_BOT_TOKEN= SMARA_TELEGRAM_BOT_URL= SMARA_TELEGRAM_CHAT_URL=http://api:8080 SMARA_GITHUB_CLIENT_ID= SMARA_GITHUB_CLIENT_SECRET= # Enable Web Push for the installed phone PWA. Generate/store these only in # deployment secrets; the public key is intentionally safe to return to phones. SMARA_VAPID_PUBLIC_KEY= SMARA_VAPID_PRIVATE_KEY= SMARA_VAPID_SUBJECT=mailto:admin@example.com SMARA_RATE_LIMIT_PER_MINUTE=120 # Required outside development: all API replicas use this Redis bucket. SMARA_REDIS_URL=redis://redis:6379/0 # Optional error reporting. No events leave this process when it is empty. SMARA_SENTRY_DSN= # Direct-chat provider for the first extracted Memento runtime slice. Any # OpenAI-compatible endpoint is supported. Leave blank to keep /v1/chat safely # unavailable rather than silently using an unconfigured provider. SMARA_LLM_BASE_URL=https://api.example.com/v1 SMARA_LLM_API_KEY= SMARA_LLM_MODEL= # Fair GAIA evaluation (opt-in; readiness does not contact the network) SMARA_GAIA_DATASET= SMARA_BENCHMARK_MODEL_ENDPOINT= SMARA_BENCHMARK_MODEL= SMARA_BENCHMARK_API_KEY= SMARA_BENCHMARK_AUTH_HEADER=authorization SMARA_LLM_PROVIDER=configured model provider # Optional allowlisted profiles. Keys stay server-side; clients send only a # profile name. Sarvam uses its native api-subscription-key header. GLM-5.2 # and Gemma 4 are beta/entitlement-gated on Sarvam; keep Grok as the default # until the operator has verified access. SMARA_XAI_KEY= SMARA_SARVAM_KEY= # {"grok":{"base_url":"https://api.x.ai/v1","model":"grok-4.6","api_key_env":"SMARA_XAI_KEY","auth_header":"Authorization","capability":"chat"},"sarvam":{"base_url":"https://api.sarvam.ai/v1","model":"sarvam-105b","api_key_env":"SMARA_SARVAM_KEY","auth_header":"api-subscription-key","capability":"chat"},"sarvam-reasoning":{"base_url":"https://api.sarvam.ai/v2","model":"glm5.2","api_key_env":"SMARA_SARVAM_KEY","auth_header":"api-subscription-key","capability":"reasoning"},"sarvam-vision":{"base_url":"https://api.sarvam.ai/v2","model":"gemma4","api_key_env":"SMARA_SARVAM_KEY","auth_header":"api-subscription-key","capability":"vision"}} SMARA_LLM_PROFILES= SMARA_LLM_DEFAULT_PROFILE=grok # Declarative plugin/MCP descriptors only; arbitrary Python is never imported. SMARA_PLUGIN_MANIFESTS= # Sandbox is disabled unless a separately isolated service is deployed. SMARA_SANDBOX_ENABLED=false SMARA_SANDBOX_URL= SMARA_SANDBOX_TOKEN= # Optional and opt-in. When enabled, research reports are synthesized only # from verified evidence with citation validation. Missing/failed providers # fall back to the deterministic cited report. SMARA_RESEARCH_SYNTHESIS_ENABLED=false # Separate signing secret for CLI bearer tokens. Never reuse the browser bridge # or gateway secret. Rotate by invalidating/reissuing CLI tokens at rollout. SMARA_CLI_TOKEN_SECRET= SMARA_CLI_TOKEN_TTL_DAYS=30 # Provider-neutral web research. Keep the provider key server-side; it is # never returned to the Web, CLI, desktop, or task artifacts. # brave, serper, tavily, or exa. The URL is optional and defaults per provider. SMARA_SEARCH_PROVIDER=brave SMARA_SEARCH_API_KEY= SMARA_SEARCH_URL=https://api.search.brave.com/res/v1/web/search # Optional independent fallback. Deep research retries all search angles here # when the primary provider is unavailable or lacks source diversity. SMARA_SEARCH_FALLBACK_PROVIDER= SMARA_SEARCH_FALLBACK_API_KEY= SMARA_SEARCH_FALLBACK_URL= SMARA_SEARCH_TIMEOUT_SECONDS=12 # Deep research deliberately limits parallel provider calls to avoid losing # evidence to provider burst limits. Use 1 for a strict low-rate plan. SMARA_SEARCH_MAX_CONCURRENCY=2 # Optional source policy. Empty allow-list means public domains are allowed; # blocked domains always win over allowed domains. SMARA_RESEARCH_ALLOWED_DOMAINS= SMARA_RESEARCH_BLOCKED_DOMAINS= # Capture providers are optional and can reuse SMARA_SARVAM_KEY through the # server-side fallback in config.py. Voice keeps the existing # OpenAI-compatible transcription contract; configure it only when that # endpoint is available. Photo analysis uses Gemma 4 and PDF/image OCR uses # Sarvam Document AI. SMARA_CAPTURE_TRANSCRIPTION_BASE_URL= SMARA_CAPTURE_TRANSCRIPTION_API_KEY= SMARA_CAPTURE_TRANSCRIPTION_MODEL= SMARA_CAPTURE_TRANSCRIPTION_AUTH_HEADER=Authorization SMARA_CAPTURE_VISION_BASE_URL=https://api.sarvam.ai/v2 SMARA_CAPTURE_VISION_API_KEY= SMARA_CAPTURE_VISION_MODEL=gemma4 SMARA_CAPTURE_VISION_AUTH_HEADER=api-subscription-key SMARA_CAPTURE_OCR_BASE_URL=https://api.sarvam.ai/doc-ai/v1 SMARA_CAPTURE_OCR_API_KEY= SMARA_CAPTURE_OCR_MODEL=sarvam-vision-v1 SMARA_CAPTURE_OCR_LANGUAGE=en-IN SMARA_CAPTURE_OCR_AUTH_HEADER=api-subscription-key # Performance rollout switches. Keep enabled after the beta acceptance suite # is green; any single optimization can be disabled without a code deploy. SMARA_FAST_ROUTING_ENABLED=true SMARA_POOLED_RESOURCES_ENABLED=true SMARA_WORK_SIGNALS_ENABLED=true SMARA_DESKTOP_LONG_POLL_ENABLED=true SMARA_SHADOW_ROUTING_ENABLED=false SMARA_WORKER_CONCURRENCY=4