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)
↓
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 3000Configurar 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: truePipeline 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/apps | Listar todas las aplicaciones GitOps registradas |
| POST /gitops/apps | Registrar una nueva aplicacion |
| POST /gitops/deploy/{name} | Disparar un deploy manual |
| GET /gitops/logs | Ver historial de deploys con timestamps y estado |
| POST /webhook/github | Endpoint 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