M0Feb 3, 2026

Why we're building this

by Aliyah Daleen

Here's the gap we kept running into: an AI reading companion either knows the whole book and has to be trusted not to spoil you, or it's kept deliberately dumb about the book at all so it can't spoil you, and either way you're negotiating with a chatbot instead of just reading. We wanted the third option — a companion that structurally cannot know more of the book than you've read, because the text past your page is never given to it in the first place. Not a promise. A property of the system.

Green Room library with a Continue reading book and personal shelvesThe reading screen with quiet controls and a local journey rail
Your books and your place in them. These current library and reader designs illustrate the idea behind this early foundation post; they are not screenshots of the first milestone. Select an image to view it full size.

The other thing we kept running into: this is a reader, not a bookstore. You already have EPUBs — from libraries, from purchases, from years of accumulated folders — and the last thing that ecosystem needs is one more app trying to sell you books you already own, or worse, wrapping them in DRM you can't get back out of. So no DRM handling anywhere in this codebase, ever, and no shared corpus of anyone's books feeding anyone else's questions. Whatever you read stays yours, processed for you, not folded into a pile.

This first milestone was mostly foundation, and foundations are supposed to be the unglamorous part. We vendored the EPUB rendering engine we build on top of as a pinned submodule rather than a moving dependency, so an upstream change can't quietly alter how your book looks without us choosing that. We proved position-tracking actually round-trips — capture where you are, survive the page reflowing under you, land back on the exact spot — because a reading position that drifts is worse than useless, it's actively misleading. And we made sure books match across devices by content, not by file path, from the very first commit: a file getting renamed or moved should never look like a different book to the system.

We also spent this milestone proving the boring stuff works before building on top of it: one streaming AI call actually running end to end through our own server, with the model provider's key held there and never shipped to a client; a license gate that we tested in both directions — deliberately planting a disallowed dependency to confirm it gets rejected, then removing it to confirm the gate goes green again, not just trusting that it would. Forty-one checks, one script, and it's the kind of milestone nobody would put in a demo reel. We'd rather start the devlog here than start it once something looks impressive, because this is the part that makes everything after it trustworthy.

← All devlog posts

The cast has been waiting for you.

Join the waitlist — beta invites go out in order, and the devlog keeps you honest company until then.