기업 개발자용 원격 개발 콘솔사내 서버 설치데스크톱 · 휴대폰

개발자들의 Claude Code 를,
회사 서버로 어디서든.

SSemBridge 는 기업 개발자를 위한 Claude Code 원격 개발 콘솔입니다. 회사가 자기 서버에 중계 서버를 두면, 개발자들은 각자의 Mac 에서 tmux 로 띄운 Claude Code 세션을 그 서버를 거쳐 데스크톱 브라우저와 휴대폰에서 보고 제어합니다 — 프롬프트 보내기 · 권한 승인 · 질문 답하기 · 중단까지.

사내 서버 설치 · 각 Mac 은 macOS + tmux · Claude Code 2.1.x 에서 확인 · 데스크톱 브라우저와 휴대폰(홈 화면 앱)

SSemBridge연결됨 응답 필요 2작업 1사용량관리설정새 세션
세션4개 · 호스트 2대
api-server작업 중
Mac Studio · Claude 1 · sonnet-5-5
결제 금액을 최소 단위로 바꾸는 중
✻ Refactoring… 1:12
todo-app승인 대기
MacBook · Claude 1 · opus-5-5
이제 시험을 돌리겠습니다.
docs-site입력 대기
MacBook · Claude 2 · haiku-4-5
설치 안내 세 쪽을 고쳤습니다.
ml-notebook작업 중
Mac Studio · Ollama · qwen3-coder
데이터 정리 스크립트를 확인하는 중
서브에이전트 2개 실행 중 · 전체 3
api-server 작업 중
Mac Studio · Claude 1 · sonnet-5-5 · ~/work/api-server · main
■ 중단파일sonnet-5-5 · high권한: 자동⋯
결제 금액을 통화별 최소 단위로 바꾸고, 같은 주문이 두 번 결제되지 않게 해줘
금액 변환 함수를 만들고 결제 호출에 멱등 키를 넣겠습니다.
수정src/payments/charge.ts +2 −1
31 export async function charge(order: Order) {32- const res = await gateway.pay(order.total);32+ const amount = toMinorUnits(order.total, order.currency);33+ const res = await gateway.pay(amount, { key: order.id });34 if (!res.ok) throw new PaymentError(res.code);
Bashnpm test -- payments
PASS src/payments/charge.test.ts ✓ 원화는 소수점 없이 보낸다 (3 ms) ✓ 같은 주문을 두 번 결제하지 않는다 (5 ms)+14줄 더 보기
시험 18개가 모두 통과했습니다. 환불 쪽도 같은 방식으로 바꾸겠습니다.
✻ Refactoring… 1:12 · ↓ 2.8k 토큰중단 (Esc)
모델·effort/compact/clear/cost/status
api-server에 보낼 메시지
⌘↵ 보내기 · 파일은 끌어다 놓거나 ⌘V 로 붙여넣기

승인 대기 1

todo-app · 권한 요청 · Bash
npm test -- login
허용거부

에이전트 호스트

MacBook세션 2 · 12ms
Mac Studio세션 2 · 18ms

Hook 이벤트

14:02PermissionRequest · todo-app
14:01PostToolUse · api-server
13:58Stop · docs-site
13:57SubagentStop · ml-notebook
todo-app승인 대기
MacBook · opus-5-5 · xhigh · 권한: 기본
로그인 화면에 비밀번호 보기 단추를 넣고 시험까지 돌려줘
단추를 추가했습니다. 이제 시험을 돌리겠습니다.
수정src/Login.tsx +9 −1
41 <input type={show ? "text" : "password"} />42 + <button onClick={toggle}>보기</button>
권한 요청 · Bash
npm test -- login
허용이 명령 항상 허용거부
Brewing… 42초 · ↓ 1.2k 토큰
todo-app 에 보낼 메시지
세션알림작업사용량관리

데스크톱세션 목록 · 대화 · 승인을 세 칸으로 넓게

휴대폰같은 세션을 한 손으로 — 승인 · 답하기 · 중단

회사 서버 위에서 돌아갑니다

SSemBridge 는 회사가 직접 운영하는 서버에 설치합니다. 개발자들은 각자의 Mac 에서 하던 대로 Claude Code 를 쓰고, 그 세션을 회사 서버를 거쳐 자리 밖에서도 이어 갑니다.

중계는 회사 서버에서

웹 콘솔 · 중계 · 화면용 대화 사본 · 대화 백업을 모두 회사 서버 한 곳에 둡니다. 원격 제어를 위해 바깥 클라우드 서비스를 거치지 않습니다.

계정 비밀값은 각 Mac 에만

Claude 로그인 정보와 Ollama 키는 개발자의 Mac 에만 둡니다. 웹에서 로그인할 때도 서버는 과정을 전달만 하고 비밀값을 저장하지 않습니다.

Mac 은 나가는 연결만

각 Mac 의 Agent 가 회사 서버로 먼저 연결합니다. Mac 에 열어 둘 포트가 없고, Agent 연결은 사내망(VPN) 안에서만 받습니다.

원격 명령은 모두 감사 기록

누가 · 어느 세션에 · 무엇을 · 결과까지 남깁니다. 웹은 아이디 · 비밀번호에 OTP 까지 거쳐야 열립니다.

관리자 화면

호스트(개발자 Mac) 등록 · 해제, Mac 별 계정 로그인 상태, 쓸 모델과 기본값, 사용량, 서버 설정과 보존 기간을 관리자가 웹에서 다룹니다.

대화 백업 · 되살리기

각 Mac 의 대화 기록을 10분마다 회사 서버에 백업합니다. 관리자가 백업된 대화를 찾아 되살리면 새 세션의 「이어하기」로 엽니다.

Claude Code 가 모델과 주고받는 통신(Anthropic API 등)은 콘솔과 상관없이 원래대로 각 Mac 에서 직접 이루어집니다.

한눈에 보기

터미널 앞에 없어도 Claude 가 묻는 것에 답하고, 얼마나 썼는지 보고, 다른 Mac 으로 일을 넘깁니다. 아래 화면은 지어낸 예시 데이터로 그린 그림입니다.

Claude 가 묻습니다
배포 범위
어디까지 진행할까요?
개발 서버까지 (Recommended)운영은 리허설 뒤에
운영까지오늘 밤 점검 시간에
직접 입력 — 선택지 대신 이 글로 답합니다
답 보내기답하지 않기
질문에 바로 답하기Claude 의 질문을 카드로 띄웁니다. 하나·여럿 고르기, 직접 입력까지 터미널과 같은 모양의 답으로 넘깁니다.
추정 비용
$412
▲ 18%
캐시 적중
96%
▼ 0.8%p
5시간23%
주간71%
⚠ 지금 속도면 금요일 14:00 에 주간 한도에 닿습니다
사용량과 한도 예측계정 한도(5시간·주간)와 지금 속도의 예측, API 단가로 환산한 비용 추정을 모델·프로젝트·시간대별로 봅니다.
api-server → Mac Studio옮기는 중
대화 내보내기2.1 MB
작업 폴더 묶기38 MB
서버로 올리기62%
받는 Mac 에 풀기
이어 열기
다른 Mac 으로 옮기기대화를(원하면 작업 폴더까지) 다른 Mac 으로 넘겨 이어 씁니다. 웹을 닫아도 계속되고, 다시 들어오면 진행이 보입니다.
MacBook · 셸EscTab^CPgUp창 닫기
dev@macbook:~/work/api-server$ git status -s M src/payments/charge.ts ?? src/payments/refund.ts dev@macbook:~/work/api-server$ npm test -- payments Tests: 18 passed, 18 total dev@macbook:~/work/api-server$
웹 터미널개발자 Mac 의 셸과 claude 세션의 실제 tmux 화면을 새 창으로 엽니다. 그 Mac 에서 직접 켠 때만 열리고, 열 때 OTP 를 한 번 더 확인합니다.
프롬프트api-server · 24개 · 최근 것부터
#24 · 14:02↳
환불 쪽도 같은 방식으로 바꾸고 시험까지 돌려줘
#23 · 13:41↳
결제 금액을 통화별 최소 단위로 바꾸고, 같은 주문이 두 번 결제되지 않게 해줘
#22 · 11:20 · 이미지 1개↳
이 화면처럼 오류 메시지를 정리해줘
프롬프트 모아 보기AI 가 한 일 사이에 묻힌 내 지시만 모아 봅니다. ↳ 를 누르면 대화의 그 자리로 가서 거기서부터 다시 읽습니다.
SSemBridge
한국어English日本語简体中文FrançaisEspañolBahasa IndonesiaTiếng Việtភាសាខ្មែរالعربية
10개 언어웹 콘솔을 팀이 쓰는 말로 씁니다. 고른 언어는 브라우저가 기억하고 숫자·날짜도 그 언어로 보입니다. 아랍어는 오른쪽에서 왼쪽으로.

데스크톱에서는 넓게, 휴대폰에서는 한 손으로

같은 콘솔을 어느 화면에서나 씁니다. 데스크톱 브라우저에서는 세션 목록 · 대화 · 알림을 세 칸으로 나란히 두고 파일 편집기와 사용량 대시보드를 넓게 보며, 휴대폰에서는 아래 탭으로 세션 · 알림 · 작업 · 사용량 · 관리를 오갑니다. 아래 화면도 지어낸 예시 데이터로 그린 그림입니다.

세 칸으로 넓게, 필요하면 접어서

왼쪽 세션 목록 · 가운데 대화 · 오른쪽 승인과 호스트를 한 화면에 둡니다. 양쪽 칸을 접으면 세션은 요약 줄(상태 · 경과 시간 · 승인 수)로, 알림은 아이콘 줄로 남고 대화가 넓어집니다.

  • 고친 파일은 줄 번호 diff, 긴 출력은 접어서
  • 접은 상태는 이 브라우저가 기억
  • ⌘↵ 로 보내기, 파일은 끌어다 놓기

옆으로 밀어서 보세요

파일 탐색기와 편집기

세션 폴더를 트리로 보고 두 파일을 나란히 열어 고칩니다. 잠금을 풀고 고친 뒤 ⌘S 로 저장하고, Claude 가 고친 파일은 바로 다시 읽어 옵니다.

  • 마크다운 미리보기 · 이미지 보기
  • 이름 바꾸기 · 복제 · 휴지통으로 지우기 (영구 삭제 없음)
  • .git · .claude 안은 고칠 수 없음

옆으로 밀어서 보세요

사용량 대시보드

계정 한도와 지금 속도의 예측, 추정 비용 · 요청 · 출력 · 캐시 적중을 이전 기간과 비교합니다. 날마다 모델별 막대와 요일 × 시간 열지도로 언제 · 어디에 썼는지 봅니다.

  • 기간: 오늘 · 7일 · 30일 · 90일 · 이번 달
  • 급증한 날은 ▲ 로 표시
  • 비용은 API 단가로 환산한 추정치

옆으로 밀어서 보세요

무엇을 할 수 있나요

터미널에서 하던 일을 웹에서도 그대로 합니다. 원본은 언제나 각 Mac 의 대화 파일이고, 서버는 화면을 위한 사본입니다.

실시간 대화 보기

대화·도구 호출·결과·서브에이전트를 터미널과 같은 순서로 실시간으로 봅니다. 고친 파일은 줄 번호 diff 로, 긴 출력은 접어서 보이고 마크다운·mermaid 도표·이미지도 그립니다. 세션마다 실제로 쓰는 계정(Claude·Ollama)도 보입니다.

권한 승인 · 질문 답하기

Claude 가 명령 실행 권한을 묻거나 질문을 하면 웹·휴대폰에 카드가 뜹니다. 터미널에도 같은 창이 함께 떠 있고, 먼저 답한 쪽이 적용됩니다. 터미널에만 뜨는 확인 창(예: 끝낼 때 백그라운드 작업 확인)도 웹에서 고릅니다.

프롬프트 · 파일 · 중단

긴 글도 그대로 보내고, 파일은 입력창에 끌어다 놓거나 붙여 넣으면 세션 폴더에 올라가 @경로로 들어갑니다. 진행 줄을 보다가 Esc 처럼 중단합니다.

새 세션 · 이어하기

허용한 폴더 안에서 tmux 로 새 세션을 열고, 끝난 대화를 이어 엽니다. 터미널에서만 쓰던 폴더의 대화도 이어하기 목록에 보이고(claude --continue 처럼), 다른 계정으로 이어 열면 대화 파일을 그 계정으로 복사해 씁니다.

모델 · effort · 권한 모드

세션 중에 모델과 effort 를 바꾸고(기본은 이 세션만), 권한 모드 다섯 가지(기본·편집 자동 수락·플랜·자동·모두 허용)를 오갑니다.

세션 옮기기

끝난 세션을 다른 Mac 으로 옮겨 이어 씁니다. 작업 폴더도 함께 옮길 수 있고(다시 만들 수 있는 폴더는 빼고), 진행 막대로 단계마다 봅니다.

파일 탐색기 · 편집기

세션 폴더를 둘러보고 미리 보고 고칩니다. Claude 가 고친 파일은 바로 반영되고, 지우기는 휴지통으로 옮기기뿐입니다. 새 창으로 띄우면 대화를 보면서 파일을 봅니다.

웹 터미널

개발자 Mac 의 셸과 claude 세션의 실제 tmux 화면을 웹에서 엽니다. 스크롤·끌어 고르기 복사·⌘K 지우기를 터미널처럼 쓰고, 기억할 줄 수는 설정에서 정합니다. 그 Mac 에서 직접 켠 때만 열립니다.

프롬프트 모아 보기

그 세션에서 사람이 입력한 프롬프트만 최근 것부터 모아 봅니다. 누르면 대화의 그 자리로 이동해 거기서부터 검토하고, 지난 기록(서버 보존 기간 안)까지 찾아 갑니다.

작업 — 백그라운드 에이전트

세션을 가로질러 지금 도는 백그라운드 에이전트와 워크플로우를 한 화면에서 보고, 최근 24시간 동안 끝난 것도 확인합니다.

사용량 대시보드

계정 한도와 지금 속도의 예측, 비용 추정, 날마다 모델별 막대, 많이 쓴 세션, 요일×시간 열지도를 봅니다. 비용은 API 단가 환산 추정입니다.

호스트 · 계정 원격 관리

「호스트 추가」가 만든 설치 명령 한 줄로 개발자 Mac 을 붙입니다. Mac 마다 Claude · Ollama 계정 로그인 상태를 보고 웹에서 로그인하며, Agent 는 「지금 업데이트」로 원격으로 바꿉니다.

대화 백업 · 되살리기

대화 기록과 Claude 가 고치기 전 파일 사본을 회사 서버에 10분마다 올립니다. 보관함 크기 · 디스크 여유 · 호스트별 백업 상태를 보고, 골라서 되살립니다.

감사 기록 · 보존 정리 · 지표

원격 명령은 누가·어느 세션에·무엇을·결과까지 모두 기록합니다. 오래된 기록은 정한 기간에 따라 정리하고, 토큰 같은 민감한 값은 가려서 보입니다. 호스트별 연결 지연 같은 지표도 봅니다.

10개 언어

웹 콘솔을 한국어·English·日本語·简体中文·Français·Español·Bahasa Indonesia·Tiếng Việt·ភាសាខ្មែរ·العربية 로 씁니다. 상단 🌐 단추로 고르고, 아랍어는 오른쪽에서 왼쪽으로 보입니다.

도입하면 이렇게 씁니다

회사 서버 하나에 개발자들의 Mac 을 붙여 씁니다. 개발자는 하던 대로 tmux 안에서 claude 를 쓰면 됩니다.

회사 서버에 설치합니다

중계 서버(웹 애플리케이션 서버 · 데이터베이스)를 사내 서버에 둡니다. 웹 콘솔은 회사의 HTTPS 프록시 뒤에, Agent 연결은 사내망 안에만 엽니다.

개발자 Mac 을 붙입니다

관리자가 「호스트 추가」로 만든 설치 명령 한 줄(1회용 등록 코드, 15분)을 Mac 의 터미널에 붙여 넣으면 Agent 가 설치되고 연결됩니다.

어디서든 이어 갑니다

tmux 에서 띄운 claude 세션이 웹에 나타납니다. 데스크톱이나 휴대폰에서 진행을 보며 승인 · 답하기 · 다음 지시 · 중단을 합니다.

어떻게 동작하나요

각 Mac 의 Agent 가 claude 의 대화 파일과 hook 을 읽어 회사 서버로 보내고, 웹이 보낸 명령을 tmux 로 입력합니다. Agent 가 서버로 먼저 연결하므로 Mac 쪽에 열어 둘 포트가 없습니다.

SSemBridge 구성도 왼쪽 각 Mac 에서 claude 가 대화 파일을 쓰고 hook 을 Agent 로 보내며, Agent 는 대화 파일을 읽어 가운데 회사 서버로 WebSocket 을 엽니다. 회사 서버는 웹 애플리케이션 서버와 데이터베이스로 이루어지고, 오른쪽 브라우저와 휴대폰이 HTTPS 와 WebSocket 으로 서버에 붙습니다. 각 Mac (여러 대) claude tmux 창에서 실행하는 Claude Code 대화 파일 JSONL · 원본 SSemBridge Agent Go 단일 실행 파일 · launchd 기록 읽기 hook 회사 서버 Web Application Server SSemiYa F/W 중계 · 로그인 · 감사 Database 화면용 사본 · 설정 웹 브라우저 데스크톱 휴대폰 홈 화면 앱 WebSocket · Agent 가 먼저 연결 HTTPS·WS 사내 서버에 설치 로그인 + OTP 뒤에만 열림
옆으로 밀어서 보세요
  • 원본은 각 Mac 의 대화 파일입니다. 서버는 화면을 위한 사본이라, 서버를 다시 띄워도 Agent 가 이어서 다시 보내 채웁니다.
  • Agent → 서버 한 방향 연결 — 서버가 Mac 으로 들어가지 않습니다. 명령도 같은 연결로 받아 tmux 로 입력합니다.
  • hook 은 127.0.0.1 로만 받습니다. Agent 가 죽어 있어도 claude 를 느리게 하지 않습니다(1초 안에 포기).
  • 웹은 회사의 HTTPS 프록시 뒤에서 로그인 + OTP 를 거쳐야 열리고, 원격 명령은 모두 감사 기록에 남습니다.
Agent

Go 단일 실행 파일

Mac 마다 launchd 로 상주. 대화 파일 tail · hook 수신 · tmux 제어 · 원격 업데이트.

서버

SSemiYa F/W
Web Application Server

WebSocket 중계, REST, 감사 기록, 대화 백업 보관. 사내 서버에 설치.

웹

바닐라 JS 모듈

빌드 도구 없이, 바깥 자원 없이. 데스크톱 · 휴대폰, 밝은 · 어두운 판.

DB

Database

화면용 대화 사본, 계정·모델 카탈로그, 사용량, 감사 기록.

보안 원칙

개발자의 Mac 에서 원격으로 명령을 실행하는 도구라서, 지켜야 할 선을 먼저 정해 두고 만들었습니다.

  • 원격 제어를 위한 중계 · 저장은 모두 회사 서버에서 — 바깥 클라우드 서비스를 거치지 않습니다.
  • Mac 은 회사 서버로 나가는 연결만 엽니다 — 밖에서 들어올 포트가 없습니다.
  • 계정 비밀값(Claude 토큰·Ollama 키)은 각 Mac 에만 둡니다. 서버는 저장하지 않습니다.
  • 호스트 등록 코드·토큰은 해시로만 저장하고, 등록 코드는 한 번만·15분 안에 씁니다.
  • Agent 용 연결은 외부 프록시로 열지 않고 사내망(VPN)에서만 받습니다.
  • 웹은 아이디 · 비밀번호에 OTP 가 꼭 필요하고, 관리 작업(호스트 · 계정 · 설정 · 백업 되살리기)은 관리자만 합니다.
  • 새 세션은 허용한 폴더 안에서만 열고, 파일 경로는 Agent 가 마지막으로 검사합니다(세션 폴더 밖·.git·.claude 거부).
  • 원격 명령은 전부 감사 기록에 남깁니다(누가·어느 세션·무엇을·결과).
  • 웹 터미널은 그 Mac 에서 직접 켜야만 열리고(웹에서 켤 수 없음), 관리자가 열 때마다 OTP 를 한 번 더 확인합니다. 열기·닫기·바이트 수를 감사 기록에 남기되 키 입력 내용은 남기지 않고, 30분 동안 입력이 없으면 닫습니다.
  • 화면과 기록에 토큰 모양의 값이 보이면 가려서 보입니다.
  • 웹은 바깥 스크립트·글꼴을 부르지 않고(CSP), 업로드는 크기·경로를 두 번 검사합니다.

사용 조건

SSemBridge 가 동작하는 조건입니다.

  • 각 Mac 에 macOS 와 tmux 가 필요합니다. tmux 밖(일반 터미널)에서 띄운 세션은 볼 수만 있고, 웹의 「tmux 로 이어 열기」로 열어야 제어됩니다.
  • 회사 서버에는 웹 애플리케이션 서버(WAS)와 데이터베이스가 필요합니다. 웹 콘솔은 회사의 HTTPS 프록시 뒤에 두고, Agent 연결은 사내망(VPN) 안에서만 엽니다.
  • Claude Code 와 Ollama 계정은 각 Mac 에서 쓰던 것을 그대로 씁니다. 계정과 요금은 지금처럼 각 서비스와의 계약을 따릅니다.
  • Claude Code 의 기록 형식 · hook · 화면은 버전마다 바뀝니다. 확인한 버전(현재 2.1.288~2.1.291)에 맞춰 Agent 를 갱신하고, 갱신은 웹의 「지금 업데이트」로 각 Mac 에 보냅니다.
  • 사용량의 비용은 API 단가로 환산한 추정치입니다. 구독 요금이나 실제 청구액이 아닙니다.

SSemBridge 도입을 검토 중이신가요?

개발자 수와 쓰고 계신 Mac · 서버 환경을 알려 주시면 맞는 구성을 안내해 드립니다. 가격과 도입 조건도 문의로 안내합니다.

도입 문의

halo@levelupsoft.com

사내 서버 설치를 기본으로 합니다 · Levelupsoft Inc.