What It Does
Simon Willison's llm is a command-line interface for language models that embodies the Unix philosophy: do one thing well. It lets you interact with any LLM from your terminal — OpenAI, Anthropic, Gemini, local models via Ollama, and dozens more — through a single, consistent interface.
- One command, any model —
llm -m gpt-4.5 "explain this error"orllm -m claude-opus "review this code" - Piping support —
cat log.txt | llm "summarize these errors"integrates with your existing shell workflow - Conversation mode —
llm chat -m gpt-4.5for multi-turn interactions without leaving the terminal - Embeddings — Generate and store vector embeddings for semantic search over your files
- Logs and history — Every prompt and response is logged to SQLite for search and analysis
The Plugin Ecosystem
The real power of llm is its plugin system. The community has built plugins for:
- Running local models (Ollama, llama.cpp, MLX)
- Generating images (DALL-E, Stable Diffusion)
- Speech-to-text and text-to-speech
- Custom model providers (Mistral, Cohere, Groq, Together AI)
- Tools for extracting content from web pages, PDFs, and datasets
Why Terminal-First Matters
Most AI tools are either web apps or heavy SDKs. The terminal is the forgotten interface. But for developers, the terminal is where work actually happens. Being able to pipe logs into an LLM, ask it about an error, and get the answer inline — without switching to a browser or IDE — is a workflow improvement that compounds daily. It's the difference between "AI as a tool you visit" and "AI as a tool that lives in your workspace."
Simon Willison builds tools the way they should be built: small, composable, and opinionated in exactly the right ways. llm is the tool I use most daily — not because it's the most powerful AI tool, but because it's the most accessible. When I can ask a question about a file without leaving my editor, I ask more questions and get better answers. That's the entire point of good tooling.