LLMKit

Servidor MCP de seguimiento de costos de IA con 11 herramientas para análisis de gastos, control de presupuestos y costos de sesión en Claude Code, Cursor y Cline.

Documentación

LLMKit

Mide cuánto cuestan tus agentes de IA. Detén las solicitudes antes de que superen un presupuesto.

CI PyPI npm OpenSSF Scorecard OpenSSF Best Practices MIT license

Sitio web | Documentación | API de precios | Arquitectura | Seguridad | Caso de aseguramiento

LLMKit es una puerta de enlace de IA de código abierto y un conjunto de SDK para la atribución de costos, la admisión de presupuestos y la evidencia de solicitudes. La puerta de enlace reserva el gasto estimado antes del envío al proveedor. Rechaza las solicitudes que no caben en el presupuesto activo y luego liquida las reservas admitidas al uso real cuando la respuesta se completa.

El repositorio también incluye superficies de seguimiento local que no requieren una cuenta de LLMKit ni un proxy.

Elige una superficie

SuperficieÚsalo cuandoPaquete
Transporte de PythonQuieres estimaciones de costos locales alrededor de llamadas SDK existentesllmkit-sdk
Envoltorio CLITu cliente de OpenAI o Anthropic respeta su variable de entorno estándar de URL base@f3d1/llmkit-cli
SDK de TypeScriptTienes una clave existente y quieres sesiones, streaming y acceso a la puerta de enlace desde TypeScript@f3d1/llmkit-sdk
Servidor MCPQuieres herramientas de gasto, presupuesto y sesiones de codificación locales dentro de un cliente MCP@f3d1/llmkit-mcp-server
Proveedor de SDK de IAUsas Vercel AI SDK 6@f3d1/llmkit-ai-sdk-provider
Puerta de enlace y panelNecesitas presupuestos compartidos, enrutamiento de proveedores, recibos y análisispackages/proxy, packages/dashboard

Inicio rápido

Seguimiento local de Python

pip install llmkit-sdk
from llmkit import tracked
from openai import OpenAI

costs = []
client = OpenAI(http_client=tracked(on_cost=costs.append))

client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Summarize this incident."}],
)

print(f"${sum(item.total_cost or 0 for item in costs):.6f}")

El transporte lee los metadatos de uso del proveedor y estima el costo a partir del catálogo de precios incluido. No envía datos de seguimiento a LLMKit.

Seguimiento CLI sin código

npx @f3d1/llmkit-cli -- python my_agent.py

Usa -v para salida por solicitud o --json para resultados legibles por máquina.

Modo puerta de enlace (clave existente)

Los ejemplos de puerta de enlace requieren una clave de API de LLMKit existente. La creación de cuentas y la gestión de claves no están disponibles temporalmente mientras se restaura el servicio autenticado. Si aún no tienes una clave, usa una de las rutas de seguimiento local anteriores.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.llmkit.sh/v1",
    api_key="llmk_your_key_here",
)

response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Draft a release note."}],
)

La ruta del presupuesto

LLMKit autentica cada solicitud, reserva su costo estimado, rechaza solicitudes que superan el presupuesto antes del envío al proveedor y liquida las solicitudes admitidas al uso real.

La ruta de control se construye alrededor de tres límites:

  • Admisión atómica: un Durable Object es dueño del estado de reserva para cada alcance de presupuesto. Las solicitudes concurrentes no pueden gastar el mismo saldo restante.
  • Idempotencia consciente del envío: los fallos deterministas antes del envío liberan la clave. Después de que el envío al proveedor pueda haber ocurrido, los fallos permanecen terminales para evitar gastos duplicados.
  • Respuestas limitadas: los cuerpos no transmitidos en streaming y los marcos SSE individuales tienen límites de bytes explícitos. LLMKit cancela las lecturas ascendentes cuando se supera un límite.

Los recibos de solicitud vinculan la decisión de admisión, el intento del proveedor, la liquidación y la transferencia de análisis con identificadores estables. Las escrituras en la base de datos usan una bandeja de salida, por lo que una interrupción de análisis no borra silenciosamente la evidencia del presupuesto.

Servidor MCP

{
  "mcpServers": {
    "llmkit": {
      "command": "npx",
      "args": ["-y", "@f3d1/llmkit-mcp-server"]
    }
  }
}

