Lucid · how to use it

A structured document, built while you think.

A good technical note has a shape: sections and sub-sections, a list of options, a table that compares them, a diagram of how the parts connect. You talk (or type) about what you are thinking, and a model that runs on your own computer arranges it into exactly that: headings, lists, tables, diagrams and formulas. Ideas you rejected stay visible, crossed out. When you are done, one button makes a typeset PDF. Nothing leaves your computer.

This page is a map: which part of the window is what, and what to say to get what you want. Words in this style are things to say or type.

In one minute

  1. Have LM Studio running with the model loaded. The small pill at the top of Lucid shows a green dot and the model name when it is ready. If it says No model loaded, click the Load … button in the pill (it asks first, and takes about half a minute).
  2. Click New page (top of the left column), type a title, press Enter.
  3. Talk or type into the box at the bottom. With Wispr Flow just dictate: the words appear in the box and are sent about half a second after you stop. Typing: press Enter.
  4. Watch the page. Your words become notes. To change something, say what to change (Command mode, below). To undo anything, say undo.
  5. Download PDF (top right) when it looks right.

The window: what is what

One window, three columns. The numbers on the picture match the list under it (the picture is the real app, here in the light theme; the dark theme looks the same with dark colours).

The Lucid window, light theme The Lucid window, dark theme 1234567891011
The main window with a page open. Left: your pages. Middle: the page and, under it, the input box. Right: the History panel.
  • 1
    The page list (left)New page makes a blank page. New from a format… starts a page with sections for a kind of note (concept, system design, comparison, inference, benchmark). Import a note… brings in a note that was exported. Each page shows its name, what kind of note it is and when it last changed; the open one is bold. Click a page to open it. The ✕ at the end of a row asks Delete? once; the page then goes to the Trash (the Recycle Bin on Windows), so it can still be taken back. The arrows at the top hide the column.
  • 2
    Settings and theme (bottom left)Settings (or ⌘,): the look, the model, your name for the PDFs, and words speech recognition gets wrong. The moon/sun button switches light and dark.
  • 3
    The format chip (top bar, left)Shows the kind of note this page is. Click it to change the kind, fill the fields printed under the title in the PDF (source, book, chapter…), or add the sections the page is missing.
  • 4
    Model status and saving (top bar)The dot and name say whether the model is ready. If LM Studio is not running it says so, with Check again; if no model is loaded it offers to load yours. Saved / Saving… shows that your page is written to disk. If saving fails it says Couldn’t save with Try again, keeps trying by itself, and asks before the window closes.
  • 5
    History, Export note, Markdown, Download PDF (top right)Export note saves the whole note, with its history, as a file (see Saving, export and import). History opens or closes the panel on the right. Markdown saves the page as a Markdown file. Download PDF typesets the real PDF (the one black button in the window).
  • 6
    The page (middle)Your notes. It is read-only until you choose Edit mode: you speak and the model writes it. The title is at the top; diagrams and tables are drawn inline. Hover a diagram or table to get Edit diagram / Edit table.
  • 7
    The mode switch (bottom)Input (words become notes), Command (words change the page), Edit (you type in the page yourself). Diagram and Table open the step-by-step builders. The keys are ⌘1 to ⌘5 in that order.
  • 8
    The input box (bottom)Everything goes through this one box: type, or dictate. Above it, one line says what Lucid is doing (Structuring your notes… 6 s, or Working on your change…, and when it is done a short summary with Undo). A question from Lucid appears there too, as a card.
  • 9
    The History panel (right)Two lists. Changes: everything that changed the page, newest first. What you said: your words, with Edit and send again.
  • 10
    Show and RevertOn each change: Show scrolls to what it touched and flashes it; Revert takes back just that change (it asks first), whatever came after it.
  • 11
    Block numbers (the margin)A light number by each block: B1, B2, B3… A list is one block, a table is one, a diagram is one. Click one to see its parts. Say “in block 3, …” to talk about it (see Block numbers).

