GitOps

Mentat incluye un motor GitOps integrado — no necesitas CI/CD externo. Haz push a tu repositorio, Mentat jala el codigo, construye la imagen y la deploya automaticamente. Similar a Coolify o Vercel, pero corriendo en tu propia infraestructura.

Como Funciona

git push origin main

GitHub webhook → POST /webhook/github

mentat-server: git pull → docker build → deploy

nueva version live (sin downtime)

Registrar una App

registrar app gitops
# Via API
curl -X POST https://www.getmentat.run/gitops/apps \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-web-app",
    "repo": "https://github.com/user/my-web-app",
    "branch": "main",
    "port": 3000,
    "ingress": "myapp.example.com"
  }'

# Via CLI
mt gitops add my-web-app \
  --repo https://github.com/user/my-web-app \
  --branch main \
  --port 3000

Configurar Webhook en GitHub

Apunta el webhook de tu repositorio GitHub al servidor Mentat. El endpoint acepta eventos push y dispara el pipeline de build/deploy.

configuracion webhook
# GitHub → Settings → Webhooks → Add webhook
Payload URL: https://www.getmentat.run/webhook/github
Content type: application/json
Events: Just the push event
Active: true

Pipeline de Deploy

Cuando llega un evento push, Mentat ejecuta los siguientes pasos:

1. Git Pull
Clona o jala el ultimo codigo de la rama configurada.
2. Build
Ejecuta docker build con el Dockerfile del repositorio. La imagen se tagea con el SHA del commit.
3. Deploy
Detiene el contenedor viejo e inicia el nuevo con la estrategia configurada (rolling por defecto).
4. Health Check
Espera a que la nueva instancia pase los health checks antes de marcar el deploy como exitoso.
5. Registry
Actualiza el registro de servicios con el nuevo endpoint. Caddy sincroniza el upstream automaticamente.

Endpoints de API

GET /gitops/appsListar todas las aplicaciones GitOps registradas
POST /gitops/appsRegistrar una nueva aplicacion
POST /gitops/deploy/{name}Disparar un deploy manual
GET /gitops/logsVer historial de deploys con timestamps y estado
POST /webhook/githubEndpoint webhook de GitHub (se dispara automaticamente)

Deploy Manual

deploy manual
# Deployar una app especifica
mt gitops deploy api-hercules

# Deployar con un commit especifico
curl -X POST https://www.getmentat.run/gitops/deploy/api-hercules \
  -H "Content-Type: application/json" \
  -d '{"commit": "abc123"}'

# Ver logs de deploys
mt gitops logs