# Copy to .env. Sample mode stays on localhost and uses fictional data. # Every mode requires a server-only CopilotKit Intelligence project key. WORKSPACE_MODE=sample AGENT_BACKEND=sample PORT=8787 HOST=127.0.0.1 PUBLIC_API_URL=http://localhost:8787 ALLOWED_ORIGINS=http://localhost:8081,http://127.0.0.1:8081 DATA_DIR=.openmuse TASK_WORKER_ENABLED=true # Rate limiting keys on the socket address. Set true only behind a reverse proxy that # overwrites X-Forwarded-For; otherwise callers can spoof it. # TRUST_PROXY=false # General delegated work: select AGENT_BACKEND=model and a provider/model. # MODEL=openai/your-model-id # OPENAI_API_KEY= # ANTHROPIC_API_KEY= # GOOGLE_API_KEY= # Keyless public web search is enabled by default. Queries and task/chat context go to Parallel. # Disable on the API and any separate task worker with WEB_SEARCH_ENABLED=false. WEB_SEARCH_ENABLED=true # Optional OpenAI-compatible Responses API endpoint: # OPENAI_BASE_URL= # Optional Anthropic endpoint override; a trailing /v1 is stripped (the SDK adds /v1 itself): # ANTHROPIC_BASE_URL= # Optional Google AI endpoint override; a trailing /v1beta is stripped (the SDK adds /v1beta itself): # GOOGLE_GENERATIVE_AI_BASE_URL= # For a gateway model ID such as vendor/model, set MODEL=openai/vendor/model. # Providers whose /responses tool loop is incomplete (e.g. DeepSeek) can opt # into the Chat Completions wire format instead: # OPENAI_CHAT_COMPLETIONS=true # Live Google workspace: WORKSPACE_MODE=live, AGENT_BACKEND=model. # OPENMUSE_ACCESS_KEY= # random secret, at least 24 characters # TOKEN_ENCRYPTION_KEY= # 32 random bytes encoded as base64 # GOOGLE_CLIENT_ID= # GOOGLE_CLIENT_SECRET= # OAuth callback is PUBLIC_API_URL + /api/google/callback # Optional separate task worker; all processes share DATA_DIR for PDF files. # DATABASE_URL=postgresql://... # Set TASK_WORKER_ENABLED=false on the API when using pnpm dev:worker. # Browser worker (separate from the task worker): # BROWSER_WORKER_URL=http://127.0.0.1:8790 # WORKER_TOKEN= # same random 32+ character secret in API and browser worker WORKER_DATA_DIR=.openmuse/browser-profiles WORKER_HOST=127.0.0.1 # An optional external raw AG-UI agent replaces conversational routing only. # AGENT_BACKEND=agui # AGENT_URL=https://your-agent.example/run # AGENT_TOKEN= # OpenBot's Intelligence runtime is not this raw AG-UI URL. See its adapter docs. # CopilotKit Intelligence is required in every mode. Create or select a project # with the commands below, then keep the generated key server-only. # npx copilotkit@latest login # npx copilotkit@latest project select CPK_INTELLIGENCE_API_KEY= # CopilotKit SDK telemetry goes through the shared sink to PostHog, tagged OpenMuse. # project select also writes CPK_TELEMETRY_ID: preserve that generated value and # deploy it alongside CPK_INTELLIGENCE_API_KEY to link runtime usage to the account. # Do not invent an identity or copy one from another project. # CPK_TELEMETRY_ID= # generated by the CLI; keep server-only # Full funnel capture is the default; an explicit sample rate overrides it. # COPILOTKIT_TELEMETRY_SAMPLE_RATE=1 # Opt out of SDK telemetry with either flag (true or 1), then restart the API: # COPILOTKIT_TELEMETRY_DISABLED=true # DO_NOT_TRACK=1 # Optional private Docker Linux computer (separate from the browser). # Build first: docker build -t openmuse-computer:local apps/computer # Docker must be reachable from the API and any separate task worker. COMPUTER_ENABLED=false COMPUTER_IMAGE=openmuse-computer:local # Stable deployment name shared by API and worker; defaults to a hash of PUBLIC_API_URL. # COMPUTER_DEPLOYMENT_ID=my-openmuse # Optional scoped Docker engine, e.g. DOCKER_CONTEXT=colima-openmuse # Or run each owner's computer in an E2B Desktop sandbox instead of Docker # (graphical desktop with internet access; see docs/COMPUTER.md): # COMPUTER_PROVIDER=e2b-desktop # default: docker # E2B_API_KEY= # server-only; required for e2b-desktop, never sent into the sandbox # COMPUTER_DEPLOYMENT_ID is required for e2b-desktop: sandboxes are matched across the E2B team # COMPUTER_E2B_TEMPLATE=desktop # optional custom template built from "desktop" # E2B_DOMAIN= # only when not using the default E2B cluster # Optional Jev interaction choices: off (default), sample scripted decisions, or live SDK. JEV_MODE=off # live sends the latest user message, agent-written context and candidate choices to TypeSafe; # see docs/demos/jev-generative-ui.md#what-live-mode-sends-to-typesafe # TYPESAFE_API_KEY= # server-only; required for JEV_MODE=live # JEV_MODEL=jev-1.13.0