Octop: 서버 한 대로 가족과 소규모 팀이 각자 전용 AI 에이전트를 쓰는 셀프 호스팅 비서 (feat. Tencent)

핵심 요약

  • Octop은 텐센트 클라우드(Tencent Cloud)가 공개한 셀프 호스팅 AI 비서로, 프로세스 하나가 웹 대시보드, CLI, 메신저 채널, 예약 작업을 함께 처리하고 상태를 기본으로 ~/.octop/ 아래에 둡니다.
  • 한 번 설치하면 가족이나 소규모 팀의 각 사용자가 로그인 계정별로 자기 에이전트, 작업공간, 모델 설정, 채널을 따로 갖습니다. 팀이 게이트웨이 하나를 함께 쓰는 OpenClaw와 다른 점입니다.
  • 메신저 채널은 Feishu, DingTalk, QQ, WeChat, WeCom, Telegram, Discord 중심이고 Slack은 기본 채널에 없으며, 대시보드 언어는 영어와 중국어만 제공합니다.
  • 도구 실행 전 승인 기능은 기본으로 꺼져 있고, 셸 명령 검사는 경고 로그만 남기는 모드로 시작합니다. 여러 사람이 쓰는 환경이라면 관리자가 공식 문서의 Security 설정부터 바꿔야 합니다.

Octop 소개

OpenClaw나 Hermes Agent처럼 사용자의 컴퓨터에서 실행되며 메신저로 대화하는 오픈소스 AI 비서는 한 사람의 비서로 출발했습니다. 가족이나 작은 팀이 같은 서버를 함께 쓰려고 하면 누구의 대화 기록과 메모리가 어디에 쌓이는지, 한 사람이 연결한 API 키와 도구 권한을 다른 사람도 쓰게 되는지가 바로 문제가 됩니다. 이번에 소개하는 Octop은 텐센트 클라우드의 GitHub 조직(TencentCloud)이 MIT 라이선스로 공개한 셀프 호스팅 AI 비서 플랫폼으로, 이 문제를 사용자 계정 단위로 풀도록 설계된 프로젝트입니다.

Octop은 처음부터 다중 사용자를 전제로 만들어졌습니다. 관리자 한 명이 서버를 설치하면 나머지 가족이나 동료는 각자 계정으로 로그인하고, 사용자마다 여러 개의 에이전트를 만들어 쓸 수 있습니다. 에이전트는 각자 작업공간 디렉터리, LLM 제공자 설정, 스킬, 대화 기록, 메신저 채널, 예약 작업(cron)을 따로 가집니다. 주간 보고서는 분석가 에이전트에게, 자료 조사는 연구원 에이전트에게 맡기는 식으로 역할마다 에이전트를 바꿔 쓰는 것이 Octop이 제시하는 사용 방식입니다.

Octop은 Python 3.12 이상과 FastAPI로 작성되었습니다. 에이전트 런타임과 메신저 연동, 메모리, 브라우저 자동화는 같은 조직이 따로 공개한 Octop Harness, Octop Gateway, Octop Memory, Octop Browser 라이브러리를 조합해 만듭니다. 이 중 Octop Harness는 LangChain 팀의 deepagents를 감싼 런타임으로, 에이전트 생성은 deepagents.create_deep_agent 에 맡기고 그 위에 모델 라우팅, 메모리, 저장소 백엔드, ACP를 더합니다. 이 밖에 전문가(Expert) 템플릿 라이브러리와 문서 검색(RAG)용 지식 베이스, OAuth와 MCP 기반 커넥터를 갖추고 있습니다. 브라우저와 터미널 자동화, 원격 데스크톱, IDE 연동용 Agent Client Protocol(ACP) (:pytorch::kr: Agent Client Protocol(ACP): AI 코드 에이전트와 코드 에디터(IDE)를 연결하는 새로운 표준) 지원도 함께 제공합니다. 2026년 9월 14일 1.0.0이 나왔고, 현재 최신 릴리스는 1.0.2b6 베타입니다.

Octop vs. OpenClaw, Hermes Agent

Octop 저장소의 소개 자료는 자신을 OpenClaw, Hermes Agent와 직접 비교하고, 설정 마법사에는 기존 OpenClaw 설정을 가져오는 단계가 있습니다. 다만 그 비교표는 2026년 8월 17일 기준이라, 이후 OpenClaw가 공식 문서화한 팀 배포 방식이 반영되어 있지 않습니다. 아래 표는 세 프로젝트의 현재 README와 공식 문서에서 확인한 내용만으로 다시 정리한 것입니다:

