id = "cliproxyapi"
name = "CLIProxyAPI"
homepage = "https://github.com/router-for-me/CLIProxyAPI"
description = "An OpenAI/Gemini/Claude compatible API proxy."
executables = ["cliproxyapi", "cli-proxy-api"]
[dotfiles]
paths = ["~/.cli-proxy-api/config.yaml"]
secret = ["~/.cli-proxy-api/*.json"]
[[dotfiles.secret_paths]]
file = "~/.cli-proxy-api/config.yaml"
format = "yaml"
match = { key_path = ["remote-management.secret-key", "api-keys.*"] }
[commands]
format = 1
label = "Run CLIProxyAPI"
description = "Start the proxy server, sign in to a provider, or open the management TUI. Other flags (Vertex import, discovery, home JWT, password) are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/router-for-me/CLIProxyAPI/blob/main/cmd/server/main.go"
revision = "2026-10-27"
evidence = """
./cli-proxy-api --config /path/to/your/config.yaml
Connect a Devin account with --devin-login
(flags registered in cmd/server/main.go with the Go flag package, which accepts one or two leading dashes)
config: Configure File Path
claude-login: Login to Claude using OAuth
codex-login: Login to Codex using OAuth
codex-device-login: Login to Codex using device code flow
devin-login: Login to Devin using OAuth
no-browser: Don't open browser automatically for OAuth
oauth-callback-port: Override OAuth callback port (defaults to provider-specific port)
tui: Start with terminal management UI
standalone: In TUI mode, start an embedded local server
local-model: Use embedded model catalogs unless models.catalog, models.codex-catalog, or models.devin-catalog explicitly overrides the source
--config --claude-login --codex-login --codex-device-login --devin-login --no-browser --oauth-callback-port --tui --standalone --local-model
"""
[[commands.field]]
id = "config"
label = "Config file"
type = "path"
option = ["--config"]
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.field]]
id = "claude_login"
label = "Login to Claude (OAuth)"
type = "boolean"
option = ["--claude-login"]
sources = ["help"]
[[commands.field]]
id = "codex_login"
label = "Login to Codex (OAuth)"
type = "boolean"
option = ["--codex-login"]
sources = ["help"]
[[commands.field]]
id = "codex_device_login"
label = "Login to Codex (device code)"
type = "boolean"
option = ["--codex-device-login"]
sources = ["help"]
[[commands.field]]
id = "devin_login"
label = "Login to Devin (OAuth)"
type = "boolean"
option = ["--devin-login"]
sources = ["help"]
[[commands.field]]
id = "no_browser"
label = "Do not open a browser"
type = "boolean"
option = ["--no-browser"]
sources = ["help"]
[[commands.field]]
id = "callback_port"
label = "OAuth callback port"
type = "integer"
option = ["--oauth-callback-port"]
sources = ["help"]
[[commands.field]]
id = "tui"
label = "Terminal management UI"
type = "boolean"
option = ["--tui"]
sources = ["help"]
[[commands.field]]
id = "standalone"
label = "Embedded local server (with TUI)"
type = "boolean"
option = ["--standalone"]
sources = ["help"]
[[commands.field]]
id = "local_model"
label = "Use embedded model catalogs"
type = "boolean"
option = ["--local-model"]
sources = ["help"]
[[commands.task]]
id = "serve"
label = "Start server"
fields = ["config", "local_model"]
required = []
[[commands.task]]
id = "claude"
label = "Login to Claude"
set = { claude_login = [true] }
lock = ["claude_login"]
fields = ["claude_login", "config", "no_browser", "callback_port"]
required = []
[[commands.task]]
id = "tui"
label = "Management TUI"
set = { tui = [true] }
lock = ["tui"]
fields = ["tui", "standalone", "config"]
required = []
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["config", "claude_login", "codex_login", "tui"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["codex_device_login", "devin_login", "no_browser", "callback_port", "standalone", "local_model"]