OpenWorker: 채팅이 아닌 완성된 결과물을 만드는 오픈소스 AI 동료 (feat. Andrew Ng)

OpenWorker 소개

OpenWorker는 대화나 초안 작성에서 멈추지 않고 완성된 업무 결과물을 직접 만들어 내는 것을 목표로 하는 오픈소스 AI 동료(AI coworker)입니다. 대부분의 챗봇은 답변이나 초안까지만 내놓고 마무리는 사람의 몫으로 남기지만, OpenWorker는 다듬어진 문서, 수치가 담긴 Slack 답장, 갱신된 캘린더, 정리된 받은 편지함처럼 바로 쓸 수 있는 결과물을 돌려주는 것을 지향합니다. 개발팀은 이 도구를 "AI that gets your everyday tasks done" 이라는 한 줄로 소개합니다.

OpenWorker는 사용자의 데스크톱에서 실행되며 특정 모델에 종속되지 않습니다. OpenAI, Anthropic, Google의 API 키를 직접 넣어 쓰거나, 오픈 가중치(open-weight) 모델 제공자를 연결하거나, Ollama로 완전히 로컬에서 돌릴 수 있습니다. 데이터는 사용자가 직접 고른 모델과 통합(integration)을 거칠 때만 컴퓨터 밖으로 나갑니다. 이 프로젝트는 AISuite를 만든 Andrew Ng 의 저장소에서 공개되었으며, 현재 앱이 스스로 업데이트되는 오픈 베타(open beta) 단계입니다.

실제 업무는 대개 여러 도구에 흩어져 있습니다. OpenWorker는 GitHub, Slack, Jira, Notion 같은 25개 이상의 통합과 함께 터미널, 로컬 파일을 다루고, MCP(Model Context Protocol)로 연결되는 도구도 붙일 수 있습니다. 또한 메시지 전송이나 셸 명령처럼 되돌리기 어려운 작업은 실행 전에 사용자에게 승인을 요청하고, 아침 브리핑이나 주간 보고서 같은 반복 작업은 예약 실행으로 자동화합니다.

OpenWorker의 동작 방식

OpenWorker에게 일을 맡기는 흐름은 결과물 중심으로 짜여 있습니다. 먼저 사용자가 원하는 결과를 말합니다. 개발팀이 든 예시로는 "고객 브리프 준비", "엉킨 캘린더 정리", "보고서 초안 작성", "Jira와 GitHub 전반에서 릴리스 상태 확인" 같은 요청이 있습니다.

그러면 OpenWorker는 이 요청을 단계로 쪼갠 뒤 데스크톱과 파일, 연결된 앱을 오가며 작업을 진행합니다. 메시지를 보내거나 캘린더를 바꾸거나 명령을 실행하는 것처럼 결과가 되돌리기 어려운 지점에서는 먼저 사용자에게 확인을 받아 승인하거나 방향을 바꿀 수 있게 합니다. 마지막에 사용자가 받는 것은 할 일 목록이 아니라 완성된 산출물입니다.

내부 구조는 크게 세 층으로 나뉩니다. 사용자가 마주하는 데스크톱 앱은 네이티브 셸과 GUI로 되어 있고, 그 아래에서 파이썬으로 작성된 로컬 에이전트 서버가 엔진과 도구, 커넥터(connector)를 담당합니다. 이 모든 것은 사용자의 파일과 터미널, 25개 이상의 커넥터, 그리고 사용자가 고른 모델을 사용자 자신의 키로, 사용자의 컴퓨터 위에서 실행합니다.

┌────────────────────────────────────────────────┐
│              OpenWorker desktop app            │  native shell + GUI
├────────────────────────────────────────────────┤
│           local agent server (Python)          │  engine · tools · connectors - built on aisuite
├───────────────┬────────────────┬───────────────┤
│  your files   │   your tools   │  your model   │  everything runs with your keys,
│  & terminal   │ 25+ connectors │  any provider │  on your machine
└───────────────┴────────────────┴───────────────┘

