Skip to main content

설정

OpenClaw는 ~/.openclaw/openclaw.json 경로에서 선택적으로 형식의 설정을 읽습니다. 파일이 없으면 OpenClaw는 안전한 기본값으로 동작합니다. config를 추가하는 대표적인 이유는 다음과 같습니다.
  • 채널을 연결하고 누가 봇에 메시지를 보낼 수 있는지 제어하기
  • 모델, 도구, sandboxing, 자동화(cron, hooks) 설정하기
  • 세션, 미디어, 네트워킹, UI 동작을 조정하기
사용 가능한 모든 필드는 전체 레퍼런스에서 확인할 수 있습니다.
설정이 처음이라면 openclaw onboard로 대화형 설정을 시작하거나, 바로 복사해 쓸 수 있는 Configuration Examples를 먼저 확인하세요.

최소 구성 예시

설정 편집 방법

엄격한 스키마 검증

OpenClaw는 schema와 완전히 일치하는 config만 허용합니다. 알 수 없는 키, 잘못된 타입, 유효하지 않은 값이 있으면 Gateway는 시작을 거부합니다. 루트 레벨의 유일한 예외는 에디터용 JSON Schema 메타데이터를 위한 $schema(string)입니다.
검증에 실패하면:
  • Gateway가 시작되지 않습니다.
  • 진단 명령만 동작합니다(openclaw doctor, openclaw logs, openclaw health, openclaw status).
  • openclaw doctor로 정확한 문제를 확인하세요.
  • openclaw doctor --fix 또는 --yes로 자동 수정을 적용할 수 있습니다.

주요 작업 가이드

각 채널은 channels.<provider> 하위에 독립된 설정 섹션을 가짐. 상세 설정 단계는 채널별 전용 페이지를 참조함:모든 채널은 같은 DM 정책 패턴을 공유합니다:
기본 모델과 선택적 fallback을 설정합니다:
  • agents.defaults.models는 가용 모델 카탈로그를 정의하며 /model 명령어의 허용 목록(Allowlist) 역할을 수행함.
  • 모델 참조는 공급자/모델ID 형식을 사용함 (예: anthropic/claude-3-5-sonnet-latest).
  • agents.defaults.imageMaxDimensionPx는 이미지 전송 시의 축소 배율을 조절함 (기본값 1200). 값을 낮추면 스크린샷 위주의 작업 시 비전 토큰 소비를 줄일 수 있음.
  • 상세 정보: 모델 CLI, 모델 장애 조치 규칙.
  • 커스텀 또는 자체 호스팅 공급자 연동: 레퍼런스의 커스텀 공급자 섹션 참조.
개인 대화(DM) 접근은 채널별 dmPolicy 설정을 통해 제어함:
  • "pairing" (기본값): 새로운 발신자에게 일회성 페어링 코드를 발송하고 승인을 대기함.
  • "allowlist": allowFrom 목록에 등록된 사용자만 허용함.
  • "open": 모든 발신자의 DM 수락 (allowFrom: ["*"] 설정 필수).
  • "disabled": 모든 수신 DM을 무시함.
그룹 대화의 경우 groupPolicygroupAllowFrom 설정을 통해 제어함.상세 내용: 전체 레퍼런스의 DM 및 그룹 접근 제어.
그룹 메시지는 기본적으로 멘션 시에만 응답하도록 설정되어 있음. 에이전트별 멘션 패턴을 구성함:
  • 메타데이터 멘션: 네이티브 @멘션 (WhatsApp 선택 멘션, Telegram @bot 등) 감지.
  • 텍스트 패턴: mentionPatterns에 정의된 정규표현식 감지.
  • 상세 내용: 전체 레퍼런스의 그룹 멘션 게이팅.
에이전트 세션을 격리된 Docker 컨테이너 내에서 안전하게 실행함:
사전 준비: scripts/sandbox-setup.sh 스크립트를 통해 이미지를 먼저 빌드해야 함.상세 가이드: 샌드박싱, 샌드박스 설정 레퍼런스.
  • every: 실행 간격 (예: 30m, 2h). 비활성화 시 0m 설정.
  • target: 응답을 보낼 대상 채널 (last, whatsapp, telegram, discord, none).
  • directPolicy: DM 형태의 하트비트 대상에 대해 allow (기본값) 또는 block 지정.
  • 상세 가이드: 하트비트.
  • sessionRetention: 완료된 격리 세션을 sessions.json에서 제거함 (기본값 24h, 비활성화 시 false).
  • runLog: 개별 작업 로그 파일의 용량 및 보관 라인 수 관리.
  • 상세 정보: 크론 작업 개요.
Gateway에서 외부 요청을 수신할 HTTP 웹훅 엔드포인트를 활성화함:
보안 주의 사항:
  • 웹훅 페이로드 내용은 항상 ‘신뢰할 수 없는 입력값’으로 간주함.
  • 디버깅 목적이 아니라면 안전 경계 우회 플래그(allowUnsafeExternalContent)는 반드시 비활성화함.
  • 웹훅 전용 에이전트에는 성능이 우수한 최신 모델 사용과 엄격한 도구 정책(샌드박싱 등) 적용을 권장함.
