로컬 AI 워크스페이스 구축기 — 클라우드 없이 LLM + 코드 실행 + 브라우저 자동화까지
I want everything local – Building my offline AI workspace
TL;DR Highlight
Ollama, Apple Container, Playwright로 클라우드 없이 로컬에서 LLM 채팅·코드 실행·웹 브라우징을 모두 돌리는 오프라인 AI 워크스페이스를 구현했다.
Who Should Read
개인 사진/문서 등 민감한 데이터를 AI로 처리하고 싶은데 클라우드에 올리기 꺼려지는 개발자. 로컬 LLM 환경을 직접 세팅해보려는 Apple Silicon Mac 사용자.
Core Mechanics
- 목표는 ChatGPT/Claude가 제공하는 3가지 기능(LLM 채팅, 코드 실행, 웹 접근)을 전부 로컬에서 재현하는 것. LLM은 Ollama, 코드 실행은 Apple Container(컨테이너당 독립 VM 제공), 브라우저 자동화는 Playwright를 사용했다.
- 처음에 a0.dev로 네이티브 Mac 앱을 만들려 했는데 iOS 전용에 가까워서 실패. Electron + Next.js 래핑도 시도했지만 깔끔하게 안 돼서 결국 assistant-ui 웹 버전으로 타협했다.
- assistant-ui가 랜딩 페이지에 모델 드롭다운을 보여줘서 멀티 LLM 지원이 되는 줄 알았는데 아니었다. ai-sdk를 붙여서 직접 모델 선택 드롭다운을 구현해야 했다.
- Ollama의 tool-calling 지원이 들쭉날쭉하다. deepseek-r1:8b 같은 모델은 Ollama 사이트에서 tool calling 카테고리에 올라와 있지만 실제로 돌리면 'does not support tools' 에러가 뜬다. 오픈소스 생태계가 빠르게 움직이다 보니 문서와 실제 지원 상태가 안 맞는 문제가 있다.
- Apple이 최근 공개한 'Container' 도구를 활용해 AI가 생성한 코드를 호스트 머신이 아닌 격리된 VM 안에서 실행한다. Docker보다 나은 점은 컨테이너마다 완전히 독립된 VM이 뜬다는 것.
- 코드 실행 환경을 MCP(Model Context Protocol) 서버로 노출시켜서, Claude Desktop이나 Gemini CLI 같은 기존 도구에서 설정 한 줄로 바로 연결할 수 있게 만들었다. mcpServers 설정에 HTTP URL만 넣으면 된다.
- 소형 로컬 모델이 아직 클라우드 모델 수준은 아니라서, 로컬 전용으로 제한하지 않고 클라우드 모델도 함께 쓸 수 있게 열어뒀다. 로컬 모델이 발전하면 점진적으로 전환하는 전략.
Evidence
- 하드웨어가 가장 큰 병목이라는 의견이 많았다. 80B+ 파라미터 모델을 돌리려면 대량의 고속 RAM이 필요한데, Mac Mini도 충분한 RAM을 넣으면 2천 달러 이상이고 소비자 등급이라 보기 어렵다는 지적. Framework 데스크탑(128GB 통합 RAM)이 나와도 2~2.5천 달러선이라는 구체적 가격도 언급됐다.
- Berkeley 연구팀이 LEANN이라는 벡터 인덱스를 소개하면서, 로컬 RAG의 스토리지 문제를 지적했다. 수년치 이메일을 벡터DB에 넣으면 50GB를 쉽게 넘는데, LEANN은 임베딩 자체를 저장하지 않아 스토리지를 ~97% 줄인다고 한다. 이런 실행 엔진 + 효율적 지식 인덱스 조합이 '로컬 Jarvis'의 진짜 경로라는 의견.
- 네이티브 데스크톱 앱 학습 데이터가 극히 부족해서 LLM이 제대로 도와주지 못한다는 분석이 있었다. 웹/모바일에 비해 데스크톱 앱 관련 블로그, 오픈소스가 훨씬 적고, 90년대 Windows 데스크톱 개발 황금기와 달리 지금은 커리어로서도 사실상 사장됐다는 배경 설명.
- Cerebras나 Groq 같은 초고속 추론 서비스(1000 tk/s)를 경험하면 로컬의 느린 속도가 참기 어려워진다는 반론도 있었다. Cerebras는 데이터 로깅을 안 한다고 하니 프라이버시 우려도 덜하다는 의견. 다만 diffusion 기반 모델 등 로컬 속도 개선도 기대된다는 답변이 따랐다.
- 클라우드 없이 사는 게 과도한 노력이라는 반론도 있었다. 어차피 업무의 다른 부분은 클라우드에 의존하는데 AI만 로컬로 돌리는 게 무슨 의미냐는 시각. 이에 대해 민감 데이터(사진, 개인 문서) 처리만이라도 로컬로 하는 것이 실용적이라는 재반론이 있었다.
How to Apply
- 개인 사진/영상 편집이나 민감 문서 처리를 AI로 하고 싶은 경우, Ollama + Apple Container 조합으로 데이터가 로컬을 벗어나지 않는 파이프라인을 구성할 수 있다. mcpServers 설정에 coderunner URL만 추가하면 Claude Desktop에서도 바로 코드 실행 가능.
- 로컬 LLM의 tool-calling이 필요한 경우, Ollama 사이트의 카테고리를 믿지 말고 실제로 해당 모델에서 tool call을 날려서 동작 여부를 확인해야 한다. 현재 안정적으로 tool-calling이 되는 모델(qwen3 등)을 먼저 테스트하고 선택할 것.
- 로컬 RAG를 구축하는데 스토리지가 문제라면, LEANN(github.com/yichuan-w/LEANN) 같은 임베딩 미저장 벡터 인덱스를 검토해볼 만하다. 대량 문서(이메일, 노트 등)를 인덱싱할 때 기존 벡터DB 대비 스토리지를 극적으로 줄일 수 있다.
- Mac 네이티브 앱 대신 Next.js 웹앱 + assistant-ui 조합이 현실적이다. Electron 래핑은 삽질이 많으니 피하고, 로컬 웹서버로 띄우는 방식이 개발 속도와 안정성 모두 낫다.
Code Example
// Claude Desktop 또는 Gemini CLI에서 coderunner MCP 연결 설정
{
"mcpServers": {
"coderunner": {
"httpUrl": "http://coderunner.local:8222/mcp"
}
}
}Terminology
관련 논문
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.
Tilde.run – AI Agent를 위한 트랜잭션 기반 버전 관리 파일시스템 샌드박스
AI 에이전트가 실제 프로덕션 데이터를 건드려도 롤백할 수 있는 격리된 샌드박스 환경을 제공하는 도구로, GitHub/S3/Google Drive를 하나의 버전 관리 파일시스템으로 묶어준다.
Related Resources
- https://instavm.io/blog/building-my-offline-ai-workspace
- https://github.com/yichuan-w/LEANN
- https://arxiv.org/abs/2405.08051
- https://github.com/exo-explore/exo
- https://github.com/assistant-ui/assistant-ui
- https://hypersonic.chat/
- https://kasmweb.com/
- https://developer.apple.com/documentation/FoundationModels