TLDRocket
Sign in

New release of LLM adds support for reasoning traces, OpenAI Responses, server-side tools, and smarter logging

Simon Willison's Weblog Simon Willison Covered by 2 sources

Simon Willison shipped LLM 0.32, calling it the biggest update since the tool launched. It adds visible AI 'thinking', server-side tools, and a smarter logging system built like Git.

Based on reporting by Simon Willison's Weblog, Simon Willison — read the original for the full story.

Summary, retelling and take written by AI under human oversight; images are AI-generated illustrations. How we work · Report an error

Simon Willison just pushed out LLM 0.32, and by his own account it's the largest jump the command-line tool has seen since he first built it. The headline change is that reasoning models now show their thinking process directly in the terminal, streamed to standard error so it doesn't clutter up whatever you're piping the actual output into. If you don't want to see the model's internal monologue, a new -R flag turns it off.

The release also plugs LLM into the world of server-side tools. OpenAI's code execution environment is now reachable with a simple --tool CodeInterpreter flag, and a WebSearch tool comes along for the ride too. Willison's companion llm-anthropic plugin got its own refresh, adding WebSearch, WebFetch, CodeExecution, and something called AnthropicMCP, which lets Claude models make Model Context Protocol calls as part of a single request. He demonstrates this by querying a Datasette instance for a row count without leaving one API call.

Under the hood, the Python API has been reworked to reflect how these models actually behave. Instead of assuming every response is a tidy string, LLM now exposes a stream_events() method that separates reasoning text, output text, tool calls, and other event types as they arrive. That structural shift also enabled a new llm-chat-completions-server plugin, which spins up a local server speaking the OpenAI chat completions format — useful if you want to point other tools at LLM without changing how they talk to APIs.

Logging got a redesign too. Because the new server pattern means message histories get resent on every turn, Willison built a content-addressable message store inspired by Git, so LLM doesn't end up duplicating the same JSON blob over and over in its logs. The llm logs commands were updated to unpack that format back into something readable.

Willison also uses the release notes to reflect on where LLM is heading. He's historically avoided calling it an 'agent framework,' but he now points to a definition he settled on back in September — an LLM agent is something that runs tools in a loop to reach a goal — and admits the project increasingly fits that description. Features added specifically for his own Datasette Agent project, like letting tool chains pause for human approval and resume later from stored history, suggest that word might get baked directly into LLM's core in a future release, though he says he hasn't worked out exactly what that would look like yet.

My take — AI-written commentary, not fact-checked reporting

Willison openly flip-flopping on the word 'agent' says more about the state of the industry than about his own project — the term stayed useless until enough tools converged on the same rough behavior that avoiding it started to look silly. What's actually worth watching here is the plumbing: a content-addressable logging scheme borrowed from Git is the kind of unglamorous fix that quietly saves people from years of bloated JSON logs, and it'll probably get copied by half a dozen other CLI tools within a year without anyone crediting where it came from.

Read more about this at: Simon Willison's Weblog

Related stories

The daily briefing

Every AI story that matters, in your inbox by 8am.

TLDRocket reads all relevant sources, removes duplicate coverage, and summarises the day in two minutes. Follow companies and topics for alerts, or get the briefing in Slack. Free, no spam, unsubscribe anytime.