TRENDSHIFT 딥다이브 · 연간 #1 · 2026-06-05

openclaw 딥다이브
— 내 기기에서 돌리는 1인용 AI 비서

OpenClaw는 내가 이미 쓰는 메신저(WhatsApp·Telegram·Slack·Discord 등 20여 종) 위에서 말을 거는 개인용 AI 비서다. 클라우드 서비스에 가입하는 게 아니라, 내 노트북·서버에 직접 띄우는 로컬 우선(local-first) 방식이라는 점이 핵심이다. 가운데에는 모든 채널·세션·도구를 묶는 게이트웨이(Gateway) 한 채가 있고, 그 위에서 LLM 에이전트가 음성으로 듣고 말하며, 화면(Canvas)까지 그린다. (저장소: openclaw/openclaw · TypeScript 모노레포(+Swift·Kotlin) · TrendShift 연간 1위(올해 +37만 스타) · MIT)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"비서를 클라우드에서 빌리지 말고,
내 집(기기)에 들여서 내 메신저로 부린다."

OpenClaw는 "AI 비서 앱"이 아니라 내 기기에서 24시간 돌아가는 비서 본체 + 그 비서를 어디서든 부를 수 있는 연결망이다. 비서는 WhatsApp·텔레그램·슬랙 같은 평소 쓰던 앱으로 답하고, macOS/iOS/안드로이드에서는 목소리로 듣고 말하기까지 한다.

좀 더 풀어보자. 대부분의 AI 비서는 회사 서버(클라우드)에 살고, 우리는 그 집에 손님으로 방문해 대화한다. OpenClaw는 반대다. 비서의 본체(게이트웨이)를 내 컴퓨터에 설치하고, 그 비서가 내가 평소 쓰는 메신저들로 나에게 말을 건다. 그래서 "로컬 우선"이고, 대화·도구 실행·메모리가 기본적으로 내 손 안에 있다.

이름과 분위기가 독특하다. OpenClaw는 Molty(몰티)라는 "우주 바닷가재 AI 비서" 캐릭터를 위해 만들어졌고(🦞 "EXFOLIATE!"는 그 마스코트 밈), iOS 개발자로 유명한 Peter Steinberger(steipete)와 커뮤니티가 함께 만든다. 밈처럼 보이지만 코드베이스는 진지하다 — 수백 개 패키지로 짜인 거대한 모노레포(monorepo)이고, 스폰서에 OpenAI·GitHub·NVIDIA·Vercel이 올라 있다.

용어
Local-first (로컬 우선)
데이터와 실행을 클라우드가 아니라 "내 기기"에 먼저 두는 설계 철학. 인터넷 없는 노트북에 사진이 그냥 들어 있는 것처럼, 비서의 두뇌·기억·권한이 내 컴퓨터에 있다는 뜻. (모델 호출 등 일부는 외부 API를 쓰지만, 제어권의 중심이 로컬이다.)

2왜 주목받는가

트렌딩 이유 · 경쟁 대비 장점.

OpenClaw는 TrendShift 연간 트렌딩 1위(올해 +37만 스타)에 오른, 2026년 오픈소스 폭발의 대표 사례다. 사람들을 끌어들인 건 세 가지다: ① 20여 개 메신저를 하나의 비서로 묶는다, ② 클라우드가 아니라 내 기기에서 돈다, ③ 음성·화면(Canvas)·모바일 앱까지 한 묶음. 여기에 "우주 바닷가재 Molty"라는 강한 밈 정체성이 입소문을 키웠다.

비교 축일반적인 AI 비서(클라우드 챗봇)OpenClaw
실행 위치제공사 서버(클라우드)내 노트북·서버(로컬 우선)
접점전용 앱/웹 하나이미 쓰는 메신저 20여 종 + 음성 + Canvas
도구 실행제한된 샌드박스호스트에서 bash·브라우저·cron 등 직접(샌드박스 선택)
확장플러그인 마켓(닫힘)채널/도구를 plugin-SDK로 직접 작성, 스킬(ClawHub)
기존 방식의 한계
"비서가 내 메신저로 못 들어온다 / 내 기기를 못 만진다"

