# coworker config — copy to one of: # ~/.config/coworker/config.toml (global; Windows: %APPDATA%\coworker\config.toml) # /.coworker/config.toml (per-workspace, overrides global) # # All keys are optional; unset keys fall back to built-in defaults. # Security-sensitive keys (allowed_commands, auto_allow) are honored from the # global file only; a workspace file's allowed_commands apply only after you # trust that workspace. model = "gpt-5.5" # default model id (override per session in the UI/CLI) mode = "interactive" # plan | interactive | auto | custom max_iterations = 12 # max model<->tool iterations per turn before stopping # max_output_tokens = 64000 # per-reply output cap sent as max_tokens (thinking + text + # tool arguments). Unset = provider default (32000; Bedrock # 4096). Env override: COWORKER_MAX_OUTPUT_TOKENS. # reasoning_effort = "high" # low | medium | high | xhigh | max — how hard the model thinks # per reply, translated per provider (Anthropic output_config # .effort; Together/Moonshot reasoning_effort). Unset = provider # default (Anthropic high, Kimi K3 max). Env override: # COWORKER_REASONING_EFFORT. # Web search backend: "duckduckgo" (keyless, default) | "you" (keyless, optional key) # | "tavily" | "brave" | "serper" | "exa" | "firecrawl". The usual place to pick one is # the app's Settings ▸ Customization ▸ Web search, which also keeps each service's API # key in the secret store; a choice made there wins over this line. Keys can also come # from the environment as {NAME}_API_KEY (e.g. BRAVE_API_KEY). web_search_provider = "duckduckgo" # Commands auto-allowed without an approval prompt (prefix match). allowed_commands = [ "ls", "cat", "pwd", "grep", "find", "git status", "git diff", "git log", "python3", "pytest", "node", "npm", ] # In "custom" permission mode, these tools are auto-approved (everything else still # asks). e.g. auto-accept file edits but keep asking before running shell commands. auto_allow = ["write_file", "replace_in_file", "apply_patch", "apply_unified_diff"] # Server (openworker-server) bind address. host = "127.0.0.1" port = 8765 # --- Sandbox (machine-level; a project's config cannot change it) --------------------- # Where a session's commands and file tools run: "direct" (in the OpenWorker process, # the default), "openshell" (one NVIDIA OpenShell container per agent) or "seatbelt" # (the sandbox built into macOS). See docs/openshell.md and docs/macos-sandbox.md. # sandbox_provider = "openshell" # Network inside a sandbox: "allowlist" (only the sites listed below) or "open" (any # site; the files are still confined). The default is "allowlist", or "open" on Windows. # sandbox_network_profile = "allowlist" # The sites an allow list lets through (host:port; a bare host means 443). None by default. # sandbox_network_hosts = ["github.com:443", "pypi.org:443"] # Config and keys exposed to agents, copied into the sandbox for the session and deleted # with it. Only the entries named here are listed in Settings ▸ Sandbox; the shipped ones # (ssh, gh, aws, aws-credentials, kube, npm, docker, gcloud, terraform) are added by name. # An entry is a single file or a whole folder (the path decides), labelled "credential" # or "configuration". # [[sandbox_credentials]] # name = "ssh" # enabled = true # [[sandbox_credentials]] # name = "acme-token" # path = "~/.config/acme/token" # label = "credential" # hosts = ["api.acme.dev:443"] # enabled = true # Developer tool folders under your home folder a sandbox may read (never write). The # shipped list per platform is in Settings ▸ Sandbox; an entry here switches one off or # adds one by name. # [[sandbox_toolchains]] # name = "nvm" # enabled = false # [[sandbox_toolchains]] # name = "mytools" # path = "~/tools" # OpenWorker Cloud (sign-in + managed connectors + Slack/GitHub relay). # Defaults point at production so a fresh install works out of the box; only # dev/staging/BYO-VPC deployments need to change these. #cloud_base_url = "https://api.openworker.com" #cloud_auth_domain = "opencoworker.us.auth0.com" #cloud_client_id = "g1l4Q1lhYWmyS03qPSf4KEJGrgq02Qam" #cloud_audience = "https://api.opencoworker.app" # Managed relay WebSocket endpoint (Slack/GitHub inbound). Set to "" to disable # the relay entirely (manual Socket Mode still works). #cloud_relay_ws_url = "wss://l4z1paxb83.execute-api.us-east-1.amazonaws.com/ocw-connect" # Hosted machines service the Machines view proxies to. Set to "" to turn the # cloud machines surface off entirely. #cloud_machines_base = "https://machines.openworker.com"