Claude Code를 OpenClaw처럼 쓰는 법 — legend-agent 실전기

OpenClaw, Hermes Agent 같은 Claw류 에이전트가 쏟아지고 있다. 그런데 막상 써보려 하면 항상 걸리는 게 있다. 바로 이미 Claude Max를 구독하고 있는데도 불구하고 Claude OAuth 인증을 쓸 수 없다는 점이다. 결국 API 키를 따로 발급받아 토큰 비용을 이중으로 쓰거나, 기능이 좋아도 실사용은 망설이게 된다.

그래서 역발상으로 접근했다. Claude Code 자체를 OpenClaw처럼 만들면 되지 않을까. 마침 2026년 3월 Anthropic이 공식 Claude Code Channels를 발표했다. 이 기능을 쓰면 터미널 밖에서 메시징 앱으로 Claude Code 세션에 지시를 넣을 수 있다. OAuth는 그대로 쓰면서, 어디서든 부를 수 있는 에이전트를 만들 수 있다는 뜻이다.

Use channels to push messages, alerts, and webhooks into your Claude Code session from an MCP server. Forward CI results, chat messages, and monito...
출처: Push events into a running session with channels – Claude Code Docs

핵심 요약

  • Claude Code Channels는 v2.1.80+에서 공식 지원. MCP 서버가 세션에 이벤트를 push하는 구조다.
  • Telegram은 설정 5분으로 빠르지만 불안정, iMessage는 안정적이지만 self-chat 중복 메시지 문제, Discord는 상대적으로 안정적이여서 tmux 조합으로 가장 만족스럽게 사용 가능
  • OpenClaw처럼 쓰려면 single-agent 구성(CLAUDE.md 기반 위임 체계) + Channels 연결 두 축이 필요하다.

왜 Claude Code를 OpenClaw처럼 써야 할까

OpenClaw는 멀티 채널 통합과 크론 스케줄링이 강점이고, Hermes Agent는 SQLite FTS5 기반의 장기 기억에 특화돼 있다. 반면 The New Stack 비교 분석에 따르면 Claude Code는 “codebase에 밀착된 pair-programmer” 포지션이다. 세 도구의 철학이 다르다.

OpenClaw and Hermes Agent take different approaches to persistent AI coding assistants. One prioritizes ecosystem reach, the other deep learning ov...
출처: OpenClaw vs. Hermes Agent: The race to build AI assistants that never forget

문제는 OpenClaw, Hermes 모두 Claude OAuth를 지원하지 않는다는 점이다. 이미 Pro/Max 요금제를 쓰고 있다면 굳이 API 키를 별도 발급받아 토큰을 이중 결제할 이유가 없다. Claude Code Channels는 이 지점을 정확히 겨눈다.

VentureBeat는 이 기능을 “OpenClaw killer”로 포지셔닝했고, Anthropic은 (1) 외부 인바운드 포트 미노출, (2) Anthropic-maintained allowlist 기반 플러그인, (3) 페어링 코드로 특정 사용자 ID에 잠금이라는 세 축으로 차별화했다.

The consensus among early adopters is that Anthropic has successfully internalized the most desirable features of the open-source movement—multi-ch...
출처: Anthropic just shipped an OpenClaw killer called Claude Code Channels, letting you message it over Telegram and Discord

OpenClaw처럼 만들기 위한 2가지 축

Claude Code를 OpenClaw처럼 쓰려면 두 가지가 필요하다.

첫째, OpenClaw와 같은 single-agent 구성. 기존 프로젝트가 흩어져 있으면 메시지로 지시를 넣을 때마다 어느 프로젝트에서 작업해야 하는지 매번 알려줘야 한다. 이걸 해결하려면 “대표 에이전트”가 있어야 한다.

둘째, 메시징 채널 연동. 터미널 앞에 없을 때도 세션을 건드릴 수 있는 통로가 필요하다. Telegram, Discord, iMessage 중 어느 것이 실제로 쓸만한지는 뒤에서 다룬다.

single-agent 구성: legend-agent 만들기

legend-agent라는 별도 프로젝트를 파서 대표 에이전트로 만들었다. 이름은 유퀴즈에 안정환이 나온 걸 보다가 그냥 떠올랐다. 구성은 간단하다.

파일역할
PERSONA.md에이전트 성격·톤·판단 기준
MEMORY.md장기 기억 인덱스 (Hermes Agent 스타일)
CLAUDE.md기존 프로젝트 리스트 + 위임 규칙

핵심은 CLAUDE.md의 위임 규칙이다. “이런 요청이 들어오면 ai-sensing-team 프로젝트로 이관해서 실행해라”, “블로그 작성은 blog-writer 에이전트로 위임해라” 같은 식이다. 대표 에이전트는 라우터 역할만 하고, 실제 작업은 기존에 구축해둔 sub-agent가 수행한다. OpenClaw가 여러 스킬을 하나의 runtime에서 오케스트레이션하는 구조를 Claude Code의 프로젝트 위임 체계로 흉내 낸 셈이다.

이 방식은 생각보다 강력하다. 이미 Claude Code를 많이 사용한 사용자라면 그야말로, 최고일 수밖에 없다. 그 이유는 그동한 만들어온 모든 Claude Code 프로젝트를 위임해서 활용할 수 있기 때문이다. 이점은 OpenClaw와 차별화 되는 포인트 일 수 도 있지 않을까 생각한다.

3개 채널 실제 써보고 비교한 결론

Channels는 연결 프로토콜이 셋 다 다르다. 겉보기엔 비슷해 보여도 실사용 안정성은 차이가 상당히 크다.

채널프로토콜설정 시간안정성
TelegramBot API long polling~5분불안정 (세션 재연결 잦음)
iMessagechat.db 폴링 + AppleScript~3분 (self-chat)안정적이나 중복 메시지
DiscordGateway WebSocket~10분가장 안정적

Telegram: 짜릿한 첫인상, 그러나 불안정

제일 먼저 시도한 건 Telegram이었다. BotFather로 토큰 받고 /plugin install telegram@claude-plugins-official 치면 끝이다. 설정 직후 처음 메시지가 짜릿하게 들어왔을 때는 “이거다” 싶었다.

그런데 기쁨은 오래 가지 않았다. MCP 재연결이 계속 일어나고 세션을 새로 만들어야 하는 상황이 반복됐다. 원인을 추적해보니 Bot API long polling 자체의 특성이다. 세션이 잠깐이라도 끊기면 그 사이 메시지는 영구 소실된다. Anthropic 문서에도 명시돼 있다 — “the bot only sees messages as they arrive”. 히스토리 복구 메커니즘도 없다.

모바일 원격 한두 번 쓸 거라면 괜찮다. 상시 가용성이 필요하면 부적합하다.

대답 좀 해주라…. 텔레그램에서 아무리 불러도 대답없는 너

iMessage: 안정적이지만 self-chat 중복 문제

두 번째는 iMessage였다. 가장 빠르게 설정됐다. BotFather 같은 외부 토큰 발급 절차가 없다. macOS Full Disk Access만 주면 chat.db를 직접 폴링한다. self-chat(자기 자신에게 보내는 대화)은 기본 allowlist에 들어가서 /imessage:access 명령도 거의 필요 없다.

문제는 self-chat 방식 특유의 중복이다. 내가 보낸 메시지 2개, Claude 응답 2개 이런 식으로 모든 메시지가 두 번씩 올라왔다. 화면에 동일한 메시지가 두 줄씩 찍히는 걸 계속 봐야 한다. 참고 쓰라면 쓸 수 있지만 마음에 안 든다.

self-chat을 피하려면 두 가지 방법이 있다:

  1. 별도 Apple ID 생성 → allowlist에 추가 → 폰이 하나 더 필요
  2. 맥미니 구매 후 새 계정으로 구축 → 기존 내 계정을 allowlist에 추가

둘 다 비용이 들고 결국 애플 계정을 분리해야한다는 치명적인 단점이 생긴다

셀프 챗으로 동작하니 반복적으로 응답이 옴, 은근 중복이 짜증난다

Discord: tmux와 조합하면 대만족

마지막 시도는 Discord였다. 그야말로 대만족이었다. 처음 설정이 조금 까다롭다. Developer Portal에서 봇 앱 만들고, Message Content Intent 켜고, 서버에 초대한 뒤 DM으로 페어링하는 과정이 필요하다. 약 10분 정도.

한번 연결해두니 가장 만족스러운 형태로 동작했다. Gateway WebSocket 상시 연결 덕에 지연이 수백 ms 수준이고, fetch_messages로 최대 100개 히스토리를 복구할 수 있다. 세션이 잠깐 끊겨도 “catching up” 워크플로우가 가능하다는 뜻이다.

핵심은 tmux와의 궁합이다. tmux + Claude Code 가이드에 따르면 tmux의 killer feature는 세션 지속성이다. 다음 한 줄이 전부다.

tmux new-session -d -s legend \
  "claude --channels plugin:discord@claude-plugins-official"

이렇게 백그라운드에서 계속 돌려두면 노트북을 닫아도, SSH가 끊겨도 세션이 유지된다. Discord로 지시를 넣으면 그 tmux 세션이 받아서 처리한다. 나는 이 조합을 찾고 나서야 Claude Code를 진짜 OpenClaw처럼 쓴다는 느낌을 받았다.

Discord로 연결한 Claude Code: legent-agent, 속이 다 후련하다. (아직까지 끊긴 적이 없다)

왜 세 채널의 차이가 이렇게 클까

프로토콜 계층을 들여다보면 차이가 명확해진다.

Telegram의 long polling은 클라이언트가 서버에 계속 “새 메시지 있어?”를 묻는 구조다. 세션이 살아있어야만 폴링이 돌아가고, 폴링이 멎으면 그 사이 메시지는 복구 불가다. 글로벌 네트워크 홉까지 거쳐야 해서 지연도 크다.

iMessage의 chat.db 폴링은 1초 주기로 로컬 SQLite를 쿼리한다. Apple 비공개 API인 osascript로 아웃바운드를 보낸다. 로컬 자기완결이라 외부 서버 의존이 없어 프라이버시는 좋지만, AppleScript 한계로 tapback, edit, thread 회신이 모두 안 된다. 그리고 self-chat은 구조적으로 메시지를 두 번씩 받는다.

Discord의 Gateway WebSocket은 상시 양방향 연결이다. 메시지가 오면 push로 즉시 도달한다. 폴링 주기 자체가 없다. Discord rate limit이 50 req/sec per token으로 여유가 있고, fetch_messages로 최대 100개 히스토리를 복구할 수 있다. 연결이 끊겨도 WebSocket이 자동 재연결을 시도한다.

결국 WebSocket 상시 연결이 메시지 push 워크플로우에 가장 적합하다는 게 구조적 결론이다. MindStudio 비교 분석도 같은 맥락을 지적한다.

legend-agent 운영에서 배운 것

OpenClaw처럼 쓰는 데 성공했지만 아직 OpenClaw 만큼의 퍼포먼스는 나오지 않고 있다. 내가 기존에 사용하던 Agent 프로젝트들을 Delegation 해서 사용하는 것은 그야말로 최고였다. 하지만 아직 OpenClaw처럼 Single 에이전트로서의 역할을 다하기에는 부족한 점이 많았다. (Skill download 등등, 앞으로 개선을 해보려고한다.)

토큰 소비가 상당하다. 대표 에이전트가 매번 프로젝트 구조를 컨텍스트에 로드하고 위임 판단을 하다 보니 기본 소모가 크다. 개선하려면 위임 판단을 간단한 rule-based layer로 빼고, 실제 작업만 Claude가 처리하도록 해야 할 것 같다.

legend-agent의 MEMORY.md도 보완 필요하다. 지금은 단순 인덱스에 가깝다. Hermes Agent의 FTS5 + LLM 요약 방식을 참고해 세션별 요약을 자동 축적하는 구조로 업그레이드할 계획이다.

그리고 24/7 가용성 측면에서는 macOS 재부팅 시 자동 복구가 취약하다. launchd 데몬이나 caffeinate로 상시 실행을 보장하는 세팅이 추가로 필요하다.

조합 전략 정리

실전 경험과 리서치를 정리하면 이렇게 된다.

상황권장 조합이유
혼자 쓰는 개인 에이전트Discord + tmux안정성 최상, 세션 지속
모바일에서 간단 지시Telegram5분 설정, iOS/Android 범용
macOS 프라이버시 중시iMessage (v2.1.81+ 패치 후)로컬 E2EE, 외부 서버 미경유
팀 온콜·인시던트Discord 길드 채널스레드로 병렬 대응
CI/모니터링 통합커스텀 webhook 채널이벤트 자동 수신

한 문장으로 말하면, legend-agent + Discord + tmux 조합이 현재로서는 Claude Code를 OpenClaw처럼 쓰는 가장 현실적인 답이라고 본다.

마무리

아직 Channels는 research preview고, 보안 취약점 이슈도 몇 건 남아있다. 그래도 Claude OAuth를 그대로 활용하면서 메시징 앱으로 에이전트를 부를 수 있다는 점 하나만으로도 충분히 써볼 가치가 있다. 특히 기존에 Claude Code로 여러 프로젝트를 굴리고 있다면 legend-agent 같은 대표 에이전트 하나만 추가로 파면 되니 진입장벽도 낮다.

Claude Code를 진짜 OpenClaw처럼 만들어가는 여정은 이제 시작이다. 같은 고민을 하는 분이 있다면 Discord 조합부터 시도해보길 추천한다. 혹시 다른 운영 팁이나 legend-agent 구성 노하우가 있다면 댓글로 알려주면 좋겠다.


참고 자료