GitHub Trending 'jundot/omlx' 누적 13,073 스타, macOS 메뉴바형 LLM 서버
개발자 jundot이 공개한 macOS 전용 로컬 LLM 추론 서버 'oMLX'가 GitHub Trending에 누적 13,073 스타와 하루 187개를 기록했다. 메뉴바에서 모델 서버를 띄우고 끌 수 있는 PyObjC 네이티브 앱으로, 명령줄 도구를 거치지 않고도 Apple Silicon Mac 위에서 LLM·VLM·OCR·임베딩·리랭커를 한꺼번에 운영하는 것이 특징이다.
제작자는 README에서 시도해 본 모든 LLM 서버가 편의성과 제어 사이에서 하나를 고르라고 강요했다고 적었다. 자주 쓰는 모델은 메모리에 고정해 두고 무거운 모델은 자동으로 스왑하며, 컨텍스트 한도까지 메뉴바에서 모두 관리하고 싶었다는 것이 개발 동기다.
핵심은 vLLM에서 영감을 받은 블록 기반 KV 캐시다. Hot tier(RAM)에는 자주 쓰는 블록을 보관하고, Hot 캐시가 차면 safetensors 형식으로 Cold tier(SSD)로 오프로드한다. 다음 요청에서 동일 prefix가 들어오면 디스크에서 복원해 다시 계산하지 않으며, 서버를 재시작해도 캐시가 살아남는다. prefix 공유와 Copy-on-Write도 함께 지원한다.
이 구조는 Claude Code처럼 도구 호출이 잦은 환경을 겨냥한다. 대화 중간에 컨텍스트가 바뀌어도 과거 컨텍스트가 캐시에 남아 다음 요청에서 재사용되며, 동시 요청은 mlx-lm의 BatchGenerator를 통해 처리한다. 작은 컨텍스트 모델을 Claude Code와 함께 쓸 때 토큰 수를 스케일링해 auto-compact가 적절한 시점에 동작하도록 보정하는 옵션도 들어 있다.
여러 모델을 한 서버에서 함께 굴리기 위한 관리 기능도 갖췄다. 메모리가 부족해지면 LRU 기준으로 모델을 자동으로 내리고, 자주 쓰는 모델은 항상 적재해 두는 모델 pinning, 모델별 idle TTL, 프로세스 전체 메모리 한도가 포함된다. 메모리 한도 기본값은 시스템 RAM에서 8GB를 뺀 값으로 설정돼 시스템 전체 OOM을 막는다.
지원 모델은 mlx-lm이 다루는 모든 LLM, mlx-vlm 기반 VLM, DeepSeek-OCR·DOTS-OCR·GLM-OCR 같은 OCR 모델, 임베딩과 리랭커까지다. API는 OpenAI와 Anthropic Messages를 드롭인 대체하며 스트리밍 사용량 통계, Anthropic adaptive thinking, 비전 입력(base64·URL·파일)을 받는다. 함수 호출은 Llama·Qwen·DeepSeek·Gemma·GLM·MiniMax·Mistral·Kimi K2·Longcat 등 mlx-lm이 인식하는 모델 패밀리에서 자동 파싱된다.
기본 포트 8000에서 어드민 페이지(/admin)가 함께 뜬다. HuggingFace 모델 검색·다운로드, 모델 로드·언로드, 핀 고정, 샘플링 파라미터 변경, 내장 채팅, 한 번의 클릭으로 끝나는 벤치마크까지 모두 웹에서 가능하다. 어드민에서 OpenClaw·OpenCode·Codex·Pi 연결도 단일 클릭으로 끝난다. 인터페이스는 영어·한국어·일본어·중국어·러시아어를 지원하고 모든 CDN 의존성을 번들로 가져 오프라인에서도 작동한다.
실행 요구사항은 macOS 15.0(Sequoia) 이상, Python 3.10 이상, Apple Silicon(M1/M2/M3/M4)이다. 배포는 dmg 직접 다운로드, Homebrew tap, 소스 설치 중 선택할 수 있고 Homebrew로 설치하면 brew services로 백그라운드 서비스 실행과 충돌 시 자동 재시작도 함께 제공된다. MCP(Model Context Protocol) 통합은 별도 의존성 추가로 지원한다.