logo
icon

ghpool

Proxy GitHub API yang menggabungkan beberapa PAT untuk berbagi anggaran rate-limit, menyimpan respons baca dalam memori, dan meneruskan mutasi dengan autentikasi klien sendiri. Dirancang untuk setup multi-agen (OpenAB, OpenClaw, coding agent kustom) yang berbagi repo yang sama.

template cover
Dideploy0 kali
PenerbitzeaburZeabur
Dibuat2026-05-29
Minimum1 Core1 GB
Direkomendasikan1 Core1 GB
Tag
Developer ToolsGitHubAI

ghpool

ghpool adalah proxy GitHub API yang dirancang untuk setup multi-agen di mana beberapa coding agent (bot OpenAB, worker OpenClaw, agent kustom) berbagi repo yang sama dan menghabiskan rate limit per-token GitHub.

Ia melakukan tiga hal:

  • Menggabungkan PAT untuk baca — setiap permintaan GET dirutekan melalui identitas dengan anggaran rate-limit tersisa paling banyak, sehingga beberapa agen berbagi anggaran gabungan alih-alih masing-masing mencapai batasnya sendiri
  • Cache respons baca — hasil REST GET dan GraphQL query di-cache di memori dengan TTL per-resource (PR view 30 detik, run list 15 detik, repo view 5 menit, dll.)
  • Meneruskan mutasi — POST/PATCH/DELETE dan mutasi GraphQL memerlukan header Authorization klien sendiri dan diteruskan dengan token tersebut, sehingga log audit GitHub tetap menunjukkan agen mana yang melakukan tulis

Arsitektur

Template ini mendeploy ghpool sebagai layanan internal-only:

  • Tidak ada domain publik yang diikat — ghpool diakses oleh layanan saudara di proyek Zeabur yang sama melalui jaringan kontainer
  • Port 8080 diekspos sebagai TCP (tanpa Ingress, tanpa terminasi TLS)
  • Port forwarding dinonaktifkan secara default; aktifkan di tab Networking jika perlu menguji dari luar proyek

Layanan saudara terhubung menggunakan variabel lingkungan ini (auto-ekspos):

VariabelNilai
GHPOOL_HOSTNAMEhostname kontainer (mis. ghpool.zeabur.internal)
GHPOOL_BASE_URLURL dasar lengkap (mis. http://ghpool.zeabur.internal:8080)

Mengkonfigurasi agen menggunakan ghpool

Arahkan coding agent atau gh CLI Anda ke ghpool dengan mengatur URL dasar GitHub API:

export GITHUB_API_URL=${GHPOOL_BASE_URL}
export GITHUB_GRAPHQL_URL=${GHPOOL_BASE_URL}/graphql

Untuk tulis yang membutuhkan atribusi autentikasi, agen tetap menggunakan GH_TOKEN / GITHUB_TOKEN sendiri seperti biasa — ghpool hanya mencegat jalur jaringan, bukan kredensial.

Menambahkan lebih banyak PAT

Template menginisialisasi pool dengan satu PAT (GHPOOL_PAT_DEFAULT). Untuk menambah lebih:

  1. Buka tab Variables layanan ghpool
  2. Tambahkan variabel lingkungan baru bernama GHPOOL_PAT_<ID> (mis. GHPOOL_PAT_BOT_CLAUDE, GHPOOL_PAT_BOT_CODEX) dengan PAT sebagai nilainya — <ID> menjadi nama identitas yang dilaporkan oleh /stats
  3. Restart layanan agar identitas baru terdeteksi

Variabel lingkungan apa pun yang cocok dengan awalan GHPOOL_PAT_* ditemukan secara otomatis.

Endpoint

PathTujuan
GET /<github-api-path>GET proxy GitHub REST API (digabungkan + di-cache)
POST /graphqlGraphQL — query digabungkan+di-cache, mutasi diteruskan dengan auth klien
GET /healthzPemeriksaan kesehatan
GET /statsAnggaran pool, rasio hit cache, statistik per-identitas

Catatan keamanan

  • PAT disimpan hanya di variabel lingkungan — tidak pernah ditulis ke disk dalam kontainer
  • GHPOOL_ALLOWED_OWNERS ditegakkan: permintaan ke org/pengguna mana pun yang tidak ada di daftar ini mengembalikan 403, sehingga PAT yang bocor hanya mengekspos repo yang Anda daftarkan secara eksplisit
  • Mutasi selalu memerlukan header Authorization dari klien (tanpa auth = 401), sehingga proxy tidak dapat digunakan sebagai gateway tulis anonim

Sumber Daya

ghpool adalah binary Rust tunggal (image distroless) — sangat ringan. Memori didominasi oleh cache dalam-memori (maks 10000 entri secara default). Jika Anda mem-proxy volume permintaan yang sangat tinggi, tingkatkan RAM sesuai.

Tautan & lisensi