The three modes

The mode decides what your words mean. The box under the page always says which one you are in.

ModeYour words are…ExampleSwitch to it
Inputnotes. They are written into the page, structured (headings, bullets, a table, a diagram, a formula when that is what you described).Load balancer. Multiple application servers behind it. Health checks to avoid unhealthy servers.Click Input, ⌘1, ⌘/, or say input mode
Commandinstructions about what is already on the page. Nothing is added as a note.Add a CDN in front of the web server.
Add another row for consistency to this table.
Click Command, ⌘2, ⌘/, say command mode, hold the right ⌥ key while you dictate one command, or start with Lucid, …
Editkeys in the page: you click and type like in any editor. Use it for the few things the model gets wrong.(you type)Click Edit, ⌘3, ⌘E, or say edit mode. Esc goes back.
Safety. Every change the model makes is one undo step. It never deletes unless you say delete or remove: crossing out and choosing only mark things. A change that would throw away something you did not ask to delete waits for yes or no. If the model cannot make notes of your words, they are kept as you said them (listed as Kept as written): your words are never lost.
One more card. If you are in Command mode and say something that sounds like notes, a card asks Add it to the page as a note? with Add as a note and Dismiss.

Block numbers: say which block you mean

When a page has several diagrams, tables or lists, “this one” is not always clear. In the left margin of the page each block has a light number: B1, B2, B3… (picture above, marker 11). A list is one block, a table is one, a diagram is one. Inside a block there are parts, and you can name those too.

Say it (Command mode)

In block 3, add a row for cost. Cross out item 2 of block 6. Rename node 2 of block 5 to Cache. Delete column 3 of block 4. In the second block, add a row for cost. B3: rename the client to browser.

“Block 3”, “B3”, “block three”, “the third block” and “the last block” all work. The same with the right ⌥ key or Lucid, … in Input mode.

The parts of a block: click its number

  • A list: its items, item 2 of block 6.
  • A table: its columns from the left and its rows from the top, row 2 of block 4, column 3 of block 4.
  • A diagram: its parts and its connections, numbered as the diagram builder numbers them, node 2 of block 5, connection 1 of block 5.

Esc or a click elsewhere closes the list.

  • What you see, what you say and what the model reads are the same thing. The numbers are the model's own references (b3, b3.2), and Lucid tells it which one a number is when you say it.
  • If there is no such block or part (block 9 on a page of six, row 2 of a diagram), the model asks which one you mean instead of changing something else.
  • The numbers follow the page: when a block is added or removed the numbers after it change, so count what is on the page now.
  • Hide them in Settings → Appearance → Block numbers. In a very narrow window they are hidden by themselves.

What to say

Say it the way you would say it to a person. Lucid works out the structure.

Notes (Input mode)

Caching. A cache hit costs microseconds, a miss costs a database round trip. Redis is an in-memory store.

Usually a heading and a short paragraph or bullets, with the key words in bold.

Say it plainly: Lucid decides whether something is a heading, a sentence or a bullet, and it is told never to invent facts or numbers.

A comparison table (Input)

Create a comparison table. Three columns: property, SQL, NoSQL. Rows: schema, relationships, scaling, consistency and use cases.

One table with those columns and rows.

Add a row for consistency guarantees and fill in the SQL and NoSQL columns.

(Command) A new row, filled in. If Lucid cannot tell which table you mean it asks, and you answer "the first one".

A diagram (Input)

The browser gets static files from a CDN. API calls go through a load balancer and an API gateway to the order service. The order service reads from Redis, queries PostgreSQL and publishes events to Kafka.

One diagram: a cloud for the CDN, a hexagon for the load balancer, a cylinder for PostgreSQL, a pipe for Kafka… (see "Components that look like what they are").

A formula said in words

KV cache size is two times the number of layers times the number of KV heads times the head dimension times the bytes per element times the sequence length.

