ccflare ๐ก๏ธ
April 19, 2026 ยท View on GitHub
A multi-provider native proxy for Anthropic and OpenAI.
ccflare routes each provider by URL prefix, load-balances across multiple accounts, and keeps full request history, rate-limit state, and usage analytics without translating provider payloads.

Why ccflare?
- Native passthrough โ Anthropic stays Anthropic, OpenAI stays OpenAI
- Multi-provider routing โ route by
/v1/{provider}/* - Compatibility routes โ route by
/v1/ccflare/*with family-prefixed models - Account failover โ retry another account when one provider account is rate limited
- Built-in observability โ dashboard, request history, analytics, logs, and health endpoints
- Flexible auth โ API key and OAuth account support
Quick start
git clone https://github.com/snipeship/ccflare
cd ccflare
bun install
# Start the server + dashboard on http://localhost:8080
bun run start
# Or launch the TUI, which can also start the server
bun run ccflare
Verify the server is up:
curl http://localhost:8080/health
How routing works
ccflare proxies requests by provider prefix:
http://localhost:8080/v1/anthropic/*http://localhost:8080/v1/openai/*http://localhost:8080/v1/ccflare/*
Examples:
/v1/anthropic/v1/messagesโhttps://api.anthropic.com/v1/messages/v1/openai/chat/completionsโhttps://api.openai.com/v1/chat/completions/v1/openai/responsesโhttps://api.openai.com/v1/responses
The /v1/{provider} prefix is stripped exactly once before forwarding upstream.
Compatibility routes keep the client-facing schema but select a provider family from
the model prefix:
openai/<model-id>โ preferscodex, thenopenaianthropic/<model-id>โ prefersclaude-code, thenanthropic
Examples:
/v1/ccflare/openai/chat/completionswith"model":"openai/gpt-5.4"/v1/ccflare/openai/responseswith"model":"anthropic/claude-sonnet-4"/v1/ccflare/anthropic/messageswith"model":"openai/gpt-4o-mini"
Account setup
API key accounts
Add accounts through the management API:
curl -X POST http://localhost:8080/api/accounts \
-H "content-type: application/json" \
-d '{
"name": "anthropic-main",
"provider": "anthropic",
"auth_method": "api_key",
"api_key": "sk-ant-..."
}'
curl -X POST http://localhost:8080/api/accounts \
-H "content-type: application/json" \
-d '{
"name": "openai-main",
"provider": "openai",
"auth_method": "api_key",
"api_key": "sk-openai-..."
}'
OAuth accounts
Use the CLI/TUI for interactive OAuth setup:
# Claude Code OAuth
bun run ccflare --add-account work --provider claude-code
# Codex OAuth
bun run ccflare --add-account codex --provider codex
The management API also exposes provider-specific auth endpoints:
POST /api/auth/anthropic/initPOST /api/auth/anthropic/completePOST /api/auth/openai/initPOST /api/auth/openai/complete
Provider configuration
Anthropic clients
Point Anthropic SDKs or curl at the Anthropic-prefixed base URL:
export ANTHROPIC_BASE_URL=http://localhost:8080/v1/anthropic
OpenAI clients
Point OpenAI-compatible clients at the OpenAI-prefixed base URL:
export OPENAI_BASE_URL=http://localhost:8080/v1/openai
You can configure both providers at the same time and ccflare will keep account selection isolated per provider.
Example usage
Anthropic example
curl -X POST http://localhost:8080/v1/anthropic/v1/messages \
-H "content-type: application/json" \
-d '{
"model": "claude-3-7-sonnet",
"max_tokens": 128,
"messages": [
{ "role": "user", "content": "Say hello from ccflare." }
]
}'
OpenAI chat completions example
curl -X POST http://localhost:8080/v1/openai/chat/completions \
-H "content-type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Say hello from ccflare." }
]
}'
OpenAI Responses API example
curl -X POST http://localhost:8080/v1/openai/responses \
-H "content-type: application/json" \
-d '{
"model": "gpt-4o",
"input": "Summarize why provider-prefixed routing is useful."
}'
ccflare compatibility example
curl -X POST http://localhost:8080/v1/ccflare/openai/chat/completions \
-H "content-type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4",
"messages": [
{ "role": "user", "content": "Say hello from the compatibility route." }
]
}'
Management API
Key endpoints:
GET /healthโ status, account count, strategy, supported providersGET /api/accountsโ list accountsPOST /api/accountsโ create an accountPATCH /api/accounts/:idโ update an account (rename, changebase_url)DELETE /api/accounts/:idโ remove an accountPOST /api/accounts/:id/pause/resumeโ exclude or restore an accountPOST /api/accounts/:id/renameโ rename an accountGET /api/requestsโ recent request summariesGET /api/requests/detailโ detailed request info with payloadsGET /api/requests/streamโ live request stream via SSEGET /api/analyticsโ aggregated analyticsGET /api/statsโ usage and performance statsPOST /api/stats/resetโ reset usage statisticsGET /api/logs/streamโ live server logs via SSEGET /api/logs/historyโ historical log entriesGET /api/configโ current configurationGET /api/config/strategyโ current load balancing strategyPOST /api/config/strategyโ update load balancing strategyGET /api/strategiesโ list available strategiesGET /api/config/retentionโ data retention settingsPOST /api/config/retentionโ update data retention settingsPOST /api/maintenance/cleanupโ run data cleanupPOST /api/maintenance/compactโ compact the database
UI and developer tools
- Dashboard:
http://localhost:8080 - TUI:
bun run ccflare - Server only:
bun run start
Requirements
- Bun >= 1.2.8
- Anthropic and/or OpenAI credentials
Documentation
Additional repo docs live in docs/:
License
MIT โ see LICENSE.