OpenClaw

OpenClaw WebChat 채널

메시징
쉬움

WebChat은 OpenClaw Gateway에 내장된 채팅 인터페이스입니다. WebSocket을 통해 직접 연결되므로 외부 서비스, API 키 또는 서드파티 계정이 필요하지 않습니다. Gateway를 시작하고 인증을 구성한 후 WebChat UI를 열면 AI 어시스턴트와 바로 대화를 시작할 수 있습니다. 모든 메시지는 결정론적으로 라우팅되므로, 응답은 항상 대화를 시작한 WebChat 세션으로 반환됩니다.

기본 정보
난이도쉬움
카테고리메시징
지원 기능 수1 / 6

WebChat 지원 기능

텍스트 메시지

지원

미디어 및 파일

미지원

리액션

미지원

스레드

미지원

음성 메시지

미지원

그룹 채팅

미지원

WebChat 사전 요구사항

  • OpenClaw Gateway 설치 및 실행 중
  • Gateway 인증 구성 완료 (token 또는 password 모드)
  • 최신 웹 브라우저 (Control UI) 또는 네이티브 macOS/iOS 클라이언트
  • Gateway WebSocket 포트에 대한 네트워크 접근 (기본값: 3000)

WebChat 빠른 설정

1

Gateway 시작

OpenClaw Gateway를 실행합니다. WebChat은 내장되어 있으므로 별도의 설치나 플러그인이 필요하지 않습니다. 'openclaw start'를 실행하여 Gateway 서비스를 시작합니다.

2

인증 구성

openclaw.json에서 gateway.auth.mode를 'token' 또는 'password' 인증으로 설정합니다. localhost를 포함한 모든 연결에 인증이 필수입니다.

3

WebChat 열기

브라우저의 Control UI 채팅 탭을 통해 WebChat 인터페이스에 접근하거나, 네이티브 macOS/iOS 클라이언트를 실행합니다. ws://localhost:3000 (또는 구성된 호스트와 포트)으로 Gateway에 연결합니다.

4

채팅 시작

테스트 메시지를 보내 연결을 확인합니다. AI 어시스턴트가 동일한 WebChat 세션을 통해 응답합니다. 대화 기록은 Gateway에서 관리되며 재연결 시에도 유지됩니다.

WebChat 구성 예시

config.json
{
  "gateway": {
    "port": 3000,
    "bind": "127.0.0.1",
    "auth": {
      "mode": "token",
      "token": "YOUR_SECRET_TOKEN"
    }
  }
}

WebChat 상세 문서

아키텍처 개요

WebChat은 세 가지 주요 작업을 통해 WebSocket 연결로 OpenClaw Gateway와 통신합니다: • chat.history — Gateway에서 대화 기록 조회 • chat.send — AI 어시스턴트에 사용자 메시지 전송 • chat.inject — 에이전트 실행을 트리거하지 않고 어시스턴트 노트를 대화 기록에 직접 추가하고 UI에 브로드캐스트 외부 서비스와 Webhook에 의존하는 다른 채널과 달리, WebChat은 Gateway에 완전히 내장되어 있습니다. 메시지가 인프라 외부로 나가지 않으며, WebSocket 연결은 UI 클라이언트와 Gateway 프로세스 간의 직접 연결입니다. 라우팅은 결정론적이므로 AI의 응답은 항상 대화를 시작한 WebChat 세션으로 반환됩니다.
WebChat은 외부 계정이나 API 키 없이 Gateway만으로 설정할 수 있어 가장 간단한 채널입니다.
chat.inject 작업은 AI 응답을 트리거하지 않고 대화에 시스템 노트나 컨텍스트를 추가할 때 유용합니다.

Gateway 인증

루프백(localhost)에서도 모든 WebChat 연결에 인증이 필요합니다. 이를 통해 AI 어시스턴트에 대한 무단 접근을 방지합니다. OpenClaw는 두 가지 인증 모드를 지원합니다: • token — WebSocket 핸드셰이크에서 전달되는 공유 비밀 토큰입니다. 프로그래밍 방식 접근 및 단일 사용자 설정에 적합합니다. • password — 비밀번호 기반 인증입니다. 각 사용자가 자신의 자격 증명을 가지는 다중 사용자 환경에 적합합니다. WebChat이 연결을 수락하려면 token 또는 password 중 하나 이상이 구성되어야 합니다. openclaw.json의 gateway.auth 설정에서 구성합니다.
openclaw.json
{
  "gateway": {
    "auth": {
      "mode": "token",
      "token": "a-strong-random-token-here"
    }
  }
}
localhost 연결에서도 인증은 필수입니다. 인증을 구성하지 않고 Gateway를 실행하지 마세요 — 해당 머신의 모든 프로세스가 AI 어시스턴트에 접근할 수 있습니다.

원격 접근

