remotebridge
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 8 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in app/src/db/history.smoke.ts
- exec() — Shell command execution in app/src/db/history.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
내 PC의 Claude Code·Codex를 폰에서 원격 조작 — Claude=신중 엔진(모든 동작 [허용]/[거절] 승인 게이트)·Codex=빠른 작업 엔진, 하드라인 차단·허용 폴더 제한·비밀값(.env) 관리·세션 기록·모델 선택·버전/업데이트 자가진단(doctor), Docker/VPN/API키 불필요 (Windows·1인 로컬)
RemoteBridge
내 PC의 AI 코딩 도구(Claude Code · Codex)를 밖에서 폰으로 안전하게 조작하는 1인용 도구.
텔레그램 봇 하나로 두 엔진을 명령·전환·승인까지 완전 원격. Docker·VPN·API 키 불필요, 비용 0.
🇰🇷 한국어 README (기본) · 🇬🇧 English
🐣 컴퓨터·폰·AI가 처음이라 막막하다면 → 가장 쉬운 완전 왕초보 가이드(EASY-START)부터 보세요(따라만 하면 됩니다).
이게 뭐예요? (왕초보 설명)
집·사무실 컴퓨터에서 일하는 AI(Claude Code·Codex)를, 카페·이동 중에 내 폰으로 들여다보고 시키는 "안전한 원격 창문" 입니다.
AI가 위험한 명령(삭제·덮어쓰기 등) 앞에서 멈추면 폰으로 [허용]/[거절] 한 번만 누르면 됩니다.
ℹ️ 비슷한 무료 도구(Happy·공식 앱)도 있어요. RemoteBridge의 값은 ① Claude·Codex를 봇 하나로 함께 ② 알림을 넘어 명령·전환·조종까지 ③ 내 코드가 외부 서버를 안 거치게(무릴레이) ④ 계정·지역 제한 없이 — 이게 필요할 때입니다.
핵심 기능
- 두 엔진 한 봇/웹: Claude Code·Codex 둘 다 새 세션·명령·전환.
- 봇 완전 제어: 텔레그램
/new claude|codex·명령·도구 전환·위험 승인까지 봇 안에서. - 안전 승인 게이트: 위험 동작은 사람 승인 필수, 무응답 5분(기본) → 자동 거절(fail-safe). 이 시간은 봇
/timeout으로 조절(30초~24시간). - 하드라인 차단:
rm -rf /·format C:·포크밤 등 파국 + 시스템/자격증명 보호(Windows·System32·Program Files·레지스트리·.ssh/.codex등에 쓰기·삭제 시도 차단, 읽기·일반 폴더는 통과) — 승인으로도 못 푸는 차단. 시스템 폴더는 허용 목록에도 못 넣음. - 페어링 우선 방어: 등록 안 된 기기는 로그인 화면조차 안 보임 + 비밀번호 무차별 잠금.
- 무VPN·무릴레이·무키: cloudflared 무료 터널만, 구독 로그인 그대로(API 키 0), 코드는 PC 밖으로 안 나감.
- 세션 기록 영속: 명령·승인 결정·메시지를 로컬 SQLite에 남겨 — 서버를 껐다 켜도 봇
/history·/log로 "내 AI가 무엇을 했고 내가 무엇을 허용/거절했는지" 다시 조회.
빠른 시작 (3단계)
0. 한 번만 준비
- PC에 Node.js 22+ 설치 — nodejs.org. 확인:
node -v→v22.x이상. - AI CLI 설치 + 로그인(둘 중 쓸 것만 있어도 됨):
claude(Claude Code) /codex(Codex) CLI가 아직 없으면 각 도구 공식 안내대로 먼저 설치·로그인하세요. 설치됐으면 확인 —codex login status(→Logged in using ChatGPT) 또는claude -p "hi"(답하면 OK). API 키는 필요 없습니다(구독 로그인 그대로 사용). - 의존성 설치(앱 폴더에서 1회):
cd app npm install
1. 켜기
가장 쉬운 방법: app\start.bat 더블클릭(Node·의존성 자동 확인 → 자동 시작, 명령 입력 0). 또는 명령으로:
cd app
npm start
(부팅 시 자동 시작을 원하면 app\autostart-on.bat — 끄려면 autostart-off.bat. ⚠️ 자동실행은 공개 주소를 상시 노출하니 안 쓸 땐 끄세요.)
📦 폴더 위치·이름 자유: 이 프로젝트 폴더는 어느 드라이브·어떤 폴더 이름에 둬도, 다른 곳으로 옮겨도 그대로 작동해요(설정을 설치 위치 기준으로 읽음 — 현재 폴더 무관). 단, 자동 시작을 켠 뒤 폴더를 옮겼다면 바로가기 경로가 어긋나므로
autostart-on.bat만 한 번 다시 실행하세요.
콘솔에 등록 코드 + 공개 주소(https://…trycloudflare.com) 가 뜹니다.
(로컬만 테스트: NO_TUNNEL=1을 환경변수로 두면 http://127.0.0.1:8770)
🟢 이 콘솔 창을 닫지 마세요. RemoteBridge는 클라우드가 아니라 내 PC에서 도는 프로그램이라, 이 창이 켜져 있는 동안에만 폰 접속도 텔레그램 봇도 작동합니다. 창을 닫거나 Ctrl+C 하거나 PC가 절전·종료되면 봇도 함께 멈춥니다(봇이 응답 없으면 → 서버가 꺼진 것). 최소화(_)는 OK.
2. 폰으로 접속
공개 주소 열기 → 등록 코드 입력(기기 등록) → 비밀번호 로그인 → 도구(Codex/Claude)·작업 폴더 선택 → 명령 → 위험하면 [허용]/[거절].
📱 따라 하기 쉬운 전체 안내: app/WALKTHROUGH.md (설치봇 명령어문제 해결 A-Z).
텔레그램 봇 명령어 (메인 사용법)
봇 토큰을 설정(아래 "환경 변수" + KEYS_GUIDE)하면, 텔레그램에서 봇에게:
| 보내는 것 | 하는 일 |
|---|---|
/new (또는 /new codex·/new claude) |
새 세션 시작. /new만 보내면 [🤖클로드코드][⚡Codex] 버튼으로 탭 선택(타이핑 0) |
/cd (또는 /cd <폴더경로>) |
새 세션의 작업 폴더 바꾸기(허용 폴더 안에서만, 다음 /new부터). /cd만 보내면 허용폴더 버튼으로 탭 전환 |
(그냥 텍스트, 예: list files) |
현재 세션에 명령 전달 |
| [✅허용] / [⛔거절] 버튼 | 위험 동작 승인/차단 (또는 /approve · /deny) |
/status |
한눈 요약 — 현재 엔진·작업 폴더·자동거절 시간·세션 수 |
/history |
지난 세션 목록(서버 껐다 켜도 남음) |
/log |
현재 세션 최근 기록(명령·승인 결정, 시간순) |
/sessions |
세션 목록을 버튼으로 띄워 탭 한 번에 전환(클로드코드↔Codex, 새로 안 만들고 오감) |
/handoff codex · /handoff claude · /handoff |
같은 폴더 + 직전 작업 요약을 들고 다른 엔진으로 이어가기(claude↔codex 갈아타며 같은 프로젝트 작업). 그냥 /handoff = 반대 엔진 |
/doctor |
엔진(Claude·Codex) 버전·안전 점검 — CLI 업데이트로 승인 게이트가 조용히 깨지지 않았는지 확인. + codex 새 권장 모델(이사) 안내 · claude/codex 프로그램 새 버전이 나오면 "업데이트 가능" 안내(자동 설치는 안 함 — 업데이트 후 npm run doctor로 게이트 재확인) |
/timeout |
자동거절 시간 변경 — /timeout 만 보내면 버튼[2·5·10·30분 / 1·2·6·24시간]이 떠서 탭 한 번으로 변경(타이핑 0). 직접 입력도 가능: /timeout 600·/timeout 5m·/timeout 2h(범위 30초~24시간) |
/model |
엔진별 모델 선택 — /model 만 보내면 버튼([Claude opus·sonnet·haiku·기본][Codex 기본·gpt-5.5·gpt-5.4·gpt-5.4-mini·내가 추가한 모델])이 떠요. 직접: /model claude opus·/model codex <이름>·/model claude 기본. 다음 /new부터 적용(미지정=엔진 기본). Claude 별칭(opus/sonnet/haiku)은 항상 최신 |
/model add·/model remove |
버튼에 띄울 모델 목록 관리(새 모델 나오면 한 줄 추가) — /model add codex gpt-5.5·/model remove codex gpt-5.5. 모델 이름은 안전 검증(영문·숫자·.·-·_만 — 주입 차단) |
/stop |
중단 요청(현재 버전은 강제중단 대신 승인 거절로 막음) |
/help · /start |
봇 안에서 전체 명령어 보기(매번 GitHub 확인 불필요) |
💡 명령어를 까먹어도 OK: 텔레그램 입력창의
/버튼(≡ 명령 메뉴) 을 누르면 등록된 명령이 뜨고,/help를 보내면 전체 목록을 봇이 답해줍니다.
📖 각 명령을 보내면 봇이 어떻게 답하는지(구체 예시) → app/WALKTHROUGH.md §3.
⚠️ 봇은start.bat서버가 켜져 있을 때만 응답합니다(봇이 곧 그 서버). 무응답이면 서버 창부터 확인. 봇 메시지의 비밀값은 자동 마스킹됩니다.
🔒 허용 폴더 관리 — AI가 만질 수 있는 폴더 정하기 (PC에서만)
AI는 여기서 정한 폴더 안에서만 파일을 읽고·고치고·지울 수 있어요. 그 밖은 거부됩니다(폰을 잃어버려도 남이 아무 폴더나 못 열게 하는 핵심 방어). 이 목록은 보안 울타리라 폰이 아니라 PC에서만 바꿉니다.
1) 여는 법
PC에서 app\manage-folders.bat 더블클릭 → 버튼 창이 떠요. (창을 못 띄우는 환경이면 자동으로 글자 메뉴로 바뀌니 먹통 없음.)
창 구성: 현재 허용 폴더 목록(각 줄에 "하위 N개 포함" 표시) · 위쪽 경로 붙여넣기 칸 · [폴더 찾아서 추가] · [선택 제거] · [닫기].
2) 폴더 추가 — 두 가지 방법
- 경로 붙여넣기(가장 빠름): 윈도우 탐색기에서 폴더를 Shift+우클릭 → "경로로 복사"(또는 주소창에서 복사) → 창의 칸에 붙여넣고 [경로로 추가] (또는 Enter).
- "경로로 복사"가 붙이는 따옴표(
"…")는 자동 정리되니 그대로 붙여도 돼요.
- "경로로 복사"가 붙이는 따옴표(
- 폴더 찾아서 추가: [폴더 찾아서 추가] → 폴더를 클릭해 고르기(타이핑 0).
📁 추가하면 그 폴더 + 하위 폴더가 전부 열려요. 예:
D:\AI_Dev_Work\내프로젝트를 넣으면 그 안의 모든 하위 폴더까지 AI가 작업 가능. 추가할 때 "하위 N개 포함" 으로 범위를 미리 보여줍니다.
3) 안전 가드 (실수·위험 자동 차단)
- 시스템 폴더 차단:
C:\Windows·Program Files·.ssh·.codex같은 폴더는 추가 자체가 거부. - 드라이브 전체 차단:
D:\·C:\처럼 드라이브 통째는 너무 넓어 거부(특정 작업 폴더를 고르라고 안내). - 너무 넓은 폴더 확인: 홈 폴더(
C:\Users\내계정)나 하위가 아주 많은 폴더(프로젝트 모음 등) 는 추가 전에 ⚠️ "그래도 추가할까요?"를 물어요 — 여기서 [하위 폴더 다시 고르기] 로 더 좁은 폴더를 고를 수 있어요. 이미 넓게 들어간 폴더는 목록에 [!] 로 표시돼 바로 제거 가능.
4) 제거 / 즉시 적용
- 제거: 목록에서 폴더를 고르고 [선택 제거] → 확인.
- 즉시 적용: 서버(
start.bat)가 켜져 있으면 추가/제거가 바로 반영돼요(재시작 불필요·진행 중 작업 안 끊김). 곧바로 봇에서/cd <그 폴더>로 옮겨 작업 가능.
직접 편집을 원하면
app\.env.local의RB_ALLOWED_ROOTS=D:\일감;D:\실험처럼 세미콜론으로 적어도 돼요.
환경 변수
| 변수 | 기본값 | 설명 |
|---|---|---|
MASTER_PASSWORD |
첫 실행 때만 사용 | 마스터 비밀번호(8자 이상). 이후 SQLite에 해시로 저장 |
PORT |
8770 |
로컬 서버 포트 |
NO_TUNNEL |
(없음) | 1이면 터널 없이 localhost만 |
RB_ALLOWED_ROOTS |
현재 폴더 | AI가 작업할 수 있는 폴더(세미콜론 구분). 밖은 거부. 쉽게 관리: PC에서 manage-folders.bat 더블클릭(경로 붙여넣기/폴더 찾기). PC에서만(보안) → 위 "허용 폴더 관리" 참고 |
TELEGRAM_BOT_TOKEN |
(없음) | 봇 활성화 시(@BotFather) |
TELEGRAM_CHAT_IDS |
(없음) | 봇에 응답 허용할 내 chat ID(쉼표 구분) |
RB_DATA_DIR |
app/data |
SQLite 저장 폴더(비번 해시·세션 기록) |
RB_HOST |
127.0.0.1 |
서버 바인딩 주소(보통 그대로 두세요) |
RB_PAIRING_TTL_MS |
600000(10분) |
기기 등록 코드 유효시간(밀리초) |
RB_NOTIFY_TOPIC |
(없음) | 터널 주소가 바뀌면 ntfy.sh/<토픽> 으로 알림(선택·고급) |
RB_APPROVAL_TIMEOUT_SEC |
300(5분) |
승인 무응답 시 자동 거절까지 시간(초). 봇 /timeout으로도 바꿈(저장=data/). 범위 30~86400(24시간) |
⚠️ 비밀값은
app/.env.local에 저장하고 절대 Git에 올리지 마세요(이미.gitignore처리됨).
🔑 키·비밀번호·봇 토큰 추가/수정/교체/제거가 처음이면 → app/KEYS_GUIDE.md (왕초보 단계형 가이드 · API 키는 불필요합니다).
텔레그램 봇 토큰 넣기 · 바꾸기 · 빼기 (선택 — 봇으로 쓸 때)
🖱️ 가장 쉬운 길:
app\manage-env.bat더블클릭 — 버튼으로 토큰·chat ID·포트·비밀번호 넣기/바꾸기/빼기(형식검증으로 오타 차단·저장 전 자동 백업·비밀값 마스킹·PC 전용). 아래는 직접 편집하고 싶을 때.
app\.env.local 을 메모장으로 열어 아래 두 줄을 적고 저장 → 서버 재시작(Ctrl+C → 다시 start.bat):
TELEGRAM_BOT_TOKEN=8123456789:AAE... # 텔레그램 @BotFather → /newbot 에서 받기
TELEGRAM_CHAT_IDS=123456789 # 텔레그램 @userinfobot 에서 받기(내 chat ID)
- 수정·교체: 위 토큰 값을 새 것으로 바꾸고 저장 → 재시작.
- 제거: 두 줄을 지우고(또는 값 비우고) 재시작 → 봇 비활성(웹 화면은 그대로 사용).
- ⚠️ 토큰이 노출되면(스크린샷·복사 등) 즉시 텔레그램 @BotFather
/revoke로 옛 토큰을 무효화하고 새 토큰으로 교체하세요.
그림처럼 따라 하는 전체 단계(비밀번호 변경·오류 대처 포함) → app/KEYS_GUIDE.md
테스트 / 빌드
- 타입 검사:
npm run typecheck - 빌드: 별도 빌드 없음 — Node 22의 네이티브 TypeScript 실행(tsx/esbuild 불필요).
- 엔진 업데이트 점검:
npm run doctor— Claude·Codex 버전 감지 + 안전 게이트 라이브 재확인(거절=차단/허용=실행) + .env 건강검진(토큰·chatID·포트 형식·인코딩(BOM)·PORT 충돌을 비밀값 노출 없이 진단). 빠르게 버전만:npm run doctor quick(env 점검은 항상 포함). CLI가 업데이트되면 켤 때 자동으로 "재확인 권장" 안내가 뜨고(봇/doctor로도 확인),doctor가 통과하면 그 버전을 "확인됨"으로 기록해 조용해집니다. - 자동 검증(스모크): 39종. 빠른 것(외부 불필요):
실제 CLI 호출(느림·구독 사용):npm run smoke:auth # 비번·페어링·잠금·fail-safe npm run smoke:hardline # 파국 명령 차단 npm run smoke:paths # 허용 루트 가드 npm run smoke:telegram # 봇 명령·마스킹 npm run smoke:folders # 허용 폴더 추가/제거·넓은폴더 가드 npm run smoke:versions # 엔진 버전 감지·변화 판정 npm run smoke:env-config # .env 형식·인코딩(BOM)·PORT 충돌 진단smoke:engine(Codex)·smoke:claude·smoke:server·smoke:webclaude등.실 CLI 스모크는 하나씩 돌리는 걸 권장(여러 개 연속 실행 시 일시적 부하로 실패할 수 있음).
보안 주의사항 (꼭)
- 공개 주소(터널 URL)를 SNS·메신저에 올리지 마세요.
- 비밀번호는 길고 추측 어렵게, 첫 실행 전
MASTER_PASSWORD로 바꾸세요. - 첫 실험은 빈 폴더로(중요 코드 폴더 금지).
- 폰 분실 시 다른 기기 로그인 → ⚙ 기기 관리 → [폐기].
- 봇 토큰이 노출되면 즉시 텔레그램 @BotFather
/revoke로 무효화 후 새 토큰으로 교체(위 "텔레그램 봇 토큰" 참고). - 세션 기록(
app/data/history.sqlite)에는 명령·출력 일부가 남아요 —data폴더(비번 해시도 있음)는 공유하지 말고 PC에 안전히 두세요. - 안 쓸 땐 Ctrl+C로 끄세요(공개 URL 노출 면적 최소화).
자주 막히는 곳
| 증상 | 해결 |
|---|---|
| 봇/명령이 전혀 안 먹힘 | 거의 항상 서버가 꺼진 것 — start.bat 콘솔 창이 켜져 있는지 확인하고, 없으면 다시 켜고 닫지 마세요([telegram] 봇 활성 표시 확인). 봇은 이 서버 안에서 돕니다 |
| 토큰 넣었는데 봇이 안 켜짐 | npm run doctor 로 .env 점검 — 토큰·chat ID는 둘 다 필요하고 형식이 맞아야 해요. 켤 때 ⚠️ env 점검 배너가 뜨면 그 안내를 따르세요(비밀값은 가려져 표시됨) |
| 공개 주소 안 보임 | 인터넷 확인. 급하면 NO_TUNNEL=1로 로컬 테스트 |
| "코드가 틀렸거나 만료됨" | 코드는 10분·1회용 → Ctrl+C 후 재시작해 새 코드 |
| "허용된 작업 폴더 범위 밖" | manage-folders.bat 더블클릭 → 경로 붙여넣기 또는 [폴더 찾아서 추가]로 그 폴더 추가(서버 켜져 있으면 즉시 적용·재시작 불필요) |
| Claude 세션이 ~10초 느림 | 정상(자식 claude 시작 훅). 기다리면 됨 |
| 폰에서 "연결 끊김" | 잠깐 끊겨도 자동으로 다시 연결돼요(최대 10회 재시도 + 진행 중이던 세션 화면 복원). 계속 끊기면 신호가 약한 것 → 자동 재시도가 멈추면 새로고침 후 다시 로그인(기기 등록은 유지됨) |
| 승인 버튼을 눌러도 반응 없음 | 승인은 기본 5분 무응답이면 자동 거절돼요(시간 지난 카드는 자동으로 사라짐). 너무 짧으면 봇 /timeout 600(=10분) 처럼 늘리세요 → 명령을 다시 보내고 카드가 뜨면 누르기 |
프로젝트 구조
.PRD/ 설계 문서(PRD)
app/
src/
auth/ 비밀번호·페어링·잠금
db/ SQLite 저장소
engine/ Codex(app-server) · Claude(PreToolUse 훅) 엔진
gateway/ 텔레그램 봇 어댑터
safety/ 하드라인 차단
server/ Fastify + WebSocket + 웹 UI
tunnel/ cloudflared 관리
WALKTHROUGH.md 첫 사용 / 실폰 런북
VERIFICATION_STATUS.md 검증 원장(무엇이 진짜 검증됐는지)
spike/ 기술 검증 기록(Claude 승인 가로채기 등)
상태 (정직)
- 자동 검증 300+개 단언 + 타입 검사 통과(보안·엔진·서버·봇·복구·웹UI·세션기록).
- ⬜ 미검증(사용자 영역): 실제 폰 1회 종단 테스트, macOS·Linux 실기, 실제 봇 토큰 e2e.
- 세션 활동 기록(명령·승인 결정·메시지)은 로컬 SQLite에 영속 — 서버 재시작 후에도 조회 API로 다시 봄(
smoke:history/history-wiring/history-api). 단 재시작 시 진행 중 세션 자체는 종료되므로 과거 기록 보기이지 세션 이어하기는 아님. 프롬프트 인젝션은 다층 방어로 완화(완전 차단은 비목표). - ⚖️ 엔진 역할 분담(2026-06-09 확정): Claude = 신중 엔진 — 자체 PreToolUse 훅으로 모든 도구(파일 편집 포함) 전에 [허용]/[거절]을 받습니다(
smoke:claude). Codex = 빠른 작업 엔진 — 파일 쓰기·명령을 매번 묻지 않고 바로 실행합니다(승인 카드가 codex엔 안 뜸). 이유(실측): Windows 글로벌[windows] sandbox="elevated"로 실제 OS 샌드박스가 없고, codex는 막아도 "승인이 필요 없는 방식"으로 우회해서(app-server/exec/sandbox 어떤 설정으로도) 신뢰성 있는 codex 승인 게이트가 불가능합니다. (codex 훅 강제는 사용자 codex 설정을 건드려야 하고 oh-my-codex가 조용히 무력화 가능 = 거짓 안심이라 채택 안 함.) → codex는 가볍고 빠른 작업에, 위험·되돌리기 힘든 작업(중요 파일 수정·삭제·시스템 명령)은/new claude로(매번 묻고 파국 명령 차단). 봇이 세션 시작 시 이 차이를 안내합니다. 상세 =app/VERIFICATION_STATUS.md.
1인 사적 사용 도구입니다. 검증 현황 정본 =
app/VERIFICATION_STATUS.md.
라이선스
Apache License 2.0 — © 2026 SoDam AI Studio. 전체 본문은 LICENSE 참고.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found