Coding agents and dev tools · Edition No. 7 · 1 Sep 2026

simonw/llm

Command-line pipe to any model, with every prompt and response logged to a queryable SQLite file.

← Coding agents and dev toolsRead the whole edition →

12.5k stars · Apache-2.0 · 0.35 (2026-09-07) · Track this in Scout

Command-line pipe to any model, with every prompt and response logged to a queryable SQLite file.

▶Repo detailsthe review · specs · pros & cons · install

What it is

A command-line tool for talking to language models. You pipe text in, get text out, and every exchange is logged to a local SQLite file you can search afterwards. It speaks to the major hosted providers and, through plugins, to local models; it supports saved prompt templates, fragments, schemas for structured output, and embeddings.

What it is good for. For anyone already using Claude Code, the case for this is narrow and specific: bulk. Claude Code is a conversation; this is a pipe. When entry 05 hands you nine thousand comments across forty videos, the useful shape is cat comments.jsonl | llm -s "extract every distinct complaint about the tool being explained" run over each file in a loop, not forty chat sessions. The same applies to the Edition 6 corpora — every competitor article trafilatura pulled down, every transcript, every Reddit thread. Two features earn their place beyond that. Saved templates mean the prompt you spent an hour refining — "summarise this transcript as a video outline in English and Russian" — becomes a named command you reuse for a year. And the SQLite log means the work is queryable: three months from now you can ask which titles you generated in July, and get an answer. It is also a very fast way to prototype a product's prompt before writing any FastAPI code, and it sits naturally behind LiteLLM from Edition 5 when you want the spend capped.

Stars12.5k
LicenceApache-2.0
Latest0.35 (2026-09-07)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Setup effort
1 / 5
Payoff
4 / 5
Good
  • Apache-2.0 and Unix-shaped: it composes with cat, xargs and a for loop, which is exactly what bulk work needs
  • Every prompt and response logged to SQLite — your research becomes searchable instead of scrolling back through chats
  • Reusable prompt templates and a large plugin ecosystem, including local models when a job is too big to pay for
Watch for
  • It calls paid APIs, and a loop over four hundred files is a real bill. Set a budget and a cheap model as the default before the first big run — this is precisely the argument for LiteLLM
  • It overlaps Claude Code enough that it will feel redundant until the first time you have four hundred files, at which point it will not
  • The plugin surface is large and moves quickly; pin the version and use the small part you need
Install
pip install llm
Screenshots
simonw/llm: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.