Skip to content
github-actions[bot] edited this page Oct 10, 2026 · 32 revisions

RISE logo: a chrome, iridescent letter R on black

RISE

A browser-based audiovisual reader. RISE presents text through time, image, sound, and procedural visuals, so a book can be read as a timed stream or a typeset page.

Live app → · Architecture · Documentation

Status: Open beta · License: Apache 2.0 · Built by Mateo Robles (SyberLabs), with engineering infrastructure by Seth Carlson


What it does

  • Chamber – the reading instrument. Combine a text with a pace, visuals (museum art, NASA/ESA/ESO astronomy, fractal flames, strange attractors, or none) and Web Audio sound.
  • Stream and Page – one source, two projections: text arriving over time, or a paginated typographic layout.
  • Library – curated public-domain literature, philosophy, poetry, and scripture, prepared through an editorial pipeline that tracks edition, structure, provenance, and rights.
  • Chapel – the complete Douay-Rheims Bible (73 books), plus the Rosary and Stations of the Cross paced by a liturgy engine.
  • Workshop and Vault – author your own audiovisual compositions and save them in the browser.
  • AI reading request (optional) – describe what you want to read and a bounded decision model picks a book and presentation from the held catalog. Bring your own model: Connect OpenRouter (hosted Jev, billed to your OpenRouter account) or Run locally (npm run local: RISE and pinned Kev-4B on your GPU, no hosted bill). See docs/USER-OWNED-AI.md and docs/LOCAL-RISE.md.
  • Journeys (unpublished draft) – Heaven and Household is source-bound against Milton and Bryant and remains outside the public catalog.

Reading runs entirely in the browser, except optional visual direction, which sends sections of the text to your own AI connection (OpenRouter or Kev on your computer). Your files and saved work stay in browser storage. See Privacy.

Engineering highlights

  • Vanilla JavaScript single-page app built with Vite; one-way pipeline from source text → timed units → pacing → compiled session → clock-driven player.
  • Content-addressed data plane: book text is served as SHA-256-named JSON and verified on every read, which removed 15.4 MB from the JavaScript bundle.
  • First load held under a 64 KB brotli budget enforced in CI; npm run measure:first-load prints today's size and request count.
  • Thousands of Vitest unit and integration tests plus Playwright browser tests, including real ffmpeg encoding and live Chromium rendering.
  • Generated architecture diagram and tested design contracts, so documentation cannot drift from the code.
  • Edge backend: Cloudflare Workers serve the app and a static public decision catalog. The backend runs no AI model and stores no model credential; decisions run on the reader’s own connection. (The optional Live page, switched off in production, would pass a reader’s own OpenAI key through once to open a session; see PRIVACY.md.) A GitHub Actions job runs for each push to main; it rebuilds, deploys and checks the live site only when its commit is still the tip of main at the deploy step, so superseded pushes are skipped and the newest deploys.

Stack: JavaScript (ES modules) · Vite · Web Audio API · Canvas 2D · IndexedDB · Cloudflare Workers · Vitest · Playwright · GitHub Actions

Quick start

Requires Node.js 20.19+ or 22.12+ and npm.

git clone https://github.com/SyberLabs/RISE.git
cd RISE
npm ci
npm run dev        # http://localhost:5173/

In the app: Try RISE → pick a reading → Begin. Use Page to switch to the paginated view.

RISE in Claude and ChatGPT

Your assistant can present an answer in RISE: it writes the answer as a short reading, and RISE shows it in the chat as a card. You press Play; your device's own voice reads it, the words appear as they are spoken, and RISE's drawn imagery, or a diagram or figure your assistant wrote as SVG or scene code, plays behind them.

  • Add it in Claude: Customize > Connectors, then + Add > Add custom connector. Name it RISE, use the URL https://rise.syberlabs.io/api/mcp, and choose No sign in. Turn it on for a chat from the + button, under Connectors.
  • Authentication: none. No account, no key, no payment.
  • Tools: rise_present (present a reading) and rise_guide (the format reference for a style). Both are read-only.
  • What to ask: "Explain how black holes bend light, and present it in RISE." or "Give me a two-minute RISE reading on why the sky is blue, in the Signal look."

More prompts, the looks, troubleshooting and the contact are at https://rise.syberlabs.io/apps. See also the Privacy Policy and Terms.

Developers

rise.current.v1 is the reading an assistant writes, compiled through the existing Session Compiler. It accepts bounded segments, a closed visual selection, and exact-span Dive notes, which the current product does not present. See the contract and sample document. To compile the sample locally:

node --input-type=module -e "import fs from 'node:fs'; import { compileRiseCurrent } from './src/core/rise-current.js'; const input = JSON.parse(fs.readFileSync('docs/examples/current-v1.json', 'utf8')); const session = compileRiseCurrent(input); console.log(session.atoms.length, session.experienceProgram.schema);"

The server is worker/mcp-server.mjs; the card it serves is src/live/host/.

Contributing

Read AGENTS.md (working principles) and docs/PROJECT-KNOWLEDGE.md (known pitfalls and the reasoning behind non-obvious decisions) before changing anything.

Pull requests must pass the same checks CI runs:

npm run test:run                              # unit and integration tests
npm run test:e2e:gate                         # fast browser pass (a few minutes)
node scripts/ci-hygiene.mjs                   # licenses, credits, reader-facing names
npm run security:audit && npm run security:compat
npm run build && npm run measure:first-load   # first-load size budget
npm run docs:diagram && npx vitest run src/core/system-design.test.js
npm run scriptorium:ci

The full test suite needs ffmpeg and Playwright Chromium (npx playwright install chromium). The browser tests start their own server. Release and rollback steps are in docs/RELEASING.md.

Project layout

src/
├── audio/        Web Audio, recitation, sound systems
├── components/   UI rooms: Chamber, Library, Chapel, Workshop, Vault, …
├── content/      Archive catalogs, Chapel, imagery, certification records
├── core/         Session compiler, chunking, pacing, player, content store
├── page/         Page projection and layout
├── sources/      Text and image providers
└── visuals/      Procedural and sourced visual systems
scripts/          Corpus preparation, catalog building, CI gates, offline media
worker/           Cloudflare Worker (public decision catalog; retired AI routes answer 410)
local/            Local RISE: launcher, loopback bridge, pinned Kev server

Accessibility

RISE uses motion, changing light, and sound. It respects reduced-motion settings and offers calmer modes; readers sensitive to flashing or rapid motion should use them. RISE makes no medical or therapeutic claims.

License

Application code is licensed under Apache 2.0. Names, authored compositions, curated texts, and referenced visual works carry their own terms; see ASSET-LICENSES.md and NOTICE. Archive texts are public domain. Visual works are shown by reference under their holding institutions' licenses and are never redistributed from this repository.


Published from README.md. Edits made here are overwritten on the next push to main.

Start here

Release

Pilot

The Archive - texts and their editing

Authoring - scores, rooms, and rendering

Reading surfaces

Imagery - what may be shown, and on whose authority

The Chapel

Direction and unbuilt work

Affect and the Emotions room

Reading decision service and retired gate

Product direction and team tracking


Documentation index · Repository

Clone this wiki locally