MacBook에서 Claude Code를 완전 오프라인으로 실행하기 — API 키 없이, 클라우드 없이, 작업당 17초
Running Claude Code fully offline on a MacBook — no API key, no cloud, 17s per task
TL;DR Highlight
Apple Silicon Mac에서 Qwen3를 Anthropic Messages API 형식으로 서빙하는 Python 서버가 Claude Code를 오프라인으로 구동하며 기존 Ollama+프록시 방식 대비 7.5배 빠르고 코드 외부 유출을 차단한다.
Who Should Read
API 비용이나 코드 유출이 부담스러워 Claude Code를 선뜻 못 쓰는 개발자, 또는 M1/M2/M3/M4/M5 계열 MacBook을 가진 개발자 중 로컬 AI 코딩 환경을 구축하고 싶은 사람.
Core Mechanics
- 약 200줄짜리 Python 서버로 Claude Code가 기대하는 Anthropic Messages API를 로컬에서 그대로 구현했다. 별도 OpenAI 포맷 변환 프록시 없이 네이티브 API를 직접 스피킹한다.
- 모델은 Qwen3.5-122B-A10B MoE(Mixture-of-Experts) 구조로, 총 파라미터 1220억 개지만 토큰당 실제 활성화되는 파라미터는 100억 개다. 4비트 양자화로 약 50GB에 맞춰 M5 Max(128GB)에서 동작한다.
- M5 Max 기준 토큰 생성 속도는 45~65 tok/s. 1000 토큰 생성에 15.3초 걸리며, Claude Code 태스크 엔드투엔드 완료 시간은 17.6초다.
- 기존에 가장 많이 쓰이던 방식(Ollama + OpenAI↔Anthropic 포맷 변환 프록시)은 태스크 완료에 133초가 걸렸는데, 프록시 레이어 제거만으로 7.5배 속도 향상을 얻었다.
- API 키 불필요, 사용량 제한 없음, 비용 없음, 코드가 외부로 전송되지 않는 완전 로컬 환경이다. Claude Code의 cowork, 파일 편집, 프로젝트 기능을 그대로 쓸 수 있다.
Evidence
- 작성자가 ~200줄 Python 서버를 구현해 Claude Code가 Anthropic Messages API 형식 그대로 로컬 MLX 모델과 통신하도록 구성 — proxy/middleware 없이 직접 연결
- M5 Max(128GB) 기준 실측: 100토큰 약 2.2초(45 tok/s), 500토큰 약 11초 — API 대비 느리지만 완전 오프라인·비용 0
- 댓글 반론: Anthropic API key를 로컬 엔드포인트로 교체하면 이미 가능한 것을 굳이 레이어 하나 더 추가한 것이라는 지적 / Ollama launch claude 명령으로도 동일 효과 가능
- 긍정 반응: Qwen3.5 30B 4-bit로 Conway's Game of Life를 첫 시도에 성공했다는 실사용 사례 / '앞으로 가격 오를수록 필요해질 것'이라는 공감
How to Apply
- 50GB 이상 여유 VRAM이 있는 Apple Silicon Mac(M1 Ultra/M2 Max 이상 권장)을 쓴다면 https://github.com/nicedreamzapp/claude-code-local 를 클론해 로컬 서버를 올리고, Claude Code의 API 엔드포인트를 localhost로 변경해서 바로 테스트해볼 수 있다.
- 보안이 중요한 사내 코드베이스나 NDA가 걸린 프로젝트에서 AI 코드 어시스턴트를 쓰고 싶을 때, 이 방식으로 코드가 외부 서버로 나가지 않는 완전 오프라인 환경을 구성할 수 있다.
- 기존에 LiteLLM이나 local-claude 같은 OpenAI 포맷 변환 프록시를 쓰고 있다면, 해당 레이어를 제거하고 Anthropic API를 네이티브로 구현하는 방향으로 전환하면 응답 지연을 크게 줄일 수 있다.
Terminology
관련 논문
Swift로 LLM 학습시키기 Part 1: 행렬 곱셈을 Gflop/s에서 Tflop/s로 끌어올리기
Apple Silicon에서 Swift로 직접 행렬 곱셈 커널을 구현하며 CPU, SIMD, AMX, GPU(Metal)를 단계별로 최적화해 Gflop/s에서 Tflop/s 수준까지 성능을 높이는 과정을 상세히 설명한 글이다. 프레임워크 없이 LLM 학습의 핵심 연산을 밑바닥부터 구현하고 싶은 개발자에게 Apple Silicon의 성능 한계를 체감할 수 있는 드문 자료다.
fsync 없이 로컬 스토리지 엔진을 crash-consistent하게 만든 방법
FractalBits가 fsync 없이 SSD 전용 KV 스토리지 엔진을 구현해 동일 조건 대비 약 65% 높은 쓰기 성능을 달성한 설계 방법을 공유했다. fsync의 메타데이터 오버헤드를 피하기 위해 사전 할당, O_DIRECT, SSD 원자 쓰기 단위 정렬 저널을 조합한 구조가 핵심이다.
Google Chrome, 사용자 동의 없이 4GB AI 모델(Gemini Nano)을 몰래 설치
Google Chrome이 사용자 동의 없이 Gemini Nano 4GB 모델 파일을 자동 다운로드하고, 삭제해도 재다운로드되는 문제가 발견됐다. GDPR 위반 가능성과 수십억 대 기기에 적용될 때의 환경 비용 문제가 제기되고 있다.
OpenAI가 대규모 저지연 Voice AI를 제공하는 방법
OpenAI가 9억 명 이상의 사용자에게 실시간 음성 AI를 제공하기 위해 WebRTC 스택을 어떻게 재설계했는지 설명하는 글로, relay + transceiver 분리 아키텍처의 설계 결정과 trade-off를 상세히 다룬다.
Truncated Decoding Tree의 결정론적 탐색을 통한 효율적인 Test-Time Inference
Self-consistency의 중복 샘플링 낭비를 없애는 결정론적 트리 탐색 디코딩 기법 DLE로 수학/코드 추론 성능과 속도를 동시에 개선
GoModel – Go로 작성된 오픈소스 AI Gateway
OpenAI, Anthropic, Gemini 등 여러 AI 프로바이더를 하나의 OpenAI 호환 API로 묶어주는 Go 기반 오픈소스 AI 게이트웨이로, LiteLLM의 컴파일 언어 대안이다.