A display formula, with the surrounding sentence kept as text.

Keep rejected ideas (Command)

Cross out PostgreSQL and MongoDB. We're choosing DynamoDB, but I want to remember the alternatives.

Both options crossed out and still visible; DynamoDB marked chosen. If the same name is also in a diagram, it is the list that changes.

Change a diagram (Command)

Add Redis between the web server and the database. Add a cache-miss path to PostgreSQL and show that the result gets stored in Redis before returning.

The same diagram, updated: nothing that was there is lost.

Rename this node to API Gateway. Reverse this arrow. Group the services as Backend.

"This", "that" and "it"

The model uses where your cursor is and what changed last.

Then we delete the old cache entries after thirty days.

(Input) written as a note, not run as an instruction.

Make that a heading.

(Command) "that" is the sentence you just added. "This table" is the table your cursor is in.

Convert what is there

Turn those options into a table. Turn this list into a diagram.

The list becomes a table or a diagram; nothing is added that you did not say.

If Lucid is unsure which thing you mean it asks, with a card above the input box: click an option or say the first one, the second one… If it asks, it will not ask the same question again once you answered.

Diagrams by voice: the diagram builder

A ten-part diagram is hard to say in one breath, so there is a guided way: parts first, then connections, then fixes by number. Say diagram mode (or click Diagram next to the mode switch).

The diagram builder in the light theme The diagram builder in the dark theme 12345
The builder in step 2: seven parts are numbered on the right, the connections between them #1 to #6, and the drawing grows as you speak.
  • 1
    The steps1 Components, 2 Connections, 3 Edit, Think. You move on by saying connections, edit and so on, or by clicking.
  • 2
    Undo, Cancel, Insert diagramUndo takes back one step (say undo), Cancel throws the draft away (cancel), the black Insert diagram button (Insert table in the table builder; say done) puts the diagram into the page as one undo step.
  • 3
    The drawingUpdated after every phrase. It is shown as large as it can be read: a long chain is drawn top to bottom instead of shrinking.
  • 4
    The numbered listsComponents 1, 2, 3… and connections #1, #2… Use the numbers to fix things.
  • 5
    What was understoodThe line under the drawing says exactly what your last phrase did.

The steps

  1. Components. Say the parts: client, server, DNS, database (or add keywords: …). Each is numbered and drawn, and gets the right shape from its name.
  2. Connections. client to server · server to DNS · from server to client returns HTML (the words after are the label) · client to server to database (a chain). They are numbered #1, #2…
  3. Edit, by number. reverse 2 · rename 3 to Cache · delete connection 4 · connection 2 is resolve domain · group 2 and 3 as Backend · direction left to right. If a number could mean a component or a connection it asks.
  4. Think. Ramble and correct yourself; later statements win. Nothing is drawn until you say draw it.

What the grammar cannot read is handed to the model with your numbering, and Lucid tells you what changed. Say edit this diagram (or use Edit diagram on a drawing) to change a diagram that is already on the page with the same numbers. A half-built draft survives a reload.

Tables by voice: the table builder

Say table mode (or click Table). It works like the diagram builder: columns, then rows, then fixes by number.

  1. Columns. three columns: property, SQL, NoSQL
  2. Rows. A whole row per phrase: schema, fixed, flexible · one cell at a time with skip and new row · a whole column: SQL column: fixed, joins.
  3. Fix, by number. cell 2 3 is embedded · delete row 2 · add column cost · move row 3 up.

Then done. edit this table reopens the table on the page.

Components that look like what they are

Say what a part is called and it is drawn as what it is, on the page and in the PDF. This works from the words alone: in the builder, in dictated notes, and for what an AI agent writes.