파이썬 백엔드는 저장소의 coworker/ 디렉토리에, 데스크톱 앱의 React UI와 Tauri 셸은 surfaces/gui/ 에 들어 있습니다. 음성 입력을 위한 Rust 기반의 STT(Speech-to-Text) 사이드카는 stt/ 에 별도로 자리합니다.

OpenWorker가 할 수 있는 일

OpenWorker가 내세우는 기능은 모두 "완성된 결과물"이라는 목표로 이어집니다.

  • 실제 결과물 생산: 문서, 스프레드시트, 보고서, 웹 페이지를 곧바로 열고 공유할 수 있는 파일로 만들어 냅니다.
  • Slack에서 작업 지시: 채널에서 @OpenWorker 를 멘션하면 사용자의 데스크톱에서 세션이 열려 작업이 진행되고, 결과는 스레드 답글로 돌아옵니다.
  • 일상 도구 사용: GitHub, Slack, Jira, Notion, Linear, HubSpot, Outlook, monday.com, Gmail, Google Calendar 등 25개 이상의 통합에 더해 터미널과 로컬 파일을 다룹니다. MCP로 접근 가능한 도구는 도구별 제어와 함께 추가로 연결할 수 있습니다.
  • 트리거 기반 자동 실행: 아침 브리핑, 주간 보고서, 특정 채널 상시 감시처럼 반복되는 일을 자동화합니다. Slack 멘션, 수신 이메일, 정해진 일정 같은 트리거를 한 번 설정해 두면 백그라운드에서 작업이 시작되고, 중요한 동작 전에는 확인을 거칩니다. 실행 결과는 전체 기록(transcript)과 함께 앱 안에 남습니다.
  • 실행 전 승인: 쓰기, 전송, 셸 명령은 승인을 거치도록 게이트가 걸려 있습니다. 사람이 지켜보지 않는 무인 실행에서는 스스로 행동하는 대신 승인 요청을 받은 편지함에 쌓아 둡니다.

승인의 강도는 설정으로 조절할 수 있습니다. 저장소의 docs/config.example.toml 예시를 보면 실행 모드가 계획(plan), 대화형(interactive), 자동(auto), 사용자 지정(custom) 네 가지로 나뉩니다. lsgit status, pytest 처럼 자주 쓰는 명령은 승인 없이 자동으로 허용되도록 목록으로 지정할 수 있고, 사용자 지정 모드에서는 파일 편집 같은 특정 도구만 자동 승인하고 나머지는 계속 확인을 받도록 세밀하게 조정할 수 있습니다.

또한 OpenWorker는 자주 필요한 업무 유형에 맞춰 도구와 작업 방식, 확인 절차가 미리 설정된 사용 사례를 함께 제공한다고 소개합니다. 일정과 받은 편지함을 관리하는 비서 역할, 지표와 주간 보고서를 챙기는 마케팅 역할, 알림을 분류하고 런북(runbook)을 뒤져 인시던트 노트를 작성하는 온콜(on-call) 역할처럼 특정 역할에 맞춘 구성을 골라 곧바로 일을 맡길 수 있습니다.

OpenWorker의 모델 선택

모델 접근 권한은 전적으로 사용자에게 있습니다. 제공자를 고르고 키를 붙여넣으면 언제든 바꿀 수 있습니다. 기본으로 지원하는 제공자는 OpenAI, Anthropic, Google Gemini, Inkling(Thinking Machines), GLM(Z.ai), DeepSeek, Kimi(Moonshot), Qwen, MiniMax, Mistral, Grok(xAI) 이며, Together와 Fireworks를 통한 오픈 가중치 모델, 그리고 Ollama를 통한 완전 로컬 모델도 쓸 수 있습니다.

