Tether

Tendril Works · Independent Android product · Closed testing

A local-first Android reader for articles, feeds, PDFs, and EPUBs, built around two ways to hold attention without turning reading into a performance trick.
KotlinJetpack ComposeReadiumAndroidX PDFCloudflare WorkersGitHub Actions

Tether began with a familiar failure: opening a long article, reading a few paragraphs, and losing the thread. I built it through Tendril Works as a focused reader that removes the page around the words, remembers where the reading stopped, and makes it easy to change reading style without starting over.

Home, library, RSVP, reading stats, and reader controls captured from the current Android build. The gallery rotates paired views and pauses while you interact with it.

Current product

v1.1
current release
5
ways to add reading
2
linked reading modes
0
accounts or ads

Tether reached a stable 1.0 release in June 2026 and is now in closed testing on Google Play.

The Problem Was Not Reading Speed

Rapid Serial Visual Presentation, or RSVP, is often sold as a speed-reading trick. That claim is too neat. Fixing words in one place can reduce eye movement, but it can also make rereading and comprehension harder when the interface controls the pace too aggressively.

Tether treats RSVP as one focus tool rather than the product's entire premise. Holding the screen advances the text; lifting pauses immediately; a horizontal drag rewinds; nearby words reappear for context. A swipe moves into a conventional reader whenever the sentence needs another look.

Two Views, One Position

RSVP and full-document reading share one canonical position. Opening search, following contents, adding a bookmark, changing layout, or moving between the two readers should never create a second interpretation of where the reader is.

RSVP
One to three words at a time, with deliberate pause and rewind.
Full reader
Scroll, paged, and book layouts for rereading in context.
Shared location
One anchor across modes, search, contents, marks, and resume.

Built for Reading That Already Exists

The input surface grew from article links into pasted text, RSS and Atom feeds, PDFs, and EPUBs. Web pages pass through a layered extraction path. Imported publications retain their originals: Readium renders EPUBs and AndroidX PDF renders PDFs, while a text projection supports RSVP and read-aloud without flattening the source into the only copy.

That split led to the hardest engineering work in the project: keeping one durable location across native publication coordinates, token-based RSVP, search results, bookmarks, highlights, notes, and three full-reader layouts.

System surface

Android app
Kotlin · Jetpack Compose
Web extraction
Defuddle · Readability4J · WebView
Publications
Readium · AndroidX PDF · PDFBox
Local data
DataStore · JSON · managed files
Hosted fallback
Cloudflare Worker
Delivery
GitHub Actions · release-please

The Android app owns the reading experience and local data. The hosted worker is a bounded extraction fallback, not a user-data backend.

Local First on Purpose

Tether has no account system, ads, or analytics. Articles, documents, progress, reading history, settings, bookmarks, highlights, and notes stay on the device and can be exported as a backup. URL extraction uses a hosted fallback only when the local path cannot recover readable content.

The public extraction worker validates redirects and resolved addresses, blocks private-network targets, limits response size and redirect depth, and times out upstream requests. Local-first still needs a careful network boundary when arbitrary URLs are involved.

What I Shipped

I designed and built the Android app, extraction service, release pipeline, and Tendril Works product surface. Pull requests run unit tests, Android lint, a debug build, and worker security tests. Releases produce signed APK and Play-ready AAB artifacts through GitHub Actions and release-please.

Tether is currently in a small Google Play closed test. The next milestone is not another feature list; it is learning where real documents, devices, and reading habits break the assumptions that survived development. The public product details live on Tendril Works, and the source is available on GitHub.