<p align="center">
<img src="https://raw.githubusercontent.com/amurgola/LumaBrowser/HEAD/icon/icon.png" alt="LumaBrowser" width="96" height="96">
</p>
<h1 align="center">LumaBrowser</h1>
<p align="center">
<b>로컬 AI 스택을 하나의 앱에 담았습니다.</b><br>
이미 사용하고 있는 AI 도구들을 위해 GPU 인식(GPU-aware) LLM 런타임, 채팅 및 에이전트 기능, 로컬 이미지/비디오/음악/음성 처리, 브라우저 자동화 기능을 갖춘 웹 브라우저입니다.
</p>
<p align="center">
<a href="https://lumabyte.com">웹사이트</a> ·
<a href="https://github.com/amurgola/LumaBrowser/releases/latest">다운로드</a> ·
<a href="https://lumabyte.com/apis">API 문서</a> ·
<a href="Documentation/index.md">에이전트 개발자 문서</a> ·
<a href="#license">라이선스</a>
</p>
<p align="center">
무료 · 오픈 소스(AGPL-3.0) · 사용자의 기기에서 실행
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/amurgola/LumaBrowser/HEAD/Documentation/images/chat.png" alt="LumaBrowser chat answering a question after searching the web" width="900">
</p>
LumaBrowser는 로컬 AI를 위해 사람들이 사용하던 여러 개의 개별 도구들(모델 서버, 채팅 UI, 이미지 생성기, 음성 스택, 에이전트를 위한 헤드리스 브라우저 등)을 하나의 데스크톱 앱으로 대체합니다. 이 앱은 사용자의 GPU를 확인하고 모델 다운로드 전에 어떤 모델이 적합한지 알려주며 모든 것을 로컬에서 실행합니다. 사용자 본인의 탭, 로그인 정보, 파일은 기기에 남아 있으며, Claude Code, Codex, Cline, OpenCode와 같은 외부 에이전트들은 MCP를 통해 브라우저를 구동할 수 있습니다.
시작하기 (Get started)
1. 설치 (Install)
GitHub Releases에서 최신 빌드를 다운로드하세요:
| 플랫폼 | 파일 |
|---|
| Windows x64 | 설치 프로그램 또는 포터블 .exe |
| ... | |
| Or, Node 18 이상을 사용하여 터미널에서 최신 빌드를 가져와 실행합니다: | |
2. 모델 선택 (Pick a model)
모델 열기 (Models). LumaBrowser는 사용자의 하드웨어를 읽어와 다운로드하기 전에 모든 모델에 적합성 배지(fit badge)와 예측 속도를 표시합니다. Hugging Face에서 직접 검색하거나, LM Studio, Ollama 또는 Hugging Face 캐시에 이미 있는 모델을 다시 다운로드할 필요 없이 연결할 수 있습니다.
<p align="center">
<img src="https://raw.githubusercontent.com/amurgola/LumaBrowser/HEAD/Documentation/images/model-fit.png" alt="Model search showing a fit badge and predicted speed for each quantization" width="800">
</p>
3. 작업 부여하기 (Give it a task)
채팅을 열고 웹이 필요한 무언가를 요청하세요:
최신 llama.cpp 버전을 검색하고 변경된 내용을 몇 가지 항목으로 알려주세요.
에이전트가 자체 탭을 열고, 페이지를 읽은 후 답변합니다. 사용자의 탭은 그대로 유지됩니다.
어떤 부분이 필요할까요?
| 원하는 기능 | 사용할 부분 |
|---|
| 로컬 모델 채팅, 이미지 생성, 어시스턴트와 브라우징 | 데스크톱 앱 |
| ... | |
기능 (Features)
브라우저 (Browser)
- 탭, 기록, 북마크 및 내장 광고 차단기(Ghostery 엔진)가 있는 Chromium 기반 브라우저에 더해 Chrome 확장 프로그램 스토어(Electron에서 작동하는 선별된 저장소: Bitwarden, Dark Reader, SponsorBlock, React DevTools 등), 모든 Chrome 웹 스토어 링크 또는 압축 해제 폴더를 지원합니다.
- Luma On Demand: 어떤 페이지든 떠 있는 음성 또는 텍스트 패널로 현재 탭에서 작동합니다.
- 대시보드 (Dashboard): 채팅 및 확장 프로그램의 실시간 위젯 그리드입니다.
하드웨어에 맞춘 Local LLM
- CPU, CUDA 12, CUDA 13 및 Vulkan을 위한 llama.cpp runtimes, Apple Silicon용 MLX, 그리고 추가 ik_llama.cpp 및 NInfer runtimes를 지원합니다.
- 각 모델과 그 KV 캐시 크기를 비디오 메모리에 맞추고, 전체(full), 부분적(partial) 또는 CPU 오프로드를 선택하며, 더 빠른 경우 MoE expert를 CPU로 이동시킵니다.
- llama.cpp RPC를 통해 여러 GPU에 걸쳐 모델을 분할하거나 다른 장치 간에 분산할 수 있습니다.
http://127.0.0.1:8317에서 OpenAI와 Anthropic 형식을 모두 지원하는 선택적 로컬 API를 제공합니다. 기본적으로 비활성화되어 있습니다(Off by default).
- 또한 모든 OpenAI 호환 엔드포인트(LM Studio, Ollama, vLLM) 및 Anthropic과 연동됩니다.
<p align="center">
<img src="https://raw.githubusercontent.com/amurgola/LumaBrowser/HEAD/Documentation/images/llm-setup.png" alt="LLM setup with runtimes, models and per-model settings" width="800">
</p>
이미지, 비디오, 음악 및 음성
- 이미지: FLUX.1 Schnell, FLUX.2 klein, Qwen-Image 및 Qwen-Image-Edit, Z-Image Turbo, Chroma, SDXL, SD 1.5를 지원하며 LoRA 지원과 Hugging Face URL 또는 로컬 파일에서 가져올 수 있습니다.
- 비디오: Wan 2.2 (텍스트 및 이미지 대 비디오), LTX-Video, AniSora, MiniMax-H3.
- 음악: MiniMax-Music3 (CUDA, Linux 또는 WSL2 지원, 약 34 GB의 비디오 메모리 필요).
- 음성 인식(Speech-to-text): Parakeet, Qwen3-ASR 및 whisper.cpp.
- 음성 합성(Text-to-speech): Kokoro, Pocket TTS 및 Piper 음성을 지원하며 Chatterbox 음성 복제 기능을 제공합니다.
에이전트 및 코딩
- 도구와 채팅: 브라우징, 페이지 읽기, 파일 및 이미지 도구, PDF 및 문서에 대한 지식 기반(BM25와 선택적 임베딩 포함)을 통해 채팅할 수 있습니다.
- Agents: 자체 프롬프트, 도구, 모델 및 지식을 가진 이름 지정된 하위 에이전트로, 채팅, API 또는 MCP에서 호출 가능합니다.
- Code mode:
luma CLI와 IDE 플러그인을 구동하는 코딩 에이전트이며, LumaBrowser 확장 프로그램을 빌드하고 핫 설치할 수 있습니다.
- Tool Forge: 이 에이전트는 자신이 선언한 네트워크 액세스만 얻는 새로운 격리된 도구를 작성, 테스트 및 게시합니다.
- stdio, 스트림 가능한 HTTP 또는 SSE를 통해 MCP 외부 서버에 연결합니다.
자동화 및 트리거(Automation and triggers)
- 모든 탭에서 웹 알림을 웹훅(webhook)으로 전달합니다.
- 페이지 또는 그 안의 특정 요소를 감시하고, 변경 시 알림이나 웹훅을 받습니다.
- URL 패턴과 일치하는 네트워크 응답을 캡처하여 전달합니다.
- 선택적 응답 스키마와 결과 웹훅이 있는 반복적인 AI 작업(recurring AI tasks)을 수행합니다.
- 필터, 쿨다운 시간(cooldowns), 무음 시간(quiet hours) 설정을 통해 들어오는 웹훅(Slack 및 GitHub 프리셋), 파일 또는 폴더 변경, 알림 또는 페이지 변경으로부터 에이전트 실행(agent run)을 시작합니다.
- ntfy를 통해 휴대폰으로 푸시합니다.
공유(Sharing)
- 모델, 이미지 및 음성 생성 기능, 에이전트, 그리고 (선택적) GPU를 다른 장치와 공유할 수 있습니다. PIN 페어링(PIN pairing), mDNS 디스커버리(mDNS discovery), 고정된 TLS(pinned TLS)를 지원합니다.
- 네트워크상의 휴대폰 및 태블릿을 위한 선택적 웹 앱(Progressive Web App, PWA)을 제공합니다.
- 링크를 통해 라이브 탭을 공유하며, 시청자는 이를 보거나 제어권을 가져올 수 있습니다.
확장 기능(Extensions)
AI 에이전트를 연결하세요
MCP
LumaBrowser는 **설정(Settings)**에서 사용자를 대신하여 Claude Code, Cline, Codex 및 OpenCode에 MCP 항목을 작성하거나 구성을 파일로 내보낼 수 있습니다. 수동으로 설정하는 방식은 다음과 같습니다:
{
"mcpServers": {
"luma-browser": {
...
}
이 서버는 LumaBrowser가 실행되고 있지 않으면 시작합니다. 도구들은 브라우징(browsing), 탭(tabs), 페이지 읽기 및 추출(page reading and extraction), 에이전트(agents), 예약된 작업(timed tasks), 페이지 모니터(page monitors) 및 LumaBrowser에 연결된 모든 MCP 서버를 다룹니다.
WebDriver 및 CDP
둘 다 기본적으로 비활성화되어 있습니다. 설정에서 활성화한 후 다음을 수행합니다:
driver = webdriver.Remote("http://127.0.0.1:9515", options=options)
const browser = await puppeteer.connect({ browserURL: 'http://127.0.0.1:9222' });
클라이언트는 자동화가 생성한 탭만 보고 사용자의 탭은 볼 수 없습니다. 드라이버는 LLM에게 매칭을 멈춘 셀렉터(selector)를 해결하도록 요청할 수 있습니다.
REST 및 로컬 모델 API
전체 API 레퍼런스(REST, MCP 도구 및 OpenAI와 Anthropic 호환 로컬 API)는 [lumabyte.com/apis]에서 확인할 수 있습니다.
시스템 요구사항
| 등급 (Tier) | 비디오 메모리 | 원활하게 작동하는 작업 |
|---|
| 노트북 (Laptop) | 8GB 미만, 또는 GPU 없음 | 소형 LLM, 음성, 목소리; 이미지 생성은 8GB 필요 |
| ... | | |
등급별 요구사항은 가장 큰 단일 카드 용량을 사용합니다. 대부분의 워크로드에서 카드는 합산되지 않으며 (LLM은 예외: 여러 카드에 분할 가능), GPU는 다음과 같은 지원을 제공합니다.
| GPU | 지원 내용 |
|---|
| NVIDIA | Windows용 CUDA 12 및 CUDA 13 (RTX 50 권장); Linux용 Vulkan 또는 CUDA |
| ... | |
프라이버시
사용자의 브라우징 기록, 채팅, 모델, 생성된 미디어 및 파일은 기기에 저장됩니다. 클라우드 모델을 선택하지 않는 한, 채팅에 입력하는 내용은 어떠한 곳으로도 전송되지 않습니다.
기기 외부로 전송되는 항목과 비활성화 방법:
| 항목 | 전송되는 곳 | 기본값 | 끄는 방법 |
|---|---|---|
| 사용량 핑 (Usage ping): 버전, 플랫폼, 기기 ID, 5분마다 | lumabyte.com | 켜짐 (On) | 설정 > 일반 (Settings > General) |
| ... |
사용량 핑에 의존하는 기능은 없습니다.
보안
브라우저 자동화는 에이전트에게 사용자의 브라우저를 전달합니다. MCP, WebDriver 또는 CDP 클라이언트가 볼 수 있는 모든 것은 그 뒤의 모델도 볼 수 있습니다. 신뢰하는 에이전트만 연결하고, API, WebDriver 및 CDP 포트는 로컬호스트(localhost)에 유지하십시오 (기본값).
포트 3000에서 제공되는 REST API는 기본적으로 키가 필요하지 않습니다. 이 API를 localhost 외부로 노출하기 전에 설정(Settings)에서 API 키를 설정해야 합니다.
Docker
Docker 이미지는 전체 앱을 헤드리스(headless)로 실행하고, noVNC를 통해 브라우저에 데스크톱 환경을 제공합니다. 이는 서버 및 에이전트 호스트용으로 설계되었습니다.
LUMA_VNC_PASSWORD=change-me docker compose up -d
http://localhost:6080: noVNC를 통해 앱에 접속합니다.
http://localhost:3000: REST API 및 MCP 프록시입니다.
Docker 환경에서 API는 기본적으로 모든 주소를 허용하며 키가 필요하지 않습니다. API 키를 설정하지 않은 상태로 신뢰할 수 없는 네트워크에 포트 3000을 공개하지 마십시오. 컨테이너 내에서는 GPU 가속이 사용되지 않습니다.
개발 (Development)
네이티브 SQLite 모듈을 위해서는 Node 20과 C++ 툴체인(Windows의 Visual Studio 2022 Build Tools)이 필요합니다.
npm install
npm run dev
npm test
...
에이전트 개발자 문서 (Agentic developer docs)
Documentation 폴더는 사람뿐만 아니라 코딩 에이전트를 위해 작성되었습니다. 모든 코드 파일은 해당 목적, 공개 메서드 및 존재 이유를 다루는 Documentation/<같은 경로>.md에 일치하는 문서를 가지고 있으며, Documentation/index.md에는 이들이 모두 한 줄씩 나열되어 있습니다. 에이전트가 전체 코드베이스를 읽지 않고도 올바른 파일을 찾을 수 있도록 먼저 인덱스를 가리키고, 파일이 변경될 때마다 문서를 업데이트하도록 지시하십시오.
기여 (Contributing)
버그 보고 및 풀 리퀘스트(pull requests)를 환영합니다. 먼저 CONTRIBUTING.md를 읽어주십시오. 기여에는 서명된 기여자 라이선스 계약서(Contributor License Agreement)가 필요합니다.
라이선스 (License)
LumaBrowser는 GNU Affero General Public License v3.0 또는 그 이후 버전에 따른 자유 소프트웨어입니다. 사용하고, 연구하고, 변경하고 재배포할 수 있습니다. 수정된 버전을 배포하거나 네트워크를 통해 다른 사람들을 위해 실행하는 경우, 동일한 라이선스로 변경 사항을 공개해야 합니다. 회사 내부에서 포함하여 수정되지 않은 공식 빌드를 실행하는 것은 더 이상 필요하지 않습니다. 자신들의 수정을 비공개로 유지하고 싶거나, LumaBrowser를 독점 소프트웨어와 결합하거나, 개인 확장 기능을 배포하려는 조직은 Lumabyte, LLC로부터 상업용 라이선스를 얻을 수 있습니다.
LumaBrowser는 오하이오(Ohio)에 본사를 둔 회사인 Lumabyte, LLC가 소유 및 유지 관리하며, 이 회사는 또한 lumabrowser.com과 lumabyte.com을 운영합니다. 만약 수정된 버전을 배포하는 경우, 이를 '수정됨'으로 표시해야 하며 공식 LumaBrowser 출시 버전인 것처럼 제시해서는 안 됩니다 (AGPL 섹션 7(c) 참조, [LICENSE] 참고). 타사 구성 요소들은 자체 라이선스를 유지하며, 이는 [THIRD-PARTY-LICENSES]에 나열되어 있습니다.