Overview
LLM is a command-line tool and Python library, created by Simon Willison, for interacting with OpenAI, Anthropic's Claude, Google's Gemini, Qwen, Gemma, Kimi, DeepSeek, Mistral and dozens of other language models — both through remote APIs and through models installed on your own machine. The design principle is that a language model is a Unix-shaped thing: you pipe a file into it, give it a system prompt, and get text back on stdout.
Provider support is a plugin system rather than a monolith. The core package ships OpenAI-compatible support, including the ability to point at any OpenAI-compatible endpoint such as a local LM Studio server, and `llm install llm-gemini`, `llm install llm-anthropic` or `llm install llm-ollama` add the rest. Keys are managed by the tool with `llm keys set`, so credentials do not need to live in your shell profile.
Beyond one-shot prompting, LLM stores every prompt and response in SQLite, runs an interactive `llm chat` session, generates and stores embeddings, extracts structured content from text and images with schemas, and grants models the ability to execute tools. It installs from pip, Homebrew, pipx or uv, and can be run without installing at all through uvx.
What it does
- One CLI over remote APIs and locally installed models, with providers added as plugins (llm-gemini, llm-anthropic, llm-ollama and many more)
- Every prompt and response logged to a local SQLite database you can query afterwards
- Attachments: run prompts against images, audio and video with the -a option
- Embeddings generation and storage, so the same tool builds a semantic index
- Schemas for extracting structured content out of unstructured text and images
- Tool execution — models can be granted the ability to run tools from your terminal
- Interactive chat mode with multi-line input, an editor escape, and fragment insertion
Getting started
LLM installs from pip, Homebrew, pipx or uv. Set a key once, then prompt. Everything below is from the project's own quick start.
Install it
Any of these work; uv and pipx keep it isolated from your project environments.
pip install llm
# or: brew install llm
# or: pipx install llm
# or: uv tool install llmStore a key and run a prompt
llm keys set saves the key for you. The bare llm command runs against the default model.
llm keys set openai
llm "Ten fun names for a pet pelican"Pipe files in, send images
-s sets a system prompt, -a attaches a file such as an image.
cat myfile.py | llm -s "Explain this code"
llm "extract text" -a scanned-document.jpgAdd other providers, or a local model
Each provider is a plugin. llm-ollama runs whatever you have pulled locally; you can also point at any OpenAI-compatible endpoint without configuring it first.
llm install llm-anthropic
llm keys set anthropic
llm -m claude-sonnet-5 'Impress me with wild facts about turnips'
llm install llm-ollama
ollama pull llama3.2:latest
llm -m llama3.2:latest 'What is the capital of France?'Chat interactively
llm chat keeps the conversation open, with !multi for multi-line input and !edit to open your editor.
llm chat -m gpt-4.1Commands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Use a model inside a shell pipeline — pipe a file in, get an explanation or a rewrite out
- Compare the same prompt across several providers and local models without writing per-vendor client code
- Keep an auditable local SQLite log of everything you have asked a model and everything it answered
- Build a small embeddings-backed search over your own notes or documents from the command line
- Extract structured JSON out of scanned documents or unstructured text using schemas
LLM in the news
- 2026-09-02MAJORQuasar 438B — Multiverse Computing's first large model, built in Europe
- 2026-08-25MAJORIBM Granite 4.2 — open reasoning models with a thinking switch
- 2026-08-23NOTABLEEd-o-meter — a 28-task LLM leaderboard that runs every model down one track
- 2026-08-23MAJORRay 2.58.0 — KV-cache-aware routing lands for LLM serving
- 2026-08-22NOTABLELLM 0.33 — Simon Willison's CLI moves to the OpenAI Python 3.x library
- 2026-08-21MAJORGrok 4.6 on Google's agent platform — xAI's flagship arrives in Model Garden
- 2026-08-21MAJORGPT-5.6 Sol price cut — OpenAI drops API rates over 20% for three months
- 2026-08-21MAJORDeepSeek V4-Flash-Vision-Exp — an experimental V4 model that reads images
From the AI/TLDR release feed — every item is source-verified when it ships.
How LLM compares
LLM alongside other open-source app frameworks tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| LangChain | ★ 146k | A widely used Python and JavaScript framework for building LLM applications by composing models, prompts, tools, retrievers, and memory into chains. |
| LlamaIndex | ★ 52k | A data framework for connecting language models to your own documents and data sources, with built-in agent and retrieval (RAG) tooling. |
| Haystack | ★ 26.4k | An orchestration framework from deepset for building modular LLM pipelines and agents for search, RAG, and question answering. |
| Jina | ★ 21.9k | Jina-serve is a Python framework for building, scaling, and deploying AI services and multi-step pipelines that communicate over gRPC, HTTP, and WebSockets. |
| LLM | ★ 12.5k | Access dozens of language models from the command line, and log every one to SQLite |
| Prompt Flow | ★ 11.2k | Microsoft's toolkit for building LLM apps as executable flows that link prompts, Python code, and tools, with tracing, batch evaluation, and deployment. |
| Rig | ★ 8.5k | A Rust library for building LLM-powered applications, giving one unified interface over 20+ model providers and 10+ vector stores plus an agent runtime with streaming, tools, and OpenTelemetry GenAI tracing. |