Files
llm_cli/app.md
T
agent cc01845acf feat: llm_cli — CLI autocontenida para chatear con Claude
Un solo archivo (llm.py) que habla directo con la API de Anthropic Messages
usando el token OAuth que Claude Code guarda en ~/.claude/.credentials.json.
Sin servidor, sin arranque: chat interactivo con memoria, one-shot, pipe, y
bucle de tools propias (run_tool_loop). Empaqueta standalone la logica del
grupo claude-direct del registry para poder distribuirla (basta llm.py +
README.md, el receptor solo necesita httpx + Claude Code logueado).
2026-06-05 00:15:52 +02:00

3.0 KiB

name, lang, domain, version, description, tags, uses_functions, uses_types, framework, entry_point, dir_path, icon, e2e_checks
name lang domain version description tags uses_functions uses_types framework entry_point dir_path icon e2e_checks
llm_cli py core 1.0.0 CLI minima y autocontenida para chatear con Claude desde la terminal usando el token OAuth que Claude Code guarda en la maquina. Un solo archivo (llm.py), sin servidor ni dependencias mas alla de httpx. Chat interactivo con memoria, one-shot, pipe, y bucle de tools propias. Pensada para distribuir: se copia y se ejecuta.
cli
claude
llm
anthropic
oauth
chat
standalone
distributable
llm.py apps/llm_cli
phosphor accent
terminal-window #a855f7
id cmd timeout_s
imports python3 -c 'import llm; assert callable(llm.stream_messages) and callable(llm.run_tool_loop)' 15
id cmd expect_stdout_contains timeout_s
help python3 llm.py --help interactive chat 15

llm_cli

CLI autocontenida para chatear con Claude desde la terminal. Empaqueta en un solo archivo (llm.py) la logica del grupo de funciones claude-direct del registry, para poder copiarla y distribuirla sin necesidad del registry.

Que es

llm.py habla directamente con la API de Anthropic Messages usando el token OAuth que Claude Code guarda en ~/.claude/.credentials.json. No lanza ningun proceso claude ni mantiene servidor: arranque instantaneo, respuesta en streaming.

Es una version standalone (codigo copiado, no importado) de las funciones del registry load_claude_oauth_token_py_core, stream_anthropic_messages_py_core y run_claude_tool_loop_py_core. Por eso uses_functions esta vacio: la app no depende del registry en runtime — todo vive en llm.py para que sea distribuible.

Uso

pip install httpx

python3 llm.py                                  # chat interactivo (con memoria)
python3 llm.py "que es Go en una frase"         # one-shot
echo "resume esto: ..." | python3 llm.py        # pipe
python3 llm.py --model claude-opus-4-8 "..."    # elegir modelo

Comandos del chat: /model <id>, /system <texto>, /reset, /exit.

Tools propias

llm.run_tool_loop(messages, tools, dispatch, ...) corre un bucle agentico donde el usuario define sus tools (definiciones Anthropic) y el dispatch que las ejecuta. Ver README.md para el ejemplo completo.

Distribuir

Para enviarsela a alguien: basta llm.py + README.md. El receptor instala httpx, tiene Claude Code logueado, y ejecuta python3 llm.py. Nada mas.

Requisitos

  • Python 3.9+, httpx.
  • Claude Code instalado y con sesion iniciada (provee ~/.claude/.credentials.json).

Gotchas

  • Rate limits: el plan limita la frecuencia; en rafagas se reciben HTTP 429. Espacia las llamadas o usa claude-haiku-4-5-20251001 (mas cuota) para uso frecuente.
  • Token expirado: normalmente Claude Code lo refresca en background. Si la CLI lleva mucho cerrada, abrela una vez para refrescar el token.
  • Modelo: claude-opus-4-8 es valido; ids con sufijo de fecha inexistente dan 404.