Most feeds are a slot machine. You open one to kill thirty seconds, and the thing is built so that thirty seconds and two hours feel identical from the inside. There’s no stopping point, because a stopping point is somewhere you might not come back from. So you keep going, gambling on one more good one, with no way to aim at what you actually want.
Otium is that same scroll with the gambling taken out. It’s still randomized. It just randomizes to meet you: you say how long you have and what you’re in the mood for, and it builds a session that size out of sources you picked yourself. When the time runs out, it’s over.
Everything in one reel
One scroller, and it holds the lot. YouTube videos and Shorts with their audio, podcast episodes, public radio, news articles, webcomics. TikTok and Reels are built to look like they hold everything, and they hold one thing. Otium actually mixes them, so a comic lands after a twelve-minute video lands after a news piece, and all of them read the same way in the same frame.
That’s also why the scroll survived. One item at a time, swipe for the next, each thing given room to breathe with a headline and a picture and enough summary to decide on. Most readers hand you a list instead, and a list feels like doing data entry rather than reading the news. The swipe is a genuinely good way to take in one thing at a time. It’s only bad when it’s aimed at your weaknesses.
Using it
Pick a length. Pick what you’re into right now, a whole section or just some of its topics, dropping whatever you don’t feel like today. Then read.
One item fills the screen and you swipe up for the next. Swiping past something is the skip, so there’s no skip button and nothing to dismiss. Tap Read and an article opens right there as plain text, no sidebars and no “you might also like”. There’s no timer, no unread count and no progress bar while you’re in it. There was a countdown once and watching it felt like racing a clock, so it’s gone.
When the time is up the session ends on its own and shows you what you read: counts and minutes, no score and no streak. It will happily give you another five, but the default is stopping. A feed runs the other way round, where continuing is what happens if you do nothing and stopping is the thing you have to summon.
What it isn’t
It replaces your scrolling. It does not find you new things.
Everything Otium shows you comes from a source you added yourself. There’s no recommendation engine waiting to introduce you to a channel you’ve never heard of, and discovery isn’t quietly bolted on somewhere. That might become part of it one day. It isn’t today, and the app is better for not pretending otherwise.
You can see the whole algorithm
You give each source a weight, and that weight is the algorithm. A source you care about turns up more; one you’re lukewarm on turns up less. Nothing is inferred about you and nothing is optimizing for how long you stay. Any card will tell you why it’s there: which source, how fresh, how you weighted it.
It watches, and does nothing with it
When you’re managing a source, otium shows how often that source turned up against how often you actually opened it, over the last month, next to how your other sources are doing. Maybe you added something that looked great and you’ve scrolled past every single thing it’s posted since. That’s worth knowing, and it’s the sort of thing a normal feed knows about you and never tells you. Here it exists so you can decide what earns your time, and it never feeds back into what you get shown. Your behavior doesn’t change the algorithm. You do.
Notes
A Go API and a React app on my own cluster, behind my own single sign-on. RSS, YouTube and podcasts go in; nothing goes out.
snapshot
reflects otium@a02a44bcaptured Aug 30, 2026changelog