leonardoaguiar.com coder-leo
Idioma

coder-leo

Un agente de programación para la terminal que corre con modelos locales. Lee, escribe y edita código, ejecuta comandos, busca en un proyecto y lleva una lista de tareas, guiado por un modelo que corre en tu propia computadora a través de Ollama o de cualquier servidor con la API de chat de OpenAI (LM Studio, llama-server, vLLM, mlx). Trabaja como Claude Code, y está hecho para ventanas de contexto pequeñas: mide la ventana, mantiene cada resultado de herramienta dentro del presupuesto, limpia los resultados antiguos, resume la conversación por partes cuando hace falta y le da al modelo herramientas que encuentran las cosas sin leer todo.

Instalar

macOS, con Homebrew, dos comandos, una sola vez:

brew tap leonardoaguiar/coder-leo https://leonardoaguiar.com/apps/coder-leo/tap.git
brew install leonardoaguiar/coder-leo/coder-leo

brew upgrade trae las versiones nuevas, y coder-leo update también.

Linux (cualquier distribución, x86_64 o ARM), Android dentro de Termux y Windows dentro de WSL:

curl -fsSL https://leonardoaguiar.com/apps/coder-leo/install.sh | sh

Elige la compilación para la máquina, verifica su SHA-256 publicado e instala el binario, la página de manual y los autocompletados de la shell en /usr/local (pidiendo sudo cuando hace falta), en ~/.local o en la carpeta de Termux. Ejecutarlo de nuevo actualiza; sh -s -- --uninstall lo quita.

También necesitas un servidor de modelos con un modelo que admita herramientas:

Empezar

Abre una terminal en un proyecto y ejecuta coder-leo. La primera vez, elige un modelo de la lista; queda guardado. Escribe lo que quieres; /help lista los comandos.

coder-leo                         una sesión en esta carpeta
coder-leo "add tests for parser"  una sesión con un primer pedido
coder-leo -p "explain main.go"    una respuesta y sale (también lee stdin)
coder-leo -c                      continúa la última sesión de aquí
coder-leo --sessions              elige una sesión anterior
coder-leo --list                  los modelos instalados

La caja de bienvenida muestra el modelo, la ventana de contexto, el modo de permisos y la carpeta. La línea debajo del prompt muestra el modo, el modelo, cuánto contexto está en uso y la rama de git.

Trabajar con él

Herramientas

El modelo trabaja con estas herramientas, con los nombres de Claude Code (también entiende los nombres que usan otros agentes, como read_file o run_command):

HerramientaQué hace
ReadUn archivo, numerado, con offset y limit; imágenes para modelos con visión; PDF a través de pdftotext; notebooks como celdas. Un archivo grande leído entero devuelve su esquema y el comienzo
Write, EditCrea un archivo; reemplaza un fragmento exacto (tolera números de línea copiados y diferencias de sangría)
LS, Glob, GrepLista, busca archivos por patrón, busca en el contenido con una expresión regular (contenido, nombres de archivo o conteos, con contexto)
SearchLos archivos y líneas más relevantes para una pregunta en lenguaje común, ordenados por las palabras de los identificadores
Outline, RepoMapLas funciones y los tipos de un archivo; el mapa del repositorio, ordenado según cuánto se refiere el código a cada archivo
Bash, BashOutput, KillShellEjecuta un comando con tiempo límite; los largos, en segundo plano
WebFetch, WebSearchUna página como texto legible; una búsqueda web
TodoWriteLa lista de tareas, mostrada a medida que cambia
TaskUn subagente con ventana de contexto propia (explore, plan, general, review, o uno tuyo) que devuelve solo su informe
RecallBusca en toda la conversación, incluido lo que se resumió
AskUserQuestion, ExitPlanMode, SkillTe pregunta algo; presenta un plan; carga una skill
mcp__servidor__herramientaLas herramientas de tus servidores MCP

La ventana de contexto

