| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
CCProxy is a local, plugin-based reverse proxy that unifies access to multiple AI providers (e.g., Claude SDK/API and OpenAI Codex) behind a consistent API. It ships with bundled plugins for providers, logging, tracing, metrics, analytics, and more.
Each provider adapter exposes the same surface area: OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages. The proxy maintains a shared model-mapping layer so you can reuse the same model identifier across providers without rewriting client code.
Authentication can reuse existing provider files (e.g., Claude CLI SDK tokens and the Codex CLI credential store), or you can run ccproxy auth login <provider> to complete the OAuth flow from the CLI; stored secrets are picked up automatically by the proxy.
CCProxy's plugin system lets you add instrumentation and storage layers without patching the core server. Bundled plugins currently include:
Shared helpers such as claude_shared provide metadata consumed by the Claude plugins. Each plugin directory contains its own README with configuration examples.
The plugin system is enabled by default (enable_plugins = true), and all discovered plugins load automatically when no additional filters are set. Use these knobs to adjust what runs:
During startup we merge disabled_plugins and any plugins.<name>.enabled = false entries into a single deny list. At runtime the loader checks the allow list first and then confirms the plugin is not deny listed. Configure plugins under plugins.<name> in TOML or via nested environment variables.
Use ccproxy plugins list to inspect discovered plugins and ccproxy plugins settings <name> to review configuration fields.
enable_plugins = true
# enabled_plugins = ["metrics", "analytics"] # Optional allow list
disabled_plugins = ["duckdb_storage"] # Optional block list
[plugins.access_log]
client_enabled = true
client_format = "structured"
client_log_file = "/tmp/ccproxy/access.log"
[plugins.request_tracer]
json_logs_enabled = true
raw_http_enabled = true
log_dir = "/tmp/ccproxy/traces"
[plugins.duckdb_storage]
enabled = false
[plugins.analytics]
enabled = true
# Metrics plugin
[plugins.metrics]
enabled = true
# pushgateway_enabled = true
# pushgateway_url = "http://localhost:9091"
# pushgateway_job = "ccproxy"
# pushgateway_push_interval = 60export DISABLED_PLUGINS="duckdb_storage" # Optional block list
export PLUGINS__ACCESS_LOG__ENABLED=true
export PLUGINS__ACCESS_LOG__CLIENT_ENABLED=true
export PLUGINS__ACCESS_LOG__CLIENT_FORMAT=structured
export PLUGINS__ACCESS_LOG__CLIENT_LOG_FILE=/tmp/ccproxy/access.log
export PLUGINS__REQUEST_TRACER__ENABLED=true
export PLUGINS__REQUEST_TRACER__JSON_LOGS_ENABLED=true
export PLUGINS__REQUEST_TRACER__RAW_HTTP_ENABLED=true
export PLUGINS__REQUEST_TRACER__LOG_DIR=/tmp/ccproxy/traces
export PLUGINS__DUCKDB_STORAGE__ENABLED=true
export PLUGINS__ANALYTICS__ENABLED=true
export PLUGINS__METRICS__ENABLED=true
# export PLUGINS__METRICS__PUSHGATEWAY_ENABLED=true
# export PLUGINS__METRICS__PUSHGATEWAY_URL=http://localhost:9091To install the latest stable release without cloning the repository, use uvx to grab the published wheel and launch the CLI:
uvx --with "ccproxy-api[all]" ccproxy serve --port 8000If you prefer pipx, install the package (optionally with extras) and use the local shim:
pipx install "ccproxy-api[all]"
ccproxy serve # default on localhost:8000See LICENSE.
| Back | FazBrowse Home | New Git URL |