큐레이션된 모델 목록에는 도구 호출(tool-calling) 작업에 대해 검증된 모델이 표시됩니다. 목록에 없는 임의의 모델 문자열을 넣어도 동작은 하지만, 이 경우는 사용자 본인의 책임이라고 개발팀은 안내합니다. OpenWorker 앱 자체는 무료이며, 모델 사용료는 사용자가 고른 제공자에게 직접 지불하는 구조입니다.

OpenWorker의 프라이버시

OpenWorker는 로컬 우선(local-first)을 지향합니다. 에이전트 루프, 대화 내용, 커넥터 토큰, 모델 키가 모두 사용자의 컴퓨터에 있는 앱의 로컬 시크릿 저장소에 보관됩니다. 클라우드를 거치는 유일한 부분은 커넥터의 OAuth 인증 절차를 중개하는 작은 서비스뿐입니다. 로그인 없이도 앱을 쓸 수 있으며, 이때는 직접 만든 자격 증명이나 API 키로 커넥터를 연결합니다. 무료 OpenWorker 계정을 만들면 Slack처럼 공급자 제약이 있는 도구를 원클릭으로 연결할 수 있는데, 이 경우에도 토큰은 사용자의 컴퓨터로 바로 전달되며 클라우드에 저장되지 않습니다.

OpenWorker 설치 및 실행

완성된 데스크톱 앱은 macOS와 Windows용으로 내려받을 수 있습니다. macOS는 12 이상(Apple Silicon)에서 동작하며 서명 및 공증(notarize)을 거쳤고 자동 업데이트를 지원합니다. Windows는 10/11(x64)을 지원하지만 아직 코드 서명이 되어 있지 않아 SmartScreen 경고가 뜰 수 있으며, 서명 작업이 진행 중이라고 개발팀은 밝히고 있습니다. 앱을 연 뒤 모델 키를 추가하거나 Ollama를 가리키도록 설정하면 바로 실제 작업을 요청할 수 있습니다.

소스에서 직접 실행하려면 Python 3.10 이상, Node 20 이상, 그리고 데스크톱 셸을 빌드하려면 rustup 을 통한 Rust 툴체인이 필요합니다.

git clone https://github.com/andrewyng/openworker
cd openworker

# 1. 최초 1회 부트스트랩 - .venv 에 파이썬 가상환경을 만듭니다
#    (Windows에서는 Git Bash 또는 WSL에서 실행)
bash packaging/setup_dev_env.sh

# 2. 로컬 에이전트 서버 시작
.venv/bin/openworker-server --cwd ~/some/project --port 8765
#    (Windows: .venv\Scripts\openworker-server.exe)

# 3. 두 번째 터미널에서 UI 시작
cd surfaces/gui
npm install
npm run dev        # Vite 개발 포트에서 브라우저 UI 실행

브라우저 UI 대신 전체 데스크톱 앱을 실행하려면 3단계를 surfaces/gui/ 에서 npm run tauri dev 로 바꾸면 됩니다. 그러면 Tauri 셸이 창을 띄우고 서버를 직접 관리합니다. 부트스트랩 스크립트는 저장소의 packaging/setup_dev_env.sh 에서 확인할 수 있습니다.

OpenWorker의 기반이 된 aisuite

OpenWorker의 엔진은 aisuite 위에 올라가 있습니다. aisuite는 여러 LLM 제공자에 걸쳐 통일된 chat-completions API를 제공하는 가벼운 파이썬 라이브러리로, 도구와 툴킷, MCP를 지원하는 에이전트 계층을 함께 담고 있습니다. 개발팀은 직접 에이전트 하네스(harness)를 만들고 싶다면 aisuite에서 시작하라고 권하며, OpenWorker 저장소 자체를 aisuite가 무엇을 감당할 수 있는지 보여주는 실동작 레퍼런스로 소개합니다. OpenWorker는 원래 aisuite 저장소 안에서 개발되다가 지금의 저장소로 옮겨 왔습니다.

OpenWorker의 라이선스

OpenWorker는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: OpenWorker 공식 홈페이지

:github: OpenWorker 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: