Cómo funciona
Qué lee el CLI, qué manda y cómo la entrega aguanta fallas de red sin perder datos.
El trabajo se parte en dos. Todo lo que toca tus archivos corre en tu máquina. TallyGraph solo recibe registros de uso normalizados por HTTPS, autenticados con tu token de escritura.
Una corrida de collect
- Descubrir. Revisa la ruta por defecto de cada agente compatible.
- Leer. Interpreta el historial y arma un evento por llamada al modelo: modelo, tokens (entrada, salida, lectura y escritura de caché), hora y un
external_idestable. - Spool. Guarda los eventos en una cola SQLite local en
~/.tallygraph(oTALLYGRAPH_STATE_DIR), con tope de 100,000 filas pendientes. - Enviar. Manda lotes con
Authorization: Bearery reintenta hasta cinco veces. Las filas aceptadas se borran. Las que la API rechaza por inválidas se apartan con el motivo, para que una fila mala no frene al resto. - Ingesta. La API valida cada campo y cuenta los
external_idrepetidos como duplicados en vez de guardarlos dos veces. Volver a correr collect siempre es seguro. - Reporte. Tras una entrega exitosa el CLI publica un reporte de runtimes (id de instalación y versiones) para que el workspace marque runtimes malos. Si falla avisa, pero el código de salida sigue en 0.
Qué se manda y qué se queda en tu máquina
| Se manda a TallyGraph | Se queda en tu máquina |
|---|---|
| Nombre del modelo y proveedor | Prompts y respuestas |
| Conteo de tokens y costo | Código fuente y contenido de archivos |
| Hora, ids de sesión y de request | Entradas y salidas de herramientas |
| Nombres de las herramientas usadas (por ejemplo Edit, Bash) | Rutas completas y rama de git, salvo que uses --include-paths |
| Nombre de la carpeta del proyecto (solo el último segmento) | API keys y credenciales |
| Versiones de los runtimes (este CLI, Node, los CLIs de los agentes) y un id de instalación aleatorio | Tu nombre y correo |
El servidor también lo hace cumplir. Los metadatos tienen un tope de 8 KB, y la API rechaza cualquier evento cuyos metadatos traigan llaves como prompt, messages, content, transcript o apikey.
Modo servicio
service install registra collect --watch en el programador nativo: un agente de launchd en macOS, una unidad systemd --user en Linux, una tarea del Programador de tareas en Windows. Corre con tu usuario, no como root. Cambia el periodo con --interval (segundos, mínimo 30).
Captura en vivo con tap
Para casi todos basta con el historial. Si un agente no guarda el uso localmente, o lo quieres en tiempo real, tallygraph tap levanta un proxy local y apunta el cliente hacia él.
tallygraph tap -- claude # o, para cualquier cliente: tallygraph tap --provider openai --no-launch export OPENAI_BASE_URL=http://127.0.0.1:<puerto>