Simon Willison just shipped LLM 0.32, and it’s the kind of update that makes CLI tools feel less like throwback tech and more like the right interface for working with AI models.
The headline feature: LLM can now display reasoning traces from models that support them. If you’re using a model through OpenRouter (via the llm-openrouter plugin, just updated to 0.7), you can watch the model’s internal reasoning unfold in your terminal. It’s the same extended thinking capability that o1 made famous, but accessible through a tool that lives where developers actually work.
This matters because reasoning traces aren’t just novelty output. They’re debugging information. When a model gives you a weird answer, seeing its reasoning lets you spot where it went off track. That’s valuable whether you’re prototyping a feature, debugging a prompt, or just trying to understand why the AI insists your Python is incorrect.
LLM 0.32 also adds three server-side tools: Shell, WebFetch, and WebSearch. Enable them with flags like -T WebSearch and the model can execute shell commands, fetch web content, or search the internet as part of generating a response.
This is agent territory, but implemented as opt-in flags on a CLI tool you already control. You’re not configuring some autonomous system. You’re adding capabilities to a command you run when you want them.
The timing is good. OpenRouter’s implementation of the Responses API means these tools work across multiple models, not just one vendor’s ecosystem. If you want Claude to search the web while answering a question, or let GPT-4 run a shell command to check a file, you can do that now without switching tools.
LLM 0.32.1 landed shortly after 0.32 to fix a breaking issue. Fresh installs stopped working because OpenAI’s Python library dropped its httpx dependency, and LLM had been relying on that transitive install instead of declaring httpx directly.
The fix pins to openai<3 temporarily. LLM 0.33 will switch from httpx to httpx2, which is the longer-term solution but required more work than a dot-release could handle.
It’s the kind of break that happens when you depend on implementation details instead of interfaces. Not exciting, but fixed quickly enough that most users probably didn’t notice.
If you’re already using LLM, update now. The reasoning traces alone are worth it if you work with models that support them, and the server-side tools open up new workflows without requiring you to learn a different tool.
If you’ve been using the OpenAI or Anthropic CLIs, or switching between model providers manually, LLM is worth trying. It’s a unified interface that works with dozens of providers and doesn’t require you to manage API keys separately for each one.
If you don’t work in the terminal much, this update won’t change that. But for developers who already live in zsh or bash, LLM keeps getting better at being the AI interface that fits how they work.
The llm-openrouter plugin is separately versioned at 0.7 and required for the reasoning trace features with OpenRouter models. Install it with llm install llm-openrouter if you haven’t already.
One email at dawn. The five stories that mattered, with the bits removed and the meaning kept. Free, for now.