Every page below is real output: live APIs, a real model, and the deterministic renderer that produces every byte of markup. Nothing was hand-written or touched up. Each one is a single JSON job spec plus a markdown prompt.
Weather, three news outlets kept deliberately separate, and on-this-day. The model contrasts how two outlets framed the same story, which is only possible because the feeds stay labelled all the way into the prompt.
Archaeology and astronomy feeds plus a historical entry. No work content and no productivity framing, on purpose: an inbox that only ever contains work stops getting opened.
Hugging Face and arXiv, queried directly so the model receives real model ids, download counts, paper titles and links. It cannot invent a number it was handed.
Your git log, diffstat, contributors and TODO markers, read from the working tree at the moment the email is built. This is the source no cloud scheduler can reach.
The minimal shape worth copying: a couple of local files and a git log. Start here, then swap in your own sources.
The optional companion artifact: a self-contained interactive fragment generated after the email is sent, responding to the same material. Click it.
Three themes ship (warm, slate, ink) and are chosen per job with one field. The model writes markdown only; the theme owns all HTML, so the layout is byte-identical every run and house style is enforced in code rather than requested from a model. That is the difference between an email that looks right today and one that still looks right in eight months.
Ten sources are built in: file, glob,
recent, shell, hf, arxiv,
rss, news, history, weather.
Anything with a feed or an API can join them in about thirty lines.
Nothing repeats. A seen-ledger strips items you have already been sent before the model ever sees them, so day two is not a reprint of day one.
Run any of these yourself with agentmailkit run morning-brief --dry-run.
Source on GitHub
· the Taper form comes from taper.badquar.to.