<div align="center">
<img src="https://raw.githubusercontent.com/iishyfishyy/operator-oss/HEAD/docs/images/operator-mark.svg" alt="Operator logo" width="96" />
Operator
모든 브라우저에서 Claude Code 및 Codex를 병렬로 실행합니다.
Operator는 코딩 에이전트를 위한 웹 기반 컨트롤룸입니다. 모든 작업은 격리된 git worktree 내에서 영구적인 에이전트 세션을 가지므로, 터미널을 전환하거나 브랜치를 혼합할 필요 없이 프로젝트 간에 작업을 위임할 수 있습니다.
Operator를 사용자의 컴퓨터에서 실행하거나, 서버에 자체 호스팅(self-host)할 수 있으며, 또는 호스팅된 버전을 사용할 수도 있습니다. 배포된 작업 공간은 컴퓨터, 태블릿 또는 휴대폰에서 이용 가능합니다.
호스팅 버전 사용하기 · 로컬 실행하기 · 자체 호스팅 · 문서 · Discord 참여
Discord
GitHub stars
GitHub release
License: Apache-2.0
Operator workspace showing projects and parallel agent tasks
</div>
모든 에이전트를 위한 하나의 웹 작업 공간
- 작업을 병렬로 실행합니다. 각 작업은 자체 worktree, 브랜치, 기록(transcript), Claude Code 또는 Codex 세션을 가집니다.
- 필요한 위치를 파악합니다. 프로젝트 전반에 걸친 인박스 하나가 다른 에이전트들이 계속 작동하는 동안 사용자의 입력을 기다리는 모든 세션을 표시합니다.
- 컨텍스트를 유지합니다. 프로젝트 지식을 한 번 저장하고, 재로드(reloads)를 거쳐도 기록을 유지하며, 작업의 계보(task lineage)를 잃지 않으면서 새로운 컨텍스트 창을 시작하려면
/clear를 사용합니다.
- 배포 전 검토합니다. 대화 옆에서 diff를 검토하고, 브랜치를 동기화(sync), 충돌을 해결(resolve conflicts), 병합(merge)하거나 풀 리퀘스트(pull request)를 열 수 있습니다. 충돌 배너는 실시간 해결 과정을 추적하며, 충돌이 없으면 사라지고, 병합 승인(accepting the merge)은 명시적으로 유지됩니다.
작업을 파이프라인으로 연결합니다
작업을 하나 또는 여러 이전 작업에 의존하도록 설정할 수 있습니다. 작업은 병렬 경로로 분기될 수 있으며, 최종 통합을 위해 다시 합류할 수 있습니다. 차단 해제 시 시작(Start when unblocked) 기능을 활성화하면 Operator는 각 작업의 마지막 의존성이 완료되는 즉시 작업을 실행합니다.
작업 생성 → 의존성 연결 → 에이전트가 격리된 브랜치에서 작업 수행 → 검토 및 병합
제안 그룹은 목록 보기와 보드 보기 모두에서 **모두 수락(Accept all)**과 체인 시작(Start chain) 기능을 제공하며, 번호가 매겨진 의존성 미리보기를 지원합니다. 체인 시작은 준비된 루트를 실행하고, 차단 요소(blockers)가 완료되면 시작하도록 막힌 작업들을 실행합니다.
Operator board showing branching tasks and automatic starts
원하는 방식으로 실행하기
| 최적 용도 | 접근 방법 |
|---|
| 로컬 | 최소한의 설정으로 단일 장치에서 Operator 사용 | 브라우저 내 localhost |
| ... | | |
| Operator는 세 가지 모드 모두에서 웹 애플리케이션입니다. 로컬에서 실행하면 앱과 데이터가 사용자의 장치에 유지됩니다. 배포하면 모바일 기기를 포함하여 어디서든 동일한 제어실에 접근할 수 있습니다. | | |
<p align="center">
<img src="https://raw.githubusercontent.com/iishyfishyy/operator-oss/HEAD/docs/images/mobile.png" alt="모바일 브라우저에서 Operator 작업 파이프라인" width="390" />
</p>
빠른 시작
Node 20.9 이상, macOS 또는 Linux가 필요하며, 지원되는 에이전트 CLI를 최소 하나 보유해야 합니다.
git clone https://github.com/iishyfishyy/operator-oss.git
cd operator-oss
npm install
...
http://localhost:3000을 열면, 첫 실행 마법사가 Claude Code 또는 Codex를 연결하고 작은 실제 작업을 통해 안내합니다. 두 에이전트 모두 구독 로그인(subscription login)을 지원하므로 API 키가 필수는 아닙니다. API 키는 여전히 명시적인 옵션으로 남아 있습니다.
Docker, 인증(authentication), TLS 및 장치 외부에서의 보안 접근을 위해서는 셀프 호스팅 가이드를 따르십시오. 인증되지 않은 Operator Origin을 네트워크에 노출하지 마십시오.
채팅 이상의 기능
Operator는 또한 목록 보기(list view)와 칸반 보기(kanban view), 에이전트가 제안하는 후속 작업, 프로젝트별 및 작업별 터미널, 실시간 로그가 있는 관리 서비스, 프로젝트 요약, 투명한 토큰 및 사용량 통찰력 등을 포함합니다.
재사용 가능한 커스텀 슬래시 명령어를 사용하여 앱 전체 또는 프로젝트 프롬프트를 저장하고, 컴포저(composer)나 명령 팔레트(command palette)에서 삽입하며, 전송하기 전에 작업 세부 정보와 인수를 확장할 수 있습니다.
데스크톱 또는 모바일에서 긴 초안을 위해 'Send' 옆의 화살표를 사용하여 프롬프트 영역을 확장하세요. 다시 클릭하거나 Esc 키를 누르면 접히며, 작성한 초안은 그대로 유지됩니다.
모든 기능 탐색하기 · 에이전트 지원 비교 · 아키텍처 읽기
사용자 및 기여자들과 만나고, 자신이 만들고 있는 것을 보여주고, Operator에 대해 논의하려면 Discord에 참여하세요. 기능 요청은 GitHub Discussions를 사용하고, 재현 가능한 버그는 GitHub Issues를 사용하며, 풀 리퀘스트(pull request)는 CONTRIBUTING.md를 참고하세요.
문서 (Documentation)
설치 및 개발 · 셀프 호스팅 · 기능 · 에이전트 · 변경 로그 · 릴리스 · 보안 · 커뮤니티
라이선스 (License)
Apache-2.0
프롬프트 검사하기 (Inspecting prompts)
ORCH_DEBUG_PROMPTS=1 npm start (또는 ORCH_DEBUG_PROMPTS=1 npm run dev)로 시작한 다음, 작업의 DIFF와 CONTEXT 옆에 있는 PROMPTS 탭을 여세요. 한 턴(turn)을 실행하고 캡처를 새로 고침하여 Operator가 Claude Code 또는 Codex에게 전달한 정확한 텍스트를 검사할 수 있습니다. 이 인스펙터는 컨텍스트 섹션, 제출물 내 반복된 줄, 실행 옵션, 원시 입력(raw inputs), JSON 다운로드, 그리고 동일 에이전트 및 작업에 대한 이전 제출물과의 비교 내용을 보여줍니다. 또한 작업의 /clear 요약과 프로젝트 레벨의 리캡/컨텍스트 새로고침 작업을 별도로 표시합니다.
이것들은 완전한 모델 요청이 아닌 SDK 입력 스냅샷입니다: 에이전트 관리 시스템 명령어(agent-managed system instructions), 복원된 히스토리, 도구 결과 및 압축(compaction)은 이 캡처 경계 밖에 있습니다. Claude의 컨텍스트 추가(context append)와 사용자 프롬프트는 별도의 입력이며; Codex의 신규 세션 입력은 컨텍스트와 사용자 텍스트를 결합합니다. 재개된 Codex 제출물에는 새로운 사용자 텍스트만 포함됩니다. null로 모델을 오버라이드하는 것은 런타임이 기본값을 선택한다는 의미입니다.
디버깅(Debugging)은 기본적으로 비활성화되어 있으며, 서버 재구축 없이 서버 시작 시 적용됩니다. 캡처에는 해당 텍스트 내의 비밀 정보(secrets)를 포함하여 원문 프롬프트 내용이 담깁니다; 환경 자격 증명(environment credentials) 및 MCP 브릿지 토큰은 기록된 옵션에서 제외됩니다. 이들은 ORCH_DB_DIR/orchestrator.db에 저장되며, 전역적으로 최신 200개 캡처 / 32 MiB로 제한됩니다. 8 MiB를 초과하는 캡처는 서버 로그 알림과 함께 건너뜁니다. 캡처는 7일 후에 만료되며 다음 캡처 또는 검사기(inspector) 읽기를 통해 삭제됩니다; 작업/프로젝트 삭제 시 관련 캡처도 삭제됩니다. 이 플래그를 비활성화하면 패널과 엔드포인트가 숨겨지고 기록이 중지되지만, 보존된 데이터를 지우지는 않습니다. 다운로드된 사본은 Operator에 의해 관리되지 않습니다. 이전 턴(turns)은 소급하여 복구할 수 없습니다. 캡처는 제공업체(provider)의 수신 확인이 아닌 시도된 SDK 제출물을 기록합니다.
모델 선택
작업의 모델 선택기에는 버전별 Claude 및 Codex 모델과 정확한 라우팅 ID가 표시되며, 여기에는 Opus 5.5 (claude-opus-5-5), GPT-6 Sol (gpt-6-sol), 그리고 GPT-6 Luna (gpt-6-luna)가 포함됩니다. 버전을 선택하면 재개된 세션을 포함하여 후속 턴에 해당 ID가 고정됩니다. 대신 **제공업체 기본값(Provider default)**은 CLI/계정 구성을 상속받으며; 세션 배지에는 마지막으로 해결된 모델이 표시됩니다. 기존 별칭(alias) 선택은 동작을 유지하며, 버전을 선택할 때까지 사용자 지정/레거시로 표시됩니다.
두 에이전트 모두 사용자 지정 모델 ID를 허용합니다. Bedrock의 Claude의 경우, 선택지는 정확하게 구성된 추론 프로필 ID 또는 ARN을 사용합니다. 가용성은 여전히 귀하의 제공업체 및 계정에 따라 달라집니다.
Opus 5.5는 Claude Code 2.1.280 이상을 요구합니다. 로컬 설치의 경우 claude update를 실행하거나 (CLAUDE_CLI_PATH로 설정된 실행 파일 세트를 업데이트) 해야 합니다. Docker 빌드에는 호환 가능한 버전이 포함되어 있습니다. Claude 모델 구성을 참조하십시오.
모델 선택은 연결된 에이전트로부터 검색됩니다: Claude의 SDK는 해결된(resolved) 모델 ID를 제공하고 Codex는 실시간 model/list 카탈로그를 제공합니다. Operator는 앱이 열려 있는 동안 매시간 카탈로그를 새로고침하며, 피커에서 **모델 새로고침(Refresh models)**을 클릭하면 즉시 확인됩니다. 검색은 메타데이터만 읽으며 프롬프트를 보내거나 작업 세션을 생성하지 않습니다.
마지막으로 성공한 카탈로그는 ORCH_DB_DIR 아래에 캐시되며 재시작에도 살아남습니다. 검색이 실패하면, 피커는 저장된 카탈로그(또는 첫 사용 시 번들링된 목록)를 재시도 메시지와 함께 표시합니다. 계정 변경은 캐시를 지우고, 구성 변경은 이를 무효화합니다. Bedrock은 AWS 구성에서 가져온 정확한 ID를 계속 사용합니다. 새로고침은 기존 작업에 고정된(pinned) 모델을 절대 변경하지 않습니다.
별칭(aliases)만 반환하는 구형 Claude CLI는 정확한 버전을 제공할 수 없습니다. Operator는 CLI가 업데이트될 때까지 대체 목록을 유지합니다. 모델 가용성은 계정 및 제공업체에 따라 다릅니다. 카탈로그는 인스턴스의 사용자 구성을 설명하며, 프로젝트 또는 조직 제한 사항이 여전히 선택을 거부할 수 있습니다. 알 수 없는 모델은 보수적인 컨텍스트 창(context-window) 추정치를 사용합니다. 가격 책정은 별도로 유지되므로, 자동 검색이 새로운 가격을 제공하지는 않습니다.
Dependabot은 에이전트 패키지를 매주 확인하고 Codex CLI/SDK 업그레이드를 하나의 PR에 그룹화합니다. 의존성 PR은 단위 테스트(unit tests), TypeScript 검사, 그리고 프로덕션 빌드를 실행합니다. 업데이트에는 검토가 필요하며, 로컬 Claude 설치 및 모든 CODEX_CLI_PATH 오버라이드는 여전히 자체 CLI 업데이트가 필요합니다.
Codex 권한 모드 (Codex permission modes)
**설정(Settings) → 기본 실행(Run defaults)**에서 Codex를 선택하고 기본 권한 모드를 지정합니다. Auto-run은 기본값으로 유지되며, 권한은 workspace-write입니다. Plan은 네트워크 접근이 비활성화된 상태로 read-only를 유지합니다. **전체 액세스(Full access)**는 danger-full-access와 approvalPolicy: never를 요청하는 명시적인 옵트인(opt-in)이며, 이 모드에서는 명령어 승인 없이 계정 권한으로 작업 워크트리 외부 파일에 접근하고 실행할 수 있습니다. 신뢰하는 작업에만 활성화하십시오.
작업의 톱니바퀴 메뉴에서도 동일한 권한 선택지가 제공됩니다. **기본값(Default)**은 저장된 에이전트별 설정을 상속받으며, 명시적인 작업 선택이 우선합니다. 환경 설정은 재시작을 거쳐도 유지되며, 재개된 세션을 포함하여 다음 턴에 적용됩니다. 실행 중인 턴은 시작했던 모드를 유지합니다. 내부 유틸리티 작업은 계속해서 읽기 전용(read-only)으로 남아 있습니다.
전체 액세스는 CODEX_APPROVAL_POLICY 또는 Auto-run의 기억된 승인 협상(remembered approval negotiation)이 다른 정책을 선택하더라도 명시적으로 never를 요청합니다. Codex는 여전히 관리되는 요구 사항을 강제하며, Operator는 이를 변경하거나 우회 플래그로 재시도하지 않습니다. 거부 사항은 스크립트(transcript)에 나타나며 Auto-run/Plan을 선택하거나 관리자에게 연락하라는 안내가 제공됩니다. Auto-run과 Plan은 기존의 승인 협상을 유지합니다. Codex 샌드박스 문서를 참조하십시오.
macOS에서는 전체 액세스가 Chrome 실행을 방해하는 Codex 샌드박스 제한(예: MachPortRendezvousServer permission denied)을 제거할 수 있습니다. 하지만 외부 프로세스 샌드박스, 관리 정책 또는 macOS 개인 정보 보호 및 애플리케이션 권한은 제거할 수 없으며, 브라우저 자동화는 사용자의 기기에서 검증되어야 합니다.