Use Claude Code, Gemini CLI, and Codex as OpenAI-compatible APIs — managed through a modern web dashboard.
We have a Discord server — installation help, release announcements, and community chat.
discord.gg/7SrXxNueGA
CLIProxyAPI wraps OAuth-based CLI tools (Claude Code, Gemini CLI, Codex, GitHub Copilot, Kiro, Antigravity, Kimi, Qwen) into OpenAI-compatible APIs. This dashboard gives you a web UI to manage everything — providers, API keys, configs, logs, and updates — without touching YAML files.
Local use (macOS/Windows/Linux): Only Docker Desktop required.
git clone https://github.com/itsmylife44/cliproxyapi-dashboard.git
cd cliproxyapi-dashboard
./setup-local.sh # macOS/Linux
# .\setup-local.ps1 # Windows
The local setup scripts start Docker Compose with a local dashboard build (--build) so your current source changes are used.
Open http://localhost:3000 → create admin account → done.
Server deployment: See the full Installation Guide.
opencode-cliproxyapi-sync plugin (includes slim config)XXXX-XXXX)Custom providers pointing at localhost or private networks are blocked by default to prevent SSRF from hosted installations. To enable them on self-hosted deployments:
ALLOW_LOCAL_PROVIDER_URLS=true in infrastructure/.env.docker compose up -d dashboard).http://host.docker.internal:11434/v1 for Ollama from within Docker, or http://localhost:11434/v1 when running the dashboard outside a container). The API key field is optional — leave it empty if the provider doesn't require one.Cloud instance-metadata addresses (169.254.169.254, 100.100.100.200) stay blocked regardless of this setting.
Get notified on Telegram when your OAuth provider quota is running low.
Setup (Admin → Settings → Telegram Alerts):
https://api.telegram.org/bot<TOKEN>/getUpdates)Use the Test Message button to verify your configuration before enabling.
The dashboard supports two OpenCode orchestration variants. Toggle between them in the Using with OpenCode section:
| Variant | Agents | Description |
|---|---|---|
| Oh-My-Open-Agent | 9 agents + 8 categories | Full-featured orchestration with sisyphus, atlas, prometheus, oracle, and more |
| Oh-My-OpenCode Slim | 6 agents | Lightweight: orchestrator, oracle, designer, explorer, librarian, fixer. Lower token usage with dedicated fallback chains |
How it works:
opencode.json switches automaticallyFirst-time setup (run once per variant):
bunx oh-my-openagent@latest install # Normal variant
bunx oh-my-opencode-slim@latest install # Slim variant
Each variant has its own config file (oh-my-openagent.json / oh-my-opencode-slim.json) -- they don't conflict.
Setup Wizard — guided initial configuration
Provider Configuration — manage API keys and OAuth accounts
Quota Management — track rate limits with Telegram alerts
Settings — config sync, system info, and updates
Six Docker containers, two isolated networks:
| Service | Role |
|---|---|
| Caddy | Reverse proxy, automatic TLS, HTTP/3 |
| Dashboard | Next.js web app, JWT auth, Docker management via socket proxy |
| CLIProxyAPI | AI proxy server, OAuth callbacks, management API |
| Perplexity Sidecar | OpenAI-compatible wrapper for Perplexity Pro subscription |
| Docker Socket Proxy | Restricted Docker API access (containers/images only) |
| PostgreSQL | Database on isolated internal network |
| Component | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| UI | React 19 |
| Styling | Tailwind CSS v4 |
| Database | PostgreSQL 16 + Prisma 7 |
| Auth | JWT (jose) + bcrypt |
| Container Mgmt | Docker CLI via socket proxy |
cd dashboard
./dev-local.sh # Start dev environment
./dev-local.sh --reset # Reset database
./dev-local.sh --down # Stop containers
Or manually:
cd dashboard
npm install
cp .env.example .env.local # Edit with your DB credentials
npx prisma migrate dev
npm run dev
Dashboard at http://localhost:3000.
To browse the dashboard UI without PostgreSQL or login:
cd dashboard
SKIP_AUTH=1 npm run dev
Opens all routes as a fake admin user — useful for testing themes, layouts, and components.
| Guide | Description |
|---|---|
| Installation | Server deployment, local setup, manual installation |
| Configuration | Environment variables, config.yaml, config sync |
| Usage Collection | Usage tracking service, troubleshooting, manual collection |
| Troubleshooting | Common issues and solutions |
| Security | Best practices for production |
| Backup & Restore | Automated and manual backups |
| Service Management | Systemd and Docker Compose commands |
feat:, fix:, chore:)Release-Please auto-generates releases from commit messages.
Thanks to these wonderful people (emoji key):
The dashboard supports multi-language UI. Currently, we offer English (en) and German (de). We welcome community contributions for additional languages!
Copy the English template:
cp dashboard/messages/en.json dashboard/messages/{locale}.json
Replace {locale} with the language code (e.g., fr for French, es for Spanish, ja for Japanese).
Translate all strings:
{
"common": {
"loading": "Wird geladen...", // Keep this structure
"cancel": "Abbrechen"
}
}
Register the new locale:
dashboard/src/i18n/config.tssupportedLocales array:
export const supportedLocales = ["en", "de", "fr"] as const;
localeNames:
export const localeNames: Record<Locale, string> = {
en: "English",
de: "Deutsch",
fr: "Français", // Add this
};
Test locally:
npm run dev in dashboard/Submit a PR:
feat(i18n): add {language} translationmessages/{locale}.json, and changes to src/i18n/config.tsnext-intl — no need to changeUSD, EUR)| Code | Language | Status |
|---|---|---|
en | English | ✓ Complete |
de | German | ✓ Complete |
Add more by following the steps above!
Built with ❤️ using Next.js, React, and Tailwind CSS
TypeScript
92.8%
Shell
4.9%
Python
1.0%
Use Claude Code, Gemini CLI, and Codex as OpenAI-compatible APIs — managed through a modern web dashboard.
We have a Discord server — installation help, release announcements, and community chat.
discord.gg/7SrXxNueGA
CLIProxyAPI wraps OAuth-based CLI tools (Claude Code, Gemini CLI, Codex, GitHub Copilot, Kiro, Antigravity, Kimi, Qwen) into OpenAI-compatible APIs. This dashboard gives you a web UI to manage everything — providers, API keys, configs, logs, and updates — without touching YAML files.
Local use (macOS/Windows/Linux): Only Docker Desktop required.
git clone https://github.com/itsmylife44/cliproxyapi-dashboard.git
cd cliproxyapi-dashboard
./setup-local.sh # macOS/Linux
# .\setup-local.ps1 # Windows
The local setup scripts start Docker Compose with a local dashboard build (--build) so your current source changes are used.
Open http://localhost:3000 → create admin account → done.
Server deployment: See the full Installation Guide.
opencode-cliproxyapi-sync plugin (includes slim config)XXXX-XXXX)Custom providers pointing at localhost or private networks are blocked by default to prevent SSRF from hosted installations. To enable them on self-hosted deployments:
ALLOW_LOCAL_PROVIDER_URLS=true in infrastructure/.env.docker compose up -d dashboard).http://host.docker.internal:11434/v1 for Ollama from within Docker, or http://localhost:11434/v1 when running the dashboard outside a container). The API key field is optional — leave it empty if the provider doesn't require one.Cloud instance-metadata addresses (169.254.169.254, 100.100.100.200) stay blocked regardless of this setting.
Get notified on Telegram when your OAuth provider quota is running low.
Setup (Admin → Settings → Telegram Alerts):
https://api.telegram.org/bot<TOKEN>/getUpdates)Use the Test Message button to verify your configuration before enabling.
The dashboard supports two OpenCode orchestration variants. Toggle between them in the Using with OpenCode section:
| Variant | Agents | Description |
|---|---|---|
| Oh-My-Open-Agent | 9 agents + 8 categories | Full-featured orchestration with sisyphus, atlas, prometheus, oracle, and more |
| Oh-My-OpenCode Slim | 6 agents | Lightweight: orchestrator, oracle, designer, explorer, librarian, fixer. Lower token usage with dedicated fallback chains |
How it works:
opencode.json switches automaticallyFirst-time setup (run once per variant):
bunx oh-my-openagent@latest install # Normal variant
bunx oh-my-opencode-slim@latest install # Slim variant
Each variant has its own config file (oh-my-openagent.json / oh-my-opencode-slim.json) -- they don't conflict.
Setup Wizard — guided initial configuration
Provider Configuration — manage API keys and OAuth accounts
Quota Management — track rate limits with Telegram alerts
Settings — config sync, system info, and updates
Six Docker containers, two isolated networks:
| Service | Role |
|---|---|
| Caddy | Reverse proxy, automatic TLS, HTTP/3 |
| Dashboard | Next.js web app, JWT auth, Docker management via socket proxy |
| CLIProxyAPI | AI proxy server, OAuth callbacks, management API |
| Perplexity Sidecar | OpenAI-compatible wrapper for Perplexity Pro subscription |
| Docker Socket Proxy | Restricted Docker API access (containers/images only) |
| PostgreSQL | Database on isolated internal network |
| Component | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| UI | React 19 |
| Styling | Tailwind CSS v4 |
| Database | PostgreSQL 16 + Prisma 7 |
| Auth | JWT (jose) + bcrypt |
| Container Mgmt | Docker CLI via socket proxy |
cd dashboard
./dev-local.sh # Start dev environment
./dev-local.sh --reset # Reset database
./dev-local.sh --down # Stop containers
Or manually:
cd dashboard
npm install
cp .env.example .env.local # Edit with your DB credentials
npx prisma migrate dev
npm run dev
Dashboard at http://localhost:3000.
To browse the dashboard UI without PostgreSQL or login:
cd dashboard
SKIP_AUTH=1 npm run dev
Opens all routes as a fake admin user — useful for testing themes, layouts, and components.
| Guide | Description |
|---|---|
| Installation | Server deployment, local setup, manual installation |
| Configuration | Environment variables, config.yaml, config sync |
| Usage Collection | Usage tracking service, troubleshooting, manual collection |
| Troubleshooting | Common issues and solutions |
| Security | Best practices for production |
| Backup & Restore | Automated and manual backups |
| Service Management | Systemd and Docker Compose commands |
feat:, fix:, chore:)Release-Please auto-generates releases from commit messages.
Thanks to these wonderful people (emoji key):
The dashboard supports multi-language UI. Currently, we offer English (en) and German (de). We welcome community contributions for additional languages!
Copy the English template:
cp dashboard/messages/en.json dashboard/messages/{locale}.json
Replace {locale} with the language code (e.g., fr for French, es for Spanish, ja for Japanese).
Translate all strings:
{
"common": {
"loading": "Wird geladen...", // Keep this structure
"cancel": "Abbrechen"
}
}
Register the new locale:
dashboard/src/i18n/config.tssupportedLocales array:
export const supportedLocales = ["en", "de", "fr"] as const;
localeNames:
export const localeNames: Record<Locale, string> = {
en: "English",
de: "Deutsch",
fr: "Français", // Add this
};
Test locally:
npm run dev in dashboard/Submit a PR:
feat(i18n): add {language} translationmessages/{locale}.json, and changes to src/i18n/config.tsnext-intl — no need to changeUSD, EUR)| Code | Language | Status |
|---|---|---|
en | English | ✓ Complete |
de | German | ✓ Complete |
Add more by following the steps above!
Built with ❤️ using Next.js, React, and Tailwind CSS
TypeScript
92.8%
Shell
4.9%
Python
1.0%