Source

Query public mailing-list archives with SQL

Public mailing-list and Usenet archives — the Linux kernel list, GNOME, Fedora, extropians, SL4, and about 51,000 more lists — threaded and queryable with read-only SQL by list, author, date, and text.

Surface

  • Records383.2M+ messages
  • Canonicalmailing_lists.messages
  • FreshnessLive— the historical list estate is a fixed archive; only the declared public Google Groups subset is continuously refreshed
  • Cadencehistorical list estate is a fixed archive; the declared public Google Groups subset keeps landing
  • MethodPublic list archives (gmane, vger.kernel.org, Google Groups) with source-native message headers and threading.
  • StatsLast stats snapshot: 2026-08-27T12:11:07Z

Query surfaces

  • mailing_lists.messages
  • mailing_lists.catalog
  • embeddings.mailing_list_messages

Public list archives (gmane, vger.kernel.org, Google Groups) with source-native message headers and threading.

Best for

who said what on the Linux kernel list (6.4M messages) and other engineering lists, decades back
thread reconstruction via parent_message_key / root_message_key
per-list inventory — message counts and first/last dates — from mailing_lists.catalog

Fields

  • message_key
  • list_key
  • source
  • external_type
  • kind
  • message_id
  • parent_message_key
  • root_message_key
  • in_reply_to
  • references_header
  • google_thread_id
  • google_post_id
  • google_message_index
  • uri
  • payload
  • blake3_hash
  • original_author
  • original_timestamp
  • title
  • normalized_subject
  • word_count
  • metadata
  • quality_score
  • quality_issues
  • is_polished
  • entity_id
  • created_at
  • updated_at
  • is_deleted

Read live from the schema registry for mailing_lists.messages — 29 columns. Every relation's full contract is served by /v1/scry/schema.

Indexed predicates

  • PruneshasToken(lower(payload), '<lowercase-token>')
  • PruneshasAllTokens(lower(payload), ['<t1>','<t2>'])

Queries

The largest lists in the archive

The catalog is one row per list with landed counts and date range — the fastest way to see what is here.

SELECT list_key, landed_message_count, first_message_at, last_message_at
FROM mailing_lists.catalog
ORDER BY landed_message_count DESC
LIMIT 20;

A topic on the Linux kernel list, newest first

Scope the list, then match lowercase tokens against the message body.

SELECT message_key, original_author, original_timestamp, title
FROM mailing_lists.messages
WHERE list_key = 'gmane.linux.kernel'
  AND hasAllTokens(lower(payload), ['rust', 'maintainer'])
ORDER BY original_timestamp DESC
LIMIT 20;

Gaps

  • HolesNone declared on the live schema entry for mailing_lists.messages (declared holes are curation, not a measurement of completeness).
  • Notethe table orders by message_key only: scope list_key before a token probe, or a broad search reads the whole 337M-message estate
  • Notesome lists carry header-derived timestamps outside their real range (1970 or far-future dates on a few org.kernel.vger.* messages) — bound original_timestamp when you aggregate by date
  • Notegmane and vger mirrors of the same list both land under their own list_key (gmane.linux.kernel and org.kernel.vger.linux-kernel) — pick one before counting