LLM 0.32: New CLI Reasoning Traces & Server-Side Tools
LLM 0.32, released Aug 4 2026, is llm CLI's biggest update yet: reasoning traces, server-side tools, a new SQLite log schema, and a Python messages API.
LLM CLI is an open-source command-line tool built by Simon Willison that lets you talk to dozens of large language models — OpenAI, Anthropic, Google, and locally-hosted models via Ollama — through a single llm command. It handles running prompts, logging every conversation to SQLite, adding new models through plugins, and piping text in and out from the shell.
Released on August 4, 2026, version 0.32 is what its author calls "the biggest backward-compatible update since the project began." Four pillars define the release: reasoning traces streamed to stderr, server-side tool calls for OpenAI and Anthropic, a rebuilt SQLite logging schema, and a new messages= parameter for the Python API — all while keeping existing prompts and scripts working unchanged.
What LLM CLI Actually Does
- Adds dozens of LLM providers (OpenAI, Anthropic, Google Gemini, local models via Ollama) through plugins, all callable from one command
- Automatically logs every prompt and response to a SQLite database, searchable later with full-text search
- Accepts multimodal input — images, audio — as attachments
- Composes with Unix pipes, e.g. cat file | llm -s "...", for shell workflows like code review or summarization
- Supports both an interactive chat mode (llm chat) and one-shot execution
- Can be imported as a Python library and embedded directly in scripts and tools
At the core of LLM CLI is a plugin-first design: the base tool ships with no model built in, and support for a provider is added by installing a plugin, such as llm install llm-anthropic or llm install llm-ollama. That means new model families can be supported plugin by plugin, without waiting on a core release. The fact that llm-anthropic shipped its own 0.26 update alongside 0.32, adding Anthropic's server-side tools, is a direct result of that architecture.
Installing and Upgrading to 0.32
| Method | Command | Notes |
|---|---|---|
| uv | uv tool install llm | One of the methods listed in the official docs |
| pipx | pipx install llm | Installs into an isolated virtual environment |
| pip | pip install llm | Installs directly into an existing Python environment |
| Homebrew | brew install llm | For macOS/Linux |
To upgrade an existing install, use your package manager's upgrade command (uv tool upgrade llm, pipx upgrade llm, and so on). Because 0.32 rebuilds the internal logging schema, it's recommended to back up your log file first by running llm logs backup logs-backup.db before upgrading.
Getting Started in the Fewest Steps
| Goal | Example command | |
|---|---|---|
| Set an API key | llm keys set openai | |
| One-shot prompt | llm 'Ten fun names for a pet pelican' | |
| Pick a model | llm -m gpt-5.6 'Summarize this' | |
| Pipe a file in | `cat myfile.py \ | llm -s "Explain this code"` |
| Attach an image | llm "extract text" -a scanned-document.jpg | |
| Interactive chat | llm chat -m gpt-5.6 |
No provider works without a key, so start by registering one with something like llm keys set openai. Since 0.32 switched the default model to "GPT-5.6 Luna", the low-cost member of the GPT-5.6 family, a bare llm 'prompt' is enough to get a first response.
Walking Through the 0.32 Feature List
Reasoning Traces on stderr
When you use a reasoning-capable model, its chain of thought is now streamed to standard error as it's generated. Standard output stays clean — only the final response text goes there — so piping into something like llm '...' | jq still works reliably. If you don't want to see the trace, pass -R/--hide-reasoning to suppress it.
A Default Switch to the OpenAI Responses API
For OpenAI's reasoning models (the GPT-5 family and similar), the CLI now defaults to calling the /v1/responses endpoint internally. That preserves reasoning continuity across tool calls, giving more consistent behavior in multi-turn tool-use scenarios.
Server-Side Tool Calls
Server-side tools such as OpenAI's WebSearch and CodeInterpreter can now be invoked directly from the CLI — for example, llm --tool CodeInterpreter '...' hands code execution off to the model provider itself. The llm-anthropic plugin also picked up WebSearch, WebFetch, CodeExecution, and AnthropicMCP in its own 0.26 release, so server-side tools from both OpenAI and Anthropic are now reachable through LLM CLI.
A Content-Addressable Logging Schema
The SQLite log that records every conversation has been rebuilt around a content-addressable model similar to Git's object store: identical messages are referenced by hash rather than duplicated, which cuts down on redundant records while making it easier to filter and full-text search by model or tool name. Because the schema changes, backing up first with llm logs backup logs-backup.db is recommended before upgrading.
New Commands and Flags
- llm openai endpoint: a new command that runs a one-liner against any OpenAI-compatible endpoint without logging — handy for checking a locally-hosted inference server
- llm -m MODEL --options: lists the options a given model accepts
- llm prompt --json: returns the response in JSON format
- -o service_tier fast/flex: selects an OpenAI service tier
Python API Additions
As a Python library, model.prompt(messages=[...]) now accepts a full conversation history through the messages= parameter, and helper functions llm.user(), llm.assistant(), and llm.system() make it easy to build that list. On the response side, response.stream_events() lets you process structured events — reasoning, text, and so on — as they arrive; response.to_dict()/from_dict() handle serialization; and Response.log_to_db() lets you log at any point you choose. Tools can also raise llm.PauseChain to pause execution for human approval and resume later.
How It Differs from Existing Tools
LLM CLI isn't the only way to talk to a model from the terminal. Each of the alternatives leans toward a different job, so picking the right one depends on what you're actually trying to do.
| Tool | Primary focus | How it differs from LLM CLI |
|---|---|---|
| LLM CLI | Running prompts across many providers, logging, scripting integration | Centers on automatic SQLite logging, plugin-based model addition, and Python API integration |
| Ollama | Downloading, running, and serving local models | Its job is hosting the model itself; LLM CLI calls into Ollama's models through the llm-ollama plugin |
| aichat | Terminal-focused chat UI, REPL-style conversation | Built around the conversational experience; LLM CLI leans toward piping and log/database management |
| sgpt (shell-gpt) | Generating and running shell commands | Specialized for shell automation; LLM CLI is a more general-purpose prompt execution layer |
| Claude Code | Autonomous coding agent that edits files and operates on a repository | An agentic development tool; LLM CLI is not an agent, just a thin layer for calling models and logging |
| OpenAI Codex CLI | Coding assistant CLI specialized for OpenAI models | Optimized for a single provider and coding tasks; LLM CLI is built to be provider-agnostic |
In short, where Ollama is a runtime for running a model locally, LLM CLI is a thin common layer for calling whatever model is running — local or cloud — from the command line and keeping a record of it. For more on choosing local LLM tooling, see our Ollama vs LM Studio comparison.
Logging is where LLM CLI stands apart from most terminal chat tools. Many treat conversation history as disposable terminal output; LLM CLI instead structures every prompt and response into a SQLite database as it runs. With 0.32's move to a content-addressable log, cross-model search and filtering down to a specific tool call both become practical. It's probably more accurate to think of it as a record-keeping layer for LLM usage than as a one-off prompt runner.
Combining LLM CLI with Local Models
LLM CLI isn't limited to cloud APIs. Install the llm-ollama plugin and a model hosted by Ollama becomes callable through the same llm -m model-name 'prompt' syntax as any cloud model — sharing the same log database and command structure. The new llm openai endpoint command in 0.32 is also handy for a quick, unlogged check against a locally-hosted OpenAI-compatible inference server, such as one running through vLLM or LM Studio's server mode. For more on building an efficient local terminal workflow, see our Hunk terminal diff viewer piece.
Frequently Asked Questions
How should I decide between LLM CLI and an agent like Claude Code or OpenAI Codex CLI?
Claude Code and OpenAI Codex CLI are autonomous coding agents that operate on a repository and edit files directly — automating development work is their whole point. LLM CLI isn't an agent at all; it's a thin tool for calling models from multiple providers through one command line and keeping a log of the responses. For a security-focused look at CLI agents, see our OpenAI Codex security guide.
Won't reasoning traces on stderr break my pipe workflows?
No — that's the point of the design. Only the final response text goes to standard output, while reasoning traces are routed to standard error separately, so something like llm '...' | jq keeps working normally. If you'd rather not see the trace at all, suppress it with -R/--hide-reasoning.
Do I need to back up my logs before upgrading?
Yes, that's recommended. Version 0.32 rebuilds the SQLite log schema around a content-addressable model, so running llm logs backup logs-backup.db to back up your log file before upgrading is advised.
Will my existing plugins and scripts keep working after upgrading to 0.32?
For the most part, yes — the release is designed to be backward-compatible, and existing prompts and scripts should keep working. Plugins that add new model providers, however, may need an update to match 0.32's internal API changes.
References
This article draws on the following primary sources.
- Simon Willison, "A new release of LLM" https://simonwillison.net/2026/Aug/4/new-release-of-llm/
- LLM Releases (GitHub) https://github.com/simonw/llm/releases
- LLM official documentation https://llm.datasette.io/
Related free tools (no sign-up, instant results)
Feel free to contact us
Contact Us