Rollup

A bounded briefing from mail you already keep.

Read newsletters from your Thunderbird mbox — plus optional LinkedIn, Reddit, and saved pages — and write a calm periodic digest. Mail stays read-only. Inference stays yours.

The briefing, not another stream

Thunderbird owns the ongoing stream. Rollup takes a time window and produces a finite reading object — Markdown, HTML, and optional EPUB / e-ink. It is not an RSS reader.

Digest

Classify, group, and summarise a lookback window. Default run uses preview excerpts and makes no network calls.

Local web UI

Loopback Flask extra: Archive, Run Studio, Settings, Articles, LinkedIn, Reddit, and Admin — same TOML and SQLite as the CLI.

Optional sources

LinkedIn, Reddit, and webpage capture are ingest transports for that window, not inboxes. Credentials never live in TOML.

Local AI, when you want it

Pass --ollama for local summaries. Final-review QA is independent. Default digest stays offline.

What can I do with it?

  • Turn a week of newsletters into one bounded digest
  • Browse the archive in a loopback web UI
  • Schedule unattended runs with launchd or cron
  • Fold in LinkedIn, Reddit, or saved articles at digest time
  • Write Markdown, HTML, EPUB, or e-ink artifacts

Walkthrough: examples. Not sure if this is the right tool? product contract · comparison.

On your machine

Rollup never writes, deletes, or renames anything under your mail root. Output, state, and logs stay outside the store. The default digest performs no network calls. The web UI binds loopback and is single-user.

From a checkout to a digest

  1. Bring up with Docker Compose and confirm docker compose exec rollup rollup doctor … is clean.
  2. Set mail/output paths in Settings, then run a digest from Run Studio (preview summaries, no network).
  3. Browse the archive at http://localhost:8765 (loopback).
  4. Optionally enable Ollama, schedule digests, or add LinkedIn / Reddit / articles.

Docker · Examples · Config · Web UI · Cron

Install

Default deploy is Docker. Thunderbird mbox (not Maildir). No Ollama server for the default digest.

git clone https://github.com/glen-w/rollup.git
cd rollup
mkdir -p ~/.config/rollup ~/Documents/rollup-outputs ./state ./logs
touch ~/.config/rollup/config.toml ~/.config/rollup/env
chmod 600 ~/.config/rollup/env
cp docker-compose.override.yml.example docker-compose.override.yml
docker compose up -d --build
open http://localhost:8765

Full mounts and Ollama notes: Docker guide. Host Python / venv is an advanced alternative in the README.

Details: Documentation · README