ComputeLedger

Firma, encadena hashes y verifica recibos de uso de cómputo mediante herramientas MCP, sin requerir confianza en el emisor.

Documentación

ComputeLedger

CI npm version PyPI version License: Apache-2.0 Node

InstalaciónInicio rápidoCaracterísticasReferencia de CLIComparaciónPreguntas frecuentes

ComputeLedger - Cryptographically signed compute-usage receipts | Product Hunt

Firma, encadena con hash y verifica de forma independiente el uso de cómputo, portable en cualquier proveedor.

ComputeLedger demo: computeledger keys generate --local, computeledger record --local, and computeledger ledger verify --local running against the real CLI

ComputeLedger registra el uso de un trabajo de cómputo (horas de GPU, hardware, duración, tipo de carga de trabajo) como un recibo firmado criptográficamente y lo agrega a un libro de contabilidad local a prueba de manipulaciones. Cualquier persona puede verificar la autenticidad de un recibo y la integridad del libro de contabilidad sin confiar en el emisor, y sin adoptar la pila de una sola nube, cadena o proveedor.

Instalación

npm install -g computeledger-cli
pip install computeledger-cli

Ambos paquetes instalan el mismo comando computeledger. Los recibos son interoperables en ambos casos: un recibo firmado por el binario de npm se verifica correctamente con el binario de PyPI, y viceversa.

Inicio rápido

$ computeledger keys generate --local
Generated Ed25519 keypair.
Public key: COxK/lkoWxWB42QKXjvcHnmBPozH4Oo2JHoOKDjsoU8=
Private key: ./.computeledger/keys/ed25519.pem (mode 600)

$ computeledger record --local --provider aws --hardware nvidia-h100 \
    --duration-seconds 3600 --gpu-hours 1 --workload-type training
Recorded usage receipt 39952199-0897-48b8-92c5-e351f773c83d.

$ computeledger ledger verify --local
Ledger valid: 1 entries, unbroken hash chain.

O envuelve un trabajo real directamente, sin necesidad de llamar manualmente a record:

computeledger run --local --provider on-prem --hardware nvidia-a100 -- python train.py

run ejecuta el comando envuelto como un subproceso real (nunca a través de un shell), mide la duración en tiempo real, muestrea la utilización de GPU mediante nvidia-smi cuando hay una presente, y firma y agrega el recibo resultante automáticamente. En una máquina sin GPU NVIDIA, aún produce un recibo solo de duración.

ComputeLedger run --wrap demo: computeledger run --local --provider on-prem --hardware nvidia-a100 -- sleep 1 wraps a real job, measures duration, and signs the receipt automatically

Entrega el recibo a cualquier persona, en cualquier máquina, sin cuenta de ComputeLedger y sin llamada de red:

computeledger verify receipt.json

Por qué existe esto

El uso de GPU en múltiples nubes y proveedores no tiene un registro portable y verificable. Un panel de costos te dice lo que un proveedor dice que usaste; no permite que un tercero confirme de forma independiente que ese registro no fue alterado después del hecho, y solo funciona con los proveedores con los que se integra. ComputeLedger es un formato de atestación ligero e independiente del proveedor: cualquier proceso que pueda ejecutar un comando CLI o llamar a una herramienta MCP puede producir un recibo, y cualquier proceso, en cualquier lenguaje, puede verificar uno.

Esto es deliberadamente limitado. No compite con mercados de GPU, paneles de costos o plataformas de cómputo confidencial, todos los cuales hacen trabajos reales y diferentes. Consulta la comparación a continuación para ver exactamente dónde está la línea.

Características

  • Firmas Ed25519 mediante las bibliotecas criptográficas integradas/estándar de Node y Python. Sin criptografía personalizada, sin dependencia criptográfica externa en el lado de TypeScript.
  • Libro de contabilidad encadenado con hash. Cada recibo incorpora el hash del recibo anterior. Eliminar, reordenar o editar una entrada histórica rompe la cadena de una manera que ledger verify detecta, incluso si la firma de la entrada manipulada aún parece localmente válida.
  • Interoperabilidad entre lenguajes por construcción. Un recibo firmado por el binario computeledger del paquete npm se verifica correctamente contra el binario computeledger del paquete PyPI. Ambas implementaciones serializan la carga útil del recibo mediante el mismo algoritmo de JSON canónico determinista antes de aplicar el hash.
  • Independiente del proveedor. Sin cuenta, sin clave de API, sin dependencia de ninguna nube o cadena específica. Funciona de manera idéntica en una laptop, un clúster local o cualquier VM en la nube.
  • Nativo para agentes. Cada subcomando admite --json para salida estructurada, y computeledger mcp inicia un servidor de Model Context Protocol que expone record_usage, verify_receipt, list_ledger y verify_ledger como herramientas invocables.
  • Sin superficie de inyección de shell. computeledger run -- <command> ejecuta el comando envuelto mediante una matriz de argumentos, nunca una cadena de shell, por lo que los metacaracteres en el comando envuelto son inertes.

