An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
LLM
A CLI tool and Python library for interacting with OpenAI, Anthropic’s Claude, Google’s Gemini, Qwen, Gemma, Kimi, DeepSeek, Mistral, and dozens of other Large Language Models, both via remote APIs and with models that can be installed and run on your own machine.
Watch Language models on the command-line on YouTube for a demo or read the accompanying detailed notes.
With LLM you can:
Run prompts from the command-line
Store prompts and responses in SQLite
Generate and store embeddings
Extract structured content from text and images
Grant models the ability to execute tools
… and much, much more
Quick start
First, install LLM using pip or Homebrew or pipx or uv:
pip install llm
Or with Homebrew (see warning note):
brew install llm
Or with pipx:
pipx install llm
Or with uv
uv tool install llm
Use LLM to run prompts or start chats against an arbitrary OpenAI-compatible Chat Completions endpoint, such as LM Studio. With uvx, you can do this without installing LLM first:
uvx llm openai endpoint http://localhost:1234/v1 \
-m google/gemma-4-12b \
"What is the capital of France?"
uvx llm openai endpoint http://localhost:1234/v1 \
-m google/gemma-4-12b \
--chat
Add --key your-api-key if the endpoint requires authentication. See Run against an endpoint without configuring it for more options.
If you have an OpenAI API key key you can run this:
# Paste your OpenAI API key into this
llm keys set openai
# Run a prompt (with the default gpt-6-luna model)
llm "Ten fun names for a pet pelican"
# Extract text from an image
llm "extract text" -a scanned-document.jpg
# Use a system prompt against a file
cat myfile.py | llm -s "Explain this code"
Run prompts against Gemini or Anthropic with their respective plugins:
llm install llm-gemini
llm keys set gemini
# Paste Gemini API key here
llm -m gemini-3.5-flash 'Tell me fun facts about Mountain View'
llm install llm-anthropic
llm keys set anthropic
# Paste Anthropic API key here
llm -m claude-sonnet-5 'Impress me with wild facts about turnips'
You can also install a plugin to access models that can run on your local device. If you use Ollama:
# Install the plugin
llm install llm-ollama
# Download and run a prompt against the Orca Mini 7B model
ollama pull llama3.2:latest
llm -m llama3.2:latest 'What is the capital of France?'
To start an interactive chat with a model, use llm chat:
llm chat -m gpt-4.1
Chatting with gpt-4.1
Type 'exit' or 'quit' to exit
Type '!multi' to enter multiple lines, then '!end' to finish
Type '!edit' to open your default editor and modify the prompt.
Type '!fragment <my_fragment> [<another_fragment> ...]' to insert one or more fragments
> Tell me a joke about a pelican
Why don't pelicans like to tip waiters?
Because they always have a big bill!
Project news
29th April 2026: LLM 0.32a0 is a major backwards-compatible refactor
11th August 2025: LLM 0.27, the annotated release notes: GPT-5 and improved tool calling
27th May 2025: Large Language Models can run tools in your terminal with LLM 0.26
5th May 2025: Feed a video to a vision LLM as a sequence of JPEG frames on the CLI (also LLM 0.25)
7th April 2025: Long context support in LLM 0.24 using fragments and template plugins
28th February 2025: Structured data extraction from unstructured content using LLM schemas
17th February 2025: LLM 0.22, the annotated release notes
29th October 2024: You can now run prompts against images, audio and video in your terminal using LLM
26th January 2024: LLM 0.13: The annotated release notes
12th September 2023: Build an image search engine with llm-clip, chat with models with llm chat
4th September 2023: LLM now provides tools for working with embeddings
12th July 2023: The LLM CLI tool now supports self-hosted language models via plugins
18th May 2023: llm, ttok and strip-tags—CLI tools for working with ChatGPT and other LLMs
4th April 2023: The original announcement of the llm CLI tool
For everything else, see the llm tag on my blog.
Contents
Setup
Installation
Upgrading to the latest version
Using uvx
A note about Homebrew and PyTorch
Installing plugins
API key management
Saving and using stored keys
Passing keys using the –key option
Keys in environment variables
Configuration
Setting a custom default model
Setting a custom directory location
Turning SQLite logging on and off
Usage
Executing a prompt
Model options
Attachments
System prompts
Tools
Extracting fenced code blocks
JSON output
Schemas
Fragments
Continuing a conversation
Tips for using LLM with Bash or Zsh
Completion prompts
Starting an interactive chat
Listing available models
Setting default options for models
OpenAI models
Configuration
OpenAI language models
Model features
Web Search
Code Interpreter
Fast mode and service tiers
OpenAI embedding models
OpenAI completion models
Adding more OpenAI models
Other models
Installing and using a local model
OpenAI-compatible models
Run against an endpoint without configuring it
Configure an OpenAI-compatible model
Extra HTTP headers
Tools
How tools work
Trying out tools
LLM’s implementation of tools
Default tools
Tips for implementing tools
Schemas
Schemas tutorial
Getting started with dogs
Extracting people from a news articles
Using JSON schemas
Ways to specify a schema
Concise LLM schema syntax
Saving reusable schemas in templates
Browsing logged JSON objects created using schemas
Templates
Getting started with –save
Using a template
Listing available templates
Templates as YAML files
System prompts
Fragments
Options
Tools
Schemas
Additional template variables
Specifying default parameters
Configuring code extraction
Setting a default model for a template
Template loaders from plugins
Fragments
Using fragments in a prompt
Using fragments in chat
Browsing fragments
Setting aliases for fragments
Viewing fragments in your logs
Using fragments from plugins
Listing available fragment prefixes
Model aliases
Listing aliases
Adding a new alias
Removing an alias
V
Read the full README on GitHub