항목 Octop OpenClaw Hermes Agent
구현 언어 Python TypeScript Python
여러 사람이 쓰는 방식 로그인 계정마다 에이전트, 작업공간, 채널, 예약 작업을 따로 가짐 게이트웨이 하나를 팀이 공유하고 세션을 함께 열어 조종함. 게이트웨이 하나가 하나의 신뢰 경계 README에 다중 사용자 운영 설명 없음
다른 도구에서 옮겨오기 설정 마법사에서 OpenClaw의 모델, 채널, 작업공간 파일, 스킬을 가져옴 해당 없음 hermes claw migrate로 OpenClaw 설정, 메모리, 스킬을 가져옴
주요 메신저 채널 Feishu, DingTalk, QQ, WeChat, WeCom, Telegram, Discord Discord, iMessage, Slack, Teams, Telegram, WhatsApp 외 20여 개 Telegram, Discord, Slack, WhatsApp, Signal
도구 실행 위치 기본은 호스트 디스크, 관리자가 Docker 샌드박스나 OpenSandbox를 작업공간 백엔드로 지정 가능 메인 세션의 도구는 샌드박스를 설정하지 않으면 호스트에서 실행 로컬, Docker, SSH, Singularity, Modal, Daytona, Vercel Sandbox 7가지 터미널 백엔드
상용 서비스 텐센트 클라우드 Lighthouse와 CVM용 공식 이미지 제공 유료 요금제, 호스팅 서비스 없음 (OpenClaw Foundation 운영) Nous Research의 Nous Portal을 모델 제공자로 지원

세 프로젝트가 가장 크게 다른 점은 여러 사람이 쓸 때의 기본 단위입니다. OpenClaw는 팀 설정 문서에서 게이트웨이 하나를 서로 신뢰하는 팀의 공용 공간으로 정의하고, 세션 소유권과 역할은 그 안에서의 협업 장치일 뿐 서로 믿지 못하는 사용자 사이의 격리가 아니라고 밝힙니다. 서로 신뢰하지 않는 사용자에게는 게이트웨이를 테넌트마다 따로 띄우라고 안내합니다. Octop은 반대로 JWT(JSON Web Token) 인증으로 사용자를 구분하고, 에이전트 소유권을 데이터베이스 행 단위로 검사해 관리자가 아닌 사용자는 다른 사용자의 에이전트를 기본으로 볼 수 없게 합니다. 공유는 에이전트나 지식 베이스에 Shared 를 켜거나 전문가 템플릿을 마켓에 게시하는 식으로 명시적으로 할 때 일어납니다.

Octop의 이런 분리는 아직 권한 수준의 분리입니다. 저장소의 소개 자료는 다음 과제로 루트 파일시스템(rootfs) 단위의 사용자 데이터 격리와 에이전트의 완전한 샌드박스 실행을 꼽고 있습니다. 프로세스와 호스트는 모든 사용자가 공유하므로, 셸 실행 권한을 가진 에이전트를 여러 사람에게 열어 줄 때는 아래 보안 설정 절을 함께 보시기 바랍니다.

메모리를 옮기는 방향도 열려 있습니다. Octop 대시보드는 에이전트의 메모리를 .hmpkg 파일로 내보내 OpenClaw나 Hermes 같은 다른 호스트에서 가져다 쓸 수 있다고 안내합니다. 비슷한 범주의 프로젝트로는 AgentScope의 CoPaw, HKUDS의 nanobot, 팀 단위 자체 호스팅을 내세운 Rakazo도 있습니다.

Octop을 사용하면 좋을 사용자

Octop은 집이나 사무실에 서버 한 대를 두고 가족 또는 서로 아는 동료 몇 명이 각자 자기 에이전트를 쓰려는 경우에 맞습니다. 사용자 추가, 역할 템플릿, 초대, 에이전트별 작업공간이 대시보드에 이미 있고 1.0.2b6부터는 LDAP 디렉터리 로그인도 지원해서 OpenClaw를 사람 수만큼 따로 실행하는 것보다 관리할 대상이 적습니다. 중국 메신저(Feishu, DingTalk, WeCom, WeChat)나 중국 LLM 제공자를 함께 쓰는 팀이라면 기본 프리셋으로 대부분 해결됩니다.

