Last updated: November 4, 2026
LLM CLI 0.37, released November 2, 2026, adds GPT-6.1 Sol and GPT-6.1 Terra, switches the default model to the cheaper GPT-6 Luna, adds llm openai endpoint commands for OpenAI-compatible models, and lets embeddings accept images, audio and other typed files. Version 0.37.1 followed on November 3 with fixes.
Contents
- What changed in 0.37 and 0.37.1
- How to upgrade
- New models and the GPT-6 Luna default
- Managing OpenAI-compatible endpoints
- Typed attachments for embeddings
- Tool chain and logging fixes
- Power-user workflows
- Limitations
- Frequently asked questions
LLM is Simon Willison’s command-line tool and Python library for running prompts against hosted and local models and logging every result to SQLite. In his release post he describes 0.37 as about two months of accumulated features and fixes, with contributions from 12 authors. This guide covers what changed according to the official changelog and how to use it.
What changed in 0.37 and 0.37.1
| Area | What changed |
|---|---|
| New OpenAI models | gpt-6.1-sol, gpt-6.1-terra and chat-latest |
| Default model | gpt-6-luna, replacing gpt-5.6-luna for users with no default set |
| Endpoint management | llm openai endpoint add, list, remove and path |
| Embeddings | Typed attachments with -a/–attachment and –at/–attachment-type on llm embed, llm embed-multi and llm similar |
| Chat | llm chat -u/–usage prints token usage after each turn |
| Python API | chain.on_response(callback) runs code for each completed response in a tool chain |
| Python versions | Python 3.15 added, Python 3.10 dropped |
| Removed models | Shut-down OpenAI models such as gpt-3.5-turbo, gpt-4, o1, o3-mini and o4-mini |
| 0.37.1 (November 3) | Fixes for endpoint YAML handling, system prompts with messages=, missing usage data, blob output and log search |
How to upgrade
- Upgrade with the tool you used to install LLM:
pip install -U llm,pipx upgrade llm,uv tool upgrade llmorbrew upgrade llm. - Run
llm --versionand confirm it reports 0.37.1, the current release on PyPI. - Check your Python version. PyPI lists Python 3.11 or newer, and 0.37 dropped Python 3.10.
- Run
llm models defaultto see which model your prompts now use by default. - Run
llm logs -n 1after a test prompt to confirm logging still works.
New models and the GPT-6 Luna default
LLM now ships with gpt-6.1-sol, gpt-6.1-terra and chat-latest. If you never set a default, prompts without -m now go to gpt-6-luna, which the documentation calls OpenAI’s cheapest frontier model. Simon Willison says it is half the price of the old gpt-5.6-luna default.
If you rely on stable output for scripts, pin the model explicitly with -m or run llm models default gpt-5.6-luna to restore the old behavior. For current OpenAI rates, see our OpenAI API pricing answer and our GPT-6.1 Terra guide.
The release also removes OpenAI models that have been shut down, including gpt-4, gpt-4-turbo, o1, o3-mini and o4-mini, along with aliases like 4, 4t and chatgpt. Scripts that still call those names will need updating.
Managing OpenAI-compatible endpoints
Before 0.37 you edited extra-openai-models.yaml by hand to use a local server or a gateway such as OpenRouter. The new commands, documented under Configure an OpenAI-compatible model, write that file for you.
- Store the key:
llm keys set openrouter. - Add the model:
llm openai endpoint add https://openrouter.ai/api/v1 -m anthropic/claude-sonnet-4.5 --id claude-sonnet --alias claude --key openrouter --supports-tools --vision. - Check it:
llm models --options -m claude-sonnet. - Prompt it:
llm -m claude 'Summarize this file'. - Review saved records with
llm openai endpoint listand delete one withllm openai endpoint remove MODEL_ID.
Other flags map to YAML keys: --responses for the Responses API, --supports-schema, --reasoning, --audio, --no-stream and --service-tier. Adding an ID that already exists is an error unless you pass --replace. The add command appends without touching your comments, but --replace and remove rewrite the file and drop them. The same commands work for local servers, which pairs well with tools in our Ollama guide and LM Studio Bionic guide.
Typed attachments for embeddings
Embedding plugins can now declare the MIME types they accept, and LLM passes matching files as llm.Attachment objects. Simon Willison says this is needed for models such as Gemini Embedding 2, which embed text, audio, images and video. Collections record the type in a new content_type column.
Per the embeddings CLI documentation, llm embed -m MODEL -a image.jpg embeds one file, and --at recording.data audio/wav overrides a type that cannot be detected. llm embed-multi accepts repeated -a and --at options. These options cannot be combined with -c, -i or --binary. You need an embedding plugin that supports attachments for this to work.
Tool chain and logging fixes
- Tool approval:
Response.reply()now keepsbefore_callandafter_call. Previously a tool rejected bybefore_callcould still run in a later reply. - Chain limits: chains that finish within their limit no longer raise a chain limit error, and a schema now applies to every request in a chain.
- Logging: each response in a tool chain is logged as soon as it completes,
llm chatrespectsllm logs off, and concurrent processes no longer hitSQLITE_BUSYerrors. - Files:
llm embed-multi --filesno longer corrupts non-ASCII UTF-8 text. Rerun the same command to repair an affected collection.
Power-user workflows
- Watch costs in chat: start sessions with
llm chat -u. Usage prints to standard error, for example “Token usage: 10 input, 20 output”, and tool calls are reported per response. - Keep one config for many providers: register OpenRouter, a local server and any gateway with
llm openai endpoint add, then switch with-mwhile every result lands in the same log database. - Audit agent runs: in Python, use
chain.on_response(callback)to record or stop each response before its tool calls execute. - Build a media search index: embed a folder of images and audio with
llm embed-multiand typed attachments, then query it withllm similar.
If you prefer a full coding agent in the terminal rather than a prompt tool, compare our Codex CLI 0.166 guide and Gemini API CLI guide.
Limitations
- Python 3.10 users must upgrade Python before installing 0.37.
- The default model change can alter output and cost for scripts that never set
-m. llm embedaccepts one typed attachment at a time, and typed attachments only work with plugins that declare support.llm similarstill uses a brute-force search, which the documentation says does not scale well to large collections.- Install 0.37.1 rather than 0.37, since 0.37 could write invalid YAML after removing the last saved endpoint.
Frequently asked questions
What is new in LLM CLI 0.37?
LLM 0.37, released November 2, 2026, adds the gpt-6.1-sol, gpt-6.1-terra and chat-latest models, makes GPT-6 Luna the default model, adds llm openai endpoint commands for OpenAI-compatible models, lets embedding models accept typed attachments, and adds a -u/–usage option to llm chat.
What is the default model in LLM 0.37?
If you have not set your own default, LLM 0.37 uses gpt-6-luna. The previous default was gpt-5.6-luna, and Simon Willison says GPT-6 Luna costs half as much. Run llm models default gpt-5.6-luna to switch back.
How do I add an OpenAI-compatible model to LLM?
Run llm openai endpoint add with the API base URL, the model name with -m and an ID with –id. Add –key NAME to use a stored key, plus flags such as –supports-tools, –vision or –reasoning. The command writes a record to extra-openai-models.yaml.
How do I upgrade to LLM 0.37?
Use the upgrade command for the tool you installed it with, such as pip install -U llm, pipx upgrade llm, uv tool upgrade llm or brew upgrade llm. The latest version on PyPI is 0.37.1, which requires Python 3.11 or newer.
Which Python versions does LLM 0.37 support?
LLM 0.37 added support for Python 3.15 and dropped Python 3.10. PyPI lists Python 3.11 or newer as the requirement for 0.37.1.
Which OpenAI models were removed in LLM 0.37?
LLM 0.37 removed shut-down OpenAI models including gpt-3.5-turbo, gpt-4, gpt-4-turbo, gpt-4.1-nano, o1, o3-mini and o4-mini, along with aliases such as 3.5, chatgpt, 4 and 4t.
Sources
- Changelog (LLM documentation)
- Configure an OpenAI-compatible model (LLM documentation)
- Embedding with the CLI (LLM documentation)
- Release: llm 0.37 (Simon Willison, November 2, 2026)
- llm on PyPI
Image: Simon Willison, the developer of LLM, photographed by Paul Downey, CC BY 2.0, via Wikimedia Commons (cropped and resized). FreeAnswers is not affiliated with or endorsed by the LLM project.