WebChat은 별도의 웹 서버 없이 원격 연결을 지원합니다. 두 가지 접근 방식을 권장합니다: • SSH 터널 — SSH를 통해 Gateway 포트를 포워딩합니다: ssh -L 3000:localhost:3000 user@remote-host. 이를 통해 Gateway가 원격 머신에서 실행되는 동안 로컬에서 WebChat에 접근할 수 있습니다. • Tailscale — Tailscale의 메시 VPN을 통해 디바이스를 연결합니다. 포트 포워딩이나 방화벽 구성 없이 Tailscale IP 주소로 Gateway에 접근할 수 있습니다. 원격 연결의 경우 대상 WebSocket URL과 인증 자격 증명으로 gateway.remote 설정을 구성합니다. 네이티브 클라이언트는 네트워크 상태가 변경되면 자동으로 재연결을 처리합니다.
openclaw.json
{
  "gateway": {
    "remote": {
      "url": "wss://your-remote-host:3000",
      "token": "YOUR_REMOTE_TOKEN"
    }
  }
}
SSH 터널링은 추가 소프트웨어 없이 원격 접근을 설정하는 가장 빠른 방법입니다 — Gateway 호스트에 SSH 접근이 가능한지만 확인하면 됩니다.
Tailscale은 포트 포워딩 없이 모든 디바이스에서 Gateway에 접근할 수 있는 제로 설정 VPN을 제공합니다.

세션 관리

WebChat은 Gateway에서 관리하는 세션을 사용하여 대화 컨텍스트를 유지합니다. 각 WebChat 연결은 대화 기록과 AI 컨텍스트를 저장하는 세션에 연결됩니다. 세션은 재연결 시에도 유지됩니다 — WebSocket이 끊어졌다가 다시 연결되면 대화가 중단된 지점부터 계속됩니다. chat.history 작업은 재연결 시 Gateway에서 전체 대화를 조회합니다. 세션 구성은 openclaw.json의 session.* 설정에서 관리되며, 스토리지 백엔드 및 기본 세션 키를 포함합니다.
대화 기록은 로컬에 저장되지 않고 Gateway에서 제공됩니다. 따라서 디바이스를 전환해도 동일한 대화를 이어갈 수 있습니다.
session.defaultKey를 사용하여 WebChat 대화에 일관된 세션 식별자를 지정할 수 있습니다.

읽기 전용 모드

Gateway에 연결할 수 없게 되면 WebChat은 자동으로 읽기 전용 모드로 전환됩니다. 이 상태에서는: • 이전 대화 기록은 계속 표시됩니다 • 새 메시지를 보낼 수 없습니다 • UI에 연결 해제 상태가 표시됩니다 • 백그라운드에서 자동 재연결을 시도합니다 Gateway가 다시 온라인 상태가 되면 WebChat이 자동으로 재연결되어 전체 기능이 복원됩니다. 모든 기록은 Gateway에서 제공되므로 대화 기록에서 메시지가 손실되지 않습니다.
읽기 전용 모드는 우아한 성능 저하입니다 — Gateway를 일시적으로 사용할 수 없는 동안에도 사용자는 이전 대화를 검토할 수 있습니다.

네이티브 클라이언트 기능

WebChat은 Apple 플랫폼에서 네이티브 SwiftUI 애플리케이션으로 구현되어 있습니다: • macOS — 키보드 단축키, 시스템 알림 및 메뉴 바 통합을 갖춘 완전한 데스크톱 경험 • iOS — 푸시 알림 및 백그라운드 새로고침을 지원하는 모바일 최적화 인터페이스 네이티브 구현은 임베디드 브라우저나 Electron 래퍼의 오버헤드 없이 반응성이 뛰어난 플랫폼 네이티브 경험을 제공합니다. 텍스트 렌더링, 스크롤링, 입력 처리 모두 네이티브 플랫폼 컴포넌트를 사용합니다. 다른 플랫폼(Windows, Linux, Android)에서는 최신 웹 브라우저의 Control UI 채팅 탭을 통해 WebChat에 접근할 수 있습니다.
네이티브 macOS/iOS 클라이언트는 시스템 알림, 키보드 단축키 등 플랫폼별 기능으로 최상의 경험을 제공합니다.
브라우저 기반 Control UI 채팅 탭은 모든 플랫폼에서 작동하며 동일한 핵심 기능을 제공합니다.

메시지 전달

WebChat은 긴 AI 응답에 대해 구성 가능한 청킹을 통해 WebSocket 연결로 메시지를 전달합니다: • textChunkLimit — 메시지 청크당 최대 문자 수 (기본값: 2000). 긴 응답은 자동으로 분할됩니다. • blockStreaming — 활성화하면 응답이 생성되는 동안 블록 기반 청크로 전송되어 실시간 피드백을 제공합니다. 메시지는 WebSocket을 통해 즉시 전달됩니다 — 폴링이나 Webhook 지연이 없습니다. 양방향 WebSocket 연결 덕분에 송수신이 모두 실시간으로 이루어집니다.
openclaw.json
{
  "channels": {
    "webchat": {
      "textChunkLimit": 2000,
      "blockStreaming": true
    }
  }
}

