모바일 기기의 ChatGPT, Claude로 내 컴퓨터 제어하기: BCD의 아키텍처, 권한 및 파일 연결 설계
요약
BCD는 ChatGPT나 Claude 같은 AI 앱이 휴대폰을 통해 원격으로 사용자의 컴퓨터에 접근하여 작업을 수행하게 하는 시스템입니다. 이 아키텍처는 MCP와 OAuth를 사용하여 보안 리레이를 거치며, 에이전트가 능동적으로 연결하는 방식으로 설계되었습니다. 또한, 예약 실행 기능과 파일 전송 시 하드 링크 및 스트리밍 방식을 도입하여 안정성과 보안을 강화했습니다.
핵심 포인트
- AI 앱이 원격으로 컴퓨터에 접근할 수 있게 하는 시스템 (BCD) 소개
- OAuth와 WebSocket 기반의 안전한 아키텍처 설계
- 기본적으로 읽기 전용이며, 모든 권한은 개별 활성화 필요
- 예약 실행 및 파일 연결 시 데이터 무결성 확보
외출했을 때 가장 흔하게 겪는 상황은 '그 파일이 집 컴퓨터에 있다'거나 '회사 Mac에서 테스트가 아직 안 돌았다'는 것입니다. 휴대폰으로 원격 데스크톱을 제어하는 것은 너무 어렵고, ChatGPT나 Claude에게 물어봐도 내 컴퓨터에 접근할 수가 없습니다. 그래서 제가 BCD를 만들었습니다. 이 시스템은 컴퓨터를 ChatGPT, Claude에 연결하여, 사용자가 휴대폰에서 한 마디만 하면 컴퓨터가 알아서 작업을 수행하고 결과를 보고해 주는 방식입니다.
이 글에서는 번체 중국어로 정리한 BCD의 아키텍처와 'AI가 컴퓨터에 접근하게 하는 것'에 대해 제가 구현한 보안 설계를 다룹니다.
아키텍처
휴대폰의 ChatGPT / Claude ──(MCP over HTTPS, OAuth)──▶ BCD relay ◀──(WebSocket, 컴퓨터에서 능동으로 연결)── 컴퓨터의 BCD agent
- 컴퓨터에 있는 에이전트(agent)가 WebSocket을 통해 리레이(relay)에 능동적으로 연결하므로, 포트를 열거나 라우터를 설정할 필요가 없습니다.
- AI 앱은 MCP(Model Context Protocol)를 통해 리레이에 접속하고, OAuth로 BCD 계정에 로그인합니다.
- 리레이는 도구 호출을 지정된 컴퓨터로 전달하고, 그 결과를 다시 AI에게 돌려줍니다. 하나의 계정으로 여러 대의 컴퓨터를 사용할 수 있으며, 이름으로 지정할 수 있습니다. 예: '사무실 Mac에서 테스트 실행'.
- 파일 내용은 실행 시에만 리레이 메모리를 거치며 저장되지 않습니다.
권한 설계
- 새로 추가된 컴퓨터는 기본적으로 읽기 전용(read-only)입니다. 파일 쓰기, 명령어 실행, 화면 조작, 클립보드 사용 등은 각 컴퓨터에서 개별적으로 활성화해야 합니다.
- 허용된 폴더만 접근할 수 있습니다. SSH 키나 BCD 자체의 인증 정보 같은 경로는 별도로 보호합니다.
- 파일을 열 때 먼저 파일 핸들(file handle)을 받아, 이 핸들을 이용해 실제로 열린 것이 허용 범위 내의 파일인지 확인하여, 검사 후 폴더가 symlink로 변경되는 TOCTOU 공격을 방지합니다.
- AI가 수정한 파일은 기록이 남아 있어 하나하나 복원할 수 있습니다.
- 팀과 공유하는 컴퓨터는 호출마다 팀 활동 기록에 남습니다: 누가, 어느 컴퓨터에서, 어떤 AI 앱으로, 어떤 도구를 사용했는지, 그리고 결과까지 모두 기록됩니다.
최근 추가된 두 가지 기능
예약 실행(Scheduling)
저장된 워크플로우(workflow)를 예약할 수 있습니다. 예를 들어 평일 매일 08:00에 실행되도록 설정할 수 있습니다 (시간대는 IANA 이름 사용, 예: Asia/Taipei). 예약은 리레이에 저장되며, 시간이 되면 리레이는 사용자 수동 실행과 동일한 권한으로 컴퓨터를 구동합니다. 워크플로우의 단계(step)만 컴퓨터에 존재합니다. 실행 실패나 시작 불가 시 이메일로 알림이 전송됩니다.
휴대폰 ↔ 컴퓨터 파일 연결
채팅에서 AI가 사진이나 PDF의 원본 바이트를 직접 전달할 수 없기 때문에, BCD는 링크 형태로 변경되었습니다:
- 다운로드 링크: 리레이가 1MB 단위로 컴퓨터로부터 데이터를 읽어와 휴대폰으로 스트리밍합니다. 전송 도중에 파일이 수정되면 전송을 중단하여 손상된 파일을 받는 것을 방지합니다.
- 업로드 링크: 휴대폰에서 선택한 파일은 4MB 단위로 분할되어 전송되며, 컴퓨터 측에서는 임시 파일(temporary file)로 먼저 저장한 후, 하드 링크(hard link)를 사용해 중복되지 않는 이름으로 저장하여 같은 이름의 파일을 덮어쓰지 않습니다.
- 링크 토큰은 해시(hash)만 저장하며, 기본적으로 1시간 후에 만료됩니다. 사용할 때마다 컴퓨터의 현재 권한을 재확인합니다.
설치
Mac, Linux:
curl -fsSL https://bcd.snack-wrap.com | bash
Windows (PowerShell, 시스템 관리자 권한 불필요):
irm https://bcd.snack-wrap.com/install.ps1 | iex
이후 Claude(설정 → 커넥터 → 사용자 정의 연결 추가) 또는 ChatGPT(데스크톱 웹에서 개발자 모드 활성화, 유료 플랜 필요)에 추가합니다:
한 대의 컴퓨터는 무료이며, 매월 호출 횟수 제한이 없습니다. 중국어 설명 페이지: https://bcd.snack-wrap.com/zh-tw?utm_source=devto&utm_medium=article&utm_campaign=tw_launch
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기