지피터스에서는 슬랙 봇 4마리(뽀짝이/뽀야/시고르/friday)를 운영하고 있습니다. OpenClaw 시절에는 봇이 메모리를 워낙 많이 먹어서 Mac mini 한 대에 2마리 이상은 못 올렸어요. 그래서 Mac mini 2대를 굴리고 있었습니다.
GoClaw로 옮기고 나니 Mac mini 한 대에 봇 4마리가 다 올라갔습니다. 결정에는 30초 걸렸어요.
이 글은 OpenClaw vs GoClaw를 운영자 시점에서 정리하고, 왜 지피터스가 GoClaw을 선택했는지, 실제로 옮기면서 겪은 두 가지 사건을 공유하는 글입니다.
한눈에 보는 OpenClaw vs GoClaw
인프라
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[언어]
OpenClaw Node.js / TypeScript
GoClaw Go (단일 25MB 바이너리)¹
[메모리 사용량]
OpenClaw 게이트웨이 ~300MB + 채널당 ~100MB
+ 에이전트 세션 400~800MB²
GoClaw 봇 1마리당 ~38MB³
[Mac mini 1대당 가능 봇 수]
OpenClaw 2마리 (지피터스 실측)
GoClaw 4마리 이상 (여유)
[시작 시간]
OpenClaw 수 초
GoClaw 1초 미만¹
[최 소 운영 비용]
OpenClaw Mac mini도 부담
GoClaw $5짜리 VPS에서도 동작¹
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━¹ GoClaw README / ² OpenClaw 공식 specs 및 OOM 이슈 #41778 / ³ GoClaw 공식 case-study
상태 관리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[상태 저장]
OpenClaw 파일 기반
GoClaw PostgreSQL 멀티테넌트
[사용자별 세션 격리]
OpenClaw 안 됨 (메모리 공용)
GoClaw DB 레벨 per-user 격리
[자격증명 보안]
OpenClaw 평문 가능
GoClaw AES-256-GCM 암호화 강제
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━멀티 봇 운영
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[봇 추가]
OpenClaw openclaw.json 수동 편집 + 스크립트
GoClaw 대시보드 위자드 (스캔→선택→import)
[봇별 도구 권한]
OpenClaw MCP 서버 단위
GoClaw 에이전트별 allow/deny
(mcp/grant_checker.go)
[권한 승격 모델]
OpenClaw dmPolicy + allowFrom 페어링
(수평 권한)
GoClaw paired_by가 owner면
자동 슈퍼유저 승격
(loop_context.go:316)
[봇 간 협업]
OpenClaw 별도 메커니즘 없음
GoClaw Agent Teams
(sync/async/bidirectional)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━LLM/채널
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[LLM 프로바이더]
OpenClaw 제한적
GoClaw 20+ (Anthropic native +
prompt caching)
[지원 채널 수]
OpenClaw 22개 (LINE/Matrix/iMessage/
Signal/Teams 등)
GoClaw 7개 (Telegram/Discord/Slack/
Zalo×2/Feishu/WhatsApp)
[운영 UI]
OpenClaw CLI/JSON 편집
GoClaw React Web Dashboard
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━왜 지피터스는 GoClaw을 선택했나
지피터스의 운영 조건은 "봇 여러 마리 + 운영자 여러 명 + 같은 슬랙 워크스페이스"였어요. 1인용 OpenClaw 세팅으로는 풀 수 없는 4가지 문제가 있었습니다.
1. 봇 4마리에 Mac mini 2대
OpenClaw는 봇이 메모리를 많이 먹어서 Mac mini 한 대에 2마리 올리면 끝이었어요. Mac mini 2대를 따로 굴렸고, 봇이 더 늘어나면 한 대 더 사야 할 판이었습니다.
GoClaw로 옮긴 뒤로는 Mac mini 한 대에 봇 4마리가 다 올라갔습니다. Mac mini 1대 비웠어요.
2. 운영자 4명에게 자동 권한 승격
지피터스는 운영자가 4명입니다. OpenClaw도 dmPolicy/allowFrom/페어링으로 여러 사용자에게 접근 권한은 줄 수 있어요. 그런데 "페어링한 사용자가 슈퍼유저 권한까지 자동으로 받는" 메커니즘은 없습니다. 결국 운영자별 권한 분리를 위해서는 별도 코드가 필요한 구조였어요.
GoClaw은 paired_by 필드가 owner면 자동 슈퍼유저로 승격됩니다. DB 한 줄 UPDATE로 운영자 4명에게 즉시 권한 부여. 코드 수정 0줄.
3. 봇별로 다른 도구 권 한
뽀짝이만 위험한 슬랙 메시지 쓰기 도구를 차단하고, 뽀야는 허용 — 이런 게 가능합니다. OpenClaw은 서버 단위 전역 권한이라 안 됐어요.
4. 보안 기본값
OpenClaw는 슬랙·AI 토큰이 openclaw.json에 평문으로 저장됩니다 (xoxb-..., xapp-... 그대로). 운영자 여럿이 파일·DB에 접근하는 환경에서는 위험해요. GoClaw은 credentials/API 키가 AES-256-GCM 암호화 (internal/crypto/aes.go, aes-gcm: 접두사 + nonce + ciphertext). 평문 INSERT하면 로그에 경고가 찍힙니다.
멀티봇 운영의 기능적 강점
봇 4마리를 동시에 운영하면서 GoClaw의 기능들이 어떻게 도움이 됐는지 정리합니다. 단순히 "여러 봇을 띄울 수 있다"가 아니라, 봇끼리 협업하고 권한을 분리하는 구조가 핵심이에요.
1. 봇마다 독립된 인격 파일 (per-agent context)
GoClaw은 봇별로 SOUL.md(인격), AGENTS.md(행동 규칙), IDENTITY.md(정체성) 같은 컨텍스트 파일을 따로 저장합니다 (agent_context_files 테이블). 뽀짝이는 명랑 발랄 톤, 뽀야는 차분한 양육자 톤, 시고르는 시니컬 톤 — 같은 워크스페이스에서 완전히 다른 인격으로 동작해요.
OpenClaw에도 워크스페이스 분리는 있지만, GoClaw처럼 DB 단위로 봇 간 컨텍스트가 격리돼서 한쪽 변경이 다른 쪽에 영향 안 가는 구조가 운영하기 훨씬 편합니다.
2. 봇마다 다른 LLM 모델·프로 바이더
각 봇이 자기 LLM 프로바이더를 따로 가질 수 있어요. 뽀짝이는 Claude Opus, 뽀야는 Sonnet, 가벼운 응답 봇은 Haiku — 비용과 성능을 봇별로 최적화할 수 있습니다. GoClaw README 기준 20+개 프로바이더 (Anthropic, OpenAI, Gemini, DeepSeek, xAI, MiniMax 등) 자유 조합 가능.
3. 봇별 도구 권한 (MCP allow/deny)
이게 운영자 입장에서 진짜 큰 차이예요. MCP(외부 도구 연결) 권한을 에이전트 단위로 allow/deny 가능합니다 (internal/mcp/grant_checker.go).
지피터스에서 실제로 쓰는 예:
- 뽀짝이만 위험한 슬랙 메시지 쓰기 도구(
conversations_add_message) 차단 - 시고르만 노션 MCP 접근 허용
- 모든 봇에 검색은 허용, 특정 봇만 파일 수정 허용
OpenClaw은 MCP 서버 단위 권한이라 이런 세밀한 제어가 안 돼요.
4. 봇 간 협업 — Agent Teams
GoClaw에는 Agent Teams 기능이 있어요 (docs/11-agent-teams.md). Lead 봇이 Member 봇들에게 작업을 위임하고, 결과를 받아 종합합니다. 구체적으로:
- 공유 Task Board: 봇끼리 작업을 등록·청구·완료 (
team_tasks도구).blocked_by의존성도 표현 가능 - 공유 Mailbox: 봇 간 직접 메시지·브로드캐스트 (
message도구) - 3가지 위임 모드: sync(기다림) / async(쏘고 잊음) / bidirectional(양방 향)
- 자동 완료: 위임이 끝나면 연결된 task가 자동으로 완료 처리
- 병렬 배치: 여러 멤버가 동시 작업 시 결과를 한 번에 모아서 lead에 전달
예: 사용자가 뽀짝이에게 복잡한 리서치 요청 → 뽀짝이가 task 3개 만들어서 뽀야·시고르·friday에게 병렬 위임 → 결과 모아서 사용자에게 응답.
5. 작업 격리 — Lane-based Scheduler
봇 4마리가 동시에 일하면 자원 경쟁이 생깁니다. GoClaw은 작업을 Lane(차선)으로 분리해서 스케줄링해요 (CHANGELOG에 명시): Main lane(사용자 응답) / Subagent lane(서브 에이전트) / Team lane(팀 작업) / Cron lane(예약 작업).
같은 세션 내에서 최대 3개 봇 실행 동시 처리 + 적응형 스로틀, 히스토리 격리를 위한 deferred session writes도 검증 완료. 한 봇이 무거운 작업을 해도 다른 봇 응답이 안 막히는 구조예요.
6. 사용자별 세션 격리 (Multi-tenant PostgreSQL)
같은 봇·같은 채널이라도 사용자별로 독립 세션이 유지됩니다. A 운영자의 코드 리뷰 대화 맥락이 B 운영자의 회의록 정리 대화에 섞이지 않아요. PostgreSQL 멀티테넌트의 WHERE tenant_id = ? 격리가 항상 들어갑니다.
OpenClaw은 파일 기반 상태라서 옵션을 켜도 race condition + 메모리 공용 문제가 남는다고 GoClaw 공식 case-study에서도 지적됐습니다.
7. 봇별 자기 진화 (Self-Evolution)
이건 운영해보니 신기했는데, GoClaw 봇은 자기 사용 패턴(메트릭)을 보고 자기 행동 가이드(CAPABILITIES.md)를 스스로 업데이트할 수 있어요 (README "Self-Evolution"). 단, 이름·정체성·핵심 목적은 못 건드리도록 보호됩니다. 봇이 4마리니까 각자 다른 방향으로 성장하는 게 보입니다.
8. 봇별 운영 메트릭 + 트레이스
대시보드에서 봇별로 LLM 호출 횟수, 토큰 사용량, prompt cache hit rate, 응답 시간을 다 볼 수 있어요. 어떤 봇이 토큰을 많이 먹는지, 어떤 봇이 자주 실패하는지 봇별로 분리해서 보입니다. OpenTelemetry OTLP export도 지원.
실제로 겪은 일 1: 봇 4마리가 무한 루프에 빠졌다
이건 진짜 예상 못 했어요. GoClaw로 옮기고 봇 4마리를 같은 슬랙 채널에 멤버로 넣었더니, 뽀짝이가 답하면서 뽀야를 멘션하면, 뽀야가 그걸 받아서 또 답하고, 그 답에 다시 다른 봇이 멘션돼서 또 답하고... 무한 루프가 돌더라고요.
원인은 GoClaw의 thread participation cache가 외부 봇 메시지에도 적용돼서, "한 번 대화에 참여한 스레드는 멘션 없어도 응답"하는 동작이 봇 간에 발동된 거였어요.
코드를 패치했습니다.
- 외부 봇 메시지일 때는 cache 무시하고 strict mention만 보도록
- 봇별로 위험한 슬랙 도구는 deny 처리
여러 AI 봇을 같은 공간에 두면 의외로 시끄러워집니다. 봇 1마리만 띄울 때는 절대 안 보이는 문제예요.
실제로 겪은 일 2: Codex로 코드 읽다가 dormant 기능 발견
운영자 4명에게 슈퍼유저 권한을 어떻게 줄지 고민하다가, Codex CLI로 GoClaw 코드를 같이 읽어봤어요.
관리자 페어링하면 자동으로 슈퍼유저로 승격되는 로직이 어디 있어?
loop_context.go 위주로 봐줘Codex가 loop_context.go:316에서 페어링 → 슈퍼유저 승격 로직을 찾아냈습니다. 이미 만들어져 있는데 paired_devices 테이블이 비어 있어서 dormant 상태였더라고요. 문서에는 한 줄도 안 적혀 있었어요.
DB에 페어링 데이터 한 줄씩 INSERT하니 운영자 4명에게 즉시 권한이 부여됐습니다. 코드 한 줄도 안 고쳤어요.
오픈소스 프로젝트 옮길 때 이미 만들어졌는데 안 쓰는 기능이 의외로 많습니다. 환경변수 한 줄, DB 한 줄로 켤 수 있는 dormant 기능을 찾는 것만으로도 큰 시간 절약이 돼요.
결과
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[봇 4마리 운영에 필요한 Mac mini]
Before 2대 (지피터스 실측)
After 1대 (지피터스 실측)
[메모리 사용량]
Before 봇 + 게이트웨이 합산 ~수백 MB ~ 1GB+
After 봇 1마리당 ~38MB
(공식 case-study 측정)
[슈퍼유저 자동 승격]
Before 별도 코드 필요
After DB 한 줄 (4명 즉시)
[봇별 도구 권한]
Before MCP 서버 단위
After 에이전트별 allow/deny
[credentials 보안]
Before 평문 저장
After AES-256-GCM 암호화
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━수치보다 체감이 더 컸어요. Mac mini 1대가 잠자기 시작했고, "어떻게 권한 줘야 하지" 같은 운영 고민이 사라졌습니다.
AI 활용 팁!
누구에게 GoClaw을 추천하나
이런 분들에게 추천합니다:
- 슬랙·디스코드·텔레그램에서 AI 봇을 여러 마리 운영하는 분