LLM 0.32 was released this morning, the most significant update to the project since its initial launch. The release introduces several major features: visible reasoning traces, support for server-side provider tools, a redesigned content-addressable SQLite message store, new models, and functionality enabled by the OpenAI Responses API. Updated versions of the llm-anthropic, llm-gemini, and llm-openrouter plugins were also published.
Headline features for CLI users
-
Running LLM against reasoning models now prints the models' reasoning traces to standard error so you can see what they are "thinking" without including that information in the standard output that you might pipe to other tools. This can be disabled with -R/--hide-reasoning.
-
LLM includes out-of-the-box support for the GPT-5.6 model family, and the new default model for llm "prompt" is the cost-effective GPT-5.6 Luna.
-
LLM calls can now use server-side tools from various providers. OpenAI provides a server-side code execution environment (CodeInterpreter) which LLM can invoke, for example:
llm --tool CodeInterpreter 'Show current python and SQLite versions'
OpenAI also offers a WebSearch tool.
-
The llm-anthropic plugin adds server-side tools: WebSearch, WebFetch, CodeExecution and AnthropicMCP. AnthropicMCP enables making MCP calls to external endpoints as part of a single request/response interaction, for example:
llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' '' 'how many rows in the blog_blogmark table?'
This causes Anthropic to execute MCP calls against the author's new datasette-mcp plugin.
-
A new command, llm openai endpoint, provides a one-liner way to execute prompts against any OpenAI-compatible endpoint. These calls are not logged, making them convenient for ad-hoc prompts and testing with endpoints that speak the standard LLM API.
The author demonstrates using this to run prompts against Gemma 4 12B on a local LM Studio API via uvx, mixing in the llm-tools-quickjs plugin:
uvx --with llm-tools-quickjs
llm openai endpoint http://localhost:1234/v1 -m google/gemma-4-12b
-T QuickJS 'Use QuickJS to multiply 3434 * 2434' --td
New features in the Python API
-
Previously the LLM Python API required creating a conversation and sending messages one at a time. That abstraction diverged from how LLMs actually operate—each request carries the full history. The new release adds model.prompt(messages=[]) so you can pass the entire message sequence at once. The release notes show examples using system/user/assistant message objects.
-
Earlier LLM returned an iterable sequence of strings per prompt; that didn't anticipate models returning mixed content (reasoning text, direct text, tool calls, attachments). LLM 0.32 supports event-based streaming: model.prompt(...).stream_events() yields typed events (e.g., reasoning, text) so clients can handle thinking chunks, text output, or other event types appropriately.
-
Combining these features, the author released the llm-chat-completions-server plugin, a semi-standard OpenAI chat completions API implementation. Usage example:
llm install llm-chat-completions-server llm chat-completions-server --port 9000
Server is now running on http://127.0.0.1:9000/v1
You can then run prompts against the local server with llm openai endpoint:
llm openai endpoint http://127.0.0.1:9000/v1 'hello' -m gpt-5.4-mini
Content-addressable message store and logging
-
For APIs where the message sequence is appended on every request, logging the full JSON of each turn would be wasteful. The solution in 0.32 is a Git-like content-addressable message store.
-
The new schema is described in the documentation, and the llm logs and llm logs --json commands have been upgraded to reconstruct that format into a user-friendly representation.
Other changes and plugin updates
-
The release contains many additional changes; the 0.32 release notes are comprehensive and prior pre-releases (0.32rc2, 0.32rc, 0.32a3, 0.32a2, 0.32a0) provide further detail.
-
Existing LLM plugins should continue to work, but plugins that provide extra models must be upgraded to 0.32 to fully participate in the new streaming events system. The documentation includes a guide to implementing plugins with Structured messages and streaming events.
-
The author updated several of their own plugins:
- llm-anthropic 0.26: adds support for the Claude 5 family and server-side tools WebSearch, WebFetch, CodeExecution and AnthropicMCP.
- llm-gemini, llm-openrouter and llm-mistral are close to releases; updates are coming soon.
On being an "agent" framework
-
Many lower-level tool changes were driven by the needs of Datasette Agent. The author originally avoided the term "agent" because it was vague, but by September 2025 accepted the formulation "An LLM agent runs tools in a loop to achieve a goal." That made it easier to use the term.
-
Tool chains can now pause for human approval and resume from a stored message history — both required by Datasette Agent.
-
The project is increasingly agent-shaped: the CLI can combine tools from various sources and models in one-liners, while the Python library is powerful enough to build systems such as Datasette Agent and llm-coding-agent. The author suggests a future version might formalize "agent" concepts in the core library, though the exact form is still under consideration.
Tags
projects, releases, ai, openai, generative-ai, llms, llm, anthropic



