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] # https://github.com/router-for-me/CLIProxyAPIDocs/blob/main/docs/en/configuration/basic.md # documents the user-selectable auth directory `~/.cli-proxy-api` and its # config.yaml, while Homebrew's service default is the prefix's etc directory. # The latter is system-level and cannot be safely represented as a user path. paths = ["~/.cli-proxy-api/config.yaml"] # OAuth/provider credential JSON files live in auth-dir. The docs show # auth-dir: "~/.cli-proxy-api"; the glob covers those files without claiming # the YAML configuration itself is a credential. secret = ["~/.cli-proxy-api/*.json"] # The config example documents both management.secret-key and api-keys as # authentication values; keep those fields out of otherwise useful YAML. [[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"]