Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

feat(providers): proveedor agregador CPAMC (CLI Proxy API)

Abierto
#167 4 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@Rafaeldelinares ya está trabajando en esto.

Desde el 21/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

enhancement question
Pre-flight checks
  • I searched the existing issues and the roadmap: no duplicates or overlap.
  • I understand that this proposal requires product review before implementation.
Problem to solve

Quorb supports aggregators such as 9Router and OpenRouter, but it has no integration with CLIProxyAPI (router-for-me/CLIProxyAPI), the local gateway used to unify, balance and manage access to Gemini, Claude, OpenAI and Vertex AI models without the noise of individual OAuth accounts in every client.

Note on naming: CPAMC is the management Web UI of CLIProxyAPI, not the service itself. This issue originally named the provider cpamc, which was wrong — the provider is named cliproxy below.

Proposed solution

A native cliproxy provider (Kind::Api, like the 9Router aggregator), against the versioned Management API v8 of CLIProxyAPI:

  • Endpoints (Authorization: Bearer <management_key> or X-Management-Key):
    • GET /v8/management/credentials → per-credential health: status, disabled, unavailable. This is the real health/cooldown signal.
    • GET /v8/management/credentials/models?name=<file-or-id> and GET /v8/management/routing/model-definitions/:channel → model catalogs per credential and per channel.
    • GET /v8/management/plugins/:id/quota?auth_index=… → quota figures, only when a quota plugin is installed (a base installation exposes no quota numbers).
  • Health is per credential, aggregated per channel: cooldown and degradation live on the credential (auth_index), while models are grouped by channel. The provider therefore watches credentials and rolls their health up into the channels shown in the widget.
  • The ring needs numbers, so the provider reports two layers:
    1. Always: credential health as UsageReport.status + message (Ok / Warning / Error) — state without figures.
    2. When available: the quota numbers from the plugin endpoint, as percent / used / limit.
      Without a quota plugin the widget must be able to render a state-only meter (status + message, no percentage). That is a small change to the meter rendering and is part of this scope.
  • Configuration and UI:
    • Parameters: base_url (default http://127.0.0.1:8317), the management key in the secure store (secrets::CLIPROXY_MANAGEMENT_KEY), and the credentials/channels to watch.
    • Section in Settings.tsx with a live connection test against a read-only endpoint (GET /v8/management/credentials).
    • HTTPS is required outside loopback: the management key grants full control of the proxy, so a remote base_url over plain HTTP is refused, or explicitly warned about in Settings.
  • Assets and tests:
    • Vector SVG logo cliproxy.svg in the asset catalog.
    • Rust unit tests over fixtures: healthy credential, credential in cooldown, credential disabled, and the state-only case (no quota plugin).
Affected area

Application behavior

Scope and non-goals
  • Scope: Monitoring the health of the credentials —and, when a quota plugin is present, the quota— of a local or remote CLIProxyAPI instance.
  • Non-goals: Mutating the proxy. No PATCH /credentials/status, no POST /routing/cooldown/reset, no credential management from Quorb.
Open question

The v8 Management API does not exist in CLIProxyAPI v7: on my own instances /v8/management/credentials returns 404, and only v8 serves it. Should the provider detect the version and degrade to an "unsupported" state, or is v8 a hard requirement?

Alternatives considered
  • Adapting the 9Router provider: its auth schemes and endpoints differ significantly.
  • Scoping the provider to plugin quota only: it would make the integration useless on a base installation, where no quota figures exist.
Lenguaje dominante
TypeScript
Estrellas
10
Forks
2
Merge medio
3 h 54 min
PR fusionados (30 d)
94

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de egdev6/quorb

Todos los issues de egdev6/quorb

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.