Databasedatabase · PostgreSQL · MySQL · MongoDB · DynamoDB
Cachecache · Redis · Memcached · Varnish
Queuequeue · Kafka · SQS · RabbitMQ · topic
StorageS3 · bucket · blob · disk · file system
CDNCDN · CloudFront · Cloudflare · Akamai
Load balancerload balancer · Nginx · HAProxy · reverse proxy
API gatewayAPI gateway · gateway · Kong · Envoy
Browser / appclient · browser · mobile · app · UI
Useruser · customer · admin · person
DNS / outsideDNS · Route 53 · Stripe · OAuth · third party
Questiondecision · check · condition · if
Server / serviceserver · service · API · worker · lambda

A program that uses the thing (Kafka consumer, Redis client, queue worker) stays a plain service. Anything you chose explicitly (3 is a database) is never changed.

Big diagrams stay readable. A diagram with many parts is not squeezed until the words are too small: it is drawn in whichever direction (left to right, or top to bottom) is shrunk least, the text never goes below 70% of its natural size on screen (the figure scrolls before that), and on the PDF page a big diagram uses the page, a little into the margins.

Voice commands

Short whole phrases that Lucid handles itself, without asking the model. They only count when they are the whole thing you say, so a long sentence that merely contains these words is never mistaken for one.

SayWhat happens
input mode · back to notes · notes modeYour next words are notes.
command mode · commandsYour next words are instructions.
edit mode · let me edit · edit by handYou type in the page. Esc goes back.
diagram mode · new diagram · draw a diagramOpens the diagram builder.
table mode · new table · create a tableOpens the table builder.
edit this diagram · edit this tableOpens the one on the page in its builder.
undo · scratch that · redoOne step back or forward (also ⌘Z / ⇧⌘Z).
yes · apply it · go aheadAccepts a change that was waiting for your yes.
no · cancel · never mindRefuses it.
the first one · the second one … option threeAnswers a question Lucid asked with options.
stop · cancel thatStops what is running.
export pdf · export as markdownMakes the file (it asks where to save).
Lucid, add a row for cost to this tableIn Input mode: this one thing is a command, then back to notes.

Keyboard shortcuts

KeysWhat
EnterSend what is in the input box (ShiftEnter makes a new line). Pasted text is sent by itself after a short pause.
⌘1 · ⌘2 · ⌘3Input mode · Command mode · Edit mode, from anywhere in the window.
⌘4 · ⌘5Open the diagram builder · the table builder. While a builder is open the modes are off (say done or cancel first). All the number keys leave an open dialog alone.
⌘/Switch between Input and Command.
hold right ⌥Everything you dictate while it is held is one command.
⌘E · EscEdit mode on · back to the input box.
⌘Z · ⇧⌘ZUndo / redo the model's changes (outside text fields).
⌘LBack to the input box.
⌘,Settings.
⌘+ · ⌘− · ⌘0Zoom the page only in, out, and back to 100% (also View → Zoom In, Zoom Out, Actual Size). A pinch on the trackpad, or Ctrl and the scroll wheel over the page, do the same. The pages list, the buttons, the input box and the History panel keep their size. While the page is not at 100% a small percentage chip shows in the top bar; click it to reset.
EscCloses a dialog or a menu; in the input box cancels the running job or clears the text.

History, undo and revert

  • Undo / redo take back or bring back the last change (say undo, or ⌘Z). Every change by the model is exactly one step.
  • Changes (in the History panel) lists every change to the page, newest first, with who made it: Lucid, Builder, an AI agent, or Revert. Show scrolls to what it touched and flashes it.
  • Revert takes back one earlier change, not just the last. It asks first (Take this back? with Restore and Cancel), and afterwards the entry says Taken back. Only the blocks that change touched go back to how they were; later changes to other blocks stay. It is one undo step, and the revert is itself listed, so it can be reverted. It is available while those blocks are still as that change left them; after another change or your own typing, the button is greyed out and says why. Lucid keeps the way back for the newest 25 changes.
  • What you said keeps your words; Edit and send again puts them back in the box, for example to fix a word the speech recognition got wrong.

Dialogs

The Settings dialog, light themeThe Settings dialog, dark theme