보안 모범 사례

WebChat 보안은 Gateway 인증 계층을 기반으로 합니다. 안전한 배포를 위해 다음 모범 사례를 따르세요: • 항상 인증 구성 — 익명 접근은 허용되지 않습니다 • TLS 암호화 사용 — 모든 원격 연결에 wss:// (WebSocket Secure)를 통해 연결합니다 • 바인드 주소 제한 — 로컬 전용 접근에는 gateway.bind: "127.0.0.1"을 사용하고, 리버스 프록시 뒤에 있지 않은 경우 0.0.0.0 바인딩을 피합니다 • 강력한 자격 증명 사용 — 랜덤 토큰이나 강력한 비밀번호를 생성합니다 • 리버스 프록시 — 프로덕션 배포에서는 TLS 종료를 수행하는 리버스 프록시(nginx, Caddy) 뒤에 Gateway를 배치합니다 동일 머신에서 리버스 프록시를 사용하는 경우 gateway.trustedProxies를 구성하여 올바른 클라이언트 IP 감지를 보장합니다.
TLS 암호화와 강력한 인증 없이 Gateway WebSocket 포트를 인터넷에 직접 노출하지 마세요. 프로덕션 배포에서는 TLS 종료를 수행하는 리버스 프록시를 사용하세요.

WebChat 구성 참조

gateway.port
Type: numberDefault: 3000

Gateway의 WebSocket 포트 번호

gateway.bind
Type: stringDefault: "127.0.0.1"

Gateway가 WebSocket 연결을 위해 바인딩하는 호스트 주소

gateway.auth.mode
Type: stringDefault: "token"

인증 모드: 공유 비밀에는 'token', 자격 증명 기반 인증에는 'password'

gateway.auth.token
Type: stringDefault: ""

WebSocket 인증용 공유 비밀 토큰

gateway.auth.password
Type: stringDefault: ""

WebSocket 인증용 비밀번호

gateway.remote.url
Type: stringDefault: ""

원격 Gateway WebSocket URL (예: wss://remote-host:3000)

gateway.remote.token
Type: stringDefault: ""

원격 Gateway 연결을 위한 인증 토큰

gateway.remote.password
Type: stringDefault: ""

원격 Gateway 연결을 위한 인증 비밀번호

session.defaultKey
Type: stringDefault: ""

WebChat 대화의 기본 세션 키

session.storage
Type: stringDefault: "memory"

세션 스토리지 백엔드 (memory, file, redis 등)

textChunkLimit
Type: numberDefault: 2000

발신 메시지 청크당 최대 문자 수

blockStreaming
Type: booleanDefault: false

실시간 피드백을 위해 생성 중 블록 기반 청크로 응답 전송

WebChat 자주 묻는 질문

WebChat 문제 해결

WebChat에 '연결 끊김'이 표시되고 재연결되지 않음

Gateway가 실행되고 있지 않거나, WebSocket 포트가 방화벽에 의해 차단되어 있습니다.

'openclaw status'로 Gateway가 실행 중인지 확인합니다. 구성된 gateway.port가 방화벽에 의해 차단되지 않았는지 확인합니다. gateway.bind가 클라이언트의 네트워크 주소에서의 연결을 허용하는지 확인합니다.
연결 시 인증 실패

토큰 또는 비밀번호가 Gateway 구성과 일치하지 않습니다.

gateway.auth.token 또는 gateway.auth.password가 클라이언트 자격 증명과 정확히 일치하는지 확인합니다. 뒤따르는 공백이나 인코딩 문제가 있는지 확인합니다. 인증 설정을 변경한 후 Gateway를 재시작합니다.
메시지는 전송되지만 AI 응답이 나타나지 않음

AI 에이전트가 구성되지 않았거나, AI 제공업체 API 키가 유효하지 않습니다.

Gateway 로그에서 오류를 확인합니다. openclaw.json에서 에이전트 구성을 확인합니다. AI 제공업체(예: OpenAI, Anthropic) API 키가 유효하고 사용 가능한 할당량이 있는지 확인합니다.
SSH 터널을 통한 원격 연결 실패

SSH 터널이 올바른 포트를 포워딩하지 않거나, Gateway가 예상 주소에서 수신 대기하고 있지 않습니다.

SSH 명령이 Gateway 포트와 일치하는지 확인합니다: ssh -L 3000:localhost:3000 user@host. 원격 머신에서 Gateway가 예상 포트에서 수신 대기하고 있는지 확인합니다. SSH 터널 접근을 위해 gateway.bind가 127.0.0.1로 설정되어 있는지 확인합니다.
재연결 후 채팅 기록이 비어 있음

연결 사이에 세션이 만료되었거나 삭제되었습니다.

openclaw.json에서 세션 구성 설정을 확인합니다. Gateway에 세션 지속성을 위한 충분한 스토리지가 있는지 확인합니다. 연결 간에 세션 키가 일치하는지 확인합니다.