Search forty years of PostgreSQL.
Every message from the PostgreSQL community mailing lists, 1991 to today, mapped to the commits, code, and documentation they produced.
Try: HOT pruning · why REPACK was renamed · s:vacuum f:lane · browse the lists →
Loading corpus stats…
From a discussion to the code it became
Every archive here is cross-linked: a mailing-list thread points to the commit it produced, the commit points to the symbols it changed, and each of those points back to the discussion. Follow any thread to the code, or any commit back to the argument that shaped it.
Search forty years of PostgreSQL commits
The full postgres git history since 1996, searchable by
commit message, author and file path. It replaces the commit search on
git.postgresql.org/gitweb, which now answers most searches with
429 Too Many Requests.
Your existing gitweb search URLs keep working: change the host and
nothing else —
https://pg.ddx.io/gitweb/?p=postgresql.git;a=search;s=visibility+map;st=commit
(st=author, st=committer and st=grep work too).
As JSON: GET /api/v2/repos/postgres/commits?q=… ·
from an agent: the git_search MCP tool ·
git API guide →
Ask it from your AI agent
The MCP server gives an agent the whole archive — every list
back to 1991, the full postgres history, commitfest, buildfarm
— as tools it can call, instead of pages it has to scrape. Ask
"why did PostgreSQL move recovery.conf into GUCs?" and the agent can
find the thread, read the argument, and follow it to the commit that landed,
each with a citable link.
Add it to any MCP client (Claude Code, Cursor, Zed, an Agent SDK app):
https://pg.ddx.io/mcp
Streamable HTTP, JSON-RPC 2.0. No key, no account.
For Claude Code: claude mcp add --transport http pg-ddx https://pg.ddx.io/mcp
A good loop is hybrid_search → read the excerpts it returns
→ get_message the ones that matter →
git_search / commit_history to reach the code. Every
result says where it came from.
All 109 tools, with arguments →
What do you want to do?
Each answer lists the ways to do it, best first. All of them are free and need no account.
Keep your own copy of a mailing list
- Clone it with git. One transfer gets the whole list; later,
git fetchbrings only what is new.git clone https://pg.ddx.io/m/pgsql-hackers.git git -C pgsql-hackers fetch # later
Each commit is one message (public-inbox v2 format). Over SSH:git clone ssh://git@git.pg.ddx.io:22/pgsql-hackers.git - Mirror it into a mailbox with
imapsync, if you want the mail in your own IMAP server rather than as git. Point it atimap.pg.ddx.io:993with any username and password. Each list is split into numbered folders (pgsql-hackers.0….86), so select a numbered folder, not the bare list name. IMAP details → - Download a range as mbox for a one-off:
https://pg.ddx.io/m/pgsql-hackers/<from>-<to>.mbox.gz. The numbers come from/m/pgsql-hackers/info.json.
Please do not build a copy by fetching messages one at a time over HTTP. It is far slower for you, and at scale it is what takes this one-server site down. See agents.txt.
Be told when new mail arrives on a list
- Subscribe to the list's feed in any feed reader:
https://pg.ddx.io/m/pgsql-hackers/new.atom(orrss.xml). For new threads only:topics_new.atom; for threads with fresh replies:topics_active.atom. - Leave a mail client connected to
imap.pg.ddx.io:993on the newest numbered folder; the server pushes new mail with IMAP IDLE. - From code or an agent, poll with a cursor so you only ever see
what is new: the
get_new_messagesMCP tool takes the last article number you saw and returns what came after it.
Read a list without subscribing to it
- In your browser: browse the archive, threaded, with every message linked to the commits it led to.
- In your mail client, as a read-only account:
IMAP serverimap.pg.ddx.io, port993, SSL/TLS, any username and password. Every list appears as folders. Nothing you do there can send mail or change anything. - In a newsreader:
nntp.pg.ddx.io, port119. Each list is a newsgroup (pgsql-hackers). Plain text only; use IMAP if you need TLS.
Be told when new commits land in a repository
- Subscribe to the commit feed:
https://pg.ddx.io/gitweb/?p=postgresql.git;a=atom. Each entry is one commit with its full message, including theDiscussion:link back to the thread. Swap the project name forpgbouncer,pgjdbc, and the rest listed on /gitweb/. - Follow the committers list if you would rather have it by mail:
https://pg.ddx.io/m/pgsql-committers/new.atom, or the same list over IMAP.
Search commits the way you used to on git.postgresql.org
Use the same gitweb URLs with the host changed:
https://pg.ddx.io/gitweb/?p=postgresql.git;a=search;s=visibility+map;st=commit
st=commit searches commit messages, st=author and
st=committer search names, and st=grep searches the
source tree for a string and links each file and line. Or use the search box
above, the /api/v2/repos/postgres/commits?q= JSON API, or the
git_search MCP tool.
Open postgresql.org links here automatically
The pg.ddx.io redirector sends
postgr.es/m/… and postgresql.org/message-id/… links to
the threaded view here, and gitweb links to the gitweb here. Available as a
userscript for any browser and as a Chrome extension.
Free. Read-only. Nothing about you is stored.
No accounts, no cookies, no tracking, no ads. Every page here is the same for everyone. Every archive is also a git repo you can clone and keep.
Run by one person as a public good. What it costs →