Settings (⌘,)

  • Appearance: Theme (Light, Dark or System), Type (Mono by default, Sans or Serif) and Block numbers (Show or Hide). Applied at once; the PDF keeps its own typesetting.
  • Language model (LM Studio): the address (this computer only), the model name, and the context length used when Lucid loads the model.
  • PDF: your name, and the text at the right of the footer (the page number is on the left).
  • Words to expect: one per line. Names and tools that speech recognition gets wrong ("vLLM", "Kubernetes"); they are kept as you wrote them.
  • Save keeps the model, PDF and words; Cancel or Esc closes it.
The New page dialog, light themeThe New page dialog, dark theme

New from a format…

Say what the notes are about (What will you write about?). A format is suggested at once, and again by the model a few seconds later; Suggest a format asks again. You always choose, or you choose Blank page. Give it a title and press Create page.

The page then starts as the format's section headings, and what you dictate goes under the right one.

Note formats

FormatForSections
Concept noteOne computer-science or system-design ideaDefinition · Intuition · How it works · Example · Pitfalls and gotchas · Related concepts
System design noteDesigning a system end to endRequirements · Capacity estimates · API · High-level design · Data model · Deep dives · Trade-offs and decisions · Open questions
ComparisonChoosing between technologiesContext · Options · Comparison · Pros and cons · Decision
Inference engineering noteKV cache, FLOPs, bandwidth, batching…Intuition · The math · Numbers to remember · Hardware implications · Pitfalls
Benchmark noteAn experiment or a benchmarkGoal and hypothesis · Setup · Method · Results · Observations · Next experiments

Empty sections are not printed in the PDF. A blank page can take a format later (the chip at the top).

Saving, exporting and importing a note

Every note saves by itself, as one file in ~/Lucid (<title>--<id>.lucid, JSON). That file is the whole note: its blocks (text, diagrams, tables), everything you said (each dictation, as it came), the history of changes with the way back for the newest 25, and its format and fields. Older versions are kept in ~/Lucid/.lucid/backups.

Export note…

The Export note button in the top bar, or File → Export Note… (⇧⌘E). Choose where to save the .lucid file: a backup, a move to another computer, or a note to hand to someone.

One choice: Include what I said and the change history (on). Switch it off to share only the notes, the title and the fields under it: your dictation can hold things you do not want to hand out. You cannot save it into your Lucid folder itself (the note is already there).

Import a note…

Import a note… in the pages list, or File → Import Note… (⌘O). Pick one or more .lucid files. The note opens, with what was said and its history, and Revert still works on its newest changes.

Each file is checked first, and every block in it. A file that is not a note, is damaged, or comes from a newer Lucid is refused with the reason, and nothing is written for it. Nothing is ever overwritten: if you already have the same note, the import is a copy (… (copy)) and both are kept.

The notesWhat you saidHistory and RevertFor
.lucid fileyes, exactlyyes (or left out)yes (or left out)keeping, moving, sharing; Import brings it back
Markdownyes, as text (diagrams as Mermaid)nonoother tools, GitHub
PDFyes, typesetnonoreading and printing

Export

  • Download PDF typesets the real PDF with Tectonic in the house style (numbered sections, underlined title, "Page N" and your footer). Diagrams and tables are typeset, not screenshots. A big diagram is set at its own size and may move to the top of the next page so the text after it fills the page it leaves.
  • The first PDF needs the internet, once. The PDF engine (Tectonic) downloads its typesetting files the first time it runs: several hundred small ones, about five minutes. Lucid does it in the background after the first start and says so next to the buttons (Getting the PDF engine ready (first time only, needs the internet): 120 files…). A PDF you ask for meanwhile waits for it and shows the same count. After that a PDF takes a second or two and works offline.
  • Markdown saves GitHub-flavoured Markdown; each diagram is a Mermaid block.
  • Nothing to install: the PDF engine and the drawing of diagrams come with Lucid. Markdown always works, also without the internet.

