Saltar al contenido
Iria Monitor

CÓMO FUNCIONA

Sin magia. Solo hooks, git y estándares.

No leemos tu código. No usamos IA para detectar IA. Usamos los hooks que los propios agentes ya proporcionan y git como base de datos.

El flujo completo

Desde que Claude edita un fichero hasta tu dashboard

  1. El agente dispara un hook PreToolUse

    Antes de que Claude Code (o Cursor, Codex, Windsurf) edite un archivo, llama a un hook registrado con el nombre de la herramienta y el archivo destino. Nosotros capturamos un snapshot.

    El agente dispara un hook PreToolUse

    # ~/.claude/settings.json

    $ "PreToolUse": [{ "command": "iria-monitor ai-checkpoint claude-code" }]

  2. El agente edita el fichero

    Comportamiento normal de Claude/Cursor. Sin interceptar nada. El usuario acepta o rechaza en su flujo habitual.

  3. PostToolUse se dispara — calculamos el diff

    El agente llama al post-hook. Comparamos el snapshot con el estado actual. Las líneas nuevas son de la IA. Las que no cambiaron son del humano. Atribuimos, no adivinamos.

    PostToolUse se dispara — calculamos el diff

    # líneas 5-18 ahora se atribuyen a:

    $ claude-code/claude-sonnet-4-6 (session abc123)

  4. Append al working log

    La atribución se guarda en .git/ai/working_logs/a1b2c3d.jsonl. Append-only, con file lock, seguro bajo ediciones concurrentes.

  5. git commit dispara el hook post-commit

    Nuestro git post-commit hook lee el working log, construye un Authorship Log y lo almacena como git note en refs/notes/ai.

    git commit dispara el hook post-commit

    # ver la note de cualquier commit

    $ git notes --ref=ai show HEAD

  6. El CLI local funciona al instante

    No se necesita red. El CLI local lee la git note y muestra la atribución al instante.

    El CLI local funciona al instante

    # para desarrolladores individuales, con esto basta

    $ iria-monitor blame foo.py

    $ iria-monitor blame src/auth.py

    $ iria-monitor stats --durability

  7. Opcional: push a tu dashboard de equipo

    Si tu organización usa Iria Monitor cloud, el post-commit hook también envía la nota a tu tenant. O instalas nuestra GitHub App y leemos las notas vía GitHub API en los eventos de push.

  8. Tres vistas de los mismos datos

    Personal (privado para el dev), Vendor (el equipo/organización), Enterprise (un comprador comparando varios vendors). Las mismas git notes por debajo. Diferentes vistas por encima.

Qué aspecto tienen los datos

Un único fichero, atribuido línea a línea. Multiplicado por cada commit, cada repo, cada proveedor.

src/auth.py — Proveedor A / payments-core
78% escrito por IA · 35 líneas
  1. 1import oshuman
  2. 2import hmachuman
  3. 3from datetime import datetimehuman
  4. 4
  5. 5class AuthManager:claude-code
  6. 6 """Handle authentication lifecycle."""claude-code
  7. 7 def __init__(self, db):claude-code
  8. 8 self.db = dbclaude-code
  9. 9 self.cache = {}claude-code
  10. 10 def create_token(self, user_id):claude-code
  11. 11 return jwt.encode({"sub": user_id}, SECRET)claude-code
  12. 12
  13. 13 def authenticate(self, email, pwd):human
  14. 14 user = self.db.get_user(email)human
  15. 15 if not user: raise HTTPException(401)human
  16. 16 def validate_token(self, tok):cursor
  17. 17 try: return jwt.decode(tok, SECRET)cursor
  18. 18 except JWTError: return Nonecursor
claude-code · 7 líneascursor · 3 líneashuman · 8 líneas

Agregado hacia arriba — esto es lo que alimenta los dashboards.

Arquitectura

Local-first, cloud opcional

MÁQUINA DEL DESARROLLADOR
Local-first, cloud opcional
Agentes IA
  • Claude Code
  • Cursor
  • Codex
  • Windsurf
PreToolUse · PostToolUse
iria-monitor CLI
  • Python · solo stdlib
  • calcula el diff
  • atribuye líneas
.git/ai/working_logs/

JSONL + flock (seguro ante concurrencia)

git commit
refs/notes/ai · git-ai v3.0.0

git notes --ref=ai show HEAD

git push (solo notes)
IRIA MONITOR CLOUD · OPCIONAL
FastAPI + React · Páginas públicas prerenderizadas
GitHub App
  • iria-monitor-code-metrics
  • receptor de webhooks
descarga
Postgres
  • orgs · repos
  • commits · blame
3 Dashboards
  • Enterprise
  • Proveedor
  • Personal

El código fuente nunca sale de la máquina del desarrollador. Solo metadatos.

Cosas que quizás te estés preguntando

¿Leéis mi código fuente?
No. El CLI lee archivos localmente para calcular diffs, pero solo metadatos de línea (número, agente, modelo) salen de tu máquina, nunca el contenido. La nube solo almacena metadatos de atribución, no código fuente.
¿Y si el agente no dispara los hooks?
Soportamos Claude Code, Cursor, Codex, Windsurf vía hooks oficiales. Si un agente no dispara un hook, esa edición se trata como humana. No intentamos detectar a posteriori.
¿Qué pasa si hago rebase o amend?
Nuestro post-rewrite hook actualiza las git notes para seguir los nuevos SHAs de los commits. La atribución sobrevive a rebase, amend y cherry-pick. El force-push es lo único que puede romperla.
¿Qué pasa si un humano edita una línea generada por IA?
Esa línea se reatribuye al humano. Rastreamos quién es el propietario actual de cada línea, no el historial. La métrica de "durabilidad" mide exactamente esto: cuánto código IA sigue siendo propiedad de la IA a lo largo del tiempo.
¿El formato de git note es propietario?
No. Usamos el estándar abierto git-ai v3.0.0. Tus notas son portables a cualquier herramienta que lea el mismo formato. Si dejas de usar Iria Monitor, tus datos se van contigo.
Latencia de los hooks — ¿me ralentiza?
El ciclo del hook es inferior a 100ms para archivos normales. El CLI usa solo la stdlib de Python: sin imports pesados, sin llamadas de red, sin LLM en el camino. Lo hemos medido.

Pruébalo.

Dos comandos. Sin cuenta para usar el CLI.

Empezar