NanoClaw – Apple 컨테이너 격리 환경에서 실행되는 500줄짜리 TypeScript 기반 Claude 어시스턴트
(github.com/gavrielc)- NanoClaw는 Apple 컨테이너에서 실행되는 개인용 Claude 기반 AI 어시스턴트로, 단일 프로세스 구조와 소수의 파일로 구성된 경량형 시스템
- 각 그룹별 컨테이너 격리를 통해 대화 기록과 파일 시스템을 분리하며, WhatsApp 메시징, 스케줄링 작업, 웹 접근 등을 지원
- 설정 파일 없이 Claude Code가 설치와 커스터마이징을 안내하며, 사용자는 직접 코드를 수정해 자신에게 맞게 조정 가능
- 새로운 기능은 코드 추가 대신 ‘스킬(Skill)’ 파일로 확장하며,
/add-telegram,/convert-to-docker등 다양한 확장 요청이 제시됨 - 복잡한 프레임워크 대신 이해 가능한 보안 구조와 단순성을 중시해, 개인 개발자나 스타트업이 안전하게 AI 비서를 구축할 수 있는 기반 제공
프로젝트 개요
- NanoClaw는 Apple Container 환경에서 동작하는 개인용 Claude 어시스턴트로, 경량성과 보안성을 핵심으로 설계
- 단일 Node.js 프로세스에서 실행되며, 각 에이전트는 리눅스 컨테이너 내에서 격리된 파일 시스템을 사용
- 코드베이스는 약 500줄의 TypeScript로 구성되어 있으며, 사용자가 전체 구조를 8분 내 이해 가능하다고 설명
- MIT 라이선스로 공개되어 있으며, GitHub에서 500개 이상의 Star를 획득
설계 철학
- 이해 가능한 규모: 마이크로서비스, 메시지 큐, 복잡한 추상화 없이 단일 프로세스로 구성
- 격리를 통한 보안: 명시적으로 마운트된 디렉터리만 접근 가능하며, Bash 명령도 컨테이너 내부에서만 실행
- 단일 사용자 중심: 프레임워크가 아닌 개인 맞춤형 소프트웨어로, 포크 후 직접 수정 가능
- 설정 대신 코드 수정: 설정 파일을 최소화하고, 원하는 동작은 코드 변경으로 구현
- AI 네이티브 접근: 설치, 디버깅, 모니터링 모두 Claude Code 대화형 인터페이스를 통해 수행
-
스킬 기반 확장성: 기능 추가는 코드 변경이 아닌
.claude/skills디렉터리의 스킬 파일로 처리
주요 기능
- WhatsApp I/O: 휴대폰에서 Claude와 직접 메시지 교환
-
그룹별 컨텍스트 격리: 각 그룹은 고유한
CLAUDE.md메모리와 컨테이너 파일 시스템을 가짐 - 메인 채널: 관리용 개인 채널로, 다른 그룹과 완전히 분리
- 스케줄링 작업: 주기적 작업 실행 및 자동 메시지 전송
- 웹 접근: 검색 및 콘텐츠 수집 기능
-
선택적 통합:
/add-gmail등 스킬을 통해 Gmail 등 외부 서비스 연동 가능
커스터마이징
- 설정 파일 없이 Claude Code 대화로 직접 변경 가능
- 예: “트리거 단어를 @Bob으로 변경”, “응답을 더 짧게”, “매주 대화 요약 저장” 등
-
/customize명령으로 단계별 수정 지원 - 코드베이스가 작아 Claude가 직접 안전하게 수정 가능
확장 및 기여 방식
- 새로운 기능은 PR로 직접 추가하지 않고 스킬로 제공
- 예:
/add-telegram,/add-slack,/add-discord등 통신 채널 확장 -
/convert-to-docker로 Apple Container를 Docker로 전환 -
/setup-windows로 WSL2 기반 Windows 지원 -
/add-clear로 세션 요약 및 압축 기능 추가
- 예:
- 기여자는 스킬을 통해 자신의 포크를 변환하고, 이를 다시 프로젝트에 공유
시스템 요구사항 및 구조
- macOS Tahoe(26) 이상, Node.js 20+ , Claude Code, Apple Container 필요
- 아키텍처 흐름:
WhatsApp (baileys) → SQLite → Polling loop → Container (Claude Agent SDK) → Response - 주요 파일 구성:
-
src/index.ts: 메인 앱 및 WhatsApp 연결 -
src/container-runner.ts: 컨테이너 실행 관리 -
src/task-scheduler.ts: 스케줄링 기능 -
src/db.ts: SQLite 연동 -
groups/*/CLAUDE.md: 그룹별 메모리 저장
-
FAQ 요약
- WhatsApp 사용 이유: 개인적으로 WhatsApp을 사용하기 때문이며, 다른 채널은 스킬로 교체 가능
- Apple Container 선택 이유: macOS 내장, 가볍고 빠름
- Linux 실행 가능 여부: Claude Code를 통해 약 30분 내 포팅 가능
- 보안성: 컨테이너 격리 기반으로, 명시적 마운트 외 접근 불가
- 설정 파일 부재 이유: 설정 확산을 방지하고, 코드 중심 커스터마이징 유지
- 디버깅 방법: Claude Code에 직접 질문하여 문제 해결
- 허용되는 변경 사항: 보안·버그 수정 및 기본 구성 개선만 허용
라이선스
- MIT License로 배포
- 누구나 자유롭게 수정 및 재배포 가능
Hacker News 의견들
-
이걸 실제로 돌리는 게 너무 위험하게 느껴짐
지금은 괜찮아 보여도, 한 번 문제 생기면 끝임
이런 Claw 같은 걸 공유 대화 공간에 연결하는 건, 말 그대로 위험한 실험 같음
블랙햇들이 이미 주시 중이고, 결국 많은 사람이 크게 데일 것 같음- 그럴 수도 있음. 예전에 다들 보안 허술한 phpBB나 Wordpress 플러그인 돌렸던 것처럼, 이번에도 같은 역사 반복일 수 있음
- 보안 문제도 있지만, 두 가지가 더 걱정임
- OpenAI가 말한 것처럼 광고가 답변에 섞이는 일이 생기면 어떨지
- 지금의 저렴한 가격이 지속 불가능해서 10배로 오르면 어떨지
지금은 싸게 LLM을 쓰면서도 광고 없는 황금기를 누리는 중일지도 모르겠음
나도 요즘 검색 결과가 너무 스팸화돼서, AI로 직접 비교나 견적을 묻는 식으로 쓰고 있음
하지만 곧 광고와 유료 추천이 섞인 답변을 받게 될까 걱정임
-
요즘 내가 만든 코드를 공개할 때는, 문서나 README는 직접 손으로 쓰려고 함
LLM이 쓴 냄새가 나는 문서는 프로젝트가 좋아도 흥미가 떨어짐
사람에게 전하려는 진심이 느껴지지 않음
오타가 있더라도 인간적인 설명이 훨씬 낫다고 생각함
참고로 작성자가 내 댓글 이후에 README를 수정했더라
수정된 커밋 링크- 작성자임. AI로 코딩했다는 걸 숨긴 적 없음. 거의 모든 커밋에 “Co-Authored-By: Claude Opus 4.5”라고 써 있음
네가 지적한 대로 AI 냄새가 나는 부분을 수정했고, 지금은 훨씬 나아졌음
이 코드는 걸작이 아니라 내게 유용한 실용 코드임
다른 사람에게도 참고용으로 도움이 되길 바람
주말 동안 보안 구조에 신경 써서 만든 거고, 지금은 일단 마무리해야 해서 rough한 상태로 올림
README를 보면 프로젝트의 맥락이 더 잘 이해될 것임 - 나도 완전 공감함. AI가 쓴 README나 제품 소개문은 진심이 안 느껴져서 흥미가 확 떨어짐
코드에 AI를 쓰는 건 괜찮지만, 소개문은 사람이 직접 써야 함 - 요즘 LLM 기반 프로젝트는 기능보다 사람들의 관심을 끄는 포장에 더 집중하는 경향이 있음
예전엔 코드 자체가 ‘노력의 증거’였는데, 이제는 너무 쉽게 만들어져서 무게감이 사라짐 - 심지어 README 내용이 환각(hallucination) 된 경우도 있음
관련 스레드 링크
- 작성자임. AI로 코딩했다는 걸 숨긴 적 없음. 거의 모든 커밋에 “Co-Authored-By: Claude Opus 4.5”라고 써 있음
-
Clawdbot의 장점 중 하나는 모든 권한을 허용한다는 점임
다만 이런 외부 액션이 어떻게 샌드박싱되는지는 의문임
Apple Container는 각 컨테이너가 경량 VM과 1:1 매핑돼서 꽤 안정적임
이를 활용한 일반 코드 실행 샌드박스 예시로 instavm/coderunner가 있음
Claude Code 같은 AI와도 연동 가능함- “모든 권한 허용”이라면, 시스템 파일에 777 퍼미션 주는 거랑 뭐가 다른지 궁금함
- 예전에 CS 실험실에서 슈퍼유저 비밀번호를 달라 했을 때 교수님이 안 줬던 게 떠오름
Clawdbot은 마치 100명의 2학년생이 문 두드리며 root 권한 달라는 느낌임
-
이 프로젝트 멋져 보임
요즘 Claude Pro/Max 구독으로 Agent SDK를 쓸 수 있는지 궁금했는데,
공식 Quickstart 문서에 따르면 가능하다고 함
설치 후 터미널에서 로그인하면 SDK가 자동 인증을 사용한다고 되어 있음- 하지만 문서에 “API 키 인증만 허용한다”고도 써 있음
즉, 구독 계정으로 SDK를 직접 쓰는 건 안 된다는 뜻으로 보임
Anthropic이 이 부분을 명확히 해줬으면 좋겠음 - 작성자임. 나도 그게 헷갈려서 직접 만들어봄
Agents SDK를 쓰고 있어서 TOS 위반은 아닐 것이라 생각함
다만 컨테이너 안에서 인증 세션을 유지하는 방법을 몰라서 OAuth 토큰을 환경변수로 주입하는 꼼수를 씀
이게 유일한 보안 허점임. 악의적인 사용자가 프롬프트 인젝션으로 토큰을 빼낼 수도 있음
혹시 세션 인증을 컨테이너에서 제대로 연결하는 방법 아는 사람 있으면 도움 부탁함 - 덕분에 새로 알게 됨. 그럼 OpenClaw 관련 논란은 SDK 없이 호출해서 생긴 문제였던 듯함
이 문서대로라면 구독 계정으로도 자유롭게 에이전트형 앱을 만들 수 있는 것 같음
- 하지만 문서에 “API 키 인증만 허용한다”고도 써 있음
-
비기술적인 사람들이 환각률 감소만 보고 모델을 과신하는 경향이 있음
하지만 진짜 위험은 악성 프롬프트 공격임
신용카드 초창기처럼, 아직은 피해가 드러나지 않았을 뿐
곧 여러 사례가 터지고 나서야 경각심이 생길 것임 -
누군가 이런 보다 안전한 버전을 만들어주길 바랐음
OpenClaw는 유용하지만 동시에 무섭기도 함
그래서 내 Mac mini는 지금 꺼둔 상태임 -
Docker 대신 Apple Container를 쓴 게 흥미로움
아마 Mac Mini에서 리소스 절약을 위해서일 듯
다만 이게 표준 Linux 툴링을 제한하지는 않는지 궁금함- Apple Container는 사실상 microVM이라, 일반 컨테이너보다 훨씬 강한 격리를 제공함
- (다른 댓글은 생략됨)
- 검색 엔진으로 직접 찾아보면 답이 나올 듯함
-
OpenClaw의 소형 버전 아이디어가 마음에 듦
코드가 약 2500줄 정도로 보이고, Apple Container 구조도 흥미로움 -
Quick Start에
git clone https://github.com/anthropics/nanoclaw.git라고 돼 있는데
그 저장소는 존재하지 않음. 공식 Anthropic 프로젝트인지 궁금함
혹시 README가 환각으로 만들어진 건 아닌지 의심됨- 실제로 Claude가 그 레포를 환각으로 생성했음
관련 커밋 링크 - 수정 완료함. 이건 주말에 혼자 만든 실험용 프로젝트임
Obsidian vault에 Claude Code를 붙이고, WhatsApp으로 크론 작업을 예약할 수 있게 함
거대한 OpenClaw보다 훨씬 단순하고 내가 이해할 수 있는 범위라서 마음이 놓임
다른 사람도 참고용으로만 쓰면 좋겠음 - 지금은 정상적으로 수정된 것 같음
- 실제로 Claude가 그 레포를 환각으로 생성했음
-
요즘 vibe-coded 앱을 보면, 그냥 Claude Code로 비슷한 걸 직접 만들어버림
남의 걸 쓰는 것보다 내 필요에 맞게 만드는 게 더 효율적임- 맞음. 이제는 코드 작성과 유지 비용이 거의 제로에 수렴해서
외부 라이브러리의 가치가 줄고 있음
공급망 공격이나 라이선스 변경 위험도 사라짐
코드 자체가 문서이자 설정이 되는 시대임
그래서 OpenClaw보다 이런 경량 맞춤형 버전이 더 마음에 듦
포크해서 시작점으로 쓰거나 Claude에게 참고용으로 주면, 나만의 버전을 바로 만들 수 있음
- 맞음. 이제는 코드 작성과 유지 비용이 거의 제로에 수렴해서