상세 레퍼런스: 웹훅 매핑 및 Gmail 통합.
서로 다른 워크스페이스와 세션을 가진 여러 명의 격리된 에이전트를 동시에 운영함:
상세 내용: 멀티 에이전트 개념, 라우팅 바인딩 레퍼런스.
$include 지시어를 사용하여 비대해진 설정 파일을 체계적으로 관리함:
  • 단일 파일: 해당 객체 전체를 파일 내용으로 대체함.
  • 파일 배열: 명시된 순서대로 깊은 병합(Deep-merge)을 수행함 (나중에 선언된 파일이 우선).
  • 형제 키(Sibling keys): 포함된 파일의 내용과 병합되며, 파일 내의 값을 오버라이드함.
  • 중첩 지원: 최대 10단계까지 포함 관계를 형성할 수 있음.
  • 상대 경로: 인클루드를 선언한 상위 파일을 기준으로 경로를 해석함.
  • 오류 처리: 누락된 파일, 파싱 오류, 순환 include에 대해 명확한 오류를 반환함.

Config hot reload

Gateway는 ~/.openclaw/openclaw.json을 감시하고 대부분의 설정을 자동으로 반영합니다. 대다수 변경에는 수동 재시작이 필요하지 않습니다.

Reload modes

What hot-applies vs what needs a restart

대부분의 기능 설정은 다운타임 없이 즉시 적용됨. hybrid 모드에서는 재시작이 필요한 항목 변경 시 시스템이 자동으로 대응함.
gateway.reloadgateway.remote는 예외이며, 값을 바꿔도 의도적으로 재시작을 트리거하지 않습니다.

설정 RPC (프로그래밍 방식 업데이트)

제어 플레인 쓰기 RPC(config.apply, config.patch, update.run)는 deviceId+clientIp 기준 60초당 3회로 제한됩니다. 제한되면 retryAfterMs와 함께 UNAVAILABLE을 반환합니다.
전체 config를 검증하고 기록한 뒤 Gateway를 재시작합니다.
config.applyconfig 전체를 교체합니다. 일부 키만 바꾸려면 config.patch 또는 openclaw config set을 사용하세요.
파라미터:
  • raw (string): 전체 config를 담은 JSON5 payload
  • baseHash (optional): config.get에서 받은 config hash
  • sessionKey (optional): 재시작 후 wake-up ping을 보낼 session key
  • note (optional): restart sentinel에 남길 note
  • restartDelayMs (optional): 재시작 전 대기 시간(기본값 2000)
이미 재시작이 대기 중이거나 진행 중이면 요청은 coalesce되며, 재시작 사이에는 30초 cooldown이 적용됩니다.
기존 config에 부분 변경을 병합합니다(JSON merge patch semantics).
  • Objects merge recursively
  • null deletes a key
  • Arrays replace
파라미터:
  • raw (string): 변경할 키만 담은 JSON5
  • baseHash (required): config.get에서 받은 config hash
  • sessionKey, note, restartDelayMs: config.apply와 동일
재시작 동작도 config.apply와 같습니다. 대기 중 재시작은 coalesce되며, 재시작 사이에는 30초 cooldown이 적용됩니다.

환경 변수 활용

OpenClaw는 부모 프로세스의 환경 변수와 함께 다음도 읽습니다.
  • 현재 작업 디렉터리의 .env(있다면)
  • ~/.openclaw/.env (전역 fallback)
이 두 파일은 이미 설정된 환경 변수를 덮어쓰지 않습니다. config 안에 직접 env var를 넣을 수도 있습니다.
필요한 키가 비어 있으면 사용자의 로그인 shell을 실행해 누락된 키만 가져올 수 있습니다:
Env var equivalent: OPENCLAW_LOAD_SHELL_ENV=1
config의 모든 string 값에서 ${VAR_NAME}로 env var를 참조할 수 있습니다:
규칙:
  • 대문자, 숫자, 언더바 조합만 지원: [A-Z_][A-Z0-9_]*.
  • 변수가 없거나 비어 있으면 로드 시점에 오류를 발생시킴.
  • 리터럴 문자열로 출력하려면 $${VAR} 형식을 사용함.
  • $include 파일 안에서도 동작함.
  • 인라인 치환 지원: "${BASE_URL}/v1""https://api.example.com/v1".
SecretRef object를 지원하는 필드에는 다음처럼 env, file, exec 소스를 사용할 수 있습니다:
SecretRef 세부 사항(env/file/execsecrets.providers 포함)은 Secrets Management에서 다룹니다. 지원되는 credential 경로는 SecretRef Credential Surface에 정리돼 있습니다.
우선순위와 전체 source 목록은 Environment를 참고하세요.

전체 레퍼런스

완전한 필드별 레퍼런스는 **Configuration Reference**에서 확인할 수 있습니다.
Related: Configuration Examples · Configuration Reference · Doctor