forge-agente
v0.8.0
Published
Reporta a Forge Studio el estado local de tus proyectos —git, entornos, entidades y vistas— y levanta sus dev servers.
Maintainers
Readme
forge-agente
El agente de Forge Studio. Corre en tu máquina y contesta lo que la nube no puede saber: en qué rama estás, qué te falta commitear, qué variables tenés puestas y si el proyecto está levantado. También levanta y baja los dev servers.
npx forge-agente conectar FORGE-7K2P https://tu-forge-studio
npx forge-agenteEl código de emparejamiento sale de Forge Studio → Máquinas.
Comandos
| | |
|---|---|
| conectar CODIGO [URL] | conecta la máquina en un paso: el agente, el token de terminal de las skills (~/.forge/credenciales.json), los proyectos mapeados por su remoto de git y el servicio prendido. --sin-servicio deja el servicio afuera |
| (sin comando) | queda reportando cada 15 s |
| proyectos | qué carpetas tiene mapeadas |
| mapear ID [CARPETA] | dice dónde está un proyecto en esta máquina; sin carpeta, la busca por el remoto de git |
| mapear --todos | busca todos los que faltan (conectar ya lo hace al final) |
| instalar [--sin-prender] | se copia a ~/.forge/agente/ y queda corriendo como servicio, que arranca solo con la máquina |
| actualizar | con npx forge-agente@latest actualizar: instala la versión nueva y reinicia el servicio. No se actualiza solo |
Por qué es seguro instalarlo
La conexión la abre siempre el agente, hacia afuera. La nube nunca inicia nada contra tu máquina: no hay puerto que abrir, ni firewall que tocar, ni IP fija que pedir.
El comando que se ejecuta sale de ~/.forge/agente.json, no del cable. Por
la red viaja el proyecto y un verbo —START_DEV, STOP_DEV, COMMIT, PUSH,
AUDITAR, CONFIGURAR— y, en un commit, el mensaje. Aunque alguien se hiciera
pasar por el servidor, no puede hacerte correr nada que vos no hayas puesto en
tu propio archivo. Y desde la 0.7.0 el agente no corre Claude: la revisión de
seguridad es npm audit y el chequeo de .env versionado.
Nunca escribe en la rama principal. Commitear y pushear se niegan si el repo
está parado en su rama default (la de origin/HEAD, o main/master), y el
push nunca va con --force.
El token sólo viaja por https. En http el agente habla únicamente con
localhost, que es el caso de desarrollo; con cualquier otra dirección se niega
a mandarlo.
De los .env viajan sólo los nombres de las variables. Nunca los valores.
Qué archivo leer tampoco viene del cable. Para contestar qué entidades y qué
pantallas tiene un proyecto, el agente busca solo adentro de la carpeta que vos
mapeaste: prisma/schema.prisma y src/app/**. Si el servidor pudiera decir
qué archivo abrir, esto sería una forma de sacarte archivos del disco. Se relee
cada cinco minutos, no en cada latido: el schema cambia cuando alguien programa,
no cada quince segundos.
Y viaja sólo cuando cambió (desde la 0.8.0, #94). Era el 90% de cada
latido: unos 150 KB cada quince segundos para decir siempre lo mismo. Ahora
cada reporte lleva una firma del modelo y las vistas, y el contenido va
entero sólo si el servidor no tiene esa firma guardada. El servidor avisa que
sabe guardar por firma (firmas: true en la respuesta) y pide de nuevo lo que
no le cierra (reenviar); a uno que no lo avisa se le manda todo, como antes.
Lo único que escribe son las tarjetas de .forja/, y las deja sin commitear.
Si el repo tiene una carpeta .forja/ —el tablero en disco, una tarjeta por
archivo—, el agente la lee en cada latido y escribe de vuelta lo que cambió en
la web. Del servidor baja el CONTENIDO de una tarjeta, nunca una ruta: dónde va
cada archivo lo decide el agente adentro de la carpeta que vos mapeaste, y un
nombre con / o con .. se descarta. No commitea, no pushea y no borra: los
.md quedan modificados en tu árbol de trabajo y los commiteás vos. Un repo sin
.forja/ no participa y no se le crea nada.
No toca lo que no levantó. Si un puerto ya está ocupado por algo que arrancaste en una terminal, se reporta como "andando afuera" y sólo se ofrece abrirlo.
No tiene dependencias y no habla con nadie más que con tu Forge Studio.
Configuración
Todo vive en ~/.forge/agente.json, en modo 0600. Las rutas son de tu disco y
nunca salen de tu máquina: el registro compartido no las conoce.