업무 메신저가 Slack이나 카카오톡인 국내 팀에게는 Octop이 아직 적절한 선택지가 아닙니다. 기본 채널에 둘 다 없고, 대시보드와 서버 메시지도 영어와 중국어 두 언어만 제공합니다. 서로 신뢰하지 않는 사용자에게 셸 실행 권한이 있는 에이전트를 열어 주는 환경에도 Octop은 아직 이릅니다. 사용자 사이의 분리가 런타임 격리가 아니라 권한 검사로 이루어지고, 아래에서 설명하듯 도구 승인도 기본으로 꺼져 있기 때문입니다.

Octop의 단일 프로세스 구조

Octop은 메시지 큐나 별도 워커 없이 프로세스 하나로 동작합니다. 웹 대시보드, CLI, 메신저 채널, 예약 작업으로 들어온 요청은 모두 같은 처리 경로를 거쳐 에이전트 런타임으로 전달되고, 제어용 데이터베이스는 기본이 SQLite(WAL 모드)이며 PostgreSQL로 바꿀 수 있습니다. 재시작하면 런타임 상태 전체를 데이터베이스에서 다시 만들기 때문에, 설치본을 옮기거나 백업할 때는 ~/.octop/ 디렉터리를 복사하거나 octop backup 을 쓰면 됩니다. 저장소의 아키텍처 문서가 보여 주는 구성은 다음과 같습니다:

OctopServer
 ├─ DatabasePool            SQLite (WAL) or PostgreSQL
 ├─ SharedServices       DI root — every repo + config
 ├─ ExpertCatalog        scans agents/experts/library/ at boot
 ├─ UserManager
 │   └─ HarnessAgentManager (per user)
 │       └─ AgentRuntime (per agent)
 │           ├─ HarnessAgent      Agent runtime (octop-harness)
 │           ├─ HarnessProcessor  IM / UI / cron entry point
 │           ├─ ChannelManager    IM connections (octop-gateway)
 │           └─ CronManager       APScheduler
 └─ FastAPI app (uvicorn)

에이전트의 파일은 제어용 데이터베이스와 분리된 작업공간 백엔드에 저장됩니다. 기본은 ~/.octop/agents/<agent_id>/ 아래의 로컬 디스크이고, 관리자가 Docker 샌드박스, OpenSandbox, PostgreSQL, 텐센트 클라우드 COS나 S3를 백엔드로 추가하면 에이전트를 만들 때 고를 수 있습니다. 컨테이너 백엔드는 전문가마다, 사용자마다, 또는 하나의 고정 컨테이너를 공유하는 범위 중에서 고릅니다.

대신 이 구조 때문에 생기는 제약도 있습니다. 다중 에이전트 협업용 메시지함(inbox)은 프로세스 메모리에 있어서, 재시작하면 진행 중이던 위임 작업은 사라집니다. 저장소의 AgentTeams 설계 문서가 이를 첫 버전의 비목표로 명시하고 있습니다.

Octop의 전문가 템플릿과 AgentTeams

Octop은 에이전트를 처음부터 만드는 대신 전문가 템플릿에서 시작하도록 안내합니다. 저장소에는 운영 엔지니어, 뉴스 트렌드, 육아 도우미, 오피스 자동화, 텐센트 클라우드 API 등 19개의 전문가 템플릿이 들어 있습니다. 여기에 agency-agents 저장소에서 가져온 하위 에이전트(sub-agent) 정의 217개(영어판 기준)도 함께 포함되어 있습니다. 템플릿으로 만든 에이전트는 독립된 사본이라 시스템 프롬프트와 스킬을 고쳐도 원본에 영향이 없고, 잘 다듬은 에이전트는 같은 설치본의 전문가 마켓에 다시 게시할 수 있습니다.

에이전트의 말투는 MBTI 16가지 유형을 본뜬 페르소나로 정합니다. 페르소나를 고르면 작업공간의 SOUL.md 가 그 유형에 맞게 생성되고, 사용자가 쓴 시스템 프롬프트는 그 뒤에 덧붙습니다. 아래는 저장소 README에 실린 대시보드 화면입니다. 왼쪽 메뉴에서 Experts, Channels, Terminal AI+, Browser AI+, Remote Desktop, ACP, MBTI Personality 같은 기능 진입점을 볼 수 있습니다(화면의 버전 표기는 촬영 당시의 v0.9.8입니다):

