OpenClaw과 NemoClaw 기술 분석 보고서
오픈소스 AI Agent 플랫폼의 구조적 결함 진단
분류기술 분석 보고서 (Technical Analysis Report)
분야소프트웨어 아키텍처 · 정보이론 · 제어이론 · 시스템이론 · AI Agent 보안
초 록 / ABSTRACT
본 보고서는 두 개의 스타급 오픈소스 AI Agent 프로젝트 — OpenClaw(367k Stars, 3,500 Open Issues)와 NemoClaw(20.1k Stars, 243 Open Issues) — 에 대한 체계적 기술 분석을 수행한다. 두 프로젝트의 발전 과정, 기술 아키텍처, 언어 구성, 커뮤니티 피드백의 전면적 검토와 GitHub Issue의 건별 샘플링 및 분류 통계를 통해, 정보이론(Shannon 채널 용량 정리), 제어이론(Wiener 피드백 제어 및 Ashby 필요다양성 법칙), 시스템이론(Bertalanffy 일반 시스템 이론)에 기반한 3차원 교차 진단 프레임워크를 구축하였다.
분석 결과: 두 프로젝트의 고빈도 버그는 무작위 코딩 실수가 아니라, 언어 선택(TypeScript 100% / 75.6%)과 아키텍처 설계(단일 프로세스 무격리 / 7층 중첩)의 동시적 오류가 초래한 구조적 필연이다. OpenClaw은 5개월간 78,205개의 Issue를 생성했고(일평균 521개), NemoClaw은 51일간 3,061개의 Issue를 생성했다 — 두 속도 모두 GitHub 역사상 전례 없는 수준이다. 삼론 교차 검증 결과, 두 프로젝트의 버그 증가율은 이미 인간 수정 속도의 상한을 초과했으며, 비가역적 양의 피드백 발산 시스템을 구성한다. 커뮤니티는 이미 6개의 독립 재작성 프로젝트(Rust/Go/Zig)로 “발로 투표”했지만, 본 보고서 이전까지 전 세계 어디에서도 기초과학 이론 수준에서 근본 원인을 체계적으로 설명한 완전한 분석은 존재하지 않았다.
1OpenClaw 프로젝트 상세 소개
1.1 발전 과정
Peter Steinberger(PSPDFKit 창업자)가 “Clawdbot” 발표 — 주말 해커톤 프로젝트
Anthropic 상표 이의 제기, “Moltbot”으로 강제 변경
최종 명칭 “OpenClaw” 확정. 동시기 폭발적 성장, 60일 내 React 10년 Star 기록 돌파[1]
보안 위기 폭발: CVE-2026-25253 RCE 취약점, 800+ 악성 Skill, 135,000+ 노출 인스턴스[2][3][4]
Steinberger OpenAI 합류, 501(c)(3) 재단 설립하여 프로젝트 인수
React를 제치고 GitHub 최고 Star 비집계 소프트웨어 프로젝트 등극
Issue 번호 #78,205 돌파, Open Issues 3,500개 도달
1.2 기술 아키텍처
OpenClaw은 pnpm으로 관리되는 TypeScript 모노레포로, core, gateway, agent, cli, sdk, ui 등 핵심 패키지와 21개 채널 확장[5](WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage 등 25+ 플랫폼)을 포함한다. 전체 런타임은 단일 프로세스 Node.js Gateway이다 — 모든 채널 어댑터, 세션 관리, 도구 실행, 메모리 시스템이 동일한 프로세스 내에서 공유 메모리로 실행되며, OS 수준의 격리가 없다.
1.3 언어 구성
OpenClaw은 100% TypeScript 프로젝트이다. Gateway 프로세스는 tsx를 통해 TypeScript 소스를 직접 실행하며, 빌드 후 dist/ 디렉토리를 Node.js가 실행한다. Rust, Go, C 컴포넌트는 핵심 런타임에 일절 참여하지 않는다. 모든 보안 경계(예: Skill 실행 샌드박스)는 Docker 컨테이너에 의존하지만, 이 기능은 기본 비활성화 상태이다.
1.4 알려진 보안 문제
OpenClaw의 보안 이력은 NemoClaw 탄생의 직접적 원인이다. 주요 보안 사건은 다음과 같다:
- CVE-2026-25253 (CVSS 8.8)[2]: 원클릭 원격 코드 실행 취약점으로, localhost 바인딩 인스턴스에서도 악용 가능. v2026.1.29에서 수정되었으나, 발견 시 17,500개 노출 인스턴스가 해당 취약점을 보유.
- ClawHavoc 공급망 공격[3]: ClawHub Skill 레지스트리에서 800+ 악성 Skill 발견(전체 레지스트리의 약 20%), 그 중 335개는 “ClawHavoc”이라는 협조적 공격 캠페인에서 유래, 주로 Atomic macOS Stealer(AMOS) 배포.
- 135,000+ 공개 노출 인스턴스[4]: SecurityScorecard STRIKE 팀이 82개국에 걸쳐 노출 인스턴스를 발견, 93.4%에서 인증 우회 조건 존재. 기본 구성에서 인증 비활성화, WebSocket은 출처 검증 없이 연결 수락.
- 6개 추가 CVE[6]: 명령 주입, SSRF, 인증 우회, 경로 탐색 등, 각각 다른 공격 진입점을 제공.
Cisco[7], Microsoft[8], CrowdStrike[9], Kaspersky[10], Bitsight[4] 등 보안 대기업 모두 전문 분석 보고서를 발표하여, OpenClaw을 “AI Agent 보안 악몽”의 대표적 사례로 지목했다.
2NemoClaw 프로젝트 상세 소개
2.1 발전 과정 및 포지셔닝
NemoClaw은 NVIDIA가 GTC 2026 대회(2026년 3월 16일)에서 발표한 오픈소스 프로젝트[11]로, OpenClaw의 “엔터프라이즈급 보안 배포판”으로 포지셔닝된다. 독립 분석가의 정확한 비유[12]: “OpenClaw이 Linux 커널이라면, NemoClaw은 Red Hat Enterprise Linux이다 — 커널은 그대로이지만, 엔터프라이즈급 보안, 감사, 거버넌스 기능으로 감싸져 있다.”
NemoClaw의 핵심 가치 제안: NVIDIA OpenShell 보안 런타임[13]을 통해 OpenClaw Agent를 커널 수준 샌드박스(Landlock + seccomp + 네트워크 네임스페이스)에서 격리 실행하여, 프로세스 외부 정책 집행을 구현한다 — Agent가 탈취되더라도 보안 정책을 우회할 수 없다.
2.2 7층 기술 아키텍처
2.3 언어 구성
| 언어 | 비율 | 용도 | 삼론 평가 |
|---|---|---|---|
| TypeScript | 75.6% | CLI 오케스트레이션, 온보드 위저드, 블루프린트 러너, 상태 관리 | 유저스페이스 스크립트 언어, syscall 직접 호출 불가 |
| Shell | 21.1% | 설치 스크립트(curl|bash), 환경 감지, Docker 조작 | 취약, 플랫폼 의존, 테스트 불가 |
| Python | 1.8% | 블루프린트 생성 도구 | 보조적 역할 |
| 기타 | 1.5% | 설정 파일 등 | — |
| Rust / Go / C | 0% | — | 치명적 결여: 시스템 언어 제로 |
2.4 핵심 지표
3Issue 샘플링 및 분류 분석
3.1 NemoClaw Issue 샘플링 (첫 페이지 12건 · 2026.05.05 스냅샷)
3.2 OpenClaw Issue 샘플링 (첫 페이지 12건 · 2026.04.30 스냅샷)
3.3 Issue 삼론 분류 비교 통계
| 삼론 귀인 | NemoClaw 첫 페이지 12건 | OpenClaw 첫 페이지 12건 | 귀인 설명 |
|---|---|---|---|
| 정보이론 결함 | 3건 (25%) | 3건 (25%) | 채널 용량 부족, 인코딩 불일치, 신호 단절 |
| 제어이론 결함 | 4건 (33%) | 2건 (17%) | 개루프 제어, 피드백 부재, 롤백 부재, 업그레이드 회귀 |
| 시스템이론 결함 | 4건 (33%) | 4건 (33%) | 창발성 실패, 경계 모순, 계단식 고장, 리소스 누수 |
| 비삼론 문제 | 1건 (8%) | 3건 (25%) | 기능 요청, 문서, 단순 설정 |
| 삼론 적중률 | 92% (11/12) | 75% (9/12) | 구조적 버그의 압도적 비율 |
3.4 NemoClaw Issue 분류 통계 (243개 Open Issues 전량 추정)
| 분류 | 추정 비율 | 추정 건수 | 대표 Issue 번호 | 대표적 표현 |
|---|---|---|---|---|
| Bug 결함 | ~35% (~85건) | 85 | #3061 #3060 #1731 #1732 | CLI 로직 오류, sandbox 명명 충돌, 설정 덮어쓰기, 디버그 도구 오지향 |
| 배포/설치 | ~28% (~68건) | 68 | #152 #208 #297 #478 #1924 | WSL2 sandbox 소실, GPU 패스스루 실패, macOS 온보드 멈춤, Brev Ollama 설정 |
| 런타임/통합 | ~17% (~41건) | 41 | #2024 #3014 #2667 #93 | Slack/Discord WebSocket 프록시 거부, Telegram agent 비정상 종료, Ollama HTTP 400 |
| CI/E2E 테스트 | ~8% (~19건) | 19 | #3057 #3049 #3033 #3034 | Nightly 자동 진단 실패, oclif 인수 거부 |
| 기능 요청 | ~7% (~17건) | 17 | #3053 #3006 | WeChat 통합, 다중 인스턴스 지원 |
| 문서 | ~5% (~12건) | 12 | #3059 #364 | 환경 변수 참조 누락, 설치 트러블슈팅 가이드 |
4언어 선택 분석: 구조적 결함의 유전 코드
4.1 동종 도구 언어 비교
모든 동종 보안/컨테이너/샌드박스 인프라 도구 중에서, OpenClaw과 NemoClaw만이 스크립트 언어를 주 언어로 사용하는 유일한 프로젝트이다.
| 프로젝트 | 언어 | 용도 | Open Issues | 프로젝트 수명 |
|---|---|---|---|---|
| Docker | Go 100% | 컨테이너 런타임 | ~3,800 | 13년 |
| Kubernetes | Go 100% | 컨테이너 오케스트레이션 | 1,793 | 11년 |
| Firecracker | Rust 100% | 마이크로 VM | ~200 | 7년 |
| gVisor | Go 100% | 커널 수준 샌드박스 | ~400 | 7년 |
| containerd | Go 100% | 컨테이너 런타임 | ~500 | 9년 |
| OpenClaw | TypeScript 100% | AI Agent 플랫폼 | 3,500 | 5개월 |
| NemoClaw | TS 75.6% + Shell 21.1% | 보안 샌드박스 오케스트레이션 | 243 | 51일 |
4.2 NemoClaw의 제어력 절벽
NemoClaw CLI와 OpenShell 바이너리 사이에는 프로세스 경계, 권한 경계, 언어 경계로 구성된 심연이 존재한다. OpenShell에 대한 모든 “제어”는 본질적으로 문자열 연결 커맨드라인이다:
const result = await $`openshell sandbox create --name ${name}`;
이것은 zx 라이브러리의 exec() 호출이며, child_process.exec()와 동등하다. 구조화된 반환값이 없고(stdout 텍스트만), 상태 구독이 없으며(“끝났는가”만), 예외 분류가 없다(exitCode !== 0만). 이것은 시스템 관리자가 bash 스크립트로 운영 자동화를 작성하는 것과 동일한 추상화 수준이다.
5정보이론 차원 분석 (Shannon)
5.1 NemoClaw: 채널 용량 vs 소스 엔트로피율
Shannon의 채널 코딩 정리(Channel Coding Theorem)는 다음을 명시한다: 채널 용량 C가 소스 엔트로피율 H보다 낮을 때, 신뢰할 수 있는 통신은 불가능하다. NemoClaw의 exec() 호출 채널 용량은 약 1 bit(성공/실패)이며, sandbox 수명 주기의 상태 엔트로피율은 5 bits를 초과한다. C < H → 오류 진단이 필연적으로 부정확하다.
5.2 NemoClaw: 7층 신호 감쇠
NemoClaw에서 사용자 의도는 7개 층을 통과하여 최종 실행 계층에 도달하며, 각 층에서 직렬화/역직렬화 노이즈가 추가된다. “sandbox not found”라는 하나의 오류 문자열이 최소 5가지 완전히 다른 하위 고장에 대응할 수 있다: gRPC 메타데이터 미전파, k3s Pod 미준비, containerd 이미지 풀 실패, Docker 네트워크 도달 불가, 또는 OpenShell 레지스트리 불일치. 정보가 진단 불가능한 수준까지 압축된다.
5.3 NemoClaw: 네임스페이스 엔트로피 붕괴
NemoClaw CLI의 파라미터 공간과 sandbox 이름 공간이 동일한 심볼 도메인(커맨드라인 첫 번째 인수)을 공유한다. 사용자가 sandbox를 “status”로 명명하면, nemoclaw status connect가 sandbox 작업이 아닌 글로벌 명령으로 파싱된다. 컴파일러 이론을 배운 사람이라면 누구나 알 듯이, 어휘 분석의 첫 단계는 서로 다른 의미 범주가 겹치지 않는 토큰 공간을 점유하게 하는 것이다. NemoClaw은 이 첫 단계조차 수행하지 않았다.
5.4 NemoClaw: 환경 변수 인코딩 충돌
커뮤니티 사용자들이 발견한 바에 따르면, NemoClaw에서 동일 의미체(sandbox 이름)가 다른 컴포넌트에서 세 가지 다른 환경 변수명과 기본값을 사용한다[21]: Telegram bridge는 SANDBOX_NAME(기본값 “default”)을 읽고, start 스크립트는 NEMOCLAW_SANDBOX(기본값 “nemoclaw”)를 읽으며, OpenShell은 내부 레지스트리를 읽는다. 동일 소스의 세 가지 인코딩이 전송 중 조화 불가능한 충돌을 야기한다.
5.5 OpenClaw: 정보이론 결함 분석
OpenClaw의 정보이론 문제는 NemoClaw과 다르다 — 교차 계층 신호 감쇠가 아니라 단일 프로세스 내부의 정보 혼돈이다. 구체적으로 세 가지 유형으로 나타난다:
- 분산 추적 식별자 유실 (#75174): OpenTelemetry 진단 span이 traceId를 공유하지 않아 Cloud Logging에 고아 루트 트레이스 발생. traceId는 Shannon 의미의 채널 식별자이다 — 그 유실은 동일 사용자 요청의 모듈 간 인과관계가 완전히 단절됨을 의미하며, 운영 담당자가 요청의 전체 수명 주기를 연관시킬 수 없다.
- 모델 식별자 인코딩 불일치 (#75163): TUI에서 세션 중간 모델 전환 시 원시 별명(“claude”)을 전달하고, 해석된 완전 한정 ID(“anthropic/claude-opus-4-6”)를 전달하지 않는다. 동일 엔티티가 시스템 다른 계층에서 다른 인코딩을 사용하며, 통일된 소스 인코딩 표준이 없다 — NemoClaw의 환경 변수 명명 충돌과 동형 문제이다.
- 세션 상태 매핑 오류 (#75151): 컨텍스트 오버플로 리셋 후, sessionFile이 존재하지 않는 transcript 파일에 매핑되어, 실제 대화 기록이 고립된다. 이것은 정보이론에서 “댕글링 포인터”의 애플리케이션 계층 표현이다 — 상태 참조와 상태 실체 간의 매핑 관계가 예외 경로에서 단절된다.
6제어이론 차원 분석 (Wiener)
6.1 NemoClaw: 제어이론 지표 평가
15%
20%
12%
10%
8%
6.2 NemoClaw: 개루프 제어의 필연적 결과
NemoClaw의 온보드 흐름은 7단계 직렬 파이프라인으로, 각 단계 실행 완료 시 피제어 시스템의 확인을 기다리지 않고 성공으로 간주한다. Step 3/7이 “Sandbox created”를 보고한 후 밀리초 간격으로 Step 7/7이 정책 적용을 시작하지만, gRPC 메타데이터 전파는 100~500ms가 필요할 수 있다. 이것은 온도 센서 없는 항온기, 또는 발사 후 추적을 중단하는 미사일 유도 시스템과 동등하다.
6.3 NemoClaw: Ashby 필요다양성 법칙 위반
Ashby의 필요다양성 법칙(Law of Requisite Variety)은 요구한다: 제어기의 상태 공간은 피제어 시스템의 상태 공간 이상이어야 한다. NemoClaw의 TypeScript CLI는 Node.js 유저스페이스에서 실행되며, GC 정지가 예측 불가능하고, 이벤트 루프가 단일 스레드이며, 커널 네임스페이스를 직접 조작할 수 없다. 그 “제어 다양성”은 Landlock + seccomp + netns 대상의 상태 공간보다 훨씬 낮다. NemoClaw은 “제어기(controller)”가 아니라 “리모컨(remote control)”이다.
6.4 NemoClaw: 관측면 파편화
NemoClaw의 시스템 상태를 관측하려면 네 개의 다른 추상화 계층에서 네 개의 다른 명령을 실행해야 한다: nemoclaw status(CLI 계층), openshell sandbox list(샌드박스 계층), kubectl get pods -A(k3s 계층), docker logs(컨테이너 계층). 통합 관측 대시보드가 없으며, TypeScript 계층은 k3s 내부 상태를 직접 조회할 수조차 없다.
6.5 NemoClaw: 업그레이드의 비가역성
NemoClaw의 업그레이드 스크립트는 무조건적으로 openshell gateway destroy를 호출한 후 재구축한다. WSL2 환경에서 수 시간을 들여 수동으로 수정한 것(수동 이미지 가져오기, TLS 인증서 생성)이 업그레이드 작업에 의해 전부 파괴된다. 제어이론은 상태 변경 작업에 역연산 또는 전제 조건 검사가 있어야 함을 요구한다 — NemoClaw은 둘 다 없다.
6.6 OpenClaw: 제어이론 결함 분석
OpenClaw의 제어이론 문제는 “하위 시스템을 제어할 수 없음”이 아니라(제어할 하위 시스템이 없다), 자체 실행 상태에 대한 폐루프 관리의 부재이다. 구체적 표현은 다음과 같다:
- 업그레이드에 인터페이스 계약 보호 부재 (#75171): 업그레이드 후
createReplyPrefixContext함수가 소멸하여 TypeError 크래시 발생. TypeScript의 동적 임포트는 컴파일 시 서드파티 패키지의 함수 시그니처 변경을 검증하지 않는다 — 개루프 업그레이드의 필연적 결과. Go/Rust의 컴파일 시 인터페이스 검사는 빌드 단계에서 이 유형의 오류를 차단할 수 있다. - 채널에 제어 인터페이스 부재 (#75153): 커뮤니티가
channels.start/stop/restartCLI 명령 노출을 요청하는 이유는, 현재 멈춘 채널(wedged channel)을 복구하려면 전체 컨테이너를 재시작하거나 재페어링하는 수밖에 없기 때문이다 — 세밀한 제어 수단이 없다. - 대화 기록 무한 스태킹: OpenClaw은 모든 대화 기록을 컨텍스트 윈도우에 지속적으로 누적하며, 적응적 압축이나 절삭 피드백 메커니즘이 없다. 이로 인해 고빈도 사용자는 필연적으로 API의 TPM(Tokens Per Minute) 속도 제한을 트리거하거나 과도한 비용을 발생시킨다 — 시스템이 토큰 소비율에 따라 자기 조절하지 않으며, 전형적인 음의 피드백 없는 발산 시스템이다.
7시스템이론 차원 분석 (Bertalanffy)
7.1 NemoClaw: 창발성 실패
NemoClaw이 WSL2 환경에서 보이는 4층 가상화 중첩[14](Windows → WSL2 VM → Docker → k3s → containerd)은 전형적인 창발성 고장을 야기한다: 최외곽 Docker는 이미지를 풀 수 있지만, 최내곽 containerd는 풀 수 없다 — DNS 해석과 라우팅이 4번째 가상화 계층에서 단절된다. 각 컴포넌트의 설계자는 이 중첩 깊이를 테스트한 적이 없으며, 고장 행동은 단일 컴포넌트의 문서에서 예측할 수 없다.
7.2 NemoClaw: k3s 계층의 불필요성
시스템이론의 계층 필요성 원칙은 요구한다: 각 계층의 존재는 상위 계층이 해결할 수 없는 문제를 해결해야 한다. NemoClaw은 Docker 컨테이너 내에서 완전한 k3s 클러스터(etcd, kube-scheduler, kube-proxy, coredns, metrics-server 포함)를 실행하지만, 단 하나의 sandbox Pod만을 오케스트레이션한다. Kubernetes의 설계 목적은 수백 개의 Pod를 오케스트레이션하는 것이다 — 단일 Pod를 오케스트레이션하는 데 사용하는 것은 항공모함으로 물고기 한 마리를 운반하는 것과 같다. docker run --security-opt seccomp --cap-drop ALL 한 줄로 달성 가능한 격리가 7층 탑으로 쌓여 있다.
7.3 NemoClaw: 자가 치유 능력 제로 (항상성 부재)
건강한 시스템은 항상성(Homeostasis)을 보유해야 한다 — 교란 후 자동으로 정상으로 복귀. NemoClaw은 이 능력이 전무하다: sandbox 생성 실패 시 자동 재시도 없음; 업그레이드가 설정을 파괴해도 자동 롤백 없음; gateway 사망 후 잔류 Docker volume이 다음 생성을 차단하나 정리 메커니즘 없음. 매번 고장 시 4개 계층의 상태를 수동으로 관통하여 정리해야 한다. TypeScript/Shell에는 자가 치유 루프를 구축하는 원시 기능이 없다 — Erlang식 supervisor tree 없음, Kubernetes식 readiness probe 없음(아이러니하게도 NemoClaw 자체가 k3s를 사용함), circuit breaker 없음.
7.4 NemoClaw: 보안 하위시스템과 기능 하위시스템의 경계 모순
NemoClaw의 Sandbox 네트워크 네임스페이스는 “모든 아웃바운드 트래픽이 프록시를 거쳐야 한다”고 요구하지만, Node.js의 ws 라이브러리(Slack/Discord WebSocket SDK의 의존성)는 HTTPS_PROXY 환경 변수를 읽지 않는다. REST 호출은 프록시 경유 성공, WebSocket 직접 연결은 차단. NemoClaw의 보안 설계와 기능 요구사항의 경계 전제가 상호 배타적이다 — 시스템이론의 “경계 투과성 모순”의 교과서적 사례.
7.5 OpenClaw: 시스템이론 결함 분석
OpenClaw의 시스템이론 문제는 NemoClaw과 정반대이다 — “계층 과다로 인한 창발성 실패”가 아니라, “계층 제로로 인한 격리 부재”이다. 전체 런타임이 단일 프로세스 Node.js Gateway이며, 모든 컴포넌트가 공유 메모리에서 실행되어, 시스템이론의 경계 개념이 완전히 부재한다. 구체적 표현:
- 오류 처리기 자체 크래시로 계단식 고장 (#75168): Gateway가 채널 오류를 처리하는 중 크래시 — 오류 처리 경로에서
log변수가 미초기화. 보호 메커니즘 자체에 미초기화 의존성 존재 — 시스템이론의 “안전 밸브 실패로 전체 시스템 정지”의 전형적 사례. 단일 프로세스 아키텍처에서 하나의 채널 오류 처리기 크래시가 25+ 채널 전체의 서비스를 동시에 중단시킨다. - TUI 비지 루프 CPU 99% 소비 (#75137): Node.js 단일 스레드 이벤트 루프 모델에서, TUI 프로세스는 유휴 시 중지 대기가 아닌 지속적 폴링을 수행 — 스크립트 언어로 장기 상주 시스템 프로세스를 구현하는 고유 안티패턴. Go/Rust의 비동기 런타임은 이벤트 도착 전까지 진정으로 슬립하여, CPU 오버헤드가 거의 제로에 근접한다.
- 미디어 Provider 교차 채널 누수 (#75166): 이미지/비디오 Provider의 도구 출력이 Discord 그룹 채널에 누수되어, 사용자에게 보이지 말아야 할 내부 데이터가 노출된다. 시스템이론의 “경계 누수” 문제 — 단일 프로세스 공유 메모리 아키텍처에서 한 하위시스템의 출력이 의도치 않게 다른 하위시스템의 데이터 경로를 오염시킬 수 있다. 프로세스 수준 격리 장벽이 없기 때문이다.
- 430,000행 단일 프로세스의 감사 불가능성: 전체 코드베이스가 하나의 Node.js 프로세스에서 실행된다. FrankClaw 작성자의 보안 감사에서 7개의 심각한 취약점이 발견되었지만[17], 동시에 “100만 행 이상의 TypeScript가 29개 패키지에 분산”되어 있어 완전한 감사는 인력적으로 불가능하다고 지적했다. 시스템이론은 대규모 시스템의 분해 가능성(decomposability)을 요구한다; OpenClaw의 단일 프로세스 단일 메모리 아키텍처는 이 원칙을 위반한다.
8삼론 융합 진단 및 승법적 재앙 정리
8.1 Issue 귀인 통계
8.2 인과 정합 검증
| 삼론 예측 | 적용 프로젝트 | 예측 내용 | 실제 Issue 검증 | 일치 |
|---|---|---|---|---|
| 정보이론 | NemoClaw | 교차 계층 오류 메시지 진단 불가 | “sandbox not found” 하나의 에러 코드가 5가지 고장에 대응 | ✓ |
| 정보이론 | NemoClaw | 심볼 공간 충돌이 모호성 야기 | sandbox를 “status”로 명명 후 CLI 라우팅 오류 (#1731) | ✓ |
| 정보이론 | OpenClaw | 교차 모듈 신호 연관 단절 | OTEL traceId 미공유로 고아 트레이스 발생 (#75174) | ✓ |
| 제어이론 | NemoClaw | 개루프 시스템에 경쟁 조건 필연 | sandbox 생성 후 정책 적용 실패 (#152 #297 #478) | ✓ |
| 제어이론 | NemoClaw | 롤백 없는 업그레이드는 상태 파괴 필연 | 업그레이드가 모델 설정 덮어씀 (#1869) | ✓ |
| 제어이론 | OpenClaw | 계약 없는 업그레이드는 크래시 필연 | TypeError: function is not a function (#75171) | ✓ |
| 시스템이론 | NemoClaw | 강결합 계층이 창발성 고장 야기 | WSL2 4층 NAT 붕괴 (#305) | ✓ |
| 시스템이론 | NemoClaw | 보안 경계와 기능 요구의 충돌 | Slack WebSocket 프록시 거부 (#2024 #3014) | ✓ |
| 시스템이론 | NemoClaw | 중첩 컨테이너 cgroup 호환성 | DGX Spark k3s CrashLoopBackOff (#878) | ✓ |
| 시스템이론 | OpenClaw | 단일 프로세스 보호 메커니즘 자체 실패 | Gateway error handler에서 log undefined (#75168) | ✓ |
| 시스템이론 | OpenClaw | 단일 프로세스 리소스 누수 | TUI 유휴 시 CPU 89~99% (#75137) | ✓ |
8.3 승법적 재앙 정리
아키텍처만 틀렸다면(예: Go로 불필요한 k3s 계층을 작성) 코드를 보존하면서 아키텍처를 리팩토링할 수 있다. 언어만 틀렸다면(예: TypeScript로 합리적인 2층 시스템을 작성) 핫 패스를 점진적으로 교체할 수 있다. 그러나 NemoClaw은 두 층 모두 동시에 틀렸다: TypeScript의 약한 제어력 × 7층 중첩의 복잡도 = 기능 하나를 추가할 때마다 7개 계층 각각에서 N개의 버그가 도입된다. 버그 수정은 7층 exec() 호출 체인을 관통하는 추적이 필요하지만 — TypeScript는 바로 교차 계층 디버깅 능력이 결여되어 있다. 수정 자체가 새로운 TypeScript 코드이며, exec()를 통해 OpenShell을 호출하고, 새로운 경쟁 조건을 도입한다. 이것은 수학적으로 수렴하지 않는 시스템이다 — 양의 피드백 발산.
OpenClaw의 아키텍처는 단 하나의 계층(단일 프로세스 Node.js)이므로, NemoClaw 식의 “교차 계층 승법적 재앙”은 존재하지 않는다. 그러나 430,000행의 TypeScript가 격리 없이 단일 프로세스에서 실행되면, 다른 형태의 비가역적 과정이 발생한다: 채널 어댑터나 Skill 통합이 추가될 때마다 공유 메모리 오염면이 확대되고; 컴파일 시 인터페이스 검증 부재로 매번 업그레이드마다 회귀가 도입되며; AI 생성 코드가 일 50 commit 속도로 스태킹되어 인간 검토 속도를 훨씬 초과한다[17]. OpenClaw의 죽음은 “건물 붕괴”식이 아니라 “유기체 부패”식이다 — 크기가 클수록 분해가 빠르다.
9에픽급 Bug 속도 횡단 비교
| 순위 | 프로젝트 | 일평균 Issue 생성 | 언어 | 프로젝트 수명 | Stars |
|---|---|---|---|---|---|
| 1 | OpenClaw | 521/일 | TypeScript 100% | ~5개월 | 367k |
| 2 | NemoClaw | 60/일 | TS 75.6% + Shell | 51일 | 20.1k |
| 3 | VS Code | ~55/일 | TypeScript 94% | 10년 | 172k |
| 4 | Kubernetes | ~12/일 | Go 100% | 11년 | 122k |
| 5 | React | ~5/일 | JavaScript 100% | 11년 | 236k |
OpenClaw은 5개월 만에 Kubernetes 11년 누적 Issue 총량의 1.5배를 달성했다(78,205 vs ~53,000). OpenClaw의 Issue 생성 속도는 Kubernetes의 43배, React의 104배이다. NemoClaw의 정규화된 Bug 밀도(만 Star당 Open Issue 수)는 120.9로 — Kubernetes(14.7)의 8.2배, React(4.7)의 25.7배이다.
10커뮤니티 반응 및 전 세계 인지 격차
10.1 6개 독립 재작성 프로젝트
OpenClaw 발표 후 8주 내에 최소 6개의 독립 재작성 프로젝트가 출현하여[15], 총 약 11.6만 Stars를 흡인했다:
| 프로젝트 | 언어 | 팀 | Stars | 핵심 테제 |
|---|---|---|---|---|
| ZeroClaw | Rust | Harvard/MIT/Sundai Club | 29k | “OpenClaw은 너무 많은 하드웨어를 요구한다”[15] |
| IronClaw | Rust | NEAR AI (Transformer 논문 공저자) | 높은 관심 | “아키텍처 자체에 근본적 보안 결함”[16] |
| PicoClaw | Go | Sipeed (임베디드 하드웨어 회사) | 26k | “OpenClaw은 너무 플랫폼 종속적”[15] |
| NullClaw | Zig | 커뮤니티 | 신흥 | “극한의 미니멀리즘 추구”[15] |
| FrankClaw | Rust | AkitaOnRails (개인) | 개인 | “저 코드를 내 컴퓨터에서 실행하지 않겠다”[17] |
| NanoClaw | TypeScript | Qwibit AI | 25k | “OpenClaw은 너무 커서 감사 불가”[18] |
10.2 전 세계 인지 깊이 그래디언트
| 인지 수준 | 내용 | 도달률 |
|---|---|---|
| 현상 수준 | “너무 느리고, 너무 크고, 취약점 있다” | ~95% |
| 언어 수준 | “TypeScript로 Agent를 만들면 안 된다” | ~60% |
| 아키텍처 수준 | “단일 프로세스 무격리 / k3s 불필요” | ~30% |
| 제어이론 수준 | “개루프 제어 / 피드백 부재 / 자가 치유 부재” | ~5% |
| 정보이론 수준 | “채널 용량 / 신호 대 잡음비 / 인코딩 일관성” | 0% |
| 시스템이론 수준 | “창발성 / 항상성 / 결합도 매트릭스” | 0% |
| 삼론 교차 융합 | “언어 × 아키텍처 = 승법적 재앙 증명” | 0% (본 보고서 최초) |
11결론 및 패러다임 시사점
11.1 진단 결론
OpenClaw과 NemoClaw의 낮은 성숙도는 언어 선택 × 아키텍처 설계 × 시간 압박의 3중 중첩이 초래한 구조적 필연이다. TypeScript + Shell을 주 언어로 삼은 것은 위 세 가지 근인의 승수 인자이다. 핵심 오케스트레이션 계층을 Go/Rust로 재작성한다면: 정보이론적으로 gRPC 양방향 스트림이 exec() 호출을 대체할 수 있고(채널 용량 ×10); 제어이론적으로 readiness probe와 health check를 내장할 수 있으며(폐루프 제어); 시스템이론적으로 supervisor tree를 구축하여 자가 치유를 구현할 수 있다(항상성 복원).
11.2 비가역성 판단
수리에 필요한 변경 범위(언어 재작성 + 아키텍처 재구축)가 시스템 자체의 규모와 같거나 이를 초과할 때, “수리”는 의미를 상실한다. NemoClaw은 코드베이스로서 구조적으로 사망했다. OpenClaw의 TypeScript 커널도 같은 종착점을 향하고 있다 — 만성적 부패로 표현된다. 두 프로젝트의 Bug 증가 속도는 이미 인간 수정 속도의 상한을 초과했으며[20], 열역학적 의미의 비가역적 과정을 구성한다.
11.3 패러다임 시사: “오픈소스 코드”에서 “오픈소스 아키텍처”로
위 두 프로젝트와 대비되는 것이 LiteClaw 프로젝트[19]가 제시한 “Open Architecture” 패러다임이다 — Markdown 형식의 아키텍처 블루프린트와 SOP 플로우차트를 오픈소스하여, AI가 사용자 로컬에서 코드를 제로부터 생성하도록 한다. L0-L8 8층 엄격 단방향 의존성 및 순환 의존성 제로의 아키텍처는, 제어이론적으로 순수 전방향(feedforward) 시스템이며, 시스템이론적으로 최소 결합도를 달성한다. 5,000행 / 42파일의 규모는 완전히 감사 가능하다. 제로 Issue 기록은 증명한다: 아키텍처 설계가 코드 구현에 선행할 때, 버그는 설계 단계에서 제거되지, 런타임에 산더미처럼 쌓이지 않는다.
R참고문헌 및 데이터 출처
- Second Talent. “NemoClaw vs OpenClaw: What’s the Difference? [2026].” 2026년 4월. 인용 데이터: OpenClaw 60일 내 React Star 기록 돌파, 321,000 Stars, 1,075 기여자. secondtalent.com
- Conscia. “The OpenClaw Security Crisis.” 2026년 2월 23일. 인용 데이터: CVE-2026-25253(CVSS 8.8), 대규모 공급망 오염, 시스템적 아키텍처 약점에 대한 다벡터 보안 위기 분석. conscia.com
- CyberDesserts. “OpenClaw Security Risks: Skills, Exposure and Exploits.” 2026년 2월 5일. 인용 데이터: 1,184개 악성 Skill, ClawHavoc 공격 캠페인, 800+ 악성 Skill(레지스트리의 약 20%). cyberdesserts.com
- Bitsight. “OpenClaw Security: Risks of Exposed AI Agents Explained.” 2026년 2월 9일. 인용 데이터: 135,000+ 공개 노출 인스턴스, 82개국, 42,665개 중 5,194개 취약점 확인, 93.4% 인증 우회. bitsight.com
- Data Science Collective (Medium). “355k GitHub Stars in 5 Months: The Complete Honest Guide to OpenClaw.” 2026년 4월. 인용 데이터: TypeScript 모노레포 아키텍처, 1,200+ 기여자, 44,000+ Skills, IronClaw Rust 재작성. medium.com
- Kaspersky Official Blog. “Key OpenClaw Risks, Clawdbot, Moltbot.” 2026년 2월 24일. 인용 데이터: CVE-2026-24763, CVE-2026-25157 명령 주입 취약점, AMOS 정보 탈취기, 인증 기본 비활성화. kaspersky.com
- Cisco Blogs. “Personal AI Agents like OpenClaw Are a Security Nightmare.” 2026년 1월 30일. 인용 데이터: 악성 Skill 실행 검증, 프롬프트 주입 공격, MCP 인증 부재, 무음 데이터 유출. blogs.cisco.com
- Microsoft Security Blog. “Running OpenClaw Safely: Identity, Isolation, and Runtime Risk.” 2026년 2월 19일. 인용 데이터: OpenClaw 내장 보안 컨트롤 제한적; 런타임이 신뢰할 수 없는 텍스트를 수집하고 할당된 자격 증명으로 작업 실행 가능. microsoft.com
- CrowdStrike. “What Security Teams Need to Know About OpenClaw, the AI Super Agent.” 2026년 4월. 인용 데이터: 150,000+ GitHub Stars, 적대자가 노출 인스턴스를 통해 직접 악성 명령 제출 가능, Falcon 감지 통합. crowdstrike.com
- Kaspersky Official Blog. [6]과 동일. 추가 인용: WebSocket 출처 검증 부재, VirusTotal 통합 한계.
- GitHub. “NVIDIA/NemoClaw: Run OpenClaw more securely inside NVIDIA OpenShell with managed inference.” 주 저장소 데이터: 20.1k Stars, 243 Open Issues, 110 PRs, 언어 구성(TypeScript 75.6% / Shell 21.1%), v0.0.34. 데이터 수집일: 2026년 5월 6일. github.com/NVIDIA/NemoClaw
- gaodalie (Substack). “NVIDIA Nemoclaw + OpenShell: FASTEST Way to Install.” 2026년 3월 26일. 인용 데이터: “NemoClaw은 본질적으로 경량 TypeScript 플러그인에 불과”, OpenClaw=Linux 커널 / NemoClaw=RHEL 비유. gaodalie.substack.com
- Stormap. “Inside NemoClaw: The Architecture, Sandbox Model, and Security Tradeoffs.” 2026년 3월 18일. 인용 데이터: 아키텍처 “방향은 올바르며 진작 나왔어야 했다”, 알파 단계 인터페이스/API 변경 리스크, 운영 복잡도 미해소. stormap.ai
- GitHub Issue #305. “WSL2 Support Tracking — Known Gaps & Workarounds.” NVIDIA/NemoClaw. 2026년 3월 18일. 인용 데이터: 4층 가상화 중첩(Windows→WSL2→Docker→k3s→containerd), containerd 이미지 레지스트리 연결 불가, onboard 무조건 gateway destroy. github.com/NVIDIA/NemoClaw/issues/305
- ClawTrackr. “Rust vs Go vs Zig vs TypeScript: The Great OpenClaw Rewrite Wars.” 2026년 3월 28일. 인용 데이터: 390MB 유휴 메모리 사용, ZeroClaw 3.4MB/5MB RAM, PicoClaw Go 바이너리, NullClaw 678KB Zig. clawtrackr.com
- 36Kr (EU). “Transformer Paper Authors Recreate Lobster in Steel with Rust.” 2026년 3월 6일. 인용 데이터: IronClaw — “Attention Is All You Need” 논문 공저자 주도, WASM 샌드박스, 자격 증명 암호화, 프롬프트 주입 방어. eu.36kr.com
- AkitaOnRails. “I Rewrote OpenClaw in Rust. Did It Work?” 2026년 3월 16일. 인용 데이터: 100만 행 이상 TypeScript, 29개 패키지, 42명 기여자로부터 일 50 commit, 보안 감사 결과 7개 심각 취약점. akitaonrails.com
- InsiderLLM. “Best OpenClaw Alternatives: 11 Tools That Actually Work in 2026.” 2026년 4월. 인용 데이터: “감사 불가능한 40,000행 TypeScript”, Meta 정렬 연구 총괄의 200통 이메일 삭제 사건, NanoClaw 500행 코어. insiderllm.com
- GitHub. “leechoglobalai2025-hub/LiteClaw: From Open Source to Open Architecture.” 인용 데이터: L0-L8 8층 아키텍처, 5,000행/42파일, 순환 의존성 제로, Issue 제로, SecretValue 래퍼, 3단계 감사 엔진. github.com/leechoglobalai2025-hub/LiteClaw
- GitHub Issue #69167. “[Feature]: Automated bug-fix pipeline powered by Claude Code for community contributions.” openclaw/openclaw. 2026년 4월. 인용 데이터: 일 37개 새 Bug가 제한된 검토자 수를 훨씬 초과, 유지관리자 트리아지 번아웃, Bug 백로그가 채택 저해. github.com/openclaw/openclaw/issues/69167
- Twitter/X @KSimback. NemoClaw 설치 경험 스레드. 2026년 4월. 인용 데이터: Telegram bridge가 SANDBOX_NAME 읽음, start 스크립트가 NEMOCLAW_SANDBOX 읽음, 기본값 불일치, OpenShell PATH 문제, 추론 미자동 설정, 유령 프로세스 잔류. x.com/KSimback
- NVIDIA NemoClaw Developer Guide. “Architecture.” 인용 데이터: Plugin-Blueprint-OpenShell 아키텍처, gRPC 통신, L7 프록시 자격 증명 주입, Docker 내장 k3s 클러스터. docs.nvidia.com
- NVIDIA NemoClaw Developer Guide. “Troubleshooting.” 인용 데이터: Landlock 커널 지원 경고, cgroup v2 설정, Podman 미지원, Node.js 버전 요구사항, OOM 리스크. docs.nvidia.com
- GitHub. “openclaw/openclaw: Your own personal AI assistant.” 주 저장소 데이터: 367k Stars, 3,500 Open Issues, 75.3k Forks, Issue 번호 #78,205+. 데이터 수집일: 2026년 5월 6일. github.com/openclaw/openclaw
- OSSInsight. “116,000 Stars in 8 Weeks: Four Teams Rewrote OpenClaw — Here’s What the Code Says.” 2026년 3월 26일. 인용 데이터: 4개 재작성 프로젝트가 “OpenClaw이 어디서 잘못되었는가”에 대한 4가지 이론을 코딩, PicoClaw Issue 비율 최저(0.013). ossinsight.io
- GitHub Issues 페이지. NVIDIA/NemoClaw Issues (page=1). 첫 페이지 12건 Issue 샘플 출처: #3061, #3060, #3059, #3058, #3057, #3053, #3049, #3036, #3034, #3033, #3014, #3006. 데이터 수집일: 2026년 5월 6일. github.com/NVIDIA/NemoClaw/issues
- GitHub Issues 페이지. openclaw/openclaw Issues. 첫 페이지 12건 Issue 샘플 출처: #75174, #75171, #75168, #75166, #75163, #75156, #75155, #75154, #75153, #75152, #75151, #75137. 데이터 수집일: 2026년 5월 6일. github.com/openclaw/openclaw/issues
- NemoClaw GitHub Issues (개별 Issue 상세). 인과 정합 검증에 인용된 구체적 Issue: #152(WSL2 sandbox not found), #208(GPU 패스스루 강제), #297(온보딩 실패), #478(Step 2 멈춤), #878(DGX Spark cgroup v2), #1134(invalid providers key), #1731(네임스페이스 충돌), #1798(CONNECT tunnel 403), #1837(디버그가 잘못된 sandbox 지향), #1869(업그레이드 설정 덮어쓰기), #1924(Brev Ollama 실패), #2024(Slack WebSocket), #2667(Ollama HTTP 400), #3014(Slack proxy CONNECT 거부). github.com/NVIDIA/NemoClaw/issues
- ClawBeat. “NemoClaw — NVIDIA’s Enterprise OpenClaw Stack.” 2026년 3월 16일. 인용 데이터: ~900 악성 Skill, ~135K 노출 인스턴스, NVIDIA가 초기에 Salesforce/Cisco/Google/Adobe에 NemoClaw 소개. clawbeat.co
- WorthView. “NemoClaw Architecture Explained: OpenShell, Nemotron, and the Agent Stack.” 2026년 3월 22일. 인용 데이터: 5층 보안 스택, 의도 검증 엔진, 프라이버시 라우터, 알파 상태 선언. worthview.com
- Second Talent. “How to Install NemoClaw and Get Started in 2026.” 2026년 4월. 인용 데이터: Ubuntu 공식 지원, WSL2 실험적, macOS 부분 지원, Brev 클라우드 경로, Ollama 87GB 디스크 요구. secondtalent.com
- Stormap. “Getting Started With NemoClaw: Install, Onboard, and Avoid the Obvious Mistakes.” 2026년 3월 18일. 인용 데이터: 알파 단계 제약, curl|bash 설치 경로 한계, 최소 시스템 요구사항, “NemoClaw을 백엔드 인프라를 배포하듯이 다루라”. stormap.ai