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

@ecando/lmcode

v0.1.3

Published

Autonomous local coding agent CLI for LM Studio

Readme

lmcode

CI npm version Node >=20

CLI de agente de programacion local para LM Studio.

lmcode trabaja sobre el proyecto actual y puede leer archivos, buscar texto, ejecutar comandos seguros, modificar codigo y pedir confirmacion solo para acciones peligrosas como borrado o comandos destructivos.

Tambien incluye:

  • interfaz interactiva avanzada para una UX mas rica
  • modo de permisos configurable: read-only, workspace-write, danger-full-access
  • /status para inspeccionar la sesion actual
  • /diff para ver cambios git pendientes
  • /doctor para diagnosticar LM Studio y el entorno local

Requisitos

  • Node.js 20 o superior
  • LM Studio instalado
  • El servidor local de LM Studio levantado
  • Al menos un modelo cargado en LM Studio

Por defecto lmcode usa http://127.0.0.1:1234.

Instalacion

Desde npm

npm install -g @ecando/lmcode

Desde este repo

npm install
npm run check
npm test
npm link

Si no quieres usar npm link, puedes instalar el binario localmente con:

npm run install:local

Ejecucion

Ver modelos detectados

lmcode --models

Modo interactivo

lmcode

Por defecto, en TTY usa la interfaz avanzada. Si quieres volver a la interfaz clasica:

lmcode --ui classic

Prompt unico

lmcode "analiza este proyecto y dime los riesgos principales"

Forzar modelo

lmcode --model qwen/qwen3.5-9b
lmcode --model qwen/qwen3.5-9b "explica este modulo"

Diagnosticar el entorno local

lmcode --doctor

Cambiar modo de permisos

lmcode --permission-mode read-only
lmcode --permission-mode workspace-write
lmcode --dangerously-skip-permissions

Elegir interfaz

lmcode --ui auto
lmcode --ui react
lmcode --ui classic

Cambiar URL o system prompt por comando

lmcode --base-url http://127.0.0.1:1234 --model qwen/qwen3.5-9b
lmcode --system "Eres un agente local experto en Node.js" "revisa este repo"

Agregar archivos iniciales al contexto

lmcode --add src/app.js --add package.json "explica la arquitectura"

Configuracion

Puedes configurar lmcode con variables de entorno.

URL del servidor LM Studio

export LMSTUDIO_BASE_URL="http://127.0.0.1:1234"

Modelo por defecto

export LMSTUDIO_MODEL="qwen/qwen3.5-9b"

Tambien se acepta OPENAI_MODEL.

API key opcional

Si tu servidor local requiere token:

export LMSTUDIO_API_KEY="tu-token"

Tambien se aceptan OPENAI_API_KEY y API_KEY.

System prompt

export SYSTEM_PROMPT="Eres un agente local experto en TypeScript y React."

Ventana de contexto

export LMCODE_CONTEXT_TOKENS=8192

Tambien se aceptan LMSTUDIO_CONTEXT_TOKENS y CONTEXT_WINDOW.

Modo de permisos por defecto

export LMCODE_PERMISSION_MODE="workspace-write"

Interfaz por defecto

export LMCODE_UI="auto"

Desactivar color

export NO_COLOR=1

Comandos interactivos

  • /help: muestra ayuda corta
  • /models: lista modelos
  • /model: selector interactivo de modelo
  • /model <id>: cambia o carga un modelo por id
  • /load: alias de /model
  • /load <id>: carga un modelo por id
  • /status: muestra estado de sesion, contexto y permisos
  • /permissions: muestra el modo de permisos actual
  • /permissions <modo>: cambia permisos a read-only, workspace-write o danger-full-access
  • /doctor: revisa el entorno local y LM Studio
  • /files [filtro]: lista archivos del proyecto
  • /add <ruta>: agrega archivos al contexto manual
  • /drop <ruta>: quita archivos del contexto
  • /context: muestra el contexto actual
  • /read <ruta>: muestra un archivo
  • /run <comando>: ejecuta un comando y guarda la salida en contexto
  • /diff: muestra el diff actual del repositorio git
  • /patch <inst>: pide un diff unificado
  • /apply <inst>: propone cambios y los aplica
  • /summary: muestra el resumen acumulado
  • /compact: fuerza compactacion del historial
  • /clear: limpia la conversacion
  • /reset: reinicia conversacion, archivos y salida de comandos
  • /exit: sale

Como trabaja el agente

En el flujo normal, lmcode entra a un loop de agente. El modelo puede:

  • leer archivos
  • listar archivos
  • buscar texto
  • ejecutar comandos seguros
  • escribir archivos
  • pedir borrado con confirmacion
  • cerrar con una respuesta final

Los cambios de codigo se aplican mostrando diff. Los comandos peligrosos y el borrado requieren aprobacion.

Interfaz avanzada

La UI interactiva moderna renderiza:

  • header liviano con modelo, proyecto, permisos y presupuesto de contexto
  • flujo principal mas limpio, con menos cajas persistentes
  • panel de actividad en tiempo real
  • panel lateral reducido para sesion, acciones y contexto
  • paleta de comandos con Ctrl+P
  • selector visual de archivos/contexto con Ctrl+O
  • autocompletado de comandos slash con Tab
  • historial de prompts con y
  • prompt inferior persistente con ayudas cortas de uso

Si la interfaz avanzada falla al iniciar y estas en --ui auto, lmcode vuelve automaticamente a la interfaz clasica.

Modos de permisos

  • read-only: permite inspeccion, pero bloquea /run, escrituras y borrados
  • workspace-write: comportamiento normal con confirmacion para acciones peligrosas
  • danger-full-access: evita confirmaciones de comandos peligrosos y borrados

Desarrollo

npm install
npm run check
npm test

Publicacion automatica en npm con GitHub Actions

El repo incluye un workflow en .github/workflows/publish-npm.yml que publica desde GitHub Actions sin guardar un NPM_TOKEN, usando Trusted Publishing de npm.

El flujo hace esto:

  • corre CI de validacion en pushes y pull requests con .github/workflows/ci.yml
  • corre npm run check
  • corre npm test
  • corre npm run pack:check
  • valida que el tag Git coincida con la version de package.json
  • revisa si la version actual de package.json ya existe en npm
  • publica solo si esa version todavia no fue publicada
  • crea el release de GitHub para ese tag con notas autogeneradas

Para sacar una nueva version:

  1. actualiza el campo version en package.json
  2. crea un tag v<version>
  3. sube commit y tag al repo en GitHub

Ejemplo:

npm version patch
git push origin main --follow-tags

Configuracion inicial obligatoria en npm:

  1. Entra a la configuracion del paquete @ecando/lmcode en npm.
  2. Agrega un Trusted Publisher para GitHub Actions.
  3. Usa exactamente tu usuario u organizacion, el nombre del repo, el workflow publish-npm.yml y el environment npm.

Con eso ya no hace falta guardar un NPM_TOKEN de escritura en GitHub. Si la version ya existe, el workflow termina sin publicar.

Las notas del release se generan automaticamente con GitHub Release Notes y se pueden ajustar desde .github/release.yml.

Si quieres revisar exactamente lo que saldra al registro antes de subir:

npm run pack:check

Nombre publicado

El paquete se publica como @ecando/lmcode, pero el comando instalado sigue siendo:

lmcode