Configuration
Config File Location
All configuration lives in a single JSON file:
~/.openacp/config.jsonThe path can be overridden with the OPENACP_CONFIG_PATH environment variable. The file is created automatically on first run with safe defaults.
Interactive Editor
To edit config interactively while OpenACP is running:
openacp configThis opens a menu-driven editor with sections for Channels, Agent, Workspace, Security, Logging, Run Mode, API, and Tunnel. Changes are saved on exit. When the daemon is running, changes are applied immediately via the local API without requiring a restart (where supported).
Reconfigure Wizard
For a guided reconfiguration of core sections, use:
openacp onboardThis runs runReconfigure(), which loads your existing config, shows a summary, and lets you step through sections selectively. Sections available:
Channels — Add, modify, disable, or delete channel configurations. For each configured channel you can choose to modify settings, disable the bot without losing credentials, or permanently delete the channel config.
Agents — Select which installed agent to use as the default.
Workspace — Change the base directory where agent working directories are created.
Run Mode — Switch between foreground and daemon mode, and toggle autostart on boot.
Integrations — Configure optional integrations (e.g., Claude CLI).
For the machine-readable schema with all field types and defaults, see the Configuration Schema. For a full list of environment variable overrides, see Environment Variables.
Full Configuration Reference
channels
channelsChannel adapters. Each key is a channel identifier. The built-in channels are telegram and discord.
Telegram:
enabled
boolean
false
Whether this channel is active
botToken
string
—
Telegram Bot API token
chatId
number
—
Forum group chat ID
displayVerbosity
low | medium | high
medium
Detail level for agent output messages
Discord:
agents
agentsNamed map of ACP-compatible agent binaries. Each entry describes how to spawn the agent subprocess.
command
string
—
Executable name or path
args
string[]
[]
Additional CLI arguments
env
object
{}
Extra environment variables for the subprocess
workingDirectory
string
—
Override working directory (otherwise uses workspace)
defaultAgent
defaultAgentThe agent key used when a new session is created. Must exist in agents.
workspace
workspaceBase directory for agent working directories. Named workspaces are subdirectories under this path. The ~ prefix is expanded to the home directory.
security
securityallowedUserIds
string[]
[]
Allowlist of platform user IDs. Empty = all users allowed.
maxConcurrentSessions
number
20
Hard cap on active + initializing sessions across all channels.
sessionTimeoutMinutes
number
60
Idle session timeout in minutes.
See Security for details.
logging
loggingSee Logging for details.
runMode
runMode"foreground" or "daemon". Controls whether openacp start runs in the terminal or spawns a detached background process.
autoStart
autoStartIf true, OpenACP installs a platform autostart entry (macOS LaunchAgent or Linux systemd user service) so the daemon starts on login. Managed automatically by the run mode setup in the config editor and onboard wizard.
api
apiThe local REST API used by the CLI and web UI. host defaults to 127.0.0.1 (loopback only). Do not bind to 0.0.0.0 unless you have network-level access controls in place.
tunnel
tunnelenabled
boolean
false
Enable tunnel
port
number
3100
Local port the tunnel exposes
provider
string
"cloudflare"
cloudflare, ngrok, bore, or tailscale
options
object
{}
Provider-specific options (domain, authtoken, etc.)
auth.enabled
boolean
false
Require bearer token on tunnel requests
usage
usageUsage tracking. When monthlyBudget is set and usage reaches warningThreshold (80% by default), a notification is sent. Set enabled: false to disable tracking entirely.
speech
speechSpeech-to-text and text-to-speech configuration. Set provider to the key of a configured entry in providers to enable. null disables speech for that direction.
sessionStore
sessionStoreHow long completed session records are retained before cleanup.
integrations
integrationsManaged automatically. Records which optional integrations are installed.
Environment Variable Overrides
The following environment variables override their corresponding config fields at startup. They do not modify the config file on disk.
OPENACP_CONFIG_PATH
(config file path itself)
OPENACP_TELEGRAM_BOT_TOKEN
channels.telegram.botToken
OPENACP_TELEGRAM_CHAT_ID
channels.telegram.chatId
OPENACP_DISCORD_BOT_TOKEN
channels.discord.botToken
OPENACP_DISCORD_GUILD_ID
channels.discord.guildId
OPENACP_SLACK_BOT_TOKEN
channels.slack.botToken
OPENACP_SLACK_APP_TOKEN
channels.slack.appToken
OPENACP_SLACK_SIGNING_SECRET
channels.slack.signingSecret
OPENACP_DEFAULT_AGENT
defaultAgent
OPENACP_RUN_MODE
runMode
OPENACP_API_PORT
api.port
OPENACP_LOG_LEVEL
logging.level
OPENACP_LOG_DIR
logging.logDir
OPENACP_DEBUG
Sets logging.level to debug (when OPENACP_LOG_LEVEL is not set)
OPENACP_TUNNEL_ENABLED
tunnel.enabled
OPENACP_TUNNEL_PORT
tunnel.port
OPENACP_TUNNEL_PROVIDER
tunnel.provider
OPENACP_SPEECH_STT_PROVIDER
speech.stt.provider
OPENACP_SPEECH_GROQ_API_KEY
speech.stt.providers.groq.apiKey
Environment variables are applied after the config file is read and before Zod validation. They take precedence over file values.
Hot-Reload
When openacp config communicates changes via the local API (daemon mode), supported fields are applied to the running process immediately. Fields that require a full restart (e.g., channel credentials, API port) emit a needsRestart signal in the response.
Backward Compatibility
Every new config field uses .default() or .optional() in the Zod schema. This means an older config.json will always pass validation after an upgrade — missing fields are filled with their defaults. Fields are never renamed or removed without a migration.
Automatic migrations run at startup before validation. Current migrations:
add-tunnel-section— Adds thetunnelblock if absent (pre-0.3 configs).fix-agent-commands— Renames legacy agent command names to their current equivalents.migrate-agents-to-store— Moves agent definitions fromconfig.jsoninto the separate~/.openacp/agents.jsonstore.
Migrations mutate the raw JSON in place and write it back to disk if any change was made. No action is required from you.
Last updated
Was this helpful?