Cinco herramientas locales inspeccionan sesiones compatibles de Claude Code y datos de tareas de Cline sin una clave de LLMKit. Seis herramientas de puerta de enlace consultan gastos, presupuestos, claves, sesiones y estado del servicio cuando LLMKIT_API_KEY contiene una clave existente. En conjunto exponen 11 herramientas.

Datos de precios

El catálogo fijado es una instantánea de referencia incluida, no una cotización en vivo. Un archivo fuente, packages/shared/pricing.json, registra la fecha de la instantánea y genera las tablas de TypeScript, Python y MCP. CI rechaza la desviación entre el archivo fuente y los archivos generados. El sitio público renderiza solo las tablas de proveedores pobladas y muestra la fecha de la fuente.

El endpoint público de comparación no requiere cuenta:

https://api.llmkit.sh/v1/pricing/compare?mode=text-token&models=anthropic%2Fclaude-sonnet-4-6%2Copenai%2Fgpt-4o&input=1000&output=1000&cacheRead=0&cacheWrite=0

El endpoint cotiza solo las claves de modelo exactas proporcionadas por el llamador. No busca ni recomienda el modelo más barato. El precio es una estimación, no una factura del proveedor. Las reglas de facturación del proveedor, la modalidad del modelo y la actualidad del catálogo siguen siendo parte del límite de errores.

Evidencia y límite actual

AfirmaciónEvidencia en este repositorioLímite
La admisión de presupuesto concurrente está serializadaLos fixtures de Worker ejercitan reservas en competencia, reintentos, liquidación y recuperaciónPrueba local determinista de Worker y base de datos
El comportamiento de reintento evita envíos duplicadosLas pruebas de idempotencia cubren discrepancia de payload, liberación previa al envío y estado indeterminado posterior al envíoEl comportamiento del proveedor se simula en CI
Las respuestas grandes del proveedor están limitadasLos fixtures de SSE de éxito, error y no terminados verifican el rechazo y la cancelación del streamEl límite es por respuesta almacenada en búfer o marco SSE
Los artefactos de precios son reproduciblesUn generador y la ruta de CI --check cubren todas las tablas de idiomas publicadasLos valores del catálogo aún requieren actualizaciones de la fuente
La recuperación alojada se puede evaluar de forma seguraEl despliegue de staging protegido y los runners de prueba vinculan un Worker aislado, base de datos, revisión y diario de limpiezaNo se afirma aquí un recibo completo de concurrencia alojada y recuperación de interrupciones

Consulta STAGING_PROOF.md para el contrato de prueba alojada aislada. Rechaza deliberadamente objetivos de producción y árboles de trabajo sucios.

Política y diseño del proyecto

DocumentoQué abarca
GobernanzaAutoridad de decisión, roles, disputas y la brecha de continuidad actual
Hoja de rutaTrabajo previsto y excluido hasta agosto de 2027
ArquitecturaComponentes, flujos de solicitudes, identidad, almacenamiento, despliegue y límites de fallos
SeguridadRequisitos de seguridad, garantías excluidas, informes y versiones compatibles
Aseguramiento de seguridadModelo de amenazas, límites de confianza, evidencia ejecutable, riesgos residuales y HOLDs en tiempo de ejecución
AccesibilidadControles del sitio público, método de verificación, brechas conocidas y alcance de idiomas
ContribuciónConfiguración, puertas de calidad, expectativas de revisión y firma DCO

Desarrollo

git clone https://github.com/smigolsmigol/llmkit
cd llmkit
corepack pnpm@9.15.4 install --frozen-lockfile
corepack pnpm@9.15.4 build
corepack pnpm@9.15.4 quality:pr

Ejecuta el Worker localmente con enlaces solo de desarrollo:

corepack pnpm@9.15.4 --filter @f3d1/llmkit-proxy dev

Los comandos genéricos de despliegue se omiten intencionalmente. Staging y producción usan scripts protegidos separados con confirmación explícita del objetivo.

Seguridad

Las credenciales del proveedor se cifran con AES-256-GCM usando un IV aleatorio y datos autenticados adicionales vinculados al propietario/proveedor. Las claves de API de LLMKit se hashean antes del almacenamiento. CI incluye escaneo de secretos, análisis estático, revisión de dependencias, CodeQL y verificaciones de procedencia de paquetes.

Lee la política de seguridad y arquitectura y la instantánea de Security Insights legible por máquina. Informa vulnerabilidades a través del informe privado de vulnerabilidades de GitHub o por correo electrónico a security@llmkit.sh.

Licencia

MIT