Repository Public
1# Claude Remote — example configuration (no secrets here).2# One file for both processes (apps/server and apps/runtime read the same environment).3# [S] = read by the server, [R] = read by the runtime, [S+R] = both (values must match).45NODE_ENV=production # [S] production enforces https origin + the secrets below6CR_PORT=8620 # [S]7CR_HOST=0.0.0.0 # [S] default 127.0.0.1; 0.0.0.0 behind the tunnel gateway8CR_PUBLIC_ORIGIN=https://claude.spboucher.ai # [S] exact origin (cookies, Origin checks, WebAuthn RP ID)9CR_TRUSTED_PROXIES=127.0.0.1,::1,10.67.0.1 # [S] peers whose X-Forwarded-For is honoured10CR_WEB_DIR=/Users/CHANGEME/apps/claude-remote/apps/web/out # [S] static export; default ../web/out11CR_NODE_ALIAS=M5M36 # [S] alias of this host in agentd; default: runtime hostname12DATABASE_URL=postgres://claude_remote:CHANGEME@127.0.0.1:5432/claude_remote # [S]13# 64 hex chars (32 random bytes); generated at deploy time, never committed14CR_SECRET_KEY= # [S] AES-256-GCM key for TOTP secrets1516CR_DATA_DIR=/Users/CHANGEME/claude-remote-data # [S+R] persistent state (setup-token, run/, tasks/)17CR_WORKSPACE_ROOTS=workspace=/Users/CHANGEME/workspace # [S+R] comma list of label=/abs/path or /abs/path18CR_RUNTIME_SOCKET=/Users/CHANGEME/claude-remote-data/run/runtime.sock # [S+R] default $CR_DATA_DIR/run/runtime.sock19# >= 32 chars, random; generated at deploy time, never committed20CR_RUNTIME_TOKEN= # [S+R]21CR_EXEC_HOSTS= # [S+R] node aliases allowed as remote task hosts (empty = local only)22CR_TERM_BUFFER_BYTES=4194304 # [S+R] WebSocket backpressure high-water mark23CR_LOG_LEVEL=info # [S+R]2425# agentd telemetry (optional; unset ⇒ host-only overview)26CR_AGENTD_URL= # [S]27CR_AGENTD_TOKEN= # [S]28CR_LOCAL_MODELS= # [S] JSON array of {id,name,host,engine,endpoint}29CR_SKILLS_REGISTRY_URL= # [S] e.g. https://skills.spboucher.ai3031# Agent profile: "claude" (default; Claude Remote) or "codex" (Codex Remote). See docs/codex-profile.md.32CR_AGENT= # [S+R] values must match in both processes33CR_AGENT_BIN= # [R] name or absolute path of the agent CLI (default: claude / codex)34CR_CLAUDE_BIN=claude # [R] claude profile only: used when CR_AGENT_BIN is unset35CR_MAX_SESSIONS=12 # [R]36CR_TMUX_SOCKET=claude-remote # [R] tmux -L socket name; default <claude|codex>-remote37CR_SHELL= # [R] login shell for sessions/tasks; default $SHELL, then /bin/zsh38CR_REPLAY_LINES=5000 # [R] history lines replayed into the browser scrollback on attach (max 20000)39# [R] "1" merges the cr-hook entries into the runtime user's Claude settings.json (production only;40# NEVER set on a development machine). Honours CLAUDE_CONFIG_DIR.41CR_INSTALL_CLAUDE_HOOKS=42CLAUDE_CONFIG_DIR= # [R] optional; default ~/.claude43# [R] "1" installs the agent's waiting-for-input signal (production only; NEVER on a development machine):44# claude → same as CR_INSTALL_CLAUDE_HOOKS; codex → sets the top-level `notify` of45# $CODEX_HOME/config.toml to apps/runtime/bin/cr-codex-notify (an existing different notify is46# left untouched and reported by the runtime /health and /system/status).47CR_INSTALL_AGENT_HOOKS=48CODEX_HOME= # [R] codex profile, optional; default ~/.codex4950# Test / ops timing knobs of the runtime (leave unset in production):51# CR_RUNTIME_PLUGINS=core CR_SESSION_POLL_MS=2000 CR_TASK_POLL_MS=50052# CR_TASK_KILL_GRACE_MS=10000 CR_TASK_LOG_CAP_BYTES=26843545653