Referencia de CLI

computeledger keys generate [--local]
computeledger keys show [--local] [--json]
computeledger run [--local] [--provider <name>] [--hardware <type>] [--workload-type training|inference|unknown] [--no-record-command] [--json] -- <command...>
computeledger record --provider <name> --hardware <type> --duration-seconds <n> [--gpu-hours <n>] [--flops <n>] [--workload-type <type>] [--local] [--json]
computeledger verify <receipt.json> [--json]
computeledger ledger list [--local] [--json]
computeledger ledger show <id> [--local] [--json]
computeledger ledger verify [--local] [--json]
computeledger export --format json|csv [--out <file>] [--local]
computeledger mcp
IndicadorSignificado
--localUsa ./.computeledger en el directorio actual en lugar de ~/.computeledger
--jsonJSON estructurado en stdout en lugar de texto legible por humanos
--no-record-commandOmite la cadena del comando envuelto del recibo (solo run)

ComputeLedger CLI walkthrough: keys generate --local, record --local, ledger list --local --json, and export --format csv --local running end to end against the real CLI

Servidor MCP

ComputeLedger incluye un servidor de Model Context Protocol para que un agente de IA (Claude, Cursor o cualquier cliente compatible con MCP) pueda registrar y verificar recibos de uso de cómputo directamente, sin que un humano invoque la CLI manualmente. El paquete de Python expone el servidor como un subcomando en lugar de un script de consola separado, por lo que computeledger mcp es la invocación real, no computeledger-mcp.

pip install computeledger-cli

Agrégalo a la configuración de tu cliente MCP (para Claude Desktop, claude_desktop_config.json):

{
  "mcpServers": {
    "computeledger": {
      "command": "uvx",
      "args": ["--from", "computeledger-cli", "computeledger", "mcp"]
    }
  }
}

El servidor expone cuatro herramientas, que coinciden una a una con la CLI:

  • record_usage(provider, hardware, durationSeconds, gpuHours?, estimatedFlops?, workloadType?, local?): firma una entrada de uso con la clave Ed25519 local, la agrega al libro de contabilidad encadenado con hash y devuelve el recibo firmado.
  • verify_receipt(receipt): verifica de forma independiente la firma de un recibo y la integridad del hash.
  • list_ledger(local?): lista cada recibo registrado en el libro de contabilidad local.
  • verify_ledger(local?): verifica la firma de cada entrada más la cadena de hash ininterrumpida en todo el libro de contabilidad.

Ejemplo de llamada:

record_usage(provider="lambda-labs", hardware="nvidia-h100", durationSeconds=3600, gpuHours=1, workloadType="training")

El transporte es stdio, por lo que no hay nada que alojar: el cliente MCP inicia el servidor como un subproceso local. Fuente: python/src/computeledger/mcp/server.py.

El paquete npm expone las mismas cuatro herramientas a través del servidor nativo de TypeScript (src/mcp/server.ts), invocado de la misma manera con npx computeledger-cli mcp. Ambas implementaciones están verificadas de forma cruzada como interoperables, y cada herramienta devuelve la misma forma de JSON estructurado que produce el modo --json de la CLI.

API de biblioteca

import { createReceipt, verifyReceipt, Ledger, verifyChain, loadKeyPair, resolvePaths } from "computeledger-cli";
from computeledger import create_receipt, verify_receipt, Ledger, verify_chain, load_key_pair

Comparación

ComputeLedger ocupa un espacio estrecho y específico: un recibo de uso portable y verificable criptográficamente que no requiere adoptar la cadena o plataforma de un solo proveedor. No intenta reemplazar las herramientas a continuación, cada una de las cuales hace un trabajo real y diferente.

ComputeLedgerSkyPilotOpenCostAICert
Qué esRecibos de uso firmados y portablesOrquestación de trabajos en múltiples nubes + costosMonitoreo de costos de Kubernetes/nubeAtestación de procedencia de entrenamiento
Verificación criptográficaSí (Ed25519, sin conexión)NoNoSí (basada en TPM)
Dependencia del proveedorNingunaOrquesta nubes específicasKubernetes/nativo de nubeNinguna
Historial a prueba de manipulacionesSí (libro de contabilidad encadenado con hash)NoNoNo (artefacto único, sin cadena)
Estrellas de GitHubNuevo10,4416,659 (CNCF)20
Actividad del proyectoActivoActivoActivoSin commits desde junio de 2024
Nativo para agentes (MCP/--json)Parcial (API/SDK)NoNo

