Skip to content

Inicio Rápido Multi-Dispositivo ​

Conecta dos instalaciones de Crow para que compartan la misma identidad, sincronicen memorias y puedan llamar las herramientas una de la otra. Este recorrido toma unos 15 minutos.

Requisitos previos ​

Paso 1: Elige Tu Instancia Principal ​

Decide qué máquina es tu instancia home (principal) y cuál es la satélite. La instancia home es donde se creó tu identidad por primera vez.

Para esta guía, las llamaremos server-a (home) y server-b (satélite).

Paso 2: Exporta la Identidad desde la Instancia Home ​

En server-a:

bash
cd ~/crow
npm run identity:export

Se te pedirá una frase de contraseña para cifrar la exportación. El comando muestra una ruta de archivo — algo como ~/.crow/identity-export.enc.

Copia el archivo a server-b:

bash
scp ~/.crow/identity-export.enc user@server-b:~/

Paso 3: Importa la Identidad en la Satélite ​

En server-b:

bash
cd ~/crow
npm run identity:import

Ingresa la misma frase de contraseña que usaste durante la exportación. Esto reemplaza la identidad de server-b con la compartida.

Verifica que ambas máquinas tengan el mismo Crow ID:

bash
# En server-a
npm run identity

# En server-b
npm run identity

Los Crow IDs deben coincidir.

Paso 4: Inicializa la Base de Datos de la Satélite ​

En server-b, si aún no lo has hecho:

bash
npm run init-db

Paso 5: Inicia el Gateway en Ambas Máquinas ​

Cada instancia necesita su gateway en ejecución:

bash
# En server-a
npm run gateway

# En server-b
npm run gateway

Anota las URLs de los gateways — por defecto http://<ip>:3001.

Paso 6: Registra las Instancias ​

En server-a, abre una sesión de Crow y registra la satélite:

"Registra server-b como instancia satélite en http://<server-b-ip>:3001"

En server-b, registra la instancia home:

"Registra server-a como mi instancia home en http://<server-a-ip>:3001"

¿Usas Tailscale?

Usa IPs de Tailscale o nombres de MagicDNS para una conectividad confiable entre redes:

"Registra server-b como instancia satélite en http://server-b:3001"

Paso 7: Verifica la Sincronización ​

En cualquiera de las dos máquinas:

"Muestra el estado de las instancias"

Deberías ver ambas instancias listadas con estado "online". Ahora prueba la sincronización:

# En server-a
"Recuerda que la sincronización multi-dispositivo está funcionando"

# En server-b (espera unos segundos)
"Busca en las memorias sincronización multi-dispositivo"

La memoria almacenada en server-a debería aparecer en server-b.

Paso 8: Prueba la Federación ​

La federación te permite llamar herramientas en la instancia remota:

# En server-b
"Busca notas de proyecto en todas las instancias"

Esto consulta tanto la base de datos local como la de server-a, combinando los resultados.

Ejemplo: Oracle Cloud + Google Cloud ​

Una configuración común es Oracle Cloud (home, 1 GB de RAM) + Google Cloud (satélite, 1 GB de RAM) — dos nubes always-free encadenadas.

Configuración ​

InstanciaRolIP (Tailscale)Guía
Oracle CloudHome100.x.x.xGuía de configuración
Google CloudSatélite100.y.y.yGuía de configuración

Sigue el paso "Chain with Oracle Cloud" de la guía de Google Cloud para el recorrido completo.

Lo que obtienes ​

  • Redundancia — las memorias existen en ambas nubes
  • Federación — consulta los proyectos de Oracle desde Google Cloud
  • Aprovechamiento de capas gratuitas — separa cargas de trabajo entre dos máquinas
  • Distribución geográfica — Oracle (tu región local) + Google Cloud (EE. UU.)

Solución de Problemas ​

Las instancias aparecen "offline" ​

  • Verifica que ambos gateways estén funcionando: revisa http://<ip>:3001/health
  • Comprueba la conectividad de red: curl http://<ip>:3001/health desde la otra máquina
  • Si usas Tailscale, verifica que ambas máquinas estén en la misma tailnet: tailscale status

Error de identidad no coincidente durante el registro ​

  • Vuelve a ejecutar npm run identity en ambas máquinas y confirma que los Crow IDs coincidan
  • Si difieren, vuelve a exportar desde la instancia home y a importar en la satélite

Las memorias no se sincronizan ​

  • Comprueba que ambos gateways hayan estado funcionando desde el registro — la sincronización comienza cuando el proceso del gateway se conecta
  • Revisa los registros del gateway en busca de errores de sincronización: reinicia el gateway con DEBUG=crow:* para salida detallada
  • Verifica que las instancias estén registradas en ambos lados (el registro es bidireccional)

Conflictos de sincronización ​

Cuando dos instancias editan la misma memoria sin conexión, se crea un conflicto. Revisa el panel de Instancias del dashboard del Nest para ver los conflictos pendientes y resolverlos ahí.

Tailscale no conecta entre nubes ​

  • Verifica que ambas máquinas estén en la misma red de Tailscale: tailscale status en ambas
  • Comprueba que el puerto UDP 41641 esté abierto en ambas (requerido para conexiones directas)
  • Prueba tailscale ping <other-ip> para verificar la conectividad
  • Si usas Google Cloud, verifica que el firewall de la VPC permita el tráfico UDP de Tailscale

La verificación de salud del gateway falla desde la máquina remota ​

  • Verifica que el gateway esté funcionando: curl http://localhost:3001/health en la propia máquina
  • Revisa UFW: sudo ufw status — el puerto 3001 debe estar permitido desde 100.64.0.0/10 (Tailscale)
  • Revisa las reglas de firewall de la nube (Security Lists de Oracle / Firewall de VPC de Google)

Próximos Pasos ​

Released under the MIT License.