OpenClaw 구축·운영 (8/26) — 마스터 가이드: openclaw.json 전체 설정 총정리
게이트웨이, 에이전트, 채널, 도구 권한까지 런타임 제어의 모든 것
핵심 요약
- openclaw.json은 단순 설정이 아니라 시스템의 확장성과 보안을 결정하는 아키텍처 문서다
- 5개 영역(시스템 코어, 에이전트 파이프라인, 메시징 라우팅, 도구 권한, 자동화)으로 구성된다
- Gateway + 기본 Agent부터 시작해서 채널과 도구를 점진적으로 확장하는 것을 권장한다
배경
OpenClaw 기반 다중 에이전트 시스템의 핵심 과제는 "여러 LLM, 다양한 메신저 채널, 시스템 도구 간의 권한과 라우팅을 안전하게 격리하고 조율하는 것"이다. 이를 ~/.openclaw/openclaw.json 단일 중앙 설정 파일로 해결한다. JSON5 형식으로 주석과 유연한 문법을 지원하면서도, 엄격한 스키마 검증으로 오타 발생 시 부팅을 차단한다.
본문
1. 시스템 코어 및 네트워크
- Gateway: 시스템 진입점. mode(local/remote), port(기본 18789), bind, auth 설정
- env: 외부 LLM API 키 선언, 셸 커맨드 타임아웃 제어
- auth: OAuth 연동 메타데이터 (실제 시크릿은 별도 관리)
- logging: 로그 레벨, 민감 정보 마스킹(Redaction) 정책
- discovery: 로컬 네트워크 인스턴스 탐색용 mDNS/DNS-SD 설정
2. 에이전트 및 모델 파이프라인
- agents.defaults: 전역 베이스라인 — 워크스페이스, 시간대, 압축, 메모리 플러시
- model/imageModel: 주력 모델 + fallbacks 모델 체인
- sandbox: Docker 컨테이너 격리. 프로덕션에서는 non-main 이상 정책 강제 권고
- agents.list: 개별 에이전트 ID, 이름, 전용 모델 오버라이드 정의
3. 메시징 라우팅
- channels: WhatsApp, Telegram, Discord, Slack 등 봇 토큰 및 활성화
- dmPolicy/groupPolicy: pairing, allowlist, open 등 접근 필터링
- bindings: 채널/계정별 에이전트 라우팅. 선착순 매칭(First-match wins)이므로 배열 순서가 중요
- session: 세션 스코프(사용자별/채널별) 및 자동 초기화 조건
- messages: 입력 디바운스, 큐잉, 스트리밍, 그룹 히스토리 제한
- talk: TTS 설정 및 인터럽트 동작
4. 도구 권한 통제
- tools.profile: minimal, coding, full 등 기본 허용 수준
- allow/deny: 전역 목록. deny가 allow보다 우선
- elevated: 호스트 터미널 직접 실행 권한. 기본 비활성화, 특정 관리자 채널에만 제한적 개방
- web/media: 브라우저 검색, 오디오/비디오 처리 도구의 파일 크기 및 타임아웃
- skills: 번들 스킬 활성화 및 커스텀 스킬 디렉토리
- browser: 로컬 브라우저 경로, SSRF 방어 정책
5. 자동화 및 외부 연동
- crons: Cron 표현식 기반 백그라운드 작업
- commands: 슬래시 커맨드 파싱 및 실행 권한
- hooks: HTTP 웹훅 엔드포인트, 외부 이벤트를 특정 에이전트 세션으로 전달(wakeMode)
시행착오 / 주의사항
모든 옵션을 한 번에 설정하려고 하면 실수가 나온다. Gateway와 기본 Agent 설정으로 시작한 뒤, 채널과 도구 권한을 점진적으로 확장(Scale-out)하는 것이 안전하다. 스키마 검증이 엄격하므로 오타 하나로 부팅이 실패할 수 있다.
마무리
openclaw.json은 시스템의 보안(Least Privilege)과 확장성을 결정하는 중앙 설계도다. 점진적 확장 원칙을 지키면 복잡도를 통제할 수 있다.
댓글
댓글 쓰기