AgentTeams(베타)는 여러 전문가를 한 대화방에 묶는 기능입니다. 사용자의 메시지는 항상 조율자(host)가 먼저 받고, 조율자는 직접 일하지 않고 작업 설명을 다시 써서 구성원에게 비동기로 나눠 맡긴 뒤 결과를 요약합니다. 조율자에게는 파일시스템, 브라우저, 검색, MCP 도구가 붙지 않고 구성원 목록 조회, 작업 위임, 메모리, 현재 시각 조회 도구만 주어집니다. 팀을 만들려면 조율자 외에 구성원이 2명 이상 있어야 하고, 구성원은 각자 자기 작업공간에 결과를 씁니다. 첫 버전에서는 팀을 다른 사용자와 공유할 수 없고, 팀 안에 다른 팀을 넣을 수도 없습니다.

Octop의 외부 연결: 메신저, 모델, ACP

Octop의 메신저 연동은 Octop Gateway가 맡습니다. Feishu, DingTalk, QQ, WeChat, WeCom, Telegram, Discord 외에 텐센트 Yuanbao, 화웨이 Xiaoyi, 사물인터넷(IoT) 기기용 MQTT 채널이 있습니다. 에이전트 하나에 채널을 연결하면 그 채널로 들어온 메시지가 해당 에이전트로 전달되고, 예약 작업의 결과도 같은 채널로 보낼 수 있습니다. 외부 서비스용 기본 커넥터도 텐센트 문서, 텐센트 미팅, 바이두 지도, 메이퇀 같은 중국 서비스가 대부분입니다. 그 밖에는 Notion, IMAP/SMTP 메일(Gmail 등), Dify 정도가 있고, 나머지는 사용자 정의 MCP 서버로 연결합니다.

LLM 제공자는 Octop Harness에 40개 프리셋이 들어 있습니다. OpenAI, Anthropic, Google Gemini, Groq, OpenRouter, DeepSeek와 로컬 모델용 Ollama가 포함되어 있습니다. 나머지 상당수는 텐센트 클라우드, 알리바바 클라우드 DashScope, Kimi, MiniMax, Zhipu, Volcano Engine 같은 중국 제공자입니다. OpenAI나 Anthropic API 형식을 따르는 엔드포인트는 사용자 정의 제공자로 추가할 수 있으므로 vLLM 서버도 연결할 수 있습니다. 대화 기록과 자격 증명은 ~/.octop/ 에 남지만, 프롬프트는 설정한 LLM 제공자의 API로 전송됩니다. 대화 내용이 서버 밖으로 나가지 않아야 한다면 Ollama 같은 로컬 모델을 써야 합니다.

ACP는 두 방향으로 지원합니다. octop acp --agent main 을 실행하면 Octop 에이전트가 표준 입출력 기반 ACP 서버로 동작해 Zed 같은 편집기에서 바로 부를 수 있습니다. 반대로 acp_runner 도구를 켜면 Octop 에이전트가 같은 머신에 설치된 OpenCode, Claude Code, Codex, CodeBuddy, Kimi Code, Cursor CLI, Pi 같은 코딩 에이전트에 작업을 위임합니다. 이때 외부 코딩 에이전트는 Octop의 모델 설정이 아니라 자기 모델과 인증 정보를 쓰므로, 각 CLI에서 먼저 로그인해 두어야 합니다.

Octop의 기본 보안 설정

Octop의 README는 위험한 도구와 셸 명령은 가드레일 규칙에 따라 명시적인 승인을 받아야 실행된다고 소개합니다. 그러나 이는 관리자가 설정을 켠 뒤의 동작입니다. Octop의 공식 문서는 bash, execute, write_file, edit_file 이 승인 대상 목록에 기본으로 들어 있지만 그 목록을 적용하는 Enable manual tool approval 스위치는 기본으로 꺼져 있다고 밝힙니다. 아래는 같은 문서에 실린 Security 화면의 도구 승인 탭으로, 중국어 UI에서 촬영된 것이지만 스위치가 꺼진 상태와 네 개의 도구 이름을 볼 수 있습니다:

