Screenshots
See It in Action
Library — every document in the corpus, hero-card grid, collection tree, type badges, and dates
Features
Read Anything. Rewrite Nothing.
Lectern is the fleet's secure distribution surface for finished AVIAN/Renkara documents — HTML artifacts, Markdown, and PDFs served in artifact format to authenticated renkara-auth users, from a locked-down S3 bucket, with a per-view audit trail. Publishing happens only from the founder's workstation via CLI or MCP. The reader app has no write path and no edit affordance, anywhere, by design.
The Three Laws
Read-Only, Immutable, Byte-Identical
Zero Write Path on the Reader Surface
No content-mutation endpoint, no edit/upload/annotate affordance — anywhere in the UI, under any framing. Publishing lives exclusively behind an admin-key-gated API reachable only from the founder's workstation.
Content-Addressed, Immutable Versions
Every version's storage key is derived from its own sha256 hash. S3 objects are never overwritten; versions are append-only. A document is retired, never deleted — there is no hard-delete anywhere in the lifecycle.
Byte-Identical Artifact Passthrough
HTML artifacts are served exactly as published, sha256-verified against the source. Lectern never “fixes,” reformats, or rewrites a published file — fidelity is structural, not a promise.
Secure by Construction
Sandboxed Rendering, Full Audit Trail
Blob-Sandboxed Artifact Viewer
Every document renders inside an
<iframe sandbox="allow-scripts">built from a Blob URL — neverallow-same-origin. The same containment model claude.ai uses for artifacts: scripts run, but with zero access to the reader's token, cookies, or parent DOM.renkara-auth Single Sign-On
Every reader signs in through the fleet's shared OIDC provider. There is no separate Lectern account and no separate password to manage.
Audience-Restricted Access
Documents and whole collection subtrees can be scoped to a named audience. One shared visibility predicate governs the catalog, search, and content fetch alike — there's no separate code path for a restriction to leak through.
Per-View Audit Trail
Every content view, raw download, and search query writes an attributed, append-only audit event — who read what, and when, queryable by any admin.
Built to Be Read
Self-Contained Artifacts, Real Search
Self-Contained Rendering
Markdown renders to a fully self-contained artifact: inlined CSS, Pygments-highlighted code in both themes, embedded images, and client-side Mermaid diagrams — zero external requests at view time.
Full-Text Search
Postgres full-text search across every visible document's title, tags, and extracted body text — not just filenames.
Collection Tree & Deep Links
Browse a nested collection hierarchy in a drawer sidebar, or jump straight to any document via a stable
/d/<slug>link.Hero Thumbnails
Every Library card carries a real screenshot of its document, captured automatically in headless Chromium the moment it publishes.
Light and Dark Mode
The reader, and every rendered artifact inside it, follows the app's theme — the viewer stamps the active theme into the document before it ever renders.
Publishing — Workstation Only
One Write Path, Fully Auditable
CLI & MCP Publishing
lectern_publish.pyand the MCP tool suite are the only ways content enters the system — both are thin wrappers over the identical admin API, so the two lanes can never drift apart.Idempotent Corpus Sync
Re-running a sync against an unchanged source reports 100% unchanged. Nothing republishes, and no new version is created, unless the content actually changed.
Rollback, Retire, Restore
Every mutation is reversible without ever deleting a version row or an S3 object — point the current version at an older one, retire a document from the catalog, or restore it, all non-destructively.
Integration
MCP Server — 38 Tools
Health & Ops (4 tools)
Liveness, structured subsystem diagnostics, storage stats, and recent sync/publish-run status — without leaving the AI assistant.
Reading & Search (9 tools)
Browse the collection tree, list and fetch documents, pull rendered content or plain-text extracts, and run full-text search — the same corpus a human sees in the reader.
Publishing & Governance (17 tools)
Publish single files or whole batches, retire/restore/rollback, manage collections and audiences, and mint share links — the complete write surface, admin-key gated.
Audit & Integrity (5 tools)
Query the access log, pull per-document view analytics, re-hash S3 against the registry to catch drift, and rebuild the search index — all from a Claude Code session.
Admin Reporting UI
Read-only History and Analytics pages, visible only to admins, backed by the exact same query logic as the CLI/MCP lane — the browser and the machine can never see different numbers.
Accessibility
Built for Everyone
WCAG 2.1 AA Compliance
4.5:1 contrast for body text, 3:1 for large text and UI components, in both light and dark themes.
Keyboard Navigation
Every interaction reachable via keyboard. Logical tab order, visible focus indicators, Escape-to-dismiss for modals.
Screen Reader Support
VoiceOver, NVDA, and JAWS tested. Semantic HTML, ARIA labels, live regions for dynamic updates.
Reduced Motion
Respects
prefers-reduced-motion. Usable at 200% zoom. Touch targets meet 44x44 minimum.
How It Works
Publish, Sign In, Read, Audit
Step 1: Publish
The founder runs the CLI or an MCP tool from the workstation. Content is rendered, hashed, and uploaded to a private, KMS-encrypted S3 bucket — the only write path in the whole system.
Step 2: Sign In
A renkara-auth user logs in through the fleet's shared OIDC flow. No separate Lectern account, no separate password.
Step 3: Read
The catalog, search, and every document respect audience restrictions. Content streams through the API into a sandboxed Blob-URL iframe — never inline in the app's own DOM.
Step 4: Audit
Every view, download, and search is recorded as an attributed, append-only event, queryable by any admin through the reporting UI or the MCP tools.
Technical Specifications
Under the Hood
Backend
- FastAPI (Python 3.12), SQLAlchemy 2.0 async
- PostgreSQL registry, append-only schema enforced by a database trigger
- Postgres full-text search over extracted document text
- S3 content store, KMS-encrypted, IAM-identity access only (no bucket policy)
Frontend
- React 19, TypeScript, Vite 8
- @avian/design-system, canonical AppShell
- Sandboxed <iframe> artifact viewer built from a Blob URL
- Light and dark mode, mobile-safe down to 375px
Security
- RS256 JWT verification via renkara-auth JWKS (Valkey-cached)
- Constant-time admin-key comparison for the publishing API
- Rate limiting on content, search, and admin endpoints
- Structured, append-only audit log — view/download/search/share-link events
Integrations
- MCP server — 38 tools (Streamable HTTP + stdio bridge)
- Renders Markdown, HTML artifacts, and PDFs
- Vendored Mermaid diagrams, Pygments dual-theme code highlighting
- Registered fleet-wide through Roost as
lectern
Development
100% Built by Claude
Every tool in the Renkara fleet was built by Claude (Anthropic) working alongside a single human supervisor. Every line of code, every test, every deployment: AI-authored with human direction. The leverage factor across the fleet runs in the 20x–50x range, with individual sessions regularly exceeding 100x.
See the daily leverage records for per-task numbers across the full build history.