클라우드 챗봇은 보통 전용 앱 안에 갇혀 있다. 친구에게 텔레그램으로 답을 대신 보내거나, 내 노트북의 파일을 직접 정리하거나, 새벽에 cron으로 작업을 돌리는 일은 어렵거나 불가능했다.

OpenClaw의 해결
"게이트웨이 하나가 메신저·기기·도구를 전부 연결한다"

게이트웨이가 모든 채널·세션·도구의 교차로 역할을 한다. 한 비서를 텔레그램에서도, 슬랙에서도, 맥 메뉴바에서 음성으로도 부르고, 같은 비서가 내 컴퓨터에서 bash·브라우저·cron을 써서 실제로 일을 한다.

정직한 경고
"폭발적 스타 = 검증된 안정성"은 아니다

+37만 스타와 밈 화제성은 인기의 신호이지 품질 보증이 아니다. 더구나 OpenClaw는 실제 메신저 + 내 호스트 권한을 다루므로 보안 설정(아래 s4·s7)을 건너뛰면 위험하다. 공부용으로는 최고의 교재지만, 실사용 전엔 보안 문서를 반드시 읽자.

3기술 스택 전체 지도

백엔드(게이트웨이)·프론트엔드(앱·UI)·인프라 한눈에.

OpenClaw는 한 언어 한 프레임워크가 아니라 여러 런타임이 한 저장소에 모인 모노레포다. 중심축은 TypeScript(게이트웨이), 양 날개는 Swift(Apple 앱)·Kotlin(안드로이드 앱)이다.

레이어기술 / 버전역할
핵심 런타임Node.js 24 (또는 22.19+)게이트웨이 데몬 실행 환경. ESM("type":"module") 기반.
언어(서버)TypeScript게이트웨이·에이전트·채널·도구의 본체. tsx로 직접 실행, tsdown으로 dist/ 빌드.
채널 어댑터grammy(Telegram)·Slack·Discord·Matrix·Nostr 등각 메신저 SDK를 extensions/* 플러그인으로 감쌈.
메모리LanceDB (memory-lancedb)대화·지식을 벡터로 저장·검색하는 임베디드 DB.
음성ElevenLabs + 시스템 TTSVoice Wake(호출어)·Talk Mode(연속 음성). 외부 실패 시 OS 음성으로 폴백.
데스크탑/모바일 앱Swift(macOS·iOS) · Kotlin/Gradle(Android)맥 메뉴바 앱, iOS/안드로이드 "노드"(음성·카메라·화면).
Control UI웹 UI (ui/, dist/control-ui)게이트웨이를 브라우저에서 보고 제어(WebChat·디버그).
샌드박스Docker(기본, "crabbox") · SSH · OpenShell비신뢰 세션의 도구 실행을 격리.
빌드/품질 툴체인oxc(oxlint·oxfmt) · tsgo · vitest · knip·madge초고속 린트/포맷, 타입체크, 테스트, 죽은 코드·import 순환 탐지.
패키지/버전pnpm workspace · CalVer(vYYYY.M.D)모노레포 의존성 관리, 날짜 기반 버전(예: 2026.5.26).
용어
Monorepo (모노레포, 단일 저장소)
서로 다른 여러 패키지·앱을 깃 저장소 하나에 모아 함께 관리하는 방식. 부서별로 흩어진 사무실 대신 한 빌딩에 전 부서를 모은 것. 공용 타입·SDK를 공유하기 쉽고, 한 번에 빌드·검사할 수 있다. OpenClaw는 pnpm 워크스페이스로 묶는다.
용어
oxc / oxlint · oxfmt (Rust로 만든 JS 툴체인)
기존 ESLint·Prettier를 Rust로 다시 만든 초고속 도구들. 거대한 모노레포에서 검사·포맷을 수십 배 빠르게 돌리려고 채택한다. "느린 수동 검수원을 로봇 검수기로 바꾼 것"에 가깝다.
용어
CalVer (Calendar Versioning, 달력 버전)
1.2.3 같은 의미 버전(SemVer) 대신 날짜로 버전을 매기는 방식. v2026.5.26 = 2026년 5월 26일 릴리스. 매일/매주 빠르게 쏟아내는 프로젝트가 즐겨 쓴다.

4아키텍처 심화 분석

메시지 한 통이 들어와서 답이 나가기까지.

먼저 독수리 시점으로 전체 그림부터 보자. 가운데 게이트웨이가 교차로다. 왼쪽에서 메신저(채널)들이 들어오고, 가운데에서 에이전트가 LLM·도구·메모리를 쓰며, 아래의 샌드박스가 위험한 실행을 가두고, 오른쪽 위의 노드(맥·폰)가 음성·화면을 담당한다.

┌──────────── 채널(extensions/*) ────────────┐ │ WhatsApp · Telegram · Slack · Discord · ... │ └───────────────────┬────────────────────────┘ │ inbound envelope(표준 봉투) ▼ ┌───────────────────────── GATEWAY (제어 평면) ─────────────────────────┐ │ DM 페어링/허용목록 · 세션 라우팅 · 이벤트 · RPC(WebSocket) │ │ │ │ ▲ │ │ ▼ ▼ │ 노드 페어링│ │ ┌──────────┐ tool 호출 ┌───────────┐ ┌─────┴──────┐ │ │ │ AGENT │ ───────────▶ │ 도구들 │ │ 노드(Node) │ │ │ │ (LLM 루프)│ ◀─────────── │ bash·브라우저│ │ mac·iOS·AOS │ │ │ └────┬─────┘ 결과 │ canvas·cron│ │ 음성·화면·캠│ │ │ │ └─────┬──────┘ └────────────┘ │ │ ▼ 메모리(LanceDB) ▼ 위험 실행은 격리 │ │ ┌──────────┐ ┌──────────────────┐ │ │ │ 벡터 기억 │ │ 샌드박스(Docker) │ │ │ └──────────┘ └──────────────────┘ │ └────────────────────────────────┬─────────────────────────────────────┘ │ reply pipeline(청크·전송) ▼ → 들어온 그 채널로 되돌려 보냄

이제 대표 흐름 한 줄기를 입력부터 출력까지 손으로 따라가 보자. "텔레그램으로 모르는 사람이 DM을 보냈다"를 예로 든다(핵심 줄만 형광):

① 텔레그램 DM 도착 → extensions/telegram 채널이 메시지를 받아 표준 "inbound envelope"로 변환 ② 게이트웨이가 발신자 검사 → DM 페어링 정책: 모르는 사람이면 짧은 페어링 코드만 주고 본문은 처리 안 함 → 운영자가 'openclaw pairing approve telegram <code>' 로 허용목록에 추가해야 통과 ③ 통과하면 라우팅 → 발신자/계정/채널을 보고 알맞은 에이전트 + 세션(workspace)으로 보냄 ④ 에이전트(LLM 루프) 실행 → 필요하면 도구 호출: read/write/bash/browser/cron … → 'main' 세션이 아니면 도구를 샌드박스(Docker) 안에서 실행 ⑤ 응답 생성 → reply pipeline 이 길이에 맞게 잘라(chunking) → 들어온 그 텔레그램 대화로 되돌려 전송

여기서 두 가지 "이 레포의 정상(컨벤션)"을 짚어두면 코드가 덜 낯설다. 첫째, 모든 채널은 같은 모양의 "봉투(envelope)"로 정규화된다 — 그래서 게이트웨이 코드는 텔레그램인지 슬랙인지 몰라도 똑같이 다룬다(채널 무관 경계). 둘째, 채널·도구는 전부 plugin-sdk라는 정해진 출입구로만 코어에 접근한다 — package.json의 export 목록 대부분이 이 SDK 표면(approval/reply/channel runtime 등)인 이유다.

설계 패턴
Control Plane (제어 평면) + Plugin Architecture (플러그인 구조)
"제어 평면"은 직접 일을 하기보다 흐름을 지휘하는 중앙층(공항 관제탑 같은 것) — 여기선 게이트웨이가 세션·라우팅·이벤트만 관장하고, 실제 일(채널·도구)은 플러그인이 한다. 새 메신저를 붙이려면 코어를 안 건드리고 extensions/에 플러그인 하나만 추가하면 된다.
설계 패턴
Capability Sandboxing (능력 기반 샌드박스)
세션마다 "이 도구는 허용/이 도구는 금지"를 정해 격리하는 방식. 기본값은 비-main 세션을 Docker 샌드박스에 넣고 bash·read·write는 허용하되 browser·cron 등은 막는다. "낯선 손님은 응접실까지만, 안방·금고는 잠금"에 해당.

5디렉토리 구조 해부

어떤 폴더가 무슨 일을 하나. (모노레포라 폴더가 곧 아키텍처다)

openclaw/ ├── src/ 게이트웨이·에이전트·세션·도구 코어 ★ ├── extensions/ 채널·제공자 플러그인 (각자 package.json) │ ├── telegram/ 슬랙/discord/whatsapp/matrix/nostr/qq/line/... │ ├── codex/ OpenAI Codex 제공자 │ ├── amazon-bedrock/ , anthropic-vertex/ 모델 제공자 │ ├── memory-lancedb/ 벡터 메모리 │ ├── voice-call/ 음성 통화 │ └── lobster/ 마스코트(Molty) 관련 ├── apps/ │ ├── macos/ Swift 메뉴바 앱 │ ├── ios/ Swift iOS 노드 (xcodegen) │ ├── android/ Kotlin/Gradle 안드로이드 노드 │ └── shared/ OpenClawKit(공유 Swift), 프로토콜 모델 ├── ui/ Control UI (웹) ├── packages/ 내부 공용 패키지 │ └── plugin-sdk/ 플러그인이 코어에 접근하는 공개 SDK 표면 ★ ├── skills/ 번들 스킬(SKILL.md) ├── security/ opengrep 보안 규칙 ├── scripts/ 빌드·검증·릴리스 자동화(.mjs 수백 개) ├── docs/ Mintlify 문서 사이트 ├── config/ tsconfig·lint·포맷 설정 ├── test/ vitest 설정·통합/라이브 테스트 └── openclaw.mjs CLI 진입점(bin)
경로역할
src/핵심. 게이트웨이 데몬, 에이전트 루프, 세션 모델, 도구 구현.
extensions/각 메신저·모델 제공자를 독립 플러그인으로. 새 채널은 여기에 추가.
packages/plugin-sdk/플러그인이 import해도 되는 "공식 출입구". 경계 검사 스크립트가 외부에서 코어 직접 접근을 막는다.
apps/네이티브 앱들. macOS/iOS는 Swift, Android는 Kotlin. shared/에 게이트웨이 프로토콜(Swift) 공유.
skills/ · ~/.openclaw/workspace/skills/비서가 쓰는 절차서(SKILL.md). 번들/관리형/워크스페이스 3종.
scripts/빌드·죽은코드·의존성·문서·릴리스를 검사하는 자동화. 이 프로젝트의 "엔지니어링 규율"이 여기 다 보인다.

6학습 포인트 (기술별)

이 레포에서 배울 만한 것 + 어디를 보면 되는지.

포인트 1 · 아키텍처

"플러그인으로 확장하는 코어"를 실물로 배우기

새 메신저를 코어 수정 없이 추가하려면 어떤 경계가 필요한가? plugin-sdk/의 export 표면과 extensions/telegram/을 나란히 보면, "코어가 모르는 채로 채널을 갈아끼우는" 인터페이스 설계의 모범 사례를 읽을 수 있다.

포인트 2 · 보안

비신뢰 입력 + 샌드박스 설계

실제 메신저 DM은 누구나 보낼 수 있는 "비신뢰 입력"이다. DM 페어링·허용목록·세션별 도구 allow/deny·Docker 샌드박스가 어떻게 맞물리는지 보안 문서와 함께 읽으면, AI 에이전트의 현실적 위협 모델을 익힐 수 있다.

포인트 3 · 엔지니어링 규율

거대 모노레포를 굴리는 자동화

scripts/에는 import 순환 탐지(madge), 죽은 코드(knip·ts-prune), 의존성 취약점 게이트, plugin-sdk 경계 린트 같은 수백 개의 검사가 있다. "코드를 어떻게 짜는가"만큼 "대규모 코드를 어떻게 썩지 않게 지키는가"를 배우기 좋은 교본이다.

포인트 4 · 멀티런타임

TS 코어 + Swift/Kotlin 앱을 한 저장소에서

게이트웨이 프로토콜을 JSON 스키마로 정의하고 Swift 모델로 동기화하는 흐름(protocol:gen, GatewayModels.swift)을 보면, 서로 다른 언어의 클라이언트를 "한 진실원"으로 맞추는 실전 기법을 볼 수 있다.

예를 들어, 게이트웨이를 띄우고 한 줄로 비서에게 일을 시키는 모양은 이렇다:

# 데몬으로 게이트웨이 설치 + 온보딩
npm install -g openclaw@latest
openclaw onboard --install-daemon

# 비서에게 직접 말 걸기(생각 깊이 high)
openclaw agent --message "출시 체크리스트 정리해줘" --thinking high

7시스템 요구사항

돌리려면 무엇이 필요한가. (순수 소프트웨어 — 특수 하드웨어는 없음)

항목요구사항
런타임Node.js 24 권장(또는 22.19+). 패키지 매니저는 npm·pnpm·bun.
OSmacOS · Linux · Windows(네이티브 Hub 앱 포함) 모두 지원.
상시 실행게이트웨이 데몬(launchd/systemd 사용자 서비스)으로 항상 켜둠.
샌드박스(선택)비-main 세션 격리에 Docker(기본) 또는 SSH·OpenShell.
소스 빌드반드시 pnpm(모노레포 워크스페이스). 루트 npm install은 비지원.
앱 빌드(선택)macOS/iOS는 Xcode·xcodegen(Swift), Android는 Gradle(Kotlin).
모델/계정LLM 제공자 1곳(예: OpenAI). 음성은 ElevenLabs(없으면 시스템 TTS 폴백).
설치 전 보안 체크
기본값은 'main' 세션이 호스트 전권을 가진다

혼자 쓸 땐 편하라고 main 세션 도구가 내 컴퓨터에서 그대로 돈다. 그룹/공개 채널을 붙이기 전에 agents.defaults.sandbox.mode: "non-main"로 격리하고, openclaw doctor로 위험한 DM 정책을 점검해야 한다.

8직접 해볼 수 있는 실습 과제

난이도별로 손에 익히는 단계.

실습 1

게이트웨이 띄우고 WebChat으로 말 걸기 난이도 ★☆☆ 입문

npm i -g openclaw@latestopenclaw onboard로 모델만 연결한 뒤, 메신저 없이 WebChat/CLI로 비서와 대화해 본다. "무엇이 게이트웨이이고 무엇이 에이전트인지" 체감하는 게 목표.

실습 2

텔레그램 채널 한 개 붙이고 DM 페어링 체험 난이도 ★★☆ 중급

봇 토큰으로 텔레그램을 연결하고, 모르는 계정으로 DM을 보내 페어링 코드 → approve 흐름을 직접 겪어본다. s4의 ②단계가 코드가 아니라 손끝에서 일어난다.

실습 3

샌드박스 모드로 도구 권한 좁히기 난이도 ★★☆ 중급

sandbox.mode: "non-main"을 켜고 browser·cron을 deny로 바꾼 뒤, 비서에게 그 도구를 시켜본다. 거부되는 모습을 보며 능력 기반 보안을 이해한다.

실습 4

워크스페이스에 나만의 스킬(SKILL.md) 추가 난이도 ★★★ 고급

~/.openclaw/workspace/skills/<이름>/SKILL.md를 만들어 비서에게 새 절차를 가르친다. AGENTS.md·SOUL.md·TOOLS.md가 프롬프트에 어떻게 주입되는지 함께 관찰.

실습 5

소스 클론 → 미니 채널 플러그인 뼈대 만들기 난이도 ★★★ 고급

pnpm installpnpm gateway:watch로 개발 루프를 돌리고, extensions/의 기존 채널을 본떠 가장 단순한 채널 플러그인 골격을 plugin-sdk만으로 작성해 본다.

9관련 기술 심화 학습 로드맵

한 주씩 따라가는 계획.

주차주제학습 자료
1주차게이트웨이·에이전트·세션 개념 + 로컬 실행README · docs.openclaw.ai 시작하기 · 실습 1
2주차채널/플러그인 구조와 plugin-sdk 경계extensions/telegram · plugin-sdk/ 정독 · 실습 2
3주차보안 모델: 비신뢰 입력·페어링·샌드박스Security·Sandboxing 문서 · 실습 3
4주차에이전트 워크스페이스와 스킬(SKILL.md)Tools·Skills 문서 · 실습 4 · ClawHub 둘러보기
5주차모노레포 엔지니어링(pnpm·oxc·죽은코드·CI)scripts/·config/ · vitest 테스트
6주차멀티런타임: 게이트웨이 프로토콜 ↔ Swift/Kotlin 노드apps/shared 프로토콜 · 노드 연결 문서

10핵심 키워드 사전

본문에 나온 용어 빠른 참조.

용어의미
Gateway(게이트웨이)채널·세션·도구·이벤트를 묶는 로컬 제어 평면(중앙 교차로). OpenClaw의 본체.
Agent(에이전트)LLM을 돌려 도구를 호출하며 일을 처리하는 비서 루프. 세션마다 독립적.
Channel(채널)WhatsApp·텔레그램 등 메신저를 게이트웨이에 연결하는 플러그인.
Node(노드)맥·iOS·안드로이드 동반 앱. WebSocket으로 페어링해 음성·화면·카메라 제공.
inbound envelope채널이 다른 메시지를 같은 모양으로 정규화한 "표준 봉투". 코어가 채널 종류를 몰라도 되게 함.
DM pairing(페어링)모르는 발신자에게 코드만 주고, 운영자 승인 전엔 본문을 처리하지 않는 기본 보안.
Sandbox(샌드박스)비신뢰 세션의 도구 실행을 Docker 등에 격리. 허용/금지 도구를 세밀히 지정.
plugin-sdk플러그인이 코어에 접근하는 공식 출입구(공개 API 표면).
Skill(스킬)비서에게 절차를 가르치는 SKILL.md 문서. 레지스트리는 ClawHub.
LanceDB대화·지식을 벡터로 저장·검색하는 임베디드 DB. 메모리 확장에 사용.
Live Canvas / A2UI에이전트가 제어하는 시각 작업 공간. 비서가 화면을 직접 그려 보여줌.
Molty(몰티) 🦞OpenClaw가 만들어진 "우주 바닷가재" AI 비서 캐릭터(밈 정체성).

11참고 링크