LLMKit

Servidor MCP de rastreamento de custos de IA com 11 ferramentas para análise de gastos, controle de orçamento e custos de sessão no Claude Code, Cursor e Cline.

Documentação

LLMKit

Meça o custo dos seus agentes de IA. Interrompa requisições antes que excedam o orçamento.

CI PyPI npm OpenSSF Scorecard OpenSSF Best Practices MIT license

Site | Documentação | API de Preços | Arquitetura | Segurança | Caso de Garantia

LLMKit é um gateway de IA de código aberto e um conjunto de SDKs para atribuição de custos, admissão de orçamento e evidência de requisições. O gateway reserva o gasto estimado antes do envio ao provedor. Ele rejeita requisições que não cabem no orçamento ativo e, em seguida, liquida as reservas admitidas para o uso real quando a resposta é concluída.

O repositório também inclui superfícies de rastreamento local que não exigem conta LLMKit ou proxy.

Escolha uma superfície

SuperfícieUse quandoPacote
Transporte PythonVocê quer estimativas de custo locais em torno de chamadas de SDK existentesllmkit-sdk
Wrapper de CLISeu cliente OpenAI ou Anthropic respeita a variável de ambiente padrão de URL base@f3d1/llmkit-cli
SDK TypeScriptVocê tem uma chave existente e quer sessões, streaming e acesso ao gateway a partir do TypeScript@f3d1/llmkit-sdk
Servidor MCPVocê quer ferramentas de gasto, orçamento e sessão de codificação local dentro de um cliente MCP@f3d1/llmkit-mcp-server
Provedor de SDK de IAVocê usa o Vercel AI SDK 6@f3d1/llmkit-ai-sdk-provider
Gateway e painelVocê precisa de orçamentos compartilhados, roteamento de provedores, recibos e análisespackages/proxy, packages/dashboard

Início rápido

Rastreamento local em 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}")

O transporte lê os metadados de uso do provedor e estima o custo a partir do catálogo de preços incluído. Ele não envia dados de rastreamento para o LLMKit.

Rastreamento via CLI sem código

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

Use -v para saída por requisição ou --json para resultados legíveis por máquina.

Modo gateway (chave existente)

Os exemplos de gateway exigem uma chave de API LLMKit existente. A criação de contas e o gerenciamento de chaves estão temporariamente indisponíveis enquanto o serviço autenticado é restaurado. Se você ainda não tem uma chave, use um dos caminhos de rastreamento local acima.

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."}],
)

O caminho do orçamento

LLMKit autentica cada requisição, reserva seu custo estimado, rejeita requisições acima do orçamento antes do envio ao provedor e liquida as requisições admitidas para o uso real.

O caminho de controle é construído em torno de três limites:

  • Admissão atômica: um Durable Object é dono do estado de reserva para cada escopo de orçamento. Requisições concorrentes não podem gastar o mesmo saldo restante.
  • Idempotência ciente do envio: falhas determinísticas antes do envio liberam a chave. Depois que o envio ao provedor pode ter ocorrido, as falhas permanecem terminais para evitar gastos duplicados.
  • Respostas limitadas: corpos não transmitidos em streaming e frames SSE individuais têm limites explícitos de bytes. LLMKit cancela leituras upstream quando um limite é excedido.

Os recibos de requisição vinculam a decisão de admissão, a tentativa do provedor, a liquidação e a transferência de análises com identificadores estáveis. As gravações no banco de dados usam um outbox, para que uma interrupção de análises não apague silenciosamente as evidências de orçamento.

Servidor MCP

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

Cinco ferramentas locais inspecionam sessões suportadas do Claude Code e dados de tarefas do Cline sem uma chave LLMKit. Seis ferramentas de gateway consultam gastos, orçamentos, chaves, sessões e saúde do serviço quando LLMKIT_API_KEY contém uma chave existente. Juntas, elas expõem 11 ferramentas.

Dados de preços

O catálogo fixado é um instantâneo de referência incluído, não uma cotação ao vivo. Um arquivo de origem, packages/shared/pricing.json, registra a data do instantâneo e gera as tabelas TypeScript, Python e MCP. A CI rejeita divergências entre os arquivos de origem e os gerados. O site público renderiza apenas tabelas de provedores preenchidas e exibe a data da origem.

O endpoint público de comparação não exige conta:

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

O endpoint precifica apenas as chaves exatas de modelo fornecidas pelo chamador. Ele não procura nem recomenda o modelo mais barato. O preço é uma estimativa, não uma fatura do provedor. As regras de cobrança do provedor, a modalidade do modelo e a atualização do catálogo permanecem parte do limite de erro.

Evidências e limite atual

AfirmaçãoEvidência neste repositórioLimite
A admissão concorrente de orçamento é serializadaFixtures do Worker exercitam reservas concorrentes, novas tentativas, liquidação e recuperaçãoProva determinística local de Worker e banco de dados
O comportamento de nova tentativa evita envio duplicadoTestes de idempotência cobrem incompatibilidade de payload, liberação pré-envio e estado indeterminado pós-envioO comportamento do provedor é simulado na CI
Respostas grandes do provedor são limitadasFixtures de SSE de sucesso, erro e não terminadas verificam rejeição e cancelamento de streamO limite é por resposta em buffer ou frame SSE
Os artefatos de preços são reproduzíveisUm gerador e o caminho de --check da CI cobrem todas as tabelas de idiomas publicadasOs valores do catálogo ainda exigem atualizações de origem
A recuperação hospedada pode ser avaliada com segurançaImplantação de staging protegida e executores de prova vinculam um Worker isolado, banco de dados, revisão e registro de limpezaUm recibo concluído de concorrência hospedada e recuperação de interrupção não é reivindicado aqui

Consulte STAGING_PROOF.md para o contrato de prova hospedada isolado. Ele recusa deliberadamente alvos de produção e worktrees sujos.

Política e design do projeto

DocumentoO que ele abrange
GovernançaAutoridade de decisão, papéis, disputas e a lacuna de continuidade atual
RoteiroTrabalho pretendido e excluído até agosto de 2027
ArquiteturaComponentes, fluxos de requisição, identidade, armazenamento, implantação e limites de falha
SegurançaRequisitos de segurança, garantias excluídas, relatórios e versões suportadas
Garantia de segurançaModelo de ameaças, limites de confiança, evidências executáveis, riscos residuais e HOLDs em tempo de execução
AcessibilidadeControles do site público, método de verificação, lacunas conhecidas e escopo de idioma
ContribuiçãoConfiguração, portões de qualidade, expectativas de revisão e assinatura DCO

Desenvolvimento

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

Execute o Worker localmente com bindings somente de desenvolvimento:

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

Comandos genéricos de implantação são omitidos intencionalmente. Staging e produção usam scripts protegidos separados com confirmação explícita de alvo.

Segurança

As credenciais do provedor são criptografadas com AES-256-GCM usando um IV aleatório e dados autenticados adicionais vinculados ao proprietário/provedor. As chaves de API LLMKit são hash antes do armazenamento. A CI inclui varredura de segredos, análise estática, revisão de dependências, CodeQL e verificações de proveniência de pacotes.

Leia a política de segurança e arquitetura e o instantâneo de Security Insights legível por máquina. Por favor, relate vulnerabilidades por meio do relatório privado de vulnerabilidades do GitHub ou envie um e-mail para security@llmkit.sh.

Licença

MIT