Proxy de la API de GitHub que agrupa múltiples PAT para compartir el presupuesto de límite de tasa, almacena en caché las respuestas de lectura en memoria y pasa las mutaciones con la autenticación del propio cliente. Diseñado para configuraciones multi-agente (OpenAB, OpenClaw, coding agents personalizados) que comparten los mismos repos.

ghpool es un proxy de la API de GitHub diseñado para configuraciones multi-agente donde varios coding agents (bots de OpenAB, workers de OpenClaw, agents personalizados) comparten los mismos repos y agotan los límites de tasa por token de GitHub.
Hace tres cosas:
Authorization del cliente y se reenvían con ese token, así el log de auditoría de GitHub aún muestra qué agent hizo la escrituraEsta plantilla despliega ghpool como un servicio solo interno:
Los servicios hermanos se conectan usando estas variables de entorno (auto-expuestas):
| Variable | Valor |
|---|---|
GHPOOL_HOSTNAME | hostname del contenedor (p. ej. ghpool.zeabur.internal) |
GHPOOL_BASE_URL | URL base completa (p. ej. http://ghpool.zeabur.internal:8080) |
Apunta tu coding agent o gh CLI a ghpool configurando la URL base de la API de GitHub:
export GITHUB_API_URL=${GHPOOL_BASE_URL}
export GITHUB_GRAPHQL_URL=${GHPOOL_BASE_URL}/graphql
Para escrituras que necesitan atribución de autenticación, el agent sigue usando su propio GH_TOKEN / GITHUB_TOKEN como normal — ghpool solo intercepta la ruta de red, no las credenciales.
La plantilla inicializa el pool con un PAT (GHPOOL_PAT_DEFAULT). Para añadir más:
GHPOOL_PAT_<ID> (p. ej. GHPOOL_PAT_BOT_CLAUDE, GHPOOL_PAT_BOT_CODEX) con el PAT como valor — el <ID> se convierte en el nombre de la identidad reportado por /statsCualquier variable de entorno que coincida con el prefijo GHPOOL_PAT_* se descubre automáticamente.
| Path | Propósito |
|---|---|
GET /<github-api-path> | GET proxy de la API REST de GitHub (agrupado + cacheado) |
POST /graphql | GraphQL — queries agrupadas+cacheadas, mutaciones pasan con autenticación del cliente |
GET /healthz | Verificación de salud |
GET /stats | Presupuestos del pool, ratios de aciertos de caché, estadísticas por identidad |
GHPOOL_ALLOWED_OWNERS se aplica: solicitudes a cualquier org/usuario no en esta lista devuelven 403, así un PAT filtrado solo expone los repos que listaste explícitamenteAuthorization del cliente (sin autenticación = 401), así el proxy no se puede usar como puerta de escritura anónimaghpool es un binario Rust único (imagen distroless) — extremadamente ligero. La memoria está dominada por la caché en memoria (max 10000 entradas por defecto). Si haces proxy de un volumen de solicitudes muy alto, aumenta la RAM proporcionalmente.