The read-only document library for the Renkara fleet

Every document, exactly as published.

Finished documents get emailed, pasted, and copied until nobody knows which version is real. Lectern is the one shelf: published once, never edited, every version kept, every read on the record.

Illustration: an empty wood-paneled assembly hall with a carved wooden lectern holding an open book under one brass lamp.
Reading

Find the document, not the file.

Documents sit on shelves: a tree of collections, subject filters drawn from the documents' own tags, and a card for each one with a thumbnail of the real page. Search reads the full text, and Command-K jumps straight to a title.

Every card has one menu. Readers can tidy their own Recently opened list; admins can assign the document to readers or feature it.

Lectern's Library filtered to the Runbooks collection: the collection tree on the left, subject filters above, and a grid of runbook cards with thumbnails of each document.Lectern's Library filtered to the Runbooks collection: the collection tree on the left, subject filters above, and a grid of runbook cards with thumbnails of each document.
One collection, opened from the tree: every runbook, with a picture of each. Enlarge to see the full screen.
Access and audit

Some shelves have doors. Every opening is written down.

A collection can be scoped to a named audience, and the catalog, search, and the assistant all obey the same rule. Every view, download, and search is an attributed event that admins can read back.

The audit table is append-only at the database level, so the history cannot be quietly edited.

Lectern's History page: an audit table with the time, reader, and event kind of each view, download, and search, and filters for reader and event.Lectern's History page: an audit table with the time, reader, and event kind of each view, download, and search, and filters for reader and event.
History: who opened what, and when.
Document Player

Press Play on a long document.

For documents that have a presentation, the viewer shows a Play button. It opens a full-screen, narrated slideshow of the document's summary, in the web app and in the native app. The presentations are generated on the workstation, so this site describes the Player in words and shows no capture of it.

Features

Read anything. Rewrite nothing.

Lectern keeps finished HTML artifacts, Markdown documents, and PDFs in a private, encrypted store and serves them through an authenticated API to Renkara accounts. Publishing happens from the founder's workstation, through a command-line tool or MCP tools. In the reader, nobody can edit, upload, or annotate a document. These are the jobs it does today.

A dashboard, a library, and search that works

01

A dashboard, not a wall of cards

The first page shows documents the admins featured, your last ten opened, and anything assigned to you to read. The full catalog lives in the library.

02

A library you can browse

A nested collection tree, subject facets drawn from the documents' own tags, and a sort by recent, A to Z, or type. Filtering and paging happen on the server, so it stays fast as the library grows.

03

Search and a command palette

Full-text search across every visible document's title, tags, and extracted body text, plus a keyboard-driven palette on Command-K.

04

Stable links and every format

Every document has a /d/ link that survives a rename, because old slugs are kept as aliases. Open the rendered page or the Markdown, and a PDF where one was published, and download the original.

No edits, kept versions, and a sandbox

05

No reader can change a document

There is no edit, upload, or annotate control and no endpoint that mutates content on the reader surface. Readers keep only their own state: mark an assignment read, remove a card from Recently opened, and keep chat threads.

06

Every version is kept

Storage keys come from each version's own SHA-256 hash, so a version is never overwritten and a database trigger blocks deleting one. A document is retired, never deleted, and a retire, restore, or rollback is non-destructive.

07

Published files stay byte for byte

HTML artifacts and PDFs are served exactly as published and verified against their hash. Markdown is rendered once into the Renkara Document template: inlined styles, highlighted code, embedded images, and Mermaid diagrams, with no external requests at view time.

08

A sandboxed viewer

Every document renders in an iframe built from a Blob URL with scripts allowed and no same-origin access, so a document's own scripts can never reach the reader's token, cookies, or the page around it.

Shelves with doors, and a record of who opened them

09

Audience-restricted shelves

A document, or a whole collection subtree, can be scoped to a named audience. One visibility rule governs the catalog, search, the assistant, and content fetches, so there is no second path for a restriction to leak through.

10

A per-view audit trail

Every view, download, search, and share link is an attributed, append-only event. Admins read it on the History page: who opened what, and when.

11

Featuring and assigned reading

Admins pick and order the featured documents, and assign documents to readers with a note and an optional due date. A progress table shows who has read what.

12

Analytics and a search-miss radar

Views, unique readers, and last-read time for every document, plus the searches that returned nothing, so you can see what the library is missing.

One write path, from one workstation

13

Command line and MCP

The publishing tool and the MCP server are thin wrappers over the same admin API, so the two can never drift apart. Fifty-four MCP tools cover reading, publishing, collections, audiences, audit, and integrity.

14

Idempotent sync

Re-running a sync over an unchanged source reports every document unchanged and creates no new version. A scheduled job keeps the production library current, and it only adds and updates; it never retires a document.

15

Hero thumbnails

Every card carries a picture of its document in light and dark, captured on the workstation in headless Chromium when the document is published.

16

Ask the library

An assistant on the viewer answers questions from the whole library you can see, cites the passages it used, and keeps your conversations private to you.

Screens

See it in light and dark

Real captures of the running tool, with fictional StrataForge Robotics data. They follow your theme.

How it works

Publish, read, audit

  1. Publish

    From the workstation, the command-line tool or an MCP tool renders the document, hashes it, and stores it in a private, encrypted bucket. This is the only way content enters.

  2. Read

    A signed-in reader opens the dashboard, library, or search. Every list respects audience restrictions, and the document streams through the API into the sandboxed viewer.

  3. Ask

    On any document, the reader can ask the assistant a question. It searches the whole visible library, answers, and cites its sources.

  4. Audit

    Every view, download, and search is recorded. Admins see the history and the analytics, and can assign reading and feature documents.

