level: technical
Simon Willison released LLM 0.32, the most significant update to his command-line tool and Python library for large language models since its launch. The release adds visible reasoning traces for models that support them, displaying the model’s internal chain of thought on standard error so it stays separate from piped output. It also introduces server-side tools from providers like OpenAI and Anthropic, including code interpreters and web search, which can be invoked directly from the command line.
The new version defaults to OpenAI’s GPT-5.6 Luna model and supports the GPT-5.6 family out of the box. Users can now run prompts with server-side tools such as OpenAI’s CodeInterpreter or Anthropic’s WebSearch and CodeExecution. A new `llm openai endpoint` command lets users target any OpenAI-compatible API without logging, useful for one-off queries. The Python API adds a `model.prompt(messages=[])` method and a streaming events system that handles reasoning text, tool calls, and attachments, replacing the old string-only iterator.
Logging has been redesigned with a content-addressable message store modeled after Git, reducing duplicate JSON in multi-turn conversations. The `llm logs` commands have been updated to present this data in a readable format. Existing plugins remain compatible, but model plugins need updates to use the new streaming events. Willison also released llm-anthropic 0.26 with Claude 5 support and server-side tools. He notes that LLM is increasingly agent-shaped, with tool chains that can pause for human approval, driven partly by the needs of his Datasette Agent project.
why it matters: LLM 0.32 makes it easier to inspect model reasoning, use provider-hosted tools, and build agent-like workflows from the command line or in Python, reducing boilerplate for AI developers.