Cybx-GateawayQue
Cybx-GateawayQue adalah gateway proxy self-hosted yang dibangun dengan Go sebagai backend utama untuk mengelola akses Kiro melalui dashboard admin berbasis Next.js 16 + React 19. Project ini menyediakan kompatibilitas API format OpenAI Chat Completions dan Anthropic Messages, pool multi-akun Kiro, pencatatan penggunaan, manajemen API key, proxy pool, content filter, integrasi tool AI coding, dan dashboard operasional. Pada mode production, dashboard dapat diekspor sebagai static asset dan diserve langsung oleh binary backend kiro-go.exe.
Fitur & Komponen Utama
Sistem ini berfokus pada 3 komponen utama:
- Gateway Backend: Menyediakan endpoint HTTP untuk OpenAI-compatible API, Anthropic-compatible API, dashboard API, health check, statistik penggunaan, dan routing request ke Kiro upstream.
- Dashboard Admin: Mengelola akun, provider, model, API key, logs, usage chart, filter, proxy pool, scraper, tunnel, keamanan, dan integrasi tool. Pada build production, dashboard diserve dari backend tanpa menjalankan proses Next.js terpisah.
- Client / API Consumer: Mengakses proxy melalui endpoint
/v1/chat/completions,/v1/messages, atau konfigurasi integrasi tool seperti Claude Code, OpenCode, Cline, Hermes, Pi, Zed, dan Open Claw.
Fitur yang tersedia:
- Multi-account pool untuk akun Kiro.
- Round-robin routing dan failover antar akun.
- Refresh token otomatis saat token mendekati masa kedaluwarsa.
- Endpoint OpenAI Chat Completions compatible.
- Endpoint Anthropic Messages compatible.
- Streaming response dengan Server-Sent Events.
- Estimasi dan pencatatan token.
- Statistik penggunaan per model dan per akun.
- Dashboard logs untuk request dan response.
- API key generator dan toggle proteksi API.
- Custom model management.
- Content filter berbasis regex.
- Proxy pool manual dan proxy scraper.
- Cloudflare Tunnel quick mode dan named tunnel.
- Export dan import konfigurasi akun.
- Integrasi otomatis ke beberapa tool AI coding.
Arsitektur & Alur Sistem
1. Backend Gateway
Backend berada pada folder Backend dan entry point utama berada di Backend/main.go.
Alur request utama:
- Client mengirim request ke
/v1/chat/completionsatau/v1/messages. - Backend memvalidasi API key jika
requireApiKeyaktif. - Account pool memilih akun aktif yang tersedia, sesuai model yang diminta, dan belum diblokir oleh limit.
- Payload OpenAI atau Anthropic diterjemahkan menjadi payload Kiro.
- Backend memastikan token akun masih valid atau melakukan refresh token sebelum request diteruskan.
- Request diteruskan ke endpoint Kiro.
- Response upstream diterjemahkan kembali ke format OpenAI atau Anthropic.
- Statistik penggunaan dan log request disimpan ke file runtime.
2. Dashboard Admin
Dashboard berada pada folder Dashboard dan menggunakan Next.js App Router.
Halaman utama dashboard:
/untuk overview statistik./accountsuntuk daftar akun, import, export, refresh token, dan pengecekan kredit./providersdan/providers/kirountuk onboarding akun Kiro./modelsuntuk model bawaan dan custom model./logsuntuk riwayat request./filtersuntuk content filter./api-keyuntuk membuat dan menghapus API key./proxyuntuk proxy pool./proxy/scraperuntuk mengambil dan menguji proxy publik./integrationuntuk auto-bind ke tool AI coding./tunneluntuk Cloudflare Tunnel./securityuntuk password dashboard dan session./chatuntuk chat client internal./docsuntuk dokumentasi API di dalam dashboard.
3. Penyimpanan Runtime
File runtime disimpan di Backend/data saat aplikasi berjalan secara lokal.
| File | Fungsi |
|---|---|
config.json |
Konfigurasi utama, akun, API key, statistik global |
usage_records.json |
Riwayat penggunaan request |
custom_models.json |
Daftar custom model |
cybxai_settings.json |
Pengaturan dashboard, auth, dan session |
proxies.json |
Proxy pool |
proxy-settings.json |
Pengaturan proxy aktif |
tunnel-config.json |
Konfigurasi cloudflared |
tunnel-state.json |
Status tunnel |
Menjalankan Aplikasi
Aplikasi berjalan pada ekosistem lokal menggunakan stack berikut:
- Go >= 1.21
- Node.js >= 20
- npm
- Bun opsional untuk instalasi dependency dashboard
- Docker dan Docker Compose untuk deployment container
- cloudflared opsional jika ingin memakai fitur Cloudflare Tunnel
Menjalankan via Docker
Pada project ini sudah disediakan Dockerfile dan docker-compose.yml.
PowerShell:
Copy-Item .env.example .env
docker compose up -d --build
macOS/Linux:
cp .env.example .env
docker compose up -d --build
Setelah dijalankan, akses URL berikut:
- Backend/API:
http://localhost:8085 - Dashboard:
http://localhost:8084
Konfigurasi Docker dapat diubah melalui file .env.
ADMIN_PASSWORD=your-secure-password
BACKEND_PORT=8085
DASHBOARD_PORT=8084
NEXT_PUBLIC_API_URL=http://127.0.0.1:8085
Volume Docker menyimpan data runtime backend di /app/backend/data.
Menjalankan Tanpa Docker
1. Clone repository
git clone https://github.com/cybha22/Cybx-GateawayQue.git
cd Cybx-GateawayQue
2. Install dependency root
npm install
3. Install dependency dashboard
Menggunakan npm:
cd Dashboard
npm install
cd ..
Alternatif menggunakan bun (project menyertakan bun.lock):
cd Dashboard
bun install
cd ..
Atau dari root setelah dependency root tersedia:
npm run install:all
Buat file environment dashboard:
PowerShell:
Copy-Item Dashboard/.env.example Dashboard/.env.local
macOS/Linux:
cp Dashboard/.env.example Dashboard/.env.local
Isi Dashboard/.env.local:
NEXT_PUBLIC_API_URL=http://127.0.0.1:8085
4. Jalankan backend dan dashboard untuk development
npm run dev
Saat memakai script root, service berjalan di:
- Backend/API:
http://127.0.0.1:8085 - Dashboard:
http://127.0.0.1:8084
5. Akses dashboard
Buka:
http://127.0.0.1:8084
Password default backend adalah:
changeme
Untuk mengganti password dari environment sebelum menjalankan server:
$env:ADMIN_PASSWORD="your-secure-password"
npm run dev
Password juga dapat diganti melalui halaman /security.
Menjalankan Service Secara Terpisah
Jika ingin menjalankan backend dan dashboard di terminal berbeda:
Backend
cd Backend
go run .
Dashboard
cd Dashboard
npm run dev
Jika menjalankan dashboard langsung dari folder Dashboard, port default dashboard mengikuti Dashboard/package.json, yaitu:
http://127.0.0.1:7471
Build Production
Build production dari root project:
npm run build
Perintah tersebut akan:
- Mengekspor dashboard Next.js menjadi static files.
- Menyalin hasil export ke
Backend/dashboard. - Membuild backend Go menjadi
Backend/kiro-go.exe.
Menjalankan hasil build di Windows:
.\Backend\kiro-go.exe
Atau dari folder Backend:
cd Backend
./kiro-go.exe
Output backend lokal:
Backend/kiro-go.exe
Dashboard production berjalan langsung dari backend, sehingga tidak perlu menjalankan next start atau proses Node.js terpisah. Setelah kiro-go.exe berjalan, buka:
http://127.0.0.1:8085
Jika log server menampilkan http://0.0.0.0:8085, gunakan http://127.0.0.1:8085 saat membuka dari browser lokal. Alamat 0.0.0.0 hanya dipakai untuk bind server.
Catatan:
Backend/dashboardadalah output build static dan tidak perlu di-commit.- Route dashboard utama berada di
/. - Route
/adminakan diarahkan ke/untuk kompatibilitas. - Build dashboard dapat menampilkan peringatan Next.js tentang multiple lockfile karena root project dan folder
Dashboardsama-sama memilikipackage-lock.json. Peringatan ini tidak memblokir proses build.
Konfigurasi Utama
Konfigurasi backend dibuat otomatis saat pertama kali aplikasi berjalan.
Default lokasi:
Backend/data/config.json
Jika ingin menggunakan lokasi custom:
$env:CONFIG_PATH="C:\path\to\config.json"
go run .
Field penting di config.json:
| Field | Fungsi |
|---|---|
password |
Password admin dashboard |
port |
Port backend |
host |
Host binding backend |
apiKey |
API key utama untuk endpoint /v1/* |
requireApiKey |
Mengaktifkan validasi API key |
accounts |
Daftar akun Kiro |
proxyURL |
Proxy aktif untuk koneksi outbound |
preferredEndpoint |
Endpoint upstream prioritas |
endpointFallback |
Mengizinkan fallback endpoint |
thinkingSuffix |
Suffix model untuk thinking mode |
identityPrompt |
Prompt identitas tambahan |
logLevel |
Level log backend |
Environment yang dipakai:
| Environment | Fungsi |
|---|---|
ADMIN_PASSWORD |
Override password dashboard saat startup |
CONFIG_PATH |
Lokasi file config backend |
LOG_LEVEL |
Override level log |
NEXT_PUBLIC_API_URL |
Base URL backend untuk dashboard |
BACKEND_PORT |
Port host Docker Compose untuk backend |
DASHBOARD_PORT |
Port host Docker Compose untuk dashboard |
Menambahkan Akun Kiro
Akun Kiro dapat ditambahkan melalui dashboard:
/providers/kiro
Metode onboarding yang tersedia:
- Refresh Token untuk menambahkan akun dari refresh token yang sudah tersedia.
- Web Token untuk menambahkan akun dari token web flow.
- IAM SSO untuk akun AWS IAM Identity Center.
- Builder ID untuk flow AWS Builder ID.
- Credentials JSON untuk import credentials dari format JSON.
Setelah akun ditambahkan, akun akan muncul di:
/accounts
Dari halaman tersebut, akun dapat diaktifkan, dinonaktifkan, dihapus, dicek kreditnya, di-refresh tokennya, serta diekspor atau diimpor.
API Reference
Base URL backend lokal:
http://127.0.0.1:8085
Endpoint Utama
| Method | Endpoint | Fungsi |
|---|---|---|
POST |
/v1/chat/completions |
OpenAI-compatible chat completions |
POST |
/chat/completions |
Alias OpenAI-compatible chat completions |
POST |
/api/chat/completions |
Chat completions untuk dashboard adapter |
POST |
/v1/messages |
Anthropic-compatible Messages API |
POST |
/messages |
Alias Anthropic-compatible Messages API |
POST |
/anthropic/v1/messages |
Alias Anthropic-compatible Messages API |
POST |
/v1/messages/count_tokens |
Hitung token request Messages API |
GET |
/v1/models |
Daftar model |
GET |
/v1/stats |
Statistik proxy |
GET |
/health |
Health check |
GET |
/api/system |
Informasi versi dan port |
ANY |
/api/* |
API dashboard |
ANY |
/admin/api/* |
API admin legacy |
Autentikasi API
Endpoint /v1/chat/completions, /v1/messages, /v1/messages/count_tokens, /v1/stats, dan /api/chat/completions akan memvalidasi API key jika requireApiKey aktif.
Header yang didukung:
Authorization: Bearer <your-api-key>
atau:
X-Api-Key: <your-api-key>
API key dapat dibuat melalui halaman:
/api-key
Endpoint /admin/api/* memakai:
X-Admin-Password: <admin-password>
atau cookie:
admin_password
Format Model
Backend menerima model Kiro dalam format langsung maupun namespace dashboard:
claude-sonnet-4.5
kr/claude-sonnet-4.5
cybxai/kr/claude-sonnet-4.5
Model Claude versi baru dengan format dash juga dinormalisasi otomatis, misalnya claude-opus-4-8 menjadi claude-opus-4.8.
Contoh OpenAI Chat Completions
curl http://127.0.0.1:8085/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-d '{
"model": "claude-sonnet-4.5",
"stream": false,
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'
Contoh Anthropic Messages API
curl http://127.0.0.1:8085/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"stream": false,
"messages": [
{
"role": "user",
"content": "Explain recursion briefly."
}
]
}'
Contoh List Models
curl http://127.0.0.1:8085/v1/models
Contoh Health Check
curl http://127.0.0.1:8085/health
Integrasi Tool
Halaman integrasi tersedia di:
/integration
Backend dapat mendeteksi dan melakukan bind konfigurasi untuk tool berikut:
| Tool | Config |
|---|---|
| Claude Code | ~/.claude/settings.json |
| OpenCode | Config OpenCode lokal |
| Open Claw | ~/.openclaw/openclaw.json |
| Cline | ~/.cline/endpoints.json |
| Hermes | ~/.hermes/config.yaml |
| Pi | ~/.pi/agent/models.json |
| Zed | Settings Zed lokal |
Integrasi menggunakan base URL:
http://127.0.0.1:8085/v1
Proxy Pool & Scraper
Proxy pool tersedia di:
/proxy
Fitur yang tersedia:
- Menambahkan proxy HTTP, SOCKS4, dan SOCKS5.
- Mengecek status proxy.
- Menghapus proxy dead.
- Menghapus seluruh proxy.
- Batch add proxy.
- Mengatur proxy aktif untuk koneksi outbound.
Proxy scraper tersedia di:
/proxy/scraper
Sumber scraper yang tersedia antara lain:
- TheSpeedX SOCKS5
- TheSpeedX SOCKS4
- TheSpeedX HTTP
- Geonode HTTP/SOCKS5
- clarketm HTTP
- monosans HTTP
- monosans SOCKS5
- hookzof SOCKS5
Cloudflare Tunnel
Fitur tunnel tersedia di:
/tunnel
Mode yang didukung:
- Quick Tunnel untuk membuat URL sementara
trycloudflare.com. - Named Tunnel untuk domain Cloudflare yang sudah dikonfigurasi.
Syarat:
- Binary
cloudflaredtersedia di PATH, atau - Path binary diatur melalui halaman
/tunnel.
Untuk named tunnel, jalankan autentikasi Cloudflare terlebih dahulu:
cloudflared login
Struktur Project
Cybx-GateawayQue/
|-- Backend/
| |-- auth/
| |-- config/
| |-- contentfilter/
| |-- context-filtes/
| | |-- filters.json
| |-- data/
| |-- dashboard/
| |-- integration/
| |-- logger/
| |-- pool/
| |-- proxy/
| |-- go.mod
| |-- go.sum
| |-- main.go
|
|-- Dashboard/
| |-- public/
| |-- src/
| | |-- app/
| | |-- components/
| | |-- hooks/
| | |-- lib/
| | |-- stores/
| |-- components.json
| |-- next.config.ts
| |-- package.json
| |-- tsconfig.json
|
|-- docker/
| |-- entrypoint.sh
|
|-- scripts/
| |-- build-dashboard-static.mjs
|
|-- .dockerignore
|-- .env.example
|-- .gitignore
|-- Dockerfile
|-- docker-compose.yml
|-- package.json
|-- README.md
Keterangan folder:
Backend/authberisi flow autentikasi OIDC, IAM SSO, Builder ID, dan token refresh.Backend/configberisi struktur dan operasi konfigurasi.Backend/contentfilterberisi compiler dan runtime filter regex.Backend/context-filtes/filters.jsonberisi konfigurasi rule filter yang dimuat saat startup.Backend/databerisi file runtime (config.json,usage_records.json, dll). Folder ini dibuat otomatis saat aplikasi pertama kali berjalan.Backend/dashboardberisi output static dashboard hasilnpm run build. Folder ini dibuat otomatis dan tidak perlu di-commit.Backend/integrationberisi generator konfigurasi tool AI coding.Backend/loggerberisi modul logging backend.Backend/poolberisi account pool dan pemilihan akun.Backend/proxyberisi HTTP handler, translator, Kiro client, proxy pool, scraper, tunnel, dan usage tracker.Dashboard/src/appberisi route halaman dashboard.Dashboard/src/componentsberisi komponen UI dashboard.Dashboard/src/hooksberisi custom React hooks.Dashboard/src/libberisi helper API dan utilitas frontend.Dashboard/src/storesberisi state management Zustand.docker/entrypoint.shberisi entrypoint container yang menjalankan backend dan dashboard secara paralel.scripts/build-dashboard-static.mjsberisi script build static dashboard dan penyalinan output keBackend/dashboard.
Kontribusi
Project ini terbuka untuk kontribusi melalui pull request. Jika ingin membantu pengembangan backend, dashboard, dokumentasi, testing, atau integrasi tool, silakan cek halaman Issues dan ikuti panduan di CONTRIBUTING.md.
Area kontribusi yang dibutuhkan:
- Backend Kiro engine, routing, failover, dan API compatibility.
- Dashboard admin, UX, chart, logs, dan halaman konfigurasi.
- Test coverage untuk backend dan fitur proxy.
- Dokumentasi setup, API usage, dan deployment.
- Integrasi tool AI coding.
Untuk kontribusi kecil, cari issue dengan label good first issue atau help wanted. Untuk perubahan besar, buka issue terlebih dahulu agar scope dapat dibahas sebelum implementasi.
Kontak & Support
Jika ada keperluan, kerja sama, pertanyaan, atau support request, silakan hubungi saya melalui Discord atau Telegram.
| Platform | Kontak |
|---|---|
| cybh22 | |
| @Cyb192 |
Lisensi
Project ini dilisensikan di bawah MIT License.
MIT License
Copyright (c) 2026 Cybha
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.