Los modelos locales tienen ventanas pequeñas (de 8k a 32k tokens es lo común en una máquina de 16 GB), y volver a leer un prompt largo cuesta segundos en cada turno. coder-leo mantiene la ventana funcionando:

Permisos

Cuatro modos: default pregunta antes de editar y de ejecutar comandos; acceptEdits deja pasar las ediciones dentro del proyecto y pregunta por los comandos; plan solo lee, y el modelo presenta un plan para su aprobación; yolo ejecuta todo sin preguntar, como hacían las primeras versiones, y es el predeterminado salvo que tu configuración diga otra cosa. Los comandos destructivos (borrar carpetas enteras, descartar trabajo de git, push forzado, sudo, borrar tablas) siguen preguntando en modo yolo; "guard": false en la configuración lo desactiva.

Las reglas de la configuración deciden antes que el modo: "allow": ["Bash(git *)", "Read"], "deny": ["Bash(rm *)"], "ask": ["Write"]. Responder a a un pedido de permiso autoriza esa herramienta durante la sesión; responder con palabras se las envía al modelo como instrucciones.

Sesiones

Cada sesión se guarda mientras ocurre en ~/.config/coder-leo/sessions/<proyecto>/. coder-leo -c continúa la última, --resume <id> o /resume elige una, /rename le pone nombre, /export la escribe en Markdown. Antes de cada edición el archivo recibe un punto de control: /rewind (o Esc Esc) vuelve a un turno anterior, restaurando los archivos cambiados desde entonces y cortando ahí la conversación.

Instrucciones, comandos, skills, agentes

Configuración

~/.config/coder-leo/settings.json, luego .coder-leo/settings.json y .coder-leo/settings.local.json en el proyecto, cada uno sobre el anterior; después el entorno (CODER_MODEL, CODER_API, CODER_HOST u OLLAMA_HOST, CODER_API_KEY).

{
  "model": "qwen2.5-coder:14b",
  "api": "ollama",
  "numCtx": 16384,
  "think": "low",
  "permissions": { "mode": "default", "allow": ["Bash(git *)"], "guard": true },
  "compact": { "micro": 0.7, "full": 0.85, "keepRecent": 6 },
  "repoMap": { "enabled": true, "budget": 3000 },
  "tools": { "minimal": false, "disabled": ["WebSearch"] },
  "hooks": { "PreToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "./check.sh" }] }] },
  "mcpServers": { "fs": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] } },
  "statusLine": { "command": "~/.config/coder-leo/status.sh" },
  "notify": "bell"
}

/config muestra lo que está vigente y de dónde viene; /doctor revisa el servidor, el modelo, la memoria y la configuración.

Sin terminal

coder-leo -p "pedido" responde una vez: la respuesta por stdout, todo lo demás por stderr. --output-format json imprime un objeto con el resultado, el id de sesión y los conteos de tokens; --output-format stream-json imprime un evento JSON por línea a medida que ocurren las cosas. --max-turns, --allowedTools, --disallowedTools, --system-prompt, --append-system-prompt y --mode dan forma a la ejecución; -c o --resume continúan una sesión.

Privacidad

Todo corre en tu computadora: el modelo, los archivos, la conversación. El programa solo accede a la red cuando el modelo llama a WebFetch o WebSearch para tu tarea (con pedido de permiso, fuera del modo yolo), cuando configuras un servidor MCP que sale afuera y cuando ejecutas coder-leo update. Sin cuentas, sin telemetría, nada se envía a ningún lado.

Actualizaciones

coder-leo update revisa en el sitio si hay una versión más nueva y la instala (a través de Homebrew en una copia de Homebrew); coder-leo update --check solo avisa. El programa nunca revisa por su cuenta.

Ayuda y reportes de errores

Problemas e ideas: la dirección de soporte al final de la página de coder-leo. Incluye el modelo, el servidor, coder-leo version y la salida de /doctor.