Otro Context Code desde aquí
Tu terminal puede hablar con el Context Code de otra máquina: el de casa desde la oficina, el del servidor desde tu portátil. Es exactamente lo que hace el móvil cuando escanea el QR, pero desde una consola.
El turno no lo ejecuta tu equipo: se encola allí, con los archivos y los proyectos de allí. Tú ves lo que pasa y decides lo que hace falta decidir.
Ponerlo en marcha
Sección titulada «Ponerlo en marcha»# En el OTRO equipo (el que tiene el agente y los proyectos):contextcode serve --print-qr --public
# Aquí, con la URL que imprimió (lleva su ?t=…):contextcode remoto agregar casa "https://algo.trycloudflare.com/?t=TOKEN"contextcode remoto listarcontextcode remoto probar casacontextcode chat --remoto casaTambién admite la dirección y el token por separado, o sin esquema:
contextcode remoto agregar vps 192.168.1.5:8787 --token TOKENQué pasa al agregarlo
Sección titulada «Qué pasa al agregarlo»- Se llama a
/api/version, la única ruta pública. Sirve para separar dos problemas que se parecen y tienen remedios opuestos: «no llego a esa máquina» y «llego, pero el token no vale». - Se valida la credencial con una llamada que no cambia nada.
- Se canjea el token del enlace por uno de dispositivo. A partir de ahí, el token del QR no se guarda: conservarlo dejaría en tu disco una credencial viva que sobreviviría a la revocación.
El registro vive en ~/.context/remotos.json, con permisos 0600 donde el sistema lo permite. contextcode conexion te dice la ruta exacta.
Las dos credenciales
Sección titulada «Las dos credenciales»| Credencial | De dónde sale | Cuánto dura | Cómo se retira |
|---|---|---|---|
| Token del enlace | Lo genera serve; es lo que va dentro del QR | De 1 minuto a 30 días | Rotándolo: caen todos a la vez |
| Token de dispositivo | Se pide una vez, presentando el del enlace | No caduca | Uno a uno, sin tocar a los demás |
El QR es la puerta, no la llave. Por eso el enlace puede ser efímero sin obligarte a reescanear cada día, y por eso perder un teléfono no expulsa a los demás.
El chat remoto
Sección titulada «El chat remoto»contextcode chat --remoto casa # crea un chat nuevocontextcode chat --remoto casa --proyecto "Mi app" # en ese proyecto (id o nombre)contextcode chat --remoto casa --chat chat-a1b2 # continúa uno existentecontextcode chat --remoto # el remoto activoVerás lo mismo que en un chat local —texto en vivo, herramientas, resultado— porque son los mismos eventos del motor, seguidos por sondeo de la línea de tiempo del otro lado.
Las aprobaciones se responden desde tu terminal
Sección titulada «Las aprobaciones se responden desde tu terminal»Cuando el agente de la otra máquina pide permiso para usar una herramienta, la pregunta sale en tu consola ([s/N/siempre]) y tu respuesta lo desbloquea. Sin eso, el turno esperaría indefinidamente a alguien sentado delante de aquel equipo — que es justo lo que estás evitando.
Si se corta la red
Sección titulada «Si se corta la red»El agente sigue trabajando allí. El comando te dice con qué línea volver a entrar (--chat <id>) para recuperar la respuesta cuando vuelvas.
remoto frente a los workspaces SSH del escritorio
Sección titulada «remoto frente a los workspaces SSH del escritorio»No compiten: resuelven casos distintos.
contextcode remoto | Workspace SSH (ventana del escritorio) | |
|---|---|---|
| Quién lo usa | La terminal, en cualquier sistema | La aplicación de escritorio |
| Transporte | HTTP directo contra el serve | ssh -L y HTTP por el túnel |
| Credencial | Token del QR → token de dispositivo | Tus claves SSH |
| Hace falta en el servidor | contextcode serve ya corriendo | Acceso SSH y el binario instalado |
| Atraviesa internet | Sí, con serve --public | Sí, si el SSH es accesible |
En un VPS propio con SSH, el escritorio usa el workspace SSH. Para llegar desde una terminal —o desde una máquina donde no están tus claves— el camino es remoto contra serve --public.
Túneles SSH que ya no se caen
Sección titulada «Túneles SSH que ya no se caen»Si usabas un workspace SSH y se te cortaba cada poco, era esto: los NAT domésticos y algunas VPN solo cuentan el tráfico TCP visible y reciclan las sesiones ociosas, aunque SSH esté mandando sus propias sondas cifradas por dentro.
Ahora la conexión lleva keep-alive en las dos capas (ServerAliveInterval=15 con ServerAliveCountMax=3 en SSH, y TCPKeepAlive=yes en TCP). Y si aun así se corta:
- La aplicación detecta que el túnel está muerto y vuelve sola a trabajar en local, en vez de encadenar esperas de tres segundos por cada comando contra una conexión que ya no existe.
- Los chats remotos toleran cortes de más de dos minutos, reintentando con esperas crecientes, antes de darse por perdidos.
Cuando falla el emparejamiento
Sección titulada «Cuando falla el emparejamiento»| Lo que ves | Qué pasa y qué hacer |
|---|---|
| «Tu ordenador rechazó este enlace: ya expiró» | El enlace venció o se regeneró. Genera uno nuevo y vuelve a escanear. |
| «Su acceso fue revocado» | Ese dispositivo se revocó desde el otro lado. Escanea un QR nuevo. |
| «No se pudo contactar» y el PC está encendido | El QR de red local apunta a una IP interna. Poneos en la misma red, o pide el QR del túnel con --public. |
| El QR de un VPS no funciona | Sin --public, el enlace apunta a una IP del centro de datos que tu celular no alcanza. |
conexion dice que «el llavero no devolvió su token» | Servidor sin llavero del sistema: usa serve --token-file <ruta> para tener un token estable. |