The room is easy. The edges are documented.
A short, honest guide to what LOR. ships today, how the pieces fit together, and where a contributor can make the next useful change.
Start locally
Run the same room you just saw.
The hosted app is the fastest way to try LOR. The local path is for reading the code, changing a focused issue, or testing a boundary on your own machine.
Quick start
Three commands, then add your local values
git clone https://github.com/Lord-shaban/lor && cd lor
cp .env.example .env.local
npm install && npm run devPut LiveKit and Supabase values in .env.local. The call itself does not depend on an AI key.
The product
A video room for conversations that should leave something useful behind.
Open a link, type a display name, and join. During the call, people can work together in the same room. Afterward, the useful record stays tied to its source instead of becoming a loose summary.
Arabic and English can share a sentence without asking the transcript to choose a different language.
See the public storyOne room, one thread
How a meeting becomes a record.
The flow is intentionally small. Each step has a clear owner and a clear edge.
- 01
Join
Share a room link, enter a name, and use the prejoin screen to check your devices before anyone hears you.
- 02
Work together
Keep chat, captions, a shared board, rich notes, and a local WebM close to the conversation.
- 03
Review and return
A host confirms decisions and participant-owned commitments. Timeline, Memory, and search return to retained evidence.
Read this before you build
What LOR. promises today.
The product is deliberately explicit about what is shipped and what remains a contribution boundary.
| Capability | Shipped today | Planned / not a promise |
|---|---|---|
| Video meeting | LiveKit room, prejoin, chat, screen share | No account system or paid tier |
| Retained evidence | Captions, decisions, tasks, Timeline, Memory, search | No cross-room or live-occurrence indexing |
| Privacy edges | Room scope, retention cleanup, local-only recording | Self-hosting contract is v0.9 work |
| Extensions | A focused repository and public issues | Integrations in v0.8; plugin ecosystem in v1.0 |
Under the surface
Short requests. One real-time room.
Media and shared meeting state travel over LiveKit. Next.js handles short request/response work; Postgres holds the retained projection.
Browser (Next.js)
│ WebRTC media + LiveKit data channel
│ chat · captions · board · notes · reactions
▼
LiveKit (cloud today)
│ short REST requests
▼
Next.js route handlers
│ tokens · rooms · admission · AI proxy
▼
Postgres + pgvector
retained captions · decisions · tasks · usageThe application does not run its own long-lived WebSocket server. That boundary keeps the same code usable on a hosted or future self-hosted box.
Pick up a thread
Make one small change reproducible.
Every contribution starts with a scoped issue, a branch, the required checks, and a pull request that explains what changed. Arabic RTL is the first layout pass; English LTR follows.
- 01Read the contribution contract
- 02Choose a focused issue with acceptance criteria
- 03Run typecheck, lint, tests, build, and the relevant browser check
Before you open an issue
Questions that save a round trip.
If an answer is not here, the repository issue templates keep the next question concrete.
Do API keys reach storage?
No. Operator keys stay server-only, and a participant's key is encrypted in the browser and forwarded without being written to the database, logs, or cache.
Does an AI outage break the call?
No. AI features degrade to their bounded fallback; video, audio, collaboration, and local recording keep their own path.
Can I self-host it now?
The self-hosting contract is planned for v0.9. The current public path is the hosted demo and the reproducible local development setup.
Why is Arabic the first pass?
Mixed Arabic/English speech and RTL layout are first-class product constraints. Every UI change is checked in Arabic before English.