Visión general
Memento Cloud Sync te permite hacer push y pull de observaciones entre tu base de datos local y la nube. Esto permite colaboración en equipo y memoria entre dispositivos.
┌──────────┐ push ┌──────────┐
│ Local │ ─────────────▶│ Nube │
│ DB │ ◀─────────────│ Server │
└──────────┘ pull └──────────┘
│
┌───────┴───────┐
│ │
┌────▼────┐ ┌──────▼──┐
│ Miembro │ │ Miembro │
│ A │ │ B │
└─────────┘ └─────────┘
Comandos
Push
Subir observaciones locales a la nube.
memento sync push
memento sync push --project mi-app
Pull
Descargar observaciones de la nube a la base de datos local.
memento sync pull
memento sync pull --project mi-app
Sync basado en cursores
Cada operación de sync usa un cursor — un timestamp que rastrea la última sincronización exitosa.
Cursor local: 2025-01-15T10:30:00Z
Push: Enviar todas las observaciones donde updated_at > cursor
Pull: Recibir todas las observaciones donde updated_at > cursor del servidor
Resolución de conflictos
Cuando la misma observación es modificada localmente y remotamente:
| Estrategia | Comportamiento |
|---|---|
| Last Write Wins | updated_at más reciente tiene precedencia |
| Merge | Combinar campos no superpuestos |
| Manual | Ambas versiones se preservan, el usuario decide |
Default: Last Write Wins. Configurable por proyecto.
Deduplicación
Durante el pull, Memento deduplica observaciones usando:
- Match exacto: Mismo
topic_key+ hash de contenido → skip - Match por similitud: Similitud Jaccard > 0.85 → auto-merge
- Sin match: Insertar como nueva observación
Endpoints de API
Push
POST /api/sync/push
{
"cursor": "2025-01-15T10:30:00Z",
"observations": [
{ "id": 42, "title": "...", "type": "decision", "content": "..." }
]
}
Pull
POST /api/sync/pull
{
"cursor": "2025-01-15T09:45:00Z",
"project_id": "mi-app"
}
Configuración
Configuración de sync en .memento/config.json:
{
"sync": {
"enabled": true,
"server_url": "https://api.memento.dev",
"conflict_strategy": "last_write_wins",
"auto_pull": true,
"pull_interval_seconds": 300
}
}