Skip to content

Configuration Options

Defaults stay aligned with config.example.yaml.

Core

ParameterTypeDefaultDescription
hoststring""Bind address; "" listens on all IPv4/IPv6; use 127.0.0.1 to restrict to localhost.
portinteger8317Server port.
tls.enablebooleanfalseEnable HTTPS.
tls.certstring""TLS certificate path.
tls.keystring""TLS private key path.
auth-dirstring"~/.cli-proxy-api"Credential storage directory; ~ supported.
api-keysstring[][]Built-in API keys.
debugbooleanfalseVerbose logging.
commercial-modebooleanfalseDisable high-overhead middleware to lower memory.
logging-to-filebooleanfalseWrite rotating log files instead of stdout.
logs-max-total-size-mbinteger0Log directory size cap; 0 disables limiting.
usage-statistics-enabledbooleanfalseEnable in-memory usage aggregation.
proxy-urlstring""Global proxy (socks5/http/https).
force-model-prefixbooleanfalseUnprefixed model requests use only unprefixed credentials.
request-retryinteger3Retries on 403/408/500/502/503/504.
max-retry-intervalinteger30Max wait (seconds) for cooled-down credential before retry.
routing.strategystring"round-robin"Credential selection when multiple match: round-robin or fill-first.
ws-authbooleanfalseRequire auth for /v1/ws.
nonstream-keepalive-intervalinteger0Non-SSE blank line interval (seconds) to prevent idle timeout; 0 disables.
codex-instructions-enabledbooleanfalseEnable official Codex instructions injection for Codex API requests.
streaming.keepalive-secondsinteger0SSE keep-alive interval; ≤0 disables.
streaming.bootstrap-retriesinteger0Safe retries before first byte.

Management API

ParameterTypeDefaultDescription
remote-management.allow-remotebooleanfalsePermit non-localhost management access.
remote-management.secret-keystring""Management key; plaintext is hashed on startup; empty disables all /v0/management (404).
remote-management.disable-control-panelbooleanfalseDisable bundled management UI assets/routes.
remote-management.panel-github-repositorystring"https://github.com/router-for-me/Cli-Proxy-API-Management-Center"Repo or releases API for the management UI bundle.

Quota & Routing

ParameterTypeDefaultDescription
quota-exceeded.switch-projectbooleantrueAuto-switch project on quota exhaustion.
quota-exceeded.switch-preview-modelbooleantrueAuto-switch to preview model on exhaustion.

Provider Credentials (arrays; default [])

Gemini

ParameterTypeDefaultDescription
gemini-api-key.*.api-keystring""API key.
gemini-api-key.*.prefixstring""Optional prefix; call as prefix/model.
gemini-api-key.*.base-urlstring"https://generativelanguage.googleapis.com"Custom endpoint.
gemini-api-key.*.headersobject{}Extra headers for that endpoint.
gemini-api-key.*.proxy-urlstring""Per-key proxy override.
gemini-api-key.*.models.*.namestring""Upstream model name.
gemini-api-key.*.models.*.aliasstring""Client alias.
gemini-api-key.*.excluded-modelsstring[][]Models to exclude (wildcards supported).

Codex

ParameterTypeDefaultDescription
codex-api-key.*.api-keystring""API key.
codex-api-key.*.prefixstring""Optional prefix.
codex-api-key.*.base-urlstring""Custom Codex endpoint.
codex-api-key.*.headersobject{}Extra headers.
codex-api-key.*.proxy-urlstring""Per-key proxy override.
codex-api-key.*.models.*.namestring""Upstream model name.
codex-api-key.*.models.*.aliasstring""Client alias.
codex-api-key.*.excluded-modelsstring[][]Models to exclude (wildcards).

Claude

