CopilotKit/OpenTag
OpenTag: The Channels SDK starter application, a self-hosted AI on-call triage bot for Slack and Microsoft Teams, built with AG-UI and LangGraph. Fork it and ship your own.
OpenTag – Slack 및 Teams용 자체 호스팅 AI 지식 작업 보조 도구
무엇인가요 – OpenTag는 즉시 실행 가능한 오픈소스 '지식 작업 에이전트'입니다. LangGraph를 기반으로 한 대규모 언어 모델 기반 Python 에이전트를 CopilotKit의 Channels SDK를 통해 Slack 및 Microsoft Teams에 연결합니다. 리포지토리는 완전한 Node + Python 스택, Slack/Teams 내부에 렌더링되는 몇 가지 UI 구성 요소, 그리고 Railway 또는 AWS용 배포 스크립트를 포함합니다.
핵심 구성 요소
| 구성 요소 | 역할 |
|---|---|
agent/ (Python) |
OpenAI와 통신하고 웹 조사 수행, 선택적 도구(예: GitHub, Linear, Notion 등) 호출하는 LangGraph 딥 에이전트 |
app/ (Node/TS) |
CopilotKit 런타임. 관리형 채널을 호스팅하고 AG-UI 프로토콜을 Slack/Teams로 변환하며 차트, 테이블, 승인 카드를 렌더링 |
| Channels SDK | Slack/Teams 어댑터를 추상화하고 전달, 상태, 재연결을 처리하는 라이브러리 |
| 배포 구성 | Railway (.railway/railway.ts) 및 AWS ECS-Fargate 설정, Docker 이미지 opentag-agent 및 opentag-runtime |
작동 방식
- 채널 생성 – CopilotKit CLI(
channels setup또는channels add)를 실행하여 CopilotKit Intelligence에 관리형 채널을 등록합니다. 이 과정에서 CopilotKit의 호스팅된 요청 URL을 가리키는 Slack 앱 매니페스트가 생성됩니다. - 런타임 시작 –
pnpm dev를 실행하면 Node 런타임과 Python LangGraph 에이전트가 시작됩니다. 런타임은 CopilotKit Intelligence로의 아웃바운드 WebSocket을 열며, Slack 메시지는 이 연결을 통해 전달됩니다. - 사용자 상호작용 – Slack/Teams에서 사용자가
@OpenTag를 언급하거나 슬래시 명령어를 사용합니다. 런타임은 AG-UI 프로토콜을 통해 메시지를 Python 에이전트로 전달합니다. - 에이전트 응답 – 에이전트는 다음 중 하나를 수행할 수 있습니다:
- 일반 텍스트 응답 생성
- 업로드된 CSV에서 네이티브 Slack 차트 생성
- Linear 이슈 또는 Notion 페이지 생성(승인 카드 포함)
- 병렬 웹 조사 수행 후 인용 출처가 포함된 테이블 반환
- 렌더링 – Node 측에서 결과를 Slack 블록 또는 Teams 카드로 포맷하여 차트, 테이블, 또는 상호작용 가능한 승인 버튼을 표시합니다.
주요 기능
- 네이티브 Slack UI – 차트, 테이블, 상호작용 가능한 카드가 스레드 내부에 직접 표시됩니다.
- 작성 승인 – 외부 도구(Linera, Notion)를 수정하는 작업은 사용자 승인 버튼을 기다린 후에 진행됩니다.
- 도구 통합 – GitHub, PostHog, Linear, Notion, Composio 툴킷과의 선택적 연결 가능.
- 자체 호스팅 – Python 에이전트와 Node 런타임은 자체적으로 실행합니다. CopilotKit 서버에는 코드가 존재하지 않으며, 관리형 채널 구성을 제외하고는 아무것도 없습니다.
- 배포 가능 – 1클릭으로 Railway에 배포하거나 AWS Fargate 레시피 사용 가능. Docker 이미지는 GitHub Container Registry에 게시됨.
시작하기
- Node 22+, pnpm, Python 3.12, 그리고
uv를 설치합니다. pnpm install을 실행합니다.- CopilotKit CLI로 관리형 채널을 생성하거나, 자체 Channels SDK 러너를 사용합니다.
.env.example을.env로 복사하고 OpenAI 키, CopilotKit API 키, Slack 자격 증명을 입력합니다.pnpm dev로 두 서비스를 시작하고, Slack에서/invite @OpenTag로 봇을 초대합니다.
사용자 정의 – 대부분의 측면은 단일 파일 또는 디렉터리로 구성됩니다:
- 성격 및 시스템 프롬프트 →
agent/prompts/system.py - 에이전트 로직 →
agent/agent.py - 도구 →
agent/tools.py - UI 구성 요소 →
app/components/ - 채널 트리거 →
app/channel.tsx - 배포 토폴로지 →
.railway/railway.ts
대상 사용자 – 데이터와 자격 증명을 자체적으로 관리하고 싶은 팀이 일상적인 지식 작업(스프레드시트 요약, 리서치 정보 수집, 티켓 생성 등)을 자동화하기 위해 온프레미스 AI 보조 도구를 원하는 경우에 적합합니다.
관련
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트