Using llm
itself preserves plugins.
$ llm install -U llm
Requirement already satisfied: llm in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (0.23)
Collecting llm
Downloading llm-0.24-py3-none-any.whl.metadata (6.8 kB)
Requirement already satisfied: click in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (8.1.8)
Collecting condense-json>=0.1.2 (from llm)
Downloading condense_json-0.1.2-py3-none-any.whl.metadata (4.5 kB)
Requirement already satisfied: openai>=1.55.3 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (1.66.2)
Requirement already satisfied: click-default-group>=1.2.3 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (1.2.4)
Requirement already satisfied: sqlite-utils>=3.37 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (3.38)
Requirement already satisfied: sqlite-migrate>=0.1a2 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (0.1b0)
Requirement already satisfied: pydantic>=2.0.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (2.10.6)
Requirement already satisfied: PyYAML in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (6.0.2)
Requirement already satisfied: pluggy in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (1.5.0)
Requirement already satisfied: python-ulid in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (3.0.0)
Requirement already satisfied: setuptools in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (76.0.0)
Requirement already satisfied: pip in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (25.0.1)
Requirement already satisfied: puremagic in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm) (1.28)
Requirement already satisfied: anyio<5,>=3.5.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (4.8.0)
Requirement already satisfied: distro<2,>=1.7.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (1.9.0)
Requirement already satisfied: httpx<1,>=0.23.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (0.28.1)
Requirement already satisfied: jiter<1,>=0.4.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (0.9.0)
Requirement already satisfied: sniffio in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (1.3.1)
Requirement already satisfied: tqdm>4 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (4.67.1)
Requirement already satisfied: typing-extensions<5,>=4.11 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm) (4.12.2)
Requirement already satisfied: annotated-types>=0.6.0 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from pydantic>=2.0.0->llm) (0.7.0)
Requirement already satisfied: pydantic-core==2.27.2 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from pydantic>=2.0.0->llm) (2.27.2)
Requirement already satisfied: sqlite-fts4 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm) (1.0.3)
Requirement already satisfied: tabulate in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm) (0.9.0)
Requirement already satisfied: python-dateutil in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm) (2.9.0.post0)
Requirement already satisfied: idna>=2.8 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from anyio<5,>=3.5.0->openai>=1.55.3->llm) (3.10)
Requirement already satisfied: certifi in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpx<1,>=0.23.0->openai>=1.55.3->llm) (2025.1.31)
Requirement already satisfied: httpcore==1.* in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpx<1,>=0.23.0->openai>=1.55.3->llm) (1.0.7)
Requirement already satisfied: h11<0.15,>=0.13 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai>=1.55.3->llm) (0.14.0)
Requirement already satisfied: six>=1.5 in /Users/sbhattacharya/.local/share/uv/tools/llm/lib/python3.13/site-packages (from python-dateutil->sqlite-utils>=3.37->llm) (1.17.0)
Downloading llm-0.24-py3-none-any.whl (59 kB)
Downloading condense_json-0.1.2-py3-none-any.whl (8.5 kB)
Installing collected packages: condense-json, llm
Attempting uninstall: llm
Found existing installation: llm 0.23
Uninstalling llm-0.23:
Successfully uninstalled llm-0.23
Successfully installed condense-json-0.1.2 llm-0.24
$ llm plugins
[
{
"name": "llm-ollama",
"hooks": [
"register_commands",
"register_embedding_models",
"register_models"
],
"version": "0.9.1"
},
{
"name": "llm-anthropic",
"hooks": [
"register_models"
],
"version": "0.15.1"
}
]
Using uv
to upgrade keeps its metadata synced with the actual version installed, but it wipes out the plugins.
$ uv tool upgrade llm
Modified llm environment
- anthropic==0.49.0
- anyio==4.8.0
+ anyio==4.9.0
- llm-anthropic==0.15.1
- llm-ollama==0.9.1
- ollama==0.4.7
- openai==1.66.2
+ openai==1.71.0
- pydantic==2.10.6
+ pydantic==2.11.2
- pydantic-core==2.27.2
+ pydantic-core==2.33.1
- setuptools==76.0.0
+ setuptools==78.1.0
- typing-extensions==4.12.2
+ typing-extensions==4.13.1
+ typing-inspection==0.4.0
$ llm plugins
[]