Skip to content

About

Jev reads a whole novel in seconds. Every passage becomes a row of colour.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

Book Aurora

Jev reads a whole novel in under a minute. Every passage becomes a row of colour.

Frankenstein read by Jev, sped up

Frankenstein: 601 passages, 6,010 typed decisions, 37 seconds in this capture (about 22 s without the screen recorder), 3 cents. Played back at 4× speed.

Each ~90-word passage is sent to Jev (TypeSafe's System One decision model) with ten parallel typed questions: a 0–3 score for each of nine emotions, plus overall intensity. Jev never sees pixels and never writes prose; it only returns scores with calibrated probabilities. The aurora draws one feathered row per passage, each emotion a curtain whose width and brightness follow its score. When the book is done, the whole strip is the book's emotional weather, and you can save it as a poster.

Run

bun install
bun run dev          # Vite on :5173, Bun API server on :4319

Set OPENROUTER_API_KEY (Jev via OpenRouter's /api/alpha/decisions, model typesafe/jev-1.13) or TYPESAFE_AI_API_KEY (native api.typesafe.ai) in .env or your shell. With neither, the app runs in a keyword-driven mock mode so you can work on the visuals.

Optional: JEV_MODEL, JEV_CONCURRENCY (default 6), JEV_TIMEOUT_MS (default 8000), JEV_HEDGE_MS (default 1500; a duplicate request fires if the first has not answered by then), PORT (default 4319).

URL parameters: auto starts reading on load, book=<id> picks a book, kiosk hides the controls for screen recording, look=aligned switches from the flowing aurora to fixed labelled columns.

Books

Drop any plain-text novel into books/ as <id>.txt. Project Gutenberg files work as-is: the header and licence are stripped, Title: / Author: are read, and CHAPTER … headings become the ticks along the ribbon. Only public-domain texts belong in books/. Anything in books/private/ is git-ignored, for reading books you own locally; the resulting poster contains no text, only colour.

Security notes

The server listens on 127.0.0.1 only, refuses cross-site browser requests to /api/read, and never receives your key from the browser: the key lives in the server process. Every read costs real money (about 3 cents for Frankenstein), so if you expose it (HOST=0.0.0.0 or a public deploy) add your own rate limiting and a spending cap first. Book text is sent to the Jev API as data; passages are rendered with textContent, never as HTML.

Production

bun run build && bun run start   # serves dist/ and the API from one Bun process

Example poster

Frankenstein poster

Texts in books/ are from Project Gutenberg and in the public domain.

License

MIT. Book texts are public domain via Project Gutenberg.

About

Jev reads a whole novel in seconds. Every passage becomes a row of colour.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages