Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

harbor-node

Remote worker daemon for Harbor — runs AI coding agents and terminal sessions on remote servers.

Prototipo de primer corte: se registra contra un endpoint WebSocket saliente, supervisa un comando (por defecto bash) dentro de un PTY, y transmite su input/output por ese socket, reconectando con backoff exponencial sin matar el proceso supervisado. El protocolo de framing usado acá es provisional (ver comentarios en internal/wsclient) — no es la especificación formal de Harbor.

Build

go build -o bin/harbor-node ./cmd/harbor-node
go build -o bin/devserver ./cmd/devserver

Configuración

Copiar config.example.yaml a config.yaml y ajustar:

gateway_url: "ws://localhost:8080/ws"
token: "dev-token-placeholder"
command: "bash"

config.yaml no se versiona (contiene el token de esta máquina).

Probar de punta a punta en esta máquina

No hace falta un Atlas/Reverb real para probar el mecanismo: cmd/devserver es un servidor WS mínimo pensado solo para esto (no es parte del daemon, ni del producto — se puede borrar cuando exista el gateway real).

  1. Levantar el servidor de prueba:

    ./bin/devserver -addr :8080

    Loguea cualquier envelope de control que reciba, imprime a stdout el output binario del PTY remoto, y reenvía como input cualquier línea que se tipee en su propio stdin.

  2. En otra terminal, levantar el daemon apuntando al servidor de prueba:

    ./bin/harbor-node -config config.yaml
  3. Tipear en la terminal del devserver (por ejemplo date, ls) — debería verse el output real del bash remoto.

  4. Matar el devserver (Ctrl+C) a mitad de sesión: el harbor-node debe loguear reintentos con backoff creciente, y el proceso bash supervisado debe seguir vivo (verificable con ps). Al volver a levantar el devserver, el harbor-node debe reconectar solo y la misma sesión de bash debe seguir respondiendo.

Estructura

  • cmd/harbor-node — el daemon.
  • cmd/devserver — servidor WS de prueba, solo para desarrollo.
  • internal/config — carga del archivo de configuración local.
  • internal/ptysession — supervisión del proceso del agente vía PTY.
  • internal/wsclient — conexión WebSocket saliente, reconexión con backoff, heartbeat, y el framing de control/binario provisional.

Ver CLAUDE.md para el contexto completo de qué es este repo dentro de Harbor y qué no le corresponde.

About

Remote worker daemon for Harbor — runs AI coding agents and terminal sessions on remote servers.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages