A small, very fast, native macOS Markdown editor for writing and thinking in plain text. Alone, or with an AI that edits the same file.
One text view, no preview. The Markdown source is what you edit, styled in place: headings are bigger, code blocks and quotes are marked, emphasis looks emphasised, the syntax characters are dimmed but stay visible and editable. What you see is the file.
- Fast and tiny. Pure AppKit and Swift, no web view, no dependencies, a 1.4 MB executable. A 1 MB file is on screen, styled, in ~20 ms, a 20 MB file in ~30 ms; idle CPU is 0.02 %.
- Made for working with an AI on the same files. luftig watches open files. When another program - an agent, a build tool, or
git- changes it, the new text appears within ~50 ms, keeping your selection and scroll position; your own unsaved edits are merged in when the changes do not overlap, and a banner asks when they do. Nothing is ever written over a version you have not seen. Settings > General chooses the behaviour: reload automatically, ask first, or never reload. - No preview, just text. The file is the document; there is no second rendering to keep in sync and nothing an agent cannot read back. Copy as HTML or Rich Text and Export as HTML / Rich Text / PDF are there for the moment a document leaves the editor. CommonMark and GFM compatible.
- Deep visual customization for distraction-free writing. Fonts (text, code, outline), size, line spacing, column width, and adjustable padding. 16 colour schemes, import any Base16 scheme from a file, or create your own from seven colour pickers. Optional panels around the text: an outline of the headings, a word count and reading time, and a syntax bar that inserts Markdown with a click - all plain text in the scheme's dim colour, no boxes, no buttons. Typewriter Mode keeps the line you write on in the middle of the window.
Download luftig-<version>.dmg from the latest release, open it and drag luftig to Applications. The app is signed with a Developer ID and notarized, so macOS opens it without a warning. MacOS 14 or later, Apple Silicon only.
Homebrew:
brew install bernorieder/luftig/luftig
Use Finder > Get Info > Open with > Change All to make luftig the default app for .md files.
Builds with the Xcode Command Line Tools alone (Swift 6 toolchain, no Xcode):
Scripts/build-app.sh # release build -> build.noindex/luftig.app (ad-hoc signed, verified)
cp -R build.noindex/luftig.app /Applications/ # installAn ad-hoc build asks once more for folder access after every rebuild; the build folder is called build.noindex so that Spotlight skips it (otherwise the Finder's "Open With" lists two copies). Scripts/release.sh is what makes a release: sign with the Developer ID, notarize, staple, DMG, GitHub release.
- Native, and the older of Apple's two text engines. luftig is written in Swift and AppKit, with no web view and no third-party code. The text is shown by a single standard macOS text view running on TextKit 1, because that is the engine that keeps a 10 or 20 MB file scrolling smoothly; luftig draws the code backgrounds, quote bars and code pills itself. Only the part of the text that is on screen is styled, and a keystroke restyles only its own paragraph, which is why document size barely matters.
- A regular macOS document app underneath. Open, save, autosave, undo, tabs, window restoration and Find are the system's own. Files are read with the lowest-level system call, so a file that is being rewritten by another program is never mapped into memory; the character encoding and the line endings a file came with are written back unchanged. Changes on disk are noticed through the system's file-change notifications, with the system's own document coordination as a second channel.
- Tested without a screen. 114 automated scenarios with about 4,300 checks cover the file handling, the editor driven by real key events, the pixels it draws, the colour contrast of every scheme, memory and speed; another 1,900 checks cover the Markdown lexer. They run from the command line on a machine without Xcode:
swift run -c release mdkit-checks,Scripts/build-app.sh --selftest, thenbuild.noindex/luftig-SelfTest.app/Contents/MacOS/luftig-SelfTest --selftest all.
Everything else (shortcuts, settings in detail, the reload matrix, the look on macOS 26, the limits and how each number was measured) is in docs/MANUAL.md; the design and the pitfalls are in docs/ARCHITECTURE.md.
MIT, see LICENSE. The colour schemes keep their authors' names and licences (docs/color-schemes.md).



