██╗ ██╗ ██╗███╗ ███╗ ██████╗
██║ ██║ ██║████╗ ████║██╔═══██╗
██║ ██║ ██║██╔████╔██║██║ ██║
██║ ██║ ██║██║╚██╔╝██║██║ ██║
███████╗╚██████╔╝██║ ╚═╝ ██║╚██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝
Instant screen translation for macOS — powered by local AI.
Lumo는 화면의 어느 영역이든 캡처하거나 선택한 텍스트를 클라우드 없이 로컬 AI로 즉시 번역하는 macOS 메뉴바 앱입니다. 결과는 자동으로 클립보드에 복사됩니다.
export-1776159181601-compressed.mp4
재생이 안 되면 YouTube에서 시청
- ⌘⇧1 — 화면 영역 드래그 캡처 → 번역
- ⌘C ⌘C — 선택 텍스트 즉시 번역 (300ms 이내 두 번)
- 한↔영 자동 감지 — 한국어 → 영어, 그 외 언어 → 한국어로 자동 전환 (한글 작성 후 ⌘C ⌘C만 누르면 영문으로 즉시 변환)
- 스트리밍 출력 — 번역 결과를 토큰 단위로 실시간 표시
- 클립보드 자동 복사 — 번역 완료 즉시 복사
- 오프라인 동작 — 인터넷 연결 불필요, 모든 추론이 로컬에서 실행
- 자동 업데이트 — Sparkle 기반 백그라운드 업데이트
- 최신 릴리즈에서
Lumo-x.x.x.dmg다운로드 - DMG를 열고 Lumo.app을 Applications 폴더로 드래그
- 첫 실행 시 시스템 환경설정 → 개인 정보 보호 → 화면 기록에서 Lumo 허용
- Local AI Setup 섹션을 따라 기본 MLX 모델(~3 GB)을 사전 다운로드 — 앱이 모델을 자동으로 받지 않습니다.
아래 영문 프롬프트를 Claude Code · Codex · 기타 에이전트 CLI에 그대로 붙여넣으면 알아서 끝까지 설치해줍니다 — 최신 DMG 다운로드, /Applications 배치, Gatekeeper 검증, Python 3 확인, huggingface-cli 설치, 기본 모델 사전 다운로드, 서버 헬스체크까지.
📋 English install prompt (click to expand → copy-paste into your AI assistant)
Install Lumo, a macOS menu-bar app that translates any screen region or
selected text using a local MLX model. Target environment: macOS 13+ on
Apple Silicon. Everything runs locally — no cloud calls.
Execute these steps in order. Verify each step before moving on, and stop
with a clear error message if anything fails instead of silently retrying.
1. Resolve the latest release version:
VERSION=$(curl -fsSL https://api.github.com/repos/NewTurn2017/Lumo/releases/latest \
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
Confirm VERSION is non-empty before proceeding.
2. Download the DMG:
curl -L -o "/tmp/Lumo-${VERSION}.dmg" \
"https://github.com/NewTurn2017/Lumo/releases/download/v${VERSION}/Lumo-${VERSION}.dmg"
3. Install into /Applications (replacing any prior copy):
hdiutil attach "/tmp/Lumo-${VERSION}.dmg" -nobrowse -quiet -mountpoint /tmp/LumoMount
rm -rf /Applications/Lumo.app
ditto /tmp/LumoMount/Lumo.app /Applications/Lumo.app
hdiutil detach /tmp/LumoMount -quiet
rm "/tmp/Lumo-${VERSION}.dmg"
4. Verify Gatekeeper accepts the app. Must print "accepted" and
"Notarized Developer ID":
spctl -a -vv /Applications/Lumo.app
5. Ensure Python 3 is available. Lumo searches these paths in order:
/opt/homebrew/bin/python3, /usr/local/bin/python3, /usr/bin/python3
If none exist, install Homebrew then Python:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python@3.12
6. Install the Hugging Face CLI in an isolated environment (do not touch
system Python):
brew install pipx || python3 -m pip install --user pipx
pipx ensurepath
pipx install "huggingface_hub[cli]"
7. Pre-download the default model (~3 GB). Lumo intentionally does NOT
download the model itself — you must do this before first launch or
the app will show "모델 없음" and refuse to start:
huggingface-cli download mlx-community/gemma-4-e4b-it-4bit
Files land in ~/.cache/huggingface/hub/models--mlx-community--gemma-4-e4b-it-4bit/
8. Launch Lumo:
open -a Lumo
9. Tell the user: on the first screen capture, macOS will request Screen
& System Audio Recording permission. Walk them through:
System Settings → Privacy & Security → Screen & System Audio Recording
→ toggle "Lumo" ON → relaunch Lumo from the menu bar icon.
10. Verify the local MLX server is healthy (may take 10-30 s to warm up
on first launch):
curl -fsS http://127.0.0.1:8080/v1/models
Expected: JSON containing "mlx-community/gemma-4-e4b-it-4bit".
If it fails, surface the last 30 lines of the server log:
tail -n 30 ~/Library/Logs/Lumo/mlx-server.log
11. Report a short final summary:
- Installed Lumo version and bundle path
- Model cache size on disk (du -sh on the model folder)
- Server health check result
- Any manual permission step the user still needs to click
Defaults — do not change unless the user explicitly asks:
- Model: mlx-community/gemma-4-e4b-it-4bit (switchable in-app via ⌘,)
- Venv: ~/.local/share/Lumo/mlx-venv (auto-recreated on launch if missing)
- Server: http://127.0.0.1:8080
If Python 3 is missing and you cannot install Homebrew (no sudo, no
network, restricted host), stop and ask how to proceed rather than
building Python from source.
시스템 요구사항
| 항목 | 최소 사양 |
|---|---|
| macOS | 13.0 Ventura 이상 |
| 칩 | Apple Silicon (M1 이상) |
| 저장 공간 | 30MB + MLX 모델 용량 |
⌘ + ⇧ + 1
화면이 어두워지면 번역할 영역을 드래그합니다. ESC로 취소.
⌘C → ⌘C (300ms 이내)
텍스트를 선택하고 ⌘C를 두 번 빠르게 누릅니다.
한글 → 영문 변환 (핵심 기능): 한글로 작성한 텍스트를 선택한 뒤 ⌘C를 두 번만 누르면 즉시 영문으로 변환됩니다. 이메일·슬랙·코드 커밋 메시지 등 영문 입력이 필요한 곳 어디서나 별도 앱 전환 없이 사용할 수 있습니다.
| 입력 언어 | 번역 결과 |
|---|---|
| 한국어 | 영어 |
| 영어·일어·중국어 등 | 한국어 |
- 번역 결과가 화면 중앙에 스트리밍으로 표시됩니다
- 완료 즉시 클립보드에 복사됩니다
- 설정한 시간(기본 15초) 후 자동으로 사라집니다
- 마우스를 올려두면 타이머가 일시정지됩니다
- Escape 키 또는 ✕ 버튼으로 수동 닫기
- 다른 앱 클릭 시 팝업이 유지됩니다 (방해 없이 읽기 가능)
Lumo는 로컬 MLX 서버를 직접 띄웁니다. 앱은 첫 실행 시 ~/.local/share/Lumo/mlx-venv에 Python venv를 만들고 mlx-lm을 자동으로 설치하지만, 모델 파일 자체는 의도적으로 자동 다운로드하지 않습니다 — 수 GB 트래픽을 사용자 동의 없이 쓰지 않기 위함입니다. 첫 실행 전에 직접 받아주세요:
# huggingface-cli 설치 (pipx 권장, 시스템 Python을 건드리지 않음)
brew install pipx || python3 -m pip install --user pipx
pipx ensurepath
pipx install "huggingface_hub[cli]"
# 기본 모델 다운로드 (~3 GB)
huggingface-cli download mlx-community/gemma-4-e4b-it-4bit다운로드된 모델은 ~/.cache/huggingface/hub/models--mlx-community--gemma-4-e4b-it-4bit/에 저장되고, Lumo가 자동으로 감지해 mlx_lm.server를 127.0.0.1:8080에 기동합니다. 기동 로그는 ~/Library/Logs/Lumo/mlx-server.log 에서 확인할 수 있습니다.
다른 모델을 쓰려면 앱 설정(⌘,)에서 모델 ID를 바꾸고, 새 모델도 같은 방식으로 huggingface-cli download <model-id> 로 사전에 받아 두세요.
Lumo는 Sparkle을 통해 새 버전을 자동으로 확인합니다.
메뉴바 아이콘 → 업데이트 확인... 으로 수동 확인도 가능합니다.
# 의존성
brew install xcodegen
# 빌드
git clone https://github.com/NewTurn2017/Lumo.git
cd Lumo
xcodegen generate
open Lumo.xcodeprojXcode 16+, Swift 5.9, macOS 13 SDK 필요.
- 이전 번역 누설 수정 — MLX 서버의 cross-request KV prompt cache로 인해 가끔 이전 번역의 단편이 새 결과에 섞이던 문제 해결 (
--prompt-cache-size플래그 제거, 매 요청 fresh 처리) - 팝업 UI 리디자인 — 반투명 오버레이 제거하고 시스템 배경색의 불투명 패널로 변경, 둥근 모서리·구분선·강조 버튼으로 가시성과 정돈감 개선
- 텍스트 선택 비활성화 — 본문 텍스트 블록 선택 동작 제거 (복사는 "복사" 버튼으로)
- MLX 서버 자동 재시작 — 서버가 비정상 종료되어도 다음 번역 전에 자동 복구
- 기본 포트 변경 (8080 → 18080) — OrbStack 등 다른 서비스와의 포트 충돌 방지 (기존 사용자는 실행 시 자동 마이그레이션)
- 에러 메시지 개선 — 404 응답을 "서버에 연결할 수 없음"으로 명확화, 불필요한 "Ollama" 접두어 제거
- 팝업 표시 시간 설정 — 5초 / 15초 / 30초 / 1분 / 수동 닫기 중 선택 (설정 → 일반 → 번역)
- 본문 글씨 크기 슬라이더 — 12–28pt 범위, 실시간 미리보기 제공
- 호버 일시정지 — 마우스를 팝업 위에 올리면 타이머가 멈추고, 벗어나면 남은 시간부터 재개
- Escape 키 닫기 — 팝업이 포커스를 가질 때 Escape로 즉시 닫기
- 클릭 아웃사이드 유지 — 다른 앱 클릭 시 팝업이 닫히지 않아 번역 결과를 읽으면서 작업 가능
- 최초 릴리즈
- 화면 영역 캡처 번역 (
⌘⇧1) - 이중
⌘C선택 텍스트 번역 - 로컬 MLX 서버 자동 실행 및 관리
- 팝업 크기 선택 (작게 / 보통 / 크게 / 아주 크게)
- Sparkle 기반 자동 업데이트
MIT © 2026 NewTurn2017