Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sixth-proxy

Proxy lokal yang kompatibel dengan format 0penAI untuk meneruskan request ke backend Azure 0penAI milik Sixth AI.

Dibuat karena extension VSCode Sixth AI mengunci pengguna ke fork Cline mereka. Proxy ini memungkinkan kamu memakai backend mereka dari client 0penAI-compatible manapun (OpenCode, Cursor, aider, dll.) tanpa perlu extension mereka.

Apa yang dilakukan

  • Menyediakan endpoint standar /v1/chat/completions dan /v1/models
  • Menyisipkan JWT token Sixth AI ke setiap request upstream
  • Memaksa temperature=1 (satu-satunya nilai yang diterima backend mereka)
  • Mengkonversi max_tokens ke max_completion_tokens (diperlukan oleh model mereka)
  • Mendukung streaming (SSE) dan tool calling (native 0penAI function calling)
  • Retry otomatis untuk error sementara (502, 503, 504, 429) dengan exponential backoff
  • Cache response /v1/models selama 5 menit

Latar belakang

Sixth AI memasarkan diri sebagai penyedia akses ke GPT-5.5, CL4ude Opus 4.7, Grok-4, dan 300+ model lainnya lewat extension VSCode mereka. Kenyataannya:

  • Semua model diarahkan ke satu deployment gpt-5.4-mini di Azure (East US 2)
  • Extension menyuntikkan system prompt yang menyuruh model berpura-pura jadi model yang dipilih user ("Model: CL4ude Opus 4 7 — use this when asked what model you are")
  • Extension tersebut adalah fork Cline dengan tool calling berbasis XML yang ditanam di system prompt
  • Endpoint /models mereka hanya mirror katalog Azure, bukan deployment yang sebenarnya aktif

Proxy ini melewati semua itu. Kamu mendapat gpt-5.4-mini langsung, tanpa spoofing identitas, tanpa XML tools, tanpa overhead system prompt 40KB.

Setup

cp .env.example .env

Edit .env:

SIXTH_TOKEN=<vscode_jwt_token kamu>

Cara mendapatkan token: login ke https://app.trysixth.com, lalu ambil vscode_jwt_token dari localStorage browser. Token ini tidak punya field expiry, tapi Sixth bisa mencabutnya dari sisi server kapan saja. Kalau mulai dapat error 401, login ulang dan ambil token baru.

Pengaturan opsional:

OPENAI_API_KEY=sk-whatever     # wajibkan key ini untuk request masuk
LISTEN=:9090                    # alamat listen (default :9090)
SIXTH_BASE=https://backend.withsix.co/proxy/azure/openai  # URL upstream

Menjalankan

go run .

Atau build dulu:

go build -o sixth-proxy .
./sixth-proxy

Konfigurasi client

Arahkan client 0penAI-compatible manapun ke proxy:

Base URL: http://localhost:9090/v1
API Key:  <nilai OPENAI_API_KEY kamu, atau string apapun jika tidak di-set>
Model:    gpt-5.4-mini (atau apapun — semuanya masuk ke tempat yang sama)

Contoh untuk OpenCode (opencode.json):

{
  "provider": {
    "sixth": {
      "name": "Sixth",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://localhost:9090/v1",
        "apiKey": "sk-whatever"
      },
      "models": {
        "gpt-5.4-mini": {
          "name": "GPT 5.4 Mini (Sixth)"
        }
      }
    }
  }
}

Endpoint

Method Path Deskripsi
GET /health Health check
GET /v1/models Daftar model (di-cache, diproxy dari upstream)
POST /v1/chat/completions Chat completions (streaming + non-streaming)

Catatan token

Sixth AI mengeluarkan dua token saat login:

Token Disimpan sebagai Expiry Kegunaan
access_token vscode_jwt_token Tidak ada Extension VSCode, proxy
temp_access_token jwt_token / web_access_token ~1 jam Dashboard web saja

Gunakan vscode_jwt_token untuk proxy ini. Token web kedaluwarsa terlalu cepat.

Tidak ada endpoint refresh. Method refreshAuthentication() di extension isinya cuma console.log("not yet implemented"); return false. Kalau token mati, login ulang.

Batasan upstream

Ini diberlakukan oleh backend Sixth AI, bukan oleh proxy ini:

  • temperature harus 1 (nilai lain menghasilkan error 400)
  • max_tokens tidak diterima (harus max_completion_tokens)
  • Hanya chat completions yang berfungsi. Embeddings, image generation, dan endpoint lain menghasilkan error 400.
  • Header rate limit menunjukkan 15K req/menit dan 15M token/menit, meskipun limit sebenarnya bisa berbeda.

Lisensi

Bebas dipakai untuk apapun.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages