Documentación · versión 2.0.0

AgentBoard, de punta a punta

Documentación de AgentBoard, un proyecto de .

Todo lo que hace la app y cómo lo hace: qué lee de cada agente, qué muestra cada apartado, con qué fórmulas calcula el coste, cómo vigila los logs en vivo, qué guarda en disco, cuánto tarda y cómo consultarlo desde otro agente con el servidor MCP.

  • Tauri 2
  • Rust
  • React 19
  • SQLite
  • MCP 22 herramientas
  • Licencia MIT

Empezar

Qué es AgentBoard

Una app de escritorio que reúne en un panel el coste y la actividad de tus agentes de código: Claude Code, Codex, GitHub Copilot CLI, Cursor CLI, Gemini CLI y OpenCode. Lee los logs que esos agentes ya guardan en tu ordenador, los cruza y responde cuánto llevas gastado, qué modelo te sale más caro y en qué se va el tiempo del agente.

  • Local y privado

    Sin proxy, sin claves de API y sin telemetría. Nada sale de tu equipo.

  • Solo lectura

    Lee los logs que ya existen; no toca ni interfiere con el trabajo de los agentes.

  • En vivo

    Lo que escribe un agente aparece en menos de medio segundo, con 0 % de CPU en reposo.

  • Para otros agentes

    Un servidor MCP deja que un agente consulte estos datos en mitad de una conversación.

Para qué sirve

  • Controlar el gasto: coste del día y del mes, proyección a fin de mes y aviso al acercarte al presupuesto.
  • Entender el uso: qué agente y qué modelo usas más, y con qué aprovechamiento de la caché.
  • Ver en qué trabajas: reparto por actividad (coding, testing, debugging…), por proyecto y por rama de git.
  • Detectar fricción: qué herramientas, comandos y servidores MCP fallan más.
  • Preguntárselo a tu agente gracias al servidor MCP incluido.

Funciona en Linux, Windows y macOS con un único binario nativo, en español, inglés, portugués y francés.

Empezar

Instalación

Descarga el instalador de tu sistema desde la última versión publicada. Todos incluyen la app y el servidor MCP.

SistemaArchivos
Linux x86_64AgentBoard-App_<v>_linux_x86_64.AppImage, .deb o .rpm
Windows x64AgentBoard-App_<v>_windows_x64-setup.exe o _windows_x64.msi
macOS universalAgentBoard-App_<v>_macos_universal.dmg (Intel y Apple Silicon)
Solo el MCPAgentBoard-MCP_<v>_linux_x86_64, _windows_x64.exe o _macos_universal

Linux

  • .deb / .rpm: sudo apt install ./archivo.deb o sudo dnf install ./archivo.rpm. La app queda en el menú y el MCP en /usr/bin/agentboard-mcp.
  • AppImage: no se instala; dale permiso de ejecución y ábrelo. Es la mejor opción en distribuciones inmutables (Bazzite, Silverblue…).
  • Requiere WebKitGTK 4.1, presente en cualquier escritorio moderno.
chmod +x AgentBoard-App_*_linux_*.AppImage
./AgentBoard-App_*_linux_*.AppImage

Si tu sistema no tiene FUSE, lánzalo con APPIMAGE_EXTRACT_AND_RUN=1, o extráelo con --appimage-extract y ejecuta squashfs-root/AppRun. El AppImage publicado ya viene corregido para que la ventana no salga en blanco con Mesa reciente (Fedora, Bazzite, Arch).

Windows y macOS

Binarios sin firmar

La primera vez el sistema pedirá confirmación. En Windows: SmartScreen → «Más información» → «Ejecutar de todas formas». En macOS: clic derecho sobre la app → «Abrir».

Actualizar y desinstalar

Para actualizar, instala la versión nueva encima o sustituye el AppImage. Para desinstalar, quítala con el gestor de tu sistema; si no quieres dejar rastro, borra también la carpeta de ajustes y la de la caché (ver Caché y datos).

Empezar

Primeros pasos

  1. Ábrela

    Detecta sola los agentes instalados y lee sus logs. La primera vez lee todo el historial y crea la caché; las siguientes solo lee lo nuevo y arranca al instante.

  2. Elige el periodo

    Hoy, 7, 30, 60 o 90 días, o todo (por defecto, 30 días). Si quieres, filtra por agente o proyecto.

  3. Mira el Resumen

    Coste, sesiones, cache hit, ahorro por caché, burn rate y gasto del mes, cada uno con su variación frente al periodo anterior.

  4. Baja al detalle

    Entra en un apartado desde el panel lateral o con Ctrl K para ver su tabla, sus gráficos y su vista ampliada.

  5. Pon tus presupuestos

    En Precios y presupuestos, para recibir avisos al 80 % y al 100 %.

  6. Déjala en la bandeja

    Al cerrar la ventana sigue funcionando en segundo plano. Para salir del todo, «Salir» en el menú de la bandeja.

Empezar

Agentes compatibles

Un agente aparece si está instalado (su ejecutable está en el PATH o existe su carpeta), aunque todavía no tenga sesiones. Sus datos salen en cuanto existan.

AgenteDónde leeVariable
Claude Code~/.claude/projects/**/*.jsonl$CLAUDE_CONFIG_DIR
Codex CLI~/.codex/sessions y archived_sessions, archivos rollout-*.jsonl$CODEX_HOME
GitHub Copilot CLI~/.copilot/session-state/*/events.jsonl$COPILOT_HOME
Cursor CLI~/.cursor/projects/*/agent-transcripts/*/*.jsonl—
Gemini CLI~/.gemini/tmp/*/chats/session-*.jsonl$GEMINI_CLI_HOME (añade .gemini)
OpenCodeSu base SQLite opencode.db, en solo lectura—

Los nombres de herramientas de cada agente se traducen a unos comunes (Bash, Read, Edit, Write, Grep, Agent…) para poder compararlos. Los nombres de modelo también se normalizan: minúsculas, sin prefijo de proveedor, sin sufijos como [1m] o una fecha, y con los puntos de Claude convertidos en guiones (claude-opus-4.7 → claude-opus-4-7).

Particularidades de cada agente

Claude Code
El proyecto es el primer directorio de trabajo de la sesión. Cuenta tokens de entrada, salida, lectura y escritura de caché (separando la de 1 hora) y razonamiento. Los turnos se agrupan por prompt, los subagentes se enlazan a su sesión y detecta compactaciones e interrupciones.
Codex CLI
Su entrada incluye la caché, así que AgentBoard resta lo cacheado para no contarlo dos veces. Soporta el formato nuevo y el antiguo, detecta subagentes y compactaciones, y convierte sus herramientas MCP a mcp__servidor__herramienta.
GitHub Copilot CLI
Solo da la salida de cada respuesta; la entrada y la caché llegan sumadas por modelo al cerrar la sesión. AgentBoard reparte ese total a partes iguales entre las respuestas de ese modelo. Sus subagentes cuentan como herramienta, no como llamadas de subagente.
Cursor CLI
No registra tokens ni modelo: los tokens se estiman (4 caracteres ≈ 1 token, como salida) y el modelo queda como cursor-auto, sin precio, así que cuesta $0. La hora sale de la fecha del archivo o de la que trae el prompt, y el proyecto se deduce del nombre de la carpeta.
Gemini CLI
El proyecto sale de sus metadatos o de ~/.gemini/projects.json. El razonamiento («thoughts») se suma a la salida. También lee el formato antiguo de un único .json.
OpenCode
Lee su base de datos en solo lectura, de forma incremental. Si trae su propio coste, se usa cuando el modelo no tiene precio. Sus herramientas MCP se reconocen con la configuración de ~/.config/opencode/opencode.json(c).

Los proyectos se nombran por la última carpeta de su ruta. Los worktrees que crea Claude Code (…/.claude/worktrees/…) se agrupan con su repositorio.

Usar la app

El Resumen

Resumen con los seis KPI, el gasto diario por agente y «Hoy en directo»
El Resumen, con el periodo de 30 días y la comparación activa.

Los seis KPI

KPIQué muestra
CosteUSD del periodo y número de llamadas
SesionesNúmero de sesiones y coste por sesión
Cache hitPorcentaje de entrada servida desde caché, con tokens leídos y escritos; la variación va en puntos
Ahorro por cachéLo que habría costado esa entrada a precio normal
Burn rateGasto de los últimos 60 minutos, en USD/hora
Gasto del mesLo gastado y la proyección a fin de mes; con presupuesto, el porcentaje usado y si lo superará

Cada KPI muestra su variación: «▲ 18 %», «▼ 4 %», «= 0 %» si cambia menos de medio punto, o «nuevo» si antes era cero. Si la proyección supera el presupuesto mensual aparece un aviso bajo los KPI.

Gasto diario

Columnas apiladas por agente, con el total de cada uno en la leyenda y la línea discontinua del periodo anterior. Con «Hoy» pasa a 24 barras por hora, y si el rango supera 400 días se agrupa por meses.

Hoy en directo

  • Siempre muestra hoy, sea cual sea el periodo (respeta los filtros de agente y proyecto).
  • Gasto desde las 00:00 y su variación frente a ayer a la misma hora.
  • Ritmo de la última hora en $/h y gasto por hora del día.
  • «Activa ahora» si una sesión tuvo actividad en los últimos 15 minutos; si no, «Última sesión · hace X». Un clic abre su detalle.
  • Se refresca con cada dato nuevo y cada 30 segundos, solo si la ventana está visible.

Los tres paneles inferiores

  • Top proyectos (o top ramas, si filtras un solo proyecto): seis filas con coste, variación y barra.
  • Top modelos, con un aviso si hay modelos sin precio y un enlace para completarlos.
  • En qué se va el gasto: reparto por actividad y la tasa 1-shot global.

Usar la app

Los apartados

Cada apartado tiene tres KPI, una tabla ordenable por cualquier columna, gráficos y un botón «‹ Volver al resumen». Los gráficos de ranking y evolución dejan elegir la métrica y agrupan lo que no cabe en «Otros». Las tablas de más de 200 filas solo dibujan lo que se ve.

ApartadoKPITabla y gráficos
Daily ActivityCoste del periodo, media por día activo, día más caroUna fila por día con coste, llamadas, sesiones, entrada, salida y cache hit. Gráfico por coste, llamadas o tokens de salida, total o por agente o actividad; acumulado del periodo; gasto por hora del día con la hora pico.
By AgentCoste, llamadas, agente principalCoste, llamadas, sesiones, $/sesión y cache hit por agente; reparto, ranking y evolución.
By ProjectCoste, sesiones, proyecto principalCoste, $/sesión, sesiones, llamadas y overhead de contexto por proyecto. Con un solo proyecto filtrado se convierte en By Branch.
By ModelCoste, llamadas, modelo principalCoste, llamadas, sesiones, cache hit y 1-shot por modelo.
By ActivityCoste y $/turno, 1-shot global, actividad principalCoste, turnos, $/turno, turnos con edición y 1-shot por actividad; evolución y 1-shot por actividad.
ToolsLlamadas, % con error, más usadaUsos, errores y % de error de cada herramienta nativa (sin las MCP), hasta 50. Más del 5 % de error se marca.
Shell CommandsIgual que ToolsEl programa de cada comando (separando |, &&, ;…, sin sudo, env, timeout ni variables), hasta 50.
Skills & AgentsCoste, número, el más caroSkills y subagentes invocados, con usos, coste de la respuesta que los lanzó y $/uso.
MCP ServersIgual que ToolsUso y errores por servidor MCP.
Agent TypesIgual que SkillsLo que gastan los subagentes por agente y tipo («general-purpose», «Explore»…).
Daily Activity con la tabla por día y el gráfico de gasto
Daily Activity: una fila por día.
By Agent con la tabla, el reparto y el ranking por agente
By Agent.
By Project con el coste, el overhead y el reparto por proyecto
By Project, con la columna de overhead de contexto.
Shell Commands con los comandos más usados y sus errores
Shell Commands.
Skills y Agents con los usos y el coste de cada skill
Skills & Agents.
MCP Servers con el uso y los errores por servidor
MCP Servers.
Agent Types con el coste de los subagentes por tipo
Agent Types.

Usar la app

Proyectos y sesiones

Listado de proyectos

  • KPI: coste medio por proyecto, el más caro y su porcentaje, tiempo activo total y cuántos tienen compactaciones.
  • Buscador por proyecto, ruta, rama, modelo o agente.
  • Vistas rápidas: Todos, Más caros (el 25 % superior), Con compactación y Con subagentes.
  • Columnas: proyecto, agentes, ramas, modelo principal, sesiones, tiempo activo, turnos, compactaciones, caché y coste.
Detalle de un proyecto con su coste acumulado, actividades y sesiones
Detalle de un proyecto.

Detalle de un proyecto

  • KPI: coste, sesiones ($/sesión), turnos ($/turno), tiempo activo, cache hit y compactaciones (marcado a partir de 3).
  • Coste acumulado por día, coste por actividad y por modelo.
  • Sesiones de 25 en 25, ordenables por inicio, agente, rama, modelo, duración, turnos, compactaciones o coste.
  • Ramas, y herramientas con su latencia típica (p50) y lenta (p95).
Detalle de una sesión con su coste acumulado y sus turnos
Detalle de una sesión.

Detalle de una sesión

  • Muestra la sesión entera, sin recortar por el periodo elegido.
  • KPI: coste, turnos, duración, cache hit, compactaciones (con su hora) y herramientas con su porcentaje de error.
  • Coste acumulado llamada a llamada, con las compactaciones marcadas en rojo.
  • Si tras una compactación cada turno cuesta al menos 1,2 veces más, lo avisa: «Tras la 3.ª compactación, cada turno cuesta X× más».
  • Turnos de 30 en 30: hora, actividad, las tres herramientas más usadas, entrada y salida, y coste. El texto del prompt no se guarda.
  • Latencia por herramienta.

Usar la app

Precios y presupuestos

Precios y presupuestos con la tabla de precios por modelo y los modelos sin precio
Precios y presupuestos.

Precios por modelo

  • Cinco precios por modelo, en USD por millón de tokens: entrada, salida, lectura de caché, escritura de caché de 5 minutos y de 1 hora.
  • Cada precio indica su origen: Por defecto, Editado, Coste del agente, Falta precio o Sin guardar.
  • Un cambio recalcula al momento todos los costes, en la app y en el servidor MCP, sin volver a leer los logs.
  • Los modelos sin precio cuentan como $0 y se avisan con «Completar precios», que te lleva al primer campo vacío.
  • Puedes añadir un modelo por nombre, descartar o restablecer cada uno, o restaurar todos los valores por defecto.
  • Se aceptan números con coma decimal; un campo vacío cuenta como 0.

Importar JSON

Carga los precios como borrador para revisarlos antes de guardar. Acepta una lista o un objeto por modelo:

[{ "model": "kimi-k2", "input": 0.6, "output": 2.5, "cacheRead": 0.15 }]

{ "kimi-k2": { "input": 0.6, "output": 2.5, "cacheWrite": 0, "cacheWrite1h": 0 } }

Presupuestos

  • Mensual y diario, en USD, con su barra de progreso (naranja desde el 80 %, roja desde el 100 %). El mensual se compara con la proyección del mes; el diario, con lo gastado hoy.
  • Por proyecto o por agente, en USD al mes, comparados también con su proyección.
  • Opciones: «Notificar al llegar al 80 %», «Notificar al superar el 100 %» y «Mostrar el gasto de hoy en la bandeja».

Los precios editados y los presupuestos se guardan en settings.json.

Usar la app

Ajustes

Diálogo de Ajustes con las pestañas Tema, Idioma, Datos y Exportar
Ajustes, pestaña Tema.
Tema
Sistema, Claro u Oscuro. El oscuro usa acento ámbar y el claro, azul.
Idioma
Sistema, Español, English, Português o Français. «Sistema» elige español, portugués o francés si es el idioma del sistema, y si no, inglés.
Datos
«Solo memoria» (no guarda caché en disco y la borra) y «Reconstruir caché» (borra los datos guardados y relee todos los logs). Ambas se aplican sin reiniciar.
Exportar
Las llamadas del filtro actual en CSV o JSON.

Los ajustes se guardan en settings.json:

SistemaCarpeta
Linux~/.config/agentboard/
macOS~/Library/Application Support/agentboard/
Windows%APPDATA%\agentboard\

Usar la app

Bandeja, avisos y atajos

Bandeja del sistema

  • Tooltip: «AgentBoard — este mes: $X (proyección $Y)», y el gasto de hoy si lo activas.
  • Menú: la línea «Hoy: $X», Panel de hoy, Mostrar AgentBoard y Salir.
  • Un clic en el icono abre el panel de hoy (en algunos escritorios Linux solo desde el menú).
  • Al cerrar la ventana la app sigue en segundo plano y mantiene los datos al día.
Panel de hoy de la bandeja con el gasto de hoy, el ritmo, la sesión activa y los proyectos de hoy
El panel de hoy de la bandeja.

El panel de hoy es una ventana pequeña que se abre junto al cursor (en Wayland, arriba a la derecha) y se oculta al perder el foco. Muestra «Hoy en directo», los cinco proyectos con más gasto hoy y un botón «Abrir AgentBoard».

Notificaciones

Avisos nativos del sistema: «Cerca del presupuesto» al 80 % y «Presupuesto superado» al 100 %. Ver Avisos de presupuesto.

Buscador Ctrl K

Ctrl K (o ⌘ K) abre un buscador para saltar a cualquier apartado o a Ajustes, dejar solo un proyecto en el filtro o abrir una de las 30 sesiones más recientes.

Adaptable

La interfaz funciona desde 600 px de ancho y el panel lateral se pliega.

Cómo calcula

Métricas y fórmulas

Coste de una llamada
(entrada × Pentrada + salida × Psalida + lectura de caché × Plectura + escritura de 5 min × P5 min + escritura de 1 h × P1 h) ÷ 1 000 000, con el precio vigente en la fecha de la llamada. Si el modelo no tiene precio se usa el coste que informe el agente, y si tampoco hay, 0.
Cache hit
Lectura de caché ÷ (entrada + lectura de caché + escritura de caché).
Ahorro por caché
Lectura de caché × (Pentrada − Plectura) ÷ 1 000 000.
Burn rate
Coste de las llamadas de los últimos 60 minutos, con tus filtros de agente y proyecto pero sin el de periodo. Al abarcar una hora, ya está en USD/hora.
Proyección del mes
Gastado este mes ÷ día del mes × días del mes, contando hoy como día completo.
Overhead de contexto
Media de los tokens de la primera llamada de cada sesión: lo que cuesta arrancar con el contexto del proyecto.
Turno
Un prompt tuyo y todo lo que hace el agente hasta el siguiente. Los subagentes no abren turnos.
1-shot
Un turno con ediciones es 1-shot si ninguna edición falla y ningún archivo se edita dos veces. La tasa es turnos 1-shot ÷ turnos con edición; por modelo se usa el modelo con más llamadas del turno.
Sesiones
Sesiones distintas, sin contar las de subagentes.
Compactaciones
Las registran Claude Code, Codex y Copilot. Cursor, Gemini y OpenCode no las informan.
Latencia
Tiempo entre el uso de una herramienta y su resultado; se resume con los percentiles 50 y 95.

Cómo calcula

Clasificación de actividades

Cada turno recibe una actividad según las herramientas que usó. Para algunas se mira también la intención del prompt, detectada con palabras clave en español e inglés («arregla», «fix», «añade», «implement», «qué te parece»…). Solo se guarda la etiqueta, nunca el texto. Se aplica la primera regla que se cumpla:

#Si el turno…Actividad
1Edita archivos y el prompt pide arreglar algoDebugging
1Edita archivos y el prompt pide algo nuevoFeature Dev
1Edita archivos en otro casoCoding
2Ejecuta tests (test, pytest, jest, vitest, mocha, rspec, cargo t, go t)Testing
3Compila o despliega (build, deploy, docker, podman, kubectl, terraform, make, gradle, mvn, npm ci, pip install…)Build/Deploy
4Solo usa git o ghGit
5Delega en un subagenteDelegation
6Usa cualquier otra herramientaExploration
7No usa herramientas y el prompt pide ideasBrainstorming
7No usa herramientas en otro casoConversation

Las llamadas de agentes que no registran turnos se clasifican por la herramienta: edición (Coding), shell (Testing o Shell), lectura y búsqueda (Exploration), web (Research), delegación (Delegation) u otra (General).

By Activity con el coste, los turnos y el 1-shot por actividad
By Activity.

Cómo calcula

Precios por defecto

USD por millón de tokens. Los de Claude y OpenAI salen de sus tablas oficiales (revisadas el 9 de octubre de 2026); los de Gemini son aproximados. No se modelan los recargos por contexto largo. Tus precios editados sustituyen a estos para todas las fechas.

ModeloEntradaSalidaLect. cachéEscr. 5 minEscr. 1 h
claude-fable-5-1, claude-mythos-5-110500,2512,520
claude-fable-5, claude-mythos-51050112,520
claude-opus-5-54200,2058
claude-opus-5, -4-8, -4-7, -4-6, -4-55250,56,2510
claude-opus-4-1, claude-opus-415751,518,7530
claude-sonnet-5-52100,12,54
claude-sonnet-52100,22,54
claude-sonnet-4-6, -4-5, -43150,33,756
claude-haiku-5-50,100,500,010,1250,20
claude-haiku-4-5150,11,252
claude-3-5-haiku0,840,0811,6
gpt-6-astra1050112,5—
gpt-6.1-sol2100,102,5—
gpt-6-sol2100,22,5—
gpt-6-luna0,100,500,010,125—
gpt-5.6-sol4200,405—
gpt-5.6-terra2120,202,5—
gpt-5.6-luna0,201,200,020,25—
gpt-5.5-pro30180———
gpt-5.55300,5——
gpt-5.3-codex1,75140,175——
gpt-5, gpt-5-codex, gpt-5.1, gpt-5.1-codex, -codex-max, gpt-5.2-codex1,25100,125——
gpt-5.1-codex-mini, gpt-5-mini0,2520,025——
gpt-5-nano0,050,40,005——
o3280,5——
o3-mini1,14,40,55——
o4-mini1,14,40,275——
codex-mini-latest1,560,375——
gemini-2.5-pro1,25100,31——
gemini-2.5-flash0,302,500,075——
gemini-2.5-flash-lite0,100,400,025——
gemini-3-pro, gemini-3-pro-preview2120,20——
gemini-3-flash0,5030,05——
gemini-3.8-flash0,753,750,075——

Algunos precios tienen fecha: gemini-3.8-flash pasa a 1,50 / 7,50 / 0,15 desde el 1 de enero de 2027, y cada llamada usa el precio de su día.

Cómo calcula

Avisos de presupuesto

PresupuestoSe compara con
MensualLa proyección del mes de todos los agentes y proyectos
DiarioEl gasto de hoy desde las 00:00
Por proyectoLa proyección del mes de ese proyecto
Por agenteLa proyección del mes de ese agente
  • Al 80 %: «Cerca del presupuesto». Al 100 %: «Presupuesto superado».
  • Cada aviso salta una sola vez por periodo; un mes o un día nuevo vuelve a avisar.
  • Se comprueban al terminar el primer escaneo y con cada dato nuevo, y se reinician al guardar los ajustes.
  • La bandeja y los avisos usan siempre todos los datos, sin tus filtros.

Cómo calcula

Insights

Avisos automáticos sobre patrones de coste y fricción. Hoy se consultan con la herramienta get_insights del servidor MCP, ordenados de más a menos grave.

AvisoGravedadSalta cuando
CompactacionesCríticoHay sesiones con 3 o más compactaciones
Modelo caroAvisoUsar un modelo más barato en turnos de exploración o conversación habría ahorrado más de 1 USD
Errores de herramientaAvisoUna herramienta con 20 o más usos falla más del 10 %
Errores MCPAvisoUn servidor MCP con 10 o más usos falla más del 10 %
Caída del cache hitAvisoBaja más de 3 puntos frente al periodo anterior
Modelos sin precioAvisoAlgún modelo del periodo no tiene precio
Caché baja por modeloAvisoUn modelo con 100 o más llamadas tiene menos del 70 % de cache hit
1-shotAviso o bienCon 20 o más turnos con edición, menos del 80 % (aviso) o 95 % o más (bien)
Coste por sesiónAvisoSube más del 30 % frente al periodo anterior
Pico de gastoInfoUn día supera el doble de la media y la media más dos desviaciones
ConcentraciónInfoUn proyecto se lleva el 50 % o más, o un modelo el 70 % o más
Sesión más caraInfoSupone el 20 % del gasto o más de 5 USD
Comandos que fallanInfoUn comando de shell con 5 o más errores y al menos un 5 %
Peso de los subagentesInfoLos subagentes suponen el 20 % del gasto o más
RitmoInfoEl burn rate supera 1 $/h y el doble de la media por hora activa
Fuera de horarioInfoEl 30 % o más del gasto cae fuera de las 9–19 h
Agentes sin usoInfoHay agentes instalados sin llamadas en el periodo
Ahorro por cachéBienEl ahorro por caché supera el gasto

Por dentro

Arquitectura

Tauri 2: un backend en Rust que lee, guarda y agrega, y una interfaz en React 19 con TypeScript y Vite que pide los datos que muestra. El servidor MCP es un segundo binario que reutiliza la misma lógica.

MóduloQué hace
providersUn módulo por agente: dónde están sus logs, si está instalado y cómo convertir cada línea en sesiones, llamadas, turnos, herramientas y eventos comunes.
ingestLectura incremental desde el byte donde se quedó cada archivo, parseo en paralelo y escritura por lotes de 5 000 filas o 200 ms, sin duplicados.
ingest_threadEl único hilo que escribe: escaneos, relecturas, precios y reconstrucciones.
watcherVigila las carpetas de logs con el sistema operativo y pide relecturas dirigidas.
notifierAvisa a la interfaz de los cambios, como mucho una vez por segundo.
derivedPrecalcula coste, ahorro, día local y agregados diarios, solo para lo que cambió.
queries, snapshot, sessionsLas consultas del panel; el Resumen entero sale en una sola petición.
result_cacheGuarda en memoria hasta 256 resultados mientras los datos no cambien.
insights, findingsActividades, 1-shot, comandos, skills y los insights.
pricing, settings, alerts, trayPrecios, ajustes, avisos de presupuesto y bandeja.
dbLa caché SQLite y sus dos conexiones de solo lectura.
telemetry, tzTrazas y zona horaria ($TZ, la del sistema o UTC).

Un único escritor y dos lectores separados: la interfaz nunca espera a la ingesta ni al revés. La app expone 21 comandos a la interfaz, entre ellos get_dashboard_snapshot, get_breakdown, get_session_detail, list_prices, set_settings, export_data y rebuild_cache.

Por dentro

Stack tecnológico

Todas las herramientas del proyecto, agrupadas por capa.

Backend (Rust)

  • Rust 2021
  • Tauri 2.11
  • tauri-plugin-notification
  • rusqlite 0.32
  • serde · serde_json
  • chrono 0.4
  • chrono-tz
  • iana-time-zone
  • notify 6.1
  • tracing · tracing-subscriber
  • anyhow
  • dirs

Interfaz

  • React 19.3
  • TypeScript 7.0
  • Vite 8.3
  • @tauri-apps/api 2.11
  • Sora · IBM Plex Sans · IBM Plex Mono
  • Idiomas es · en · pt · fr

Datos e integración

  • SQLite WAL
  • MCP · Model Context Protocol (stdio · JSON-RPC 2.0)
  • Logs JSONL de Claude Code · Codex · Copilot · Cursor · Gemini
  • Base SQLite de OpenCode
  • inotify · FSEvents · ReadDirectoryChangesW

Pruebas y calidad

  • Vitest 5.0
  • cargo test (golden files y fixtures)
  • Criterion 0.8
  • cargo fmt (rustfmt)
  • Clippy
  • tsc
  • Python 3
  • unittest
  • Chromium headless (perf-ui)

CI/CD y distribución

  • GitHub Actions (Linux · Windows · macOS)
  • tauri-action
  • Swatinem/rust-cache
  • AppImage · .deb · .rpm
  • .msi · .exe (NSIS)
  • .dmg universal
  • WebKitGTK 4.1

Método y entorno

  • OpenSpec
  • Conventional Commits
  • TDD
  • distrobox · toolbox
  • Claude Design

Por dentro

Actualización en vivo

No hay sondeo periódico: AgentBoard se entera de los cambios porque el sistema operativo le avisa cuando un log cambia.

  1. Vigilante

    Un vigilante por carpeta de agente (inotify, FSEvents o ReadDirectoryChangesW) avisa de cada archivo modificado. Descarta los accesos de solo lectura y los archivos que ningún agente reconoce.

  2. Agrupa ráfagas

    Espera 150 ms sin cambios en ese archivo para juntar escrituras seguidas; si un log no para de crecer, lo relee igualmente una vez por segundo.

  3. Lee solo lo nuevo

    Cada archivo se sigue desde el byte donde se quedó. Una línea a medio escribir espera a la siguiente pasada; si un log se trunca o se sustituye, se relee desde cero sin duplicar.

  4. Avisa a la interfaz

    Como mucho una vez por segundo, con los agentes y días que cambiaron. Solo se refrescan las vistas que están en pantalla.

Si la carpeta de un agente aún no existe, vigila la carpeta superior y empieza a leerla en cuanto aparece. Si el sistema pierde eventos, hace un escaneo completo. Resultado: lo que escribe un agente aparece en el panel en menos de medio segundo.

Por dentro

Caché y datos

AgentBoard guarda en una caché SQLite solo las cifras de uso, para arrancar al instante. Se puede borrar en cualquier momento: se reconstruye leyendo los logs.

SistemaRuta
Linux~/.local/share/agentboard/cache.sqlite (o $XDG_DATA_HOME)
macOS~/Library/Application Support/agentboard/cache.sqlite
Windows%APPDATA%\agentboard\cache.sqlite
  • Junto a ella aparecen cache.sqlite-wal y cache.sqlite-shm.
  • Ocupa alrededor de una quinta parte de los logs: unos 10 MiB para 50 MB, 40 MiB para 200 MB y 205 MiB para 1 GB.
  • Si está dañada, es de otra versión o no se puede abrir, se borra y se reconstruye sola. Si no se puede crear en disco, la sesión sigue en memoria.
  • Con «Solo memoria», se borra al arrancar y todo vive en memoria.
  • Si un log desaparece o se sustituye, sus datos se retiran de la caché.

Qué guarda

Agentes, proyectos (ruta y repositorio), sesiones (agente, proyecto, rama, inicio y fin, modelo, si es subagente), llamadas (modelo, tokens, coste, hora, actividad), usos de herramientas (nombre, objetivo, error, latencia), eventos de compactación e interrupción, turnos (solo la etiqueta de intención), precios, y por dónde va la lectura de cada archivo. Todas las fechas, en milisegundos UTC.

Por dentro

Rendimiento

Medido en un portátil AMD Ryzen 5 Pro 7535U con 14 GiB, con datos sintéticos y la build de producción.

MedidaAntesAhora
Arranque con 200 MB ya leídos1,8 s≈ 130 ms
Primera lectura de 200 MB15,5 s≈ 2,2 s en memoria · 2,8 s a disco
Primera lectura de 1 GB86,9 s≈ 13 s
De que el agente escribe a que se ve787 ms≈ 460 ms
Refresco en vivo515 ms≈ 38 ms
Cambio de filtro o apartado ya cargado66–167 ms≈ 33 ms (un fotograma)
Resumen con 200 MB1 012 ms≈ 103 ms · 0 ms desde la caché
CPU en reposo—0–10 ms por minuto
Memoria con 200 MB60,7 MiB88 MiB

Cómo lo consigue

  • Parseo en paralelo y un único escritor por lotes.
  • Coste, día y agregados diarios precalculados al escribir.
  • El Resumen entero en una sola petición, con caché de resultados en el backend.
  • En la interfaz, caché de consultas (64 entradas, 10 minutos) que solo pide lo que está en pantalla, apartados que se cargan al abrirlos y tablas largas virtualizadas.
  • Sin sondeo: solo eventos del sistema operativo.

Cada pull request ejecuta 17 benchmarks y falla si alguno empeora más de un 20 % frente a la línea base.

Por dentro

Privacidad

Se guarda en la cachéNo se guarda nunca
Sesiones, llamadas, turnos y usos de herramientaEl texto de tus prompts
Modelo, tokens, coste y hora de cada llamadaLas respuestas de los modelos
Proyecto (ruta de la carpeta) y rama de gitEl contenido de los archivos
El objetivo de cada herramienta, recortado a 500 caracteres: ruta, línea de comando, URL o búsquedaClaves de API o credenciales
Tipo de skill o subagente, y qué parte de cada log ya se leyó—
  • Sin telemetría ni conexiones externas.
  • Solo lee las carpetas de logs de los agentes; la base de OpenCode la abre en solo lectura.
  • En Linux y macOS, la carpeta de la caché es 0700 y sus archivos 0600: solo tu usuario puede leerlos.
  • Con «Solo memoria» no escribe nada en disco salvo los ajustes.

Integración

Servidor MCP

agentboard-mcp expone los mismos datos a cualquier agente compatible con el Model Context Protocol, para que le preguntes «¿cuánto llevo gastado este mes?» o «¿qué modelo me sale más caro?». Al arrancar lee los logs a una base en memoria (no necesita la app abierta ni toca su caché) y responde por stdio con JSON-RPC 2.0. Los datos quedan fijos hasta que el agente lo reinicia.

Registro

# Claude Code
claude mcp add agentboard -- /usr/bin/agentboard-mcp

# Codex (~/.codex/config.toml)
[mcp_servers.agentboard]
command = "/usr/bin/agentboard-mcp"

# Gemini CLI (~/.gemini/settings.json)
{ "mcpServers": { "agentboard": { "command": "/usr/bin/agentboard-mcp" } } }

# OpenCode (opencode.json)
{ "mcp": { "agentboard": { "type": "local", "command": ["/usr/bin/agentboard-mcp"] } } }
SistemaDónde está el binario
Linux (.deb / .rpm)/usr/bin/agentboard-mcp
Linux (AppImage extraído)squashfs-root/usr/bin/agentboard-mcp
WindowsC:\Program Files\AgentBoard\agentboard-mcp.exe
macOS/Applications/AgentBoard.app/Contents/MacOS/agentboard-mcp

Filtro común

Casi todas las herramientas aceptan period (today, 7d, 30d, 60d, 90d o all, por defecto todo), agents (ids), projects (ids) y no_project (solo sesiones sin proyecto).

Las 22 herramientas

HerramientaDevuelve
get_summaryCoste, llamadas, sesiones, tokens, cache hit, ahorro, burn rate y modelos sin precio
get_cost_by_agentCoste, llamadas, errores, cache hit y sesiones por agente
get_cost_by_modelLo mismo por modelo
get_cost_by_projectLo mismo por proyecto, con el overhead de contexto
get_cost_by_branchLo mismo por rama
get_activityCoste, turnos y 1-shot por actividad y por modelo
get_toolsUso y errores por herramienta
get_shell_commandsUso y errores por comando de shell
get_skillsSkills y subagentes invocados, con su coste
get_mcp_serversUso y errores por servidor MCP
get_agent_typesCoste de los subagentes por agente y tipo
get_dailySerie diaria de coste, llamadas, sesiones y tokens
get_hourlyLo mismo por hora
get_insightsLos insights, del más grave al menos
list_agentsAgentes detectados con su carpeta, coste y llamadas
list_projectsProyectos con su ruta, coste y llamadas
get_pricesPrecio de cada modelo, su origen, llamadas y coste
get_data_infoPrimera llamada, total de llamadas, archivos vigilados y último escaneo
get_sessionsSesiones del filtro (limit de 1 a 500, por defecto 50)
get_projectsResumen de cada proyecto, como en el apartado Proyectos
get_project_detailDetalle de un proyecto (key; vacío = sin proyecto)
get_session_detailDetalle de una sesión (id): coste, compactaciones, turnos, modelos y herramientas

Un error en una herramienta se devuelve como error de esa llamada, sin cortar la conexión. Acepta las versiones del protocolo 2025-06-18, 2025-03-26 y 2024-11-05.

Más

Desarrollo

Necesitas Node.js 20 o superior, Rust estable y WebKitGTK 4.1. En distribuciones inmutables, mejor dentro de distrobox o toolbox.

npm ci
npm run tauri dev                 # la app con recarga en caliente
npm run dev                       # solo la interfaz, con datos de ejemplo

npx tsc -b && npm test            # tipos y tests de la interfaz
cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo clippy --manifest-path src-tauri/Cargo.toml --workspace -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml --workspace
cargo build --manifest-path src-tauri/Cargo.toml -p agentboard-mcp

Interfaz con datos de ejemplo

Con npm run dev en el navegador, estos parámetros abren una vista concreta (útil para capturas):

ParámetroEfecto
?s=toolsAbre ese apartado
?p=<proyecto>Abre el detalle de un proyecto
?id=<sesión>Abre el detalle de una sesión
?settings=1Abre Ajustes
?panel=1Muestra el panel de la bandeja
?probe=1Marca cualquier desborde
?latency=<ms>, ?history=<n>Latencia e historial simulados

Pruebas

  • Interfaz: Vitest, con golden files de las vistas y los componentes.
  • Backend: tests de integración de ingesta, consultas, relectura dirigida y servidor MCP, con golden files y logs anonimizados de los seis agentes.
  • Benchmarks: Criterion sobre el parseo, la ingesta y las consultas del Resumen.
  • Para generar datos de prueba de 50 MB, 200 MB o 1 GB: scripts/gen-fixtures.py.
  • Trazas detalladas: AGENTBOARD_LOG=debug (salen siempre por stderr).

CI y releases

frontend
Tipos y tests de la interfaz.
rust
Formato, clippy, build y tests en Linux, Windows y macOS.
bench
Benchmarks comparados con la línea base.
release
Con una etiqueta v*, compila los instaladores de los tres sistemas y crea un borrador de release.

Añadir un agente

Un módulo nuevo en src-tauri/src/providers/ que implemente el trait Provider, registrado en all(), con sus fixtures y tests, y normalizando los nombres de sus herramientas. Los cambios se proponen antes con OpenSpec y los commits van en español con Conventional Commits.

Más

Problemas frecuentes

La ventana sale en blanco en Linux
Los AppImage publicados ya vienen corregidos. Si compilas tú, usa scripts/fix-appimage.sh, o prueba el .deb o el .rpm.
Un agente no aparece
Comprueba que está instalado y que su carpeta o variable de entorno es la correcta. Si la carpeta aparece después, AgentBoard la detecta sola.
Las cifras no cuadran
Ajustes → Datos → «Reconstruir caché», y revisa en Precios que tus modelos tengan precio.
Cursor siempre sale a $0
Cursor no registra el modelo; añade un precio para cursor-auto si quieres estimarlo.
«database is locked»
Suele ser porque hay dos instancias abiertas a la vez.
No quiero nada en disco
Activa «Solo memoria» en Ajustes → Datos.
Volví a una versión anterior
Con la app cerrada, borra cache.sqlite, cache.sqlite-wal y cache.sqlite-shm.
Windows o macOS no la dejan abrir
Son binarios sin firmar; ver Instalación.

Más

Licencia

AgentBoard es código abierto con licencia MIT. Hecho por Renzo Ramos (RenzoRamosDEV).

↑ Volver arriba