셸 명령 인자를 정규식 규칙으로 검사하는 Command protection도 기본값은 warn 입니다. 기본 정책 코드에서 도구 승인은 False, 명령 검사는 "mode": "warn" 으로 설정되며, 대시보드는 이 모드를 Log warnings only 로 표시합니다. 이 모드에서는 위험한 명령이 규칙에 걸려도 로그만 남고 명령은 그대로 실행됩니다. 관리자가 Management → Security에서 Block (HIGH/CRITICAL) 이나 Require approval (includes MEDIUM) 로 바꾸면, 앞의 것은 해당 명령을 막고 뒤의 것은 대시보드나 메신저에서 /approve, /reject 로 승인할 때까지 실행을 멈춥니다.

민감 정보 마스킹도 범위를 확인하고 쓰는 것이 좋습니다. Octop Harness의 개인 식별 정보(PII, Personally Identifiable Information) 탐지기는 입력, 출력, 도구 결과에서 OpenAI, Anthropic, AWS, Google, Hugging Face API 키와 api_key=... 형태의 비밀값을 찾아 가운데를 별표로 가립니다. 개인 정보는 중국 본토 휴대전화 번호와 18자리 중국 주민등록번호만 탐지하므로, 한국 주민등록번호나 한국 휴대전화 번호는 마스킹되지 않습니다.

Octop 설치와 사용

Octop은 macOS, Linux, Windows에서 설치 스크립트, PyPI, Docker, 데스크톱 앱 중 하나로 설치합니다. macOS와 Linux의 설치 스크립트는 uv로 Python 3.12를 ~/.octop/venv 에 따로 준비하므로 시스템 Python을 건드리지 않습니다:

curl -fsSL https://finnie-1258344699.cos.ap-guangzhou.myqcloud.com/octop/install.sh | bash

이 설치 스크립트는 텐센트 클라우드 객체 저장소(COS) 광저우 리전에서 내려받습니다. 또한 --mirror 를 지정하지 않으면 텐센트 클라우드와 알리바바 클라우드의 PyPI 미러 중 응답이 빠른 쪽을 고릅니다. 고른 미러는 pypi.org와 함께 추가 인덱스로 쓰입니다(scripts/install.sh). 의존성을 공식 PyPI에서만 받고 싶다면 직접 관리하는 Python 3.12 환경에서 pip install octop 으로 설치하면 됩니다:

pip install octop
# 로컬 ONNX 임베딩 모델을 쓰는 경우
pip install "octop[local-embedding]"

설치 후 octop init 을 실행하면 대화형 마법사가 SQLite 데이터베이스, JWT 비밀키, 첫 관리자 계정을 ~/.octop/ 에 만듭니다. 이어서 서버를 실행하고 브라우저에서 http://127.0.0.1:8088 을 엽니다:

octop init

# 대시보드와 API를 포그라운드로 실행
octop run

# 다른 호스트와 포트로 실행
octop run --host 0.0.0.0 --port 8088

# systemd, launchd, Windows 서비스로 등록
octop service start

운영 환경에는 Docker 사용이 권장됩니다. 비밀번호를 지정하지 않으면 첫 실행 때 무작위 관리자 비밀번호가 만들어져 컨테이너 안의 /data/.octop/credential.txt 에 기록됩니다. 직접 지정하는 비밀번호는 영문자와 숫자를 섞어 8자 이상이어야 합니다. Compose 파일은 미리 빌드된 이미지를 받아 오지 않고, 저장소를 클론한 루트에서 소스로 octop:latest 이미지를 빌드합니다:

git clone https://github.com/TencentCloud/Octop.git && cd Octop
docker compose -f docker/docker-compose.yml up -d

Docker 이미지에는 Playwright Chromium이 들어 있지 않으므로 브라우저 자동화를 쓰려면 browser 추가 구성 요소를 따로 설치해야 합니다. GitHub 릴리스의 데스크톱 앱은 macOS용 빌드가 Apple 공증(notarization)을 받지 않아 첫 실행 때 손상된 앱이라는 경고가 뜰 수 있으며, 공식 홈페이지가 우회 방법을 안내합니다. 이미 Octop을 쓰다가 판을 올릴 때는 octop backup 으로 백업한 뒤 octop update 를 실행합니다. 업데이트는 프로그램만 바꾸고 데이터베이스, 작업공간, config.json 은 유지합니다.

Octop의 라이선스

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

:house: Octop 공식 홈페이지

:books: Octop 공식 문서

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

더 읽어보기




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

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

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