Sella Temporalmente tus Commits de Git Automáticamente con una GitHub App
Ya sabes que demostrar cuándo existió un commit puede importar tanto como el propio código. Si los trolls de patentes, las disputas con clientes o un antiguo colaborador cuestionan alguna vez tu cronología, un registro de Git autoalojado normalmente no es suficiente. Los registros internos pueden editarse, y el historial de un repositorio alojado no es una prueba inmutable del estado de la técnica anterior.
La forma difícil es aprender el protocolo de sellado de tiempo subyacente, ejecutar comandos manuales para cada commit, copiar hashes, esperar confirmaciones y almacenar los recibos en un lugar seguro. Ese enfoque se desmorona en el momento en que tienes múltiples repositorios, múltiples desarrolladores o una semana de lanzamientos muy ocupada.
Timestamp GIT elimina toda esa carga manual. Instalas una GitHub App una vez, seleccionas los repositorios que quieres proteger y cada nuevo commit se sella temporalmente automáticamente en la blockchain de Bitcoin con una programación nocturna. No hay herramientas de CLI que ejecutar, ni archivos de recibo que gestionar a mano, ni comandos de OpenTimestamps que aprender.
Si eres nuevo en la razón subyacente por la que esto importa, consulta ¿Qué es el Estado de la Técnica Criptográfico y por qué importa para el software?.
Este artículo recorre la ruta automatizada: configuración única, qué sucede entre el commit y el anclaje en Bitcoin, cómo monitorizar tus pruebas y cómo mantener el proceso saludable a lo largo del tiempo.
Configuración única: Instala la GitHub App
Toda la configuración es una instalación de una GitHub App. No hay agente local, ni archivo de configuración, ni script que mantener.
Esta es la secuencia:
- Instala la Timestamp GIT GitHub App desde el GitHub Marketplace.
- Selecciona los repositorios que quieres monitorizar.
- Los repositorios públicos son compatibles con el plan gratuito.
- Los repositorios privados requieren el plan Pro o Enterprise.
- Elige tu modo de despliegue:
- Modo Estándar: La GitHub App lee el hash del commit HEAD del repositorio de origen y escribe los archivos de prueba en un repositorio o rama de destino.
- Modo Enterprise ZK: Una GitHub Action que se ejecuta en tu entorno envía solo los hashes de commit a la API de Timestamp GIT. Timestamp GIT obtiene cero acceso de lectura al repositorio de origen.
- Confirma el acceso.
- El Modo Estándar requiere acceso de lectura al repositorio de origen y acceso de lectura-escritura al repositorio de destino. Este es un requisito del sistema de permisos de GitHub: no existe un permiso de lectura solo de hash de commit.
- El Modo Enterprise ZK requiere solo acceso de lectura-escritura al repositorio de destino. El repositorio de origen nunca necesita otorgar acceso de lectura a Timestamp GIT.
- Listo. A partir de este punto, los nuevos commits se recogen automáticamente.
Después de la instalación, puedes gestionar los repositorios monitorizados desde el panel de control de Timestamp GIT. No hay nada que compilar, ningún demonio que ejecutar y ningún trabajo cron que configurar.
El Pipeline Automatizado: Del Commit al Anclaje en Bitcoin
Una vez que la GitHub App está instalada, el proceso se ejecuta sin que tengas que pensar en ello.
Qué sucede después de cada commit
Cuando haces push de un commit a un repositorio monitorizado, la GitHub App detecta el nuevo commit mediante un webhook. La app no lee tus archivos de origen. Extrae solo el hash del commit — una huella digital criptográficamente segura del estado del repositorio en ese momento.
Ese hash de commit se coloca en una cola para el siguiente lote nocturno.
La ejecución de anclaje nocturna
Cada noche, un proceso worker ejecuta el siguiente pipeline:
- Se recopilan todos los hashes de commit en cola para cada repositorio monitorizado.
- Se crean los archivos de manifiesto del día.
- Se construye un árbol de Merkle a partir de los hashes recopilados.
- La raíz de Merkle se ancla en la blockchain de Bitcoin utilizando el protocolo OpenTimestamps.
- Los recibos de prueba se generan y se envían de vuelta a una rama de timestamps dedicada o a un repositorio sombra.
La confirmación de Bitcoin en sí normalmente tarda unas horas. Eso significa que los archivos de prueba suelen aparecer en tu repositorio unas horas después de la ejecución nocturna, no inmediatamente después del commit.
Entrega de pruebas
El entregable es un archivo de recibo .ots más el manifiesto diario. Estos archivos se escriben en una rama dedicada o en un repositorio sombra, manteniéndolos separados de tu historial de código fuente normal.
Puedes comprobar el resultado con comandos de Git ordinarios:
# Después de que el anclaje nocturno se haya completado
git fetch origin
# Busca la rama de timestamps dedicada o el repositorio sombra
git branch -r
# Haz checkout de la rama que contiene los recibos .ots
git checkout <timestamps-branch>
# Lista los archivos de prueba diarios
ls -1 *.ots
El nombre exacto de la rama depende de la configuración de tu repositorio.
Modo Enterprise ZK
Para equipos que no pueden otorgar ningún acceso al código fuente a un tercero, el Modo Enterprise ZK cambia el flujo de datos.
En lugar de que la GitHub App lea los metadatos del repositorio de origen, una pequeña GitHub Action se ejecuta dentro de tu infraestructura. La acción envía solo el hash del commit a la API de Timestamp GIT. Timestamp GIT nunca recibe código, nunca lee el repositorio de origen y nunca ve nada excepto el hash.
El pipeline de anclaje nocturno es el mismo a partir de ese punto: cola de hashes, manifiesto, árbol de Merkle, prueba de OpenTimestamps, anclaje en Bitcoin y entrega de pruebas de vuelta a tu repositorio de destino.
Monitorización y Gestión de Fallos
La automatización no significa confianza ciega. Deberías poder ver que el sistema está funcionando, y deberías tener un camino claro cuando algo parezca ir mal.
Panel de estado del repositorio
Cada repositorio monitorizado tiene una página de estado que muestra:
- Longevidad de las pruebas, incluida la fecha de anclaje más antigua.
- Regularidad del anclaje diario.
- Datos de bloques y transacciones de Bitcoin vinculados a cada timestamp.
- Un mapa de calor de calendario de los días anclados.
- Informes descargables de auditoría en CSV y certificados en PDF.
También puedes consultar el estado a través de la API pública:
curl -s https://timestampgit.dev/api/statusLast/$GITHUB_USER/$GITHUB_REPO | jq .
Los repositorios privados añaden un HMAC cifrado a las URLs de estado. Solo los usuarios autorizados pueden ver los timestamps de repositorios privados, y el HMAC es específico de la instancia del servidor.
Insignias en el README
Timestamp GIT proporciona insignias incrustables para tu README. La insignia muestra el estado de verificación actual, y cualquiera que haga clic puede verificar el timestamp desde la página enlazada. Esto es útil para proyectos de código abierto y para agencias que quieren mostrar prueba de trabajo públicamente sin exponer código privado.
Exportaciones de auditoría y cumplimiento
Para revisión legal o de cumplimiento, puedes descargar:
- Un registro de auditoría completo como CSV.
- Un certificado PDF para una fecha específica.
Estos archivos te dan un registro fuera de la cadena que complementa los recibos criptográficos en tu repositorio.
¿Qué pasa si se omite un commit?
Si un commit no se procesa en el lote nocturno esperado, el hash en cola permanece en la cola de timestamping y se recoge en la siguiente ejecución. El panel de estado del repositorio es el primer lugar donde comprobar si hay huecos o irregularidades. Si un repositorio muestra consistentemente días faltantes, contacta con soporte antes de confiar en el rango afectado para una reclamación legal.
Opción Docker autoalojada
Para entornos aislados o con máximo control operativo, Timestamp GIT está disponible como imagen Docker. Una instancia autoalojada utiliza el mismo flujo de trabajo de GitHub App pero se ejecuta en infraestructura de tu propiedad.
Una configuración mínima de Docker Compose se ve así:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
Levántalo con:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
La aplicación está disponible en http://localhost:8080 después del arranque. En el primer lanzamiento, un asistente de configuración te guía para conectar tu GitHub App y configurar la instancia. Una licencia de demostración con límite de tiempo está disponible para evaluación.
Buenas Prácticas para el Timestamping Automatizado
La automatización elimina el trabajo repetitivo, pero algunos hábitos hacen que tu historial de timestamps sea mucho más sólido.
Haz commits con frecuencia. El pipeline ancla lotes diarios. Si solo haces commit una vez al mes, creas menos puntos de prueba y mayores huecos entre anclajes. Los commits regulares crean un registro denso y continuo del estado de la técnica anterior.
Usa mensajes de commit significativos. Los hashes de commit son lo que se sella temporalmente, pero el rastro de auditoría legible por humanos sigue importando. Un mensaje como Implementar calentamiento de caché para respuestas de API es mucho más útil en una disputa que arreglar cosas.
Mantén los recibos .ots separados del código fuente. Trata la rama de timestamps o el repositorio sombra como un almacén de evidencia de solo anexión. Evita editarlo, hacer squash o eliminarlo.
Verifica una muestra regularmente. Al menos una vez al trimestre, abre la página de verificación pública para un timestamp representativo y confirma que la prueba de Merkle se resuelve correctamente. Esto detecta la deriva de configuración antes de que necesites la evidencia.
Usa el Modo Enterprise ZK para proyectos sensibles. Si el repositorio contiene secretos comerciales, herramientas internas o lógica de producto no publicada, el Modo Enterprise ZK es la opción predeterminada más sólida. Timestamp GIT solo ve hashes de commit, y tu código nunca sale de tu entorno.
Considera el autoalojamiento con Docker para entornos regulados. Si necesitas operación aislada o control total sobre la conexión de la GitHub App, autoaloja con la imagen Docker.
Preguntas Frecuentes
¿Cómo funciona el timestamping automático con una GitHub App?
Una vez que instalas la Timestamp GIT GitHub App y seleccionas repositorios, la app detecta automáticamente nuevos commits mediante webhooks. Cada noche, agrupa todos los hashes de commit, crea un árbol de Merkle y ancla la raíz en la blockchain de Bitcoin utilizando OpenTimestamps. Los recibos de prueba (archivos .ots) se envían de vuelta a una rama dedicada en tu repositorio — sin pasos manuales requeridos.
¿Mi código fuente queda alguna vez expuesto a Timestamp GIT?
No. Timestamp GIT solo procesa hashes de commit de Git, no el código fuente real. En el Modo Estándar, la GitHub App requiere acceso de lectura al repositorio para obtener el hash del commit, pero nunca lee el contenido de los archivos. En el Modo Enterprise ZK, una GitHub Action se ejecuta en tu infraestructura y envía solo el hash del commit a la API, por lo que Timestamp GIT tiene cero acceso a tu código.
¿Qué pasa si Timestamp GIT quiebra?
Tus timestamps siguen siendo válidos para siempre. Las pruebas están ancladas en la blockchain de Bitcoin y se basan únicamente en SHA-256 y datos de bloques de Bitcoin. Puedes verificarlas de forma independiente utilizando herramientas estándar de OpenTimestamps, incluso si Timestamp GIT deja de existir. Los archivos de recibo .ots se almacenan en tu repositorio, por lo que siempre los tienes.
¿Puedo usar Timestamp GIT con repositorios privados?
Sí. Los planes Pro y Enterprise admiten repositorios privados. Para repos privados, las insignias de estado y los enlaces de verificación incluyen un HMAC cifrado para que solo los usuarios autorizados puedan ver el estado del timestamp. El Modo Enterprise ZK se recomienda para máxima privacidad, ya que no requiere acceso de lectura al repositorio de origen.
Configúralo y Olvídate
El timestamping manual falla porque depende de que alguien recuerde hacerlo. El valor del estado de la técnica criptográfico proviene de la consistencia durante meses y años, no de un único esfuerzo heroico.
Timestamp GIT convierte esa consistencia en infraestructura. Instala la GitHub App una vez, conecta tus repositorios y el worker nocturno se encarga de la huella digital, el agrupamiento, el anclaje en Bitcoin y la entrega de pruebas. Obtienes prueba inmutable del estado de la técnica anterior sin una carga operativa continua.
El plan gratuito cubre repositorios públicos. Pro añade repositorios privados por $49/mes, y el Modo Enterprise ZK cuesta $199/mes con el flujo de trabajo de GitHub Action. Para entornos aislados o regulados, la licencia Docker autoalojada también está disponible.
Empieza a construir tu cartera de estado de la técnica criptográfico hoy: instala la Timestamp GIT GitHub App y conecta tu primer repositorio.
Publicaciones relacionadas
- ¿Qué es el Estado de la Técnica Criptográfico y por qué importa para el software?
- Cómo demostrar que el código existía en un momento específico (sin revelarlo)
- ¿Qué es la Prueba Criptográfica de Autoría para Código?