ParameterTypeDefaultDescription
claude-api-key.*.api-keystring""API key.
claude-api-key.*.prefixstring""Optional prefix.
claude-api-key.*.base-urlstring""Custom Claude endpoint.
claude-api-key.*.headersobject{}Extra headers.
claude-api-key.*.proxy-urlstring""Per-key proxy override.
claude-api-key.*.models.*.namestring""Upstream model name.
claude-api-key.*.models.*.aliasstring""Client alias.
claude-api-key.*.excluded-modelsstring[][]Models to exclude (wildcards).
claude-api-key.*.cloak.modestring"auto"Cloaking mode: auto (non-Claude Code only), always, never.
claude-api-key.*.cloak.strict-modebooleanfalsetrue strips user system messages, keeps only Claude Code prompt.
claude-api-key.*.cloak.sensitive-wordsstring[][]Words to obfuscate with zero-width characters.

OpenAI Compatibility

ParameterTypeDefaultDescription
openai-compatibility.*.namestring""Provider name (used in UA, etc.).
openai-compatibility.*.prefixstring""Optional prefix.
openai-compatibility.*.base-urlstring""Provider base URL.
openai-compatibility.*.headersobject{}Extra headers.
openai-compatibility.*.api-key-entries.*.api-keystring""API key.
openai-compatibility.*.api-key-entries.*.proxy-urlstring""Per-key proxy override.
openai-compatibility.*.models.*.namestring""Upstream model name.
openai-compatibility.*.models.*.aliasstring""Client alias.

Vertex

ParameterTypeDefaultDescription
vertex-api-key.*.api-keystring""x-goog-api-key value.
vertex-api-key.*.prefixstring""Optional prefix.
vertex-api-key.*.base-urlstring""Vertex-compatible endpoint.
vertex-api-key.*.proxy-urlstring""Per-key proxy override.
vertex-api-key.*.headersobject{}Extra headers.
vertex-api-key.*.models.*.namestring""Upstream model name.
vertex-api-key.*.models.*.aliasstring""Client alias.

Amp Integration (ampcode)

ParameterTypeDefaultDescription
ampcode.upstream-urlstring""Upstream URL for Amp CLI OAuth/management.
ampcode.upstream-api-keystring""Override API key for Amp upstream.
ampcode.upstream-api-keys[].upstream-api-keystring""Upstream key for mapped clients.
ampcode.upstream-api-keys[].api-keysstring[][]Client keys routed to that upstream key.
ampcode.restrict-management-to-localhostbooleanfalseRestrict Amp management routes to localhost.
ampcode.force-model-mappingsbooleanfalseForce model mappings before checking local API keys.
ampcode.model-mappings[].fromstring""Amp-requested model.
ampcode.model-mappings[].tostring""Local available model to route to.

OAuth Model Controls

ParameterTypeDefaultDescription
oauth-model-aliasobject{}Rename models per channel (gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow).
oauth-model-alias.*.*.forkbooleanfalseWhen true, keep original and add alias as extra model.
oauth-excluded-modelsobject{}Exclude models per channel; wildcards supported.

Payload Rules

ParameterTypeDefaultDescription
payload.default[].models[].namestring""Matching model name (wildcards ok).
payload.default[].models[].protocolstring""Restrict to protocol: openai/gemini/claude/codex/antigravity.
payload.default[].paramsobject{}JSON path → value applied when missing.
payload.default-raw[].models[].namestring""Matching model name (wildcards).
payload.default-raw[].models[].protocolstring""Restrict to protocol.
payload.default-raw[].paramsobject{}JSON path → raw JSON value applied when missing (must be valid JSON).
payload.override[].models[].namestring""Matching model name (wildcards).
payload.override[].models[].protocolstring""Restrict to protocol.
payload.override[].paramsobject{}JSON path → value always overwritten.
payload.override-raw[].models[].namestring""Matching model name (wildcards).
payload.override-raw[].models[].protocolstring""Restrict to protocol.
payload.override-raw[].paramsobject{}JSON path → raw JSON value always overwritten (must be valid JSON).
payload.filter[].models[].namestring""Matching model name (wildcards).
payload.filter[].models[].protocolstring""Restrict to protocol.
payload.filter[].paramsstring[][]JSON paths to remove from payload.

Released under the MIT License.