npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

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-agente

El 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.