Dictating with Wispr Flow

Lucid does no speech recognition. Wispr Flow turns your voice into text and pastes it; Lucid's input box takes the paste.

  • A paste goes to the input box wherever the focus is (after clicking a button, a pill, the page, or with the cursor in the title) and is sent about half a second after the last piece arrives. Several pastes in a row are joined.
  • It stays where you meant it when it should: into a field of an open dialog, and into the page itself in Edit mode. While a builder is open, it goes to the builder.
  • Start typing after a paste and the automatic send is cancelled, so you can correct the words first.
  • For one command by voice, hold the right ⌥ key while you dictate, or begin with Lucid, …. Wispr's own command mode is not used.
  • There is a short check-list for trying it with your own voice: docs/wispr.md on GitHub.

When something goes wrong

You seeWhat it means · what to do
LM Studio isn’t runningStart LM Studio and its local server, then click Check again.
No model loaded, or Another model is loadedClick the Load … button in the pill: it asks first, unloads any other model, then loads yours.
Your words appear as they were said, listed as Kept as writtenThe model’s answer could not be used. Nothing is lost: Edit and send again in the History, or fix it in Edit mode.
Lucid asks a questionIt could not tell which thing you meant. Click an option or say the second one.
Couldn’t saveThe folder is full or not writable. Click Try again; Lucid also keeps trying by itself and asks before the window closes.
Getting the PDF engine ready (first time only…) next to Download PDFNormal on the first start: wait, it counts the files (about five minutes). A PDF you ask for meanwhile waits for it.
needs the internet the first time it makes a PDFConnect to the internet and click Download PDF again. What was already downloaded is kept.
Tectonic, the PDF engine, was not foundThe copy of Lucid is damaged. Download it again from the project’s releases (Help, Check for Updates…). Markdown export works meanwhile.
PDF without some diagrams, and a note that they could not be drawnThe note says which. Send the page to Lucid again, or fix the diagram in its builder (click the diagram), then download the PDF again. Please report it if it keeps happening.
Revert is greyed outThe blocks that change touched were changed after it (by another change or by you). Use undo, or fix it in Edit mode.
Nothing happens when you dictateClick once in the Lucid window so it has the focus; check that Wispr Flow is pasting (the text should appear in the box).

Where things live

  • Your pages: one file per page in ~/Lucid, the Lucid folder in your home folder (on Windows, C:\Users\you\Lucid); a JSON file you can back up or copy. Set LUCID_HOME to use another folder.
  • Settings, build files, backups: ~/Lucid/.lucid/. Old versions of a page are kept there before it is overwritten.
  • PDFs an agent makes: ~/Lucid/exports/. The PDFs you download go where you choose.
  • Look and type (theme, Mono/Sans/Serif): remembered by the app itself.

For AI agents (MCP)

Lucid is also a toolbox for AI agents: Claude Code, or a model in LM Studio's chat, can read and edit your pages with the same safe tools the local model uses. The Lucid app must be running. Every agent change is one undo step, appears in Changes marked as the agent's, and can be reverted.

The tools: list_documents, get_outline, read_document, insert_notes, apply_ops, list_formats, create_document, export_pdf (saves a PDF in ~/Lucid/exports/), describe_kit. Set-up commands for Claude Code and LM Studio are in docs/mcp.md on GitHub.

Honest limits

  • The model is a local 27-billion-parameter model. It is usually right, not always; Edit mode, undo and Revert are for the rest.
  • A request takes 10 to 25 seconds, which is normal for a 27B model on a laptop (the first one after a change is the slowest). The line above the input box counts the seconds.
  • Pasting, not hearing: Lucid depends on Wispr Flow (or you typing) for the words.
  • A diagram with 15 parts in one long column cannot be big on a single PDF page.
  • The app is tested with a scripted model and with the real one; how Wispr Flow behaves on your voice can only be checked by you (a check-list).