Skip to content

Configuration Reference ​

The default ChatRoom configuration file location depends on the operating system:

  • Linux: ~/.config/chatroom/config.json. If an absolute XDG_CONFIG_HOME is set, ChatRoom uses $XDG_CONFIG_HOME/chatroom/config.json instead.
  • macOS: ~/Library/Application Support/ChatRoom/config.json
  • Windows: %APPDATA%\\ChatRoom\\config.json, typically C:\\Users\\<username>\\AppData\\Roaming\\ChatRoom\\config.json

Running chatroom init creates this file. On Linux and macOS, ChatRoom protects the configuration directory and file using the platform's POSIX permission model; Windows uses the native Windows file permission model.

Complete example ​

json
{
  "allowedRoots": ["/home/user/Projects"],
  "dataDir": "/home/user/.local/share/chatroom",
  "databasePath": "/home/user/.local/state/chatroom/chatroom.sqlite",
  "server": {
    "host": "127.0.0.1",
    "port": 8765
  },
  "auth": {
    "localWebAuth": false,
    "ownerToken": "<generated-owner-token>",
    "mcpPublicBaseUrl": null,
    "webPublicBaseUrl": null,
    "allowedRedirectHosts": ["chatgpt.com", "localhost", "127.0.0.1"]
  },
  "operations": {
    "maxPayloadBytes": 524288
  },
  "process": {
    "maxOutputBytes": 524288,
    "defaultTimeoutMs": 1800000,
    "maxCompletedProcesses": 200
  }
}

allowedRoots ​

Directories that Workspace tools may open and manage. The default is ~/Projects. Paths are resolved to absolute paths and serve as the primary security boundary for Workspace file access.

dataDir ​

Runtime data directory. On Linux, the default is ~/.local/share/chatroom (or $XDG_DATA_HOME/chatroom).

Managed worktrees and other local runtime data are stored in this directory.

databasePath ​

SQLite database location. On Linux, the default is ~/.local/state/chatroom/chatroom.sqlite (or $XDG_STATE_HOME/chatroom/chatroom.sqlite).

The database stores workspaces, operation logs, OAuth state, Web sessions, and passkeys.

server ​

Default configuration:

json
{
  "host": "127.0.0.1",
  "port": 8765
}

It is recommended to keep ChatRoom bound to the local loopback address. If server.host is changed to a non-loopback address, auth.localWebAuth must be enabled or ChatRoom will refuse to start.

auth.localWebAuth ​

Controls whether authentication is required when accessing the WebUI directly. By default, the WebUI does not require authentication on the local loopback address; it must be enabled when binding to a non-loopback address.

auth.ownerToken ​

Automatically generated by chatroom init. It is used to prove instance ownership during OAuth authorization and authenticated WebUI sessions.

An ownerToken must be provided when any authenticated public ingress is configured.

auth.mcpPublicBaseUrl ​

HTTPS base URL used when self-hosting a public MCP endpoint. For example:

json
{
  "auth": {
    "mcpPublicBaseUrl": "https://mcp.example.com"
  }
}

The MCP endpoint is then https://mcp.example.com/mcp.

auth.webPublicBaseUrl ​

HTTPS base URL used when self-hosting a public WebUI endpoint.

auth.allowedRedirectHosts ​

Hosts allowed in OAuth Redirect URIs. The defaults include chatgpt.com, localhost, and 127.0.0.1. Add other hosts only when they are actually required by a trusted client.

operations.maxPayloadBytes ​

Maximum serialized input/output size stored for a single operation log entry. The default is 524288 bytes.

Known sensitive fields are also redacted before persistence.

process.maxOutputBytes ​

Maximum amount of process output retained. The default is 524288 bytes. ChatRoom uses bounded output to prevent long-running processes from consuming unlimited memory.

process.defaultTimeoutMs ​

Default process timeout. The default is 1800000 ms, or 30 minutes.

process.maxCompletedProcesses ​

Maximum number of completed process snapshots retained in memory. The default is 200.

Use another configuration file ​

Use CHATROOM_CONFIG to specify another configuration file:

bash
CHATROOM_CONFIG=/path/to/config.json chatroom serve