Saltar al contenido
← Volver a proyectos

~/proyectos

Hebra

Control de versiones pensado para repos donde trabajan varias personas y muchos agentes de código a la vez. Hace todo lo que hace Git, habla con remotos Git y tiene su propio servidor y hub web.

RustTypeScriptNext.jstree-sitterPostgreSQLNATSMCP

problema

Git está hecho para personas que se turnan. Los agentes no se turnan. Con varios agentes de código en el mismo repo me encontraba siempre lo mismo: agentes que se pisan, conflictos que paran todo, index.lock, prompts de credenciales interactivos, ruido de CRLF/LF y archivos generados que se cuelan en los commits.

arquitectura

Workspace en Rust. hebra-core tiene el almacén de objetos direccionado por contenido (árboles Merkle con BLAKE3 y packs con compresión delta), el working copy, el merge y el log de operaciones. hb es la CLI y también un servidor MCP. hebra-server es una API HTTP en axum con identidad, mandatos por agente (Biscuit), reviews, tareas y checks, sobre PostgreSQL, NATS JetStream y almacenamiento S3. El hub web en Next.js enseña el historial con el agente que hay detrás de cada cambio.

decisiones

  • ›Sin staging area: el working copy es el cambio. Un agente no tiene que gestionar un índice que no entiende.
  • ›Los comandos no cogen locks. Leen el estado, hacen su trabajo y publican en una transacción corta; si otro publicó entretanto, los dos resultados se mergean. Con 500 agentes en paralelo: 1.500 comandos y 0 fallos.
  • ›Los conflictos se guardan como datos y el trabajo sigue. El merge es estructural con tree-sitter (18 gramáticas, 30 con extra-grammars) y detecta renombrados.
  • ›Cada cambio lleva su procedencia: persona, agente, tarea, sesión y prompt. Al exportar a Git viaja como trailers del commit.
  • ›Credenciales que se pueden recortar offline: una persona le da a cada agente un mandato con TTL que nunca puede mover ramas protegidas.
  • ›Todo comando acepta --json con códigos de error estables, y hb mcp expone Hebra por Model Context Protocol.

diagramas

// arquitectura

// comandos en paralelo sin locks

enlaces