NODE_ENV=development DATABASE_URL=postgres://rakazo:rakazo@127.0.0.1:5433/rakazo BETTER_AUTH_SECRET=replace-with-32-plus-character-secret BETTER_AUTH_URL=http://127.0.0.1:5173 API_URL=http://127.0.0.1:3100 # Listener address. Keep loopback unless a container or trusted reverse proxy must reach the API. API_HOST=127.0.0.1 WEB_ORIGIN=http://127.0.0.1:5173 PUBLIC_POSTHOG_KEY= PUBLIC_POSTHOG_HOST=https://us.i.posthog.com SIGNUPS_ENABLED=true SIGNUP_ALLOWLIST= ENCRYPTION_KEY=replace-with-64-random-hex-characters DATA_DIR=./data SANDBOX_SUPERVISOR_URL=http://127.0.0.1:7091 # Dedicated credentials (distinct from BETTER_AUTH_SECRET). Required for Docker sandboxes / # screen proxy outside local development. SANDBOX_SUPERVISOR_TOKEN=replace-with-32-plus-character-supervisor-token SCREEN_PROXY_SECRET=replace-with-32-plus-character-screen-proxy-secret SANDBOX_PROVIDER=docker # Optional Docker daemon socket. Defaults to /var/run/docker.sock (Unix) or # //./pipe/docker_engine (Windows). Set for rootless Docker, Colima, or custom paths. # DOCKER_HOST takes precedence over DOCKER_SOCKET when both are set. # DOCKER_SOCKET= DAYTONA_API_KEY= DAYTONA_API_URL= DAYTONA_TARGET= BOX_API_KEY= # Optional Box API base URL; defaults to https://ascii.dev/api/box/v1. BOX_API_URL= AGENT_RUNTIME=pi WAKEUP_DRIVER=graphile # Pause or stop computers after this many idle ms. Minimum 30000. SANDBOX_IDLE_MS=600000 SANDBOX_COMMAND_TIMEOUT_MS=300000 # Linux account inside the computer is `bangso`. These local-dev defaults match # `make up`. Override in .env; make injects them when left blank. Never reuse # the placeholder password outside local development. COMPUTER_USER_PASSWORD=bangso COMPUTER_ALLOW_SUDO=1 # Optional per-turn tool-call fuse for the Pi agent runtime. Unset, empty, or 0 # means unlimited (default). Set a positive integer to soft-stop a turn that # exceeds the budget and still emit a final assistant message. MAX_TOOL_CALLS_PER_TURN= # Deployment-wide fallback model. PI_DEFAULT_PROVIDER picks which key below is used. OPENROUTER_API_KEY= ANTHROPIC_API_KEY= PI_DEFAULT_PROVIDER=openrouter # Text-only by default. Computer use (screenshots via computer_observe / computer_act) # needs a vision-capable model — one whose catalog entry lists image input modalities # (e.g. openai/gpt-4o). Tests use COMPUTER_E2E_MODEL for that. PI_DEFAULT_MODEL=deepseek/deepseek-v4-flash-0731 # Optional local OpenAI-compatible models. Leave blank to disable the provider. RAKAZO_LOCAL_MODELS= RAKAZO_LOCAL_MODELS_URL=http://127.0.0.1:11434/v1 RAKAZO_LOCAL_CONTEXT_WINDOW=32768 RAKAZO_LOCAL_MAX_TOKENS=4096 # Allow user-connected OpenAI-compatible endpoints on public hostnames (default: private/loopback only). RAKAZO_OPENAI_COMPAT_ALLOW_PUBLIC= E2B_API_KEY= COMPOSIO_API_KEY= # Optional alternative managed connector provider. PIPEDREAM_CLIENT_ID= PIPEDREAM_CLIENT_SECRET= PIPEDREAM_PROJECT_ID= PIPEDREAM_ENVIRONMENT=development # Optional messaging surface (Chat SDK). Each platform mounts when its full # credential set is present; webhooks arrive at /api/v1/messaging/webhook/. # Users link a chat app to their account from the web (Messaging settings). # Set true to instead let unknown senders auto-provision their own chat-only # accounts (their runs bill the deployment model key): MESSAGING_OPEN_SIGNUP=false # Sendblue (iMessage/SMS — all four required): SENDBLUE_API_KEY_ID= SENDBLUE_API_SECRET= SENDBLUE_SIGNING_SECRET= SENDBLUE_PHONE_NUMBER= # Slack (both required): SLACK_BOT_TOKEN= SLACK_SIGNING_SECRET= # WhatsApp Business Cloud (all four required): WHATSAPP_ACCESS_TOKEN= WHATSAPP_PHONE_NUMBER_ID= WHATSAPP_APP_SECRET= WHATSAPP_VERIFY_TOKEN= # Telegram (both required). Inbound is webhook-only at # /api/v1/messaging/webhook/telegram with header X-Telegram-Bot-Api-Secret-Token; # the worker must not long-poll getUpdates. TELEGRAM_BOT_TOKEN= TELEGRAM_WEBHOOK_SECRET_TOKEN= SUPERMEMORY_API_KEY= # Optional. Defaults to https://api.supermemory.ai. Self-hosted: http://localhost:6767 SUPERMEMORY_API_URL= # Transactional account email. Works with Resend, Amazon SES, or any SMTP server. SMTP_URL= EMAIL_FROM= # Local development only: capture password-reset email and print its link to the API console. EMAIL_EMULATOR= VAPID_PUBLIC_KEY= VAPID_PRIVATE_KEY= OTEL_EXPORTER_OTLP_ENDPOINT= LOG_LEVEL=info # Optional. GET /health returns this as `revision` so you can confirm the deployed commit. GIT_SHA= # --- Compose production deployments --- # Absolute path of this checkout as the Docker *daemon* sees it. Production Compose defaults to # /srv/rakazo on Linux; override it for any other host path so the updater bind mount resolves. # Linux override: RAKAZO_DEPLOY_DIR=/opt/rakazo # Docker Desktop on Windows (C:\Users\you\rakazo): # RAKAZO_DEPLOY_DIR=/run/desktop/mnt/host/c/Users/you/rakazo RAKAZO_DEPLOY_DIR= # Published images (defaults match this repository). Tag `local` is built from the checkout. RAKAZO_IMAGE=ghcr.io/elie222/rakazo/app RAKAZO_IMAGE_TAG=local RAKAZO_IMAGE_TAG_PREVIOUS= RAKAZO_UPDATER_IMAGE=ghcr.io/elie222/rakazo/updater RAKAZO_UPDATER_IMAGE_TAG=local # Required only when starting the opt-in `updater` Compose profile; the sidecar refuses to start # without it. Use a dedicated random value, not BETTER_AUTH_SECRET, # SANDBOX_SUPERVISOR_TOKEN, or SCREEN_PROXY_SECRET; # ≥32 chars in production. Leave empty when the sidecar is disabled. RAKAZO_UPDATER_URL= RAKAZO_UPDATER_TOKEN= # Default UI locale for the web SPA. Settings (localStorage key rakazo.uiLocale) # still wins. make injects zh-TW when this is blank. VITE_DEFAULT_UI_LOCALE=zh-TW