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
Mide cuánto cuestan tus agentes de IA. Detén las solicitudes antes de que superen un presupuesto.
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 cuando | Paquete |
|---|---|---|
| Transporte de Python | Quieres estimaciones de costos locales alrededor de llamadas SDK existentes | llmkit-sdk |
| Envoltorio CLI | Tu cliente de OpenAI o Anthropic respeta su variable de entorno estándar de URL base | @f3d1/llmkit-cli |
| SDK de TypeScript | Tienes una clave existente y quieres sesiones, streaming y acceso a la puerta de enlace desde TypeScript | @f3d1/llmkit-sdk |
| Servidor MCP | Quieres herramientas de gasto, presupuesto y sesiones de codificación locales dentro de un cliente MCP | @f3d1/llmkit-mcp-server |
| Proveedor de SDK de IA | Usas Vercel AI SDK 6 | @f3d1/llmkit-ai-sdk-provider |
| Puerta de enlace y panel | Necesitas presupuestos compartidos, enrutamiento de proveedores, recibos y análisis | packages/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
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ón | Evidencia en este repositorio | Límite |
|---|---|---|
| La admisión de presupuesto concurrente está serializada | Los fixtures de Worker ejercitan reservas en competencia, reintentos, liquidación y recuperación | Prueba local determinista de Worker y base de datos |
| El comportamiento de reintento evita envíos duplicados | Las pruebas de idempotencia cubren discrepancia de payload, liberación previa al envío y estado indeterminado posterior al envío | El comportamiento del proveedor se simula en CI |
| Las respuestas grandes del proveedor están limitadas | Los fixtures de SSE de éxito, error y no terminados verifican el rechazo y la cancelación del stream | El límite es por respuesta almacenada en búfer o marco SSE |
| Los artefactos de precios son reproducibles | Un generador y la ruta de CI --check cubren todas las tablas de idiomas publicadas | Los valores del catálogo aún requieren actualizaciones de la fuente |
| La recuperación alojada se puede evaluar de forma segura | El despliegue de staging protegido y los runners de prueba vinculan un Worker aislado, base de datos, revisión y diario de limpieza | No 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
| Documento | Qué abarca |
|---|---|
| Gobernanza | Autoridad de decisión, roles, disputas y la brecha de continuidad actual |
| Hoja de ruta | Trabajo previsto y excluido hasta agosto de 2027 |
| Arquitectura | Componentes, flujos de solicitudes, identidad, almacenamiento, despliegue y límites de fallos |
| Seguridad | Requisitos de seguridad, garantías excluidas, informes y versiones compatibles |
| Aseguramiento de seguridad | Modelo de amenazas, límites de confianza, evidencia ejecutable, riesgos residuales y HOLDs en tiempo de ejecución |
| Accesibilidad | Controles del sitio público, método de verificación, brechas conocidas y alcance de idiomas |
| Contribución | Configuració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.