# Root environment variables — Rust core, Tauri shell, and shared settings. # Copy to .env and fill in values as needed. # Loaded via: source scripts/load-dotenv.sh # # Tags: [required] must be set, [optional] has a sensible default or can be blank # --------------------------------------------------------------------------- # App environment # --------------------------------------------------------------------------- # [optional] App environment selector: production | staging. # Defaults to 'production' when unset. Uncomment and set to 'staging' to point # at the staging backend, use the ~/.openhuman-staging workspace, etc. # OPENHUMAN_APP_ENV=staging # --------------------------------------------------------------------------- # Backend API # --------------------------------------------------------------------------- # [optional] Primary backend URL (read by Rust core and QuickJS skills sandbox). # Defaults to https://api.tinyhumans.ai (production). Override here only if you # want a different backend (e.g. https://staging-api.tinyhumans.ai). # BACKEND_URL=https://api.tinyhumans.ai # [optional] Vite frontend mirrors — only required if you set OPENHUMAN_APP_ENV # above. Defaults are production. # VITE_OPENHUMAN_APP_ENV=staging # VITE_BACKEND_URL=https://staging-api.tinyhumans.ai # [optional] Consumer first-session UX in the desktop/web app (default off). See docs/plans/consumer-first-session-spec.md # VITE_CONSUMER_FIRST_SESSION=true # --------------------------------------------------------------------------- # Authentication (for skills OAuth proxy and debug scripts) # --------------------------------------------------------------------------- # [optional] Session JWT — used by QuickJS skills sandbox for oauth.fetch proxy calls. # Also used by debug scripts (scripts/debug-skill.sh, scripts/debug-notion-live.sh). # Get from login flow or browser devtools. JWT_TOKEN= # --------------------------------------------------------------------------- # Core process # --------------------------------------------------------------------------- # [optional] Default: 127.0.0.1 (use 0.0.0.0 for Docker / cloud). # Leave unset to keep the default; the Docker image sets 0.0.0.0 automatically. # OPENHUMAN_CORE_HOST= # [optional] Default: 7788 OPENHUMAN_CORE_PORT=7788 # [optional] Default: http://127.0.0.1:7788/rpc OPENHUMAN_CORE_RPC_URL=http://127.0.0.1:7788/rpc # Core RPC bearer token. Single source of truth for /rpc auth. # - Tauri desktop: set automatically by the shell — leave blank. # - Docker / cloud / VPS: REQUIRED. Generate with `openssl rand -hex 32`. # Same value goes in the desktop's app/.env.local (or paste into the # first-run picker). See gitbooks/features/cloud-deploy.md. # - Standalone `openhuman core run` on a workstation: leave blank — the # core writes ${OPENHUMAN_WORKSPACE:-~/.openhuman}/core.token (0o600). # Use scripts/print-core-token.sh on the host to inspect the active token. # OPENHUMAN_CORE_TOKEN= # [optional] Run mode: child (default, spawns sidecar) | inprocess OPENHUMAN_CORE_RUN_MODE=child # [optional] Override path to openhuman core binary (leave blank for auto-detection) OPENHUMAN_CORE_BIN= # [optional] Explicit .env path for `openhuman serve` / `openhuman run` (loaded before the server starts). # Must be set in the parent environment (exported in your shell or service manager). It is read before # any dotenv file is loaded, so defining OPENHUMAN_DOTENV_PATH inside a .env file cannot select that file. # OPENHUMAN_DOTENV_PATH= # --------------------------------------------------------------------------- # Config overrides (override config.toml values at runtime) # --------------------------------------------------------------------------- # [optional] Default model to use OPENHUMAN_MODEL= # [optional] Workspace directory (default: ~/.openhuman or ~/.openhuman-staging when OPENHUMAN_APP_ENV=staging) OPENHUMAN_WORKSPACE= # [optional] Default: 0.7 OPENHUMAN_TEMPERATURE=0.7 # [optional] Skill + agent tool execution timeout in seconds (default 120, max 3600) # OPENHUMAN_TOOL_TIMEOUT_SECS= # [optional] Headless update restart contract: self_replace | supervisor # OPENHUMAN_AUTO_UPDATE_RESTART_STRATEGY=self_replace # [optional] Allow bearer-authenticated RPC callers to invoke update.apply/update.run # Disable on exposed server deployments unless you explicitly want remote self-upgrade. # OPENHUMAN_AUTO_UPDATE_RPC_MUTATIONS_ENABLED=true # --------------------------------------------------------------------------- # Runtime flags # --------------------------------------------------------------------------- # [optional] Default: 0 OPENHUMAN_BROWSER_ALLOW_ALL=0 # [optional] Default: 0 OPENHUMAN_LOG_PROMPTS=0 # [optional] Enable reasoning mode OPENHUMAN_REASONING_ENABLED= # --------------------------------------------------------------------------- # Web search # --------------------------------------------------------------------------- # Web search is always enabled — no opt-in flag. Configure result budgets below. # [optional] Default: 5 OPENHUMAN_WEB_SEARCH_MAX_RESULTS=5 # [optional] Default: 10 OPENHUMAN_WEB_SEARCH_TIMEOUT_SECS=10 # --------------------------------------------------------------------------- # Seltz search (direct API — https://seltz.ai) # --------------------------------------------------------------------------- # [optional] API key from https://console.seltz.ai. When set, enables the # seltz_search agent tool. Fast (<200ms), independent index, domain/date filters. # SELTZ_API_KEY= # [optional] Override API base URL (default: https://api.seltz.ai/v1) # SELTZ_API_URL= # [optional] Default max results per query (1-20, default 10) # OPENHUMAN_SELTZ_MAX_RESULTS=10 # --------------------------------------------------------------------------- # Proxy # --------------------------------------------------------------------------- # [optional] Default: false OPENHUMAN_PROXY_ENABLED=false # [optional] HTTP proxy URL OPENHUMAN_HTTP_PROXY= # [optional] HTTPS proxy URL OPENHUMAN_HTTPS_PROXY= # [optional] Catch-all proxy URL OPENHUMAN_ALL_PROXY= # [optional] Comma-separated hosts to bypass proxy OPENHUMAN_NO_PROXY= # [optional] Proxy scope OPENHUMAN_PROXY_SCOPE= # [optional] Comma-separated services to proxy OPENHUMAN_PROXY_SERVICES= # --------------------------------------------------------------------------- # Local AI model tier # --------------------------------------------------------------------------- # [optional] Override selected model tier: low, medium, high # Applies the corresponding preset at config load time (overrides config.toml). OPENHUMAN_LOCAL_AI_TIER= # [optional] Override LM Studio's OpenAI-compatible local server base URL. # Defaults to http://localhost:1234/v1 when local_ai.provider = "lm_studio". OPENHUMAN_LM_STUDIO_BASE_URL= # --------------------------------------------------------------------------- # Local AI binary overrides # --------------------------------------------------------------------------- # [optional] Override path to whisper binary WHISPER_BIN= # [optional] Override path to piper binary PIPER_BIN= # [optional] Override path to ollama binary OLLAMA_BIN= # --------------------------------------------------------------------------- # Telegram managed login # --------------------------------------------------------------------------- # [optional] Bot username for managed Telegram DM linking (default: openhuman_bot) OPENHUMAN_TELEGRAM_BOT_USERNAME=openhuman_bot # --------------------------------------------------------------------------- # Wallet RPC overrides # --------------------------------------------------------------------------- # [optional] Wallet chain RPC URLs. When unset, core falls back to built-in # public mainnet defaults: # EVM -> https://ethereum-rpc.publicnode.com # BTC -> https://blockstream.info/api # Solana -> https://api.mainnet-beta.solana.com # Tron -> https://api.trongrid.io # Override these when you want a private/provisioned RPC, a staging fork, or # a deterministic local chain during tests. # OPENHUMAN_WALLET_RPC_EVM= # OPENHUMAN_WALLET_RPC_BTC= # OPENHUMAN_WALLET_RPC_SOLANA= # OPENHUMAN_WALLET_RPC_TRON= # --------------------------------------------------------------------------- # Skills # --------------------------------------------------------------------------- # [optional] Override skills registry URL. # Supports remote HTTP URLs and local file paths for development: # SKILLS_REGISTRY_URL=https://example.com/registry.json (remote) # SKILLS_REGISTRY_URL=/path/to/openhuman-skills/skills/registry.json (local) # When set to a local path, the registry is read directly from disk on every # call (no caching), so changes are picked up immediately. SKILLS_REGISTRY_URL= # [optional] Local skills source directory for development. # Points to the built skills directory (the folder containing per-skill subdirs # with manifest.json + index.js). When set, this takes highest priority for # skill discovery and install will copy from this directory instead of downloading. # Example: SKILLS_LOCAL_DIR=/Users/you/work/openhuman-skills/skills SKILLS_LOCAL_DIR= # [optional] Enable sync-derived user working memory extraction (default: true). # Set to false to disable persisting `working.user.*` docs from skill sync payloads. OPENHUMAN_SKILLS_WORKING_MEMORY_ENABLED=true # --------------------------------------------------------------------------- # Python runtime # --------------------------------------------------------------------------- # [optional] Default: true. Controls whether core may resolve Python for # Python-backed integrations such as stdio MCP servers. # OPENHUMAN_RUNTIME_PYTHON_ENABLED=true # [optional] Minimum acceptable interpreter version (default: 3.12.0). # OPENHUMAN_RUNTIME_PYTHON_MINIMUM_VERSION=3.12.0 # [optional] Pin a specific python-build-standalone release tag. Blank means # query the latest release at install time. # OPENHUMAN_RUNTIME_PYTHON_MANAGED_RELEASE_TAG= # [optional] Reuse a host interpreter before the managed runtime. Default: false. # OPENHUMAN_RUNTIME_PYTHON_PREFER_SYSTEM=false # [optional] Preferred executable name or absolute path. # OPENHUMAN_RUNTIME_PYTHON_PREFERRED_COMMAND=python3.12 # [optional] Reserved cache directory for future managed CPython installs. # OPENHUMAN_RUNTIME_PYTHON_CACHE_DIR= # --------------------------------------------------------------------------- # Error Reporting (Sentry) # --------------------------------------------------------------------------- # [optional] Sentry DSN for Rust core error reporting (no PII is sent). # Reports to the `openhuman-core` Sentry project. The Tauri shell uses a # separate `OPENHUMAN_TAURI_SENTRY_DSN`; the React frontend uses # `VITE_SENTRY_DSN`. The legacy unprefixed name `OPENHUMAN_SENTRY_DSN` is # still accepted as a fallback during the transition. OPENHUMAN_CORE_SENTRY_DSN= # [optional] Override the Sentry server URL. Defaults to sentry.io if unset. # Set to https://sentry.tinyhumans.ai for the self-hosted instance — used by # sentry-cli (symbol/release uploads) and the @sentry/vite-plugin. SENTRY_URL= # [optional] Short git SHA baked into the Sentry release tag # (`openhuman@+`) via `option_env!("OPENHUMAN_BUILD_SHA")`. # CI sets this automatically; leave blank locally (release tag falls back # to `openhuman@`). OPENHUMAN_BUILD_SHA= # [optional] Default: true — set to false to disable anonymized analytics & crash reports OPENHUMAN_ANALYTICS_ENABLED=true # --------------------------------------------------------------------------- # Logging # --------------------------------------------------------------------------- # [optional] Default: info RUST_LOG=info # [optional] Default: 0 (set to 1 for full backtraces) RUST_BACKTRACE=1 # --------------------------------------------------------------------------- # Testing (do not set in production) # --------------------------------------------------------------------------- # [optional] Enable mock service mode # OPENHUMAN_SERVICE_MOCK=0 # [optional] Path to mock state file # OPENHUMAN_SERVICE_MOCK_STATE_FILE=