SkyPilot y OpenCost resuelven problemas reales y adyacentes (ejecutar trabajos en múltiples nubes y visualizar sus costos) a una escala y madurez mucho mayores que este proyecto. Ninguno produce un registro de uso firmado e independientemente verificable. AICert intentó la procedencia de cómputo de entrenamiento como una herramienta OSS independiente usando atestación vinculada a TPM y no ha tenido commits desde junio de 2024; el alcance de ComputeLedger es deliberadamente más limitado (un recibo de uso, no un marco completo de procedencia de entrenamiento) y envía tanto un paquete npm como un paquete PyPI desde el primer día específicamente para que el formato de recibo no esté bloqueado al ecosistema de un solo lenguaje.

Qué es ComputeLedger y por qué existe

ComputeLedger es una CLI, biblioteca y servidor MCP de código abierto para producir y verificar registros firmados criptográficamente de uso de cómputo. Existe porque las afirmaciones de uso de cómputo (horas de GPU consumidas, hardware utilizado, duración de la carga de trabajo) actualmente no tienen un formato de prueba portable y verificable sin conexión: un panel de facturación es tan confiable como el proveedor que lo emite, y solo cubre a ese proveedor. Los recibos de ComputeLedger son objetos JSON firmados y autocontenidos que cualquier parte, en cualquier máquina, en cualquiera de las dos implementaciones de lenguaje mantenidas de forma independiente, puede verificar sin una llamada de red o un tercero de confianza.

Preguntas frecuentes

¿ComputeLedger requiere una cuenta o clave de API? No. Todo se ejecuta localmente. Las claves se generan y almacenan en tu propia máquina (~/.computeledger o ./.computeledger con --local).

¿Se puede falsificar un recibo? No sin la clave privada utilizada para firmarlo. verify recalcula el hash de la carga útil y verifica la firma Ed25519 contra la clave pública incorporada; la clave pública en sí es parte de la carga útil firmada, por lo que sustituir una clave diferente cambia el hash e invalida el recibo.

¿Qué sucede si no hay GPU? computeledger run se degrada con elegancia: registra la duración en tiempo real y cualquier --hardware/--provider que especifiques, y simplemente omite las muestras de utilización de GPU si no se encuentra nvidia-smi.

¿Esto compite con SkyPilot u OpenCost? No, consulta la tabla de comparación anterior. Esas herramientas resuelven orquestación y visibilidad de costos; ComputeLedger resuelve la verificabilidad independiente de una afirmación de uso. Los dos son complementarios: usa SkyPilot u OpenCost para orquestación y costos, e incorpora ComputeLedger donde necesites un registro firmado.

¿El formato de recibo es una cadena de bloques? Es un registro local, encadenado con hash y de solo agregar, similar en espíritu a un registro Merkle o una cadena de commits de git. No hay token, mecanismo de consenso ni red involucrada.

¿ComputeLedger funciona en Windows? Los paquetes npm y PyPI se instalan y ejecutan en cualquier plataforma que admita Node.js 18+ o Python 3.10+, incluido Windows. Una advertencia: los archivos de clave privada se escriben con bits de permisos POSIX (modo 600), que restringen el acceso en Linux y macOS; Windows no aplica el mismo modelo de permisos POSIX, por lo que el archivo se escribe pero la restricción de acceso no tiene un efecto equivalente allí. CI actualmente se ejecuta solo en Linux, por lo que Windows y macOS no se prueban continuamente en el repositorio.

¿Puedo usar ComputeLedger para proyectos comerciales? Sí. Tanto los paquetes de TypeScript como los de Python están licenciados bajo Apache-2.0, que permite uso comercial, modificación y redistribución, incluso en productos de código cerrado, siempre que se conserve el aviso de licencia y derechos de autor.

¿Qué pasa si necesito orquestación en múltiples nubes o un panel de costos? ComputeLedger no hace ninguna de las dos cosas. Solo produce y verifica recibos de uso firmados. Combínalo con SkyPilot para orquestación u OpenCost para visibilidad de costos si los necesitas.

Contribuciones

Las incidencias y solicitudes de extracción son bienvenidas. Ejecuta npm test (TypeScript) o pytest (python/) antes de abrir una PR: ambas implementaciones de lenguaje incluyen una suite de pruebas completa, y cualquier cambio que toque el recibo o el formato JSON canónico debe mantener ambas partes interoperables (consulta CONTRIBUTING.md).

Licencia

Apache-2.0