Documentation
Everything Lumina does, how to set it up and where your data lives.
Install
macOS or Linux. Open Terminal and paste:
curl -fsSL https://lautaro005.github.io/lumina/install.sh | sh
Windows. Open PowerShell and paste:
irm https://lautaro005.github.io/lumina/install.ps1 | iex
The installer puts Lumina in ~/.lumina (your data goes in ~/.lumina/data), installs Python and the dependencies with uv, adds the lumina command and installs the desktop app from the latest release. It needs git; nothing else has to be installed first. Running it again updates Lumina.
| Option | What it does |
|---|---|
--no-app | Skip the desktop app; use Lumina in the browser. |
--build-app | Build the desktop app from source (needs Rust and Node.js). |
--models | Also download the base models now (EmbeddingGemma 2, Silero VAD, Parakeet v3, about 1 GB). |
LUMINA_HOME=/path | Install somewhere other than ~/.lumina. |
Pass options like this: curl -fsSL https://lautaro005.github.io/lumina/install.sh | sh -s -- --models.
sudo apt install libportaudio2 on Debian and Ubuntu, sudo dnf install portaudio on Fedora). The desktop app needs FUSE 2 for AppImages; without it the lumina app command runs it from a temporary extraction.First run
Type lumina (opens your browser) or lumina app (opens the desktop app). Lumina walks you through four steps:
- Interface language: English or Spanish (automatic follows your system).
- Meeting language: the language people speak in your meetings, or Automatic. See Languages.
- Notes model: Gemma 4 inside Lumina (E2B, E4B or 12B), or Ollama or LM Studio if you already use them.
- Downloads: each model shows its size and license. You can start using Lumina while they finish.
Meetings
Recording
Click New meeting, then Start listening. Lumina records two sources:
- You: your microphone (pick it in Settings → Transcription).
- Others: your computer's audio, so the other people in Zoom, Meet, Teams or any call are captured. Turn it off in Settings if you only want the microphone.
Your notes are expanded automatically while the meeting runs: there is no Enhance button, and Lumina only expands what you wrote. When you end the meeting nothing is enhanced any more; Lumina writes the summary (a separate step, with a Regenerate summary button). Enhance my notes again is in the ⋯ menu. An imported recording has its own page: player, summary and transcript, with Transcribe again. Right-click a meeting or a chat to rename or delete it.
While Lumina is listening you see a Live badge with the elapsed time (in the Cornell rows view, the red margin line moves too). Pause stops recording without ending the meeting; End meeting stops it and writes the summary. You can resume a finished meeting later; new audio is appended.
Your notes and enhanced notes
Settings → General → Meeting notes view has three layouts, each with a small drawing so you can see what you pick:
- Side by side (default): your shorthand notes on the left, the live enhanced notes on the right, like Google AI Edge Foresight. Each panel has a Copy button.
- Cornell rows: every line of your notes has its expanded note on the same row, with the red margin line between them.
- One at a time: a wide page with a switch between your notes and the enhanced ones.
Type short cues while you listen, one idea per line while you listen, one idea per line: budget Q3, cut?, pricing page date. Press Enter for a new line. Lumina writes the full note for each cue, using only what was said, and adds a few notes marked Lumina for important points you did not write down.
During the meeting this happens every 45 seconds or so once there is enough new speech (Settings → Transcription → Enhance notes during the meeting), or when you click Enhance now. A final pass runs when the meeting ends. New or changed notes are briefly highlighted.
Summary
At the foot of the page: an overview, decisions, action items with owners and dates, open questions and topics. Lumina also titles the meeting if you did not. The meeting, its notes and its transcript are then added to your knowledge base.
Settings → Summary chooses the layout of every summary: Standard (above, the default), Executive brief, Class notes, Detailed minutes, Action plan, or Custom, where you describe it in your own words (left blank, Standard is used). Each card lists its sections.
Live assistance
When someone asks a question (in English, Spanish, Portuguese, French, German or Italian), your notes model first checks that it is a complete question on the meeting's subject: rhetorical questions ("right?"), half sentences, small talk and questions about someone's own plans are skipped. A yellow card then shows a short answer you can say out loud, from your sources (only the ones it used are listed) or, when they do not answer it, from the web, with links to the pages. Only the question is searched, never the transcript. Turn it off with the switch next to Live assistance in the meeting; the web search has its own switch in Settings → Transcription.
Import, search and export
- Import a recording (Meetings page): any audio or video file is transcribed and summarised like a live meeting.
- Full transcript: the bottom strip opens the whole transcript with search.
- Export: Markdown (notes, summary and transcript), plain text, SubRip subtitles (
.srt) or JSON. - Tags and filters: tag meetings and filter the list by text, tag or date.
- Summary the way you want it: under the summary, write how you want it ("as an email to the team", "only the decisions, in English") and press Regenerate summary, or use Expand, Shorten, Simplify, More formal or Action items first.
Languages and transcription
Settings → Transcription → Language spoken in meetings has Automatic and every language the selected model supports. Automatic detection can guess wrong on short or mixed audio, so choose the language when you know it.
| Speech model | Languages | Language choice | Size |
|---|---|---|---|
| Automatic (default) | all below | Parakeet when the language is automatic, Canary for a chosen European language, Whisper for any other language | downloads what it needs |
| Parakeet TDT 0.6B v3 | 25 European | always detects it | 670 MB |
| Canary 1B v2 | 25 European | follows your choice | 1.0 GB |
| Whisper tiny · base · small · medium · large-v3-turbo | 99 | automatic or your choice | 75 MB – 1.6 GB |
| EmbeddingGemma 2 speech (experimental) | English only | English | 980 MB |
The 25 European languages: Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish and Ukrainian.
EmbeddingGemma 2 speech is opt-in and experimental. EmbeddingGemma 2 is an embedding model, not a recogniser, but its audio encoder plus a small community reader (mlboydaisuke/EmbeddingGemma-2-Transcribe-LiteRT) transcribes English read speech at about 4 % word error rate on the CPU. It writes no punctuation and each phrase appears when the speaker pauses (no live partial words). It needs the ai-edge-litert package, which has no build for Intel Macs. "Automatic" never picks it.
Silero VAD (2 MB) detects speech; Lumina transcribes each utterance when the speaker pauses and shows the words while they are still talking (turn that off with Show words as they are spoken on slow machines).
Models and the notes model
Settings → Models lists every model grouped by what it does: Chat and notes, Transcription, Embeddings and Read aloud, with how many of each are downloaded.
Settings → Notes model → Who writes the notes:
- Gemma 4 on this computer. Choose E2B (2.8 GB, for 8 GB of memory), E4B (4.6 GB, 12 GB) or 12B (7.2 GB, 16 GB). Lumina downloads the model and a pinned llama.cpp server and starts it when needed. On Apple Silicon it uses the GPU.
- Ollama. Lumina finds it on
127.0.0.1:11434and lists your models. - LM Studio. Start its local server; Lumina finds it on
127.0.0.1:1234. - Another OpenAI-compatible server. Any address and model name, with an optional API key.
Test sends a one-word prompt and shows how long it took. Stop frees the memory of the built-in model; it starts again by itself the next time Lumina needs it.
Settings → Models → Running now shows what is loaded in memory (notes and chat model, speech model, search model), each with a Stop button, and Start now for the notes model so the first answer is not slow. The speech model cannot be stopped while a meeting is being recorded.
Sources
Sources are what Lumina searches when it writes notes, answers questions or helps live. Meetings are added on their own when they end.
While files are being read and indexed, a progress bar shows the file in hand, files done out of total and a rough time left (also under the sidebar on every page). A folder has an arrow: click it to list the files inside with their passages, size and status; each file has Index again and Take out of this folder (a file taken out stays out until you index it again). Reading is fast: PDFs go through PDFium, two files are read while the model embeds a third, and a file whose text did not change is not embedded again.
Finished meetings are listed under Meetings in Sources, with their summary: click one to open it.
Deleting a source removes its passages with it. Settings → Delete data deletes all chats, all sources, all meetings or everything (your settings and downloaded models stay).
The notch
In the desktop app, while you record, a black island grows out of the notch (on a Mac without one, and on Windows and Linux, from the top edge of the screen) and shows the last three lines of the transcript and the elapsed time. Click it to return to the meeting. Turn it on or off in Settings → Transcription → Show the live transcript in the notch (on by default on macOS).
- Add folder or Add files opens your system's file chooser; you can also paste a path or drop files on the page.
- Folders are watched: new, changed and deleted files are re-indexed automatically. Hidden folders,
node_modulesand.gitare skipped. - New note writes a note straight into the knowledge base.
- Web pages: paste an address in the path box and press Read page. Lumina shows the page title and the start of its text and asks whether to keep the page's content or a summary written by your notes model. Pages on this computer are not read.
- Formats: PDF, DOCX, PPTX, XLSX, Markdown, text, HTML, CSV, JSON and source code. Files larger than 60 MB are skipped.
- Try a search shows which passages match a question and how closely.
Lumina splits documents into passages of about 500 tokens (keeping each passage's heading), embeds them with EmbeddingGemma 2 and stores them in ChromaDB. Settings → Knowledge lets you shorten the vectors to 512, 256 or 128 dimensions to save disk.
Updates and memory
Lumina looks for a newer version when it starts and every 6 hours. When there is one, an Update to x.y.z button appears under the menu. Click it and confirm: Lumina downloads the new version, closes and opens again by itself (a minute or two), and keeps your meetings, sources and settings. Settings → About has Check now and a switch to turn the automatic check off; lumina update in a terminal does the same.
To stay light, Lumina unloads the speech, search and notes models a few minutes after you stop using them and loads them again by itself (Settings → General → Free memory when idle). In the Activity Monitor you will see Lumina and a python process: it is Lumina's engine. It closes when the app closes, and if you close it by mistake the app starts it again.
Chat and web search
Ask Lumina answers from your meetings, notes and files and cites each passage with a number; small source chips under each answer open the meeting or link. It rewrites follow-up questions into a standalone search, keeps the best passages from different files and meetings, and says plainly when your sources do not contain the answer. Chats are saved in History. Ask about this meeting (meeting menu) starts a chat that always includes that meeting.
The Web search toggle adds results from DuckDuckGo, or from your own SearXNG (Settings → Knowledge). It is off by default because it sends your question to the search engine.
Attachments
The paperclip (or dropping files on the chat) attaches PDF, Word, PowerPoint, Excel, Markdown, text, CSV and audio or video files, up to 200 MB. Audio and video are transcribed on your computer. Ask about them or have them summarized: long files are summarized in parts, or Lumina uses the passages that match your question. With Keep in Sources on, they are saved in Sources too (audio as a transcript).
Ask it to do things
Ask Lumina can create a document in Sources ("make a note with the action items"), rewrite one of your notes, delete a note (it asks first), rewrite a meeting's summary the way you say, and keep an attached file in Sources. A card under the answer shows what it did, with Undo. It only touches notes, never your files on disk, and only when your message asks for it.
Read aloud
Notes and answers have Read aloud. The system voice works with no download; Kokoro 82M (120 MB, Settings → Read aloud) sounds more natural in English, Spanish, French, Italian, Portuguese, Japanese, Chinese and Hindi.
Connected apps
Settings → Connected apps shows the rest of the family on this computer and what Lumina does with each one.
- brain: Save to brain (⋯ menu of a finished meeting) writes it to
knowledge/lumina-<date>-<title>.mdin your vault through brain's MCP server; a switch saves every finished meeting, another adds the transcript. While brain is open, Ask Lumina has a brain pill that also searches your vault. - OpenCue: Send to an OpenCue agent… sends the summary, decisions and action items to the agent you pick, with what you want done; the reply appears under the summary. If that agent uses an online model, its provider sees the message.
- AI WorkStudio: opens Lumina inside its window, shows its notices and includes Lumina's tools in its single MCP server.
Agents (MCP)
Lumina is an MCP server, so agents can use your meetings and files.
| Tool | What it does |
|---|---|
search_knowledge | Semantic search over files, meetings and notes |
list_sources | Files, folders and notes with their status |
get_document | Full text of a source, or of a meeting (meeting:<id>) |
add_note | Save a note into the knowledge base |
add_web_page | Save a web page: its text, or a summary |
query_meetings | List meetings by text and date |
get_meeting | Notes, enhanced notes, summary and transcript of one meeting |
rewrite_summary | Rewrite a meeting's summary the way you ask (or expand, shorten, simplify, formal, actions) |
save_meeting_to_brain | Save a meeting as a note in your brain vault |
Claude Code:
claude mcp add lumina -- lumina mcp
Claude Desktop, Cursor and other stdio clients:
{ "mcpServers": { "lumina": { "command": "lumina", "args": ["mcp"] } } }
Clients that connect to a URL: http://127.0.0.1:47770/mcp with the header Authorization: Bearer <token>. Settings → Agents shows the token and ready-to-copy snippets with the full path to lumina.
Your data
Everything is in the data folder, ~/.lumina/data (Windows: %USERPROFILE%\.lumina\data; change it with LUMINA_DATA):
lumina.db: meetings, transcripts, notes, chats and the list of sources (SQLite)chroma/: the search indexmodels/andbin/: downloaded models and the llama.cpp serveruploads/: files you uploaded and imported recordingssettings.json: your settings and the MCP token (readable only by you)logs/: logs, useful when something fails
Back up the folder to keep everything. See the privacy policy for what ever leaves your computer.
Commands
lumina | Open Lumina in the browser (the server runs in that terminal; Ctrl+C stops it) |
lumina app | Open the desktop app (window and tray icon) |
lumina serve --port 47770 | Run the server without opening the browser |
lumina mcp | MCP server over stdio |
lumina models | List models; lumina models download parakeet-v3 downloads one |
lumina doctor | Check microphones, the system-audio helper, models and model servers |
lumina update | Update the code, the dependencies and the desktop app |
lumina uninstall | Remove the command and the desktop app; your data stays |
Troubleshooting
No sound from the microphone
macOS: System Settings → Privacy & Security → Microphone → allow Lumina (desktop app) or your terminal (browser). Windows: Settings → Privacy → Microphone. Then pick the device in Settings → Transcription and run lumina doctor.
"Others" stays silent
macOS: allow Lumina or your terminal in System Settings → Privacy & Security → Screen & System Audio Recording, then start again. The helper needs the Xcode command line tools (xcode-select --install). Linux: make sure PulseAudio or PipeWire is running (pactl info).
macOS keeps asking for the microphone
Lumina asks for the microphone and the computer's audio once, in the last step of the first-run setup (or Settings → Permissions). Starting a meeting never opens a permission window: if one is missing, the meeting tells you and links to Settings. The permissions belong to Lumina's audio helper (data/bin/LuminaAudio.app), which updates do not replace, so updating does not ask again. On macOS 14.2+ the computer's audio needs only System Audio Recording. lumina doctor prints both permissions as macOS reports them.
Enhanced notes do not appear
Check Settings → Notes model → Test. For Gemma 4, the first start loads the model (up to a minute on slow disks). For Ollama or LM Studio, make sure the server is running and has a model.
Update says the same version
Installs made before 0.1.2 had no git history and were never refreshed. Run the install command above once more (or lumina update): since 0.1.3 it downloads the current code, keeps your data/ folder and from then on lumina update works. The version is printed by lumina version.
Port 47770 is busy
Run lumina serve --port 47771, or set LUMINA_PORT=47771.
Build from source
git clone https://github.com/Lautaro005/lumina && cd lumina uv sync (cd web && npm install && npm run build) uv run lumina
Desktop app: cd apps/desktop && npm install && npm run tauri build. Tests: uv run pytest and cargo test in apps/desktop/src-tauri. See CONTRIBUTING.md.