listindex

An index of open-source mailing lists — for agents, and for the people who maintain the code those lists discuss.

Status: building. The service is deployed and the archives are being ingested, but no data is served yet. Query endpoints currently return 503 with a JSON body saying so. This page documents the interface they will present.

Why this exists

Archives like lore.kernel.org are being hammered by agents that crawl rendered HTML one message at a time, with no caching and no bulk path — hundreds of requests to reconstruct a single thread, repeated independently by every agent. Hosts respond by blocking, and then nobody can read the archives.

listindex is an alternative rather than a fix to those hosts. It mirrors the archives politely over the git epochs public-inbox already publishes, extracts the structure once, and serves immutable, edge-cached answers. It also answers questions no archive can, because it correlates mail against the git trees: which tree did this patch land in, who reviewed it, was it backported, and has this been proposed and rejected before?

Free, and no accounts

No sign-up, no API keys, no rate limit on reads. That is not generosity, it is the architecture: authenticated responses cannot be shared in a cache, so removing auth is what makes serving this cheap enough to give away.

URLs

/t/<message-id>            a thread
/m/<message-id>            one message
/s/<slug>/v<N>             a patch series, one version
/path/drivers/phy/aspeed/  everything posted touching a path
/commit/<sha>              the review thread behind a commit
/search?q=...&path=...     search

Append .json, or send Accept: application/json, for machine-readable output.

Existing tooling works unchanged

The lore URL space is mirrored exactly, so every Link: trailer in every kernel commit resolves here by substituting the host:

/<list>/<message-id>/
/<list>/<message-id>/T/
/<list>/<message-id>/t.mbox.gz

Which means b4 can be pointed here directly:

b4 --midmask 'https://listindex.net/all/%s' am <message-id>

For agents

An MCP endpoint will be served at /mcp. Results are thread-level and pre-digested rather than raw mail, because the point is to answer a question in one to three calls — handing back fifty messages just moves the crawl into your context window.

ToolAnswers
searchthread-level hits; filter by path, author, date, provenance
get_threada thread, quoted text stripped, bot mail labelled
get_seriesa series, every version, what changed between them
find_discussion_of_commitcommit SHA → review thread
patches_touchingpath or symbol → every posting that touched it
unansweredpatch rot: posted, no human reply, older than N days
who_reviewspath → who actually reviews there, from evidence
prior_arthas this been proposed before, and what happened

Every response carries stable citation URLs, a provenance label so you are never told that four hundred build-robot reports are "the discussion", and a complete flag. A timeout returns a partial answer rather than an error, deliberately: an agent that gets an error retries and doubles the load, one that gets an answer stops.

If you want all of it, take all of it

Please do not crawl. There is a bulk path, and it is free because object storage egress here costs nothing:

curl -O https://listindex.net/dumps/latest/messages.parquet
git clone https://listindex.net/mirror/<list>/git/0.git

The mirrored git epochs are the same ones public-inbox publishes, so you can run your own index from them. See /llms.txt.

Being a good neighbour

Ingest is git fetch against the published epochs — the mechanism kernel.org supports for mirroring. No HTML is scraped, nothing is rate-limit-evaded, and the mirrors are re-served from here so that this service reduces load on lore rather than adding to it.