Local-AI autocomplete + spell-correction for macOS — powered by MLX. Runs 100% on your Mac (Apple Silicon, Apple's MLX + Metal), lives in the menu bar, accept with Tab.
Sister project of Sombra (which uses
llama.cpp). Lumen is MLX-only — an Apple-native engine, a clean macOS sidebar UI, and models chosen straight from the Hugging Face mlx-community catalog.
- Inference is 100% local (MLX + Metal). No cloud, no telemetry.
- Lumen only touches the internet on your action: downloading an MLX model from Hugging Face. Everything else runs offline.
- The code is open — audit it. You can block all connections with a firewall (e.g. LuLu) and autocomplete keeps working; you just won't be able to download new models.
- Word-by-word autocomplete — each Tab inserts the next word; a sticky multi-word suggestion lets you Tab through a whole phrase.
- Instant word completion from an embedded dictionary (no GPU) while the model predicts the next phrase at word boundaries.
- Spell correction of the last word (native macOS spell-checker) — the typo is shown struck through with the fix next to it; colors are configurable.
- MLX model catalog — pick a recommended model (Qwen2.5 0.5B, Qwen3 1.7B/4B,
Gemma 3 1B…) as a card, or paste any
mlx-community/…id. Downloads on first use to~/Library/Application Support/Lumen/models. - Per-model AI instructions — tell the AI your language, tone and role; saved per model, used as context for each suggestion.
- Learn from your typing (optional, local) — favors the words you actually use.
- Emoji shortcuts — type
:name(:fire,:rocket,:festa…) with configurable gender and skin tone. - Per-app blocking — turn Lumen off in specific apps.
- Configurable — suggestion length, temperature, context window, accept shortcuts (Tab + accept-whole), bubble color/opacity/position.
- Clean native UI — macOS-style sidebar, light & dark, amber accent.
- Bilingual UI (English / Portuguese) following your system language.
- macOS 14+ and Apple Silicon (M1–M4)
- To build: Xcode + the Metal Toolchain component
(
xcodebuild -downloadComponent MetalToolchain)
./scripts/bundle.sh release # build & package Lumen.app (MLX compiled in)
open ./build/Lumen.app # pick a model on first launchLumen ships without a model — pick one from the catalog in Preferences → Model and it downloads from Hugging Face on first use.
Grant Accessibility (System Settings → Privacy & Security → Accessibility → Lumen). That is the only permission required.
Note on MLX: the app embeds Apple's MLX engine. The Metal kernels are shipped as a prebuilt
mlx.metallib(inFrameworks/, copied next to the binary bybundle.sh). Rebuilding it requires the Metal Toolchain.
| Component | Role |
|---|---|
MLXPredictor.swift |
inference over mlx-swift — predict (generation) + rank (scores dictionary candidates by context) |
SuggestionEngine.swift |
event loop: read → predict → show bubble → accept on Tab |
MLXCatalog.swift |
curated mlx-community model list |
AXReader / KeyTap / TextInjector |
accessibility read, Tab capture, text injection |
GhostOverlay / IndicatorOverlay |
suggestion bubble + presence badge |
SpellCorrector / WordDictionary / WritingProfile |
correction, instant completion, personalization |
SettingsView.swift |
native sidebar Preferences |
MIT © 2026 André Luís Alves Campos. Inference uses MLX and mlx-swift (MIT). Models have their own licenses and are downloaded by the user.