Single Serving

Read later, for people who don't

A reading list that empties itself.

Save it once. Read it once. Let it go. Nothing piles up here, because nothing is meant to stay.

Inbox 4 items · 2 expire this week3 items · 1 expires this week

Why your to-read pile is a to-do list in disguise

slowmedia.blog
2 days leftexpired

A short history of the index card

paper-trail.studio
21 days left

Notes on writing a sync protocol twice

hexdump.diary
read · leaves tonight

The quiet failure of offline-first apps

mockingbird.dev
6 days left

The bar is time, not progress. Watch it for a moment — one of these is about to go.

Closed beta · invites in small batches

What a year of saving looks like

Both of these are real numbers from my own accounts — the old app on the left, this one on the right, same person, same reading habits.

A list that remembers

412

items saved, the oldest from two years ago, filed into seven folders I have not opened since.

A list that forgets

6

items in the inbox right now. The oldest is twenty-nine days old and leaves tomorrow morning.

How it works

  1. Save itShare sheet, browser extension, or the API. The title resolves in the background, so saving never blocks on a slow page.
  2. Read itOpening an item marks it spent. It stays until the end of the day in case you want to finish it, then leaves on its own.
  3. Or don'tAnything untouched expires after thirty days. No archive, no folders, no guilt. If it mattered, you will run into it again.

On the phone, and when it is done

9:41Single Serving

The quiet failure of offline-first apps

mockingbird.dev

Saved · expires in 30 days
Nothing left.That is the idea. Come back when you have saved something.

Sync

Each client keeps its own store and holds one connection to a single endpoint. Changes are pushed as they happen, so a link saved on a phone is on the laptop before the phone is back in a pocket.

POST /cdn/v3/sync/     long-lived, length-prefixed frames
GET  /api/v3/items     the same objects, if you prefer to poll

Sync shares the edge path with the static assets, which is why it sits under /cdn/. The docs explain the protocol and why it stays there.

Getting in

Invites go out in small batches, mostly to people who write to me first. There is no waiting list form — I would only forget to read it. The address is in security.txt; a sentence about what you read is plenty.