Accessibility

Built so everyone can use Lectern.

Lectern's app is built on the Renkara design system, and on 10/29/2026 we ran axe-core over its main screens in light and dark at phone and desktop widths. That scan found three kinds of serious problem, listed below as known gaps, and the rest passed. Here is what the product supports today and what we have actually checked. We do not claim a WCAG conformance level for the product.

  • Partly supported

    Keyboard operation

    Document cards are focusable links that open on Enter or Space, and Command-K opens a command palette. The scan found four scrolling tables (History, Assignments, Analytics) that a keyboard cannot scroll at phone width.

  • Partly supported

    Screen reader landmarks and labels

    axe-core checks names, roles, labels, and structure. It found one serious problem, a card whose accessible name is shorter than its visible text, and no other serious name or structure violation. Lectern has not been tested with a screen reader.

  • Partly supported

    Contrast in light and dark

    Text and controls pass axe-core's contrast rule in the dark theme and almost everywhere in the light theme. The failures are the tinted badges (the accent and warning tints) in the light theme at desktop width.

  • Partly supported

    Reduced motion

    The library and the Document Player check the reduced-motion setting in code. No test covers it yet.

  • Not yet tested

    Text resize and zoom

    Resizing text to 200 percent has not been tested.

  • Supported

    Mobile and touch

    The app fits a 375 by 667 phone screen with no sideways scrolling, the collection tree becomes a drawer, and the assistant's controls are at least 44 by 44 pixels.

Tech specs

Under the hood

Lectern technical specification
Backend
  • FastAPI on Python 3.12, SQLAlchemy 2.0 async
  • PostgreSQL registry; append-only tables enforced by database triggers
  • Postgres full-text search over extracted document text
  • Private S3 content store: content-addressed keys, KMS encryption, Block Public Access, no bucket policy
Reader
  • React 19, TypeScript, and Vite 8, built on the Renkara design system
  • A sandboxed iframe viewer built from a Blob URL, with no same-origin access
  • Light and dark themes; checked at 375 by 667 pixels
  • Serves HTML artifacts and PDFs byte for byte, and renders Markdown with highlighted code and Mermaid diagrams
Security
  • RS256 JWTs verified against the fleet identity provider's keys, cached per key
  • Constant-time admin key comparison on the publishing API
  • Rate limiting on content, search, and admin paths
  • Retrieval for the assistant uses the same visibility rule as the catalog, applied in SQL
Agents
  • An MCP server with 54 tools over Streamable HTTP, relayed to every machine by Roost
  • The assistant retrieves with full-text search and embeddings fused by reciprocal rank, and streams its answer
  • A publishing command-line tool that also captures hero thumbnails
Stands in for

Finished documents emailed as attachments, Shared drives of exported PDFs, Pasting HTML artifacts into chat

Works with

Part of the Renkara fleet

MCP tools

Built for agents as well as people

Agents publish, organize, search, and audit the library through Lectern's MCP tools, all behind the admin key. The reader app itself has no equivalent write path.

Publishing

  • publish_document
  • publish_batch
  • sync_source
  • sync_documentation
  • render_preview
  • set_document_metadata
  • move_document

Lifecycle

  • retire_document
  • restore_document
  • rollback_document
  • list_document_versions
  • get_document_version

Reading and search

  • list_documents
  • get_document
  • get_document_content
  • get_document_rendition
  • resolve_document
  • search_documents
  • search_corpus
  • ask_corpus
  • list_collections
  • get_collection

Collections and audiences

  • create_collection
  • update_collection
  • delete_collection
  • set_collection_audience
  • create_audience
  • update_audience
  • delete_audience
  • add_audience_member
  • remove_audience_member
  • set_document_audience
  • list_audiences
  • list_readers

Curation

  • set_featured
  • feature_document
  • unfeature_document
  • list_featured
  • assign_reading
  • unassign_reading
  • list_assignments
  • get_assignment_summary
  • mint_share_link

Audit and operations

  • get_access_log
  • get_document_analytics
  • get_search_misses
  • verify_integrity
  • get_storage_stats
  • get_sync_status
  • reindex_search
  • reindex_chat_corpus
  • get_chat_index_status
  • check_service_health
  • get_diagnostics
Native clients

On iPhone, iPad, and Mac

FAQ

Questions people ask

Can anyone edit a document in Lectern?

No. There is no edit, upload, or annotate control in the reader, and no reader endpoint changes content. Documents enter only from the publishing workstation, as new versions.

What happens when a document is retired?

It leaves the catalog and search, and its versions stay stored. An admin can restore it or roll the current version back to an earlier one. Nothing is hard-deleted.

Can the assistant show me a document I cannot open?

No. The assistant retrieves only from documents you can see, using the same visibility rule as the catalog, applied in the database query rather than after the fact.

Is the data in the screenshots real?

No. Every screenshot is a capture of the running app against fictional StrataForge Robotics data. The pages in the thumbnails wear Lectern's own document template.

Is Lectern public?

No. Every reader is a signed-in Renkara account, and there are no local accounts. Write to contact@renkara.com with questions.

Contact

Questions about this tool?

Write to Renkara Media Group and a person will answer.