챗봇 시대에서 에이전트 운영 시대로. 77.5k 스타 LobeChat의 후속, "AI 직원 10명을 운영하는 사장님" 플랫폼.
왜 단일 챗봇 시대가 끝나가는가.
2023~2025년의 AI는 "ChatGPT 같은 단일 챗봇"이 주류였다. 사용자 한 명이 봇 하나와 대화하는 1:1 구조. 그런데 2026년 들어 흐름이 바뀌었다 — 에이전트가 작업의 기본 단위(Unit of Work)가 되면서, 여러 에이전트를 동시에 운영·스케줄링·보고받는 "운영체제(OS) 같은 레이어"가 필요해진 것.
LobeHub는 이 흐름을 가장 빠르게 구현한 첫 번째 사례다. 기존 lobehub/lobe-chat(단일 챗봇 UI)이 에이전트 운영 OS로 리브랜딩되면서 77.5k 스타가 그대로 따라왔고, OpenAI Operator·Anthropic Skills·Microsoft AutoGen이 각자 풀려고 하던 문제를 한 플랫폼으로 통합했다.
한 문장으로 줄이면.
LobeHub는 단순 챗봇 UI가 아니라 에이전트 운영 OS다. 4가지 핵심 — (1) Operator 전체 AI 팀 고용·스케줄링·보고, (2) Create Agent Builder로 묘사만 하면 자동 구성, (3) Collaborate Agent Groups·Pages·Schedule로 실제 팀처럼 협업, (4) Evolve White-Box Memory + 지속 학습.
"단일 챗봇이 모놀리스라면, LobeHub는 마이크로서비스로 진화한 에이전트 인프라"라는 비전을 가장 사용자 친화적으로 구현했다.
시대적 배경 + 경쟁 우위.
| 비교 항목 | LobeHub | ChatGPT 클론 | Dify / Coze |
|---|---|---|---|
| 핵심 컨셉 | 에이전트 운영 OS | 단일 대화 UI | 워크플로우 빌더 |
| 멀티 에이전트 협업 | Agent Groups (네이티브) | 없음 | 워크플로우 형태 |
| IM 채널 통합 | Slack/Discord/TG/WeChat 등 7+ | 없음 | 제한적 |
| 셀프호스팅 | Vercel/Docker/Electron | 일부만 | Docker |
| 스킬/플러그인 | 10,000+ MCP 호환 | 제한적 | 자체 형식 |
| 퍼스널 메모리 | White-Box (편집 가능) | 없음 | 블랙박스 |
| 오픈소스 | LobeHub Community License | 천차만별 | 일부 폐쇄 |
Operator — 전체 AI 팀을 고용·스케줄링·보고. "More productivity. Fewer tools." Create — Agent Builder로 "필요한 걸 한 번만 묘사하면" 자동 구성, 10,000+ MCP 스킬 장착.
Collaborate — Agent Groups, Pages, Schedule, Project, Workspace로 실제 팀처럼 협업. Evolve — Continual Learning + White-Box Memory(투명·편집 가능한 구조적 메모리).
pnpm 모노레포 · 200+ 의존성 · 80+ 워크스페이스 패키지.
LobeHub는 pnpm workspace 기반 모노레포다. package.json의 dependencies만 200개 이상, 내부 @lobechat/* 워크스페이스 패키지가 80개 이상 — 사실상 작은 운영체제다.
build:spa:mobile)apps/desktop에서 Mac/Windows/Linux 네이티브 앱vite-plugin-pwa로 설치 가능한 웹앱@lobehub/ui로 커스텀| 경로 | 역할 |
|---|---|
| Docker Hub | lobehub/lobehub 이미지로 One-click 셀프호스팅 |
| docker-compose/dev | PostgreSQL + Redis + RustFS(S3 호환) + SearXNG(검색엔진) 일괄 실행 |
| 원클릭 배포 | Vercel / Zeabur / Sealos / Alibaba Cloud 버튼 |
| 관찰성 | OpenTelemetry + Jaeger로 분산 트레이싱 |
| 로컬 노출 | Cloudflare 터널 / ngrok |
일반적인 챗봇 클론은 검색은 Google API, 저장은 AWS S3에 의존한다. 그러면 셀프호스팅이 사실상 불가능해지고, API 키 비용·프라이버시 이슈가 따라온다.
외부 검색 API 대신 오픈소스 메타검색엔진 SearXNG를 docker-compose에 번들. 객체 저장소도 AWS S3 대신 오픈소스 호환 RustFS를 기본으로 사용. 프라이버시 보존이 핵심 가치이기 때문에 셀프호스팅 친화적인 설계가 처음부터 잡혀 있다.
전체 구조도 → 핵심 패턴 하나하나.
┌─────────────────────────────────────────────────────────────────────┐
│ 사용자 채널 (Channels) │
│ Web Mobile PWA Electron Slack Discord Telegram WeChat │
└──────┬────────┬────────┬─────────┬────────┬─────────┬─────────┬──────┘
│ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────┐
│ IM Gateway / Chat Adapters Layer │
│ (@chat-adapter/* + @lobechat/chat-adapter-*) │
└──────────────────────────────┬──────────────────────────────────────┘
│ (Unified Message Bus, ioredis state)
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Next.js 16 + tRPC v11 API │
│ ├─ App Router (RSC) ── 채팅/페이지/스케줄/그룹 UI │
│ ├─ tRPC routes ── 타입 안전 RPC │
│ └─ Edge Runtime + Hono ── 저지연 엔드포인트 │
└──────┬──────────────────────┬──────────────────────────────┬────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌───────────────────────┐ ┌──────────────────────────┐
│ Agent Runtime│ │ Model Runtime (LLM) │ │ Builtin Tools (30+) │
│ ─ Group flow │ │ ─ OpenAI / Claude │ │ ─ web-browsing │
│ ─ Schedule │ │ ─ Gemini / Bedrock │ │ ─ python-interpreter │
│ ─ Memory │ │ ─ Ollama (local) │ │ ─ knowledge-base / RAG │
│ ─ Page agent │ │ ─ HuggingFace │ │ ─ MCP-compatible plugins │
└──────┬───────┘ └───────────┬───────────┘ └─────────┬────────────────┘
│ │ │
└──────────────────────┼────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Persistence & Infra Layer │
│ PostgreSQL (drizzle-orm) Redis (ioredis) RustFS/S3 SearXNG │
│ Better-Auth (passkey,OIDC) QStash (queue) Langfuse (tracing) │
└─────────────────────────────────────────────────────────────────────┘
packages/*, packages/business/*, apps/desktop, e2e가 모두 한 레포에 있다. 각각 @lobechat/* 또는 @lobehub/* 네임스페이스로 import.
"workspaces": [ "packages/*", "packages/business/*", "e2e", "apps/desktop/src/main" ]
"멀티 에이전트 OS"라는 거대한 시스템을 60개의 독립 패키지로 쪼개면서도, 버전 충돌 없이 한 번에 빌드할 수 있게 한다. @lobechat/agent-runtime이 @lobechat/model-runtime을 import할 때 npm publish 없이 즉시 변경이 반영된다 — 큰 회사 안의 여러 팀이 한 사옥에 모여 있는 구조.
@lobechat/builtin-tool-*로 시작하는 패키지가 30개 이상이다. 각 도구가 독립 패키지라 추가·교체가 쉽다.
@lobechat/builtin-tool-activator — 다른 도구를 호출하는 메타 도구 @lobechat/builtin-tool-agent-builder — 에이전트 빌더 자체가 도구 @lobechat/builtin-tool-claude-code — Claude Code 통합! @lobechat/builtin-tool-cloud-sandbox — 격리된 코드 실행 환경 @lobechat/builtin-tool-knowledge-base — RAG / 벡터 검색 @lobechat/builtin-tool-local-system — 사용자 PC 파일 조작 @lobechat/builtin-tool-memory — 영구 메모리 @lobechat/builtin-tool-notebook — Jupyter 노트북 @lobechat/builtin-tool-page-agent — Page UI 협업 도구 @lobechat/python-interpreter — 파이썬 실행 @lobechat/builtin-tool-skills — 스킬 호출 @lobechat/builtin-tool-skill-store — 스킬 마켓 @lobechat/builtin-tool-task — 태스크 관리 @lobechat/builtin-tool-user-interaction — 사용자에게 질문 @lobechat/builtin-tool-web-browsing — 웹 크롤링/브라우징 ... (총 30개+)
전통적 챗봇이 "메시지 1건씩 단발 응답"인 것과 달리, LobeHub는 에이전트 자체가 작업 단위다.
| 비교 항목 | 전통적 챗봇 | LobeHub |
|---|---|---|
| 응답 단위 | "질문 → 답변" 1:1 | "에이전트 고용 → 24시간 자율 작업" |
| 컨텍스트 | 대화 종료 = 소실 | White-Box Memory로 영속 상태 |
| 모델 운영 | 1개 모델 = 1개 봇 | Agent Group으로 여러 모델·역할 협업 |
| 채널 | 1개 채널에만 존재 | Slack/Discord/Web 동시 운영 |
ChatGPT의 메모리는 "블랙박스"다 — 무엇이 저장됐는지 사용자가 정확히 볼 수도, 편집할 수도 없다. LobeHub의 메모리는 다르다.
구현은 @lobechat/memory-user-memory 워크스페이스 패키지에 분리되어 있다.
LobeHub는 처음부터 "Vercel Edge에서 빠르게 돌아가는 것"을 목표로 설계됐다.
@neondatabase/serverless — Edge에서 HTTP로 Postgres 접근@upstash/qstash — 서버리스 메시지 큐@upstash/workflow — 장시간 작업도 Edge에서 분할 실행@vercel/edge-config — 글로벌 분산 설정hono — Express보다 10배 빠른 Edge runtimeREADME + package.json + workspace 구조 기반.
lobehub/ ├── apps/ │ └── desktop/ # Electron 데스크탑 앱 │ └── src/main/ # 메인 프로세스 워크스페이스 ├── packages/ # 60+ 모노레포 패키지 │ ├── agent-gateway-client/ # 외부에서 에이전트 호출 │ ├── agent-runtime/ # 에이전트 실행 엔진 (핵심!) │ ├── agent-templates/ # 미리 만든 에이전트들 │ ├── builtin-agents/ # 내장 에이전트 │ ├── builtin-tools/ # 30+ 내장 도구 │ ├── builtin-tool-*/ # 도구 1개당 패키지 1개 │ ├── chat-adapter-*/ # IM 채널 어댑터 │ ├── context-engine/ # LLM 컨텍스트 윈도우 관리 │ ├── conversation-flow/ # 대화 흐름 제어 │ ├── database/ # drizzle 스키마 + 마이그레이션 │ ├── electron-client-ipc/ # 데스크탑↔웹 IPC │ ├── eval-rubric/ # 에이전트 평가 기준 │ ├── file-loaders/ # PDF/Word/엑셀 파싱 │ ├── heterogeneous-agents/ # 이종 에이전트 협업 │ ├── memory-user-memory/ # White-Box Memory 구현 │ ├── model-runtime/ # LLM 호출 추상화 레이어 │ ├── observability-otel/ # OpenTelemetry 통합 │ ├── python-interpreter/ # 파이썬 코드 실행 (@lobechat/python-interpreter) │ ├── shared-tool-ui/ # 도구 공통 UI │ ├── ssrf-safe-fetch/ # 안전한 외부 fetch (SSRF 방어) │ ├── web-crawler/ # 웹 크롤링 엔진 │ └── business/ # 비즈니스 로직(유료) │ ├── config/ │ ├── const/ │ ├── model-bank/ │ └── model-runtime/ ├── src/ # Next.js 16 메인 앱 ├── docs/ # MDX 문서 + 자동 i18n ├── e2e/ # Playwright E2E 테스트 ├── scripts/ # 빌드/배포 자동화 (50+ 스크립트) ├── docker-compose/dev/ # PG + Redis + RustFS + SearXNG ├── locales/ # 다국어 번역 (lobe-i18n) ├── public/_spa/ # Vite SPA 빌드 출력 └── package.json # 200+ 의존성, 100+ 스크립트
packages/agent-runtime — 에이전트 실행의 핵심. 메시지 → LLM → 도구 호출 → 응답 루프. packages/model-runtime — 모든 LLM 공급자를 통일된 인터페이스로 추상화 (OpenAI/Claude/Gemini/Ollama를 같은 API로).
packages/context-engine — LLM의 한정된 컨텍스트 윈도우를 어떻게 채울지 결정. 메모리·문서·툴 결과를 압축·요약·우선순위 결정.
기술 영역마다 무엇을 가져갈지.
"use client"를 어디서 분리하는지next-mdx-remote로 MDX 문서 렌더링실습: src/app의 라우트 구조 따라가며 RSC vs Client 경계 표시해보기
api.chat.send.useMutation()처럼 타입 안전 호출@lobechat/openapi)실습: 본인 사이드 프로젝트에서 axios를 걷어내고 tRPC로 교체
실습: OpenAIProvider를 모방해 본인만의 HyperClovaXProvider 추가
@modelcontextprotocol/sdk로 외부 MCP 서버 연결실습: 자체 MCP 서버 1개 작성 → LobeHub에 등록 → 에이전트가 호출하게 만들기
drizzle-kit generate로 마이그레이션 자동 생성drizzle-dbml-generator로 ERD 자동 출력실습: 본인 사이드 프로젝트의 Prisma를 drizzle로 교체해보기
@lobechat/electron-client-ipc — IPC 메시지 타입 안전 정의실습: Hello World Electron + Next.js 모노레포 직접 구축
실습: 자기 챗봇 프로젝트에 Langfuse 붙여 비용·지연 대시보드 만들기
개발 환경 vs 셀프호스팅 환경.
| 항목 | 최소 | 권장 |
|---|---|---|
| Node.js | 20.x | 22.x LTS |
| 패키지 매니저 | pnpm 10.33+ | + Bun (추가 빌드 속도) |
| RAM | 8GB | 16GB+ (max-old-space-size=8192) |
| Docker | 필수 | Postgres+Redis+RustFS+SearXNG 컨테이너 4개 동시 |
| 디스크 | 10GB | 30GB+ (node_modules가 거대함) |
package.json의 build:analyze 스크립트를 보면 80GB 메모리 옵션이 설정되어 있다. 일반 빌드도 8GB를 요구한다. 메모리가 적은 환경에서는 빌드 전에 swapfile을 늘리거나 Docker 빌드 사용을 권장.
| 규모 | 사양 | 외부 의존성 |
|---|---|---|
| 개인용 | 2 vCPU / 4GB / 20GB SSD | Postgres + Redis |
| 팀 단위 | 4 vCPU / 8GB / 50GB SSD | + S3 호환 스토리지 |
| 매니지드 | — | Neon (Postgres) + Upstash (Redis) + Cloudflare R2 |
| LLM 비용 | API 키별 종량제 | 로컬 Ollama 사용 시 $0 |
난이도별 — Easy → Hard.
1) docker run -d -p 3210:3210 -e OPENAI_API_KEY=sk-xxx --name lobehub lobehub/lobehub 2) http://localhost:3210 접속 → 첫 채팅 3) Settings → 모델 → Ollama 추가 → llama3 / qwen2.5 사용
배우는 것: LobeHub의 핵심 UX, ChatGPT 클론과의 차이를 30분 만에 체험
1) docker-compose/dev/docker-compose.yml 읽기 → 어떤 서비스가 뜨는지 파악 2) SearXNG가 무엇이고 왜 Google API 대신 쓰는지 조사 3) RustFS와 MinIO/AWS S3의 관계 정리 4) "왜 LobeHub은 빅테크 API에 의존하지 않으려 하는가?" 짧은 글 제출
배우는 것: 셀프호스팅 친화 설계, 프라이버시 우선 아키텍처
1) 레포 클론 → pnpm install → pnpm dev:docker → pnpm dev 2) packages/builtin-tools/에서 가장 단순한 도구 (calculator) 코드 읽기 3) packages/builtin-tool-weather 새로 만들기 (OpenWeatherMap API 호출) 4) Agent Builder에서 도구 장착 → "서울 날씨 알려줘" 호출
배우는 것: 도구 등록 메커니즘, function calling 통합, 모노레포 워크스페이스 추가법
1) @chat-adapter/slack 패키지가 노출하는 API 조사 2) Slack App 생성 → Bot Token 발급 3) LobeHub 환경변수에 Slack 설정 주입 4) Slack 채널에서 @lobebot 안녕 → 응답 확인 5) 요약봇·번역봇 여러 에이전트를 같은 채널에 동시 운영
배우는 것: IM Gateway 패턴, 멀티 에이전트 라우팅, Slack Events API
1) packages/model-runtime의 OpenAIProvider 클래스 정독 2) 네이버 HyperClova X API 스펙 조사 3) HyperClovaXProvider 작성 — 스트리밍·Tool calling 포함 4) Settings UI에 새 공급자 옵션 추가 5) PR로 LobeHub 본가에 기여
배우는 것: 어댑터 패턴 실전, SSE 정규화, OSS 컨트리뷰션 흐름
1) "기획자 + 디자이너 + 개발자 + QA" 4개 에이전트 설계 2) 각 에이전트에 역할 프롬프트 + 전용 도구 장착 3) packages/conversation-flow에서 협업 플로우 추적 4) 미니 기능을 설계하고 코드까지 작성하는 워크플로우 완성
배우는 것: 멀티 에이전트 오케스트레이션, Agent Group 내부 동작, 협업 시나리오 설계
사용자 → 코드 탐험 → 기여자까지.
Docker 셀프호스팅 → 5개 에이전트 만들기. MCP 도구 3개 연결 (Filesystem, GitHub, Slack). Agent Group으로 협업 시나리오 1개. White-Box Memory 직접 수정 → 변화 관찰. Slack 채널에서 직접 운영.
pnpm install + 로컬 dev 환경 셋업. packages/agent-runtime 코드 리딩 → 에이전트가 어떻게 실행되나. packages/model-runtime Provider 추상화 이해. packages/context-engine 컨텍스트 관리 전략. tRPC routes 따라가며 채팅 메시지 흐름 추적.
버그 1개 수정 또는 문서 오타 수정. i18n 한국어 누락 번역 추가. 본인 빌트인 도구 1개 추가 → 외부 fork에서 운영. 작은 PR이 머지되는 흐름 체험.
새 LLM Provider 추가 (HyperClova X, Solar 등) 또는 새 IM 어댑터 (KakaoTalk, Naver Cafe 등). GitHub Discussion으로 RFC 작성 → 메인테이너 피드백 받기 → 머지까지 끌고 가기.
| 주제 | 자료 |
|---|---|
| Anthropic MCP | modelcontextprotocol.io |
| tRPC v11 | trpc.io |
| drizzle-orm | orm.drizzle.team |
| Next.js 16 | nextjs.org/docs |
| Better-Auth + Passkey | better-auth.com |
| Langfuse 관찰성 | langfuse.com |
| 12-factor agents | github.com/humanlayer/12-factor-agents |
자주 마주칠 단어들.
workspace:*로 내부 패키지 참조.공식 · 데모 · 학습 리소스.
docker run -d -p 3210:3210 -e OPENAI_API_KEY=... lobehub/lobehub. localhost:3210에서 첫 채팅. ChatGPT 클론과 무엇이 다른지 UI에서 직접 확인.locales/ko에서 누락 번역 1개 채우거나 README 오타 수정. OSS 컨트리뷰션 흐름 체험.packages/model-runtime/OpenAIProvider 정독 후, 가짜 응답을 반환하는 MockProvider를 만들어 보고 Settings UI에 노출시키기. 다음 단계는 HyperClova X 등 실제 Provider 추가.